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

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

#define MAX_DATA 401

struct data {
    int mom;
    int hou;
};

int board[MAX_DATA][MAX_DATA];
int mimasita[MAX_DATA][MAX_DATA];
struct data dataset[MAX_DATA];
int n, l, ans_x1, ans_y1, ans_x2, ans_y2;

void cl_array(void);
void tansaku(int num, int x, int y);
void make_board(void);
void search_ans(int x, int y);

int main(void) {
    int i, j, ans;
    scanf("%d",&n);
    while(n != 0) {
        cl_array();
        for(i = 1; i < n; i++) {
            scanf("%d %d",&dataset[i].mom, &dataset[i].hou);
        }
        make_board();
        //puts("探索終了");
        search_ans(200, 200);
        printf("%d %d\n",ans_x2-ans_x1+1, ans_y2-ans_y1+1);
        scanf("%d",&n);
    }
    return 0;
}

void make_board(void) {
    int i;
    board[200][200] = 0;
    for(i = 1; i < n; i++) {
        tansaku(i, 200, 200);
    }
}

void tansaku(int num, int x, int y) {
    if(board[x][y] == -1 || x < 0 || y < 0
            || x >= MAX_DATA || y >= MAX_DATA || mimasita[x][y] == num) {
        return;
    }
    mimasita[x][y] = num;
    if(board[x][y] != dataset[num].mom) {
        tansaku(num, x-1, y);
        tansaku(num, x, y-1);
        tansaku(num, x+1, y);
        tansaku(num, x, y+1);
    } else {
        if(dataset[num].hou == 0) {
            board[x-1][y] = num;
        } else if(dataset[num].hou == 1) {
            board[x][y+1] = num;
        } else if(dataset[num].hou == 2) {
            board[x+1][y] = num;
        } else if(dataset[num].hou == 3) {
            board[x][y-1] = num;
        }
        return;
    }
}

void cl_array(void) {
    int i, j;
    ans_x1 = 401;
    ans_x2 = -1;
    ans_y1 = 401;
    ans_y2 = -1;
    for(i = 0; i < MAX_DATA; i++) {
        for(j = 0; j < MAX_DATA; j++) {
            mimasita[i][j] = 0;
            board[i][j] = -1;
        }
    }
}

void search_ans(int x, int y) {
    int i, j;
    for(i = 0; i < MAX_DATA; i++) {
        for(j = 0; j < MAX_DATA; j++) {
            if(board[i][j] != -1) {
                if(i < ans_x1) {
                    ans_x1 = i;
                }
                if(i > ans_x2) {
                    ans_x2 = i;
                }
                if(j < ans_y1) {
                    ans_y1 = j;
                }
                if(j > ans_y2) {
                    ans_y2 = j;
                }
            }
        }
    }
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	board
	.bss
	.align 32
	.type	board, @object
	.size	board, 643204
board:
	.zero	643204
	.globl	mimasita
	.align 32
	.type	mimasita, @object
	.size	mimasita, 643204
mimasita:
	.zero	643204
	.globl	dataset
	.align 32
	.type	dataset, @object
	.size	dataset, 3208
dataset:
	.zero	3208
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.globl	l
	.align 4
	.type	l, @object
	.size	l, 4
l:
	.zero	4
	.globl	ans_x1
	.align 4
	.type	ans_x1, @object
	.size	ans_x1, 4
ans_x1:
	.zero	4
	.globl	ans_y1
	.align 4
	.type	ans_y1, @object
	.size	ans_y1, 4
ans_y1:
	.zero	4
	.globl	ans_x2
	.align 4
	.type	ans_x2, @object
	.size	ans_x2, 4
ans_x2:
	.zero	4
	.globl	ans_y2
	.align 4
	.type	ans_y2, @object
	.size	ans_y2, 4
ans_y2:
	.zero	4
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%d %d"
.LC2:
	.string	"%d %d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	leaq	n(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	jmp	.L2
.L5:
	call	cl_array
	movl	$1, -4(%rbp)
	jmp	.L3
.L4:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	dataset(%rip), %rax
	addq	%rdx, %rax
	leaq	4(%rax), %rdx
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rcx
	leaq	dataset(%rip), %rax
	addq	%rcx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -4(%rbp)
.L3:
	movl	n(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jl	.L4
	call	make_board
	movl	$200, %esi
	movl	$200, %edi
	call	search_ans
	movl	ans_y2(%rip), %eax
	movl	ans_y1(%rip), %edx
	subl	%edx, %eax
	leal	1(%rax), %edx
	movl	ans_x2(%rip), %eax
	movl	ans_x1(%rip), %ecx
	subl	%ecx, %eax
	addl	$1, %eax
	movl	%eax, %esi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	leaq	n(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
.L2:
	movl	n(%rip), %eax
	testl	%eax, %eax
	jne	.L5
	movl	$0, %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	main, .-main
	.globl	make_board
	.type	make_board, @function
make_board:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	$0, 321600+board(%rip)
	movl	$1, -4(%rbp)
	jmp	.L8
.L9:
	movl	-4(%rbp), %eax
	movl	$200, %edx
	movl	$200, %esi
	movl	%eax, %edi
	call	tansaku
	addl	$1, -4(%rbp)
.L8:
	movl	n(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jl	.L9
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	make_board, .-make_board
	.globl	tansaku
	.type	tansaku, @function
tansaku:
.LFB8:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	%esi, -8(%rbp)
	movl	%edx, -12(%rbp)
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	board(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$-1, %eax
	je	.L19
	cmpl	$0, -8(%rbp)
	js	.L19
	cmpl	$0, -12(%rbp)
	js	.L19
	cmpl	$400, -8(%rbp)
	jg	.L19
	cmpl	$400, -12(%rbp)
	jg	.L19
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	mimasita(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -4(%rbp)
	je	.L19
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	mimasita(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	board(%rip), %rax
	movl	(%rdx,%rax), %edx
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rcx
	leaq	dataset(%rip), %rax
	movl	(%rcx,%rax), %eax
	cmpl	%eax, %edx
	je	.L14
	movl	-8(%rbp), %eax
	leal	-1(%rax), %ecx
	movl	-12(%rbp), %edx
	movl	-4(%rbp), %eax
	movl	%ecx, %esi
	movl	%eax, %edi
	call	tansaku
	movl	-12(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-8(%rbp), %ecx
	movl	-4(%rbp), %eax
	movl	%ecx, %esi
	movl	%eax, %edi
	call	tansaku
	movl	-8(%rbp), %eax
	leal	1(%rax), %ecx
	movl	-12(%rbp), %edx
	movl	-4(%rbp), %eax
	movl	%ecx, %esi
	movl	%eax, %edi
	call	tansaku
	movl	-12(%rbp), %eax
	leal	1(%rax), %edx
	movl	-8(%rbp), %ecx
	movl	-4(%rbp), %eax
	movl	%ecx, %esi
	movl	%eax, %edi
	call	tansaku
	jmp	.L10
.L14:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+dataset(%rip), %rax
	movl	(%rdx,%rax), %eax
	testl	%eax, %eax
	jne	.L15
	movl	-8(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-12(%rbp), %eax
	movslq	%eax, %rcx
	movslq	%edx, %rax
	imulq	$401, %rax, %rax
	addq	%rcx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	board(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L20
.L15:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+dataset(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$1, %eax
	jne	.L17
	movl	-12(%rbp), %eax
	addl	$1, %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	board(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L20
.L17:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+dataset(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$2, %eax
	jne	.L18
	movl	-8(%rbp), %eax
	leal	1(%rax), %edx
	movl	-12(%rbp), %eax
	movslq	%eax, %rcx
	movslq	%edx, %rax
	imulq	$401, %rax, %rax
	addq	%rcx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	board(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L20
.L18:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+dataset(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$3, %eax
	jne	.L20
	movl	-12(%rbp), %eax
	subl	$1, %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	board(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L20
.L19:
	nop
	jmp	.L10
.L20:
	nop
.L10:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	tansaku, .-tansaku
	.globl	cl_array
	.type	cl_array, @function
cl_array:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$401, ans_x1(%rip)
	movl	$-1, ans_x2(%rip)
	movl	$401, ans_y1(%rip)
	movl	$-1, ans_y2(%rip)
	movl	$0, -8(%rbp)
	jmp	.L22
.L25:
	movl	$0, -4(%rbp)
	jmp	.L23
.L24:
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	mimasita(%rip), %rax
	movl	$0, (%rdx,%rax)
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	board(%rip), %rax
	movl	$-1, (%rdx,%rax)
	addl	$1, -4(%rbp)
.L23:
	cmpl	$400, -4(%rbp)
	jle	.L24
	addl	$1, -8(%rbp)
.L22:
	cmpl	$400, -8(%rbp)
	jle	.L25
	nop
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	cl_array, .-cl_array
	.globl	search_ans
	.type	search_ans, @function
search_ans:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	movl	$0, -8(%rbp)
	jmp	.L27
.L34:
	movl	$0, -4(%rbp)
	jmp	.L28
.L33:
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	board(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$-1, %eax
	je	.L29
	movl	ans_x1(%rip), %eax
	cmpl	%eax, -8(%rbp)
	jge	.L30
	movl	-8(%rbp), %eax
	movl	%eax, ans_x1(%rip)
.L30:
	movl	ans_x2(%rip), %eax
	cmpl	%eax, -8(%rbp)
	jle	.L31
	movl	-8(%rbp), %eax
	movl	%eax, ans_x2(%rip)
.L31:
	movl	ans_y1(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jge	.L32
	movl	-4(%rbp), %eax
	movl	%eax, ans_y1(%rip)
.L32:
	movl	ans_y2(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jle	.L29
	movl	-4(%rbp), %eax
	movl	%eax, ans_y2(%rip)
.L29:
	addl	$1, -4(%rbp)
.L28:
	cmpl	$400, -4(%rbp)
	jle	.L33
	addl	$1, -8(%rbp)
.L27:
	cmpl	$400, -8(%rbp)
	jle	.L34
	nop
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	search_ans, .-search_ans
	.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	tansaku
	.type	tansaku, @function
tansaku:
.LFB41:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movslq	%edx, %rax
	leaq	board(%rip), %r9
	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
	movl	%edi, %ebx
	movslq	%esi, %rdi
	imulq	$401, %rdi, %rcx
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	addq	%rax, %rcx
	movq	%rdi, 8(%rsp)
	movl	(%r9,%rcx,4), %esi
	cmpl	$-1, %esi
	je	.L1
	cmpl	$400, %edx
	ja	.L1
	movq	%rdi, %rbp
	cmpl	$400, %edi
	ja	.L1
	imulq	$1604, %rdi, %r12
	leaq	mimasita(%rip), %rdx
	movq	%rax, %r13
	leaq	(%rdx,%rcx,4), %r15
	addq	%r9, %r12
	jmp	.L5
	.p2align 4,,10
	.p2align 3
.L18:
	movslq	%ebx, %rdx
	leaq	dataset(%rip), %rax
	movl	%ebx, (%r15)
	cmpl	%esi, (%rax,%rdx,8)
	je	.L6
	leal	-1(%rbp), %esi
	movl	%r13d, %edx
	movl	%ebx, %edi
	call	tansaku
	leal	-1(%r13), %edx
	movl	%ebp, %esi
	movl	%ebx, %edi
	call	tansaku
	leal	1(%rbp), %esi
	movl	%r13d, %edx
	movl	%ebx, %edi
	call	tansaku
	movl	4(%r12,%r13,4), %esi
	cmpl	$-1, %esi
	je	.L1
	addq	$1, %r13
	addq	$4, %r15
	cmpl	$400, %r13d
	jg	.L1
.L5:
	cmpl	%ebx, (%r15)
	jne	.L18
.L1:
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L6:
	.cfi_restore_state
	leaq	dataset(%rip), %rax
	movl	4(%rax,%rdx,8), %eax
	testl	%eax, %eax
	jne	.L8
	movslq	%r13d, %r8
	leal	-1(%rbp), %eax
.L16:
	cltq
	leaq	board(%rip), %rcx
	imulq	$401, %rax, %rax
	addq	%r8, %rax
	movl	%ebx, (%rcx,%rax,4)
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L8:
	.cfi_restore_state
	cmpl	$1, %eax
	je	.L19
	cmpl	$2, %eax
	je	.L20
	cmpl	$3, %eax
	jne	.L1
	imulq	$401, 8(%rsp), %r14
	leal	-1(%r13), %eax
	cltq
	leaq	board(%rip), %rcx
	addq	%r14, %rax
	movl	%ebx, (%rcx,%rax,4)
	jmp	.L1
.L20:
	movslq	%r13d, %r8
	leal	1(%rbp), %eax
	jmp	.L16
.L19:
	imulq	$401, 8(%rsp), %rax
	leal	1(%r13), %edx
	movslq	%edx, %rdx
	leaq	board(%rip), %rcx
	addq	%rdx, %rax
	movl	%ebx, (%rcx,%rax,4)
	jmp	.L1
	.cfi_endproc
.LFE41:
	.size	tansaku, .-tansaku
	.p2align 4
	.type	tansaku.constprop.0, @function
tansaku.constprop.0:
.LFB44:
	.cfi_startproc
	movslq	%esi, %rax
	leaq	board(%rip), %rcx
	movl	320800(%rcx,%rax,4), %edx
	cmpl	$-1, %edx
	je	.L33
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movl	%edi, %r15d
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movq	%rax, %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movslq	%edi, %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	leaq	dataset(%rip), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	leaq	320800+mimasita(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$8, %rsp
	.cfi_def_cfa_offset 64
	cmpl	$400, %esi
	ja	.L21
.L27:
	movslq	%r14d, %rbx
	cmpl	%r15d, 0(%rbp,%r14,4)
	je	.L21
	movl	%r15d, 0(%rbp,%r14,4)
	cmpl	%edx, (%r12,%r13,8)
	je	.L26
	movl	%ebx, %edx
	movl	$199, %esi
	movl	%r15d, %edi
	call	tansaku
	leal	-1(%rbx), %esi
	movl	%r15d, %edi
	call	tansaku.constprop.0
	movl	%ebx, %edx
	movl	$201, %esi
	movl	%r15d, %edi
	call	tansaku
	addl	$1, %ebx
	leaq	320804+board(%rip), %rax
	movl	(%rax,%r14,4), %edx
	addq	$1, %r14
	cmpl	$400, %ebx
	jg	.L21
	cmpl	$-1, %edx
	jne	.L27
.L21:
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L26:
	.cfi_restore_state
	movl	4(%r12,%r13,8), %eax
	testl	%eax, %eax
	jne	.L28
	leaq	board(%rip), %rax
	movl	%r15d, 319196(%rax,%rbx,4)
	jmp	.L21
	.p2align 4,,10
	.p2align 3
.L28:
	cmpl	$1, %eax
	je	.L36
	cmpl	$2, %eax
	je	.L37
	cmpl	$3, %eax
	jne	.L21
	leal	-1(%rbx), %eax
	leaq	board(%rip), %rcx
	cltq
	movl	%r15d, 320800(%rcx,%rax,4)
	jmp	.L21
	.p2align 4,,10
	.p2align 3
.L33:
	.cfi_def_cfa_offset 8
	.cfi_restore 3
	.cfi_restore 6
	.cfi_restore 12
	.cfi_restore 13
	.cfi_restore 14
	.cfi_restore 15
	ret
.L37:
	.cfi_def_cfa_offset 64
	.cfi_offset 3, -56
	.cfi_offset 6, -48
	.cfi_offset 12, -40
	.cfi_offset 13, -32
	.cfi_offset 14, -24
	.cfi_offset 15, -16
	leaq	board(%rip), %rax
	movl	%r15d, 322404(%rax,%rbx,4)
	jmp	.L21
.L36:
	leal	1(%rbx), %eax
	leaq	board(%rip), %rcx
	cltq
	movl	%r15d, 320800(%rcx,%rax,4)
	jmp	.L21
	.cfi_endproc
.LFE44:
	.size	tansaku.constprop.0, .-tansaku.constprop.0
	.p2align 4
	.globl	make_board
	.type	make_board, @function
make_board:
.LFB40:
	.cfi_startproc
	endbr64
	cmpl	$1, n(%rip)
	movl	$0, 321600+board(%rip)
	jle	.L43
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	movl	$1, %r10d
	.p2align 4,,10
	.p2align 3
.L40:
	movl	%r10d, %edi
	movl	$200, %esi
	addl	$1, %r10d
	call	tansaku.constprop.0
	cmpl	%r10d, n(%rip)
	jg	.L40
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L43:
	ret
	.cfi_endproc
.LFE40:
	.size	make_board, .-make_board
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d"
.LC1:
	.string	"%d %d"
.LC2:
	.string	"%d %d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB39:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	n(%rip), %r15
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movq	%r15, %rsi
	leaq	.LC0(%rip), %r14
	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	$24, %rsp
	.cfi_def_cfa_offset 80
.L88:
	movq	%r14, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movl	n(%rip), %ebx
	testl	%ebx, %ebx
	je	.L72
	xorl	%esi, %esi
	movl	$643204, %edx
	leaq	mimasita(%rip), %rdi
	movl	$401, ans_x1(%rip)
	movl	$-1, ans_x2(%rip)
	movl	$401, ans_y1(%rip)
	movl	$-1, ans_y2(%rip)
	call	memset@PLT
	movl	$643204, %edx
	movl	$255, %esi
	leaq	board(%rip), %rdi
	call	memset@PLT
	cmpl	$1, %ebx
	jle	.L48
	leaq	8+dataset(%rip), %rbx
	movl	$1, %ebp
.L49:
	leaq	4(%rbx), %rdx
	movq	%rbx, %rsi
	leaq	.LC1(%rip), %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movl	n(%rip), %eax
	addl	$1, %ebp
	addq	$8, %rbx
	cmpl	%ebp, %eax
	jg	.L49
	movl	$0, 321600+board(%rip)
	cmpl	$1, %eax
	jle	.L52
	movl	$1, %r10d
.L50:
	movl	%r10d, %edi
	movl	$200, %esi
	addl	$1, %r10d
	call	tansaku.constprop.0
	cmpl	n(%rip), %r10d
	jl	.L50
.L52:
	movl	ans_y2(%rip), %eax
	movl	ans_x1(%rip), %esi
	xorl	%ebp, %ebp
	xorl	%ebx, %ebx
	movl	ans_x2(%rip), %edi
	xorl	%r12d, %r12d
	xorl	%r11d, %r11d
	xorl	%edx, %edx
	movl	ans_y1(%rip), %r8d
	movl	%esi, 12(%rsp)
	movl	%eax, %r9d
	leaq	board(%rip), %r13
	movl	%edi, (%rsp)
	movl	%r8d, 4(%rsp)
	movl	%eax, 8(%rsp)
.L51:
	xorl	%eax, %eax
.L57:
	cmpl	$-1, 0(%r13,%rax,4)
	movl	%eax, %ecx
	je	.L53
	cmpl	%esi, %edx
	jge	.L54
	movl	%edx, %esi
	movl	$1, %r11d
.L54:
	cmpl	%edi, %edx
	jle	.L55
	movl	%edx, %edi
	movl	$1, %ebx
.L55:
	movl	%eax, %r10d
	cmpl	%r8d, %eax
	jge	.L56
	movl	%ecx, %r8d
	movl	$1, %ebp
.L56:
	cmpl	%r9d, %r10d
	jle	.L53
	movl	%ecx, %r9d
	movl	$1, %r12d
.L53:
	addq	$1, %rax
	cmpq	$401, %rax
	jne	.L57
	addl	$1, %edx
	addq	$1604, %r13
	cmpl	$401, %edx
	jne	.L51
	testb	%r12b, %r12b
	je	.L58
	movl	%r9d, ans_y2(%rip)
	movl	%r9d, 8(%rsp)
.L58:
	testb	%bpl, %bpl
	je	.L59
	movl	%r8d, ans_y1(%rip)
	movl	%r8d, 4(%rsp)
.L59:
	testb	%bl, %bl
	je	.L60
	movl	%edi, ans_x2(%rip)
	movl	%edi, (%rsp)
.L60:
	testb	%r11b, %r11b
	je	.L61
	movl	(%rsp), %edx
	movl	8(%rsp), %ecx
	movl	%esi, ans_x1(%rip)
	subl	4(%rsp), %ecx
	addl	$1, %ecx
	subl	%esi, %edx
.L89:
	leaq	.LC2(%rip), %rsi
	addl	$1, %edx
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movq	%r15, %rsi
	jmp	.L88
.L61:
	movl	8(%rsp), %ecx
	subl	4(%rsp), %ecx
	movl	(%rsp), %edx
	addl	$1, %ecx
	subl	12(%rsp), %edx
	jmp	.L89
.L48:
	movl	$0, 321600+board(%rip)
	jmp	.L52
.L72:
	addq	$24, %rsp
	.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
	.cfi_endproc
.LFE39:
	.size	main, .-main
	.text
	.p2align 4
	.globl	cl_array
	.type	cl_array, @function
cl_array:
.LFB42:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	movl	$643204, %edx
	xorl	%esi, %esi
	movl	$401, ans_x1(%rip)
	leaq	mimasita(%rip), %rdi
	movl	$-1, ans_x2(%rip)
	movl	$401, ans_y1(%rip)
	movl	$-1, ans_y2(%rip)
	call	memset@PLT
	movl	$643204, %edx
	movl	$255, %esi
	leaq	board(%rip), %rdi
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	jmp	memset@PLT
	.cfi_endproc
.LFE42:
	.size	cl_array, .-cl_array
	.p2align 4
	.globl	search_ans
	.type	search_ans, @function
search_ans:
.LFB43:
	.cfi_startproc
	endbr64
	movl	ans_x1(%rip), %r8d
	movl	ans_x2(%rip), %r9d
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	xorl	%edx, %edx
	movl	ans_y1(%rip), %r10d
	movl	ans_y2(%rip), %r11d
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	xorl	%r13d, %r13d
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	leaq	board(%rip), %rdi
	xorl	%r12d, %r12d
	xorl	%ebp, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	xorl	%ebx, %ebx
.L98:
	xorl	%eax, %eax
	.p2align 4,,10
	.p2align 3
.L97:
	cmpl	$-1, (%rdi,%rax,4)
	movl	%eax, %ecx
	je	.L93
	cmpl	%r8d, %edx
	jge	.L94
	movl	%edx, %r8d
	movl	$1, %ebx
.L94:
	cmpl	%r9d, %edx
	jle	.L95
	movl	%edx, %r9d
	movl	$1, %ebp
.L95:
	movl	%eax, %esi
	cmpl	%r10d, %eax
	jge	.L96
	movl	%ecx, %r10d
	movl	$1, %r12d
.L96:
	cmpl	%r11d, %esi
	jle	.L93
	movl	%ecx, %r11d
	movl	$1, %r13d
.L93:
	addq	$1, %rax
	cmpq	$401, %rax
	jne	.L97
	addl	$1, %edx
	addq	$1604, %rdi
	cmpl	$401, %edx
	jne	.L98
	testb	%r13b, %r13b
	je	.L99
	movl	%r11d, ans_y2(%rip)
.L99:
	testb	%r12b, %r12b
	je	.L100
	movl	%r10d, ans_y1(%rip)
.L100:
	testb	%bpl, %bpl
	je	.L101
	movl	%r9d, ans_x2(%rip)
.L101:
	testb	%bl, %bl
	je	.L92
	movl	%r8d, ans_x1(%rip)
.L92:
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE43:
	.size	search_ans, .-search_ans
	.globl	ans_y2
	.bss
	.align 4
	.type	ans_y2, @object
	.size	ans_y2, 4
ans_y2:
	.zero	4
	.globl	ans_x2
	.align 4
	.type	ans_x2, @object
	.size	ans_x2, 4
ans_x2:
	.zero	4
	.globl	ans_y1
	.align 4
	.type	ans_y1, @object
	.size	ans_y1, 4
ans_y1:
	.zero	4
	.globl	ans_x1
	.align 4
	.type	ans_x1, @object
	.size	ans_x1, 4
ans_x1:
	.zero	4
	.globl	l
	.align 4
	.type	l, @object
	.size	l, 4
l:
	.zero	4
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.globl	dataset
	.align 32
	.type	dataset, @object
	.size	dataset, 3208
dataset:
	.zero	3208
	.globl	mimasita
	.align 32
	.type	mimasita, @object
	.size	mimasita, 643204
mimasita:
	.zero	643204
	.globl	board
	.align 32
	.type	board, @object
	.size	board, 643204
board:
	.zero	643204
	.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	tansaku
	.type	tansaku, @function
tansaku:
.LFB41:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movslq	%edx, %rax
	leaq	board(%rip), %r9
	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
	movl	%edi, %ebx
	movslq	%esi, %rdi
	imulq	$401, %rdi, %rcx
	subq	$24, %rsp
	.cfi_def_cfa_offset 80
	addq	%rax, %rcx
	movq	%rdi, 8(%rsp)
	movl	(%r9,%rcx,4), %esi
	cmpl	$-1, %esi
	je	.L1
	cmpl	$400, %edx
	ja	.L1
	movq	%rdi, %rbp
	cmpl	$400, %edi
	ja	.L1
	imulq	$1604, %rdi, %r12
	leaq	mimasita(%rip), %rdx
	movq	%rax, %r13
	leaq	(%rdx,%rcx,4), %r15
	addq	%r9, %r12
	jmp	.L5
	.p2align 4,,10
	.p2align 3
.L18:
	movslq	%ebx, %rdx
	leaq	dataset(%rip), %rax
	movl	%ebx, (%r15)
	cmpl	%esi, (%rax,%rdx,8)
	je	.L6
	leal	-1(%rbp), %esi
	movl	%r13d, %edx
	movl	%ebx, %edi
	call	tansaku
	leal	-1(%r13), %edx
	movl	%ebp, %esi
	movl	%ebx, %edi
	call	tansaku
	leal	1(%rbp), %esi
	movl	%r13d, %edx
	movl	%ebx, %edi
	call	tansaku
	movl	4(%r12,%r13,4), %esi
	cmpl	$-1, %esi
	je	.L1
	addq	$1, %r13
	addq	$4, %r15
	cmpl	$400, %r13d
	jg	.L1
.L5:
	cmpl	%ebx, (%r15)
	jne	.L18
.L1:
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L6:
	.cfi_restore_state
	leaq	dataset(%rip), %rax
	movl	4(%rax,%rdx,8), %eax
	testl	%eax, %eax
	jne	.L8
	movslq	%r13d, %r8
	leal	-1(%rbp), %eax
.L16:
	cltq
	leaq	board(%rip), %rcx
	imulq	$401, %rax, %rax
	addq	%r8, %rax
	movl	%ebx, (%rcx,%rax,4)
	addq	$24, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L8:
	.cfi_restore_state
	cmpl	$1, %eax
	je	.L19
	cmpl	$2, %eax
	je	.L20
	cmpl	$3, %eax
	jne	.L1
	imulq	$401, 8(%rsp), %r14
	leal	-1(%r13), %eax
	cltq
	leaq	board(%rip), %rcx
	addq	%r14, %rax
	movl	%ebx, (%rcx,%rax,4)
	jmp	.L1
.L20:
	movslq	%r13d, %r8
	leal	1(%rbp), %eax
	jmp	.L16
.L19:
	imulq	$401, 8(%rsp), %rax
	leal	1(%r13), %edx
	movslq	%edx, %rdx
	leaq	board(%rip), %rcx
	addq	%rdx, %rax
	movl	%ebx, (%rcx,%rax,4)
	jmp	.L1
	.cfi_endproc
.LFE41:
	.size	tansaku, .-tansaku
	.p2align 4
	.type	tansaku.constprop.0, @function
tansaku.constprop.0:
.LFB44:
	.cfi_startproc
	movslq	%esi, %rax
	leaq	board(%rip), %rcx
	movl	320800(%rcx,%rax,4), %edx
	cmpl	$-1, %edx
	je	.L33
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movl	%edi, %r15d
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movq	%rax, %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	movslq	%edi, %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	leaq	dataset(%rip), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	leaq	320800+mimasita(%rip), %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$8, %rsp
	.cfi_def_cfa_offset 64
	cmpl	$400, %esi
	ja	.L21
.L27:
	movslq	%r14d, %rbx
	cmpl	%r15d, 0(%rbp,%r14,4)
	je	.L21
	movl	%r15d, 0(%rbp,%r14,4)
	cmpl	%edx, (%r12,%r13,8)
	je	.L26
	movl	%ebx, %edx
	movl	$199, %esi
	movl	%r15d, %edi
	call	tansaku
	leal	-1(%rbx), %esi
	movl	%r15d, %edi
	call	tansaku.constprop.0
	movl	%ebx, %edx
	movl	$201, %esi
	movl	%r15d, %edi
	call	tansaku
	addl	$1, %ebx
	leaq	320804+board(%rip), %rax
	movl	(%rax,%r14,4), %edx
	addq	$1, %r14
	cmpl	$400, %ebx
	jg	.L21
	cmpl	$-1, %edx
	jne	.L27
.L21:
	addq	$8, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L26:
	.cfi_restore_state
	movl	4(%r12,%r13,8), %eax
	testl	%eax, %eax
	jne	.L28
	leaq	board(%rip), %rax
	movl	%r15d, 319196(%rax,%rbx,4)
	jmp	.L21
	.p2align 4,,10
	.p2align 3
.L28:
	cmpl	$1, %eax
	je	.L36
	cmpl	$2, %eax
	je	.L37
	cmpl	$3, %eax
	jne	.L21
	leal	-1(%rbx), %eax
	leaq	board(%rip), %rcx
	cltq
	movl	%r15d, 320800(%rcx,%rax,4)
	jmp	.L21
	.p2align 4,,10
	.p2align 3
.L33:
	.cfi_def_cfa_offset 8
	.cfi_restore 3
	.cfi_restore 6
	.cfi_restore 12
	.cfi_restore 13
	.cfi_restore 14
	.cfi_restore 15
	ret
.L37:
	.cfi_def_cfa_offset 64
	.cfi_offset 3, -56
	.cfi_offset 6, -48
	.cfi_offset 12, -40
	.cfi_offset 13, -32
	.cfi_offset 14, -24
	.cfi_offset 15, -16
	leaq	board(%rip), %rax
	movl	%r15d, 322404(%rax,%rbx,4)
	jmp	.L21
.L36:
	leal	1(%rbx), %eax
	leaq	board(%rip), %rcx
	cltq
	movl	%r15d, 320800(%rcx,%rax,4)
	jmp	.L21
	.cfi_endproc
.LFE44:
	.size	tansaku.constprop.0, .-tansaku.constprop.0
	.p2align 4
	.globl	make_board
	.type	make_board, @function
make_board:
.LFB40:
	.cfi_startproc
	endbr64
	cmpl	$1, n(%rip)
	movl	$0, 321600+board(%rip)
	jle	.L43
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	movl	$1, %r10d
	.p2align 4,,10
	.p2align 3
.L40:
	movl	%r10d, %edi
	movl	$200, %esi
	addl	$1, %r10d
	call	tansaku.constprop.0
	cmpl	%r10d, n(%rip)
	jg	.L40
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L43:
	ret
	.cfi_endproc
.LFE40:
	.size	make_board, .-make_board
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d"
.LC1:
	.string	"%d %d"
.LC2:
	.string	"%d %d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB39:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	n(%rip), %r15
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movq	%r15, %rsi
	leaq	.LC0(%rip), %r14
	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	$24, %rsp
	.cfi_def_cfa_offset 80
.L88:
	movq	%r14, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movl	n(%rip), %ebx
	testl	%ebx, %ebx
	je	.L72
	xorl	%esi, %esi
	movl	$643204, %edx
	leaq	mimasita(%rip), %rdi
	movl	$401, ans_x1(%rip)
	movl	$-1, ans_x2(%rip)
	movl	$401, ans_y1(%rip)
	movl	$-1, ans_y2(%rip)
	call	memset@PLT
	movl	$643204, %edx
	movl	$255, %esi
	leaq	board(%rip), %rdi
	call	memset@PLT
	cmpl	$1, %ebx
	jle	.L48
	leaq	8+dataset(%rip), %rbx
	movl	$1, %ebp
.L49:
	leaq	4(%rbx), %rdx
	movq	%rbx, %rsi
	leaq	.LC1(%rip), %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movl	n(%rip), %eax
	addl	$1, %ebp
	addq	$8, %rbx
	cmpl	%ebp, %eax
	jg	.L49
	movl	$0, 321600+board(%rip)
	cmpl	$1, %eax
	jle	.L52
	movl	$1, %r10d
.L50:
	movl	%r10d, %edi
	movl	$200, %esi
	addl	$1, %r10d
	call	tansaku.constprop.0
	cmpl	n(%rip), %r10d
	jl	.L50
.L52:
	movl	ans_y2(%rip), %eax
	movl	ans_x1(%rip), %esi
	xorl	%ebp, %ebp
	xorl	%ebx, %ebx
	movl	ans_x2(%rip), %edi
	xorl	%r12d, %r12d
	xorl	%r11d, %r11d
	xorl	%edx, %edx
	movl	ans_y1(%rip), %r8d
	movl	%esi, 12(%rsp)
	movl	%eax, %r9d
	leaq	board(%rip), %r13
	movl	%edi, (%rsp)
	movl	%r8d, 4(%rsp)
	movl	%eax, 8(%rsp)
.L51:
	xorl	%eax, %eax
.L57:
	cmpl	$-1, 0(%r13,%rax,4)
	movl	%eax, %ecx
	je	.L53
	cmpl	%esi, %edx
	jge	.L54
	movl	%edx, %esi
	movl	$1, %r11d
.L54:
	cmpl	%edi, %edx
	jle	.L55
	movl	%edx, %edi
	movl	$1, %ebx
.L55:
	movl	%eax, %r10d
	cmpl	%r8d, %eax
	jge	.L56
	movl	%ecx, %r8d
	movl	$1, %ebp
.L56:
	cmpl	%r9d, %r10d
	jle	.L53
	movl	%ecx, %r9d
	movl	$1, %r12d
.L53:
	addq	$1, %rax
	cmpq	$401, %rax
	jne	.L57
	addl	$1, %edx
	addq	$1604, %r13
	cmpl	$401, %edx
	jne	.L51
	testb	%r12b, %r12b
	je	.L58
	movl	%r9d, ans_y2(%rip)
	movl	%r9d, 8(%rsp)
.L58:
	testb	%bpl, %bpl
	je	.L59
	movl	%r8d, ans_y1(%rip)
	movl	%r8d, 4(%rsp)
.L59:
	testb	%bl, %bl
	je	.L60
	movl	%edi, ans_x2(%rip)
	movl	%edi, (%rsp)
.L60:
	testb	%r11b, %r11b
	je	.L61
	movl	(%rsp), %edx
	movl	8(%rsp), %ecx
	movl	%esi, ans_x1(%rip)
	subl	4(%rsp), %ecx
	addl	$1, %ecx
	subl	%esi, %edx
.L89:
	leaq	.LC2(%rip), %rsi
	addl	$1, %edx
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movq	%r15, %rsi
	jmp	.L88
.L61:
	movl	8(%rsp), %ecx
	subl	4(%rsp), %ecx
	movl	(%rsp), %edx
	addl	$1, %ecx
	subl	12(%rsp), %edx
	jmp	.L89
.L48:
	movl	$0, 321600+board(%rip)
	jmp	.L52
.L72:
	addq	$24, %rsp
	.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
	.cfi_endproc
.LFE39:
	.size	main, .-main
	.text
	.p2align 4
	.globl	cl_array
	.type	cl_array, @function
cl_array:
.LFB42:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	movl	$643204, %edx
	xorl	%esi, %esi
	movl	$401, ans_x1(%rip)
	leaq	mimasita(%rip), %rdi
	movl	$-1, ans_x2(%rip)
	movl	$401, ans_y1(%rip)
	movl	$-1, ans_y2(%rip)
	call	memset@PLT
	movl	$643204, %edx
	movl	$255, %esi
	leaq	board(%rip), %rdi
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	jmp	memset@PLT
	.cfi_endproc
.LFE42:
	.size	cl_array, .-cl_array
	.p2align 4
	.globl	search_ans
	.type	search_ans, @function
search_ans:
.LFB43:
	.cfi_startproc
	endbr64
	movl	ans_x1(%rip), %r8d
	movl	ans_x2(%rip), %r9d
	pushq	%r13
	.cfi_def_cfa_offset 16
	.cfi_offset 13, -16
	xorl	%edx, %edx
	movl	ans_y1(%rip), %r10d
	movl	ans_y2(%rip), %r11d
	pushq	%r12
	.cfi_def_cfa_offset 24
	.cfi_offset 12, -24
	xorl	%r13d, %r13d
	pushq	%rbp
	.cfi_def_cfa_offset 32
	.cfi_offset 6, -32
	leaq	board(%rip), %rdi
	xorl	%r12d, %r12d
	xorl	%ebp, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 40
	.cfi_offset 3, -40
	xorl	%ebx, %ebx
.L98:
	xorl	%eax, %eax
	.p2align 4,,10
	.p2align 3
.L97:
	cmpl	$-1, (%rdi,%rax,4)
	movl	%eax, %ecx
	je	.L93
	cmpl	%r8d, %edx
	jge	.L94
	movl	%edx, %r8d
	movl	$1, %ebx
.L94:
	cmpl	%r9d, %edx
	jle	.L95
	movl	%edx, %r9d
	movl	$1, %ebp
.L95:
	movl	%eax, %esi
	cmpl	%r10d, %eax
	jge	.L96
	movl	%ecx, %r10d
	movl	$1, %r12d
.L96:
	cmpl	%r11d, %esi
	jle	.L93
	movl	%ecx, %r11d
	movl	$1, %r13d
.L93:
	addq	$1, %rax
	cmpq	$401, %rax
	jne	.L97
	addl	$1, %edx
	addq	$1604, %rdi
	cmpl	$401, %edx
	jne	.L98
	testb	%r13b, %r13b
	je	.L99
	movl	%r11d, ans_y2(%rip)
.L99:
	testb	%r12b, %r12b
	je	.L100
	movl	%r10d, ans_y1(%rip)
.L100:
	testb	%bpl, %bpl
	je	.L101
	movl	%r9d, ans_x2(%rip)
.L101:
	testb	%bl, %bl
	je	.L92
	movl	%r8d, ans_x1(%rip)
.L92:
	popq	%rbx
	.cfi_def_cfa_offset 32
	popq	%rbp
	.cfi_def_cfa_offset 24
	popq	%r12
	.cfi_def_cfa_offset 16
	popq	%r13
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE43:
	.size	search_ans, .-search_ans
	.globl	ans_y2
	.bss
	.align 4
	.type	ans_y2, @object
	.size	ans_y2, 4
ans_y2:
	.zero	4
	.globl	ans_x2
	.align 4
	.type	ans_x2, @object
	.size	ans_x2, 4
ans_x2:
	.zero	4
	.globl	ans_y1
	.align 4
	.type	ans_y1, @object
	.size	ans_y1, 4
ans_y1:
	.zero	4
	.globl	ans_x1
	.align 4
	.type	ans_x1, @object
	.size	ans_x1, 4
ans_x1:
	.zero	4
	.globl	l
	.align 4
	.type	l, @object
	.size	l, 4
l:
	.zero	4
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.globl	dataset
	.align 32
	.type	dataset, @object
	.size	dataset, 3208
dataset:
	.zero	3208
	.globl	mimasita
	.align 32
	.type	mimasita, @object
	.size	mimasita, 643204
mimasita:
	.zero	643204
	.globl	board
	.align 32
	.type	board, @object
	.size	board, 643204
board:
	.zero	643204
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:

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

#define MAX_DATA 401

struct data {
    int mom;
    int hou;
};

int board[MAX_DATA][MAX_DATA];
int mimasita[MAX_DATA][MAX_DATA];
struct data dataset[MAX_DATA];
int n, l, ans_x1, ans_y1, ans_x2, ans_y2;

void cl_array(void);
void tansaku(int num, int x, int y);
void make_board(void);
void search_ans(int x, int y);

int main(void) {
    int i, j, ans;
    scanf("%d",&n);
    while(n != 0) {
        cl_array();
        for(i = 1; i < n; i++) {
            scanf("%d %d",&dataset[i].mom, &dataset[i].hou);
        }
        make_board();
        //puts("探索終了");
        search_ans(200, 200);
        printf("%d %d\n",ans_x2-ans_x1+1, ans_y2-ans_y1+1);
        scanf("%d",&n);
    }
    return 0;
}

void make_board(void) {
    int i;
    board[200][200] = 0;
    for(i = 1; i < n; i++) {
        tansaku(i, 200, 200);
    }
}

void tansaku(int num, int x, int y) {
    if(board[x][y] == -1 || x < 0 || y < 0
            || x >= MAX_DATA || y >= MAX_DATA || mimasita[x][y] == num) {
        return;
    }
    mimasita[x][y] = num;
    if(board[x][y] != dataset[num].mom) {
        tansaku(num, x-1, y);
        tansaku(num, x, y-1);
        tansaku(num, x+1, y);
        tansaku(num, x, y+1);
    } else {
        if(dataset[num].hou == 0) {
            board[x-1][y] = num;
        } else if(dataset[num].hou == 1) {
            board[x][y+1] = num;
        } else if(dataset[num].hou == 2) {
            board[x+1][y] = num;
        } else if(dataset[num].hou == 3) {
            board[x][y-1] = num;
        }
        return;
    }
}

void cl_array(void) {
    int i, j;
    ans_x1 = 401;
    ans_x2 = -1;
    ans_y1 = 401;
    ans_y2 = -1;
    for(i = 0; i < MAX_DATA; i++) {
        for(j = 0; j < MAX_DATA; j++) {
            mimasita[i][j] = 0;
            board[i][j] = -1;
        }
    }
}

void search_ans(int x, int y) {
    int i, j;
    for(i = 0; i < MAX_DATA; i++) {
        for(j = 0; j < MAX_DATA; j++) {
            if(board[i][j] != -1) {
                if(i < ans_x1) {
                    ans_x1 = i;
                }
                if(i > ans_x2) {
                    ans_x2 = i;
                }
                if(j < ans_y1) {
                    ans_y1 = j;
                }
                if(j > ans_y2) {
                    ans_y2 = j;
                }
            }
        }
    }
}
1
5
0 0
0 1
0 2
0 3
12
0 0
1 1
2 0
3 1
4 1
5 1
6 2
7 2
8 2
9 3
10 3
10
0 2
1 2
2 2
3 2
2 1
5 1
6 1
7 1
8 1
0
 1
5
0 0
0 1
0 2
0 3
12
0 0
1 0
2 0
3 1
4 1
5 1
6 2
7 2
8 2
9 3
10 3
10
0 2
1 3
2 2
3 2
2 1
5 1
6 1
7 1
8 1
0
 1
5
0 0
0 0
0 2
0 3
12
0 0
1 0
2 0
3 1
4 1
5 1
6 2
7 2
8 2
9 3
10 3
10
0 2
1 3
2 2
3 2
2 1
5 1
6 1
7 1
8 1
0
 1
5
0 0
0 0
0 2
0 3
12
0 0
1 0
2 0
3 0
4 1
5 1
6 2
7 2
8 2
9 3
10 3
10
0 2
1 3
2 2
3 2
2 1
5 1
6 1
7 1
8 1
0
 1
5
0 0
0 0
0 2
0 3
12
0 0
1 0
2 0
3 0
4 1
5 1
6 2
3 2
8 2
9 3
10 3
10
0 2
1 3
2 2
3 2
2 1
5 1
6 1
7 1
8 1
0
 1
5
0 0
0 1
0 2
0 3
12
0 0
1 0
2 0
3 1
4 1
5 1
6 2
7 2
8 2
9 3
10 3
10
0 2
1 2
2 2
3 2
2 1
5 1
6 1
7 1
8 2
0
 1
5
0 0
0 1
0 2
0 3
12
0 0
1 0
2 0
3 1
4 2
5 1
6 2
7 2
8 2
9 3
10 3
10
0 2
1 3
2 2
3 2
2 1
5 1
6 1
7 1
8 1
0
 1
5
0 0
0 1
0 2
0 3
12
0 0
1 0
2 0
3 1
4 1
5 1
6 2
7 2
8 2
9 3
10 3
10
0 2
1 2
2 1
3 2
2 1
5 1
6 1
7 1
8 2
0
 1
5
0 0
0 1
0 2
0 3
12
0 0
1 0
2 0
3 1
4 2
5 1
6 2
7 1
8 1
9 3
10 3
10
0 2
1 3
2 2
3 2
2 1
5 1
6 1
7 1
8 1
0
 1
5
0 0
0 1
0 2
0 3
12
0 1
1 0
2 0
3 1
4 2
5 1
6 2
7 1
8 1
9 3
10 3
10
0 2
1 3
2 2
3 2
2 1
5 1
6 1
7 1
8 1
0

1 1
3 3
4 5
5 6
 1 1
3 3
4 4
4 6
 1 1
3 2
4 4
4 6
 1 1
3 2
5 3
4 6
 1 1
3 2
5 5
4 6
 1 1
3 3
4 4
5 5
 1 1
3 3
5 3
4 6
 1 1
3 3
4 4
4 5
 1 1
3 3
4 5
4 6
 1 1
3 3
3 6
4 6

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

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

#define MAX_DATA 401

struct data {
    int mom;
    int hou;
};

int board[MAX_DATA][MAX_DATA];
int mimasita[MAX_DATA][MAX_DATA];
struct data dataset[MAX_DATA];
int n, l, ans_x1, ans_y1, ans_x2, ans_y2;

void cl_array(void);
void tansaku(int num, int x, int y);
void make_board(void);
void search_ans(int x, int y);

int main(void) {
    int i, j, ans;
    scanf("%d",&n);
    while(n != 0) {
        cl_array();
        for(i = 1; i < n; i++) {
            scanf("%d %d",&dataset[i].mom, &dataset[i].hou);
        }
        make_board();
        //puts("探索終了");
        search_ans(200, 200);
        printf("%d %d\n",ans_x2-ans_x1+1, ans_y2-ans_y1+1);
        scanf("%d",&n);
    }
    return 0;
}

void make_board(void) {
    int i;
    board[200][200] = 0;
    for(i = 1; i < n; i++) {
        tansaku(i, 200, 200);
    }
}

void tansaku(int num, int x, int y) {
    if(board[x][y] == -1 || x < 0 || y < 0
            || x >= MAX_DATA || y >= MAX_DATA || mimasita[x][y] == num) {
        return;
    }
    mimasita[x][y] = num;
    if(board[x][y] != dataset[num].mom) {
        tansaku(num, x-1, y);
        tansaku(num, x, y-1);
        tansaku(num, x+1, y);
        tansaku(num, x, y+1);
    } else {
        if(dataset[num].hou == 0) {
            board[x-1][y] = num;
        } else if(dataset[num].hou == 1) {
            board[x][y+1] = num;
        } else if(dataset[num].hou == 2) {
            board[x+1][y] = num;
        } else if(dataset[num].hou == 3) {
            board[x][y-1] = num;
        }
        return;
    }
}

void cl_array(void) {
    int i, j;
    ans_x1 = 401;
    ans_x2 = -1;
    ans_y1 = 401;
    ans_y2 = -1;
    for(i = 0; i < MAX_DATA; i++) {
        for(j = 0; j < MAX_DATA; j++) {
            mimasita[i][j] = 0;
            board[i][j] = -1;
        }
    }
}

void search_ans(int x, int y) {
    int i, j;
    for(i = 0; i < MAX_DATA; i++) {
        for(j = 0; j < MAX_DATA; j++) {
            if(board[i][j] != -1) {
                if(i < ans_x1) {
                    ans_x1 = i;
                }
                if(i > ans_x2) {
                    ans_x2 = i;
                }
                if(j < ans_y1) {
                    ans_y1 = j;
                }
                if(j > ans_y2) {
                    ans_y2 = j;
                }
            }
        }
    }
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	board
	.bss
	.align 32
	.type	board, @object
	.size	board, 643204
board:
	.zero	643204
	.globl	mimasita
	.align 32
	.type	mimasita, @object
	.size	mimasita, 643204
mimasita:
	.zero	643204
	.globl	dataset
	.align 32
	.type	dataset, @object
	.size	dataset, 3208
dataset:
	.zero	3208
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.globl	l
	.align 4
	.type	l, @object
	.size	l, 4
l:
	.zero	4
	.globl	ans_x1
	.align 4
	.type	ans_x1, @object
	.size	ans_x1, 4
ans_x1:
	.zero	4
	.globl	ans_y1
	.align 4
	.type	ans_y1, @object
	.size	ans_y1, 4
ans_y1:
	.zero	4
	.globl	ans_x2
	.align 4
	.type	ans_x2, @object
	.size	ans_x2, 4
ans_x2:
	.zero	4
	.globl	ans_y2
	.align 4
	.type	ans_y2, @object
	.size	ans_y2, 4
ans_y2:
	.zero	4
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%d %d"
.LC2:
	.string	"%d %d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	leaq	n(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	jmp	.L2
.L5:
	call	cl_array
	movl	$1, -4(%rbp)
	jmp	.L3
.L4:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	dataset(%rip), %rax
	addq	%rdx, %rax
	leaq	4(%rax), %rdx
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rcx
	leaq	dataset(%rip), %rax
	addq	%rcx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -4(%rbp)
.L3:
	movl	n(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jl	.L4
	call	make_board
	movl	$200, %esi
	movl	$200, %edi
	call	search_ans
	movl	ans_y2(%rip), %eax
	movl	ans_y1(%rip), %edx
	subl	%edx, %eax
	leal	1(%rax), %edx
	movl	ans_x2(%rip), %eax
	movl	ans_x1(%rip), %ecx
	subl	%ecx, %eax
	addl	$1, %eax
	movl	%eax, %esi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	leaq	n(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
.L2:
	movl	n(%rip), %eax
	testl	%eax, %eax
	jne	.L5
	movl	$0, %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	main, .-main
	.globl	make_board
	.type	make_board, @function
make_board:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	$0, 321600+board(%rip)
	movl	$1, -4(%rbp)
	jmp	.L8
.L9:
	movl	-4(%rbp), %eax
	movl	$200, %edx
	movl	$200, %esi
	movl	%eax, %edi
	call	tansaku
	addl	$1, -4(%rbp)
.L8:
	movl	n(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jl	.L9
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	make_board, .-make_board
	.globl	tansaku
	.type	tansaku, @function
tansaku:
.LFB8:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	%esi, -8(%rbp)
	movl	%edx, -12(%rbp)
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	board(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$-1, %eax
	je	.L19
	cmpl	$0, -8(%rbp)
	js	.L19
	cmpl	$0, -12(%rbp)
	js	.L19
	cmpl	$400, -8(%rbp)
	jg	.L19
	cmpl	$400, -12(%rbp)
	jg	.L19
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	mimasita(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -4(%rbp)
	je	.L19
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	mimasita(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	board(%rip), %rax
	movl	(%rdx,%rax), %edx
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rcx
	leaq	dataset(%rip), %rax
	movl	(%rcx,%rax), %eax
	cmpl	%eax, %edx
	je	.L14
	movl	-8(%rbp), %eax
	leal	-1(%rax), %ecx
	movl	-12(%rbp), %edx
	movl	-4(%rbp), %eax
	movl	%ecx, %esi
	movl	%eax, %edi
	call	tansaku
	movl	-12(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-8(%rbp), %ecx
	movl	-4(%rbp), %eax
	movl	%ecx, %esi
	movl	%eax, %edi
	call	tansaku
	movl	-8(%rbp), %eax
	leal	1(%rax), %ecx
	movl	-12(%rbp), %edx
	movl	-4(%rbp), %eax
	movl	%ecx, %esi
	movl	%eax, %edi
	call	tansaku
	movl	-12(%rbp), %eax
	leal	1(%rax), %edx
	movl	-8(%rbp), %ecx
	movl	-4(%rbp), %eax
	movl	%ecx, %esi
	movl	%eax, %edi
	call	tansaku
	jmp	.L10
.L14:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+dataset(%rip), %rax
	movl	(%rdx,%rax), %eax
	testl	%eax, %eax
	jne	.L15
	movl	-8(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-12(%rbp), %eax
	movslq	%eax, %rcx
	movslq	%edx, %rax
	imulq	$401, %rax, %rax
	addq	%rcx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	board(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L20
.L15:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+dataset(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$1, %eax
	jne	.L17
	movl	-12(%rbp), %eax
	addl	$1, %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	board(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L20
.L17:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+dataset(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$2, %eax
	jne	.L18
	movl	-8(%rbp), %eax
	leal	1(%rax), %edx
	movl	-12(%rbp), %eax
	movslq	%eax, %rcx
	movslq	%edx, %rax
	imulq	$401, %rax, %rax
	addq	%rcx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	board(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L20
.L18:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+dataset(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$3, %eax
	jne	.L20
	movl	-12(%rbp), %eax
	subl	$1, %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	board(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L20
.L19:
	nop
	jmp	.L10
.L20:
	nop
.L10:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	tansaku, .-tansaku
	.globl	cl_array
	.type	cl_array, @function
cl_array:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$401, ans_x1(%rip)
	movl	$-1, ans_x2(%rip)
	movl	$401, ans_y1(%rip)
	movl	$-1, ans_y2(%rip)
	movl	$0, -8(%rbp)
	jmp	.L22
.L25:
	movl	$0, -4(%rbp)
	jmp	.L23
.L24:
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	mimasita(%rip), %rax
	movl	$0, (%rdx,%rax)
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	board(%rip), %rax
	movl	$-1, (%rdx,%rax)
	addl	$1, -4(%rbp)
.L23:
	cmpl	$400, -4(%rbp)
	jle	.L24
	addl	$1, -8(%rbp)
.L22:
	cmpl	$400, -8(%rbp)
	jle	.L25
	nop
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	cl_array, .-cl_array
	.globl	search_ans
	.type	search_ans, @function
search_ans:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	movl	$0, -8(%rbp)
	jmp	.L27
.L34:
	movl	$0, -4(%rbp)
	jmp	.L28
.L33:
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	board(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$-1, %eax
	je	.L29
	movl	ans_x1(%rip), %eax
	cmpl	%eax, -8(%rbp)
	jge	.L30
	movl	-8(%rbp), %eax
	movl	%eax, ans_x1(%rip)
.L30:
	movl	ans_x2(%rip), %eax
	cmpl	%eax, -8(%rbp)
	jle	.L31
	movl	-8(%rbp), %eax
	movl	%eax, ans_x2(%rip)
.L31:
	movl	ans_y1(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jge	.L32
	movl	-4(%rbp), %eax
	movl	%eax, ans_y1(%rip)
.L32:
	movl	ans_y2(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jle	.L29
	movl	-4(%rbp), %eax
	movl	%eax, ans_y2(%rip)
.L29:
	addl	$1, -4(%rbp)
.L28:
	cmpl	$400, -4(%rbp)
	jle	.L33
	addl	$1, -8(%rbp)
.L27:
	cmpl	$400, -8(%rbp)
	jle	.L34
	nop
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	search_ans, .-search_ans
	.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	board
	.bss
	.align 32
	.type	board, @object
	.size	board, 643204
board:
	.zero	643204
	.globl	mimasita
	.align 32
	.type	mimasita, @object
	.size	mimasita, 643204
mimasita:
	.zero	643204
	.globl	dataset
	.align 32
	.type	dataset, @object
	.size	dataset, 3208
dataset:
	.zero	3208
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.globl	l
	.align 4
	.type	l, @object
	.size	l, 4
l:
	.zero	4
	.globl	ans_x1
	.align 4
	.type	ans_x1, @object
	.size	ans_x1, 4
ans_x1:
	.zero	4
	.globl	ans_y1
	.align 4
	.type	ans_y1, @object
	.size	ans_y1, 4
ans_y1:
	.zero	4
	.globl	ans_x2
	.align 4
	.type	ans_x2, @object
	.size	ans_x2, 4
ans_x2:
	.zero	4
	.globl	ans_y2
	.align 4
	.type	ans_y2, @object
	.size	ans_y2, 4
ans_y2:
	.zero	4
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%d %d"
.LC2:
	.string	"%d %d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB6:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	leaq	n(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	jmp	.L2
.L5:
	call	cl_array
	movl	$1, -4(%rbp)
	jmp	.L3
.L4:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	dataset(%rip), %rax
	addq	%rdx, %rax
	leaq	4(%rax), %rdx
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rcx
	leaq	dataset(%rip), %rax
	addq	%rcx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -4(%rbp)
.L3:
	movl	n(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jl	.L4
	call	make_board
	movl	$200, %esi
	movl	$200, %edi
	call	search_ans
	movl	ans_y2(%rip), %eax
	movl	ans_y1(%rip), %edx
	subl	%edx, %eax
	leal	1(%rax), %edx
	movl	ans_x2(%rip), %eax
	movl	ans_x1(%rip), %ecx
	subl	%ecx, %eax
	addl	$1, %eax
	movl	%eax, %esi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	leaq	n(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
.L2:
	movl	n(%rip), %eax
	testl	%eax, %eax
	jne	.L5
	movl	$0, %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	main, .-main
	.globl	make_board
	.type	make_board, @function
make_board:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	$0, 321600+board(%rip)
	movl	$1, -4(%rbp)
	jmp	.L8
.L9:
	movl	-4(%rbp), %eax
	movl	$200, %edx
	movl	$200, %esi
	movl	%eax, %edi
	call	tansaku
	addl	$1, -4(%rbp)
.L8:
	movl	n(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jl	.L9
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	make_board, .-make_board
	.globl	tansaku
	.type	tansaku, @function
tansaku:
.LFB8:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	%esi, -8(%rbp)
	movl	%edx, -12(%rbp)
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	board(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$-1, %eax
	je	.L19
	cmpl	$0, -8(%rbp)
	js	.L19
	cmpl	$0, -12(%rbp)
	js	.L19
	cmpl	$400, -8(%rbp)
	jg	.L19
	cmpl	$400, -12(%rbp)
	jg	.L19
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	mimasita(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -4(%rbp)
	je	.L19
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	mimasita(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	movl	-12(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	board(%rip), %rax
	movl	(%rdx,%rax), %edx
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rcx
	leaq	dataset(%rip), %rax
	movl	(%rcx,%rax), %eax
	cmpl	%eax, %edx
	je	.L14
	movl	-8(%rbp), %eax
	leal	-1(%rax), %ecx
	movl	-12(%rbp), %edx
	movl	-4(%rbp), %eax
	movl	%ecx, %esi
	movl	%eax, %edi
	call	tansaku
	movl	-12(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-8(%rbp), %ecx
	movl	-4(%rbp), %eax
	movl	%ecx, %esi
	movl	%eax, %edi
	call	tansaku
	movl	-8(%rbp), %eax
	leal	1(%rax), %ecx
	movl	-12(%rbp), %edx
	movl	-4(%rbp), %eax
	movl	%ecx, %esi
	movl	%eax, %edi
	call	tansaku
	movl	-12(%rbp), %eax
	leal	1(%rax), %edx
	movl	-8(%rbp), %ecx
	movl	-4(%rbp), %eax
	movl	%ecx, %esi
	movl	%eax, %edi
	call	tansaku
	jmp	.L10
.L14:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+dataset(%rip), %rax
	movl	(%rdx,%rax), %eax
	testl	%eax, %eax
	jne	.L15
	movl	-8(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-12(%rbp), %eax
	movslq	%eax, %rcx
	movslq	%edx, %rax
	imulq	$401, %rax, %rax
	addq	%rcx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	board(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L20
.L15:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+dataset(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$1, %eax
	jne	.L17
	movl	-12(%rbp), %eax
	addl	$1, %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	board(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L20
.L17:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+dataset(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$2, %eax
	jne	.L18
	movl	-8(%rbp), %eax
	leal	1(%rax), %edx
	movl	-12(%rbp), %eax
	movslq	%eax, %rcx
	movslq	%edx, %rax
	imulq	$401, %rax, %rax
	addq	%rcx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	board(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L20
.L18:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	4+dataset(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$3, %eax
	jne	.L20
	movl	-12(%rbp), %eax
	subl	$1, %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rcx
	leaq	board(%rip), %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L20
.L19:
	nop
	jmp	.L10
.L20:
	nop
.L10:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	tansaku, .-tansaku
	.globl	cl_array
	.type	cl_array, @function
cl_array:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$401, ans_x1(%rip)
	movl	$-1, ans_x2(%rip)
	movl	$401, ans_y1(%rip)
	movl	$-1, ans_y2(%rip)
	movl	$0, -8(%rbp)
	jmp	.L22
.L25:
	movl	$0, -4(%rbp)
	jmp	.L23
.L24:
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	mimasita(%rip), %rax
	movl	$0, (%rdx,%rax)
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	board(%rip), %rax
	movl	$-1, (%rdx,%rax)
	addl	$1, -4(%rbp)
.L23:
	cmpl	$400, -4(%rbp)
	jle	.L24
	addl	$1, -8(%rbp)
.L22:
	cmpl	$400, -8(%rbp)
	jle	.L25
	nop
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	cl_array, .-cl_array
	.globl	search_ans
	.type	search_ans, @function
search_ans:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	movl	$0, -8(%rbp)
	jmp	.L27
.L34:
	movl	$0, -4(%rbp)
	jmp	.L28
.L33:
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movl	-8(%rbp), %eax
	cltq
	imulq	$401, %rax, %rax
	addq	%rdx, %rax
	leaq	0(,%rax,4), %rdx
	leaq	board(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	$-1, %eax
	je	.L29
	movl	ans_x1(%rip), %eax
	cmpl	%eax, -8(%rbp)
	jge	.L30
	movl	-8(%rbp), %eax
	movl	%eax, ans_x1(%rip)
.L30:
	movl	ans_x2(%rip), %eax
	cmpl	%eax, -8(%rbp)
	jle	.L31
	movl	-8(%rbp), %eax
	movl	%eax, ans_x2(%rip)
.L31:
	movl	ans_y1(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jge	.L32
	movl	-4(%rbp), %eax
	movl	%eax, ans_y1(%rip)
.L32:
	movl	ans_y2(%rip), %eax
	cmpl	%eax, -4(%rbp)
	jle	.L29
	movl	-4(%rbp), %eax
	movl	%eax, ans_y2(%rip)
.L29:
	addl	$1, -4(%rbp)
.L28:
	cmpl	$400, -4(%rbp)
	jle	.L33
	addl	$1, -8(%rbp)
.L27:
	cmpl	$400, -8(%rbp)
	jle	.L34
	nop
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	search_ans, .-search_ans
	.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:
