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

```c
// AOJ 1034: Line Puzzle
// 2017.9.29 bal4u@uu

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

#define N 8
#define N2 66

typedef struct { signed char r, c, s, t; } T;
T start[N2]; int m;

signed char map[N][N]; int n, n2;
int mv[4][2] = {{-1,0},{1,0},{0,1},{0,-1}};

int cmp(T *a, T *b)
{
	if (b->s - a->s) return b->s - a->s;
	if (b->r - a->r) return b->r - a->r;
	return a->c - b->c;
}

void print(signed char a[N][N])
{
	int r, c;

	for (r = 0; r < n; r++) {
		for (c = 0; c < n; c++) printf("%3d ", a[r][c]);
		printf("\n");
	}
	printf("\n");
}

int combi(signed char a[N][N], int m0, int n0)
{
	int i, j, f, r, c, s, t, r2, c2, ss, goal;
	signed char tmp[N][N], mk[N2][2];
	T q[N2]; int top;

	if (m0 >= m && n0 >= n2) return 1;
	q[0].r = start[m0].r, q[0].c = start[m0].c, q[0].s = 0, q[0].t = 0, top = 1;
	goal = start[m0].s;
	while (top > 0) {
		r = q[--top].r, c = q[top].c, s = q[top].s, t = q[top].t;
		mk[t][0] = r, mk[t][1] = c;
		for (i = 0; i < 4; i++) {
			r2 = r + mv[i][0], c2 = c + mv[i][1];
			if (r2 < 0 || r2 >= n || c2 < 0 || c2 >= n || a[r2][c2] <= 0) continue;
			for (f = j = 0; j <= t; j++) {
				if (mk[j][0] == r2 && mk[j][1] == c2) { f = 1; break; }
			}
			if (f) continue;
			ss = s + a[r2][c2];
			if (ss < goal) {
				q[top].r = r2, q[top].c = c2, q[top].s = ss, q[top++].t = t + 1;
			} else if (ss == goal) {
				memcpy(tmp, a, sizeof(tmp));
				for (j = 1; j <= t; j++) tmp[mk[j][0]][mk[j][1]] = 0;
				tmp[r2][c2] = 0;
//print(tmp);
				if (combi(tmp, m0+1, n0+t+2)) return 1;
			}
		}
	}
	return 0;
}

int main()
{
	int r, c, t, s;

	while (scanf("%d", &n) && n > 0) {
		n2 = n*n;
		for (s = m = 0, r = 0; r < n; r++) for (c = 0; c < n; c++) {
			scanf("%d", &t);
			if (t < 0) start[m].r = r, start[m].c = c, start[m++].s = -t;
			map[r][c] = t, s += t;
		}
		qsort(start, m, sizeof(T), cmp);
		puts(s == 0 && combi(map, 0, 0) ? "YES" : "NO");
	}
	return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	start
	.bss
	.align 32
	.type	start, @object
	.size	start, 264
start:
	.zero	264
	.globl	m
	.align 4
	.type	m, @object
	.size	m, 4
m:
	.zero	4
	.globl	map
	.align 32
	.type	map, @object
	.size	map, 64
map:
	.zero	64
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.globl	n2
	.align 4
	.type	n2, @object
	.size	n2, 4
n2:
	.zero	4
	.globl	mv
	.data
	.align 32
	.type	mv, @object
	.size	mv, 32
mv:
	.long	-1
	.long	0
	.long	1
	.long	0
	.long	0
	.long	1
	.long	0
	.long	-1
	.text
	.globl	cmp
	.type	cmp, @function
cmp:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-16(%rbp), %rax
	movzbl	2(%rax), %edx
	movq	-8(%rbp), %rax
	movzbl	2(%rax), %eax
	cmpb	%al, %dl
	je	.L2
	movq	-16(%rbp), %rax
	movzbl	2(%rax), %eax
	movsbl	%al, %edx
	movq	-8(%rbp), %rax
	movzbl	2(%rax), %eax
	movsbl	%al, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	jmp	.L3
.L2:
	movq	-16(%rbp), %rax
	movzbl	(%rax), %edx
	movq	-8(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L4
	movq	-16(%rbp), %rax
	movzbl	(%rax), %eax
	movsbl	%al, %edx
	movq	-8(%rbp), %rax
	movzbl	(%rax), %eax
	movsbl	%al, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	jmp	.L3
.L4:
	movq	-8(%rbp), %rax
	movzbl	1(%rax), %eax
	movsbl	%al, %edx
	movq	-16(%rbp), %rax
	movzbl	1(%rax), %eax
	movsbl	%al, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
.L3:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	cmp, .-cmp
	.section	.rodata
.LC0:
	.string	"%3d "
	.text
	.globl	print
	.type	print, @function
print:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movl	$0, -8(%rbp)
	jmp	.L6
.L9:
	movl	$0, -4(%rbp)
	jmp	.L7
.L8:
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movl	-4(%rbp), %eax
	cltq
	movzbl	(%rdx,%rax), %eax
	movsbl	%al, %eax
	movl	%eax, %esi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	addl	$1, -4(%rbp)
.L7:
	movl	n(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jl	.L8
	movl	$10, %edi
	call	putchar@PLT
	addl	$1, -8(%rbp)
.L6:
	movl	n(%rip), %eax
	cmpl	%eax, -8(%rbp)
	jl	.L9
	movl	$10, %edi
	call	putchar@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	print, .-print
	.globl	combi
	.type	combi, @function
combi:
.LFB8:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%rbx
	subq	$552, %rsp
	.cfi_offset 3, -24
	movq	%rdi, -552(%rbp)
	movl	%esi, -556(%rbp)
	movl	%edx, -560(%rbp)
	movq	%fs:40, %rax
	movq	%rax, -24(%rbp)
	xorl	%eax, %eax
	movl	m(%rip), %eax
	cmpl	%eax, -556(%rbp)
	jl	.L11
	movl	n2(%rip), %eax
	cmpl	%eax, -560(%rbp)
	jl	.L11
	movl	$1, %eax
	jmp	.L28
.L11:
	movl	-556(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	start(%rip), %rax
	movzbl	(%rdx,%rax), %eax
	movb	%al, -288(%rbp)
	movl	-556(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	1+start(%rip), %rax
	movzbl	(%rdx,%rax), %eax
	movb	%al, -287(%rbp)
	movb	$0, -286(%rbp)
	movb	$0, -285(%rbp)
	movl	$1, -532(%rbp)
	movl	-556(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	2+start(%rip), %rax
	movzbl	(%rdx,%rax), %eax
	movsbl	%al, %eax
	movl	%eax, -528(%rbp)
	jmp	.L13
.L27:
	subl	$1, -532(%rbp)
	movl	-532(%rbp), %eax
	cltq
	movzbl	-288(%rbp,%rax,4), %eax
	movsbl	%al, %eax
	movl	%eax, -524(%rbp)
	movl	-532(%rbp), %eax
	cltq
	movzbl	-287(%rbp,%rax,4), %eax
	movsbl	%al, %eax
	movl	%eax, -520(%rbp)
	movl	-532(%rbp), %eax
	cltq
	movzbl	-286(%rbp,%rax,4), %eax
	movsbl	%al, %eax
	movl	%eax, -516(%rbp)
	movl	-532(%rbp), %eax
	cltq
	movzbl	-285(%rbp,%rax,4), %eax
	movsbl	%al, %eax
	movl	%eax, -512(%rbp)
	movl	-524(%rbp), %eax
	movl	%eax, %edx
	movl	-512(%rbp), %eax
	cltq
	movb	%dl, -432(%rbp,%rax,2)
	movl	-520(%rbp), %eax
	movl	%eax, %edx
	movl	-512(%rbp), %eax
	cltq
	movb	%dl, -431(%rbp,%rax,2)
	movl	$0, -544(%rbp)
	jmp	.L14
.L26:
	movl	-544(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	mv(%rip), %rax
	movl	(%rdx,%rax), %edx
	movl	-524(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, -508(%rbp)
	movl	-544(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+mv(%rip), %rax
	movl	(%rdx,%rax), %edx
	movl	-520(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, -504(%rbp)
	cmpl	$0, -508(%rbp)
	js	.L30
	movl	n(%rip), %eax
	cmpl	%eax, -508(%rbp)
	jge	.L30
	cmpl	$0, -504(%rbp)
	js	.L30
	movl	n(%rip), %eax
	cmpl	%eax, -504(%rbp)
	jge	.L30
	movl	-508(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-552(%rbp), %rax
	addq	%rax, %rdx
	movl	-504(%rbp), %eax
	cltq
	movzbl	(%rdx,%rax), %eax
	testb	%al, %al
	jle	.L30
	movl	$0, -540(%rbp)
	movl	-540(%rbp), %eax
	movl	%eax, -536(%rbp)
	jmp	.L18
.L21:
	movl	-540(%rbp), %eax
	cltq
	movzbl	-432(%rbp,%rax,2), %eax
	movsbl	%al, %eax
	cmpl	%eax, -508(%rbp)
	jne	.L19
	movl	-540(%rbp), %eax
	cltq
	movzbl	-431(%rbp,%rax,2), %eax
	movsbl	%al, %eax
	cmpl	%eax, -504(%rbp)
	jne	.L19
	movl	$1, -536(%rbp)
	jmp	.L20
.L19:
	addl	$1, -540(%rbp)
.L18:
	movl	-540(%rbp), %eax
	cmpl	-512(%rbp), %eax
	jle	.L21
.L20:
	cmpl	$0, -536(%rbp)
	jne	.L31
	movl	-508(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-552(%rbp), %rax
	addq	%rax, %rdx
	movl	-504(%rbp), %eax
	cltq
	movzbl	(%rdx,%rax), %eax
	movsbl	%al, %edx
	movl	-516(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, -500(%rbp)
	movl	-500(%rbp), %eax
	cmpl	-528(%rbp), %eax
	jge	.L23
	movl	-508(%rbp), %eax
	movl	%eax, %edx
	movl	-532(%rbp), %eax
	cltq
	movb	%dl, -288(%rbp,%rax,4)
	movl	-504(%rbp), %eax
	movl	%eax, %edx
	movl	-532(%rbp), %eax
	cltq
	movb	%dl, -287(%rbp,%rax,4)
	movl	-500(%rbp), %eax
	movl	%eax, %edx
	movl	-532(%rbp), %eax
	cltq
	movb	%dl, -286(%rbp,%rax,4)
	movl	-512(%rbp), %eax
	leal	1(%rax), %ecx
	movl	-532(%rbp), %eax
	leal	1(%rax), %edx
	movl	%edx, -532(%rbp)
	movl	%ecx, %edx
	cltq
	movb	%dl, -285(%rbp,%rax,4)
	jmp	.L17
.L23:
	movl	-500(%rbp), %eax
	cmpl	-528(%rbp), %eax
	jne	.L17
	movq	-552(%rbp), %rax
	movq	(%rax), %rcx
	movq	8(%rax), %rbx
	movq	%rcx, -496(%rbp)
	movq	%rbx, -488(%rbp)
	movq	16(%rax), %rcx
	movq	24(%rax), %rbx
	movq	%rcx, -480(%rbp)
	movq	%rbx, -472(%rbp)
	movq	32(%rax), %rcx
	movq	40(%rax), %rbx
	movq	%rcx, -464(%rbp)
	movq	%rbx, -456(%rbp)
	movq	56(%rax), %rdx
	movq	48(%rax), %rax
	movq	%rax, -448(%rbp)
	movq	%rdx, -440(%rbp)
	movl	$1, -540(%rbp)
	jmp	.L24
.L25:
	movl	-540(%rbp), %eax
	cltq
	movzbl	-432(%rbp,%rax,2), %eax
	movsbl	%al, %edx
	movl	-540(%rbp), %eax
	cltq
	movzbl	-431(%rbp,%rax,2), %eax
	movsbl	%al, %eax
	movslq	%eax, %rcx
	movslq	%edx, %rax
	salq	$3, %rax
	leaq	-16(%rax), %rax
	addq	%rbp, %rax
	addq	%rcx, %rax
	subq	$480, %rax
	movb	$0, (%rax)
	addl	$1, -540(%rbp)
.L24:
	movl	-540(%rbp), %eax
	cmpl	-512(%rbp), %eax
	jle	.L25
	movl	-504(%rbp), %eax
	movslq	%eax, %rdx
	movl	-508(%rbp), %eax
	cltq
	salq	$3, %rax
	leaq	-16(%rax), %rax
	addq	%rbp, %rax
	addq	%rdx, %rax
	subq	$480, %rax
	movb	$0, (%rax)
	movl	-560(%rbp), %edx
	movl	-512(%rbp), %eax
	addl	%edx, %eax
	leal	2(%rax), %edx
	movl	-556(%rbp), %eax
	leal	1(%rax), %ecx
	leaq	-496(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	combi
	testl	%eax, %eax
	je	.L17
	movl	$1, %eax
	jmp	.L28
.L30:
	nop
	jmp	.L17
.L31:
	nop
.L17:
	addl	$1, -544(%rbp)
.L14:
	cmpl	$3, -544(%rbp)
	jle	.L26
.L13:
	cmpl	$0, -532(%rbp)
	jg	.L27
	movl	$0, %eax
.L28:
	movq	-24(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L29
	call	__stack_chk_fail@PLT
.L29:
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	combi, .-combi
	.section	.rodata
.LC1:
	.string	"%d"
.LC2:
	.string	"YES"
.LC3:
	.string	"NO"
	.text
	.globl	main
	.type	main, @function
main:
.LFB9:
	.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	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	jmp	.L33
.L42:
	movl	n(%rip), %edx
	movl	n(%rip), %eax
	imull	%edx, %eax
	movl	%eax, n2(%rip)
	movl	$0, m(%rip)
	movl	m(%rip), %eax
	movl	%eax, -12(%rbp)
	movl	$0, -20(%rbp)
	jmp	.L34
.L38:
	movl	$0, -16(%rbp)
	jmp	.L35
.L37:
	leaq	-24(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	-24(%rbp), %eax
	testl	%eax, %eax
	jns	.L36
	movl	m(%rip), %eax
	movl	-20(%rbp), %edx
	movl	%edx, %ecx
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	start(%rip), %rax
	movb	%cl, (%rdx,%rax)
	movl	m(%rip), %eax
	movl	-16(%rbp), %edx
	movl	%edx, %ecx
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	1+start(%rip), %rax
	movb	%cl, (%rdx,%rax)
	movl	-24(%rbp), %eax
	negl	%eax
	movl	%eax, %ecx
	movl	m(%rip), %eax
	leal	1(%rax), %edx
	movl	%edx, m(%rip)
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	2+start(%rip), %rax
	movb	%cl, (%rdx,%rax)
.L36:
	movl	-24(%rbp), %eax
	movl	%eax, %edx
	movl	-16(%rbp), %eax
	movslq	%eax, %rcx
	movl	-20(%rbp), %eax
	cltq
	salq	$3, %rax
	addq	%rax, %rcx
	leaq	map(%rip), %rax
	addq	%rcx, %rax
	movb	%dl, (%rax)
	movl	-24(%rbp), %eax
	addl	%eax, -12(%rbp)
	addl	$1, -16(%rbp)
.L35:
	movl	n(%rip), %eax
	cmpl	%eax, -16(%rbp)
	jl	.L37
	addl	$1, -20(%rbp)
.L34:
	movl	n(%rip), %eax
	cmpl	%eax, -20(%rbp)
	jl	.L38
	movl	m(%rip), %eax
	cltq
	leaq	cmp(%rip), %rdx
	movq	%rdx, %rcx
	movl	$4, %edx
	movq	%rax, %rsi
	leaq	start(%rip), %rax
	movq	%rax, %rdi
	call	qsort@PLT
	cmpl	$0, -12(%rbp)
	jne	.L39
	movl	$0, %edx
	movl	$0, %esi
	leaq	map(%rip), %rax
	movq	%rax, %rdi
	call	combi
	testl	%eax, %eax
	je	.L39
	leaq	.LC2(%rip), %rax
	jmp	.L40
.L39:
	leaq	.LC3(%rip), %rax
.L40:
	movq	%rax, %rdi
	call	puts@PLT
.L33:
	leaq	n(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	testl	%eax, %eax
	je	.L41
	movl	n(%rip), %eax
	testl	%eax, %eax
	jg	.L42
.L41:
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L44
	call	__stack_chk_fail@PLT
.L44:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.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	cmp
	.type	cmp, @function
cmp:
.LFB51:
	.cfi_startproc
	endbr64
	movsbl	2(%rsi), %eax
	movsbl	2(%rdi), %edx
	cmpb	%dl, %al
	jne	.L5
	movsbl	(%rsi), %eax
	movsbl	(%rdi), %edx
	cmpb	%dl, %al
	je	.L4
.L5:
	subl	%edx, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L4:
	movsbl	1(%rdi), %eax
	movsbl	1(%rsi), %edx
	subl	%edx, %eax
	ret
	.cfi_endproc
.LFE51:
	.size	cmp, .-cmp
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%3d "
	.text
	.p2align 4
	.globl	print
	.type	print, @function
print:
.LFB52:
	.cfi_startproc
	endbr64
	movl	n(%rip), %eax
	testl	%eax, %eax
	jle	.L15
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	xorl	%r12d, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	leaq	.LC0(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movq	%rdi, %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 48
	.p2align 4,,10
	.p2align 3
.L9:
	movsbl	(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$1, n(%rip)
	jle	.L10
	movsbl	1(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$2, n(%rip)
	jle	.L10
	movsbl	2(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$3, n(%rip)
	jle	.L10
	movsbl	3(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$4, n(%rip)
	jle	.L10
	movsbl	4(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$5, n(%rip)
	jle	.L10
	movsbl	5(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$6, n(%rip)
	jle	.L10
	movsbl	6(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$7, n(%rip)
	jle	.L10
	movsbl	7(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$8, n(%rip)
	jle	.L10
	movsbl	8(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$9, n(%rip)
	jle	.L10
	movl	$9, %r13d
.L11:
	movsbl	(%rbx,%r13), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	addq	$1, %r13
	call	__printf_chk@PLT
	cmpl	%r13d, n(%rip)
	jg	.L11
	.p2align 4,,10
	.p2align 3
.L10:
	movl	$10, %edi
	addl	$1, %r12d
	addq	$8, %rbx
	call	putchar@PLT
	cmpl	%r12d, n(%rip)
	jg	.L9
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	movl	$10, %edi
	popq	%rbx
	.cfi_restore 3
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_restore 6
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_restore 12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_restore 13
	.cfi_def_cfa_offset 8
	jmp	putchar@PLT
.L15:
	movl	$10, %edi
	jmp	putchar@PLT
	.cfi_endproc
.LFE52:
	.size	print, .-print
	.p2align 4
	.globl	combi
	.type	combi, @function
combi:
.LFB53:
	.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	$568, %rsp
	.cfi_def_cfa_offset 624
	movq	%rdi, 16(%rsp)
	movl	%edx, 48(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 552(%rsp)
	xorl	%eax, %eax
	cmpl	%esi, m(%rip)
	jg	.L19
	cmpl	%edx, n2(%rip)
	jle	.L20
.L19:
	leaq	144(%rsp), %rbx
	movslq	%esi, %rcx
	xorl	%edi, %edi
	xorl	%r15d, %r15d
	leaq	start(%rip), %rax
	movq	%rbx, (%rsp)
	leaq	146(%rsp), %rbx
	movzwl	(%rax,%rcx,4), %edx
	movq	%rbx, 24(%rsp)
	leaq	148(%rsp), %rbx
	leaq	32+mv(%rip), %r8
	movq	%rbx, 32(%rsp)
	leal	1(%rsi), %ebx
	movsbl	2(%rax,%rcx,4), %eax
	xorl	%ecx, %ecx
	movw	%dx, 288(%rsp)
	movl	%ecx, %r9d
	movw	%di, 290(%rsp)
	movl	%ebx, 60(%rsp)
	movl	%eax, 56(%rsp)
	xorl	%eax, %eax
	.p2align 4,,10
	.p2align 3
.L30:
	movsbl	%dh, %edi
	movq	(%rsp), %rbx
	movsbl	%al, %r14d
	movsbq	%al, %rcx
	movsbl	%dil, %r13d
	movq	24(%rsp), %rdi
	movsbl	%dl, %ebp
	addl	$1, %eax
	movw	%dx, (%rbx,%rcx,2)
	movl	%r14d, %edx
	sall	$24, %eax
	leaq	mv(%rip), %rbx
	leaq	(%rdi,%rdx,2), %r12
	movq	32(%rsp), %rdi
	leal	-1(%r14), %edx
	movl	%eax, 12(%rsp)
	leaq	(%rdi,%rdx,2), %rsi
	movq	%rsi, 40(%rsp)
	movl	48(%rsp), %esi
	leal	(%rsi,%r14), %edi
	movl	%edi, 52(%rsp)
.L28:
	movl	4(%rbx), %edx
	movl	%ebp, %ecx
	addl	(%rbx), %ecx
	js	.L21
	addl	%r13d, %edx
	movl	n(%rip), %esi
	movl	%edx, %edi
	shrl	$31, %edi
	cmpl	%ecx, %esi
	setle	%al
	orb	%dil, %al
	jne	.L21
	cmpl	%edx, %esi
	jle	.L21
	movq	16(%rsp), %rax
	movslq	%ecx, %r10
	movslq	%edx, %r11
	leaq	(%rax,%r10,8), %rax
	movsbl	(%rax,%r11), %edi
	testb	%dil, %dil
	jle	.L21
	testl	%r14d, %r14d
	js	.L22
	movq	(%rsp), %rax
	jmp	.L24
	.p2align 4,,10
	.p2align 3
.L23:
	addq	$2, %rax
	cmpq	%r12, %rax
	je	.L22
.L24:
	movsbl	(%rax), %esi
	cmpl	%ecx, %esi
	jne	.L23
	movsbl	1(%rax), %esi
	cmpl	%edx, %esi
	jne	.L23
	.p2align 4,,10
	.p2align 3
.L21:
	addq	$8, %rbx
	cmpq	%rbx, %r8
	jne	.L28
.L47:
	testl	%r9d, %r9d
	je	.L18
	subl	$1, %r9d
	movslq	%r9d, %rax
	movzwl	288(%rsp,%rax,4), %edx
	movsbl	290(%rsp,%rax,4), %r15d
	movzbl	291(%rsp,%rax,4), %eax
	jmp	.L30
	.p2align 4,,10
	.p2align 3
.L22:
	addl	%r15d, %edi
	cmpl	%edi, 56(%rsp)
	jle	.L46
	xorl	%eax, %eax
	movzbl	%dil, %edi
	movslq	%r9d, %rsi
	addq	$8, %rbx
	movb	%cl, %al
	sall	$16, %edi
	addl	$1, %r9d
	movb	%dl, %ah
	movzwl	%ax, %eax
	orl	%edi, %eax
	orl	12(%rsp), %eax
	movl	%eax, 288(%rsp,%rsi,4)
	cmpq	%rbx, %r8
	jne	.L28
	jmp	.L47
	.p2align 4,,10
	.p2align 3
.L46:
	jne	.L21
	movq	16(%rsp), %rax
	movq	40(%rsp), %rsi
	movdqu	48(%rax), %xmm6
	movdqu	(%rax), %xmm0
	movdqu	16(%rax), %xmm2
	movdqu	32(%rax), %xmm4
	movaps	%xmm0, 80(%rsp)
	movq	24(%rsp), %rax
	movaps	%xmm2, 96(%rsp)
	movaps	%xmm4, 112(%rsp)
	movaps	%xmm6, 64(%rsp)
	movaps	%xmm6, 128(%rsp)
	testl	%r14d, %r14d
	jle	.L27
	.p2align 4,,10
	.p2align 3
.L26:
	movsbq	(%rax), %rdx
	movsbq	1(%rax), %rcx
	addq	$2, %rax
	leaq	560(%rsp,%rdx,8), %rdx
	movb	$0, -480(%rcx,%rdx)
	cmpq	%rsi, %rax
	jne	.L26
.L27:
	movl	60(%rsp), %esi
	leaq	80(%rsp), %rdi
	movl	%r9d, 64(%rsp)
	leaq	560(%rsp,%r10,8), %rax
	movb	$0, -480(%rax,%r11)
	movl	52(%rsp), %eax
	leal	2(%rax), %edx
	call	combi
	movl	64(%rsp), %r9d
	leaq	32+mv(%rip), %r8
	testl	%eax, %eax
	je	.L21
.L20:
	movl	$1, %r9d
	.p2align 4,,10
	.p2align 3
.L18:
	movq	552(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L48
	addq	$568, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	movl	%r9d, %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
.L48:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE53:
	.size	combi, .-combi
	.section	.rodata.str1.1
.LC1:
	.string	"YES"
.LC2:
	.string	"NO"
.LC3:
	.string	"%d"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB54:
	.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
	leaq	start(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	leaq	.LC3(%rip), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$40, %rsp
	.cfi_def_cfa_offset 96
	movq	%fs:40, %rax
	movq	%rax, 24(%rsp)
	xorl	%eax, %eax
	.p2align 4,,10
	.p2align 3
.L50:
	xorl	%eax, %eax
	leaq	n(%rip), %rsi
	movq	%r12, %rdi
	call	__isoc99_scanf@PLT
	testl	%eax, %eax
	je	.L57
	movl	n(%rip), %eax
	testl	%eax, %eax
	jle	.L57
	imull	%eax, %eax
	movl	$0, 12(%rsp)
	xorl	%r15d, %r15d
	xorl	%ebx, %ebx
	movl	$0, m(%rip)
	leaq	map(%rip), %rbp
	leaq	20(%rsp), %r13
	movl	%eax, n2(%rip)
	.p2align 4,,10
	.p2align 3
.L51:
	movq	%r13, %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movl	20(%rsp), %eax
	testl	%eax, %eax
	jns	.L52
	movslq	m(%rip), %rdi
	xorl	%edx, %edx
	movb	12(%rsp), %dl
	movl	%r15d, %ecx
	movb	%cl, %dh
	leal	1(%rdi), %ecx
	movl	%ecx, m(%rip)
	movl	%eax, %ecx
	negl	%ecx
	movw	%dx, (%r14,%rdi,4)
	movb	%cl, 2(%r14,%rdi,4)
.L52:
	movb	%al, 0(%rbp,%r15)
	addl	%eax, %ebx
	movl	n(%rip), %eax
	addq	$1, %r15
	cmpl	%r15d, %eax
	jg	.L51
	addl	$1, 12(%rsp)
	movl	12(%rsp), %esi
	cmpl	%esi, %eax
	jle	.L70
	addq	$8, %rbp
	xorl	%r15d, %r15d
	jmp	.L51
	.p2align 4,,10
	.p2align 3
.L70:
	movslq	m(%rip), %rsi
	movq	%r14, %rdi
	movl	$4, %edx
	leaq	cmp(%rip), %rcx
	call	qsort@PLT
	leaq	.LC2(%rip), %rdi
	testl	%ebx, %ebx
	je	.L71
.L56:
	call	puts@PLT
	jmp	.L50
.L71:
	xorl	%edx, %edx
	xorl	%esi, %esi
	leaq	map(%rip), %rdi
	call	combi
	leaq	.LC1(%rip), %rdi
	testl	%eax, %eax
	leaq	.LC2(%rip), %rax
	cmove	%rax, %rdi
	jmp	.L56
.L57:
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L72
	addq	$40, %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
.L72:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE54:
	.size	main, .-main
	.globl	mv
	.data
	.align 32
	.type	mv, @object
	.size	mv, 32
mv:
	.long	-1
	.long	0
	.long	1
	.long	0
	.long	0
	.long	1
	.long	0
	.long	-1
	.globl	n2
	.bss
	.align 4
	.type	n2, @object
	.size	n2, 4
n2:
	.zero	4
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.globl	map
	.align 32
	.type	map, @object
	.size	map, 64
map:
	.zero	64
	.globl	m
	.align 4
	.type	m, @object
	.size	m, 4
m:
	.zero	4
	.globl	start
	.align 32
	.type	start, @object
	.size	start, 264
start:
	.zero	264
	.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	cmp
	.type	cmp, @function
cmp:
.LFB51:
	.cfi_startproc
	endbr64
	movsbl	2(%rsi), %eax
	movsbl	2(%rdi), %edx
	cmpb	%dl, %al
	jne	.L5
	movsbl	(%rsi), %eax
	movsbl	(%rdi), %edx
	cmpb	%dl, %al
	je	.L4
.L5:
	subl	%edx, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L4:
	movsbl	1(%rdi), %eax
	movsbl	1(%rsi), %edx
	subl	%edx, %eax
	ret
	.cfi_endproc
.LFE51:
	.size	cmp, .-cmp
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%3d "
	.text
	.p2align 4
	.globl	print
	.type	print, @function
print:
.LFB52:
	.cfi_startproc
	endbr64
	movl	n(%rip), %eax
	testl	%eax, %eax
	jle	.L15
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	xorl	%r12d, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	leaq	.LC0(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	movq	%rdi, %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 48
	.p2align 4,,10
	.p2align 3
.L9:
	movsbl	(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$1, n(%rip)
	jle	.L10
	movsbl	1(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$2, n(%rip)
	jle	.L10
	movsbl	2(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$3, n(%rip)
	jle	.L10
	movsbl	3(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$4, n(%rip)
	jle	.L10
	movsbl	4(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$5, n(%rip)
	jle	.L10
	movsbl	5(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$6, n(%rip)
	jle	.L10
	movsbl	6(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$7, n(%rip)
	jle	.L10
	movsbl	7(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$8, n(%rip)
	jle	.L10
	movsbl	8(%rbx), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	cmpl	$9, n(%rip)
	jle	.L10
	movl	$9, %r13d
.L11:
	movsbl	(%rbx,%r13), %edx
	xorl	%eax, %eax
	movq	%rbp, %rsi
	movl	$1, %edi
	addq	$1, %r13
	call	__printf_chk@PLT
	cmpl	%r13d, n(%rip)
	jg	.L11
	.p2align 4,,10
	.p2align 3
.L10:
	movl	$10, %edi
	addl	$1, %r12d
	addq	$8, %rbx
	call	putchar@PLT
	cmpl	%r12d, n(%rip)
	jg	.L9
	addq	$8, %rsp
	.cfi_def_cfa_offset 40
	movl	$10, %edi
	popq	%rbx
	.cfi_restore 3
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_restore 6
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_restore 12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_restore 13
	.cfi_def_cfa_offset 8
	jmp	putchar@PLT
.L15:
	movl	$10, %edi
	jmp	putchar@PLT
	.cfi_endproc
.LFE52:
	.size	print, .-print
	.p2align 4
	.globl	combi
	.type	combi, @function
combi:
.LFB53:
	.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	$568, %rsp
	.cfi_def_cfa_offset 624
	movq	%rdi, 16(%rsp)
	movl	%edx, 48(%rsp)
	movq	%fs:40, %rax
	movq	%rax, 552(%rsp)
	xorl	%eax, %eax
	cmpl	%esi, m(%rip)
	jg	.L19
	cmpl	%edx, n2(%rip)
	jle	.L20
.L19:
	leaq	144(%rsp), %rbx
	movslq	%esi, %rcx
	xorl	%edi, %edi
	xorl	%r15d, %r15d
	leaq	start(%rip), %rax
	movq	%rbx, (%rsp)
	leaq	146(%rsp), %rbx
	movzwl	(%rax,%rcx,4), %edx
	movq	%rbx, 24(%rsp)
	leaq	148(%rsp), %rbx
	leaq	32+mv(%rip), %r8
	movq	%rbx, 32(%rsp)
	leal	1(%rsi), %ebx
	movsbl	2(%rax,%rcx,4), %eax
	xorl	%ecx, %ecx
	movw	%dx, 288(%rsp)
	movl	%ecx, %r9d
	movw	%di, 290(%rsp)
	movl	%ebx, 60(%rsp)
	movl	%eax, 56(%rsp)
	xorl	%eax, %eax
	.p2align 4,,10
	.p2align 3
.L30:
	movsbl	%dh, %edi
	movq	(%rsp), %rbx
	movsbl	%al, %r14d
	movsbq	%al, %rcx
	movsbl	%dil, %r13d
	movq	24(%rsp), %rdi
	movsbl	%dl, %ebp
	addl	$1, %eax
	movw	%dx, (%rbx,%rcx,2)
	movl	%r14d, %edx
	sall	$24, %eax
	leaq	mv(%rip), %rbx
	leaq	(%rdi,%rdx,2), %r12
	movq	32(%rsp), %rdi
	leal	-1(%r14), %edx
	movl	%eax, 12(%rsp)
	leaq	(%rdi,%rdx,2), %rsi
	movq	%rsi, 40(%rsp)
	movl	48(%rsp), %esi
	leal	(%rsi,%r14), %edi
	movl	%edi, 52(%rsp)
.L28:
	movl	4(%rbx), %edx
	movl	%ebp, %ecx
	addl	(%rbx), %ecx
	js	.L21
	addl	%r13d, %edx
	movl	n(%rip), %esi
	movl	%edx, %edi
	shrl	$31, %edi
	cmpl	%ecx, %esi
	setle	%al
	orb	%dil, %al
	jne	.L21
	cmpl	%edx, %esi
	jle	.L21
	movq	16(%rsp), %rax
	movslq	%ecx, %r10
	movslq	%edx, %r11
	leaq	(%rax,%r10,8), %rax
	movsbl	(%rax,%r11), %edi
	testb	%dil, %dil
	jle	.L21
	testl	%r14d, %r14d
	js	.L22
	movq	(%rsp), %rax
	jmp	.L24
	.p2align 4,,10
	.p2align 3
.L23:
	addq	$2, %rax
	cmpq	%r12, %rax
	je	.L22
.L24:
	movsbl	(%rax), %esi
	cmpl	%ecx, %esi
	jne	.L23
	movsbl	1(%rax), %esi
	cmpl	%edx, %esi
	jne	.L23
	.p2align 4,,10
	.p2align 3
.L21:
	addq	$8, %rbx
	cmpq	%rbx, %r8
	jne	.L28
.L47:
	testl	%r9d, %r9d
	je	.L18
	subl	$1, %r9d
	movslq	%r9d, %rax
	movzwl	288(%rsp,%rax,4), %edx
	movsbl	290(%rsp,%rax,4), %r15d
	movzbl	291(%rsp,%rax,4), %eax
	jmp	.L30
	.p2align 4,,10
	.p2align 3
.L22:
	addl	%r15d, %edi
	cmpl	%edi, 56(%rsp)
	jle	.L46
	xorl	%eax, %eax
	movzbl	%dil, %edi
	movslq	%r9d, %rsi
	addq	$8, %rbx
	movb	%cl, %al
	sall	$16, %edi
	addl	$1, %r9d
	movb	%dl, %ah
	movzwl	%ax, %eax
	orl	%edi, %eax
	orl	12(%rsp), %eax
	movl	%eax, 288(%rsp,%rsi,4)
	cmpq	%rbx, %r8
	jne	.L28
	jmp	.L47
	.p2align 4,,10
	.p2align 3
.L46:
	jne	.L21
	movq	16(%rsp), %rax
	movq	40(%rsp), %rsi
	movdqu	48(%rax), %xmm6
	movdqu	(%rax), %xmm0
	movdqu	16(%rax), %xmm2
	movdqu	32(%rax), %xmm4
	movaps	%xmm0, 80(%rsp)
	movq	24(%rsp), %rax
	movaps	%xmm2, 96(%rsp)
	movaps	%xmm4, 112(%rsp)
	movaps	%xmm6, 64(%rsp)
	movaps	%xmm6, 128(%rsp)
	testl	%r14d, %r14d
	jle	.L27
	.p2align 4,,10
	.p2align 3
.L26:
	movsbq	(%rax), %rdx
	movsbq	1(%rax), %rcx
	addq	$2, %rax
	leaq	560(%rsp,%rdx,8), %rdx
	movb	$0, -480(%rcx,%rdx)
	cmpq	%rsi, %rax
	jne	.L26
.L27:
	movl	60(%rsp), %esi
	leaq	80(%rsp), %rdi
	movl	%r9d, 64(%rsp)
	leaq	560(%rsp,%r10,8), %rax
	movb	$0, -480(%rax,%r11)
	movl	52(%rsp), %eax
	leal	2(%rax), %edx
	call	combi
	movl	64(%rsp), %r9d
	leaq	32+mv(%rip), %r8
	testl	%eax, %eax
	je	.L21
.L20:
	movl	$1, %r9d
	.p2align 4,,10
	.p2align 3
.L18:
	movq	552(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L48
	addq	$568, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	movl	%r9d, %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
.L48:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE53:
	.size	combi, .-combi
	.section	.rodata.str1.1
.LC1:
	.string	"YES"
.LC2:
	.string	"NO"
.LC3:
	.string	"%d"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB54:
	.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
	leaq	start(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	leaq	.LC3(%rip), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$40, %rsp
	.cfi_def_cfa_offset 96
	movq	%fs:40, %rax
	movq	%rax, 24(%rsp)
	xorl	%eax, %eax
	.p2align 4,,10
	.p2align 3
.L50:
	xorl	%eax, %eax
	leaq	n(%rip), %rsi
	movq	%r12, %rdi
	call	__isoc99_scanf@PLT
	testl	%eax, %eax
	je	.L57
	movl	n(%rip), %eax
	testl	%eax, %eax
	jle	.L57
	imull	%eax, %eax
	movl	$0, 12(%rsp)
	xorl	%r15d, %r15d
	xorl	%ebx, %ebx
	movl	$0, m(%rip)
	leaq	map(%rip), %rbp
	leaq	20(%rsp), %r13
	movl	%eax, n2(%rip)
	.p2align 4,,10
	.p2align 3
.L51:
	movq	%r13, %rsi
	movq	%r12, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movl	20(%rsp), %eax
	testl	%eax, %eax
	jns	.L52
	movslq	m(%rip), %rdi
	xorl	%edx, %edx
	movb	12(%rsp), %dl
	movl	%r15d, %ecx
	movb	%cl, %dh
	leal	1(%rdi), %ecx
	movl	%ecx, m(%rip)
	movl	%eax, %ecx
	negl	%ecx
	movw	%dx, (%r14,%rdi,4)
	movb	%cl, 2(%r14,%rdi,4)
.L52:
	movb	%al, 0(%rbp,%r15)
	addl	%eax, %ebx
	movl	n(%rip), %eax
	addq	$1, %r15
	cmpl	%r15d, %eax
	jg	.L51
	addl	$1, 12(%rsp)
	movl	12(%rsp), %esi
	cmpl	%esi, %eax
	jle	.L70
	addq	$8, %rbp
	xorl	%r15d, %r15d
	jmp	.L51
	.p2align 4,,10
	.p2align 3
.L70:
	movslq	m(%rip), %rsi
	movq	%r14, %rdi
	movl	$4, %edx
	leaq	cmp(%rip), %rcx
	call	qsort@PLT
	leaq	.LC2(%rip), %rdi
	testl	%ebx, %ebx
	je	.L71
.L56:
	call	puts@PLT
	jmp	.L50
.L71:
	xorl	%edx, %edx
	xorl	%esi, %esi
	leaq	map(%rip), %rdi
	call	combi
	leaq	.LC1(%rip), %rdi
	testl	%eax, %eax
	leaq	.LC2(%rip), %rax
	cmove	%rax, %rdi
	jmp	.L56
.L57:
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L72
	addq	$40, %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
.L72:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE54:
	.size	main, .-main
	.globl	mv
	.data
	.align 32
	.type	mv, @object
	.size	mv, 32
mv:
	.long	-1
	.long	0
	.long	1
	.long	0
	.long	0
	.long	1
	.long	0
	.long	-1
	.globl	n2
	.bss
	.align 4
	.type	n2, @object
	.size	n2, 4
n2:
	.zero	4
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.globl	map
	.align 32
	.type	map, @object
	.size	map, 64
map:
	.zero	64
	.globl	m
	.align 4
	.type	m, @object
	.size	m, 4
m:
	.zero	4
	.globl	start
	.align 32
	.type	start, @object
	.size	start, 264
start:
	.zero	264
	.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 1034: Line Puzzle
// 2017.9.29 bal4u@uu

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

#define N 8
#define N2 66

typedef struct { signed char r, c, s, t; } T;
T start[N2]; int m;

signed char map[N][N]; int n, n2;
int mv[4][2] = {{-1,0},{1,0},{0,1},{0,-1}};

int cmp(T *a, T *b)
{
	if (b->s - a->s) return b->s - a->s;
	if (b->r - a->r) return b->r - a->r;
	return a->c - b->c;
}

void print(signed char a[N][N])
{
	int r, c;

	for (r = 0; r < n; r++) {
		for (c = 0; c < n; c++) printf("%3d ", a[r][c]);
		printf("\n");
	}
	printf("\n");
}

int combi(signed char a[N][N], int m0, int n0)
{
	int i, j, f, r, c, s, t, r2, c2, ss, goal;
	signed char tmp[N][N], mk[N2][2];
	T q[N2]; int top;

	if (m0 >= m && n0 >= n2) return 1;
	q[0].r = start[m0].r, q[0].c = start[m0].c, q[0].s = 0, q[0].t = 0, top = 1;
	goal = start[m0].s;
	while (top > 0) {
		r = q[--top].r, c = q[top].c, s = q[top].s, t = q[top].t;
		mk[t][0] = r, mk[t][1] = c;
		for (i = 0; i < 4; i++) {
			r2 = r + mv[i][0], c2 = c + mv[i][1];
			if (r2 < 0 || r2 >= n || c2 < 0 || c2 >= n || a[r2][c2] <= 0) continue;
			for (f = j = 0; j <= t; j++) {
				if (mk[j][0] == r2 && mk[j][1] == c2) { f = 1; break; }
			}
			if (f) continue;
			ss = s + a[r2][c2];
			if (ss < goal) {
				q[top].r = r2, q[top].c = c2, q[top].s = ss, q[top++].t = t + 1;
			} else if (ss == goal) {
				memcpy(tmp, a, sizeof(tmp));
				for (j = 1; j <= t; j++) tmp[mk[j][0]][mk[j][1]] = 0;
				tmp[r2][c2] = 0;
//print(tmp);
				if (combi(tmp, m0+1, n0+t+2)) return 1;
			}
		}
	}
	return 0;
}

int main()
{
	int r, c, t, s;

	while (scanf("%d", &n) && n > 0) {
		n2 = n*n;
		for (s = m = 0, r = 0; r < n; r++) for (c = 0; c < n; c++) {
			scanf("%d", &t);
			if (t < 0) start[m].r = r, start[m].c = c, start[m++].s = -t;
			map[r][c] = t, s += t;
		}
		qsort(start, m, sizeof(T), cmp);
		puts(s == 0 && combi(map, 0, 0) ? "YES" : "NO");
	}
	return 0;
}
3
-3 1 1
2 -4 1
2 1 -1
3
-4 1 1
1 1 -6
1 -5 3
4
-8 6 -2 1
2 -7 -2 1
1 -1 1 1
1 1 1 -5
6
2 2 3 -7 3 2
1 -10 1 1 3 2
2 6 5 2 -6 0
3 4 -23 2 2 5
3 3 -6 2 3 7
-7 2 3 2 -5 -13
6
2 2 3 -7 3 2
1 -10 1 1 3 2
2 6 5 2 -6 1
3 4 -23 2 2 5
3 3 -6 2 3 7
-7 2 3 2 -5 -12
0
 3
-3 1 1
2 -2 1
2 1 -1
3
-2 1 1
1 0 -6
1 -5 3
4
-8 11 -2 1
2 -7 -2 2
1 -1 1 2
1 1 1 -1
6
2 0 3 -8 0 2
1 -10 1 1 4 2
2 10 5 2 -6 0
2 4 -23 2 1 8
3 3 -8 2 3 7
-7 2 5 2 -3 -18
6
3 2 3 -7 1 2
1 -10 1 0 3 2
2 6 3 0 -6 1
0 4 -23 2 2 5
1 3 -2 2 3 5
-7 2 4 1 -5 -12
0
 3
-3 1 1
2 -4 1
2 1 -1
3
-4 1 1
1 1 -6
1 -5 3
4
-8 6 -2 1
2 -7 -2 1
1 -1 1 1
1 1 1 -5
6
2 2 3 -7 3 2
1 -10 1 1 3 2
2 6 5 2 -6 1
3 4 -23 2 2 5
3 3 -6 2 3 7
-7 2 3 2 -5 -13
6
2 2 3 -7 3 2
1 -10 1 1 3 2
2 6 5 2 -6 1
3 4 -4 2 2 5
3 3 -6 2 3 7
-7 2 3 2 -5 -12
0
 3
-3 1 1
2 -4 1
2 1 -1
0
-2 1 1
1 1 -6
1 -5 3
4
-8 6 -2 1
2 -7 -2 1
1 -1 1 1
1 1 1 -5
6
2 2 3 -7 0 2
1 -10 1 1 3 2
2 6 5 2 -6 0
3 4 -23 2 1 8
3 3 -6 2 2 11
-7 2 4 2 -5 -13
6
2 2 3 -7 3 2
1 -10 1 1 3 2
2 6 5 0 -6 1
3 4 -23 2 2 5
3 3 -6 2 3 5
-7 2 3 2 -5 -12
0
 3
-3 1 1
2 -6 1
2 1 -1
3
-2 1 1
1 1 -6
1 -5 3
4
-8 6 -2 2
2 -7 -2 1
1 -1 1 2
1 1 1 -1
0
2 2 3 -7 0 2
1 -10 1 1 4 2
2 6 5 2 -6 0
2 4 -23 2 1 8
3 3 -6 2 3 7
-7 0 5 2 -3 -8
6
3 4 3 -7 1 3
1 -10 1 0 3 2
4 6 5 0 -6 1
3 4 -23 0 2 5
3 3 -2 1 3 5
0 2 4 1 -5 -12
0
 3
-3 1 1
3 -4 1
2 1 -1
3
-4 1 1
2 1 -6
1 -5 3
4
-8 6 0 1
2 -7 -2 1
1 -1 1 1
1 0 1 -5
6
2 2 3 -7 3 2
1 -10 1 1 3 2
2 6 5 2 -6 1
3 4 -23 2 2 5
3 3 -6 2 3 7
-7 2 3 2 -5 -13
6
4 2 2 -7 3 2
1 -10 1 1 3 2
2 6 5 2 -6 1
3 16 -4 2 0 5
3 3 -6 2 3 7
-7 4 3 0 -5 -1
0
 3
-3 1 1
2 -4 1
2 0 -1
0
-1 1 1
1 1 -6
1 -5 3
4
-8 8 -2 1
2 -7 -2 1
1 -1 1 1
1 1 1 -5
6
2 2 3 -7 0 2
1 -18 1 1 3 2
2 6 5 2 -6 0
3 4 -23 2 1 8
3 3 -6 2 2 11
-7 2 4 2 -5 -13
6
2 2 3 -7 0 2
1 -10 2 0 3 4
2 6 5 0 -6 1
3 4 -23 2 2 5
3 3 -6 2 3 5
-11 2 3 2 -5 -11
0
 3
-3 1 1
2 -4 1
2 1 -1
3
-4 1 1
1 1 -6
1 -5 3
4
-8 6 -2 1
2 -7 -2 1
1 -1 1 1
1 1 1 -5
6
2 2 3 -7 3 2
1 -10 1 1 3 2
2 6 5 2 -6 0
3 4 -23 2 2 8
3 3 -6 2 3 7
-7 2 3 2 -5 -13
6
2 2 3 -7 3 2
1 -10 1 1 3 2
2 6 5 2 -6 1
3 4 -23 2 2 5
3 3 -6 2 3 7
-7 2 3 2 -5 -12
0
 3
-3 1 1
2 -4 1
2 1 -1
3
-4 1 1
1 1 -6
1 -5 3
4
-8 6 -2 1
2 -7 -2 1
1 -1 1 1
1 1 1 -5
6
2 2 3 -7 3 2
1 -10 1 1 3 2
2 6 5 2 -6 0
3 4 -23 2 2 8
3 3 -6 2 3 7
-7 2 3 2 -5 -13
6
2 2 3 -7 3 2
1 -10 1 1 3 2
2 6 5 2 -6 1
3 4 -23 2 2 5
3 3 -6 2 3 5
-7 2 3 2 -5 -12
0
 3
-3 1 1
2 -4 1
2 1 -1
3
-4 1 1
1 1 -6
1 -5 3
4
-8 6 -2 1
2 -7 -2 1
1 -1 1 1
1 1 1 -5
6
2 2 3 -7 0 2
1 -10 1 1 3 2
2 6 5 2 -6 0
3 4 -23 2 2 8
3 3 -6 2 3 7
-7 2 3 2 -5 -13
6
2 2 3 -7 3 2
1 -10 1 1 3 2
2 6 5 2 -6 1
3 4 -23 2 2 5
3 3 -6 2 3 5
-7 2 3 2 -5 -12
0

YES
NO
NO
NO
NO
 NO
NO
NO
NO
NO
 YES
NO
NO
YES
NO
 YES
 NO
NO
NO
 NO
NO
NO
YES
NO
 NO
 YES
NO
NO
NO
NO
 YES
NO
NO
NO
NO
 YES
NO
NO
NO
NO

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

```c
// AOJ 1034: Line Puzzle
// 2017.9.29 bal4u@uu

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

#define N 8
#define N2 66

typedef struct { signed char r, c, s, t; } T;
T start[N2]; int m;

signed char map[N][N]; int n, n2;
int mv[4][2] = {{-1,0},{1,0},{0,1},{0,-1}};

int cmp(T *a, T *b)
{
	if (b->s - a->s) return b->s - a->s;
	if (b->r - a->r) return b->r - a->r;
	return a->c - b->c;
}

void print(signed char a[N][N])
{
	int r, c;

	for (r = 0; r < n; r++) {
		for (c = 0; c < n; c++) printf("%3d ", a[r][c]);
		printf("\n");
	}
	printf("\n");
}

int combi(signed char a[N][N], int m0, int n0)
{
	int i, j, f, r, c, s, t, r2, c2, ss, goal;
	signed char tmp[N][N], mk[N2][2];
	T q[N2]; int top;

	if (m0 >= m && n0 >= n2) return 1;
	q[0].r = start[m0].r, q[0].c = start[m0].c, q[0].s = 0, q[0].t = 0, top = 1;
	goal = start[m0].s;
	while (top > 0) {
		r = q[--top].r, c = q[top].c, s = q[top].s, t = q[top].t;
		mk[t][0] = r, mk[t][1] = c;
		for (i = 0; i < 4; i++) {
			r2 = r + mv[i][0], c2 = c + mv[i][1];
			if (r2 < 0 || r2 >= n || c2 < 0 || c2 >= n || a[r2][c2] <= 0) continue;
			for (f = j = 0; j <= t; j++) {
				if (mk[j][0] == r2 && mk[j][1] == c2) { f = 1; break; }
			}
			if (f) continue;
			ss = s + a[r2][c2];
			if (ss < goal) {
				q[top].r = r2, q[top].c = c2, q[top].s = ss, q[top++].t = t + 1;
			} else if (ss == goal) {
				memcpy(tmp, a, sizeof(tmp));
				for (j = 1; j <= t; j++) tmp[mk[j][0]][mk[j][1]] = 0;
				tmp[r2][c2] = 0;
//print(tmp);
				if (combi(tmp, m0+1, n0+t+2)) return 1;
			}
		}
	}
	return 0;
}

int main()
{
	int r, c, t, s;

	while (scanf("%d", &n) && n > 0) {
		n2 = n*n;
		for (s = m = 0, r = 0; r < n; r++) for (c = 0; c < n; c++) {
			scanf("%d", &t);
			if (t < 0) start[m].r = r, start[m].c = c, start[m++].s = -t;
			map[r][c] = t, s += t;
		}
		qsort(start, m, sizeof(T), cmp);
		puts(s == 0 && combi(map, 0, 0) ? "YES" : "NO");
	}
	return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	start
	.bss
	.align 32
	.type	start, @object
	.size	start, 264
start:
	.zero	264
	.globl	m
	.align 4
	.type	m, @object
	.size	m, 4
m:
	.zero	4
	.globl	map
	.align 32
	.type	map, @object
	.size	map, 64
map:
	.zero	64
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.globl	n2
	.align 4
	.type	n2, @object
	.size	n2, 4
n2:
	.zero	4
	.globl	mv
	.data
	.align 32
	.type	mv, @object
	.size	mv, 32
mv:
	.long	-1
	.long	0
	.long	1
	.long	0
	.long	0
	.long	1
	.long	0
	.long	-1
	.text
	.globl	cmp
	.type	cmp, @function
cmp:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-16(%rbp), %rax
	movzbl	2(%rax), %edx
	movq	-8(%rbp), %rax
	movzbl	2(%rax), %eax
	cmpb	%al, %dl
	je	.L2
	movq	-16(%rbp), %rax
	movzbl	2(%rax), %eax
	movsbl	%al, %edx
	movq	-8(%rbp), %rax
	movzbl	2(%rax), %eax
	movsbl	%al, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	jmp	.L3
.L2:
	movq	-16(%rbp), %rax
	movzbl	(%rax), %edx
	movq	-8(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L4
	movq	-16(%rbp), %rax
	movzbl	(%rax), %eax
	movsbl	%al, %edx
	movq	-8(%rbp), %rax
	movzbl	(%rax), %eax
	movsbl	%al, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	jmp	.L3
.L4:
	movq	-8(%rbp), %rax
	movzbl	1(%rax), %eax
	movsbl	%al, %edx
	movq	-16(%rbp), %rax
	movzbl	1(%rax), %eax
	movsbl	%al, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
.L3:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	cmp, .-cmp
	.section	.rodata
.LC0:
	.string	"%3d "
	.text
	.globl	print
	.type	print, @function
print:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movl	$0, -8(%rbp)
	jmp	.L6
.L9:
	movl	$0, -4(%rbp)
	jmp	.L7
.L8:
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movl	-4(%rbp), %eax
	cltq
	movzbl	(%rdx,%rax), %eax
	movsbl	%al, %eax
	movl	%eax, %esi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	addl	$1, -4(%rbp)
.L7:
	movl	n(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jl	.L8
	movl	$10, %edi
	call	putchar@PLT
	addl	$1, -8(%rbp)
.L6:
	movl	n(%rip), %eax
	cmpl	%eax, -8(%rbp)
	jl	.L9
	movl	$10, %edi
	call	putchar@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	print, .-print
	.globl	combi
	.type	combi, @function
combi:
.LFB8:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%rbx
	subq	$552, %rsp
	.cfi_offset 3, -24
	movq	%rdi, -552(%rbp)
	movl	%esi, -556(%rbp)
	movl	%edx, -560(%rbp)
	movq	%fs:40, %rax
	movq	%rax, -24(%rbp)
	xorl	%eax, %eax
	movl	m(%rip), %eax
	cmpl	%eax, -556(%rbp)
	jl	.L11
	movl	n2(%rip), %eax
	cmpl	%eax, -560(%rbp)
	jl	.L11
	movl	$1, %eax
	jmp	.L28
.L11:
	movl	-556(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	start(%rip), %rax
	movzbl	(%rdx,%rax), %eax
	movb	%al, -288(%rbp)
	movl	-556(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	1+start(%rip), %rax
	movzbl	(%rdx,%rax), %eax
	movb	%al, -287(%rbp)
	movb	$0, -286(%rbp)
	movb	$0, -285(%rbp)
	movl	$1, -532(%rbp)
	movl	-556(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	2+start(%rip), %rax
	movzbl	(%rdx,%rax), %eax
	movsbl	%al, %eax
	movl	%eax, -528(%rbp)
	jmp	.L13
.L27:
	subl	$1, -532(%rbp)
	movl	-532(%rbp), %eax
	cltq
	movzbl	-288(%rbp,%rax,4), %eax
	movsbl	%al, %eax
	movl	%eax, -524(%rbp)
	movl	-532(%rbp), %eax
	cltq
	movzbl	-287(%rbp,%rax,4), %eax
	movsbl	%al, %eax
	movl	%eax, -520(%rbp)
	movl	-532(%rbp), %eax
	cltq
	movzbl	-286(%rbp,%rax,4), %eax
	movsbl	%al, %eax
	movl	%eax, -516(%rbp)
	movl	-532(%rbp), %eax
	cltq
	movzbl	-285(%rbp,%rax,4), %eax
	movsbl	%al, %eax
	movl	%eax, -512(%rbp)
	movl	-524(%rbp), %eax
	movl	%eax, %edx
	movl	-512(%rbp), %eax
	cltq
	movb	%dl, -432(%rbp,%rax,2)
	movl	-520(%rbp), %eax
	movl	%eax, %edx
	movl	-512(%rbp), %eax
	cltq
	movb	%dl, -431(%rbp,%rax,2)
	movl	$0, -544(%rbp)
	jmp	.L14
.L26:
	movl	-544(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	mv(%rip), %rax
	movl	(%rdx,%rax), %edx
	movl	-524(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, -508(%rbp)
	movl	-544(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+mv(%rip), %rax
	movl	(%rdx,%rax), %edx
	movl	-520(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, -504(%rbp)
	cmpl	$0, -508(%rbp)
	js	.L30
	movl	n(%rip), %eax
	cmpl	%eax, -508(%rbp)
	jge	.L30
	cmpl	$0, -504(%rbp)
	js	.L30
	movl	n(%rip), %eax
	cmpl	%eax, -504(%rbp)
	jge	.L30
	movl	-508(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-552(%rbp), %rax
	addq	%rax, %rdx
	movl	-504(%rbp), %eax
	cltq
	movzbl	(%rdx,%rax), %eax
	testb	%al, %al
	jle	.L30
	movl	$0, -540(%rbp)
	movl	-540(%rbp), %eax
	movl	%eax, -536(%rbp)
	jmp	.L18
.L21:
	movl	-540(%rbp), %eax
	cltq
	movzbl	-432(%rbp,%rax,2), %eax
	movsbl	%al, %eax
	cmpl	%eax, -508(%rbp)
	jne	.L19
	movl	-540(%rbp), %eax
	cltq
	movzbl	-431(%rbp,%rax,2), %eax
	movsbl	%al, %eax
	cmpl	%eax, -504(%rbp)
	jne	.L19
	movl	$1, -536(%rbp)
	jmp	.L20
.L19:
	addl	$1, -540(%rbp)
.L18:
	movl	-540(%rbp), %eax
	cmpl	-512(%rbp), %eax
	jle	.L21
.L20:
	cmpl	$0, -536(%rbp)
	jne	.L31
	movl	-508(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-552(%rbp), %rax
	addq	%rax, %rdx
	movl	-504(%rbp), %eax
	cltq
	movzbl	(%rdx,%rax), %eax
	movsbl	%al, %edx
	movl	-516(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, -500(%rbp)
	movl	-500(%rbp), %eax
	cmpl	-528(%rbp), %eax
	jge	.L23
	movl	-508(%rbp), %eax
	movl	%eax, %edx
	movl	-532(%rbp), %eax
	cltq
	movb	%dl, -288(%rbp,%rax,4)
	movl	-504(%rbp), %eax
	movl	%eax, %edx
	movl	-532(%rbp), %eax
	cltq
	movb	%dl, -287(%rbp,%rax,4)
	movl	-500(%rbp), %eax
	movl	%eax, %edx
	movl	-532(%rbp), %eax
	cltq
	movb	%dl, -286(%rbp,%rax,4)
	movl	-512(%rbp), %eax
	leal	1(%rax), %ecx
	movl	-532(%rbp), %eax
	leal	1(%rax), %edx
	movl	%edx, -532(%rbp)
	movl	%ecx, %edx
	cltq
	movb	%dl, -285(%rbp,%rax,4)
	jmp	.L17
.L23:
	movl	-500(%rbp), %eax
	cmpl	-528(%rbp), %eax
	jne	.L17
	movq	-552(%rbp), %rax
	movq	(%rax), %rcx
	movq	8(%rax), %rbx
	movq	%rcx, -496(%rbp)
	movq	%rbx, -488(%rbp)
	movq	16(%rax), %rcx
	movq	24(%rax), %rbx
	movq	%rcx, -480(%rbp)
	movq	%rbx, -472(%rbp)
	movq	32(%rax), %rcx
	movq	40(%rax), %rbx
	movq	%rcx, -464(%rbp)
	movq	%rbx, -456(%rbp)
	movq	56(%rax), %rdx
	movq	48(%rax), %rax
	movq	%rax, -448(%rbp)
	movq	%rdx, -440(%rbp)
	movl	$1, -540(%rbp)
	jmp	.L24
.L25:
	movl	-540(%rbp), %eax
	cltq
	movzbl	-432(%rbp,%rax,2), %eax
	movsbl	%al, %edx
	movl	-540(%rbp), %eax
	cltq
	movzbl	-431(%rbp,%rax,2), %eax
	movsbl	%al, %eax
	movslq	%eax, %rcx
	movslq	%edx, %rax
	salq	$3, %rax
	leaq	-16(%rax), %rax
	addq	%rbp, %rax
	addq	%rcx, %rax
	subq	$480, %rax
	movb	$0, (%rax)
	addl	$1, -540(%rbp)
.L24:
	movl	-540(%rbp), %eax
	cmpl	-512(%rbp), %eax
	jle	.L25
	movl	-504(%rbp), %eax
	movslq	%eax, %rdx
	movl	-508(%rbp), %eax
	cltq
	salq	$3, %rax
	leaq	-16(%rax), %rax
	addq	%rbp, %rax
	addq	%rdx, %rax
	subq	$480, %rax
	movb	$0, (%rax)
	movl	-560(%rbp), %edx
	movl	-512(%rbp), %eax
	addl	%edx, %eax
	leal	2(%rax), %edx
	movl	-556(%rbp), %eax
	leal	1(%rax), %ecx
	leaq	-496(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	combi
	testl	%eax, %eax
	je	.L17
	movl	$1, %eax
	jmp	.L28
.L30:
	nop
	jmp	.L17
.L31:
	nop
.L17:
	addl	$1, -544(%rbp)
.L14:
	cmpl	$3, -544(%rbp)
	jle	.L26
.L13:
	cmpl	$0, -532(%rbp)
	jg	.L27
	movl	$0, %eax
.L28:
	movq	-24(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L29
	call	__stack_chk_fail@PLT
.L29:
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	combi, .-combi
	.section	.rodata
.LC1:
	.string	"%d"
.LC2:
	.string	"YES"
.LC3:
	.string	"NO"
	.text
	.globl	main
	.type	main, @function
main:
.LFB9:
	.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	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	jmp	.L33
.L42:
	movl	n(%rip), %edx
	movl	n(%rip), %eax
	imull	%edx, %eax
	movl	%eax, n2(%rip)
	movl	$0, m(%rip)
	movl	m(%rip), %eax
	movl	%eax, -12(%rbp)
	movl	$0, -20(%rbp)
	jmp	.L34
.L38:
	movl	$0, -16(%rbp)
	jmp	.L35
.L37:
	leaq	-24(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	-24(%rbp), %eax
	testl	%eax, %eax
	jns	.L36
	movl	m(%rip), %eax
	movl	-20(%rbp), %edx
	movl	%edx, %ecx
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	start(%rip), %rax
	movb	%cl, (%rdx,%rax)
	movl	m(%rip), %eax
	movl	-16(%rbp), %edx
	movl	%edx, %ecx
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	1+start(%rip), %rax
	movb	%cl, (%rdx,%rax)
	movl	-24(%rbp), %eax
	negl	%eax
	movl	%eax, %ecx
	movl	m(%rip), %eax
	leal	1(%rax), %edx
	movl	%edx, m(%rip)
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	2+start(%rip), %rax
	movb	%cl, (%rdx,%rax)
.L36:
	movl	-24(%rbp), %eax
	movl	%eax, %edx
	movl	-16(%rbp), %eax
	movslq	%eax, %rcx
	movl	-20(%rbp), %eax
	cltq
	salq	$3, %rax
	addq	%rax, %rcx
	leaq	map(%rip), %rax
	addq	%rcx, %rax
	movb	%dl, (%rax)
	movl	-24(%rbp), %eax
	addl	%eax, -12(%rbp)
	addl	$1, -16(%rbp)
.L35:
	movl	n(%rip), %eax
	cmpl	%eax, -16(%rbp)
	jl	.L37
	addl	$1, -20(%rbp)
.L34:
	movl	n(%rip), %eax
	cmpl	%eax, -20(%rbp)
	jl	.L38
	movl	m(%rip), %eax
	cltq
	leaq	cmp(%rip), %rdx
	movq	%rdx, %rcx
	movl	$4, %edx
	movq	%rax, %rsi
	leaq	start(%rip), %rax
	movq	%rax, %rdi
	call	qsort@PLT
	cmpl	$0, -12(%rbp)
	jne	.L39
	movl	$0, %edx
	movl	$0, %esi
	leaq	map(%rip), %rax
	movq	%rax, %rdi
	call	combi
	testl	%eax, %eax
	je	.L39
	leaq	.LC2(%rip), %rax
	jmp	.L40
.L39:
	leaq	.LC3(%rip), %rax
.L40:
	movq	%rax, %rdi
	call	puts@PLT
.L33:
	leaq	n(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	testl	%eax, %eax
	je	.L41
	movl	n(%rip), %eax
	testl	%eax, %eax
	jg	.L42
.L41:
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L44
	call	__stack_chk_fail@PLT
.L44:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.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	start
	.bss
	.align 32
	.type	start, @object
	.size	start, 264
start:
	.zero	264
	.globl	m
	.align 4
	.type	m, @object
	.size	m, 4
m:
	.zero	4
	.globl	map
	.align 32
	.type	map, @object
	.size	map, 64
map:
	.zero	64
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.globl	n2
	.align 4
	.type	n2, @object
	.size	n2, 4
n2:
	.zero	4
	.globl	mv
	.data
	.align 32
	.type	mv, @object
	.size	mv, 32
mv:
	.long	-1
	.long	0
	.long	1
	.long	0
	.long	0
	.long	1
	.long	0
	.long	-1
	.text
	.globl	cmp
	.type	cmp, @function
cmp:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-16(%rbp), %rax
	movzbl	2(%rax), %edx
	movq	-8(%rbp), %rax
	movzbl	2(%rax), %eax
	cmpb	%al, %dl
	je	.L2
	movq	-16(%rbp), %rax
	movzbl	2(%rax), %eax
	movsbl	%al, %edx
	movq	-8(%rbp), %rax
	movzbl	2(%rax), %eax
	movsbl	%al, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	jmp	.L3
.L2:
	movq	-16(%rbp), %rax
	movzbl	(%rax), %edx
	movq	-8(%rbp), %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L4
	movq	-16(%rbp), %rax
	movzbl	(%rax), %eax
	movsbl	%al, %edx
	movq	-8(%rbp), %rax
	movzbl	(%rax), %eax
	movsbl	%al, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	jmp	.L3
.L4:
	movq	-8(%rbp), %rax
	movzbl	1(%rax), %eax
	movsbl	%al, %edx
	movq	-16(%rbp), %rax
	movzbl	1(%rax), %eax
	movsbl	%al, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
.L3:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	cmp, .-cmp
	.section	.rodata
.LC0:
	.string	"%3d "
	.text
	.globl	print
	.type	print, @function
print:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movl	$0, -8(%rbp)
	jmp	.L6
.L9:
	movl	$0, -4(%rbp)
	jmp	.L7
.L8:
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movl	-4(%rbp), %eax
	cltq
	movzbl	(%rdx,%rax), %eax
	movsbl	%al, %eax
	movl	%eax, %esi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	addl	$1, -4(%rbp)
.L7:
	movl	n(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jl	.L8
	movl	$10, %edi
	call	putchar@PLT
	addl	$1, -8(%rbp)
.L6:
	movl	n(%rip), %eax
	cmpl	%eax, -8(%rbp)
	jl	.L9
	movl	$10, %edi
	call	putchar@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	print, .-print
	.globl	combi
	.type	combi, @function
combi:
.LFB8:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%rbx
	subq	$552, %rsp
	.cfi_offset 3, -24
	movq	%rdi, -552(%rbp)
	movl	%esi, -556(%rbp)
	movl	%edx, -560(%rbp)
	movq	%fs:40, %rax
	movq	%rax, -24(%rbp)
	xorl	%eax, %eax
	movl	m(%rip), %eax
	cmpl	%eax, -556(%rbp)
	jl	.L11
	movl	n2(%rip), %eax
	cmpl	%eax, -560(%rbp)
	jl	.L11
	movl	$1, %eax
	jmp	.L28
.L11:
	movl	-556(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	start(%rip), %rax
	movzbl	(%rdx,%rax), %eax
	movb	%al, -288(%rbp)
	movl	-556(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	1+start(%rip), %rax
	movzbl	(%rdx,%rax), %eax
	movb	%al, -287(%rbp)
	movb	$0, -286(%rbp)
	movb	$0, -285(%rbp)
	movl	$1, -532(%rbp)
	movl	-556(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	2+start(%rip), %rax
	movzbl	(%rdx,%rax), %eax
	movsbl	%al, %eax
	movl	%eax, -528(%rbp)
	jmp	.L13
.L27:
	subl	$1, -532(%rbp)
	movl	-532(%rbp), %eax
	cltq
	movzbl	-288(%rbp,%rax,4), %eax
	movsbl	%al, %eax
	movl	%eax, -524(%rbp)
	movl	-532(%rbp), %eax
	cltq
	movzbl	-287(%rbp,%rax,4), %eax
	movsbl	%al, %eax
	movl	%eax, -520(%rbp)
	movl	-532(%rbp), %eax
	cltq
	movzbl	-286(%rbp,%rax,4), %eax
	movsbl	%al, %eax
	movl	%eax, -516(%rbp)
	movl	-532(%rbp), %eax
	cltq
	movzbl	-285(%rbp,%rax,4), %eax
	movsbl	%al, %eax
	movl	%eax, -512(%rbp)
	movl	-524(%rbp), %eax
	movl	%eax, %edx
	movl	-512(%rbp), %eax
	cltq
	movb	%dl, -432(%rbp,%rax,2)
	movl	-520(%rbp), %eax
	movl	%eax, %edx
	movl	-512(%rbp), %eax
	cltq
	movb	%dl, -431(%rbp,%rax,2)
	movl	$0, -544(%rbp)
	jmp	.L14
.L26:
	movl	-544(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	mv(%rip), %rax
	movl	(%rdx,%rax), %edx
	movl	-524(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, -508(%rbp)
	movl	-544(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+mv(%rip), %rax
	movl	(%rdx,%rax), %edx
	movl	-520(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, -504(%rbp)
	cmpl	$0, -508(%rbp)
	js	.L30
	movl	n(%rip), %eax
	cmpl	%eax, -508(%rbp)
	jge	.L30
	cmpl	$0, -504(%rbp)
	js	.L30
	movl	n(%rip), %eax
	cmpl	%eax, -504(%rbp)
	jge	.L30
	movl	-508(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-552(%rbp), %rax
	addq	%rax, %rdx
	movl	-504(%rbp), %eax
	cltq
	movzbl	(%rdx,%rax), %eax
	testb	%al, %al
	jle	.L30
	movl	$0, -540(%rbp)
	movl	-540(%rbp), %eax
	movl	%eax, -536(%rbp)
	jmp	.L18
.L21:
	movl	-540(%rbp), %eax
	cltq
	movzbl	-432(%rbp,%rax,2), %eax
	movsbl	%al, %eax
	cmpl	%eax, -508(%rbp)
	jne	.L19
	movl	-540(%rbp), %eax
	cltq
	movzbl	-431(%rbp,%rax,2), %eax
	movsbl	%al, %eax
	cmpl	%eax, -504(%rbp)
	jne	.L19
	movl	$1, -536(%rbp)
	jmp	.L20
.L19:
	addl	$1, -540(%rbp)
.L18:
	movl	-540(%rbp), %eax
	cmpl	-512(%rbp), %eax
	jle	.L21
.L20:
	cmpl	$0, -536(%rbp)
	jne	.L31
	movl	-508(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	movq	-552(%rbp), %rax
	addq	%rax, %rdx
	movl	-504(%rbp), %eax
	cltq
	movzbl	(%rdx,%rax), %eax
	movsbl	%al, %edx
	movl	-516(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, -500(%rbp)
	movl	-500(%rbp), %eax
	cmpl	-528(%rbp), %eax
	jge	.L23
	movl	-508(%rbp), %eax
	movl	%eax, %edx
	movl	-532(%rbp), %eax
	cltq
	movb	%dl, -288(%rbp,%rax,4)
	movl	-504(%rbp), %eax
	movl	%eax, %edx
	movl	-532(%rbp), %eax
	cltq
	movb	%dl, -287(%rbp,%rax,4)
	movl	-500(%rbp), %eax
	movl	%eax, %edx
	movl	-532(%rbp), %eax
	cltq
	movb	%dl, -286(%rbp,%rax,4)
	movl	-512(%rbp), %eax
	leal	1(%rax), %ecx
	movl	-532(%rbp), %eax
	leal	1(%rax), %edx
	movl	%edx, -532(%rbp)
	movl	%ecx, %edx
	cltq
	movb	%dl, -285(%rbp,%rax,4)
	jmp	.L17
.L23:
	movl	-500(%rbp), %eax
	cmpl	-528(%rbp), %eax
	jne	.L17
	movq	-552(%rbp), %rax
	movq	(%rax), %rcx
	movq	8(%rax), %rbx
	movq	%rcx, -496(%rbp)
	movq	%rbx, -488(%rbp)
	movq	16(%rax), %rcx
	movq	24(%rax), %rbx
	movq	%rcx, -480(%rbp)
	movq	%rbx, -472(%rbp)
	movq	32(%rax), %rcx
	movq	40(%rax), %rbx
	movq	%rcx, -464(%rbp)
	movq	%rbx, -456(%rbp)
	movq	56(%rax), %rdx
	movq	48(%rax), %rax
	movq	%rax, -448(%rbp)
	movq	%rdx, -440(%rbp)
	movl	$1, -540(%rbp)
	jmp	.L24
.L25:
	movl	-540(%rbp), %eax
	cltq
	movzbl	-432(%rbp,%rax,2), %eax
	movsbl	%al, %edx
	movl	-540(%rbp), %eax
	cltq
	movzbl	-431(%rbp,%rax,2), %eax
	movsbl	%al, %eax
	movslq	%eax, %rcx
	movslq	%edx, %rax
	salq	$3, %rax
	leaq	-16(%rax), %rax
	addq	%rbp, %rax
	addq	%rcx, %rax
	subq	$480, %rax
	movb	$0, (%rax)
	addl	$1, -540(%rbp)
.L24:
	movl	-540(%rbp), %eax
	cmpl	-512(%rbp), %eax
	jle	.L25
	movl	-504(%rbp), %eax
	movslq	%eax, %rdx
	movl	-508(%rbp), %eax
	cltq
	salq	$3, %rax
	leaq	-16(%rax), %rax
	addq	%rbp, %rax
	addq	%rdx, %rax
	subq	$480, %rax
	movb	$0, (%rax)
	movl	-560(%rbp), %edx
	movl	-512(%rbp), %eax
	addl	%edx, %eax
	leal	2(%rax), %edx
	movl	-556(%rbp), %eax
	leal	1(%rax), %ecx
	leaq	-496(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	combi
	testl	%eax, %eax
	je	.L17
	movl	$1, %eax
	jmp	.L28
.L30:
	nop
	jmp	.L17
.L31:
	nop
.L17:
	addl	$1, -544(%rbp)
.L14:
	cmpl	$3, -544(%rbp)
	jle	.L26
.L13:
	cmpl	$0, -532(%rbp)
	jg	.L27
	movl	$0, %eax
.L28:
	movq	-24(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L29
	call	__stack_chk_fail@PLT
.L29:
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	combi, .-combi
	.section	.rodata
.LC1:
	.string	"%d"
.LC2:
	.string	"YES"
.LC3:
	.string	"NO"
	.text
	.globl	main
	.type	main, @function
main:
.LFB9:
	.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	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	jmp	.L33
.L42:
	movl	n(%rip), %edx
	movl	n(%rip), %eax
	imull	%edx, %eax
	movl	%eax, n2(%rip)
	movl	$0, m(%rip)
	movl	m(%rip), %eax
	movl	%eax, -12(%rbp)
	movl	$0, -20(%rbp)
	jmp	.L34
.L38:
	movl	$0, -16(%rbp)
	jmp	.L35
.L37:
	leaq	-24(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	-24(%rbp), %eax
	testl	%eax, %eax
	jns	.L36
	movl	m(%rip), %eax
	movl	-20(%rbp), %edx
	movl	%edx, %ecx
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	start(%rip), %rax
	movb	%cl, (%rdx,%rax)
	movl	m(%rip), %eax
	movl	-16(%rbp), %edx
	movl	%edx, %ecx
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	1+start(%rip), %rax
	movb	%cl, (%rdx,%rax)
	movl	-24(%rbp), %eax
	negl	%eax
	movl	%eax, %ecx
	movl	m(%rip), %eax
	leal	1(%rax), %edx
	movl	%edx, m(%rip)
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	2+start(%rip), %rax
	movb	%cl, (%rdx,%rax)
.L36:
	movl	-24(%rbp), %eax
	movl	%eax, %edx
	movl	-16(%rbp), %eax
	movslq	%eax, %rcx
	movl	-20(%rbp), %eax
	cltq
	salq	$3, %rax
	addq	%rax, %rcx
	leaq	map(%rip), %rax
	addq	%rcx, %rax
	movb	%dl, (%rax)
	movl	-24(%rbp), %eax
	addl	%eax, -12(%rbp)
	addl	$1, -16(%rbp)
.L35:
	movl	n(%rip), %eax
	cmpl	%eax, -16(%rbp)
	jl	.L37
	addl	$1, -20(%rbp)
.L34:
	movl	n(%rip), %eax
	cmpl	%eax, -20(%rbp)
	jl	.L38
	movl	m(%rip), %eax
	cltq
	leaq	cmp(%rip), %rdx
	movq	%rdx, %rcx
	movl	$4, %edx
	movq	%rax, %rsi
	leaq	start(%rip), %rax
	movq	%rax, %rdi
	call	qsort@PLT
	cmpl	$0, -12(%rbp)
	jne	.L39
	movl	$0, %edx
	movl	$0, %esi
	leaq	map(%rip), %rax
	movq	%rax, %rdi
	call	combi
	testl	%eax, %eax
	je	.L39
	leaq	.LC2(%rip), %rax
	jmp	.L40
.L39:
	leaq	.LC3(%rip), %rax
.L40:
	movq	%rax, %rdi
	call	puts@PLT
.L33:
	leaq	n(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	testl	%eax, %eax
	je	.L41
	movl	n(%rip), %eax
	testl	%eax, %eax
	jg	.L42
.L41:
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L44
	call	__stack_chk_fail@PLT
.L44:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.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:
