Given the following C code and unoptimized assembly code, your task is to generate highly optimized x86-64 assembly code.
C Code:

```c
#include <stdio.h>
#include <string.h>

const char* input_table[32][2]={
	{"A","00000"},
	{"B","00001"},
	{"C","00010"},
	{"D","00011"},
	{"E","00100"},
	{"F","00101"},
	{"G","00110"},
	{"H","00111"},
	{"I","01000"},
	{"J","01001"},
	{"K","01010"},
	{"L","01011"},
	{"M","01100"},
	{"N","01101"},
	{"O","01110"},
	{"P","01111"},
	{"Q","10000"},
	{"R","10001"},
	{"S","10010"},
	{"T","10011"},
	{"U","10100"},
	{"V","10101"},
	{"W","10110"},
	{"X","10111"},
	{"Y","11000"},
	{"Z","11001"},
	{" ","11010"},
	{".","11011"},
	{",","11100"},
	{"-","11101"},
	{"'","11110"},
	{"?","11111"}
};

const char* output_table[32][2]={
	{"101"     ," "},
	{"000000"  ,"'"},
	{"000011"  ,","},
	{"10010001","-"},
	{"010001"  ,"."},
	{"000001"  ,"?"},
	{"100101"  ,"A"},
	{"10011010","B"},
	{"0101"    ,"C"},
	{"0001"    ,"D"},
	{"110"     ,"E"},
	{"01001"   ,"F"},
	{"10011011","G"},
	{"010000"  ,"H"},
	{"0111"    ,"I"},
	{"10011000","J"},
	{"0110"    ,"K"},
	{"00100"   ,"L"},
	{"10011001","M"},
	{"10011110","N"},
	{"00101"   ,"O"},
	{"111"     ,"P"},
	{"10011111","Q"},
	{"1000"    ,"R"},
	{"00110"   ,"S"},
	{"00111"   ,"T"},
	{"10011100","U"},
	{"10011101","V"},
	{"000010"  ,"W"},
	{"10010010","X"},
	{"10010011","Y"},
	{"10010000","Z"}
};

void insert_to_buffer(char* buffer,char mozi) {
	int i;
	for(i=0;i<32;i++) {
		if(mozi==input_table[i][0][0]) {
			strcat(buffer,input_table[i][1]);
			break;
		}
	}
}

int output_buffer(char* buffer) {
	int i,j;
	int len1,len2;
	for(i=0;i<32;i++) {
		if(strncmp(buffer,output_table[i][0],strlen(output_table[i][0]))==0) {
			len1=strlen(output_table[i][0]);
			len2=strlen(buffer);
			putchar(output_table[i][1][0]);
			for(j=len1;j<len2;j++)buffer[j-len1]=buffer[j];
			buffer[len2-len1]=0;
			return 1;
		}
	}
	return 0;
}

int main(void) {
	int c;
	char buffer[100]={0};
	while((c=getchar())!=EOF) {
		if(c=='\n') {
			while(output_buffer(buffer));
			buffer[0]=0;
			putchar('\n');
		} else {
			insert_to_buffer(buffer,c);
			while(output_buffer(buffer));
		}
	}
	return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	input_table
	.section	.rodata
.LC0:
	.string	"A"
.LC1:
	.string	"00000"
.LC2:
	.string	"B"
.LC3:
	.string	"00001"
.LC4:
	.string	"C"
.LC5:
	.string	"00010"
.LC6:
	.string	"D"
.LC7:
	.string	"00011"
.LC8:
	.string	"E"
.LC9:
	.string	"00100"
.LC10:
	.string	"F"
.LC11:
	.string	"00101"
.LC12:
	.string	"G"
.LC13:
	.string	"00110"
.LC14:
	.string	"H"
.LC15:
	.string	"00111"
.LC16:
	.string	"I"
.LC17:
	.string	"01000"
.LC18:
	.string	"J"
.LC19:
	.string	"01001"
.LC20:
	.string	"K"
.LC21:
	.string	"01010"
.LC22:
	.string	"L"
.LC23:
	.string	"01011"
.LC24:
	.string	"M"
.LC25:
	.string	"01100"
.LC26:
	.string	"N"
.LC27:
	.string	"01101"
.LC28:
	.string	"O"
.LC29:
	.string	"01110"
.LC30:
	.string	"P"
.LC31:
	.string	"01111"
.LC32:
	.string	"Q"
.LC33:
	.string	"10000"
.LC34:
	.string	"R"
.LC35:
	.string	"10001"
.LC36:
	.string	"S"
.LC37:
	.string	"10010"
.LC38:
	.string	"T"
.LC39:
	.string	"10011"
.LC40:
	.string	"U"
.LC41:
	.string	"10100"
.LC42:
	.string	"V"
.LC43:
	.string	"10101"
.LC44:
	.string	"W"
.LC45:
	.string	"10110"
.LC46:
	.string	"X"
.LC47:
	.string	"10111"
.LC48:
	.string	"Y"
.LC49:
	.string	"11000"
.LC50:
	.string	"Z"
.LC51:
	.string	"11001"
.LC52:
	.string	" "
.LC53:
	.string	"11010"
.LC54:
	.string	"."
.LC55:
	.string	"11011"
.LC56:
	.string	","
.LC57:
	.string	"11100"
.LC58:
	.string	"-"
.LC59:
	.string	"11101"
.LC60:
	.string	"'"
.LC61:
	.string	"11110"
.LC62:
	.string	"?"
.LC63:
	.string	"11111"
	.section	.data.rel.local,"aw"
	.align 32
	.type	input_table, @object
	.size	input_table, 512
input_table:
	.quad	.LC0
	.quad	.LC1
	.quad	.LC2
	.quad	.LC3
	.quad	.LC4
	.quad	.LC5
	.quad	.LC6
	.quad	.LC7
	.quad	.LC8
	.quad	.LC9
	.quad	.LC10
	.quad	.LC11
	.quad	.LC12
	.quad	.LC13
	.quad	.LC14
	.quad	.LC15
	.quad	.LC16
	.quad	.LC17
	.quad	.LC18
	.quad	.LC19
	.quad	.LC20
	.quad	.LC21
	.quad	.LC22
	.quad	.LC23
	.quad	.LC24
	.quad	.LC25
	.quad	.LC26
	.quad	.LC27
	.quad	.LC28
	.quad	.LC29
	.quad	.LC30
	.quad	.LC31
	.quad	.LC32
	.quad	.LC33
	.quad	.LC34
	.quad	.LC35
	.quad	.LC36
	.quad	.LC37
	.quad	.LC38
	.quad	.LC39
	.quad	.LC40
	.quad	.LC41
	.quad	.LC42
	.quad	.LC43
	.quad	.LC44
	.quad	.LC45
	.quad	.LC46
	.quad	.LC47
	.quad	.LC48
	.quad	.LC49
	.quad	.LC50
	.quad	.LC51
	.quad	.LC52
	.quad	.LC53
	.quad	.LC54
	.quad	.LC55
	.quad	.LC56
	.quad	.LC57
	.quad	.LC58
	.quad	.LC59
	.quad	.LC60
	.quad	.LC61
	.quad	.LC62
	.quad	.LC63
	.globl	output_table
	.section	.rodata
.LC64:
	.string	"101"
.LC65:
	.string	"000000"
.LC66:
	.string	"000011"
.LC67:
	.string	"10010001"
.LC68:
	.string	"010001"
.LC69:
	.string	"000001"
.LC70:
	.string	"100101"
.LC71:
	.string	"10011010"
.LC72:
	.string	"0101"
.LC73:
	.string	"0001"
.LC74:
	.string	"110"
.LC75:
	.string	"10011011"
.LC76:
	.string	"010000"
.LC77:
	.string	"0111"
.LC78:
	.string	"10011000"
.LC79:
	.string	"0110"
.LC80:
	.string	"10011001"
.LC81:
	.string	"10011110"
.LC82:
	.string	"111"
.LC83:
	.string	"10011111"
.LC84:
	.string	"1000"
.LC85:
	.string	"10011100"
.LC86:
	.string	"10011101"
.LC87:
	.string	"000010"
.LC88:
	.string	"10010010"
.LC89:
	.string	"10010011"
.LC90:
	.string	"10010000"
	.section	.data.rel.local
	.align 32
	.type	output_table, @object
	.size	output_table, 512
output_table:
	.quad	.LC64
	.quad	.LC52
	.quad	.LC65
	.quad	.LC60
	.quad	.LC66
	.quad	.LC56
	.quad	.LC67
	.quad	.LC58
	.quad	.LC68
	.quad	.LC54
	.quad	.LC69
	.quad	.LC62
	.quad	.LC70
	.quad	.LC0
	.quad	.LC71
	.quad	.LC2
	.quad	.LC72
	.quad	.LC4
	.quad	.LC73
	.quad	.LC6
	.quad	.LC74
	.quad	.LC8
	.quad	.LC19
	.quad	.LC10
	.quad	.LC75
	.quad	.LC12
	.quad	.LC76
	.quad	.LC14
	.quad	.LC77
	.quad	.LC16
	.quad	.LC78
	.quad	.LC18
	.quad	.LC79
	.quad	.LC20
	.quad	.LC9
	.quad	.LC22
	.quad	.LC80
	.quad	.LC24
	.quad	.LC81
	.quad	.LC26
	.quad	.LC11
	.quad	.LC28
	.quad	.LC82
	.quad	.LC30
	.quad	.LC83
	.quad	.LC32
	.quad	.LC84
	.quad	.LC34
	.quad	.LC13
	.quad	.LC36
	.quad	.LC15
	.quad	.LC38
	.quad	.LC85
	.quad	.LC40
	.quad	.LC86
	.quad	.LC42
	.quad	.LC87
	.quad	.LC44
	.quad	.LC88
	.quad	.LC46
	.quad	.LC89
	.quad	.LC48
	.quad	.LC90
	.quad	.LC50
	.text
	.globl	insert_to_buffer
	.type	insert_to_buffer, @function
insert_to_buffer:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movl	%esi, %eax
	movb	%al, -28(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L2
.L5:
	movl	-4(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	input_table(%rip), %rax
	movq	(%rdx,%rax), %rax
	movzbl	(%rax), %eax
	cmpb	%al, -28(%rbp)
	jne	.L3
	movl	-4(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	8+input_table(%rip), %rax
	movq	(%rdx,%rax), %rdx
	movq	-24(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	strcat@PLT
	jmp	.L4
.L3:
	addl	$1, -4(%rbp)
.L2:
	cmpl	$31, -4(%rbp)
	jle	.L5
	nop
.L4:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	insert_to_buffer, .-insert_to_buffer
	.globl	output_buffer
	.type	output_buffer, @function
output_buffer:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movl	$0, -16(%rbp)
	jmp	.L7
.L12:
	movl	-16(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	output_table(%rip), %rax
	movq	(%rdx,%rax), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movq	%rax, %rdx
	movl	-16(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rcx
	leaq	output_table(%rip), %rax
	movq	(%rcx,%rax), %rcx
	movq	-24(%rbp), %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	strncmp@PLT
	testl	%eax, %eax
	jne	.L8
	movl	-16(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	output_table(%rip), %rax
	movq	(%rdx,%rax), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -8(%rbp)
	movq	-24(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -4(%rbp)
	movl	-16(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	8+output_table(%rip), %rax
	movq	(%rdx,%rax), %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	%eax, %edi
	call	putchar@PLT
	movl	-8(%rbp), %eax
	movl	%eax, -12(%rbp)
	jmp	.L9
.L10:
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	leaq	(%rdx,%rax), %rcx
	movl	-12(%rbp), %eax
	subl	-8(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movzbl	(%rcx), %eax
	movb	%al, (%rdx)
	addl	$1, -12(%rbp)
.L9:
	movl	-12(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jl	.L10
	movl	-4(%rbp), %eax
	subl	-8(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movb	$0, (%rax)
	movl	$1, %eax
	jmp	.L11
.L8:
	addl	$1, -16(%rbp)
.L7:
	cmpl	$31, -16(%rbp)
	jle	.L12
	movl	$0, %eax
.L11:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	output_buffer, .-output_buffer
	.globl	main
	.type	main, @function
main:
.LFB2:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	addq	$-128, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movq	$0, -112(%rbp)
	movq	$0, -104(%rbp)
	movq	$0, -96(%rbp)
	movq	$0, -88(%rbp)
	movq	$0, -80(%rbp)
	movq	$0, -72(%rbp)
	movq	$0, -64(%rbp)
	movq	$0, -56(%rbp)
	movq	$0, -48(%rbp)
	movq	$0, -40(%rbp)
	movq	$0, -32(%rbp)
	movq	$0, -24(%rbp)
	movl	$0, -16(%rbp)
	jmp	.L14
.L18:
	cmpl	$10, -116(%rbp)
	jne	.L15
	nop
.L16:
	leaq	-112(%rbp), %rax
	movq	%rax, %rdi
	call	output_buffer
	testl	%eax, %eax
	jne	.L16
	movb	$0, -112(%rbp)
	movl	$10, %edi
	call	putchar@PLT
	jmp	.L14
.L15:
	movl	-116(%rbp), %eax
	movsbl	%al, %edx
	leaq	-112(%rbp), %rax
	movl	%edx, %esi
	movq	%rax, %rdi
	call	insert_to_buffer
	nop
.L17:
	leaq	-112(%rbp), %rax
	movq	%rax, %rdi
	call	output_buffer
	testl	%eax, %eax
	jne	.L17
.L14:
	call	getchar@PLT
	movl	%eax, -116(%rbp)
	cmpl	$-1, -116(%rbp)
	jne	.L18
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L20
	call	__stack_chk_fail@PLT
.L20:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
```

Only output the optimized assembly code. Do not include any other text. Do not write any comments in the assembly code. Wrap the assembly code in ```assembly``` tags.
user
	.file	"temp.c"
	.text
	.p2align 4
	.globl	insert_to_buffer
	.type	insert_to_buffer, @function
insert_to_buffer:
.LFB35:
	.cfi_startproc
	endbr64
	leaq	input_table(%rip), %r8
	xorl	%eax, %eax
	movq	%r8, %rdx
	jmp	.L3
	.p2align 4,,10
	.p2align 3
.L2:
	addl	$1, %eax
	addq	$16, %rdx
	cmpl	$32, %eax
	je	.L6
.L3:
	movq	(%rdx), %rcx
	cmpb	%sil, (%rcx)
	jne	.L2
	cltq
	salq	$4, %rax
	movq	8(%r8,%rax), %rsi
	jmp	strcat@PLT
	.p2align 4,,10
	.p2align 3
.L6:
	ret
	.cfi_endproc
.LFE35:
	.size	insert_to_buffer, .-insert_to_buffer
	.p2align 4
	.globl	output_buffer
	.type	output_buffer, @function
output_buffer:
.LFB36:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	leaq	output_table(%rip), %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movq	%r13, %r15
	movq	%rdi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	xorl	%ebp, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$8, %rsp
	.cfi_def_cfa_offset 64
	jmp	.L19
	.p2align 4,,10
	.p2align 3
.L8:
	addl	$1, %ebp
	addq	$16, %r15
	cmpl	$32, %ebp
	je	.L31
.L19:
	movq	(%r15), %r14
	movq	%r14, %rdi
	call	strlen@PLT
	movq	%r14, %rsi
	movq	%r12, %rdi
	movq	%rax, %rdx
	movq	%rax, %rbx
	call	strncmp@PLT
	testl	%eax, %eax
	jne	.L8
	movq	%r12, %rdi
	movslq	%ebp, %rbp
	call	strlen@PLT
	salq	$4, %rbp
	movq	stdout(%rip), %rsi
	movq	%rax, %r14
	movq	8(%r13,%rbp), %rax
	movsbl	(%rax), %edi
	call	putc@PLT
	cmpl	%r14d, %ebx
	jge	.L9
	movslq	%ebx, %rdx
	movl	%r14d, %ecx
	movq	%rdx, %rax
	subl	%ebx, %ecx
	notq	%rax
	leal	-1(%rcx), %esi
	cmpq	$14, %rax
	jbe	.L10
	cmpl	$6, %esi
	jbe	.L10
	cmpl	$14, %esi
	jbe	.L20
	movl	%ecx, %esi
	addq	%r12, %rdx
	xorl	%eax, %eax
	shrl	$4, %esi
	salq	$4, %rsi
	.p2align 4,,10
	.p2align 3
.L12:
	movdqu	(%rdx,%rax), %xmm0
	movups	%xmm0, (%r12,%rax)
	addq	$16, %rax
	cmpq	%rax, %rsi
	jne	.L12
	movl	%ecx, %esi
	andl	$-16, %esi
	leal	(%rsi,%rbx), %eax
	cmpl	%esi, %ecx
	je	.L9
	subl	%esi, %ecx
	leal	-1(%rcx), %edi
	cmpl	$6, %edi
	jbe	.L14
.L11:
	movq	(%rdx,%rsi), %rdx
	movq	%rdx, (%r12,%rsi)
	movl	%ecx, %edx
	andl	$-8, %edx
	addl	%edx, %eax
	cmpl	%edx, %ecx
	je	.L9
.L14:
	movslq	%eax, %rdx
	movzbl	(%r12,%rdx), %ecx
	movl	%eax, %edx
	subl	%ebx, %edx
	movslq	%edx, %rdx
	movb	%cl, (%r12,%rdx)
	leal	1(%rax), %edx
	cmpl	%edx, %r14d
	jle	.L9
	movslq	%edx, %rcx
	subl	%ebx, %edx
	movzbl	(%r12,%rcx), %ecx
	movslq	%edx, %rdx
	movb	%cl, (%r12,%rdx)
	leal	2(%rax), %edx
	cmpl	%edx, %r14d
	jle	.L9
	movslq	%edx, %rcx
	subl	%ebx, %edx
	movzbl	(%r12,%rcx), %ecx
	movslq	%edx, %rdx
	movb	%cl, (%r12,%rdx)
	leal	3(%rax), %edx
	cmpl	%edx, %r14d
	jle	.L9
	movslq	%edx, %rcx
	subl	%ebx, %edx
	movzbl	(%r12,%rcx), %ecx
	movslq	%edx, %rdx
	movb	%cl, (%r12,%rdx)
	leal	4(%rax), %edx
	cmpl	%edx, %r14d
	jle	.L9
	movslq	%edx, %rcx
	subl	%ebx, %edx
	movzbl	(%r12,%rcx), %ecx
	movslq	%edx, %rdx
	movb	%cl, (%r12,%rdx)
	leal	5(%rax), %edx
	cmpl	%edx, %r14d
	jle	.L9
	movslq	%edx, %rcx
	subl	%ebx, %edx
	addl	$6, %eax
	movzbl	(%r12,%rcx), %ecx
	movslq	%edx, %rdx
	movb	%cl, (%r12,%rdx)
	cmpl	%eax, %r14d
	jle	.L9
	movslq	%eax, %rdx
	subl	%ebx, %eax
	movzbl	(%r12,%rdx), %edx
	cltq
	movb	%dl, (%r12,%rax)
.L9:
	subl	%ebx, %r14d
	movl	$1, %eax
	movslq	%r14d, %r14
	movb	$0, (%r12,%r14)
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L31:
	.cfi_restore_state
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
.L10:
	.cfi_restore_state
	movq	%r12, %rax
	leaq	1(%r12,%rsi), %rsi
	.p2align 4,,10
	.p2align 3
.L16:
	movzbl	(%rax,%rdx), %ecx
	addq	$1, %rax
	movb	%cl, -1(%rax)
	cmpq	%rsi, %rax
	jne	.L16
	jmp	.L9
.L20:
	movl	%ebx, %eax
	xorl	%esi, %esi
	addq	%r12, %rdx
	jmp	.L11
	.cfi_endproc
.LFE36:
	.size	output_buffer, .-output_buffer
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB37:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pxor	%xmm0, %xmm0
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	leaq	input_table(%rip), %rbx
	subq	$120, %rsp
	.cfi_def_cfa_offset 144
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	movl	$0, 96(%rsp)
	movaps	%xmm0, (%rsp)
	movaps	%xmm0, 16(%rsp)
	movaps	%xmm0, 32(%rsp)
	movaps	%xmm0, 48(%rsp)
	movaps	%xmm0, 64(%rsp)
	movaps	%xmm0, 80(%rsp)
	.p2align 4,,10
	.p2align 3
.L33:
	movq	stdin(%rip), %rdi
	call	getc@PLT
	cmpl	$-1, %eax
	je	.L47
	cmpl	$10, %eax
	jne	.L34
	movq	%rsp, %rbp
	.p2align 4,,10
	.p2align 3
.L35:
	movq	%rbp, %rdi
	call	output_buffer
	testl	%eax, %eax
	jne	.L35
	movq	stdout(%rip), %rsi
	movl	$10, %edi
	movb	$0, (%rsp)
	call	putc@PLT
	jmp	.L33
	.p2align 4,,10
	.p2align 3
.L34:
	leaq	input_table(%rip), %rcx
	xorl	%edx, %edx
	jmp	.L39
	.p2align 4,,10
	.p2align 3
.L37:
	addl	$1, %edx
	addq	$16, %rcx
	cmpl	$32, %edx
	je	.L48
.L39:
	movq	(%rcx), %rsi
	cmpb	(%rsi), %al
	jne	.L37
	movslq	%edx, %rax
	movq	%rsp, %rbp
	movl	$100, %edx
	salq	$4, %rax
	movq	%rbp, %rdi
	movq	8(%rbx,%rax), %rsi
	call	__strcat_chk@PLT
	.p2align 4,,10
	.p2align 3
.L40:
	movq	%rbp, %rdi
	call	output_buffer
	testl	%eax, %eax
	jne	.L40
	jmp	.L33
	.p2align 4,,10
	.p2align 3
.L48:
	movq	%rsp, %rbp
	jmp	.L40
	.p2align 4,,10
	.p2align 3
.L47:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L49
	addq	$120, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L49:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE37:
	.size	main, .-main
	.globl	output_table
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"101"
.LC1:
	.string	" "
.LC2:
	.string	"000000"
.LC3:
	.string	"'"
.LC4:
	.string	"000011"
.LC5:
	.string	","
.LC6:
	.string	"10010001"
.LC7:
	.string	"-"
.LC8:
	.string	"010001"
.LC9:
	.string	"."
.LC10:
	.string	"000001"
.LC11:
	.string	"?"
.LC12:
	.string	"100101"
.LC13:
	.string	"A"
.LC14:
	.string	"10011010"
.LC15:
	.string	"B"
.LC16:
	.string	"0101"
.LC17:
	.string	"C"
.LC18:
	.string	"0001"
.LC19:
	.string	"D"
.LC20:
	.string	"110"
.LC21:
	.string	"E"
.LC22:
	.string	"01001"
.LC23:
	.string	"F"
.LC24:
	.string	"10011011"
.LC25:
	.string	"G"
.LC26:
	.string	"010000"
.LC27:
	.string	"H"
.LC28:
	.string	"0111"
.LC29:
	.string	"I"
.LC30:
	.string	"10011000"
.LC31:
	.string	"J"
.LC32:
	.string	"0110"
.LC33:
	.string	"K"
.LC34:
	.string	"00100"
.LC35:
	.string	"L"
.LC36:
	.string	"10011001"
.LC37:
	.string	"M"
.LC38:
	.string	"10011110"
.LC39:
	.string	"N"
.LC40:
	.string	"00101"
.LC41:
	.string	"O"
.LC42:
	.string	"111"
.LC43:
	.string	"P"
.LC44:
	.string	"10011111"
.LC45:
	.string	"Q"
.LC46:
	.string	"1000"
.LC47:
	.string	"R"
.LC48:
	.string	"00110"
.LC49:
	.string	"S"
.LC50:
	.string	"00111"
.LC51:
	.string	"T"
.LC52:
	.string	"10011100"
.LC53:
	.string	"U"
.LC54:
	.string	"10011101"
.LC55:
	.string	"V"
.LC56:
	.string	"000010"
.LC57:
	.string	"W"
.LC58:
	.string	"10010010"
.LC59:
	.string	"X"
.LC60:
	.string	"10010011"
.LC61:
	.string	"Y"
.LC62:
	.string	"10010000"
.LC63:
	.string	"Z"
	.section	.data.rel.local,"aw"
	.align 32
	.type	output_table, @object
	.size	output_table, 512
output_table:
	.quad	.LC0
	.quad	.LC1
	.quad	.LC2
	.quad	.LC3
	.quad	.LC4
	.quad	.LC5
	.quad	.LC6
	.quad	.LC7
	.quad	.LC8
	.quad	.LC9
	.quad	.LC10
	.quad	.LC11
	.quad	.LC12
	.quad	.LC13
	.quad	.LC14
	.quad	.LC15
	.quad	.LC16
	.quad	.LC17
	.quad	.LC18
	.quad	.LC19
	.quad	.LC20
	.quad	.LC21
	.quad	.LC22
	.quad	.LC23
	.quad	.LC24
	.quad	.LC25
	.quad	.LC26
	.quad	.LC27
	.quad	.LC28
	.quad	.LC29
	.quad	.LC30
	.quad	.LC31
	.quad	.LC32
	.quad	.LC33
	.quad	.LC34
	.quad	.LC35
	.quad	.LC36
	.quad	.LC37
	.quad	.LC38
	.quad	.LC39
	.quad	.LC40
	.quad	.LC41
	.quad	.LC42
	.quad	.LC43
	.quad	.LC44
	.quad	.LC45
	.quad	.LC46
	.quad	.LC47
	.quad	.LC48
	.quad	.LC49
	.quad	.LC50
	.quad	.LC51
	.quad	.LC52
	.quad	.LC53
	.quad	.LC54
	.quad	.LC55
	.quad	.LC56
	.quad	.LC57
	.quad	.LC58
	.quad	.LC59
	.quad	.LC60
	.quad	.LC61
	.quad	.LC62
	.quad	.LC63
	.globl	input_table
	.section	.rodata.str1.1
.LC64:
	.string	"00000"
.LC65:
	.string	"00001"
.LC66:
	.string	"00010"
.LC67:
	.string	"00011"
.LC68:
	.string	"01000"
.LC69:
	.string	"01010"
.LC70:
	.string	"01011"
.LC71:
	.string	"01100"
.LC72:
	.string	"01101"
.LC73:
	.string	"01110"
.LC74:
	.string	"01111"
.LC75:
	.string	"10000"
.LC76:
	.string	"10001"
.LC77:
	.string	"10010"
.LC78:
	.string	"10011"
.LC79:
	.string	"10100"
.LC80:
	.string	"10101"
.LC81:
	.string	"10110"
.LC82:
	.string	"10111"
.LC83:
	.string	"11000"
.LC84:
	.string	"11001"
.LC85:
	.string	"11010"
.LC86:
	.string	"11011"
.LC87:
	.string	"11100"
.LC88:
	.string	"11101"
.LC89:
	.string	"11110"
.LC90:
	.string	"11111"
	.section	.data.rel.local
	.align 32
	.type	input_table, @object
	.size	input_table, 512
input_table:
	.quad	.LC13
	.quad	.LC64
	.quad	.LC15
	.quad	.LC65
	.quad	.LC17
	.quad	.LC66
	.quad	.LC19
	.quad	.LC67
	.quad	.LC21
	.quad	.LC34
	.quad	.LC23
	.quad	.LC40
	.quad	.LC25
	.quad	.LC48
	.quad	.LC27
	.quad	.LC50
	.quad	.LC29
	.quad	.LC68
	.quad	.LC31
	.quad	.LC22
	.quad	.LC33
	.quad	.LC69
	.quad	.LC35
	.quad	.LC70
	.quad	.LC37
	.quad	.LC71
	.quad	.LC39
	.quad	.LC72
	.quad	.LC41
	.quad	.LC73
	.quad	.LC43
	.quad	.LC74
	.quad	.LC45
	.quad	.LC75
	.quad	.LC47
	.quad	.LC76
	.quad	.LC49
	.quad	.LC77
	.quad	.LC51
	.quad	.LC78
	.quad	.LC53
	.quad	.LC79
	.quad	.LC55
	.quad	.LC80
	.quad	.LC57
	.quad	.LC81
	.quad	.LC59
	.quad	.LC82
	.quad	.LC61
	.quad	.LC83
	.quad	.LC63
	.quad	.LC84
	.quad	.LC1
	.quad	.LC85
	.quad	.LC9
	.quad	.LC86
	.quad	.LC5
	.quad	.LC87
	.quad	.LC7
	.quad	.LC88
	.quad	.LC3
	.quad	.LC89
	.quad	.LC11
	.quad	.LC90
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:

rule
	.file	"temp.c"
	.text
	.p2align 4
	.globl	insert_to_buffer
	.type	insert_to_buffer, @function
insert_to_buffer:
.LFB35:
	.cfi_startproc
	endbr64
	leaq	input_table(%rip), %r8
	xorl	%eax, %eax
	movq	%r8, %rdx
	jmp	.L3
	.p2align 4,,10
	.p2align 3
.L2:
	addl	$1, %eax
	addq	$16, %rdx
	cmpl	$32, %eax
	je	.L6
.L3:
	movq	(%rdx), %rcx
	cmpb	%sil, (%rcx)
	jne	.L2
	cltq
	salq	$4, %rax
	movq	8(%r8,%rax), %rsi
	jmp	strcat@PLT
	.p2align 4,,10
	.p2align 3
.L6:
	ret
	.cfi_endproc
.LFE35:
	.size	insert_to_buffer, .-insert_to_buffer
	.p2align 4
	.globl	output_buffer
	.type	output_buffer, @function
output_buffer:
.LFB36:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	leaq	output_table(%rip), %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movq	%r13, %r15
	movq	%rdi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	xorl	%ebp, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$8, %rsp
	.cfi_def_cfa_offset 64
	jmp	.L19
	.p2align 4,,10
	.p2align 3
.L8:
	addl	$1, %ebp
	addq	$16, %r15
	cmpl	$32, %ebp
	je	.L31
.L19:
	movq	(%r15), %r14
	movq	%r14, %rdi
	call	strlen@PLT
	movq	%r14, %rsi
	movq	%r12, %rdi
	movq	%rax, %rdx
	movq	%rax, %rbx
	call	strncmp@PLT
	testl	%eax, %eax
	jne	.L8
	movq	%r12, %rdi
	movslq	%ebp, %rbp
	call	strlen@PLT
	salq	$4, %rbp
	movq	stdout(%rip), %rsi
	movq	%rax, %r14
	movq	8(%r13,%rbp), %rax
	movsbl	(%rax), %edi
	call	putc@PLT
	cmpl	%r14d, %ebx
	jge	.L9
	movslq	%ebx, %rdx
	movl	%r14d, %ecx
	movq	%rdx, %rax
	subl	%ebx, %ecx
	notq	%rax
	leal	-1(%rcx), %esi
	cmpq	$14, %rax
	jbe	.L10
	cmpl	$6, %esi
	jbe	.L10
	cmpl	$14, %esi
	jbe	.L20
	movl	%ecx, %esi
	addq	%r12, %rdx
	xorl	%eax, %eax
	shrl	$4, %esi
	salq	$4, %rsi
	.p2align 4,,10
	.p2align 3
.L12:
	movdqu	(%rdx,%rax), %xmm0
	movups	%xmm0, (%r12,%rax)
	addq	$16, %rax
	cmpq	%rax, %rsi
	jne	.L12
	movl	%ecx, %esi
	andl	$-16, %esi
	leal	(%rsi,%rbx), %eax
	cmpl	%esi, %ecx
	je	.L9
	subl	%esi, %ecx
	leal	-1(%rcx), %edi
	cmpl	$6, %edi
	jbe	.L14
.L11:
	movq	(%rdx,%rsi), %rdx
	movq	%rdx, (%r12,%rsi)
	movl	%ecx, %edx
	andl	$-8, %edx
	addl	%edx, %eax
	cmpl	%edx, %ecx
	je	.L9
.L14:
	movslq	%eax, %rdx
	movzbl	(%r12,%rdx), %ecx
	movl	%eax, %edx
	subl	%ebx, %edx
	movslq	%edx, %rdx
	movb	%cl, (%r12,%rdx)
	leal	1(%rax), %edx
	cmpl	%edx, %r14d
	jle	.L9
	movslq	%edx, %rcx
	subl	%ebx, %edx
	movzbl	(%r12,%rcx), %ecx
	movslq	%edx, %rdx
	movb	%cl, (%r12,%rdx)
	leal	2(%rax), %edx
	cmpl	%edx, %r14d
	jle	.L9
	movslq	%edx, %rcx
	subl	%ebx, %edx
	movzbl	(%r12,%rcx), %ecx
	movslq	%edx, %rdx
	movb	%cl, (%r12,%rdx)
	leal	3(%rax), %edx
	cmpl	%edx, %r14d
	jle	.L9
	movslq	%edx, %rcx
	subl	%ebx, %edx
	movzbl	(%r12,%rcx), %ecx
	movslq	%edx, %rdx
	movb	%cl, (%r12,%rdx)
	leal	4(%rax), %edx
	cmpl	%edx, %r14d
	jle	.L9
	movslq	%edx, %rcx
	subl	%ebx, %edx
	movzbl	(%r12,%rcx), %ecx
	movslq	%edx, %rdx
	movb	%cl, (%r12,%rdx)
	leal	5(%rax), %edx
	cmpl	%edx, %r14d
	jle	.L9
	movslq	%edx, %rcx
	subl	%ebx, %edx
	addl	$6, %eax
	movzbl	(%r12,%rcx), %ecx
	movslq	%edx, %rdx
	movb	%cl, (%r12,%rdx)
	cmpl	%eax, %r14d
	jle	.L9
	movslq	%eax, %rdx
	subl	%ebx, %eax
	movzbl	(%r12,%rdx), %edx
	cltq
	movb	%dl, (%r12,%rax)
.L9:
	subl	%ebx, %r14d
	movl	$1, %eax
	movslq	%r14d, %r14
	movb	$0, (%r12,%r14)
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L31:
	.cfi_restore_state
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
.L10:
	.cfi_restore_state
	movq	%r12, %rax
	leaq	1(%r12,%rsi), %rsi
	.p2align 4,,10
	.p2align 3
.L16:
	movzbl	(%rax,%rdx), %ecx
	addq	$1, %rax
	movb	%cl, -1(%rax)
	cmpq	%rsi, %rax
	jne	.L16
	jmp	.L9
.L20:
	movl	%ebx, %eax
	xorl	%esi, %esi
	addq	%r12, %rdx
	jmp	.L11
	.cfi_endproc
.LFE36:
	.size	output_buffer, .-output_buffer
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB37:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	pxor	%xmm0, %xmm0
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	leaq	input_table(%rip), %rbx
	subq	$120, %rsp
	.cfi_def_cfa_offset 144
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	movl	$0, 96(%rsp)
	movaps	%xmm0, (%rsp)
	movaps	%xmm0, 16(%rsp)
	movaps	%xmm0, 32(%rsp)
	movaps	%xmm0, 48(%rsp)
	movaps	%xmm0, 64(%rsp)
	movaps	%xmm0, 80(%rsp)
	.p2align 4,,10
	.p2align 3
.L33:
	movq	stdin(%rip), %rdi
	call	getc@PLT
	cmpl	$-1, %eax
	je	.L47
	cmpl	$10, %eax
	jne	.L34
	movq	%rsp, %rbp
	.p2align 4,,10
	.p2align 3
.L35:
	movq	%rbp, %rdi
	call	output_buffer
	testl	%eax, %eax
	jne	.L35
	movq	stdout(%rip), %rsi
	movl	$10, %edi
	movb	$0, (%rsp)
	call	putc@PLT
	jmp	.L33
	.p2align 4,,10
	.p2align 3
.L34:
	leaq	input_table(%rip), %rcx
	xorl	%edx, %edx
	jmp	.L39
	.p2align 4,,10
	.p2align 3
.L37:
	addl	$1, %edx
	addq	$16, %rcx
	cmpl	$32, %edx
	je	.L48
.L39:
	movq	(%rcx), %rsi
	cmpb	(%rsi), %al
	jne	.L37
	movslq	%edx, %rax
	movq	%rsp, %rbp
	movl	$100, %edx
	salq	$4, %rax
	movq	%rbp, %rdi
	movq	8(%rbx,%rax), %rsi
	call	__strcat_chk@PLT
	.p2align 4,,10
	.p2align 3
.L40:
	movq	%rbp, %rdi
	call	output_buffer
	testl	%eax, %eax
	jne	.L40
	jmp	.L33
	.p2align 4,,10
	.p2align 3
.L48:
	movq	%rsp, %rbp
	jmp	.L40
	.p2align 4,,10
	.p2align 3
.L47:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L49
	addq	$120, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L49:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE37:
	.size	main, .-main
	.globl	output_table
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"101"
.LC1:
	.string	" "
.LC2:
	.string	"000000"
.LC3:
	.string	"'"
.LC4:
	.string	"000011"
.LC5:
	.string	","
.LC6:
	.string	"10010001"
.LC7:
	.string	"-"
.LC8:
	.string	"010001"
.LC9:
	.string	"."
.LC10:
	.string	"000001"
.LC11:
	.string	"?"
.LC12:
	.string	"100101"
.LC13:
	.string	"A"
.LC14:
	.string	"10011010"
.LC15:
	.string	"B"
.LC16:
	.string	"0101"
.LC17:
	.string	"C"
.LC18:
	.string	"0001"
.LC19:
	.string	"D"
.LC20:
	.string	"110"
.LC21:
	.string	"E"
.LC22:
	.string	"01001"
.LC23:
	.string	"F"
.LC24:
	.string	"10011011"
.LC25:
	.string	"G"
.LC26:
	.string	"010000"
.LC27:
	.string	"H"
.LC28:
	.string	"0111"
.LC29:
	.string	"I"
.LC30:
	.string	"10011000"
.LC31:
	.string	"J"
.LC32:
	.string	"0110"
.LC33:
	.string	"K"
.LC34:
	.string	"00100"
.LC35:
	.string	"L"
.LC36:
	.string	"10011001"
.LC37:
	.string	"M"
.LC38:
	.string	"10011110"
.LC39:
	.string	"N"
.LC40:
	.string	"00101"
.LC41:
	.string	"O"
.LC42:
	.string	"111"
.LC43:
	.string	"P"
.LC44:
	.string	"10011111"
.LC45:
	.string	"Q"
.LC46:
	.string	"1000"
.LC47:
	.string	"R"
.LC48:
	.string	"00110"
.LC49:
	.string	"S"
.LC50:
	.string	"00111"
.LC51:
	.string	"T"
.LC52:
	.string	"10011100"
.LC53:
	.string	"U"
.LC54:
	.string	"10011101"
.LC55:
	.string	"V"
.LC56:
	.string	"000010"
.LC57:
	.string	"W"
.LC58:
	.string	"10010010"
.LC59:
	.string	"X"
.LC60:
	.string	"10010011"
.LC61:
	.string	"Y"
.LC62:
	.string	"10010000"
.LC63:
	.string	"Z"
	.section	.data.rel.local,"aw"
	.align 32
	.type	output_table, @object
	.size	output_table, 512
output_table:
	.quad	.LC0
	.quad	.LC1
	.quad	.LC2
	.quad	.LC3
	.quad	.LC4
	.quad	.LC5
	.quad	.LC6
	.quad	.LC7
	.quad	.LC8
	.quad	.LC9
	.quad	.LC10
	.quad	.LC11
	.quad	.LC12
	.quad	.LC13
	.quad	.LC14
	.quad	.LC15
	.quad	.LC16
	.quad	.LC17
	.quad	.LC18
	.quad	.LC19
	.quad	.LC20
	.quad	.LC21
	.quad	.LC22
	.quad	.LC23
	.quad	.LC24
	.quad	.LC25
	.quad	.LC26
	.quad	.LC27
	.quad	.LC28
	.quad	.LC29
	.quad	.LC30
	.quad	.LC31
	.quad	.LC32
	.quad	.LC33
	.quad	.LC34
	.quad	.LC35
	.quad	.LC36
	.quad	.LC37
	.quad	.LC38
	.quad	.LC39
	.quad	.LC40
	.quad	.LC41
	.quad	.LC42
	.quad	.LC43
	.quad	.LC44
	.quad	.LC45
	.quad	.LC46
	.quad	.LC47
	.quad	.LC48
	.quad	.LC49
	.quad	.LC50
	.quad	.LC51
	.quad	.LC52
	.quad	.LC53
	.quad	.LC54
	.quad	.LC55
	.quad	.LC56
	.quad	.LC57
	.quad	.LC58
	.quad	.LC59
	.quad	.LC60
	.quad	.LC61
	.quad	.LC62
	.quad	.LC63
	.globl	input_table
	.section	.rodata.str1.1
.LC64:
	.string	"00000"
.LC65:
	.string	"00001"
.LC66:
	.string	"00010"
.LC67:
	.string	"00011"
.LC68:
	.string	"01000"
.LC69:
	.string	"01010"
.LC70:
	.string	"01011"
.LC71:
	.string	"01100"
.LC72:
	.string	"01101"
.LC73:
	.string	"01110"
.LC74:
	.string	"01111"
.LC75:
	.string	"10000"
.LC76:
	.string	"10001"
.LC77:
	.string	"10010"
.LC78:
	.string	"10011"
.LC79:
	.string	"10100"
.LC80:
	.string	"10101"
.LC81:
	.string	"10110"
.LC82:
	.string	"10111"
.LC83:
	.string	"11000"
.LC84:
	.string	"11001"
.LC85:
	.string	"11010"
.LC86:
	.string	"11011"
.LC87:
	.string	"11100"
.LC88:
	.string	"11101"
.LC89:
	.string	"11110"
.LC90:
	.string	"11111"
	.section	.data.rel.local
	.align 32
	.type	input_table, @object
	.size	input_table, 512
input_table:
	.quad	.LC13
	.quad	.LC64
	.quad	.LC15
	.quad	.LC65
	.quad	.LC17
	.quad	.LC66
	.quad	.LC19
	.quad	.LC67
	.quad	.LC21
	.quad	.LC34
	.quad	.LC23
	.quad	.LC40
	.quad	.LC25
	.quad	.LC48
	.quad	.LC27
	.quad	.LC50
	.quad	.LC29
	.quad	.LC68
	.quad	.LC31
	.quad	.LC22
	.quad	.LC33
	.quad	.LC69
	.quad	.LC35
	.quad	.LC70
	.quad	.LC37
	.quad	.LC71
	.quad	.LC39
	.quad	.LC72
	.quad	.LC41
	.quad	.LC73
	.quad	.LC43
	.quad	.LC74
	.quad	.LC45
	.quad	.LC75
	.quad	.LC47
	.quad	.LC76
	.quad	.LC49
	.quad	.LC77
	.quad	.LC51
	.quad	.LC78
	.quad	.LC53
	.quad	.LC79
	.quad	.LC55
	.quad	.LC80
	.quad	.LC57
	.quad	.LC81
	.quad	.LC59
	.quad	.LC82
	.quad	.LC61
	.quad	.LC83
	.quad	.LC63
	.quad	.LC84
	.quad	.LC1
	.quad	.LC85
	.quad	.LC9
	.quad	.LC86
	.quad	.LC5
	.quad	.LC87
	.quad	.LC7
	.quad	.LC88
	.quad	.LC3
	.quad	.LC89
	.quad	.LC11
	.quad	.LC90
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:

#include <stdio.h>
#include <string.h>

const char* input_table[32][2]={
	{"A","00000"},
	{"B","00001"},
	{"C","00010"},
	{"D","00011"},
	{"E","00100"},
	{"F","00101"},
	{"G","00110"},
	{"H","00111"},
	{"I","01000"},
	{"J","01001"},
	{"K","01010"},
	{"L","01011"},
	{"M","01100"},
	{"N","01101"},
	{"O","01110"},
	{"P","01111"},
	{"Q","10000"},
	{"R","10001"},
	{"S","10010"},
	{"T","10011"},
	{"U","10100"},
	{"V","10101"},
	{"W","10110"},
	{"X","10111"},
	{"Y","11000"},
	{"Z","11001"},
	{" ","11010"},
	{".","11011"},
	{",","11100"},
	{"-","11101"},
	{"'","11110"},
	{"?","11111"}
};

const char* output_table[32][2]={
	{"101"     ," "},
	{"000000"  ,"'"},
	{"000011"  ,","},
	{"10010001","-"},
	{"010001"  ,"."},
	{"000001"  ,"?"},
	{"100101"  ,"A"},
	{"10011010","B"},
	{"0101"    ,"C"},
	{"0001"    ,"D"},
	{"110"     ,"E"},
	{"01001"   ,"F"},
	{"10011011","G"},
	{"010000"  ,"H"},
	{"0111"    ,"I"},
	{"10011000","J"},
	{"0110"    ,"K"},
	{"00100"   ,"L"},
	{"10011001","M"},
	{"10011110","N"},
	{"00101"   ,"O"},
	{"111"     ,"P"},
	{"10011111","Q"},
	{"1000"    ,"R"},
	{"00110"   ,"S"},
	{"00111"   ,"T"},
	{"10011100","U"},
	{"10011101","V"},
	{"000010"  ,"W"},
	{"10010010","X"},
	{"10010011","Y"},
	{"10010000","Z"}
};

void insert_to_buffer(char* buffer,char mozi) {
	int i;
	for(i=0;i<32;i++) {
		if(mozi==input_table[i][0][0]) {
			strcat(buffer,input_table[i][1]);
			break;
		}
	}
}

int output_buffer(char* buffer) {
	int i,j;
	int len1,len2;
	for(i=0;i<32;i++) {
		if(strncmp(buffer,output_table[i][0],strlen(output_table[i][0]))==0) {
			len1=strlen(output_table[i][0]);
			len2=strlen(buffer);
			putchar(output_table[i][1][0]);
			for(j=len1;j<len2;j++)buffer[j-len1]=buffer[j];
			buffer[len2-len1]=0;
			return 1;
		}
	}
	return 0;
}

int main(void) {
	int c;
	char buffer[100]={0};
	while((c=getchar())!=EOF) {
		if(c=='\n') {
			while(output_buffer(buffer));
			buffer[0]=0;
			putchar('\n');
		} else {
			insert_to_buffer(buffer,c);
			while(output_buffer(buffer));
		}
	}
	return 0;
}
?D-C'KOQUA
 ?D-B'KOQUA
 AUQOK'B-D?
 -UQOK'BAD?
 -UQOK'BBD?
 -UQNK'BBD?
 ?DBB'KNQU-
 .UQNK'BBD?
 .UPNK'BBD?
 .UPNK'BCD?

PETER POTH '
 PETERIECTH '
 ?F?ECIRT DPP
 PKZIOIRL'PP
 PKZIOIRLLIP
 PKZK CP?WTP
 PESD,POSEDFE
 EPF? CIRLLIP
 EP.PK CP?WTP
 EP.PK CP?D,P

Given the following C code and unoptimized assembly code, your task is to generate highly optimized x86-64 assembly code.
C Code:

```c
#include <stdio.h>
#include <string.h>

const char* input_table[32][2]={
	{"A","00000"},
	{"B","00001"},
	{"C","00010"},
	{"D","00011"},
	{"E","00100"},
	{"F","00101"},
	{"G","00110"},
	{"H","00111"},
	{"I","01000"},
	{"J","01001"},
	{"K","01010"},
	{"L","01011"},
	{"M","01100"},
	{"N","01101"},
	{"O","01110"},
	{"P","01111"},
	{"Q","10000"},
	{"R","10001"},
	{"S","10010"},
	{"T","10011"},
	{"U","10100"},
	{"V","10101"},
	{"W","10110"},
	{"X","10111"},
	{"Y","11000"},
	{"Z","11001"},
	{" ","11010"},
	{".","11011"},
	{",","11100"},
	{"-","11101"},
	{"'","11110"},
	{"?","11111"}
};

const char* output_table[32][2]={
	{"101"     ," "},
	{"000000"  ,"'"},
	{"000011"  ,","},
	{"10010001","-"},
	{"010001"  ,"."},
	{"000001"  ,"?"},
	{"100101"  ,"A"},
	{"10011010","B"},
	{"0101"    ,"C"},
	{"0001"    ,"D"},
	{"110"     ,"E"},
	{"01001"   ,"F"},
	{"10011011","G"},
	{"010000"  ,"H"},
	{"0111"    ,"I"},
	{"10011000","J"},
	{"0110"    ,"K"},
	{"00100"   ,"L"},
	{"10011001","M"},
	{"10011110","N"},
	{"00101"   ,"O"},
	{"111"     ,"P"},
	{"10011111","Q"},
	{"1000"    ,"R"},
	{"00110"   ,"S"},
	{"00111"   ,"T"},
	{"10011100","U"},
	{"10011101","V"},
	{"000010"  ,"W"},
	{"10010010","X"},
	{"10010011","Y"},
	{"10010000","Z"}
};

void insert_to_buffer(char* buffer,char mozi) {
	int i;
	for(i=0;i<32;i++) {
		if(mozi==input_table[i][0][0]) {
			strcat(buffer,input_table[i][1]);
			break;
		}
	}
}

int output_buffer(char* buffer) {
	int i,j;
	int len1,len2;
	for(i=0;i<32;i++) {
		if(strncmp(buffer,output_table[i][0],strlen(output_table[i][0]))==0) {
			len1=strlen(output_table[i][0]);
			len2=strlen(buffer);
			putchar(output_table[i][1][0]);
			for(j=len1;j<len2;j++)buffer[j-len1]=buffer[j];
			buffer[len2-len1]=0;
			return 1;
		}
	}
	return 0;
}

int main(void) {
	int c;
	char buffer[100]={0};
	while((c=getchar())!=EOF) {
		if(c=='\n') {
			while(output_buffer(buffer));
			buffer[0]=0;
			putchar('\n');
		} else {
			insert_to_buffer(buffer,c);
			while(output_buffer(buffer));
		}
	}
	return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	input_table
	.section	.rodata
.LC0:
	.string	"A"
.LC1:
	.string	"00000"
.LC2:
	.string	"B"
.LC3:
	.string	"00001"
.LC4:
	.string	"C"
.LC5:
	.string	"00010"
.LC6:
	.string	"D"
.LC7:
	.string	"00011"
.LC8:
	.string	"E"
.LC9:
	.string	"00100"
.LC10:
	.string	"F"
.LC11:
	.string	"00101"
.LC12:
	.string	"G"
.LC13:
	.string	"00110"
.LC14:
	.string	"H"
.LC15:
	.string	"00111"
.LC16:
	.string	"I"
.LC17:
	.string	"01000"
.LC18:
	.string	"J"
.LC19:
	.string	"01001"
.LC20:
	.string	"K"
.LC21:
	.string	"01010"
.LC22:
	.string	"L"
.LC23:
	.string	"01011"
.LC24:
	.string	"M"
.LC25:
	.string	"01100"
.LC26:
	.string	"N"
.LC27:
	.string	"01101"
.LC28:
	.string	"O"
.LC29:
	.string	"01110"
.LC30:
	.string	"P"
.LC31:
	.string	"01111"
.LC32:
	.string	"Q"
.LC33:
	.string	"10000"
.LC34:
	.string	"R"
.LC35:
	.string	"10001"
.LC36:
	.string	"S"
.LC37:
	.string	"10010"
.LC38:
	.string	"T"
.LC39:
	.string	"10011"
.LC40:
	.string	"U"
.LC41:
	.string	"10100"
.LC42:
	.string	"V"
.LC43:
	.string	"10101"
.LC44:
	.string	"W"
.LC45:
	.string	"10110"
.LC46:
	.string	"X"
.LC47:
	.string	"10111"
.LC48:
	.string	"Y"
.LC49:
	.string	"11000"
.LC50:
	.string	"Z"
.LC51:
	.string	"11001"
.LC52:
	.string	" "
.LC53:
	.string	"11010"
.LC54:
	.string	"."
.LC55:
	.string	"11011"
.LC56:
	.string	","
.LC57:
	.string	"11100"
.LC58:
	.string	"-"
.LC59:
	.string	"11101"
.LC60:
	.string	"'"
.LC61:
	.string	"11110"
.LC62:
	.string	"?"
.LC63:
	.string	"11111"
	.section	.data.rel.local,"aw"
	.align 32
	.type	input_table, @object
	.size	input_table, 512
input_table:
	.quad	.LC0
	.quad	.LC1
	.quad	.LC2
	.quad	.LC3
	.quad	.LC4
	.quad	.LC5
	.quad	.LC6
	.quad	.LC7
	.quad	.LC8
	.quad	.LC9
	.quad	.LC10
	.quad	.LC11
	.quad	.LC12
	.quad	.LC13
	.quad	.LC14
	.quad	.LC15
	.quad	.LC16
	.quad	.LC17
	.quad	.LC18
	.quad	.LC19
	.quad	.LC20
	.quad	.LC21
	.quad	.LC22
	.quad	.LC23
	.quad	.LC24
	.quad	.LC25
	.quad	.LC26
	.quad	.LC27
	.quad	.LC28
	.quad	.LC29
	.quad	.LC30
	.quad	.LC31
	.quad	.LC32
	.quad	.LC33
	.quad	.LC34
	.quad	.LC35
	.quad	.LC36
	.quad	.LC37
	.quad	.LC38
	.quad	.LC39
	.quad	.LC40
	.quad	.LC41
	.quad	.LC42
	.quad	.LC43
	.quad	.LC44
	.quad	.LC45
	.quad	.LC46
	.quad	.LC47
	.quad	.LC48
	.quad	.LC49
	.quad	.LC50
	.quad	.LC51
	.quad	.LC52
	.quad	.LC53
	.quad	.LC54
	.quad	.LC55
	.quad	.LC56
	.quad	.LC57
	.quad	.LC58
	.quad	.LC59
	.quad	.LC60
	.quad	.LC61
	.quad	.LC62
	.quad	.LC63
	.globl	output_table
	.section	.rodata
.LC64:
	.string	"101"
.LC65:
	.string	"000000"
.LC66:
	.string	"000011"
.LC67:
	.string	"10010001"
.LC68:
	.string	"010001"
.LC69:
	.string	"000001"
.LC70:
	.string	"100101"
.LC71:
	.string	"10011010"
.LC72:
	.string	"0101"
.LC73:
	.string	"0001"
.LC74:
	.string	"110"
.LC75:
	.string	"10011011"
.LC76:
	.string	"010000"
.LC77:
	.string	"0111"
.LC78:
	.string	"10011000"
.LC79:
	.string	"0110"
.LC80:
	.string	"10011001"
.LC81:
	.string	"10011110"
.LC82:
	.string	"111"
.LC83:
	.string	"10011111"
.LC84:
	.string	"1000"
.LC85:
	.string	"10011100"
.LC86:
	.string	"10011101"
.LC87:
	.string	"000010"
.LC88:
	.string	"10010010"
.LC89:
	.string	"10010011"
.LC90:
	.string	"10010000"
	.section	.data.rel.local
	.align 32
	.type	output_table, @object
	.size	output_table, 512
output_table:
	.quad	.LC64
	.quad	.LC52
	.quad	.LC65
	.quad	.LC60
	.quad	.LC66
	.quad	.LC56
	.quad	.LC67
	.quad	.LC58
	.quad	.LC68
	.quad	.LC54
	.quad	.LC69
	.quad	.LC62
	.quad	.LC70
	.quad	.LC0
	.quad	.LC71
	.quad	.LC2
	.quad	.LC72
	.quad	.LC4
	.quad	.LC73
	.quad	.LC6
	.quad	.LC74
	.quad	.LC8
	.quad	.LC19
	.quad	.LC10
	.quad	.LC75
	.quad	.LC12
	.quad	.LC76
	.quad	.LC14
	.quad	.LC77
	.quad	.LC16
	.quad	.LC78
	.quad	.LC18
	.quad	.LC79
	.quad	.LC20
	.quad	.LC9
	.quad	.LC22
	.quad	.LC80
	.quad	.LC24
	.quad	.LC81
	.quad	.LC26
	.quad	.LC11
	.quad	.LC28
	.quad	.LC82
	.quad	.LC30
	.quad	.LC83
	.quad	.LC32
	.quad	.LC84
	.quad	.LC34
	.quad	.LC13
	.quad	.LC36
	.quad	.LC15
	.quad	.LC38
	.quad	.LC85
	.quad	.LC40
	.quad	.LC86
	.quad	.LC42
	.quad	.LC87
	.quad	.LC44
	.quad	.LC88
	.quad	.LC46
	.quad	.LC89
	.quad	.LC48
	.quad	.LC90
	.quad	.LC50
	.text
	.globl	insert_to_buffer
	.type	insert_to_buffer, @function
insert_to_buffer:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movl	%esi, %eax
	movb	%al, -28(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L2
.L5:
	movl	-4(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	input_table(%rip), %rax
	movq	(%rdx,%rax), %rax
	movzbl	(%rax), %eax
	cmpb	%al, -28(%rbp)
	jne	.L3
	movl	-4(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	8+input_table(%rip), %rax
	movq	(%rdx,%rax), %rdx
	movq	-24(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	strcat@PLT
	jmp	.L4
.L3:
	addl	$1, -4(%rbp)
.L2:
	cmpl	$31, -4(%rbp)
	jle	.L5
	nop
.L4:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	insert_to_buffer, .-insert_to_buffer
	.globl	output_buffer
	.type	output_buffer, @function
output_buffer:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movl	$0, -16(%rbp)
	jmp	.L7
.L12:
	movl	-16(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	output_table(%rip), %rax
	movq	(%rdx,%rax), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movq	%rax, %rdx
	movl	-16(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rcx
	leaq	output_table(%rip), %rax
	movq	(%rcx,%rax), %rcx
	movq	-24(%rbp), %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	strncmp@PLT
	testl	%eax, %eax
	jne	.L8
	movl	-16(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	output_table(%rip), %rax
	movq	(%rdx,%rax), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -8(%rbp)
	movq	-24(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -4(%rbp)
	movl	-16(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	8+output_table(%rip), %rax
	movq	(%rdx,%rax), %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	%eax, %edi
	call	putchar@PLT
	movl	-8(%rbp), %eax
	movl	%eax, -12(%rbp)
	jmp	.L9
.L10:
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	leaq	(%rdx,%rax), %rcx
	movl	-12(%rbp), %eax
	subl	-8(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movzbl	(%rcx), %eax
	movb	%al, (%rdx)
	addl	$1, -12(%rbp)
.L9:
	movl	-12(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jl	.L10
	movl	-4(%rbp), %eax
	subl	-8(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movb	$0, (%rax)
	movl	$1, %eax
	jmp	.L11
.L8:
	addl	$1, -16(%rbp)
.L7:
	cmpl	$31, -16(%rbp)
	jle	.L12
	movl	$0, %eax
.L11:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	output_buffer, .-output_buffer
	.globl	main
	.type	main, @function
main:
.LFB2:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	addq	$-128, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movq	$0, -112(%rbp)
	movq	$0, -104(%rbp)
	movq	$0, -96(%rbp)
	movq	$0, -88(%rbp)
	movq	$0, -80(%rbp)
	movq	$0, -72(%rbp)
	movq	$0, -64(%rbp)
	movq	$0, -56(%rbp)
	movq	$0, -48(%rbp)
	movq	$0, -40(%rbp)
	movq	$0, -32(%rbp)
	movq	$0, -24(%rbp)
	movl	$0, -16(%rbp)
	jmp	.L14
.L18:
	cmpl	$10, -116(%rbp)
	jne	.L15
	nop
.L16:
	leaq	-112(%rbp), %rax
	movq	%rax, %rdi
	call	output_buffer
	testl	%eax, %eax
	jne	.L16
	movb	$0, -112(%rbp)
	movl	$10, %edi
	call	putchar@PLT
	jmp	.L14
.L15:
	movl	-116(%rbp), %eax
	movsbl	%al, %edx
	leaq	-112(%rbp), %rax
	movl	%edx, %esi
	movq	%rax, %rdi
	call	insert_to_buffer
	nop
.L17:
	leaq	-112(%rbp), %rax
	movq	%rax, %rdi
	call	output_buffer
	testl	%eax, %eax
	jne	.L17
.L14:
	call	getchar@PLT
	movl	%eax, -116(%rbp)
	cmpl	$-1, -116(%rbp)
	jne	.L18
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L20
	call	__stack_chk_fail@PLT
.L20:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
```

Only output the optimized assembly code. Do not include any other text. Do not write any comments in the assembly code. Wrap the assembly code in ```assembly``` tags.
train
	.file	"temp.c"
	.text
	.globl	input_table
	.section	.rodata
.LC0:
	.string	"A"
.LC1:
	.string	"00000"
.LC2:
	.string	"B"
.LC3:
	.string	"00001"
.LC4:
	.string	"C"
.LC5:
	.string	"00010"
.LC6:
	.string	"D"
.LC7:
	.string	"00011"
.LC8:
	.string	"E"
.LC9:
	.string	"00100"
.LC10:
	.string	"F"
.LC11:
	.string	"00101"
.LC12:
	.string	"G"
.LC13:
	.string	"00110"
.LC14:
	.string	"H"
.LC15:
	.string	"00111"
.LC16:
	.string	"I"
.LC17:
	.string	"01000"
.LC18:
	.string	"J"
.LC19:
	.string	"01001"
.LC20:
	.string	"K"
.LC21:
	.string	"01010"
.LC22:
	.string	"L"
.LC23:
	.string	"01011"
.LC24:
	.string	"M"
.LC25:
	.string	"01100"
.LC26:
	.string	"N"
.LC27:
	.string	"01101"
.LC28:
	.string	"O"
.LC29:
	.string	"01110"
.LC30:
	.string	"P"
.LC31:
	.string	"01111"
.LC32:
	.string	"Q"
.LC33:
	.string	"10000"
.LC34:
	.string	"R"
.LC35:
	.string	"10001"
.LC36:
	.string	"S"
.LC37:
	.string	"10010"
.LC38:
	.string	"T"
.LC39:
	.string	"10011"
.LC40:
	.string	"U"
.LC41:
	.string	"10100"
.LC42:
	.string	"V"
.LC43:
	.string	"10101"
.LC44:
	.string	"W"
.LC45:
	.string	"10110"
.LC46:
	.string	"X"
.LC47:
	.string	"10111"
.LC48:
	.string	"Y"
.LC49:
	.string	"11000"
.LC50:
	.string	"Z"
.LC51:
	.string	"11001"
.LC52:
	.string	" "
.LC53:
	.string	"11010"
.LC54:
	.string	"."
.LC55:
	.string	"11011"
.LC56:
	.string	","
.LC57:
	.string	"11100"
.LC58:
	.string	"-"
.LC59:
	.string	"11101"
.LC60:
	.string	"'"
.LC61:
	.string	"11110"
.LC62:
	.string	"?"
.LC63:
	.string	"11111"
	.section	.data.rel.local,"aw"
	.align 32
	.type	input_table, @object
	.size	input_table, 512
input_table:
	.quad	.LC0
	.quad	.LC1
	.quad	.LC2
	.quad	.LC3
	.quad	.LC4
	.quad	.LC5
	.quad	.LC6
	.quad	.LC7
	.quad	.LC8
	.quad	.LC9
	.quad	.LC10
	.quad	.LC11
	.quad	.LC12
	.quad	.LC13
	.quad	.LC14
	.quad	.LC15
	.quad	.LC16
	.quad	.LC17
	.quad	.LC18
	.quad	.LC19
	.quad	.LC20
	.quad	.LC21
	.quad	.LC22
	.quad	.LC23
	.quad	.LC24
	.quad	.LC25
	.quad	.LC26
	.quad	.LC27
	.quad	.LC28
	.quad	.LC29
	.quad	.LC30
	.quad	.LC31
	.quad	.LC32
	.quad	.LC33
	.quad	.LC34
	.quad	.LC35
	.quad	.LC36
	.quad	.LC37
	.quad	.LC38
	.quad	.LC39
	.quad	.LC40
	.quad	.LC41
	.quad	.LC42
	.quad	.LC43
	.quad	.LC44
	.quad	.LC45
	.quad	.LC46
	.quad	.LC47
	.quad	.LC48
	.quad	.LC49
	.quad	.LC50
	.quad	.LC51
	.quad	.LC52
	.quad	.LC53
	.quad	.LC54
	.quad	.LC55
	.quad	.LC56
	.quad	.LC57
	.quad	.LC58
	.quad	.LC59
	.quad	.LC60
	.quad	.LC61
	.quad	.LC62
	.quad	.LC63
	.globl	output_table
	.section	.rodata
.LC64:
	.string	"101"
.LC65:
	.string	"000000"
.LC66:
	.string	"000011"
.LC67:
	.string	"10010001"
.LC68:
	.string	"010001"
.LC69:
	.string	"000001"
.LC70:
	.string	"100101"
.LC71:
	.string	"10011010"
.LC72:
	.string	"0101"
.LC73:
	.string	"0001"
.LC74:
	.string	"110"
.LC75:
	.string	"10011011"
.LC76:
	.string	"010000"
.LC77:
	.string	"0111"
.LC78:
	.string	"10011000"
.LC79:
	.string	"0110"
.LC80:
	.string	"10011001"
.LC81:
	.string	"10011110"
.LC82:
	.string	"111"
.LC83:
	.string	"10011111"
.LC84:
	.string	"1000"
.LC85:
	.string	"10011100"
.LC86:
	.string	"10011101"
.LC87:
	.string	"000010"
.LC88:
	.string	"10010010"
.LC89:
	.string	"10010011"
.LC90:
	.string	"10010000"
	.section	.data.rel.local
	.align 32
	.type	output_table, @object
	.size	output_table, 512
output_table:
	.quad	.LC64
	.quad	.LC52
	.quad	.LC65
	.quad	.LC60
	.quad	.LC66
	.quad	.LC56
	.quad	.LC67
	.quad	.LC58
	.quad	.LC68
	.quad	.LC54
	.quad	.LC69
	.quad	.LC62
	.quad	.LC70
	.quad	.LC0
	.quad	.LC71
	.quad	.LC2
	.quad	.LC72
	.quad	.LC4
	.quad	.LC73
	.quad	.LC6
	.quad	.LC74
	.quad	.LC8
	.quad	.LC19
	.quad	.LC10
	.quad	.LC75
	.quad	.LC12
	.quad	.LC76
	.quad	.LC14
	.quad	.LC77
	.quad	.LC16
	.quad	.LC78
	.quad	.LC18
	.quad	.LC79
	.quad	.LC20
	.quad	.LC9
	.quad	.LC22
	.quad	.LC80
	.quad	.LC24
	.quad	.LC81
	.quad	.LC26
	.quad	.LC11
	.quad	.LC28
	.quad	.LC82
	.quad	.LC30
	.quad	.LC83
	.quad	.LC32
	.quad	.LC84
	.quad	.LC34
	.quad	.LC13
	.quad	.LC36
	.quad	.LC15
	.quad	.LC38
	.quad	.LC85
	.quad	.LC40
	.quad	.LC86
	.quad	.LC42
	.quad	.LC87
	.quad	.LC44
	.quad	.LC88
	.quad	.LC46
	.quad	.LC89
	.quad	.LC48
	.quad	.LC90
	.quad	.LC50
	.text
	.globl	insert_to_buffer
	.type	insert_to_buffer, @function
insert_to_buffer:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movl	%esi, %eax
	movb	%al, -28(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L2
.L5:
	movl	-4(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	input_table(%rip), %rax
	movq	(%rdx,%rax), %rax
	movzbl	(%rax), %eax
	cmpb	%al, -28(%rbp)
	jne	.L3
	movl	-4(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	8+input_table(%rip), %rax
	movq	(%rdx,%rax), %rdx
	movq	-24(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	strcat@PLT
	jmp	.L4
.L3:
	addl	$1, -4(%rbp)
.L2:
	cmpl	$31, -4(%rbp)
	jle	.L5
	nop
.L4:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	insert_to_buffer, .-insert_to_buffer
	.globl	output_buffer
	.type	output_buffer, @function
output_buffer:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movl	$0, -16(%rbp)
	jmp	.L7
.L12:
	movl	-16(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	output_table(%rip), %rax
	movq	(%rdx,%rax), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movq	%rax, %rdx
	movl	-16(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rcx
	leaq	output_table(%rip), %rax
	movq	(%rcx,%rax), %rcx
	movq	-24(%rbp), %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	strncmp@PLT
	testl	%eax, %eax
	jne	.L8
	movl	-16(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	output_table(%rip), %rax
	movq	(%rdx,%rax), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -8(%rbp)
	movq	-24(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -4(%rbp)
	movl	-16(%rbp), %eax
	cltq
	salq	$4, %rax
	movq	%rax, %rdx
	leaq	8+output_table(%rip), %rax
	movq	(%rdx,%rax), %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	%eax, %edi
	call	putchar@PLT
	movl	-8(%rbp), %eax
	movl	%eax, -12(%rbp)
	jmp	.L9
.L10:
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	leaq	(%rdx,%rax), %rcx
	movl	-12(%rbp), %eax
	subl	-8(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movzbl	(%rcx), %eax
	movb	%al, (%rdx)
	addl	$1, -12(%rbp)
.L9:
	movl	-12(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jl	.L10
	movl	-4(%rbp), %eax
	subl	-8(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movb	$0, (%rax)
	movl	$1, %eax
	jmp	.L11
.L8:
	addl	$1, -16(%rbp)
.L7:
	cmpl	$31, -16(%rbp)
	jle	.L12
	movl	$0, %eax
.L11:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	output_buffer, .-output_buffer
	.globl	main
	.type	main, @function
main:
.LFB2:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	addq	$-128, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movq	$0, -112(%rbp)
	movq	$0, -104(%rbp)
	movq	$0, -96(%rbp)
	movq	$0, -88(%rbp)
	movq	$0, -80(%rbp)
	movq	$0, -72(%rbp)
	movq	$0, -64(%rbp)
	movq	$0, -56(%rbp)
	movq	$0, -48(%rbp)
	movq	$0, -40(%rbp)
	movq	$0, -32(%rbp)
	movq	$0, -24(%rbp)
	movl	$0, -16(%rbp)
	jmp	.L14
.L18:
	cmpl	$10, -116(%rbp)
	jne	.L15
	nop
.L16:
	leaq	-112(%rbp), %rax
	movq	%rax, %rdi
	call	output_buffer
	testl	%eax, %eax
	jne	.L16
	movb	$0, -112(%rbp)
	movl	$10, %edi
	call	putchar@PLT
	jmp	.L14
.L15:
	movl	-116(%rbp), %eax
	movsbl	%al, %edx
	leaq	-112(%rbp), %rax
	movl	%edx, %esi
	movq	%rax, %rdi
	call	insert_to_buffer
	nop
.L17:
	leaq	-112(%rbp), %rax
	movq	%rax, %rdi
	call	output_buffer
	testl	%eax, %eax
	jne	.L17
.L14:
	call	getchar@PLT
	movl	%eax, -116(%rbp)
	cmpl	$-1, -116(%rbp)
	jne	.L18
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L20
	call	__stack_chk_fail@PLT
.L20:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
