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

```c
// AOJ Volume 1 Problem 0151 Grid

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

int max_len;
int len;

void get_maxlen(int x)
{
    if (x == 0){
        if (len > max_len){
            max_len = len;
        }
        
//        printf("[%d]", len);
        
        len = 0;
        return;
    }
    len++;
}


int main(void)
{
    int map[255][255];
    char in[256];
    int n;
    int x, y;
    int d;
    
    while (1){
        scanf("%d", &n);
        if (n == 0){
            break;
        }

        max_len = 0;
        
        for (y = 0; y < n; y++){
            scanf("%s", in);
            for (x = 0; x < n; x++){
                if (in[x] == '0'){
                    map[y][x] = 0;
                }
                else {
                    map[y][x] = 1;
                }
            }
        }

        // ¡
        for (y = 0; y < n; y++){
            get_maxlen(0);
            for (x = 0; x < n; x++){
                get_maxlen(map[y][x]);
            }
            get_maxlen(0);
        }
        
        // c
        for (x = 0; x < n; x++){
            get_maxlen(0);
            for (y = 0; y < n; y++){
                get_maxlen(map[y][x]);
            }
            get_maxlen(0);
        }
        
        
        // EÎß
        for (y = n - 1; y >= 0; y--){
            d = 0;
            x = 0;
            get_maxlen(0);
            do {
                get_maxlen(map[y + d][x + d]);
                d++;
            } while (x + d < n && y + d < n);
            get_maxlen(0);
        }
        for (x = 1; x < n; x++){
            d = 0;
            y = 0;
            get_maxlen(0);
            do {
                get_maxlen(map[y + d][x + d]);
                d++;
            } while (x + d < n && y + d < n);
            get_maxlen(0);
        }
        
        // ¶Îß
        for (x = 0; x < n; x++){
            d = 0;
            y = 0;
            get_maxlen(0);
            do {
                get_maxlen(map[y + d][x - d]);
                d++;
            } while (x - d >= 0 && y + d < n);
            get_maxlen(0);
        }
        for (y = 1; y < n; y++){
            d = 0;
            x = n - 1;
            get_maxlen(0);
            do {
                get_maxlen(map[y + d][x - d]);
                d++;
            } while (x - d < n && y + d < n);
            get_maxlen(0);
        }

        printf("%d\n", max_len);
    }
    return (0);
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	max_len
	.bss
	.align 4
	.type	max_len, @object
	.size	max_len, 4
max_len:
	.zero	4
	.globl	len
	.align 4
	.type	len, @object
	.size	len, 4
len:
	.zero	4
	.text
	.globl	get_maxlen
	.type	get_maxlen, @function
get_maxlen:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -4(%rbp)
	cmpl	$0, -4(%rbp)
	jne	.L2
	movl	len(%rip), %edx
	movl	max_len(%rip), %eax
	cmpl	%eax, %edx
	jle	.L3
	movl	len(%rip), %eax
	movl	%eax, max_len(%rip)
.L3:
	movl	$0, len(%rip)
	jmp	.L1
.L2:
	movl	len(%rip), %eax
	addl	$1, %eax
	movl	%eax, len(%rip)
.L1:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	get_maxlen, .-get_maxlen
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
.LC2:
	.string	"%d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	leaq	-258048(%rsp), %r11
.LPSRL0:
	subq	$4096, %rsp
	orq	$0, (%rsp)
	cmpq	%r11, %rsp
	jne	.LPSRL0
	subq	$2352, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
.L38:
	leaq	-260400(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	-260400(%rbp), %eax
	testl	%eax, %eax
	je	.L42
	movl	$0, max_len(%rip)
	movl	$0, -260392(%rbp)
	jmp	.L8
.L13:
	leaq	-272(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -260396(%rbp)
	jmp	.L9
.L12:
	movl	-260396(%rbp), %eax
	cltq
	movzbl	-272(%rbp,%rax), %eax
	cmpb	$48, %al
	jne	.L10
	movl	-260396(%rbp), %eax
	movslq	%eax, %rcx
	movl	-260392(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	$0, -260384(%rbp,%rax,4)
	jmp	.L11
.L10:
	movl	-260396(%rbp), %eax
	movslq	%eax, %rcx
	movl	-260392(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	$1, -260384(%rbp,%rax,4)
.L11:
	addl	$1, -260396(%rbp)
.L9:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L12
	addl	$1, -260392(%rbp)
.L8:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260392(%rbp)
	jl	.L13
	movl	$0, -260392(%rbp)
	jmp	.L14
.L17:
	movl	$0, %edi
	call	get_maxlen
	movl	$0, -260396(%rbp)
	jmp	.L15
.L16:
	movl	-260396(%rbp), %eax
	movslq	%eax, %rcx
	movl	-260392(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260396(%rbp)
.L15:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L16
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260392(%rbp)
.L14:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260392(%rbp)
	jl	.L17
	movl	$0, -260396(%rbp)
	jmp	.L18
.L21:
	movl	$0, %edi
	call	get_maxlen
	movl	$0, -260392(%rbp)
	jmp	.L19
.L20:
	movl	-260396(%rbp), %eax
	movslq	%eax, %rcx
	movl	-260392(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260392(%rbp)
.L19:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260392(%rbp)
	jl	.L20
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260396(%rbp)
.L18:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L21
	movl	-260400(%rbp), %eax
	subl	$1, %eax
	movl	%eax, -260392(%rbp)
	jmp	.L22
.L25:
	movl	$0, -260388(%rbp)
	movl	$0, -260396(%rbp)
	movl	$0, %edi
	call	get_maxlen
.L24:
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%edx, %eax
	movl	-260396(%rbp), %ecx
	movl	-260388(%rbp), %edx
	addl	%ecx, %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260388(%rbp)
	movl	-260396(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jge	.L23
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jl	.L24
.L23:
	movl	$0, %edi
	call	get_maxlen
	subl	$1, -260392(%rbp)
.L22:
	cmpl	$0, -260392(%rbp)
	jns	.L25
	movl	$1, -260396(%rbp)
	jmp	.L26
.L29:
	movl	$0, -260388(%rbp)
	movl	$0, -260392(%rbp)
	movl	$0, %edi
	call	get_maxlen
.L28:
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%edx, %eax
	movl	-260396(%rbp), %ecx
	movl	-260388(%rbp), %edx
	addl	%ecx, %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260388(%rbp)
	movl	-260396(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jge	.L27
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jl	.L28
.L27:
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260396(%rbp)
.L26:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L29
	movl	$0, -260396(%rbp)
	jmp	.L30
.L33:
	movl	$0, -260388(%rbp)
	movl	$0, -260392(%rbp)
	movl	$0, %edi
	call	get_maxlen
.L32:
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260396(%rbp), %eax
	subl	-260388(%rbp), %eax
	movslq	%eax, %rcx
	movslq	%edx, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260388(%rbp)
	movl	-260396(%rbp), %eax
	subl	-260388(%rbp), %eax
	testl	%eax, %eax
	js	.L31
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jl	.L32
.L31:
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260396(%rbp)
.L30:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L33
	movl	$1, -260392(%rbp)
	jmp	.L34
.L37:
	movl	$0, -260388(%rbp)
	movl	-260400(%rbp), %eax
	subl	$1, %eax
	movl	%eax, -260396(%rbp)
	movl	$0, %edi
	call	get_maxlen
.L36:
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260396(%rbp), %eax
	subl	-260388(%rbp), %eax
	movslq	%eax, %rcx
	movslq	%edx, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260388(%rbp)
	movl	-260396(%rbp), %eax
	subl	-260388(%rbp), %eax
	movl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jge	.L35
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jl	.L36
.L35:
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260392(%rbp)
.L34:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260392(%rbp)
	jl	.L37
	movl	max_len(%rip), %eax
	movl	%eax, %esi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	jmp	.L38
.L42:
	nop
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L40
	call	__stack_chk_fail@PLT
.L40:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.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	get_maxlen
	.type	get_maxlen, @function
get_maxlen:
.LFB35:
	.cfi_startproc
	endbr64
	movl	len(%rip), %eax
	testl	%edi, %edi
	je	.L6
	leal	1(%rax), %edi
.L4:
	movl	%edi, len(%rip)
	ret
	.p2align 4,,10
	.p2align 3
.L6:
	cmpl	max_len(%rip), %eax
	jle	.L4
	movl	%eax, max_len(%rip)
	movl	%edi, len(%rip)
	ret
	.cfi_endproc
.LFE35:
	.size	get_maxlen, .-get_maxlen
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
.LC4:
	.string	"%d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.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
	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
	leaq	-258048(%rsp), %r11
	.cfi_def_cfa 11, 258104
.LPSRL0:
	subq	$4096, %rsp
	orq	$0, (%rsp)
	cmpq	%r11, %rsp
	jne	.LPSRL0
	.cfi_def_cfa_register 7
	subq	$2376, %rsp
	.cfi_def_cfa_offset 260480
	leaq	.LC1(%rip), %rbx
	movq	%fs:40, %rax
	movq	%rax, 260408(%rsp)
	xorl	%eax, %eax
	leaq	28(%rsp), %rax
	movq	%rax, 8(%rsp)
	.p2align 4,,10
	.p2align 3
.L62:
	movq	8(%rsp), %rsi
	leaq	.LC0(%rip), %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movl	28(%rsp), %eax
	testl	%eax, %eax
	je	.L8
	movl	$0, max_len(%rip)
	jle	.L69
	leaq	32(%rsp), %rbp
	xorl	%r15d, %r15d
	leaq	260144(%rsp), %r12
	movq	%rbp, %r14
	jmp	.L13
	.p2align 4,,10
	.p2align 3
.L153:
	cmpl	$14, %r13d
	jbe	.L70
	movdqa	%xmm4, %xmm2
	pxor	%xmm0, %xmm0
	movl	%eax, %edx
	pcmpeqb	260144(%rsp), %xmm2
	shrl	$4, %edx
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 16(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, (%r14)
	movups	%xmm5, 32(%r14)
	movups	%xmm2, 48(%r14)
	cmpl	$1, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260160(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 80(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 64(%r14)
	movups	%xmm5, 96(%r14)
	movups	%xmm2, 112(%r14)
	cmpl	$2, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260176(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 144(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 128(%r14)
	movups	%xmm5, 160(%r14)
	movups	%xmm2, 176(%r14)
	cmpl	$3, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260192(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 208(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 192(%r14)
	movups	%xmm5, 224(%r14)
	movups	%xmm2, 240(%r14)
	cmpl	$4, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260208(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 272(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 256(%r14)
	movups	%xmm5, 288(%r14)
	movups	%xmm2, 304(%r14)
	cmpl	$5, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260224(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 336(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 320(%r14)
	movups	%xmm5, 352(%r14)
	movups	%xmm2, 368(%r14)
	cmpl	$6, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260240(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 400(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 384(%r14)
	movups	%xmm5, 416(%r14)
	movups	%xmm2, 432(%r14)
	cmpl	$7, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260256(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 464(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 448(%r14)
	movups	%xmm5, 480(%r14)
	movups	%xmm2, 496(%r14)
	cmpl	$8, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260272(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 528(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 512(%r14)
	movups	%xmm5, 544(%r14)
	movups	%xmm2, 560(%r14)
	cmpl	$9, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260288(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 592(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 576(%r14)
	movups	%xmm5, 608(%r14)
	movups	%xmm2, 624(%r14)
	cmpl	$10, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260304(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 656(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 640(%r14)
	movups	%xmm5, 672(%r14)
	movups	%xmm2, 688(%r14)
	cmpl	$11, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260320(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 720(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 704(%r14)
	movups	%xmm5, 736(%r14)
	movups	%xmm2, 752(%r14)
	cmpl	$12, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260336(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 784(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 768(%r14)
	movups	%xmm5, 800(%r14)
	movups	%xmm2, 816(%r14)
	cmpl	$13, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260352(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 848(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 832(%r14)
	movups	%xmm5, 864(%r14)
	movups	%xmm2, 880(%r14)
	cmpl	$14, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260368(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 912(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 896(%r14)
	movups	%xmm5, 928(%r14)
	movups	%xmm2, 944(%r14)
	.p2align 4,,10
	.p2align 3
.L12:
	movl	%eax, %edx
	andl	$-16, %edx
	testb	$15, %al
	je	.L14
.L11:
	movslq	%r15d, %rdi
	movslq	%edx, %rsi
	movq	%rdi, %rcx
	salq	$8, %rcx
	subq	%rdi, %rcx
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	1(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	2(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	3(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	4(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	5(%rdx), %esi
	cmpl	%eax, %esi
	jge	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	6(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	7(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	8(%rdx), %esi
	cmpl	%eax, %esi
	jge	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	9(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	addq	%rsi, %rcx
	cmpb	$48, 260144(%rsp,%rsi)
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%rcx,4)
	leal	10(%rdx), %ecx
	cmpl	%ecx, %eax
	jle	.L14
	movslq	%ecx, %rsi
	movq	%rdi, %rcx
	salq	$8, %rcx
	subq	%rdi, %rcx
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %rdi
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%rdi,4)
	leal	11(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %rdi
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%rdi,4)
	leal	12(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %rdi
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%rdi,4)
	leal	13(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %rdi
	setne	%sil
	addl	$14, %edx
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%rdi,4)
	cmpl	%edx, %eax
	jle	.L14
	movslq	%edx, %rdx
	addq	%rdx, %rcx
	cmpb	$48, 260144(%rsp,%rdx)
	setne	%dl
	movzbl	%dl, %edx
	movl	%edx, 32(%rsp,%rcx,4)
	.p2align 4,,10
	.p2align 3
.L14:
	addl	$1, %r15d
	addq	$1020, %r14
	cmpl	%r15d, %eax
	jle	.L10
.L13:
	xorl	%eax, %eax
	movq	%r12, %rsi
	movq	%rbx, %rdi
	call	__isoc99_scanf@PLT
	movl	28(%rsp), %eax
	pxor	%xmm1, %xmm1
	movdqa	.LC2(%rip), %xmm4
	movdqa	.LC3(%rip), %xmm3
	testl	%eax, %eax
	leal	-1(%rax), %r13d
	jg	.L153
.L10:
	movl	max_len(%rip), %edx
	testl	%eax, %eax
	jle	.L40
	movl	%r13d, %r12d
	movq	$-4, %r11
	movl	len(%rip), %r8d
	xorl	%r10d, %r10d
	movq	%r12, %rsi
	leaq	0(,%r12,4), %rcx
	salq	$10, %rsi
	leaq	4(%rbp,%rcx), %rdi
	subq	%rcx, %r11
	leaq	1024(%rbp,%rsi), %r9
	movl	%edx, %esi
	.p2align 4,,10
	.p2align 3
.L21:
	cmpl	%esi, %r8d
	jg	.L71
	movl	%esi, %r8d
.L15:
	leaq	(%r11,%rdi), %rcx
	xorl	%esi, %esi
	jmp	.L19
	.p2align 4,,10
	.p2align 3
.L16:
	addq	$4, %rcx
	addl	$1, %esi
	cmpq	%rdi, %rcx
	je	.L158
.L19:
	movl	(%rcx), %r14d
	testl	%r14d, %r14d
	jne	.L16
	cmpl	%r8d, %esi
	jle	.L17
	movl	%esi, %r8d
	movl	$1, %r10d
.L17:
	addq	$4, %rcx
	xorl	%esi, %esi
	cmpq	%rdi, %rcx
	jne	.L19
.L158:
	cmpl	%r8d, %esi
	jg	.L73
	movl	%r8d, %esi
.L20:
	addq	$1020, %rdi
	xorl	%r8d, %r8d
	cmpq	%r9, %rdi
	jne	.L21
	testb	%r10b, %r10b
	je	.L74
	movl	%esi, max_len(%rip)
.L22:
	movq	%r12, %rdx
	movq	$-1020, %r11
	movl	%esi, %edi
	xorl	%r10d, %r10d
	salq	$8, %rdx
	xorl	%r14d, %r14d
	subq	%r12, %rdx
	movl	$1, %r12d
	salq	$2, %rdx
	leaq	1020(%rbp,%rdx), %rcx
	subq	%rdx, %r11
	.p2align 4,,10
	.p2align 3
.L29:
	testl	%edi, %edi
	leaq	(%r11,%rcx), %rdx
	cmovs	%r14d, %edi
	cmovs	%r12d, %r10d
	movl	%edi, %r8d
	xorl	%edi, %edi
	jmp	.L27
	.p2align 4,,10
	.p2align 3
.L24:
	addq	$1020, %rdx
	addl	$1, %edi
	cmpq	%rdx, %rcx
	je	.L159
.L27:
	movl	(%rdx), %r15d
	testl	%r15d, %r15d
	jne	.L24
	cmpl	%r8d, %edi
	jle	.L25
	movl	%edi, %r8d
	movl	$1, %r10d
.L25:
	addq	$1020, %rdx
	xorl	%edi, %edi
	cmpq	%rdx, %rcx
	jne	.L27
.L159:
	cmpl	%edi, %r8d
	jl	.L77
	movl	%r8d, %edi
.L28:
	addq	$4, %rcx
	cmpq	%r9, %rcx
	jne	.L29
	testb	%r10b, %r10b
	je	.L93
	movl	%edi, max_len(%rip)
.L67:
	movslq	%r13d, %rcx
	movl	%r13d, %r9d
	xorl	%r11d, %r11d
	xorl	%r15d, %r15d
	movq	%rcx, %rdx
	movl	$1, %r14d
	salq	$8, %rdx
	subq	%rcx, %rdx
	leaq	0(%rbp,%rdx,4), %r12
	movl	%edi, %edx
	.p2align 4,,10
	.p2align 3
.L38:
	testl	%edx, %edx
	movq	%r12, %rsi
	cmovs	%r15d, %edx
	cmovs	%r14d, %r11d
	xorl	%ecx, %ecx
	movl	%edx, %r10d
	xorl	%edx, %edx
	jmp	.L36
	.p2align 4,,10
	.p2align 3
.L32:
	addl	$1, %ecx
	addl	$1, %edx
	cmpl	%ecx, %eax
	jle	.L35
.L160:
	leal	(%rcx,%r9), %r8d
	addq	$1024, %rsi
	cmpl	%r8d, %eax
	jle	.L35
.L36:
	movl	(%rsi), %r8d
	testl	%r8d, %r8d
	jne	.L32
	cmpl	%r10d, %edx
	jg	.L79
	movl	%r10d, %edx
.L33:
	addl	$1, %ecx
	movl	%edx, %r10d
	xorl	%edx, %edx
	cmpl	%ecx, %eax
	jg	.L160
	.p2align 4,,10
	.p2align 3
.L35:
	cmpl	%r10d, %edx
	jg	.L80
	movl	%r10d, %edx
.L37:
	subl	$1, %r9d
	subq	$1020, %r12
	cmpl	$-1, %r9d
	jne	.L38
	movl	$0, len(%rip)
	testb	%r11b, %r11b
	je	.L81
	movl	%edx, max_len(%rip)
.L39:
	cmpl	$1, %eax
	jle	.L40
	movl	len(%rip), %r10d
	leaq	36(%rsp), %r11
	movl	%edx, %r8d
	xorl	%r12d, %r12d
	movl	$1, %r9d
	.p2align 4,,10
	.p2align 3
.L47:
	cmpl	%r8d, %r10d
	jg	.L82
	movl	%r8d, %r10d
.L41:
	movq	%r11, %rdi
	xorl	%r8d, %r8d
	xorl	%ecx, %ecx
	jmp	.L45
	.p2align 4,,10
	.p2align 3
.L42:
	addl	$1, %r8d
.L44:
	addl	$1, %ecx
	addq	$1024, %rdi
	leal	(%rcx,%r9), %esi
	cmpl	%ecx, %esi
	cmovl	%ecx, %esi
	cmpl	%esi, %eax
	jle	.L161
.L45:
	movl	(%rdi), %r15d
	testl	%r15d, %r15d
	jne	.L42
	cmpl	%r10d, %r8d
	jg	.L83
	movl	%r10d, %r8d
.L43:
	movl	%r8d, %r10d
	xorl	%r8d, %r8d
	jmp	.L44
	.p2align 4,,10
	.p2align 3
.L79:
	movl	$1, %r11d
	jmp	.L33
	.p2align 4,,10
	.p2align 3
.L83:
	movl	$1, %r12d
	jmp	.L43
	.p2align 4,,10
	.p2align 3
.L161:
	cmpl	%r10d, %r8d
	jg	.L84
	movl	%r10d, %r8d
.L46:
	addl	$1, %r9d
	addq	$4, %r11
	xorl	%r10d, %r10d
	cmpl	%r9d, %eax
	jne	.L47
	testb	%r12b, %r12b
	je	.L85
	movl	%r8d, max_len(%rip)
.L48:
	movq	%rbp, %r11
	movl	%r8d, %edx
	xorl	%r12d, %r12d
	xorl	%r9d, %r9d
	.p2align 4,,10
	.p2align 3
.L55:
	cmpl	%r10d, %edx
	jl	.L86
	movl	%edx, %r10d
.L49:
	movq	%r11, %rdi
	xorl	%edx, %edx
	xorl	%esi, %esi
	jmp	.L53
	.p2align 4,,10
	.p2align 3
.L50:
	addl	$1, %edx
.L52:
	addl	$1, %esi
	movl	%r9d, %ecx
	subl	%esi, %ecx
	notl	%ecx
	shrl	$31, %ecx
	cmpl	%esi, %eax
	setg	%r14b
	addq	$1016, %rdi
	andb	%cl, %r14b
	je	.L162
.L53:
	movl	(%rdi), %r14d
	testl	%r14d, %r14d
	jne	.L50
	cmpl	%edx, %r10d
	jge	.L51
	movl	%edx, %r10d
	movl	$1, %r12d
.L51:
	xorl	%edx, %edx
	jmp	.L52
	.p2align 4,,10
	.p2align 3
.L162:
	cmpl	%edx, %r10d
	jl	.L88
	movl	%r10d, %edx
.L54:
	addl	$1, %r9d
	addq	$4, %r11
	xorl	%r10d, %r10d
	cmpl	%eax, %r9d
	jl	.L55
	movl	$0, len(%rip)
	testb	%r12b, %r12b
	je	.L89
	movl	%edx, max_len(%rip)
.L56:
	cmpl	$1, %eax
	jle	.L57
	movslq	%r13d, %r13
	movl	%edx, %ecx
	movl	$1, %r9d
	movl	$1, %r11d
	leaq	1020(%rbp,%r13,4), %r10
	xorl	%ebp, %ebp
	.p2align 4,,10
	.p2align 3
.L61:
	testl	%ecx, %ecx
	movl	%r9d, %edi
	movq	%r10, %rsi
	cmovs	%ebp, %ecx
	cmovs	%r11d, %r14d
	movl	%ecx, %r8d
	xorl	%ecx, %ecx
	jmp	.L59
	.p2align 4,,10
	.p2align 3
.L63:
	addl	$1, %edi
	addl	$1, %ecx
	addq	$1016, %rsi
	cmpl	%edi, %eax
	jle	.L163
.L59:
	movl	(%rsi), %r12d
	testl	%r12d, %r12d
	jne	.L63
	cmpl	%ecx, %r8d
	jl	.L92
	movl	%r8d, %ecx
.L64:
	addl	$1, %edi
	movl	%ecx, %r8d
	addq	$1016, %rsi
	xorl	%ecx, %ecx
	cmpl	%edi, %eax
	jg	.L59
.L163:
	cmpl	%ecx, %r8d
	jl	.L91
	movl	%r8d, %ecx
.L60:
	addl	$1, %r9d
	addq	$1020, %r10
	cmpl	%eax, %r9d
	jne	.L61
	testb	%r14b, %r14b
	je	.L57
	movl	%ecx, max_len(%rip)
	movl	%ecx, %edx
.L57:
	leaq	.LC4(%rip), %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	jmp	.L62
	.p2align 4,,10
	.p2align 3
.L92:
	movl	$1, %r14d
	jmp	.L64
	.p2align 4,,10
	.p2align 3
.L91:
	movl	$1, %r14d
	jmp	.L60
	.p2align 4,,10
	.p2align 3
.L88:
	movl	$1, %r12d
	jmp	.L54
	.p2align 4,,10
	.p2align 3
.L84:
	movl	$1, %r12d
	jmp	.L46
	.p2align 4,,10
	.p2align 3
.L86:
	movl	$1, %r12d
	jmp	.L49
	.p2align 4,,10
	.p2align 3
.L82:
	movl	$1, %r12d
	jmp	.L41
	.p2align 4,,10
	.p2align 3
.L80:
	movl	$1, %r11d
	jmp	.L37
	.p2align 4,,10
	.p2align 3
.L77:
	movl	$1, %r10d
	jmp	.L28
	.p2align 4,,10
	.p2align 3
.L73:
	movl	$1, %r10d
	jmp	.L20
	.p2align 4,,10
	.p2align 3
.L71:
	movl	$1, %r10d
	jmp	.L15
.L70:
	xorl	%edx, %edx
	jmp	.L11
.L74:
	movl	%edx, %esi
	jmp	.L22
.L81:
	movl	%edi, %edx
	jmp	.L39
.L93:
	movl	%esi, %edi
	jmp	.L67
.L89:
	movl	%r8d, %edx
	jmp	.L56
.L85:
	movl	%edx, %r8d
	xorl	%r10d, %r10d
	jmp	.L48
.L8:
	movq	260408(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L164
	addq	$260424, %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
.L69:
	.cfi_restore_state
	xorl	%edx, %edx
	leal	-1(%rax), %r13d
.L40:
	cmpl	$1, %eax
	jne	.L57
	movl	len(%rip), %r10d
	movl	%edx, %r8d
	leaq	32(%rsp), %rbp
	jmp	.L48
.L164:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE36:
	.size	main, .-main
	.globl	len
	.bss
	.align 4
	.type	len, @object
	.size	len, 4
len:
	.zero	4
	.globl	max_len
	.align 4
	.type	max_len, @object
	.size	max_len, 4
max_len:
	.zero	4
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC2:
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.align 16
.LC3:
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.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	get_maxlen
	.type	get_maxlen, @function
get_maxlen:
.LFB35:
	.cfi_startproc
	endbr64
	movl	len(%rip), %eax
	testl	%edi, %edi
	je	.L6
	leal	1(%rax), %edi
.L4:
	movl	%edi, len(%rip)
	ret
	.p2align 4,,10
	.p2align 3
.L6:
	cmpl	max_len(%rip), %eax
	jle	.L4
	movl	%eax, max_len(%rip)
	movl	%edi, len(%rip)
	ret
	.cfi_endproc
.LFE35:
	.size	get_maxlen, .-get_maxlen
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
.LC4:
	.string	"%d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.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
	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
	leaq	-258048(%rsp), %r11
	.cfi_def_cfa 11, 258104
.LPSRL0:
	subq	$4096, %rsp
	orq	$0, (%rsp)
	cmpq	%r11, %rsp
	jne	.LPSRL0
	.cfi_def_cfa_register 7
	subq	$2376, %rsp
	.cfi_def_cfa_offset 260480
	leaq	.LC1(%rip), %rbx
	movq	%fs:40, %rax
	movq	%rax, 260408(%rsp)
	xorl	%eax, %eax
	leaq	28(%rsp), %rax
	movq	%rax, 8(%rsp)
	.p2align 4,,10
	.p2align 3
.L62:
	movq	8(%rsp), %rsi
	leaq	.LC0(%rip), %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movl	28(%rsp), %eax
	testl	%eax, %eax
	je	.L8
	movl	$0, max_len(%rip)
	jle	.L69
	leaq	32(%rsp), %rbp
	xorl	%r15d, %r15d
	leaq	260144(%rsp), %r12
	movq	%rbp, %r14
	jmp	.L13
	.p2align 4,,10
	.p2align 3
.L153:
	cmpl	$14, %r13d
	jbe	.L70
	movdqa	%xmm4, %xmm2
	pxor	%xmm0, %xmm0
	movl	%eax, %edx
	pcmpeqb	260144(%rsp), %xmm2
	shrl	$4, %edx
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 16(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, (%r14)
	movups	%xmm5, 32(%r14)
	movups	%xmm2, 48(%r14)
	cmpl	$1, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260160(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 80(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 64(%r14)
	movups	%xmm5, 96(%r14)
	movups	%xmm2, 112(%r14)
	cmpl	$2, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260176(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 144(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 128(%r14)
	movups	%xmm5, 160(%r14)
	movups	%xmm2, 176(%r14)
	cmpl	$3, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260192(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 208(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 192(%r14)
	movups	%xmm5, 224(%r14)
	movups	%xmm2, 240(%r14)
	cmpl	$4, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260208(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 272(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 256(%r14)
	movups	%xmm5, 288(%r14)
	movups	%xmm2, 304(%r14)
	cmpl	$5, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260224(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 336(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 320(%r14)
	movups	%xmm5, 352(%r14)
	movups	%xmm2, 368(%r14)
	cmpl	$6, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260240(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 400(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 384(%r14)
	movups	%xmm5, 416(%r14)
	movups	%xmm2, 432(%r14)
	cmpl	$7, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260256(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 464(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 448(%r14)
	movups	%xmm5, 480(%r14)
	movups	%xmm2, 496(%r14)
	cmpl	$8, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260272(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 528(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 512(%r14)
	movups	%xmm5, 544(%r14)
	movups	%xmm2, 560(%r14)
	cmpl	$9, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260288(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 592(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 576(%r14)
	movups	%xmm5, 608(%r14)
	movups	%xmm2, 624(%r14)
	cmpl	$10, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260304(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 656(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 640(%r14)
	movups	%xmm5, 672(%r14)
	movups	%xmm2, 688(%r14)
	cmpl	$11, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260320(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 720(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 704(%r14)
	movups	%xmm5, 736(%r14)
	movups	%xmm2, 752(%r14)
	cmpl	$12, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260336(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 784(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 768(%r14)
	movups	%xmm5, 800(%r14)
	movups	%xmm2, 816(%r14)
	cmpl	$13, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260352(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 848(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 832(%r14)
	movups	%xmm5, 864(%r14)
	movups	%xmm2, 880(%r14)
	cmpl	$14, %edx
	je	.L12
	movdqa	%xmm4, %xmm2
	pcmpeqb	260368(%rsp), %xmm2
	pandn	%xmm3, %xmm2
	movdqa	%xmm2, %xmm5
	punpckhbw	%xmm1, %xmm2
	punpcklbw	%xmm1, %xmm5
	movdqa	%xmm5, %xmm6
	punpckhwd	%xmm0, %xmm5
	movups	%xmm5, 912(%r14)
	movdqa	%xmm2, %xmm5
	punpcklwd	%xmm0, %xmm6
	punpckhwd	%xmm0, %xmm2
	punpcklwd	%xmm0, %xmm5
	movups	%xmm6, 896(%r14)
	movups	%xmm5, 928(%r14)
	movups	%xmm2, 944(%r14)
	.p2align 4,,10
	.p2align 3
.L12:
	movl	%eax, %edx
	andl	$-16, %edx
	testb	$15, %al
	je	.L14
.L11:
	movslq	%r15d, %rdi
	movslq	%edx, %rsi
	movq	%rdi, %rcx
	salq	$8, %rcx
	subq	%rdi, %rcx
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	1(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	2(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	3(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	4(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	5(%rdx), %esi
	cmpl	%eax, %esi
	jge	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	6(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	7(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	8(%rdx), %esi
	cmpl	%eax, %esi
	jge	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %r8
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%r8,4)
	leal	9(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	addq	%rsi, %rcx
	cmpb	$48, 260144(%rsp,%rsi)
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%rcx,4)
	leal	10(%rdx), %ecx
	cmpl	%ecx, %eax
	jle	.L14
	movslq	%ecx, %rsi
	movq	%rdi, %rcx
	salq	$8, %rcx
	subq	%rdi, %rcx
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %rdi
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%rdi,4)
	leal	11(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %rdi
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%rdi,4)
	leal	12(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %rdi
	setne	%sil
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%rdi,4)
	leal	13(%rdx), %esi
	cmpl	%esi, %eax
	jle	.L14
	movslq	%esi, %rsi
	cmpb	$48, 260144(%rsp,%rsi)
	leaq	(%rcx,%rsi), %rdi
	setne	%sil
	addl	$14, %edx
	movzbl	%sil, %esi
	movl	%esi, 32(%rsp,%rdi,4)
	cmpl	%edx, %eax
	jle	.L14
	movslq	%edx, %rdx
	addq	%rdx, %rcx
	cmpb	$48, 260144(%rsp,%rdx)
	setne	%dl
	movzbl	%dl, %edx
	movl	%edx, 32(%rsp,%rcx,4)
	.p2align 4,,10
	.p2align 3
.L14:
	addl	$1, %r15d
	addq	$1020, %r14
	cmpl	%r15d, %eax
	jle	.L10
.L13:
	xorl	%eax, %eax
	movq	%r12, %rsi
	movq	%rbx, %rdi
	call	__isoc99_scanf@PLT
	movl	28(%rsp), %eax
	pxor	%xmm1, %xmm1
	movdqa	.LC2(%rip), %xmm4
	movdqa	.LC3(%rip), %xmm3
	testl	%eax, %eax
	leal	-1(%rax), %r13d
	jg	.L153
.L10:
	movl	max_len(%rip), %edx
	testl	%eax, %eax
	jle	.L40
	movl	%r13d, %r12d
	movq	$-4, %r11
	movl	len(%rip), %r8d
	xorl	%r10d, %r10d
	movq	%r12, %rsi
	leaq	0(,%r12,4), %rcx
	salq	$10, %rsi
	leaq	4(%rbp,%rcx), %rdi
	subq	%rcx, %r11
	leaq	1024(%rbp,%rsi), %r9
	movl	%edx, %esi
	.p2align 4,,10
	.p2align 3
.L21:
	cmpl	%esi, %r8d
	jg	.L71
	movl	%esi, %r8d
.L15:
	leaq	(%r11,%rdi), %rcx
	xorl	%esi, %esi
	jmp	.L19
	.p2align 4,,10
	.p2align 3
.L16:
	addq	$4, %rcx
	addl	$1, %esi
	cmpq	%rdi, %rcx
	je	.L158
.L19:
	movl	(%rcx), %r14d
	testl	%r14d, %r14d
	jne	.L16
	cmpl	%r8d, %esi
	jle	.L17
	movl	%esi, %r8d
	movl	$1, %r10d
.L17:
	addq	$4, %rcx
	xorl	%esi, %esi
	cmpq	%rdi, %rcx
	jne	.L19
.L158:
	cmpl	%r8d, %esi
	jg	.L73
	movl	%r8d, %esi
.L20:
	addq	$1020, %rdi
	xorl	%r8d, %r8d
	cmpq	%r9, %rdi
	jne	.L21
	testb	%r10b, %r10b
	je	.L74
	movl	%esi, max_len(%rip)
.L22:
	movq	%r12, %rdx
	movq	$-1020, %r11
	movl	%esi, %edi
	xorl	%r10d, %r10d
	salq	$8, %rdx
	xorl	%r14d, %r14d
	subq	%r12, %rdx
	movl	$1, %r12d
	salq	$2, %rdx
	leaq	1020(%rbp,%rdx), %rcx
	subq	%rdx, %r11
	.p2align 4,,10
	.p2align 3
.L29:
	testl	%edi, %edi
	leaq	(%r11,%rcx), %rdx
	cmovs	%r14d, %edi
	cmovs	%r12d, %r10d
	movl	%edi, %r8d
	xorl	%edi, %edi
	jmp	.L27
	.p2align 4,,10
	.p2align 3
.L24:
	addq	$1020, %rdx
	addl	$1, %edi
	cmpq	%rdx, %rcx
	je	.L159
.L27:
	movl	(%rdx), %r15d
	testl	%r15d, %r15d
	jne	.L24
	cmpl	%r8d, %edi
	jle	.L25
	movl	%edi, %r8d
	movl	$1, %r10d
.L25:
	addq	$1020, %rdx
	xorl	%edi, %edi
	cmpq	%rdx, %rcx
	jne	.L27
.L159:
	cmpl	%edi, %r8d
	jl	.L77
	movl	%r8d, %edi
.L28:
	addq	$4, %rcx
	cmpq	%r9, %rcx
	jne	.L29
	testb	%r10b, %r10b
	je	.L93
	movl	%edi, max_len(%rip)
.L67:
	movslq	%r13d, %rcx
	movl	%r13d, %r9d
	xorl	%r11d, %r11d
	xorl	%r15d, %r15d
	movq	%rcx, %rdx
	movl	$1, %r14d
	salq	$8, %rdx
	subq	%rcx, %rdx
	leaq	0(%rbp,%rdx,4), %r12
	movl	%edi, %edx
	.p2align 4,,10
	.p2align 3
.L38:
	testl	%edx, %edx
	movq	%r12, %rsi
	cmovs	%r15d, %edx
	cmovs	%r14d, %r11d
	xorl	%ecx, %ecx
	movl	%edx, %r10d
	xorl	%edx, %edx
	jmp	.L36
	.p2align 4,,10
	.p2align 3
.L32:
	addl	$1, %ecx
	addl	$1, %edx
	cmpl	%ecx, %eax
	jle	.L35
.L160:
	leal	(%rcx,%r9), %r8d
	addq	$1024, %rsi
	cmpl	%r8d, %eax
	jle	.L35
.L36:
	movl	(%rsi), %r8d
	testl	%r8d, %r8d
	jne	.L32
	cmpl	%r10d, %edx
	jg	.L79
	movl	%r10d, %edx
.L33:
	addl	$1, %ecx
	movl	%edx, %r10d
	xorl	%edx, %edx
	cmpl	%ecx, %eax
	jg	.L160
	.p2align 4,,10
	.p2align 3
.L35:
	cmpl	%r10d, %edx
	jg	.L80
	movl	%r10d, %edx
.L37:
	subl	$1, %r9d
	subq	$1020, %r12
	cmpl	$-1, %r9d
	jne	.L38
	movl	$0, len(%rip)
	testb	%r11b, %r11b
	je	.L81
	movl	%edx, max_len(%rip)
.L39:
	cmpl	$1, %eax
	jle	.L40
	movl	len(%rip), %r10d
	leaq	36(%rsp), %r11
	movl	%edx, %r8d
	xorl	%r12d, %r12d
	movl	$1, %r9d
	.p2align 4,,10
	.p2align 3
.L47:
	cmpl	%r8d, %r10d
	jg	.L82
	movl	%r8d, %r10d
.L41:
	movq	%r11, %rdi
	xorl	%r8d, %r8d
	xorl	%ecx, %ecx
	jmp	.L45
	.p2align 4,,10
	.p2align 3
.L42:
	addl	$1, %r8d
.L44:
	addl	$1, %ecx
	addq	$1024, %rdi
	leal	(%rcx,%r9), %esi
	cmpl	%ecx, %esi
	cmovl	%ecx, %esi
	cmpl	%esi, %eax
	jle	.L161
.L45:
	movl	(%rdi), %r15d
	testl	%r15d, %r15d
	jne	.L42
	cmpl	%r10d, %r8d
	jg	.L83
	movl	%r10d, %r8d
.L43:
	movl	%r8d, %r10d
	xorl	%r8d, %r8d
	jmp	.L44
	.p2align 4,,10
	.p2align 3
.L79:
	movl	$1, %r11d
	jmp	.L33
	.p2align 4,,10
	.p2align 3
.L83:
	movl	$1, %r12d
	jmp	.L43
	.p2align 4,,10
	.p2align 3
.L161:
	cmpl	%r10d, %r8d
	jg	.L84
	movl	%r10d, %r8d
.L46:
	addl	$1, %r9d
	addq	$4, %r11
	xorl	%r10d, %r10d
	cmpl	%r9d, %eax
	jne	.L47
	testb	%r12b, %r12b
	je	.L85
	movl	%r8d, max_len(%rip)
.L48:
	movq	%rbp, %r11
	movl	%r8d, %edx
	xorl	%r12d, %r12d
	xorl	%r9d, %r9d
	.p2align 4,,10
	.p2align 3
.L55:
	cmpl	%r10d, %edx
	jl	.L86
	movl	%edx, %r10d
.L49:
	movq	%r11, %rdi
	xorl	%edx, %edx
	xorl	%esi, %esi
	jmp	.L53
	.p2align 4,,10
	.p2align 3
.L50:
	addl	$1, %edx
.L52:
	addl	$1, %esi
	movl	%r9d, %ecx
	subl	%esi, %ecx
	notl	%ecx
	shrl	$31, %ecx
	cmpl	%esi, %eax
	setg	%r14b
	addq	$1016, %rdi
	andb	%cl, %r14b
	je	.L162
.L53:
	movl	(%rdi), %r14d
	testl	%r14d, %r14d
	jne	.L50
	cmpl	%edx, %r10d
	jge	.L51
	movl	%edx, %r10d
	movl	$1, %r12d
.L51:
	xorl	%edx, %edx
	jmp	.L52
	.p2align 4,,10
	.p2align 3
.L162:
	cmpl	%edx, %r10d
	jl	.L88
	movl	%r10d, %edx
.L54:
	addl	$1, %r9d
	addq	$4, %r11
	xorl	%r10d, %r10d
	cmpl	%eax, %r9d
	jl	.L55
	movl	$0, len(%rip)
	testb	%r12b, %r12b
	je	.L89
	movl	%edx, max_len(%rip)
.L56:
	cmpl	$1, %eax
	jle	.L57
	movslq	%r13d, %r13
	movl	%edx, %ecx
	movl	$1, %r9d
	movl	$1, %r11d
	leaq	1020(%rbp,%r13,4), %r10
	xorl	%ebp, %ebp
	.p2align 4,,10
	.p2align 3
.L61:
	testl	%ecx, %ecx
	movl	%r9d, %edi
	movq	%r10, %rsi
	cmovs	%ebp, %ecx
	cmovs	%r11d, %r14d
	movl	%ecx, %r8d
	xorl	%ecx, %ecx
	jmp	.L59
	.p2align 4,,10
	.p2align 3
.L63:
	addl	$1, %edi
	addl	$1, %ecx
	addq	$1016, %rsi
	cmpl	%edi, %eax
	jle	.L163
.L59:
	movl	(%rsi), %r12d
	testl	%r12d, %r12d
	jne	.L63
	cmpl	%ecx, %r8d
	jl	.L92
	movl	%r8d, %ecx
.L64:
	addl	$1, %edi
	movl	%ecx, %r8d
	addq	$1016, %rsi
	xorl	%ecx, %ecx
	cmpl	%edi, %eax
	jg	.L59
.L163:
	cmpl	%ecx, %r8d
	jl	.L91
	movl	%r8d, %ecx
.L60:
	addl	$1, %r9d
	addq	$1020, %r10
	cmpl	%eax, %r9d
	jne	.L61
	testb	%r14b, %r14b
	je	.L57
	movl	%ecx, max_len(%rip)
	movl	%ecx, %edx
.L57:
	leaq	.LC4(%rip), %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	jmp	.L62
	.p2align 4,,10
	.p2align 3
.L92:
	movl	$1, %r14d
	jmp	.L64
	.p2align 4,,10
	.p2align 3
.L91:
	movl	$1, %r14d
	jmp	.L60
	.p2align 4,,10
	.p2align 3
.L88:
	movl	$1, %r12d
	jmp	.L54
	.p2align 4,,10
	.p2align 3
.L84:
	movl	$1, %r12d
	jmp	.L46
	.p2align 4,,10
	.p2align 3
.L86:
	movl	$1, %r12d
	jmp	.L49
	.p2align 4,,10
	.p2align 3
.L82:
	movl	$1, %r12d
	jmp	.L41
	.p2align 4,,10
	.p2align 3
.L80:
	movl	$1, %r11d
	jmp	.L37
	.p2align 4,,10
	.p2align 3
.L77:
	movl	$1, %r10d
	jmp	.L28
	.p2align 4,,10
	.p2align 3
.L73:
	movl	$1, %r10d
	jmp	.L20
	.p2align 4,,10
	.p2align 3
.L71:
	movl	$1, %r10d
	jmp	.L15
.L70:
	xorl	%edx, %edx
	jmp	.L11
.L74:
	movl	%edx, %esi
	jmp	.L22
.L81:
	movl	%edi, %edx
	jmp	.L39
.L93:
	movl	%esi, %edi
	jmp	.L67
.L89:
	movl	%r8d, %edx
	jmp	.L56
.L85:
	movl	%edx, %r8d
	xorl	%r10d, %r10d
	jmp	.L48
.L8:
	movq	260408(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L164
	addq	$260424, %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
.L69:
	.cfi_restore_state
	xorl	%edx, %edx
	leal	-1(%rax), %r13d
.L40:
	cmpl	$1, %eax
	jne	.L57
	movl	len(%rip), %r10d
	movl	%edx, %r8d
	leaq	32(%rsp), %rbp
	jmp	.L48
.L164:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE36:
	.size	main, .-main
	.globl	len
	.bss
	.align 4
	.type	len, @object
	.size	len, 4
len:
	.zero	4
	.globl	max_len
	.align 4
	.type	max_len, @object
	.size	max_len, 4
max_len:
	.zero	4
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC2:
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.byte	48
	.align 16
.LC3:
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.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:

// AOJ Volume 1 Problem 0151 Grid

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

int max_len;
int len;

void get_maxlen(int x)
{
    if (x == 0){
        if (len > max_len){
            max_len = len;
        }
        
//        printf("[%d]", len);
        
        len = 0;
        return;
    }
    len++;
}


int main(void)
{
    int map[255][255];
    char in[256];
    int n;
    int x, y;
    int d;
    
    while (1){
        scanf("%d", &n);
        if (n == 0){
            break;
        }

        max_len = 0;
        
        for (y = 0; y < n; y++){
            scanf("%s", in);
            for (x = 0; x < n; x++){
                if (in[x] == '0'){
                    map[y][x] = 0;
                }
                else {
                    map[y][x] = 1;
                }
            }
        }

        // ¡
        for (y = 0; y < n; y++){
            get_maxlen(0);
            for (x = 0; x < n; x++){
                get_maxlen(map[y][x]);
            }
            get_maxlen(0);
        }
        
        // c
        for (x = 0; x < n; x++){
            get_maxlen(0);
            for (y = 0; y < n; y++){
                get_maxlen(map[y][x]);
            }
            get_maxlen(0);
        }
        
        
        // EÎß
        for (y = n - 1; y >= 0; y--){
            d = 0;
            x = 0;
            get_maxlen(0);
            do {
                get_maxlen(map[y + d][x + d]);
                d++;
            } while (x + d < n && y + d < n);
            get_maxlen(0);
        }
        for (x = 1; x < n; x++){
            d = 0;
            y = 0;
            get_maxlen(0);
            do {
                get_maxlen(map[y + d][x + d]);
                d++;
            } while (x + d < n && y + d < n);
            get_maxlen(0);
        }
        
        // ¶Îß
        for (x = 0; x < n; x++){
            d = 0;
            y = 0;
            get_maxlen(0);
            do {
                get_maxlen(map[y + d][x - d]);
                d++;
            } while (x - d >= 0 && y + d < n);
            get_maxlen(0);
        }
        for (y = 1; y < n; y++){
            d = 0;
            x = n - 1;
            get_maxlen(0);
            do {
                get_maxlen(map[y + d][x - d]);
                d++;
            } while (x - d < n && y + d < n);
            get_maxlen(0);
        }

        printf("%d\n", max_len);
    }
    return (0);
}
5
00011
00101
01000
10101
00010
8
11000001
10110111
01100111
01111010
11111111
01001010
10100010
10000001
2
01
00
3
000
000
000
0
 5
01011
00101
01000
10101
00010
8
11000001
10110111
01100111
01111010
11111111
01001010
10100000
10000001
0
01
00
3
000
000
000
0
 5
01011
00101
01100
10101
00010
8
11000001
10110111
01100111
10111010
10111111
01001010
10100000
10000000
0
01
00
3
001
100
000
0
 5
01011
00000
01000
10101
01010
8
11010001
10110111
01100011
01111010
11111111
01101000
10100010
10000101
0
0
1
6
000
100
000
0
 5
01011
10000
01000
10001
01010
8
11010001
10110111
01100011
01111010
11111111
01101000
10100010
10000101
0
0
1
6
000
100
000
0
 5
00011
00101
01000
10101
00010
8
11000001
10110111
01100111
01111010
11111111
01001010
10100010
10000001
2
01
00
3
000
010
000
0
 5
01011
00100
01000
10101
01010
8
11010001
10110111
01100111
01111010
11011111
01001010
10100000
10000001
0
0
1
3
000
000
000
0
 5
01011
00101
01000
10101
00010
8
11000001
10110111
01100111
01111010
11111111
01001010
10100010
10000001
2
01
00
3
000
011
000
0
 5
01011
00101
01000
10101
00010
8
11100001
10110111
01100111
01111010
11111111
01000010
10100000
10000001
2
01
00
0
000
000
000
0
 5
01010
00101
01000
10101
00010
8
10000001
10110111
01100011
01111010
11111110
01001010
10110000
10000001
0
0
00
1
000
010
100
0

4
8
1
0
 4
8
 4
6
 3
8
 2
8
 4
8
1
1
 4
5
 4
8
1
2
 4
8
1
 4
7

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

```c
// AOJ Volume 1 Problem 0151 Grid

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

int max_len;
int len;

void get_maxlen(int x)
{
    if (x == 0){
        if (len > max_len){
            max_len = len;
        }
        
//        printf("[%d]", len);
        
        len = 0;
        return;
    }
    len++;
}


int main(void)
{
    int map[255][255];
    char in[256];
    int n;
    int x, y;
    int d;
    
    while (1){
        scanf("%d", &n);
        if (n == 0){
            break;
        }

        max_len = 0;
        
        for (y = 0; y < n; y++){
            scanf("%s", in);
            for (x = 0; x < n; x++){
                if (in[x] == '0'){
                    map[y][x] = 0;
                }
                else {
                    map[y][x] = 1;
                }
            }
        }

        // ¡
        for (y = 0; y < n; y++){
            get_maxlen(0);
            for (x = 0; x < n; x++){
                get_maxlen(map[y][x]);
            }
            get_maxlen(0);
        }
        
        // c
        for (x = 0; x < n; x++){
            get_maxlen(0);
            for (y = 0; y < n; y++){
                get_maxlen(map[y][x]);
            }
            get_maxlen(0);
        }
        
        
        // EÎß
        for (y = n - 1; y >= 0; y--){
            d = 0;
            x = 0;
            get_maxlen(0);
            do {
                get_maxlen(map[y + d][x + d]);
                d++;
            } while (x + d < n && y + d < n);
            get_maxlen(0);
        }
        for (x = 1; x < n; x++){
            d = 0;
            y = 0;
            get_maxlen(0);
            do {
                get_maxlen(map[y + d][x + d]);
                d++;
            } while (x + d < n && y + d < n);
            get_maxlen(0);
        }
        
        // ¶Îß
        for (x = 0; x < n; x++){
            d = 0;
            y = 0;
            get_maxlen(0);
            do {
                get_maxlen(map[y + d][x - d]);
                d++;
            } while (x - d >= 0 && y + d < n);
            get_maxlen(0);
        }
        for (y = 1; y < n; y++){
            d = 0;
            x = n - 1;
            get_maxlen(0);
            do {
                get_maxlen(map[y + d][x - d]);
                d++;
            } while (x - d < n && y + d < n);
            get_maxlen(0);
        }

        printf("%d\n", max_len);
    }
    return (0);
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	max_len
	.bss
	.align 4
	.type	max_len, @object
	.size	max_len, 4
max_len:
	.zero	4
	.globl	len
	.align 4
	.type	len, @object
	.size	len, 4
len:
	.zero	4
	.text
	.globl	get_maxlen
	.type	get_maxlen, @function
get_maxlen:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -4(%rbp)
	cmpl	$0, -4(%rbp)
	jne	.L2
	movl	len(%rip), %edx
	movl	max_len(%rip), %eax
	cmpl	%eax, %edx
	jle	.L3
	movl	len(%rip), %eax
	movl	%eax, max_len(%rip)
.L3:
	movl	$0, len(%rip)
	jmp	.L1
.L2:
	movl	len(%rip), %eax
	addl	$1, %eax
	movl	%eax, len(%rip)
.L1:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	get_maxlen, .-get_maxlen
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
.LC2:
	.string	"%d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	leaq	-258048(%rsp), %r11
.LPSRL0:
	subq	$4096, %rsp
	orq	$0, (%rsp)
	cmpq	%r11, %rsp
	jne	.LPSRL0
	subq	$2352, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
.L38:
	leaq	-260400(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	-260400(%rbp), %eax
	testl	%eax, %eax
	je	.L42
	movl	$0, max_len(%rip)
	movl	$0, -260392(%rbp)
	jmp	.L8
.L13:
	leaq	-272(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -260396(%rbp)
	jmp	.L9
.L12:
	movl	-260396(%rbp), %eax
	cltq
	movzbl	-272(%rbp,%rax), %eax
	cmpb	$48, %al
	jne	.L10
	movl	-260396(%rbp), %eax
	movslq	%eax, %rcx
	movl	-260392(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	$0, -260384(%rbp,%rax,4)
	jmp	.L11
.L10:
	movl	-260396(%rbp), %eax
	movslq	%eax, %rcx
	movl	-260392(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	$1, -260384(%rbp,%rax,4)
.L11:
	addl	$1, -260396(%rbp)
.L9:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L12
	addl	$1, -260392(%rbp)
.L8:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260392(%rbp)
	jl	.L13
	movl	$0, -260392(%rbp)
	jmp	.L14
.L17:
	movl	$0, %edi
	call	get_maxlen
	movl	$0, -260396(%rbp)
	jmp	.L15
.L16:
	movl	-260396(%rbp), %eax
	movslq	%eax, %rcx
	movl	-260392(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260396(%rbp)
.L15:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L16
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260392(%rbp)
.L14:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260392(%rbp)
	jl	.L17
	movl	$0, -260396(%rbp)
	jmp	.L18
.L21:
	movl	$0, %edi
	call	get_maxlen
	movl	$0, -260392(%rbp)
	jmp	.L19
.L20:
	movl	-260396(%rbp), %eax
	movslq	%eax, %rcx
	movl	-260392(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260392(%rbp)
.L19:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260392(%rbp)
	jl	.L20
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260396(%rbp)
.L18:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L21
	movl	-260400(%rbp), %eax
	subl	$1, %eax
	movl	%eax, -260392(%rbp)
	jmp	.L22
.L25:
	movl	$0, -260388(%rbp)
	movl	$0, -260396(%rbp)
	movl	$0, %edi
	call	get_maxlen
.L24:
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%edx, %eax
	movl	-260396(%rbp), %ecx
	movl	-260388(%rbp), %edx
	addl	%ecx, %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260388(%rbp)
	movl	-260396(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jge	.L23
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jl	.L24
.L23:
	movl	$0, %edi
	call	get_maxlen
	subl	$1, -260392(%rbp)
.L22:
	cmpl	$0, -260392(%rbp)
	jns	.L25
	movl	$1, -260396(%rbp)
	jmp	.L26
.L29:
	movl	$0, -260388(%rbp)
	movl	$0, -260392(%rbp)
	movl	$0, %edi
	call	get_maxlen
.L28:
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%edx, %eax
	movl	-260396(%rbp), %ecx
	movl	-260388(%rbp), %edx
	addl	%ecx, %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260388(%rbp)
	movl	-260396(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jge	.L27
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jl	.L28
.L27:
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260396(%rbp)
.L26:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L29
	movl	$0, -260396(%rbp)
	jmp	.L30
.L33:
	movl	$0, -260388(%rbp)
	movl	$0, -260392(%rbp)
	movl	$0, %edi
	call	get_maxlen
.L32:
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260396(%rbp), %eax
	subl	-260388(%rbp), %eax
	movslq	%eax, %rcx
	movslq	%edx, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260388(%rbp)
	movl	-260396(%rbp), %eax
	subl	-260388(%rbp), %eax
	testl	%eax, %eax
	js	.L31
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jl	.L32
.L31:
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260396(%rbp)
.L30:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L33
	movl	$1, -260392(%rbp)
	jmp	.L34
.L37:
	movl	$0, -260388(%rbp)
	movl	-260400(%rbp), %eax
	subl	$1, %eax
	movl	%eax, -260396(%rbp)
	movl	$0, %edi
	call	get_maxlen
.L36:
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260396(%rbp), %eax
	subl	-260388(%rbp), %eax
	movslq	%eax, %rcx
	movslq	%edx, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260388(%rbp)
	movl	-260396(%rbp), %eax
	subl	-260388(%rbp), %eax
	movl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jge	.L35
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jl	.L36
.L35:
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260392(%rbp)
.L34:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260392(%rbp)
	jl	.L37
	movl	max_len(%rip), %eax
	movl	%eax, %esi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	jmp	.L38
.L42:
	nop
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L40
	call	__stack_chk_fail@PLT
.L40:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.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.
val
	.file	"temp.c"
	.text
	.globl	max_len
	.bss
	.align 4
	.type	max_len, @object
	.size	max_len, 4
max_len:
	.zero	4
	.globl	len
	.align 4
	.type	len, @object
	.size	len, 4
len:
	.zero	4
	.text
	.globl	get_maxlen
	.type	get_maxlen, @function
get_maxlen:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -4(%rbp)
	cmpl	$0, -4(%rbp)
	jne	.L2
	movl	len(%rip), %edx
	movl	max_len(%rip), %eax
	cmpl	%eax, %edx
	jle	.L3
	movl	len(%rip), %eax
	movl	%eax, max_len(%rip)
.L3:
	movl	$0, len(%rip)
	jmp	.L1
.L2:
	movl	len(%rip), %eax
	addl	$1, %eax
	movl	%eax, len(%rip)
.L1:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	get_maxlen, .-get_maxlen
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
.LC2:
	.string	"%d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	leaq	-258048(%rsp), %r11
.LPSRL0:
	subq	$4096, %rsp
	orq	$0, (%rsp)
	cmpq	%r11, %rsp
	jne	.LPSRL0
	subq	$2352, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
.L38:
	leaq	-260400(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	-260400(%rbp), %eax
	testl	%eax, %eax
	je	.L42
	movl	$0, max_len(%rip)
	movl	$0, -260392(%rbp)
	jmp	.L8
.L13:
	leaq	-272(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -260396(%rbp)
	jmp	.L9
.L12:
	movl	-260396(%rbp), %eax
	cltq
	movzbl	-272(%rbp,%rax), %eax
	cmpb	$48, %al
	jne	.L10
	movl	-260396(%rbp), %eax
	movslq	%eax, %rcx
	movl	-260392(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	$0, -260384(%rbp,%rax,4)
	jmp	.L11
.L10:
	movl	-260396(%rbp), %eax
	movslq	%eax, %rcx
	movl	-260392(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	$1, -260384(%rbp,%rax,4)
.L11:
	addl	$1, -260396(%rbp)
.L9:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L12
	addl	$1, -260392(%rbp)
.L8:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260392(%rbp)
	jl	.L13
	movl	$0, -260392(%rbp)
	jmp	.L14
.L17:
	movl	$0, %edi
	call	get_maxlen
	movl	$0, -260396(%rbp)
	jmp	.L15
.L16:
	movl	-260396(%rbp), %eax
	movslq	%eax, %rcx
	movl	-260392(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260396(%rbp)
.L15:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L16
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260392(%rbp)
.L14:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260392(%rbp)
	jl	.L17
	movl	$0, -260396(%rbp)
	jmp	.L18
.L21:
	movl	$0, %edi
	call	get_maxlen
	movl	$0, -260392(%rbp)
	jmp	.L19
.L20:
	movl	-260396(%rbp), %eax
	movslq	%eax, %rcx
	movl	-260392(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260392(%rbp)
.L19:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260392(%rbp)
	jl	.L20
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260396(%rbp)
.L18:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L21
	movl	-260400(%rbp), %eax
	subl	$1, %eax
	movl	%eax, -260392(%rbp)
	jmp	.L22
.L25:
	movl	$0, -260388(%rbp)
	movl	$0, -260396(%rbp)
	movl	$0, %edi
	call	get_maxlen
.L24:
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%edx, %eax
	movl	-260396(%rbp), %ecx
	movl	-260388(%rbp), %edx
	addl	%ecx, %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260388(%rbp)
	movl	-260396(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jge	.L23
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jl	.L24
.L23:
	movl	$0, %edi
	call	get_maxlen
	subl	$1, -260392(%rbp)
.L22:
	cmpl	$0, -260392(%rbp)
	jns	.L25
	movl	$1, -260396(%rbp)
	jmp	.L26
.L29:
	movl	$0, -260388(%rbp)
	movl	$0, -260392(%rbp)
	movl	$0, %edi
	call	get_maxlen
.L28:
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%edx, %eax
	movl	-260396(%rbp), %ecx
	movl	-260388(%rbp), %edx
	addl	%ecx, %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260388(%rbp)
	movl	-260396(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jge	.L27
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jl	.L28
.L27:
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260396(%rbp)
.L26:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L29
	movl	$0, -260396(%rbp)
	jmp	.L30
.L33:
	movl	$0, -260388(%rbp)
	movl	$0, -260392(%rbp)
	movl	$0, %edi
	call	get_maxlen
.L32:
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260396(%rbp), %eax
	subl	-260388(%rbp), %eax
	movslq	%eax, %rcx
	movslq	%edx, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260388(%rbp)
	movl	-260396(%rbp), %eax
	subl	-260388(%rbp), %eax
	testl	%eax, %eax
	js	.L31
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jl	.L32
.L31:
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260396(%rbp)
.L30:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260396(%rbp)
	jl	.L33
	movl	$1, -260392(%rbp)
	jmp	.L34
.L37:
	movl	$0, -260388(%rbp)
	movl	-260400(%rbp), %eax
	subl	$1, %eax
	movl	%eax, -260396(%rbp)
	movl	$0, %edi
	call	get_maxlen
.L36:
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260396(%rbp), %eax
	subl	-260388(%rbp), %eax
	movslq	%eax, %rcx
	movslq	%edx, %rdx
	movq	%rdx, %rax
	salq	$8, %rax
	subq	%rdx, %rax
	addq	%rcx, %rax
	movl	-260384(%rbp,%rax,4), %eax
	movl	%eax, %edi
	call	get_maxlen
	addl	$1, -260388(%rbp)
	movl	-260396(%rbp), %eax
	subl	-260388(%rbp), %eax
	movl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jge	.L35
	movl	-260392(%rbp), %edx
	movl	-260388(%rbp), %eax
	addl	%eax, %edx
	movl	-260400(%rbp), %eax
	cmpl	%eax, %edx
	jl	.L36
.L35:
	movl	$0, %edi
	call	get_maxlen
	addl	$1, -260392(%rbp)
.L34:
	movl	-260400(%rbp), %eax
	cmpl	%eax, -260392(%rbp)
	jl	.L37
	movl	max_len(%rip), %eax
	movl	%eax, %esi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	jmp	.L38
.L42:
	nop
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L40
	call	__stack_chk_fail@PLT
.L40:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.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:
