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<stdlib.h>
#include<math.h>
#include<string.h>

char map[71][71];
char answer[71][71][71];
int w,h;


char *secretnum(char *a,char *b)
{
	int k;
	int len1,len2;
	
	len1 = strlen(a);
	len2 = strlen(b);
	
	if(len1 > len2){
		return a;
	}else if(len1 < len2 ){
		return b;
	}else{
		for(k=0;k<len1;k++){
			if(a[k] - b[k] > 0){
				return a;
			}else if(a[k] - b[k] < 0){
				return b;
			}
		}
	}
	return a;
}

int main(void)
{
	int i,j,c;
	int len;
	char ans[71];
	
	while(1)
	{
		scanf("%d %d ",&w,&h);
		if(w==0 && h==0)break;
		
		for(i=0;i<h;i++){
			scanf("%s ",map[i]);
		}

		for(i=0;i<h;i++){
			for(j=0;j<w;j++){
				answer[i][j][0] = '\0';
				if(map[i][j] - '0' < 10 && map[i][j] - '0' >= 0){
					if(i>0)strcpy(answer[i][j],secretnum(answer[i][j],answer[i-1][j]));
					if(j>0)strcpy(answer[i][j],secretnum(answer[i][j],answer[i][j-1]));
					len = strlen(answer[i][j]);
					answer[i][j][len] = map[i][j];
					answer[i][j][len+1] = '\0';
					if(answer[i][j][0] == '0')answer[i][j][0] = '\0';
				}
			}
		}
		
		ans[0] = '\0';
		for(i=0;i<h;i++){
			for(j=0;j<w;j++){
				strcpy(ans,secretnum(ans,answer[i][j]));
			}
		}
		
		printf("%s\n",ans);
	}
	return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	map
	.bss
	.align 32
	.type	map, @object
	.size	map, 5041
map:
	.zero	5041
	.globl	answer
	.align 32
	.type	answer, @object
	.size	answer, 357911
answer:
	.zero	357911
	.globl	w
	.align 4
	.type	w, @object
	.size	w, 4
w:
	.zero	4
	.globl	h
	.align 4
	.type	h, @object
	.size	h, 4
h:
	.zero	4
	.text
	.globl	secretnum
	.type	secretnum, @function
secretnum:
.LFB6:
	.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)
	movq	%rsi, -32(%rbp)
	movq	-24(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -8(%rbp)
	movq	-32(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -4(%rbp)
	movl	-8(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jle	.L2
	movq	-24(%rbp), %rax
	jmp	.L3
.L2:
	movl	-8(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jge	.L4
	movq	-32(%rbp), %rax
	jmp	.L3
.L4:
	movl	$0, -12(%rbp)
	jmp	.L5
.L8:
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	-12(%rbp), %edx
	movslq	%edx, %rcx
	movq	-32(%rbp), %rdx
	addq	%rcx, %rdx
	movzbl	(%rdx), %edx
	movsbl	%dl, %edx
	subl	%edx, %eax
	testl	%eax, %eax
	jle	.L6
	movq	-24(%rbp), %rax
	jmp	.L3
.L6:
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	-12(%rbp), %edx
	movslq	%edx, %rcx
	movq	-32(%rbp), %rdx
	addq	%rcx, %rdx
	movzbl	(%rdx), %edx
	movsbl	%dl, %edx
	subl	%edx, %eax
	testl	%eax, %eax
	jns	.L7
	movq	-32(%rbp), %rax
	jmp	.L3
.L7:
	addl	$1, -12(%rbp)
.L5:
	movl	-12(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jl	.L8
	movq	-24(%rbp), %rax
.L3:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	secretnum, .-secretnum
	.section	.rodata
.LC0:
	.string	"%d %d "
.LC1:
	.string	"%s "
	.text
	.globl	main
	.type	main, @function
main:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$96, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
.L25:
	leaq	h(%rip), %rax
	movq	%rax, %rdx
	leaq	w(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	w(%rip), %eax
	testl	%eax, %eax
	jne	.L10
	movl	h(%rip), %eax
	testl	%eax, %eax
	je	.L29
.L10:
	movl	$0, -92(%rbp)
	jmp	.L12
.L13:
	movl	-92(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	leaq	map(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -92(%rbp)
.L12:
	movl	h(%rip), %eax
	cmpl	%eax, -92(%rbp)
	jl	.L13
	movl	$0, -92(%rbp)
	jmp	.L14
.L20:
	movl	$0, -88(%rbp)
	jmp	.L15
.L19:
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movl	-92(%rbp), %eax
	movslq	%eax, %rcx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	imulq	$5041, %rcx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movb	$0, (%rax)
	movl	-88(%rbp), %eax
	movslq	%eax, %rcx
	movl	-92(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	leaq	(%rax,%rcx), %rdx
	leaq	map(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	$57, %al
	jg	.L16
	movl	-88(%rbp), %eax
	movslq	%eax, %rcx
	movl	-92(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	leaq	(%rax,%rcx), %rdx
	leaq	map(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	$47, %al
	jle	.L16
	cmpl	$0, -92(%rbp)
	jle	.L17
	movl	-92(%rbp), %eax
	leal	-1(%rax), %ecx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movslq	%ecx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	leaq	(%rdx,%rax), %rcx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	secretnum
	movq	%rax, %rcx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	strcpy@PLT
.L17:
	cmpl	$0, -88(%rbp)
	jle	.L18
	movl	-88(%rbp), %eax
	subl	$1, %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	leaq	(%rdx,%rax), %rcx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	secretnum
	movq	%rax, %rcx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	strcpy@PLT
.L18:
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -84(%rbp)
	movl	-88(%rbp), %eax
	movslq	%eax, %rcx
	movl	-92(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	leaq	(%rax,%rcx), %rdx
	leaq	map(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %ecx
	movl	-84(%rbp), %eax
	movslq	%eax, %rsi
	movl	-92(%rbp), %eax
	cltq
	movl	-88(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rax, %rdi
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	addq	%rdi, %rax
	leaq	(%rax,%rsi), %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movb	%cl, (%rax)
	movl	-84(%rbp), %eax
	addl	$1, %eax
	movslq	%eax, %rcx
	movl	-92(%rbp), %eax
	cltq
	movl	-88(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rax, %rsi
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	addq	%rsi, %rax
	leaq	(%rax,%rcx), %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movb	$0, (%rax)
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movl	-92(%rbp), %eax
	movslq	%eax, %rcx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	imulq	$5041, %rcx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	$48, %al
	jne	.L16
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movl	-92(%rbp), %eax
	movslq	%eax, %rcx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	imulq	$5041, %rcx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movb	$0, (%rax)
.L16:
	addl	$1, -88(%rbp)
.L15:
	movl	w(%rip), %eax
	cmpl	%eax, -88(%rbp)
	jl	.L19
	addl	$1, -92(%rbp)
.L14:
	movl	h(%rip), %eax
	cmpl	%eax, -92(%rbp)
	jl	.L20
	movb	$0, -80(%rbp)
	movl	$0, -92(%rbp)
	jmp	.L21
.L24:
	movl	$0, -88(%rbp)
	jmp	.L22
.L23:
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rax, %rdx
	leaq	-80(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	secretnum
	movq	%rax, %rdx
	leaq	-80(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	strcpy@PLT
	addl	$1, -88(%rbp)
.L22:
	movl	w(%rip), %eax
	cmpl	%eax, -88(%rbp)
	jl	.L23
	addl	$1, -92(%rbp)
.L21:
	movl	h(%rip), %eax
	cmpl	%eax, -92(%rbp)
	jl	.L24
	leaq	-80(%rbp), %rax
	movq	%rax, %rdi
	call	puts@PLT
	jmp	.L25
.L29:
	nop
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L27
	call	__stack_chk_fail@PLT
.L27:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.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	secretnum
	.type	secretnum, @function
secretnum:
.LFB51:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	call	strlen@PLT
	movq	%rbx, %rdi
	movq	%rax, %rbp
	call	strlen@PLT
	cmpl	%eax, %ebp
	jg	.L2
	jl	.L5
	testl	%ebp, %ebp
	jle	.L2
	leal	-1(%rbp), %esi
	xorl	%eax, %eax
	jmp	.L3
	.p2align 4,,10
	.p2align 3
.L9:
	jne	.L5
	leaq	1(%rax), %rdx
	cmpq	%rax, %rsi
	je	.L2
	movq	%rdx, %rax
.L3:
	movsbl	(%r12,%rax), %edx
	movsbl	(%rbx,%rax), %ecx
	subl	%ecx, %edx
	testl	%edx, %edx
	jle	.L9
.L2:
	movq	%r12, %rax
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L5:
	.cfi_restore_state
	movq	%rbx, %r12
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	movq	%r12, %rax
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE51:
	.size	secretnum, .-secretnum
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d %d "
.LC1:
	.string	"%s "
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB52:
	.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
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$152, %rsp
	.cfi_def_cfa_offset 208
	movq	%fs:40, %rax
	movq	%rax, 136(%rsp)
	xorl	%eax, %eax
.L31:
	leaq	.LC0(%rip), %rdi
	xorl	%eax, %eax
	leaq	h(%rip), %rdx
	leaq	w(%rip), %rsi
	call	__isoc99_scanf@PLT
	movl	h(%rip), %eax
	movl	%eax, %edi
	orl	w(%rip), %edi
	je	.L11
	testl	%eax, %eax
	jle	.L14
	leaq	map(%rip), %r12
	xorl	%ebx, %ebx
	movq	%r12, %rbp
	.p2align 4,,10
	.p2align 3
.L13:
	movq	%rbp, %rsi
	leaq	.LC1(%rip), %rdi
	xorl	%eax, %eax
	addl	$1, %ebx
	call	__isoc99_scanf@PLT
	movl	h(%rip), %eax
	addq	$71, %rbp
	cmpl	%ebx, %eax
	jg	.L13
	movl	%eax, 56(%rsp)
	testl	%eax, %eax
	jle	.L14
	movslq	w(%rip), %rax
	movl	%eax, 60(%rsp)
	testl	%eax, %eax
	jle	.L14
	leaq	answer(%rip), %rdi
	movl	$0, 20(%rsp)
	movq	%rdi, 48(%rsp)
	movq	%rax, 8(%rsp)
	.p2align 4,,10
	.p2align 3
.L15:
	movslq	20(%rsp), %rax
	movq	48(%rsp), %r13
	xorl	%r15d, %r15d
	movq	%r15, %r14
	imulq	$5041, %rax, %rax
	movq	%r13, %r15
	movq	%rax, 24(%rsp)
	jmp	.L25
	.p2align 4,,10
	.p2align 3
.L18:
	testq	%r14, %r14
	jne	.L61
.L21:
	movq	%r13, %rdi
	call	strlen@PLT
	movq	%rax, %rsi
	movslq	%eax, %rdi
	leaq	(%rbx,%rbx,8), %rax
	salq	$3, %rax
	addl	$1, %esi
	subq	%rbx, %rax
	leaq	answer(%rip), %rbx
	addq	24(%rsp), %rax
	movslq	%esi, %rsi
	addq	%rbx, %rax
	movb	%bpl, (%rax,%rdi)
	movb	$0, (%rax,%rsi)
	cmpb	$48, (%r15)
	jne	.L17
	movb	$0, (%r15)
	.p2align 4,,10
	.p2align 3
.L17:
	addq	$1, %r14
	addq	$71, %r15
	addq	$71, %r13
	cmpq	8(%rsp), %r14
	je	.L62
.L25:
	movzbl	(%r12,%r14), %ebp
	movb	$0, (%r15)
	movslq	%r14d, %rbx
	leal	-48(%rbp), %eax
	cmpb	$9, %al
	ja	.L17
	movl	20(%rsp), %eax
	testl	%eax, %eax
	je	.L18
	leaq	-5041(%r13), %r9
	movq	%r13, %rdi
	movq	%r9, 40(%rsp)
	call	strlen@PLT
	movq	40(%rsp), %rdi
	movq	%rax, 32(%rsp)
	call	strlen@PLT
	movq	32(%rsp), %rsi
	cmpl	%eax, %esi
	jg	.L37
	movq	40(%rsp), %r9
	jl	.L19
	testl	%esi, %esi
	je	.L37
	leal	-1(%rsi), %r10d
	xorl	%eax, %eax
	jmp	.L20
	.p2align 4,,10
	.p2align 3
.L63:
	jne	.L19
	leaq	1(%rax), %rdx
	cmpq	%r10, %rax
	je	.L37
	movq	%rdx, %rax
.L20:
	movsbl	0(%r13,%rax), %edx
	movsbl	(%r9,%rax), %ecx
	subl	%ecx, %edx
	testl	%edx, %edx
	jle	.L63
.L37:
	movq	%r13, %r9
.L19:
	movq	%r9, %rsi
	movq	%r13, %rdi
	call	strcpy@PLT
	testq	%r14, %r14
	je	.L21
.L61:
	leaq	-71(%r13), %r9
	movq	%r13, %rdi
	movq	%r9, 40(%rsp)
	call	strlen@PLT
	movq	40(%rsp), %rdi
	movq	%rax, 32(%rsp)
	call	strlen@PLT
	movq	32(%rsp), %rsi
	cmpl	%eax, %esi
	jg	.L41
	movq	40(%rsp), %r9
	jl	.L22
	testl	%esi, %esi
	je	.L41
	leal	-1(%rsi), %r10d
	xorl	%eax, %eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L64:
	jne	.L22
	leaq	1(%rax), %rdx
	cmpq	%r10, %rax
	je	.L41
	movq	%rdx, %rax
.L23:
	movsbl	0(%r13,%rax), %edx
	movsbl	(%r9,%rax), %ecx
	subl	%ecx, %edx
	testl	%edx, %edx
	jle	.L64
.L41:
	movq	%r13, %r9
.L22:
	movq	%r9, %rsi
	movq	%r13, %rdi
	call	strcpy@PLT
	jmp	.L21
	.p2align 4,,10
	.p2align 3
.L62:
	addl	$1, 20(%rsp)
	addq	$71, %r12
	movl	20(%rsp), %eax
	addq	$5041, 48(%rsp)
	cmpl	%eax, 56(%rsp)
	jne	.L15
	movl	60(%rsp), %eax
	movslq	56(%rsp), %rbp
	movb	$0, 64(%rsp)
	xorl	%r12d, %r12d
	leaq	64(%rsp), %r15
	subl	$1, %eax
	leaq	(%rax,%rax,8), %rbx
	salq	$3, %rbx
	subq	%rax, %rbx
	leaq	71+answer(%rip), %rax
	addq	%rax, %rbx
	imulq	$5041, %rbp, %rax
	movq	%rax, 8(%rsp)
	.p2align 4,,10
	.p2align 3
.L33:
	leaq	answer(%rip), %rax
	leaq	(%rax,%r12), %r13
	.p2align 4,,10
	.p2align 3
.L29:
	movq	%r15, %rdi
	movq	%r13, %rbp
	call	strlen@PLT
	movq	%r13, %rdi
	movq	%rax, %r14
	call	strlen@PLT
	cmpl	%eax, %r14d
	jg	.L45
	jl	.L27
	testl	%r14d, %r14d
	je	.L45
	xorl	%edx, %edx
	jmp	.L28
	.p2align 4,,10
	.p2align 3
.L65:
	jne	.L27
	addq	$1, %rdx
	cmpq	%rdx, %r14
	je	.L45
.L28:
	movsbl	(%r15,%rdx), %ecx
	movsbl	0(%r13,%rdx), %eax
	subl	%eax, %ecx
	testl	%ecx, %ecx
	jle	.L65
.L45:
	movq	%r15, %rbp
.L27:
	movl	$71, %edx
	movq	%rbp, %rsi
	movq	%r15, %rdi
	addq	$71, %r13
	call	__strcpy_chk@PLT
	cmpq	%rbx, %r13
	jne	.L29
	addq	$5041, %rbx
	addq	$5041, %r12
	cmpq	8(%rsp), %r12
	jne	.L33
	movq	%r15, %rdi
	call	puts@PLT
	jmp	.L31
.L14:
	leaq	64(%rsp), %r15
	movb	$0, 64(%rsp)
	movq	%r15, %rdi
	call	puts@PLT
	jmp	.L31
.L11:
	movq	136(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L66
	addq	$152, %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
.L66:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE52:
	.size	main, .-main
	.globl	h
	.bss
	.align 4
	.type	h, @object
	.size	h, 4
h:
	.zero	4
	.globl	w
	.align 4
	.type	w, @object
	.size	w, 4
w:
	.zero	4
	.globl	answer
	.align 32
	.type	answer, @object
	.size	answer, 357911
answer:
	.zero	357911
	.globl	map
	.align 32
	.type	map, @object
	.size	map, 5041
map:
	.zero	5041
	.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	secretnum
	.type	secretnum, @function
secretnum:
.LFB51:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	call	strlen@PLT
	movq	%rbx, %rdi
	movq	%rax, %rbp
	call	strlen@PLT
	cmpl	%eax, %ebp
	jg	.L2
	jl	.L5
	testl	%ebp, %ebp
	jle	.L2
	leal	-1(%rbp), %esi
	xorl	%eax, %eax
	jmp	.L3
	.p2align 4,,10
	.p2align 3
.L9:
	jne	.L5
	leaq	1(%rax), %rdx
	cmpq	%rax, %rsi
	je	.L2
	movq	%rdx, %rax
.L3:
	movsbl	(%r12,%rax), %edx
	movsbl	(%rbx,%rax), %ecx
	subl	%ecx, %edx
	testl	%edx, %edx
	jle	.L9
.L2:
	movq	%r12, %rax
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L5:
	.cfi_restore_state
	movq	%rbx, %r12
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	movq	%r12, %rax
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE51:
	.size	secretnum, .-secretnum
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d %d "
.LC1:
	.string	"%s "
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB52:
	.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
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$152, %rsp
	.cfi_def_cfa_offset 208
	movq	%fs:40, %rax
	movq	%rax, 136(%rsp)
	xorl	%eax, %eax
.L31:
	leaq	.LC0(%rip), %rdi
	xorl	%eax, %eax
	leaq	h(%rip), %rdx
	leaq	w(%rip), %rsi
	call	__isoc99_scanf@PLT
	movl	h(%rip), %eax
	movl	%eax, %edi
	orl	w(%rip), %edi
	je	.L11
	testl	%eax, %eax
	jle	.L14
	leaq	map(%rip), %r12
	xorl	%ebx, %ebx
	movq	%r12, %rbp
	.p2align 4,,10
	.p2align 3
.L13:
	movq	%rbp, %rsi
	leaq	.LC1(%rip), %rdi
	xorl	%eax, %eax
	addl	$1, %ebx
	call	__isoc99_scanf@PLT
	movl	h(%rip), %eax
	addq	$71, %rbp
	cmpl	%ebx, %eax
	jg	.L13
	movl	%eax, 56(%rsp)
	testl	%eax, %eax
	jle	.L14
	movslq	w(%rip), %rax
	movl	%eax, 60(%rsp)
	testl	%eax, %eax
	jle	.L14
	leaq	answer(%rip), %rdi
	movl	$0, 20(%rsp)
	movq	%rdi, 48(%rsp)
	movq	%rax, 8(%rsp)
	.p2align 4,,10
	.p2align 3
.L15:
	movslq	20(%rsp), %rax
	movq	48(%rsp), %r13
	xorl	%r15d, %r15d
	movq	%r15, %r14
	imulq	$5041, %rax, %rax
	movq	%r13, %r15
	movq	%rax, 24(%rsp)
	jmp	.L25
	.p2align 4,,10
	.p2align 3
.L18:
	testq	%r14, %r14
	jne	.L61
.L21:
	movq	%r13, %rdi
	call	strlen@PLT
	movq	%rax, %rsi
	movslq	%eax, %rdi
	leaq	(%rbx,%rbx,8), %rax
	salq	$3, %rax
	addl	$1, %esi
	subq	%rbx, %rax
	leaq	answer(%rip), %rbx
	addq	24(%rsp), %rax
	movslq	%esi, %rsi
	addq	%rbx, %rax
	movb	%bpl, (%rax,%rdi)
	movb	$0, (%rax,%rsi)
	cmpb	$48, (%r15)
	jne	.L17
	movb	$0, (%r15)
	.p2align 4,,10
	.p2align 3
.L17:
	addq	$1, %r14
	addq	$71, %r15
	addq	$71, %r13
	cmpq	8(%rsp), %r14
	je	.L62
.L25:
	movzbl	(%r12,%r14), %ebp
	movb	$0, (%r15)
	movslq	%r14d, %rbx
	leal	-48(%rbp), %eax
	cmpb	$9, %al
	ja	.L17
	movl	20(%rsp), %eax
	testl	%eax, %eax
	je	.L18
	leaq	-5041(%r13), %r9
	movq	%r13, %rdi
	movq	%r9, 40(%rsp)
	call	strlen@PLT
	movq	40(%rsp), %rdi
	movq	%rax, 32(%rsp)
	call	strlen@PLT
	movq	32(%rsp), %rsi
	cmpl	%eax, %esi
	jg	.L37
	movq	40(%rsp), %r9
	jl	.L19
	testl	%esi, %esi
	je	.L37
	leal	-1(%rsi), %r10d
	xorl	%eax, %eax
	jmp	.L20
	.p2align 4,,10
	.p2align 3
.L63:
	jne	.L19
	leaq	1(%rax), %rdx
	cmpq	%r10, %rax
	je	.L37
	movq	%rdx, %rax
.L20:
	movsbl	0(%r13,%rax), %edx
	movsbl	(%r9,%rax), %ecx
	subl	%ecx, %edx
	testl	%edx, %edx
	jle	.L63
.L37:
	movq	%r13, %r9
.L19:
	movq	%r9, %rsi
	movq	%r13, %rdi
	call	strcpy@PLT
	testq	%r14, %r14
	je	.L21
.L61:
	leaq	-71(%r13), %r9
	movq	%r13, %rdi
	movq	%r9, 40(%rsp)
	call	strlen@PLT
	movq	40(%rsp), %rdi
	movq	%rax, 32(%rsp)
	call	strlen@PLT
	movq	32(%rsp), %rsi
	cmpl	%eax, %esi
	jg	.L41
	movq	40(%rsp), %r9
	jl	.L22
	testl	%esi, %esi
	je	.L41
	leal	-1(%rsi), %r10d
	xorl	%eax, %eax
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L64:
	jne	.L22
	leaq	1(%rax), %rdx
	cmpq	%r10, %rax
	je	.L41
	movq	%rdx, %rax
.L23:
	movsbl	0(%r13,%rax), %edx
	movsbl	(%r9,%rax), %ecx
	subl	%ecx, %edx
	testl	%edx, %edx
	jle	.L64
.L41:
	movq	%r13, %r9
.L22:
	movq	%r9, %rsi
	movq	%r13, %rdi
	call	strcpy@PLT
	jmp	.L21
	.p2align 4,,10
	.p2align 3
.L62:
	addl	$1, 20(%rsp)
	addq	$71, %r12
	movl	20(%rsp), %eax
	addq	$5041, 48(%rsp)
	cmpl	%eax, 56(%rsp)
	jne	.L15
	movl	60(%rsp), %eax
	movslq	56(%rsp), %rbp
	movb	$0, 64(%rsp)
	xorl	%r12d, %r12d
	leaq	64(%rsp), %r15
	subl	$1, %eax
	leaq	(%rax,%rax,8), %rbx
	salq	$3, %rbx
	subq	%rax, %rbx
	leaq	71+answer(%rip), %rax
	addq	%rax, %rbx
	imulq	$5041, %rbp, %rax
	movq	%rax, 8(%rsp)
	.p2align 4,,10
	.p2align 3
.L33:
	leaq	answer(%rip), %rax
	leaq	(%rax,%r12), %r13
	.p2align 4,,10
	.p2align 3
.L29:
	movq	%r15, %rdi
	movq	%r13, %rbp
	call	strlen@PLT
	movq	%r13, %rdi
	movq	%rax, %r14
	call	strlen@PLT
	cmpl	%eax, %r14d
	jg	.L45
	jl	.L27
	testl	%r14d, %r14d
	je	.L45
	xorl	%edx, %edx
	jmp	.L28
	.p2align 4,,10
	.p2align 3
.L65:
	jne	.L27
	addq	$1, %rdx
	cmpq	%rdx, %r14
	je	.L45
.L28:
	movsbl	(%r15,%rdx), %ecx
	movsbl	0(%r13,%rdx), %eax
	subl	%eax, %ecx
	testl	%ecx, %ecx
	jle	.L65
.L45:
	movq	%r15, %rbp
.L27:
	movl	$71, %edx
	movq	%rbp, %rsi
	movq	%r15, %rdi
	addq	$71, %r13
	call	__strcpy_chk@PLT
	cmpq	%rbx, %r13
	jne	.L29
	addq	$5041, %rbx
	addq	$5041, %r12
	cmpq	8(%rsp), %r12
	jne	.L33
	movq	%r15, %rdi
	call	puts@PLT
	jmp	.L31
.L14:
	leaq	64(%rsp), %r15
	movb	$0, 64(%rsp)
	movq	%r15, %rdi
	call	puts@PLT
	jmp	.L31
.L11:
	movq	136(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L66
	addq	$152, %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
.L66:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE52:
	.size	main, .-main
	.globl	h
	.bss
	.align 4
	.type	h, @object
	.size	h, 4
h:
	.zero	4
	.globl	w
	.align 4
	.type	w, @object
	.size	w, 4
w:
	.zero	4
	.globl	answer
	.align 32
	.type	answer, @object
	.size	answer, 357911
answer:
	.zero	357911
	.globl	map
	.align 32
	.type	map, @object
	.size	map, 5041
map:
	.zero	5041
	.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<stdlib.h>
#include<math.h>
#include<string.h>

char map[71][71];
char answer[71][71][71];
int w,h;


char *secretnum(char *a,char *b)
{
	int k;
	int len1,len2;
	
	len1 = strlen(a);
	len2 = strlen(b);
	
	if(len1 > len2){
		return a;
	}else if(len1 < len2 ){
		return b;
	}else{
		for(k=0;k<len1;k++){
			if(a[k] - b[k] > 0){
				return a;
			}else if(a[k] - b[k] < 0){
				return b;
			}
		}
	}
	return a;
}

int main(void)
{
	int i,j,c;
	int len;
	char ans[71];
	
	while(1)
	{
		scanf("%d %d ",&w,&h);
		if(w==0 && h==0)break;
		
		for(i=0;i<h;i++){
			scanf("%s ",map[i]);
		}

		for(i=0;i<h;i++){
			for(j=0;j<w;j++){
				answer[i][j][0] = '\0';
				if(map[i][j] - '0' < 10 && map[i][j] - '0' >= 0){
					if(i>0)strcpy(answer[i][j],secretnum(answer[i][j],answer[i-1][j]));
					if(j>0)strcpy(answer[i][j],secretnum(answer[i][j],answer[i][j-1]));
					len = strlen(answer[i][j]);
					answer[i][j][len] = map[i][j];
					answer[i][j][len+1] = '\0';
					if(answer[i][j][0] == '0')answer[i][j][0] = '\0';
				}
			}
		}
		
		ans[0] = '\0';
		for(i=0;i<h;i++){
			for(j=0;j<w;j++){
				strcpy(ans,secretnum(ans,answer[i][j]));
			}
		}
		
		printf("%s\n",ans);
	}
	return 0;
}
7 4
9R2A993
0E314A0
8A900DE
820R037
6 7
JH03HE
ID7722
0DA1AH
30C9G5
99971A
CA7EAI
AHLBEM
20 2
HGEDBC4321987654321A
BDEDF908034265091499
0 0
 7 4
9R2A993
0E314A0
8A900DE
820R037
6 7
JI03HE
ID7722
0DA1AH
30C9G5
99971A
CA7EAI
AHLBEM
20 2
A1234567891234CBDEGH
BDEDF908034265091499
0 0
 7 4
9R2A993
0E314A0
8A900EE
820R037
6 7
JH03HE
ID7722
0DA1AH
30C9G5
99971A
CA7EAI
AHLBEM
20 2
HGEDBC4321987654321A
994190562430809FDEDB
0 0
 7 4
9R2A993
0E314A0
8A900DE
820R037
6 7
JI03HE
ID7722
0DA1AH
30C9G5
99179A
CA7EAI
AHLBEM
20 2
A1234567891234CBDEGH
BDEDF908034265091499
0 0
 7 4
9R2A993
0E314A0
8A900EE
820R037
6 7
JH03HE
ID7722
0DA1AH
30C8G5
99971A
CA7EAI
AHLBEM
20 2
HGEDBC4321987654321A
994190562430809FDEDB
0 0
 7 4
9R2A993
0E314A0
8A900DE
820703R
6 7
JI03HD
ID7722
0DA1AH
30C9G5
99179A
CB7EAI
AHLBEM
20 2
A1234567891234CBDEGH
BDEDF908034265091499
0 0
 7 4
9R9A923
0E314A0
8A900DE
820R037
6 7
JI03HE
ID7722
0DA1AH
30C9G5
99971A
CA7EAI
AHLBEM
20 2
A1234567891234CBDEGH
BDEDF908034265091499
0 0
 7 4
9R2A993
0E314A0
8AE009E
820R037
6 7
JH03HE
ID7722
0DA1AH
30C8G5
99971A
CA7EAI
AHLBEM
20 2
HGEDBC4321987654321A
994190562430809FDEDB
0 0
 7 4
9R2A993
0E314A0
8AE009E
820R037
6 7
JH03HE
ID7722
0DA1AH
30C8G5
9A9719
CA7EAI
AHLBEM
20 2
HGEDBC4321987654321A
994190562430809FDEDB
0 0
 7 4
9R2A993
0E314A0
8A900DE
820R037
6 7
JI03HD
2277DI
0DA1AH
30C9G5
99179A
CB7E@I
AHLBEM
20 2
A1234567891234CBDEGH
BDEDF908034265091499
0 0

23900037
771971
908034265091499
 23900037
771971
12345908034265091499
 23900037
771971
994190562430809
 23900037
771979
12345908034265091499
 23900037
771871
994190562430809
 908820703
771979
12345908034265091499
 93900037
771971
12345908034265091499
 23140937
771871
994190562430809
 23140937
7718719
994190562430809
 23900037
22771979
12345908034265091499

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<stdlib.h>
#include<math.h>
#include<string.h>

char map[71][71];
char answer[71][71][71];
int w,h;


char *secretnum(char *a,char *b)
{
	int k;
	int len1,len2;
	
	len1 = strlen(a);
	len2 = strlen(b);
	
	if(len1 > len2){
		return a;
	}else if(len1 < len2 ){
		return b;
	}else{
		for(k=0;k<len1;k++){
			if(a[k] - b[k] > 0){
				return a;
			}else if(a[k] - b[k] < 0){
				return b;
			}
		}
	}
	return a;
}

int main(void)
{
	int i,j,c;
	int len;
	char ans[71];
	
	while(1)
	{
		scanf("%d %d ",&w,&h);
		if(w==0 && h==0)break;
		
		for(i=0;i<h;i++){
			scanf("%s ",map[i]);
		}

		for(i=0;i<h;i++){
			for(j=0;j<w;j++){
				answer[i][j][0] = '\0';
				if(map[i][j] - '0' < 10 && map[i][j] - '0' >= 0){
					if(i>0)strcpy(answer[i][j],secretnum(answer[i][j],answer[i-1][j]));
					if(j>0)strcpy(answer[i][j],secretnum(answer[i][j],answer[i][j-1]));
					len = strlen(answer[i][j]);
					answer[i][j][len] = map[i][j];
					answer[i][j][len+1] = '\0';
					if(answer[i][j][0] == '0')answer[i][j][0] = '\0';
				}
			}
		}
		
		ans[0] = '\0';
		for(i=0;i<h;i++){
			for(j=0;j<w;j++){
				strcpy(ans,secretnum(ans,answer[i][j]));
			}
		}
		
		printf("%s\n",ans);
	}
	return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	map
	.bss
	.align 32
	.type	map, @object
	.size	map, 5041
map:
	.zero	5041
	.globl	answer
	.align 32
	.type	answer, @object
	.size	answer, 357911
answer:
	.zero	357911
	.globl	w
	.align 4
	.type	w, @object
	.size	w, 4
w:
	.zero	4
	.globl	h
	.align 4
	.type	h, @object
	.size	h, 4
h:
	.zero	4
	.text
	.globl	secretnum
	.type	secretnum, @function
secretnum:
.LFB6:
	.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)
	movq	%rsi, -32(%rbp)
	movq	-24(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -8(%rbp)
	movq	-32(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -4(%rbp)
	movl	-8(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jle	.L2
	movq	-24(%rbp), %rax
	jmp	.L3
.L2:
	movl	-8(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jge	.L4
	movq	-32(%rbp), %rax
	jmp	.L3
.L4:
	movl	$0, -12(%rbp)
	jmp	.L5
.L8:
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	-12(%rbp), %edx
	movslq	%edx, %rcx
	movq	-32(%rbp), %rdx
	addq	%rcx, %rdx
	movzbl	(%rdx), %edx
	movsbl	%dl, %edx
	subl	%edx, %eax
	testl	%eax, %eax
	jle	.L6
	movq	-24(%rbp), %rax
	jmp	.L3
.L6:
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	-12(%rbp), %edx
	movslq	%edx, %rcx
	movq	-32(%rbp), %rdx
	addq	%rcx, %rdx
	movzbl	(%rdx), %edx
	movsbl	%dl, %edx
	subl	%edx, %eax
	testl	%eax, %eax
	jns	.L7
	movq	-32(%rbp), %rax
	jmp	.L3
.L7:
	addl	$1, -12(%rbp)
.L5:
	movl	-12(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jl	.L8
	movq	-24(%rbp), %rax
.L3:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	secretnum, .-secretnum
	.section	.rodata
.LC0:
	.string	"%d %d "
.LC1:
	.string	"%s "
	.text
	.globl	main
	.type	main, @function
main:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$96, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
.L25:
	leaq	h(%rip), %rax
	movq	%rax, %rdx
	leaq	w(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	w(%rip), %eax
	testl	%eax, %eax
	jne	.L10
	movl	h(%rip), %eax
	testl	%eax, %eax
	je	.L29
.L10:
	movl	$0, -92(%rbp)
	jmp	.L12
.L13:
	movl	-92(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	leaq	map(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -92(%rbp)
.L12:
	movl	h(%rip), %eax
	cmpl	%eax, -92(%rbp)
	jl	.L13
	movl	$0, -92(%rbp)
	jmp	.L14
.L20:
	movl	$0, -88(%rbp)
	jmp	.L15
.L19:
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movl	-92(%rbp), %eax
	movslq	%eax, %rcx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	imulq	$5041, %rcx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movb	$0, (%rax)
	movl	-88(%rbp), %eax
	movslq	%eax, %rcx
	movl	-92(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	leaq	(%rax,%rcx), %rdx
	leaq	map(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	$57, %al
	jg	.L16
	movl	-88(%rbp), %eax
	movslq	%eax, %rcx
	movl	-92(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	leaq	(%rax,%rcx), %rdx
	leaq	map(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	$47, %al
	jle	.L16
	cmpl	$0, -92(%rbp)
	jle	.L17
	movl	-92(%rbp), %eax
	leal	-1(%rax), %ecx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movslq	%ecx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	leaq	(%rdx,%rax), %rcx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	secretnum
	movq	%rax, %rcx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	strcpy@PLT
.L17:
	cmpl	$0, -88(%rbp)
	jle	.L18
	movl	-88(%rbp), %eax
	subl	$1, %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	leaq	(%rdx,%rax), %rcx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	secretnum
	movq	%rax, %rcx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	strcpy@PLT
.L18:
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -84(%rbp)
	movl	-88(%rbp), %eax
	movslq	%eax, %rcx
	movl	-92(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	leaq	(%rax,%rcx), %rdx
	leaq	map(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %ecx
	movl	-84(%rbp), %eax
	movslq	%eax, %rsi
	movl	-92(%rbp), %eax
	cltq
	movl	-88(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rax, %rdi
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	addq	%rdi, %rax
	leaq	(%rax,%rsi), %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movb	%cl, (%rax)
	movl	-84(%rbp), %eax
	addl	$1, %eax
	movslq	%eax, %rcx
	movl	-92(%rbp), %eax
	cltq
	movl	-88(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rax, %rsi
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	addq	%rsi, %rax
	leaq	(%rax,%rcx), %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movb	$0, (%rax)
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movl	-92(%rbp), %eax
	movslq	%eax, %rcx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	imulq	$5041, %rcx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	$48, %al
	jne	.L16
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movl	-92(%rbp), %eax
	movslq	%eax, %rcx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	imulq	$5041, %rcx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movb	$0, (%rax)
.L16:
	addl	$1, -88(%rbp)
.L15:
	movl	w(%rip), %eax
	cmpl	%eax, -88(%rbp)
	jl	.L19
	addl	$1, -92(%rbp)
.L14:
	movl	h(%rip), %eax
	cmpl	%eax, -92(%rbp)
	jl	.L20
	movb	$0, -80(%rbp)
	movl	$0, -92(%rbp)
	jmp	.L21
.L24:
	movl	$0, -88(%rbp)
	jmp	.L22
.L23:
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rax, %rdx
	leaq	-80(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	secretnum
	movq	%rax, %rdx
	leaq	-80(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	strcpy@PLT
	addl	$1, -88(%rbp)
.L22:
	movl	w(%rip), %eax
	cmpl	%eax, -88(%rbp)
	jl	.L23
	addl	$1, -92(%rbp)
.L21:
	movl	h(%rip), %eax
	cmpl	%eax, -92(%rbp)
	jl	.L24
	leaq	-80(%rbp), %rax
	movq	%rax, %rdi
	call	puts@PLT
	jmp	.L25
.L29:
	nop
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L27
	call	__stack_chk_fail@PLT
.L27:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.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	map
	.bss
	.align 32
	.type	map, @object
	.size	map, 5041
map:
	.zero	5041
	.globl	answer
	.align 32
	.type	answer, @object
	.size	answer, 357911
answer:
	.zero	357911
	.globl	w
	.align 4
	.type	w, @object
	.size	w, 4
w:
	.zero	4
	.globl	h
	.align 4
	.type	h, @object
	.size	h, 4
h:
	.zero	4
	.text
	.globl	secretnum
	.type	secretnum, @function
secretnum:
.LFB6:
	.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)
	movq	%rsi, -32(%rbp)
	movq	-24(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -8(%rbp)
	movq	-32(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -4(%rbp)
	movl	-8(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jle	.L2
	movq	-24(%rbp), %rax
	jmp	.L3
.L2:
	movl	-8(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jge	.L4
	movq	-32(%rbp), %rax
	jmp	.L3
.L4:
	movl	$0, -12(%rbp)
	jmp	.L5
.L8:
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	-12(%rbp), %edx
	movslq	%edx, %rcx
	movq	-32(%rbp), %rdx
	addq	%rcx, %rdx
	movzbl	(%rdx), %edx
	movsbl	%dl, %edx
	subl	%edx, %eax
	testl	%eax, %eax
	jle	.L6
	movq	-24(%rbp), %rax
	jmp	.L3
.L6:
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	-12(%rbp), %edx
	movslq	%edx, %rcx
	movq	-32(%rbp), %rdx
	addq	%rcx, %rdx
	movzbl	(%rdx), %edx
	movsbl	%dl, %edx
	subl	%edx, %eax
	testl	%eax, %eax
	jns	.L7
	movq	-32(%rbp), %rax
	jmp	.L3
.L7:
	addl	$1, -12(%rbp)
.L5:
	movl	-12(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jl	.L8
	movq	-24(%rbp), %rax
.L3:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	secretnum, .-secretnum
	.section	.rodata
.LC0:
	.string	"%d %d "
.LC1:
	.string	"%s "
	.text
	.globl	main
	.type	main, @function
main:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$96, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
.L25:
	leaq	h(%rip), %rax
	movq	%rax, %rdx
	leaq	w(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	w(%rip), %eax
	testl	%eax, %eax
	jne	.L10
	movl	h(%rip), %eax
	testl	%eax, %eax
	je	.L29
.L10:
	movl	$0, -92(%rbp)
	jmp	.L12
.L13:
	movl	-92(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	leaq	map(%rip), %rdx
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -92(%rbp)
.L12:
	movl	h(%rip), %eax
	cmpl	%eax, -92(%rbp)
	jl	.L13
	movl	$0, -92(%rbp)
	jmp	.L14
.L20:
	movl	$0, -88(%rbp)
	jmp	.L15
.L19:
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movl	-92(%rbp), %eax
	movslq	%eax, %rcx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	imulq	$5041, %rcx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movb	$0, (%rax)
	movl	-88(%rbp), %eax
	movslq	%eax, %rcx
	movl	-92(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	leaq	(%rax,%rcx), %rdx
	leaq	map(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	$57, %al
	jg	.L16
	movl	-88(%rbp), %eax
	movslq	%eax, %rcx
	movl	-92(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	leaq	(%rax,%rcx), %rdx
	leaq	map(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	$47, %al
	jle	.L16
	cmpl	$0, -92(%rbp)
	jle	.L17
	movl	-92(%rbp), %eax
	leal	-1(%rax), %ecx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movslq	%ecx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	leaq	(%rdx,%rax), %rcx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	secretnum
	movq	%rax, %rcx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	strcpy@PLT
.L17:
	cmpl	$0, -88(%rbp)
	jle	.L18
	movl	-88(%rbp), %eax
	subl	$1, %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	leaq	(%rdx,%rax), %rcx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	secretnum
	movq	%rax, %rcx
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rcx, %rsi
	movq	%rax, %rdi
	call	strcpy@PLT
.L18:
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movq	%rax, %rdi
	call	strlen@PLT
	movl	%eax, -84(%rbp)
	movl	-88(%rbp), %eax
	movslq	%eax, %rcx
	movl	-92(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	leaq	(%rax,%rcx), %rdx
	leaq	map(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %ecx
	movl	-84(%rbp), %eax
	movslq	%eax, %rsi
	movl	-92(%rbp), %eax
	cltq
	movl	-88(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rax, %rdi
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	addq	%rdi, %rax
	leaq	(%rax,%rsi), %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movb	%cl, (%rax)
	movl	-84(%rbp), %eax
	addl	$1, %eax
	movslq	%eax, %rcx
	movl	-92(%rbp), %eax
	cltq
	movl	-88(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rax, %rsi
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	addq	%rsi, %rax
	leaq	(%rax,%rcx), %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movb	$0, (%rax)
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movl	-92(%rbp), %eax
	movslq	%eax, %rcx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	imulq	$5041, %rcx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	$48, %al
	jne	.L16
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movl	-92(%rbp), %eax
	movslq	%eax, %rcx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	imulq	$5041, %rcx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rdx, %rax
	movb	$0, (%rax)
.L16:
	addl	$1, -88(%rbp)
.L15:
	movl	w(%rip), %eax
	cmpl	%eax, -88(%rbp)
	jl	.L19
	addl	$1, -92(%rbp)
.L14:
	movl	h(%rip), %eax
	cmpl	%eax, -92(%rbp)
	jl	.L20
	movb	$0, -80(%rbp)
	movl	$0, -92(%rbp)
	jmp	.L21
.L24:
	movl	$0, -88(%rbp)
	jmp	.L22
.L23:
	movl	-88(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$3, %rax
	addq	%rdx, %rax
	salq	$3, %rax
	subq	%rdx, %rax
	movl	-92(%rbp), %edx
	movslq	%edx, %rdx
	imulq	$5041, %rdx, %rdx
	addq	%rax, %rdx
	leaq	answer(%rip), %rax
	addq	%rax, %rdx
	leaq	-80(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	secretnum
	movq	%rax, %rdx
	leaq	-80(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	strcpy@PLT
	addl	$1, -88(%rbp)
.L22:
	movl	w(%rip), %eax
	cmpl	%eax, -88(%rbp)
	jl	.L23
	addl	$1, -92(%rbp)
.L21:
	movl	h(%rip), %eax
	cmpl	%eax, -92(%rbp)
	jl	.L24
	leaq	-80(%rbp), %rax
	movq	%rax, %rdi
	call	puts@PLT
	jmp	.L25
.L29:
	nop
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L27
	call	__stack_chk_fail@PLT
.L27:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.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:
