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

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

typedef long long int int64;

#define MAX(a,b) ((a)>(b)?(a):(b))
#define MIN(a,b) ((a)<(b)?(a):(b))
#define ABS(a) ((a)>(0)?(a):-(a))

#define POS(i,j) ((i)*w+(j))

int func(int i,int j,char *board,int h,int w){
  int k;
  for(k=0;k<h;k++){
    if(board[POS(k,i)]!=board[POS(h-1-k,j)]) return 0;
  }
  return 1;
}

int calcCol(char *board,int h,int w){
  int flag[16];
  int i,j;
  for(i=0;i<w;i++) flag[i]=0;
  int useCenter=0;
  for(i=0;i<w;i++){
    if(flag[i]) continue;
    for(j=i+1;j<w;j++){
      if(flag[j]) continue;
      if(func(i,j,board,h,w)){
	flag[i]=1;
	flag[j]=1;
	break;
      }
    }
    if(flag[i]==0){
      if(w%2==0 || useCenter) return 0;
      for(j=0;j<h-1-j;j++){
	if(board[POS(j,i)]!=board[POS(h-1-j,i)]) return 0;
      }
      useCenter=1;
      flag[i]=1;
    }
  }
  return 1;
}

void swapRow(int a,int b,char *board,int h,int w){
  int i;
  for(i=0;i<w;i++){
    char t=board[POS(a,i)];
    board[POS(a,i)]=board[POS(b,i)];
    board[POS(b,i)]=t;
  }
  return;
}

int loopRow(int d,char *board,int h,int w){
  if(d>=h-d-1) return calcCol(board,h,w);
  int i,j;
  for(i=d;i<h-d;i++){
    for(j=i+1;j<h-d;j++){
      swapRow(d,i,board,h,w);
      swapRow(h-d-1,j,board,h,w);
      if(loopRow(d+1,board,h,w)) return 1;
      swapRow(d,i,board,h,w);
      swapRow(h-d-1,j,board,h,w);
    }
  }
  return 0;
}

int calc(char *board,int h,int w){
  return loopRow(0,board,h,w);
}

void run(void){
  int h,w;
  scanf("%d%d",&h,&w);
  char *board=(char *)malloc(sizeof(char)*(h*w+1));
  int i;
  for(i=0;i<h;i++) scanf("%s",board+POS(i,0));
  printf("%s\n",calc(board,h,w)?"YES":"NO");
  free(board);
}

int main(void){
  run();
  return 0;
}
```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	func
	.type	func, @function
func:
.LFB6:
	.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)
	movq	%rdx, -32(%rbp)
	movl	%ecx, -36(%rbp)
	movl	%r8d, -40(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L2
.L5:
	movl	-4(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-20(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %edx
	movl	-36(%rbp), %eax
	subl	$1, %eax
	subl	-4(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %ecx
	movl	-24(%rbp), %eax
	addl	%ecx, %eax
	movslq	%eax, %rcx
	movq	-32(%rbp), %rax
	addq	%rcx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L3
	movl	$0, %eax
	jmp	.L4
.L3:
	addl	$1, -4(%rbp)
.L2:
	movl	-4(%rbp), %eax
	cmpl	-36(%rbp), %eax
	jl	.L5
	movl	$1, %eax
.L4:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	func, .-func
	.globl	calcCol
	.type	calcCol, @function
calcCol:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$112, %rsp
	movq	%rdi, -104(%rbp)
	movl	%esi, -108(%rbp)
	movl	%edx, -112(%rbp)
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$0, -92(%rbp)
	jmp	.L7
.L8:
	movl	-92(%rbp), %eax
	cltq
	movl	$0, -80(%rbp,%rax,4)
	addl	$1, -92(%rbp)
.L7:
	movl	-92(%rbp), %eax
	cmpl	-112(%rbp), %eax
	jl	.L8
	movl	$0, -84(%rbp)
	movl	$0, -92(%rbp)
	jmp	.L9
.L23:
	movl	-92(%rbp), %eax
	cltq
	movl	-80(%rbp,%rax,4), %eax
	testl	%eax, %eax
	jne	.L26
	movl	-92(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -88(%rbp)
	jmp	.L12
.L16:
	movl	-88(%rbp), %eax
	cltq
	movl	-80(%rbp,%rax,4), %eax
	testl	%eax, %eax
	jne	.L27
	movl	-112(%rbp), %edi
	movl	-108(%rbp), %ecx
	movq	-104(%rbp), %rdx
	movl	-88(%rbp), %esi
	movl	-92(%rbp), %eax
	movl	%edi, %r8d
	movl	%eax, %edi
	call	func
	testl	%eax, %eax
	je	.L14
	movl	-92(%rbp), %eax
	cltq
	movl	$1, -80(%rbp,%rax,4)
	movl	-88(%rbp), %eax
	cltq
	movl	$1, -80(%rbp,%rax,4)
	jmp	.L15
.L27:
	nop
.L14:
	addl	$1, -88(%rbp)
.L12:
	movl	-88(%rbp), %eax
	cmpl	-112(%rbp), %eax
	jl	.L16
.L15:
	movl	-92(%rbp), %eax
	cltq
	movl	-80(%rbp,%rax,4), %eax
	testl	%eax, %eax
	jne	.L11
	movl	-112(%rbp), %eax
	andl	$1, %eax
	testl	%eax, %eax
	je	.L17
	cmpl	$0, -84(%rbp)
	je	.L18
.L17:
	movl	$0, %eax
	jmp	.L24
.L18:
	movl	$0, -88(%rbp)
	jmp	.L20
.L22:
	movl	-88(%rbp), %eax
	imull	-112(%rbp), %eax
	movl	%eax, %edx
	movl	-92(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-104(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %edx
	movl	-108(%rbp), %eax
	subl	$1, %eax
	subl	-88(%rbp), %eax
	imull	-112(%rbp), %eax
	movl	%eax, %ecx
	movl	-92(%rbp), %eax
	addl	%ecx, %eax
	movslq	%eax, %rcx
	movq	-104(%rbp), %rax
	addq	%rcx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L21
	movl	$0, %eax
	jmp	.L24
.L21:
	addl	$1, -88(%rbp)
.L20:
	movl	-108(%rbp), %eax
	subl	$1, %eax
	subl	-88(%rbp), %eax
	cmpl	%eax, -88(%rbp)
	jl	.L22
	movl	$1, -84(%rbp)
	movl	-92(%rbp), %eax
	cltq
	movl	$1, -80(%rbp,%rax,4)
	jmp	.L11
.L26:
	nop
.L11:
	addl	$1, -92(%rbp)
.L9:
	movl	-92(%rbp), %eax
	cmpl	-112(%rbp), %eax
	jl	.L23
	movl	$1, %eax
.L24:
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L25
	call	__stack_chk_fail@PLT
.L25:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	calcCol, .-calcCol
	.globl	swapRow
	.type	swapRow, @function
swapRow:
.LFB8:
	.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)
	movq	%rdx, -32(%rbp)
	movl	%ecx, -36(%rbp)
	movl	%r8d, -40(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L29
.L30:
	movl	-20(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-4(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movb	%al, -5(%rbp)
	movl	-24(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-4(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	leaq	(%rdx,%rax), %rcx
	movl	-20(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-4(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	addq	%rax, %rdx
	movzbl	(%rcx), %eax
	movb	%al, (%rdx)
	movl	-24(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-4(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	addq	%rax, %rdx
	movzbl	-5(%rbp), %eax
	movb	%al, (%rdx)
	addl	$1, -4(%rbp)
.L29:
	movl	-4(%rbp), %eax
	cmpl	-40(%rbp), %eax
	jl	.L30
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	swapRow, .-swapRow
	.globl	loopRow
	.type	loopRow, @function
loopRow:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$48, %rsp
	movl	%edi, -20(%rbp)
	movq	%rsi, -32(%rbp)
	movl	%edx, -24(%rbp)
	movl	%ecx, -36(%rbp)
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	subl	$1, %eax
	cmpl	%eax, -20(%rbp)
	jl	.L33
	movl	-36(%rbp), %edx
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	calcCol
	jmp	.L34
.L33:
	movl	-20(%rbp), %eax
	movl	%eax, -8(%rbp)
	jmp	.L35
.L39:
	movl	-8(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -4(%rbp)
	jmp	.L36
.L38:
	movl	-36(%rbp), %edi
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rdx
	movl	-8(%rbp), %esi
	movl	-20(%rbp), %eax
	movl	%edi, %r8d
	movl	%eax, %edi
	call	swapRow
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	leal	-1(%rax), %edi
	movl	-36(%rbp), %esi
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rdx
	movl	-4(%rbp), %eax
	movl	%esi, %r8d
	movl	%eax, %esi
	call	swapRow
	movl	-20(%rbp), %eax
	leal	1(%rax), %edi
	movl	-36(%rbp), %ecx
	movl	-24(%rbp), %edx
	movq	-32(%rbp), %rax
	movq	%rax, %rsi
	call	loopRow
	testl	%eax, %eax
	je	.L37
	movl	$1, %eax
	jmp	.L34
.L37:
	movl	-36(%rbp), %edi
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rdx
	movl	-8(%rbp), %esi
	movl	-20(%rbp), %eax
	movl	%edi, %r8d
	movl	%eax, %edi
	call	swapRow
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	leal	-1(%rax), %edi
	movl	-36(%rbp), %esi
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rdx
	movl	-4(%rbp), %eax
	movl	%esi, %r8d
	movl	%eax, %esi
	call	swapRow
	addl	$1, -4(%rbp)
.L36:
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	cmpl	%eax, -4(%rbp)
	jl	.L38
	addl	$1, -8(%rbp)
.L35:
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	cmpl	%eax, -8(%rbp)
	jl	.L39
	movl	$0, %eax
.L34:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	loopRow, .-loopRow
	.globl	calc
	.type	calc, @function
calc:
.LFB10:
	.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
	movq	%rdi, -8(%rbp)
	movl	%esi, -12(%rbp)
	movl	%edx, -16(%rbp)
	movl	-16(%rbp), %ecx
	movl	-12(%rbp), %edx
	movq	-8(%rbp), %rax
	movq	%rax, %rsi
	movl	$0, %edi
	call	loopRow
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	calc, .-calc
	.section	.rodata
.LC0:
	.string	"%d%d"
.LC1:
	.string	"%s"
.LC2:
	.string	"YES"
.LC3:
	.string	"NO"
	.text
	.globl	run
	.type	run, @function
run:
.LFB11:
	.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
	leaq	-24(%rbp), %rdx
	leaq	-28(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	-28(%rbp), %edx
	movl	-24(%rbp), %eax
	imull	%edx, %eax
	addl	$1, %eax
	cltq
	movq	%rax, %rdi
	call	malloc@PLT
	movq	%rax, -16(%rbp)
	movl	$0, -20(%rbp)
	jmp	.L43
.L44:
	movl	-24(%rbp), %eax
	imull	-20(%rbp), %eax
	movslq	%eax, %rdx
	movq	-16(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -20(%rbp)
.L43:
	movl	-28(%rbp), %eax
	cmpl	%eax, -20(%rbp)
	jl	.L44
	movl	-24(%rbp), %edx
	movl	-28(%rbp), %ecx
	movq	-16(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	calc
	testl	%eax, %eax
	je	.L45
	leaq	.LC2(%rip), %rax
	jmp	.L46
.L45:
	leaq	.LC3(%rip), %rax
.L46:
	movq	%rax, %rdi
	call	puts@PLT
	movq	-16(%rbp), %rax
	movq	%rax, %rdi
	call	free@PLT
	nop
	movq	-8(%rbp), %rax
	subq	%fs:40, %rax
	je	.L47
	call	__stack_chk_fail@PLT
.L47:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	run, .-run
	.globl	main
	.type	main, @function
main:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	call	run
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.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	func
	.type	func, @function
func:
.LFB39:
	.cfi_startproc
	endbr64
	movq	%rdx, %r9
	testl	%ecx, %ecx
	jle	.L6
	leal	-1(%rcx), %r10d
	cmpl	$1, %r8d
	jne	.L13
	movslq	%edi, %rdi
	movslq	%r10d, %rcx
	movl	%r10d, %r10d
	leaq	(%rdx,%rdi), %rax
	movslq	%esi, %rdx
	addq	%rcx, %rdx
	leaq	1(%r9,%rdi), %rcx
	addq	%r9, %rdx
	addq	%r10, %rcx
	jmp	.L5
	.p2align 4,,10
	.p2align 3
.L14:
	addq	$1, %rax
	subq	$1, %rdx
	cmpq	%rcx, %rax
	je	.L6
.L5:
	movzbl	(%rax), %esi
	cmpb	%sil, (%rdx)
	je	.L14
.L8:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L6:
	movl	$1, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L13:
	movslq	%edi, %rdi
	movslq	%r8d, %r11
	movslq	%esi, %rsi
	leaq	(%rdx,%rdi), %rax
	movl	%r8d, %edi
	imull	%r10d, %r8d
	negl	%edi
	movslq	%edi, %rdi
	movslq	%r8d, %rdx
	addq	%rsi, %rdx
	xorl	%esi, %esi
	addq	%r9, %rdx
	jmp	.L4
	.p2align 4,,10
	.p2align 3
.L15:
	addl	$1, %esi
	addq	%r11, %rax
	addq	%rdi, %rdx
	cmpl	%esi, %ecx
	je	.L6
.L4:
	movzbl	(%rdx), %r9d
	cmpb	%r9b, (%rax)
	je	.L15
	jmp	.L8
	.cfi_endproc
.LFE39:
	.size	func, .-func
	.p2align 4
	.globl	calcCol
	.type	calcCol, @function
calcCol:
.LFB40:
	.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	$120, %rsp
	.cfi_def_cfa_offset 176
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	testl	%edx, %edx
	jle	.L17
	leaq	32(%rsp), %r9
	movslq	%edx, %rbp
	movl	%edx, %r12d
	movq	%rdi, %r14
	movl	%esi, %ebx
	movq	%r9, %rdi
	leaq	0(,%rbp,4), %rdx
	xorl	%esi, %esi
	call	memset@PLT
	movq	%r14, %r10
	movl	%r12d, %edi
	movl	$0, 12(%rsp)
	movq	%rax, %r9
	leal	-1(%rbx), %eax
	negl	%edi
	movl	$1, %r11d
	movl	%eax, 16(%rsp)
	imull	%r12d, %eax
	movq	%r9, %r13
	movslq	%edi, %rdi
	movslq	%eax, %r14
	movl	%r12d, %eax
	notl	%eax
	addq	%r10, %r14
	andl	$1, %eax
	movb	%al, 23(%rsp)
	leaq	-1(%r14), %rax
	movq	%rax, 24(%rsp)
	jmp	.L27
	.p2align 4,,10
	.p2align 3
.L18:
	cmpl	%r11d, %r12d
	jle	.L17
.L28:
	addq	$1, %r11
	addq	$4, %r13
	addq	$1, %r10
.L27:
	movl	0(%r13), %r15d
	testl	%r15d, %r15d
	jne	.L18
	cmpl	%r11d, %r12d
	jle	.L19
	movq	%r11, %rsi
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L20:
	addq	$1, %rsi
	cmpl	%esi, %r12d
	jle	.L19
.L23:
	movl	(%r9,%rsi,4), %eax
	movslq	%esi, %r8
	testl	%eax, %eax
	jne	.L20
	testl	%ebx, %ebx
	jle	.L21
	movl	%r8d, 8(%rsp)
	leaq	(%r14,%rsi), %rcx
	movq	%r10, %rdx
	.p2align 4,,10
	.p2align 3
.L22:
	movzbl	(%rcx), %r8d
	cmpb	%r8b, (%rdx)
	jne	.L20
	addl	$1, %eax
	addq	%rbp, %rdx
	addq	%rdi, %rcx
	cmpl	%eax, %ebx
	jne	.L22
	movslq	8(%rsp), %r8
.L21:
	movl	$1, 0(%r13)
	movl	$1, 32(%rsp,%r8,4)
	jmp	.L28
	.p2align 4,,10
	.p2align 3
.L19:
	cmpb	$0, 23(%rsp)
	jne	.L16
	movl	12(%rsp), %edx
	testl	%edx, %edx
	jne	.L16
	movl	16(%rsp), %eax
	testl	%eax, %eax
	jle	.L25
	movq	24(%rsp), %rax
	movq	%r10, %rcx
	leaq	(%rax,%r11), %rsi
	xorl	%eax, %eax
	jmp	.L26
	.p2align 4,,10
	.p2align 3
.L39:
	addl	$1, %eax
	movl	%ebx, %edx
	addq	%rbp, %rcx
	addq	%rdi, %rsi
	subl	%eax, %edx
	subl	$1, %edx
	cmpl	%edx, %eax
	jge	.L25
.L26:
	movzbl	(%rsi), %edx
	cmpb	%dl, (%rcx)
	je	.L39
.L16:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L40
	addq	$120, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	movl	%r15d, %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
.L25:
	.cfi_restore_state
	movl	$1, 0(%r13)
	movl	$1, 12(%rsp)
	cmpl	%r11d, %r12d
	jg	.L28
.L17:
	movl	$1, %r15d
	jmp	.L16
.L40:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE40:
	.size	calcCol, .-calcCol
	.p2align 4
	.globl	swapRow
	.type	swapRow, @function
swapRow:
.LFB41:
	.cfi_startproc
	endbr64
	testl	%r8d, %r8d
	jle	.L61
	imull	%r8d, %esi
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movl	%r8d, %r10d
	leal	-1(%r8), %r9d
	imull	%r8d, %edi
	movslq	%esi, %r11
	movslq	%edi, %rcx
	leaq	16(%r11), %rax
	cmpq	%rax, %rcx
	leaq	16(%rcx), %rbx
	setge	%al
	cmpq	%rbx, %r11
	setge	%bl
	orb	%bl, %al
	je	.L43
	cmpl	$6, %r9d
	jbe	.L43
	cmpl	$14, %r9d
	jbe	.L51
	movl	%r8d, %ebx
	leaq	(%rdx,%rcx), %r10
	leaq	(%rdx,%r11), %r9
	xorl	%eax, %eax
	shrl	$4, %ebx
	salq	$4, %rbx
	.p2align 4,,10
	.p2align 3
.L45:
	movdqu	(%r10,%rax), %xmm0
	movdqu	(%r9,%rax), %xmm1
	movups	%xmm1, (%r10,%rax)
	movups	%xmm0, (%r9,%rax)
	addq	$16, %rax
	cmpq	%rax, %rbx
	jne	.L45
	movl	%r8d, %eax
	andl	$-16, %eax
	movl	%eax, %r9d
	cmpl	%eax, %r8d
	je	.L41
	movl	%r8d, %r10d
	subl	%eax, %r10d
	leal	-1(%r10), %ebx
	cmpl	$6, %ebx
	jbe	.L47
.L44:
	addq	%rax, %rcx
	addq	%r11, %rax
	addq	%rdx, %rax
	addq	%rdx, %rcx
	movq	(%rax), %rbx
	movq	(%rcx), %r11
	movq	%rbx, (%rcx)
	movq	%r11, (%rax)
	movl	%r10d, %eax
	andl	$-8, %eax
	addl	%eax, %r9d
	cmpl	%eax, %r10d
	je	.L41
.L47:
	leal	(%rdi,%r9), %ecx
	leal	(%rsi,%r9), %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rdx, %rax
	addq	%rdx, %rcx
	movzbl	(%rax), %r11d
	movzbl	(%rcx), %r10d
	movb	%r11b, (%rcx)
	movb	%r10b, (%rax)
	leal	1(%r9), %eax
	cmpl	%eax, %r8d
	jle	.L41
	leal	(%rdi,%rax), %ecx
	addl	%esi, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rdx, %rax
	addq	%rdx, %rcx
	movzbl	(%rax), %r11d
	movzbl	(%rcx), %r10d
	movb	%r11b, (%rcx)
	movb	%r10b, (%rax)
	leal	2(%r9), %eax
	cmpl	%eax, %r8d
	jle	.L41
	leal	(%rdi,%rax), %ecx
	addl	%esi, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rdx, %rax
	addq	%rdx, %rcx
	movzbl	(%rax), %r11d
	movzbl	(%rcx), %r10d
	movb	%r11b, (%rcx)
	movb	%r10b, (%rax)
	leal	3(%r9), %eax
	cmpl	%eax, %r8d
	jle	.L41
	leal	(%rdi,%rax), %ecx
	addl	%esi, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rdx, %rax
	addq	%rdx, %rcx
	movzbl	(%rax), %r11d
	movzbl	(%rcx), %r10d
	movb	%r11b, (%rcx)
	movb	%r10b, (%rax)
	leal	4(%r9), %eax
	cmpl	%eax, %r8d
	jle	.L41
	leal	(%rdi,%rax), %ecx
	addl	%esi, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rdx, %rax
	addq	%rdx, %rcx
	movzbl	(%rax), %r11d
	movzbl	(%rcx), %r10d
	movb	%r11b, (%rcx)
	movb	%r10b, (%rax)
	leal	5(%r9), %eax
	cmpl	%eax, %r8d
	jle	.L41
	leal	(%rdi,%rax), %ecx
	addl	%esi, %eax
	addl	$6, %r9d
	movslq	%ecx, %rcx
	cltq
	addq	%rdx, %rcx
	addq	%rdx, %rax
	movzbl	(%rcx), %r10d
	movzbl	(%rax), %r11d
	movb	%r11b, (%rcx)
	movb	%r10b, (%rax)
	cmpl	%r9d, %r8d
	jle	.L41
	leal	(%rdi,%r9), %ecx
	leal	(%rsi,%r9), %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rdx, %rcx
	addq	%rdx, %rax
	movzbl	(%rcx), %edi
	movzbl	(%rax), %edx
	movb	%dl, (%rcx)
	movb	%dil, (%rax)
.L41:
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L43:
	.cfi_restore_state
	leaq	1(%rdx,%rcx), %r8
	leaq	(%rdx,%rcx), %rax
	addq	%r9, %r8
	.p2align 4,,10
	.p2align 3
.L49:
	movq	%rax, %rdx
	movzbl	(%rax), %esi
	addq	$1, %rax
	subq	%rcx, %rdx
	movzbl	(%rdx,%r11), %edi
	movb	%dil, -1(%rax)
	movb	%sil, (%rdx,%r11)
	cmpq	%r8, %rax
	jne	.L49
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L61:
	.cfi_restore 3
	ret
.L51:
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	xorl	%eax, %eax
	xorl	%r9d, %r9d
	jmp	.L44
	.cfi_endproc
.LFE41:
	.size	swapRow, .-swapRow
	.p2align 4
	.globl	loopRow
	.type	loopRow, @function
loopRow:
.LFB42:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movl	%ecx, %r15d
	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
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$88, %rsp
	.cfi_def_cfa_offset 144
	movl	%edx, 44(%rsp)
	subl	%edi, %edx
	leal	-1(%rdx), %eax
	movl	%edx, 40(%rsp)
	cmpl	%edi, %eax
	jle	.L65
	cmpl	%edi, %edx
	jle	.L67
	imull	%ecx, %eax
	movl	%edi, %ebx
	movl	%ecx, %r14d
	imull	%ecx, %ebx
	andl	$-16, %r14d
	movl	%r14d, %r9d
	movl	%eax, %r10d
	leal	1(%rdi), %eax
	movl	%eax, 64(%rsp)
	movl	64(%rsp), %edi
	movl	%eax, 52(%rsp)
	imull	%ecx, %eax
	movl	%ebx, 32(%rsp)
	movl	%ebx, 36(%rsp)
	leal	-1(%rcx), %ebx
	movl	%eax, 68(%rsp)
	movl	%ecx, %eax
	shrl	$4, %eax
	movl	%ebx, 4(%rsp)
	subl	$1, %eax
	addq	$1, %rax
	salq	$4, %rax
	movq	%rax, %r11
	movl	%ebx, %eax
	leaq	1(%rsi,%rax), %rax
	movq	%r11, %r13
	movq	%rax, 56(%rsp)
	cmpl	%edi, 40(%rsp)
	je	.L67
.L144:
	movslq	36(%rsp), %r11
	movslq	32(%rsp), %r14
	movl	%edi, (%rsp)
	cmpl	$6, 4(%rsp)
	movl	68(%rsp), %r8d
	leaq	16(%r11), %rax
	leaq	16(%r14), %rdx
	seta	50(%rsp)
	movzbl	50(%rsp), %ebx
	cmpq	%r14, %rax
	setle	%al
	cmpq	%r11, %rdx
	setle	%dl
	orl	%edx, %eax
	andl	%ebx, %eax
	movb	%al, 51(%rsp)
	movq	56(%rsp), %rax
	addq	%r11, %rax
	movq	%rax, 72(%rsp)
	movq	%r14, %rax
	movl	%r8d, %r14d
	movq	%rax, %r8
.L68:
	testl	%r15d, %r15d
	jle	.L142
	cmpb	$0, 51(%rsp)
	je	.L69
	cmpl	$14, 4(%rsp)
	jbe	.L108
	leaq	0(%rbp,%r11), %rcx
	leaq	0(%rbp,%r8), %rdx
	xorl	%eax, %eax
	.p2align 4,,10
	.p2align 3
.L71:
	movdqu	(%rcx,%rax), %xmm0
	movdqu	(%rdx,%rax), %xmm2
	movups	%xmm2, (%rcx,%rax)
	movups	%xmm0, (%rdx,%rax)
	addq	$16, %rax
	cmpq	%rax, %r13
	jne	.L71
	cmpl	%r9d, %r15d
	je	.L76
	movl	%r15d, %esi
	subl	%r9d, %esi
	leal	-1(%rsi), %eax
	cmpl	$6, %eax
	jbe	.L109
	movl	%r9d, %eax
	movl	%r9d, %edx
.L70:
	leaq	(%r11,%rax), %rcx
	addq	%r8, %rax
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movq	(%rax), %rbx
	movq	(%rcx), %rdi
	movq	%rbx, (%rcx)
	movq	%rdi, (%rax)
	movl	%esi, %eax
	andl	$-8, %eax
	addl	%eax, %edx
	cmpl	%eax, %esi
	je	.L76
.L73:
	movl	36(%rsp), %ebx
	movl	32(%rsp), %r12d
	leal	(%rbx,%rdx), %ecx
	leal	(%r12,%rdx), %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	1(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L76
	leal	(%rbx,%rax), %ecx
	addl	%r12d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	2(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L76
	leal	(%rbx,%rax), %ecx
	addl	%r12d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	3(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L76
	leal	(%rbx,%rax), %ecx
	addl	%r12d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	4(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L76
	leal	(%rbx,%rax), %ecx
	addl	%r12d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	5(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L76
	leal	(%rbx,%rax), %ecx
	addl	%r12d, %eax
	addl	$6, %edx
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rcx
	addq	%rbp, %rax
	movzbl	(%rcx), %esi
	movzbl	(%rax), %edi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	cmpl	%edx, %r15d
	jle	.L76
	leal	(%rbx,%rdx), %ecx
	addl	%r12d, %edx
	movslq	%edx, %rax
	movslq	%ecx, %rcx
	addq	%rbp, %rcx
	addq	%rbp, %rax
	movzbl	(%rcx), %esi
	movzbl	(%rax), %edx
	movb	%dl, (%rcx)
	movb	%sil, (%rax)
.L76:
	movslq	%r10d, %rbx
	movslq	%r14d, %r12
	leaq	16(%rbx), %rax
	leaq	16(%r12), %rdx
	cmpq	%r12, %rax
	setle	%al
	cmpq	%rbx, %rdx
	setle	%dl
	orb	%dl, %al
	je	.L77
	cmpb	$0, 50(%rsp)
	je	.L77
	cmpl	$14, 4(%rsp)
	jbe	.L110
	leaq	0(%rbp,%rbx), %rcx
	leaq	0(%rbp,%r12), %rdx
	xorl	%eax, %eax
	.p2align 4,,10
	.p2align 3
.L79:
	movdqu	(%rcx,%rax), %xmm0
	movdqu	(%rdx,%rax), %xmm3
	movups	%xmm3, (%rcx,%rax)
	movups	%xmm0, (%rdx,%rax)
	addq	$16, %rax
	cmpq	%rax, %r13
	jne	.L79
	cmpl	%r9d, %r15d
	je	.L84
	movl	%r15d, %esi
	subl	%r9d, %esi
	leal	-1(%rsi), %eax
	cmpl	$6, %eax
	jbe	.L111
	movl	%r9d, %eax
	movl	%r9d, %edx
.L78:
	leaq	(%rbx,%rax), %rcx
	addq	%r12, %rax
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movq	(%rax), %xmm0
	movq	(%rcx), %rdi
	movq	%xmm0, (%rcx)
	movq	%rdi, (%rax)
	movl	%esi, %eax
	andl	$-8, %eax
	addl	%eax, %edx
	cmpl	%eax, %esi
	je	.L84
.L81:
	leal	(%r10,%rdx), %ecx
	leal	(%r14,%rdx), %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	1(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L84
	leal	(%r10,%rax), %ecx
	addl	%r14d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	2(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L84
	leal	(%r10,%rax), %ecx
	addl	%r14d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	3(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L84
	leal	(%r10,%rax), %ecx
	addl	%r14d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	4(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L84
	leal	(%r10,%rax), %ecx
	addl	%r14d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	5(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L84
	leal	(%r10,%rax), %ecx
	addl	%r14d, %eax
	addl	$6, %edx
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rcx
	addq	%rbp, %rax
	movzbl	(%rcx), %esi
	movzbl	(%rax), %edi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	cmpl	%edx, %r15d
	jle	.L84
	leal	(%r10,%rdx), %ecx
	addl	%r14d, %edx
	movslq	%edx, %rax
	movslq	%ecx, %rcx
	addq	%rbp, %rcx
	addq	%rbp, %rax
	movzbl	(%rcx), %esi
	movzbl	(%rax), %edx
	movb	%dl, (%rcx)
	movb	%sil, (%rax)
.L84:
	movl	44(%rsp), %edx
	movl	52(%rsp), %edi
	movl	%r15d, %ecx
	movq	%rbp, %rsi
	movl	%r9d, 28(%rsp)
	movq	%r8, 16(%rsp)
	movq	%r11, 8(%rsp)
	movl	%r10d, 24(%rsp)
	call	loopRow
	movl	24(%rsp), %r10d
	movq	8(%rsp), %r11
	testl	%eax, %eax
	movq	16(%rsp), %r8
	movl	28(%rsp), %r9d
	je	.L143
.L117:
	addq	$88, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	movl	$1, %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
	.p2align 4,,10
	.p2align 3
.L77:
	.cfi_restore_state
	movq	56(%rsp), %rdi
	leaq	0(%rbp,%rbx), %rax
	leaq	(%rdi,%rbx), %rsi
	.p2align 4,,10
	.p2align 3
.L83:
	movq	%rax, %rdx
	movzbl	(%rax), %ecx
	addq	$1, %rax
	subq	%rbx, %rdx
	movzbl	(%rdx,%r12), %edi
	movb	%dil, -1(%rax)
	movb	%cl, (%rdx,%r12)
	cmpq	%rax, %rsi
	jne	.L83
	jmp	.L84
	.p2align 4,,10
	.p2align 3
.L69:
	movq	72(%rsp), %rdi
	leaq	0(%rbp,%r11), %rax
	.p2align 4,,10
	.p2align 3
.L75:
	movq	%rax, %rdx
	movzbl	(%rax), %ecx
	addq	$1, %rax
	subq	%r11, %rdx
	movzbl	(%rdx,%r8), %esi
	movb	%sil, -1(%rax)
	movb	%cl, (%rdx,%r8)
	cmpq	%rax, %rdi
	jne	.L75
	jmp	.L76
	.p2align 4,,10
	.p2align 3
.L143:
	cmpb	$0, 51(%rsp)
	je	.L88
	cmpl	$14, 4(%rsp)
	jbe	.L113
	leaq	0(%rbp,%r11), %rsi
	leaq	0(%rbp,%r8), %rcx
	xorl	%edx, %edx
	.p2align 4,,10
	.p2align 3
.L90:
	movdqu	(%rsi,%rdx), %xmm0
	movdqu	(%rcx,%rdx), %xmm5
	movups	%xmm5, (%rsi,%rdx)
	movups	%xmm0, (%rcx,%rdx)
	addq	$16, %rdx
	cmpq	%rdx, %r13
	jne	.L90
	cmpl	%r9d, %r15d
	je	.L95
	movl	%r15d, %edi
	subl	%r9d, %edi
	leal	-1(%rdi), %edx
	cmpl	$6, %edx
	jbe	.L114
	movl	%r9d, %edx
	movl	%r9d, %ecx
.L89:
	leaq	(%rdx,%r11), %rsi
	addq	%r8, %rdx
	addq	%rbp, %rsi
	addq	%rbp, %rdx
	movq	(%rsi), %xmm0
	movq	(%rdx), %xmm1
	movq	%xmm1, (%rsi)
	movq	%xmm0, (%rdx)
	movl	%edi, %edx
	andl	$-8, %edx
	leal	(%rcx,%rdx), %esi
	movl	%esi, 24(%rsp)
	cmpl	%edx, %edi
	je	.L95
.L92:
	movl	24(%rsp), %ecx
	movl	32(%rsp), %edx
	movl	36(%rsp), %edi
	addl	%ecx, %edx
	movslq	%edx, %rdx
	leal	(%rdi,%rcx), %esi
	addq	%rbp, %rdx
	movslq	%esi, %rsi
	movzbl	(%rdx), %ecx
	addq	%rbp, %rsi
	movzbl	(%rsi), %edi
	movb	%cl, (%rsi)
	movl	24(%rsp), %ecx
	movb	%dil, (%rdx)
	leal	1(%rcx), %edx
	cmpl	%edx, %r15d
	jle	.L95
	movl	36(%rsp), %edi
	leal	(%rdi,%rdx), %esi
	addl	32(%rsp), %edx
	movslq	%edx, %rdx
	movslq	%esi, %rsi
	addq	%rbp, %rdx
	addq	%rbp, %rsi
	movzbl	(%rdx), %ecx
	movzbl	(%rsi), %edi
	movb	%cl, (%rsi)
	movl	24(%rsp), %ecx
	movb	%dil, (%rdx)
	leal	2(%rcx), %edx
	cmpl	%edx, %r15d
	jle	.L95
	movl	36(%rsp), %edi
	leal	(%rdi,%rdx), %esi
	addl	32(%rsp), %edx
	movslq	%edx, %rdx
	movslq	%esi, %rsi
	addq	%rbp, %rdx
	addq	%rbp, %rsi
	movzbl	(%rdx), %ecx
	movzbl	(%rsi), %edi
	movb	%cl, (%rsi)
	movl	24(%rsp), %ecx
	movb	%dil, (%rdx)
	leal	3(%rcx), %edx
	cmpl	%edx, %r15d
	jle	.L95
	movl	36(%rsp), %edi
	leal	(%rdi,%rdx), %esi
	addl	32(%rsp), %edx
	movslq	%edx, %rdx
	movslq	%esi, %rsi
	addq	%rbp, %rdx
	addq	%rbp, %rsi
	movzbl	(%rdx), %ecx
	movzbl	(%rsi), %edi
	movb	%cl, (%rsi)
	movl	24(%rsp), %ecx
	movb	%dil, (%rdx)
	leal	4(%rcx), %edx
	cmpl	%edx, %r15d
	jle	.L95
	movl	36(%rsp), %edi
	leal	(%rdi,%rdx), %esi
	addl	32(%rsp), %edx
	movslq	%edx, %rdx
	movslq	%esi, %rsi
	addq	%rbp, %rdx
	addq	%rbp, %rsi
	movzbl	(%rdx), %ecx
	movzbl	(%rsi), %edi
	movb	%cl, (%rsi)
	movl	24(%rsp), %ecx
	movb	%dil, (%rdx)
	leal	5(%rcx), %edx
	cmpl	%edx, %r15d
	jle	.L95
	movl	36(%rsp), %edi
	leal	(%rdi,%rdx), %esi
	addl	32(%rsp), %edx
	movslq	%edx, %rdx
	movslq	%esi, %rsi
	addq	%rbp, %rdx
	addq	%rbp, %rsi
	movzbl	(%rdx), %ecx
	movzbl	(%rsi), %edi
	movb	%cl, (%rsi)
	movl	24(%rsp), %ecx
	movb	%dil, (%rdx)
	addl	$6, %ecx
	cmpl	%ecx, %r15d
	jle	.L95
	movl	36(%rsp), %edi
	leal	(%rdi,%rcx), %edx
	addl	32(%rsp), %ecx
	movslq	%edx, %rdx
	movslq	%ecx, %rcx
	addq	%rbp, %rdx
	addq	%rbp, %rcx
	movzbl	(%rdx), %esi
	movzbl	(%rcx), %edi
	movb	%dil, (%rdx)
	movb	%sil, (%rcx)
	.p2align 4,,10
	.p2align 3
.L95:
	leaq	16(%r12), %rdx
	cmpq	%rdx, %rbx
	leaq	16(%rbx), %rdx
	setge	%cl
	cmpq	%rdx, %r12
	setge	%dl
	orb	%cl, %dl
	je	.L96
	cmpb	$0, 50(%rsp)
	je	.L96
	cmpl	$14, 4(%rsp)
	jbe	.L115
	leaq	0(%rbp,%rbx), %rcx
	leaq	0(%rbp,%r12), %rdx
	xorl	%eax, %eax
	.p2align 4,,10
	.p2align 3
.L98:
	movdqu	(%rcx,%rax), %xmm0
	movdqu	(%rdx,%rax), %xmm4
	movups	%xmm4, (%rcx,%rax)
	movups	%xmm0, (%rdx,%rax)
	addq	$16, %rax
	cmpq	%rax, %r13
	jne	.L98
	cmpl	%r9d, %r15d
	je	.L100
	movl	%r15d, %ecx
	movl	%r9d, %edx
	subl	%r9d, %ecx
	leal	-1(%rcx), %eax
	cmpl	$6, %eax
	movl	%r9d, %eax
	jbe	.L102
.L97:
	addq	%rdx, %rbx
	addq	%r12, %rdx
	addq	%rbp, %rdx
	addq	%rbp, %rbx
	movq	(%rdx), %rdi
	movq	(%rbx), %rsi
	movq	%rdi, (%rbx)
	movq	%rsi, (%rdx)
	movl	%ecx, %edx
	andl	$-8, %edx
	addl	%edx, %eax
	cmpl	%edx, %ecx
	je	.L100
.L102:
	leal	(%r10,%rax), %ecx
	leal	(%r14,%rax), %edx
	movslq	%ecx, %rcx
	movslq	%edx, %rdx
	addq	%rbp, %rdx
	addq	%rbp, %rcx
	movzbl	(%rdx), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rdx)
	leal	1(%rax), %edx
	cmpl	%edx, %r15d
	jle	.L100
	leal	(%r10,%rdx), %ecx
	addl	%r14d, %edx
	movslq	%ecx, %rcx
	movslq	%edx, %rdx
	addq	%rbp, %rdx
	addq	%rbp, %rcx
	movzbl	(%rdx), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rdx)
	leal	2(%rax), %edx
	cmpl	%edx, %r15d
	jle	.L100
	leal	(%r10,%rdx), %ecx
	addl	%r14d, %edx
	movslq	%ecx, %rcx
	movslq	%edx, %rdx
	addq	%rbp, %rdx
	addq	%rbp, %rcx
	movzbl	(%rdx), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rdx)
	leal	3(%rax), %edx
	cmpl	%edx, %r15d
	jle	.L100
	leal	(%r10,%rdx), %ecx
	addl	%r14d, %edx
	movslq	%ecx, %rcx
	movslq	%edx, %rdx
	addq	%rbp, %rdx
	addq	%rbp, %rcx
	movzbl	(%rdx), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rdx)
	leal	4(%rax), %edx
	cmpl	%edx, %r15d
	jle	.L100
	leal	(%r10,%rdx), %ecx
	addl	%r14d, %edx
	movslq	%ecx, %rcx
	movslq	%edx, %rdx
	addq	%rbp, %rdx
	addq	%rbp, %rcx
	movzbl	(%rdx), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rdx)
	leal	5(%rax), %edx
	cmpl	%edx, %r15d
	jle	.L100
	leal	(%r10,%rdx), %ecx
	addl	%r14d, %edx
	addl	$6, %eax
	movslq	%ecx, %rcx
	movslq	%edx, %rdx
	addq	%rbp, %rcx
	addq	%rbp, %rdx
	movzbl	(%rcx), %esi
	movzbl	(%rdx), %edi
	movb	%dil, (%rcx)
	movb	%sil, (%rdx)
	cmpl	%eax, %r15d
	jle	.L100
	leal	(%r10,%rax), %edx
	addl	%r14d, %eax
	movslq	%edx, %rdx
	cltq
	addq	%rbp, %rdx
	addq	%rbp, %rax
	movzbl	(%rdx), %ecx
	movzbl	(%rax), %esi
	movb	%sil, (%rdx)
	movb	%cl, (%rax)
.L100:
	addl	$1, (%rsp)
	addl	%r15d, %r14d
	movl	(%rsp), %eax
	cmpl	%eax, 40(%rsp)
	jne	.L68
	movl	64(%rsp), %eax
	addl	%r15d, 32(%rsp)
	addl	%r15d, 68(%rsp)
	addl	$1, %eax
	movl	%eax, 64(%rsp)
	movl	64(%rsp), %edi
	cmpl	%edi, 40(%rsp)
	jne	.L144
.L67:
	addq	$88, %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
	.p2align 4,,10
	.p2align 3
.L96:
	.cfi_restore_state
	movq	56(%rsp), %rdi
	leaq	0(%rbp,%rbx), %rax
	leaq	(%rdi,%rbx), %rsi
	.p2align 4,,10
	.p2align 3
.L104:
	movq	%rax, %rdx
	movzbl	(%rax), %ecx
	addq	$1, %rax
	subq	%rbx, %rdx
	movzbl	(%rdx,%r12), %edi
	movb	%dil, -1(%rax)
	movb	%cl, (%rdx,%r12)
	cmpq	%rsi, %rax
	jne	.L104
	jmp	.L100
	.p2align 4,,10
	.p2align 3
.L142:
	movl	44(%rsp), %edx
	movl	52(%rsp), %edi
	movl	%r15d, %ecx
	movq	%rbp, %rsi
	movl	%r9d, 28(%rsp)
	movq	%r8, 16(%rsp)
	movq	%r11, 8(%rsp)
	movl	%r10d, 24(%rsp)
	call	loopRow
	movl	24(%rsp), %r10d
	movq	8(%rsp), %r11
	testl	%eax, %eax
	movq	16(%rsp), %r8
	movl	28(%rsp), %r9d
	jne	.L117
	jmp	.L100
.L65:
	movl	44(%rsp), %esi
	addq	$88, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	movq	%rbp, %rdi
	movl	%ecx, %edx
	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
	jmp	calcCol
.L110:
	.cfi_restore_state
	movl	%r15d, %esi
	xorl	%eax, %eax
	xorl	%edx, %edx
	jmp	.L78
.L108:
	movl	%r15d, %esi
	xorl	%eax, %eax
	xorl	%edx, %edx
	jmp	.L70
.L115:
	movl	%r15d, %ecx
	xorl	%edx, %edx
	jmp	.L97
.L111:
	movl	%r9d, %edx
	jmp	.L81
.L109:
	movl	%r9d, %edx
	jmp	.L73
.L88:
	movl	%eax, 24(%rsp)
	movq	72(%rsp), %rdi
	leaq	0(%rbp,%r11), %rdx
	.p2align 4,,10
	.p2align 3
.L94:
	movq	%rdx, %rcx
	movzbl	(%rdx), %esi
	addq	$1, %rdx
	subq	%r11, %rcx
	movzbl	(%rcx,%r8), %eax
	movb	%al, -1(%rdx)
	movb	%sil, (%rcx,%r8)
	cmpq	%rdx, %rdi
	jne	.L94
	movl	24(%rsp), %eax
	jmp	.L95
.L113:
	movl	%r15d, %edi
	xorl	%ecx, %ecx
	xorl	%edx, %edx
	jmp	.L89
.L114:
	movl	%r9d, 24(%rsp)
	jmp	.L92
	.cfi_endproc
.LFE42:
	.size	loopRow, .-loopRow
	.p2align 4
	.globl	calc
	.type	calc, @function
calc:
.LFB43:
	.cfi_startproc
	endbr64
	movl	%edx, %ecx
	movl	%esi, %edx
	movq	%rdi, %rsi
	xorl	%edi, %edi
	jmp	loopRow
	.cfi_endproc
.LFE43:
	.size	calc, .-calc
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"YES"
.LC1:
	.string	"NO"
.LC2:
	.string	"%d%d"
.LC3:
	.string	"%s"
	.text
	.p2align 4
	.globl	run
	.type	run, @function
run:
.LFB44:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	leaq	.LC2(%rip), %rdi
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	subq	$16, %rsp
	.cfi_def_cfa_offset 64
	movq	%fs:40, %rax
	movq	%rax, 8(%rsp)
	xorl	%eax, %eax
	leaq	4(%rsp), %rdx
	movq	%rsp, %rsi
	call	__isoc99_scanf@PLT
	movl	(%rsp), %r14d
	movl	4(%rsp), %r12d
	movl	%r14d, %edi
	imull	%r12d, %edi
	addl	$1, %edi
	movslq	%edi, %rdi
	call	malloc@PLT
	movq	%rax, %rbp
	testl	%r14d, %r14d
	jle	.L147
	xorl	%r13d, %r13d
	leaq	.LC3(%rip), %rbx
	.p2align 4,,10
	.p2align 3
.L149:
	imull	%r13d, %r12d
	movq	%rbx, %rdi
	xorl	%eax, %eax
	addl	$1, %r13d
	movslq	%r12d, %rsi
	addq	%rbp, %rsi
	call	__isoc99_scanf@PLT
	movl	(%rsp), %r14d
	movl	4(%rsp), %r12d
	cmpl	%r13d, %r14d
	jg	.L149
.L147:
	xorl	%edi, %edi
	movl	%r12d, %ecx
	movl	%r14d, %edx
	movq	%rbp, %rsi
	call	loopRow
	leaq	.LC0(%rip), %rdi
	testl	%eax, %eax
	leaq	.LC1(%rip), %rax
	cmove	%rax, %rdi
	call	puts@PLT
	movq	8(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L155
	addq	$16, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 48
	movq	%rbp, %rdi
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	jmp	free@PLT
.L155:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE44:
	.size	run, .-run
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB45:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	call	run
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE45:
	.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:

rule
	.file	"temp.c"
	.text
	.p2align 4
	.globl	func
	.type	func, @function
func:
.LFB39:
	.cfi_startproc
	endbr64
	movq	%rdx, %r9
	testl	%ecx, %ecx
	jle	.L6
	leal	-1(%rcx), %r10d
	cmpl	$1, %r8d
	jne	.L13
	movslq	%edi, %rdi
	movslq	%r10d, %rcx
	movl	%r10d, %r10d
	leaq	(%rdx,%rdi), %rax
	movslq	%esi, %rdx
	addq	%rcx, %rdx
	leaq	1(%r9,%rdi), %rcx
	addq	%r9, %rdx
	addq	%r10, %rcx
	jmp	.L5
	.p2align 4,,10
	.p2align 3
.L14:
	addq	$1, %rax
	subq	$1, %rdx
	cmpq	%rcx, %rax
	je	.L6
.L5:
	movzbl	(%rax), %esi
	cmpb	%sil, (%rdx)
	je	.L14
.L8:
	xorl	%eax, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L6:
	movl	$1, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L13:
	movslq	%edi, %rdi
	movslq	%r8d, %r11
	movslq	%esi, %rsi
	leaq	(%rdx,%rdi), %rax
	movl	%r8d, %edi
	imull	%r10d, %r8d
	negl	%edi
	movslq	%edi, %rdi
	movslq	%r8d, %rdx
	addq	%rsi, %rdx
	xorl	%esi, %esi
	addq	%r9, %rdx
	jmp	.L4
	.p2align 4,,10
	.p2align 3
.L15:
	addl	$1, %esi
	addq	%r11, %rax
	addq	%rdi, %rdx
	cmpl	%esi, %ecx
	je	.L6
.L4:
	movzbl	(%rdx), %r9d
	cmpb	%r9b, (%rax)
	je	.L15
	jmp	.L8
	.cfi_endproc
.LFE39:
	.size	func, .-func
	.p2align 4
	.globl	calcCol
	.type	calcCol, @function
calcCol:
.LFB40:
	.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	$120, %rsp
	.cfi_def_cfa_offset 176
	movq	%fs:40, %rax
	movq	%rax, 104(%rsp)
	xorl	%eax, %eax
	testl	%edx, %edx
	jle	.L17
	leaq	32(%rsp), %r9
	movslq	%edx, %rbp
	movl	%edx, %r12d
	movq	%rdi, %r14
	movl	%esi, %ebx
	movq	%r9, %rdi
	leaq	0(,%rbp,4), %rdx
	xorl	%esi, %esi
	call	memset@PLT
	movq	%r14, %r10
	movl	%r12d, %edi
	movl	$0, 12(%rsp)
	movq	%rax, %r9
	leal	-1(%rbx), %eax
	negl	%edi
	movl	$1, %r11d
	movl	%eax, 16(%rsp)
	imull	%r12d, %eax
	movq	%r9, %r13
	movslq	%edi, %rdi
	movslq	%eax, %r14
	movl	%r12d, %eax
	notl	%eax
	addq	%r10, %r14
	andl	$1, %eax
	movb	%al, 23(%rsp)
	leaq	-1(%r14), %rax
	movq	%rax, 24(%rsp)
	jmp	.L27
	.p2align 4,,10
	.p2align 3
.L18:
	cmpl	%r11d, %r12d
	jle	.L17
.L28:
	addq	$1, %r11
	addq	$4, %r13
	addq	$1, %r10
.L27:
	movl	0(%r13), %r15d
	testl	%r15d, %r15d
	jne	.L18
	cmpl	%r11d, %r12d
	jle	.L19
	movq	%r11, %rsi
	jmp	.L23
	.p2align 4,,10
	.p2align 3
.L20:
	addq	$1, %rsi
	cmpl	%esi, %r12d
	jle	.L19
.L23:
	movl	(%r9,%rsi,4), %eax
	movslq	%esi, %r8
	testl	%eax, %eax
	jne	.L20
	testl	%ebx, %ebx
	jle	.L21
	movl	%r8d, 8(%rsp)
	leaq	(%r14,%rsi), %rcx
	movq	%r10, %rdx
	.p2align 4,,10
	.p2align 3
.L22:
	movzbl	(%rcx), %r8d
	cmpb	%r8b, (%rdx)
	jne	.L20
	addl	$1, %eax
	addq	%rbp, %rdx
	addq	%rdi, %rcx
	cmpl	%eax, %ebx
	jne	.L22
	movslq	8(%rsp), %r8
.L21:
	movl	$1, 0(%r13)
	movl	$1, 32(%rsp,%r8,4)
	jmp	.L28
	.p2align 4,,10
	.p2align 3
.L19:
	cmpb	$0, 23(%rsp)
	jne	.L16
	movl	12(%rsp), %edx
	testl	%edx, %edx
	jne	.L16
	movl	16(%rsp), %eax
	testl	%eax, %eax
	jle	.L25
	movq	24(%rsp), %rax
	movq	%r10, %rcx
	leaq	(%rax,%r11), %rsi
	xorl	%eax, %eax
	jmp	.L26
	.p2align 4,,10
	.p2align 3
.L39:
	addl	$1, %eax
	movl	%ebx, %edx
	addq	%rbp, %rcx
	addq	%rdi, %rsi
	subl	%eax, %edx
	subl	$1, %edx
	cmpl	%edx, %eax
	jge	.L25
.L26:
	movzbl	(%rsi), %edx
	cmpb	%dl, (%rcx)
	je	.L39
.L16:
	movq	104(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L40
	addq	$120, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	movl	%r15d, %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
.L25:
	.cfi_restore_state
	movl	$1, 0(%r13)
	movl	$1, 12(%rsp)
	cmpl	%r11d, %r12d
	jg	.L28
.L17:
	movl	$1, %r15d
	jmp	.L16
.L40:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE40:
	.size	calcCol, .-calcCol
	.p2align 4
	.globl	swapRow
	.type	swapRow, @function
swapRow:
.LFB41:
	.cfi_startproc
	endbr64
	testl	%r8d, %r8d
	jle	.L61
	imull	%r8d, %esi
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movl	%r8d, %r10d
	leal	-1(%r8), %r9d
	imull	%r8d, %edi
	movslq	%esi, %r11
	movslq	%edi, %rcx
	leaq	16(%r11), %rax
	cmpq	%rax, %rcx
	leaq	16(%rcx), %rbx
	setge	%al
	cmpq	%rbx, %r11
	setge	%bl
	orb	%bl, %al
	je	.L43
	cmpl	$6, %r9d
	jbe	.L43
	cmpl	$14, %r9d
	jbe	.L51
	movl	%r8d, %ebx
	leaq	(%rdx,%rcx), %r10
	leaq	(%rdx,%r11), %r9
	xorl	%eax, %eax
	shrl	$4, %ebx
	salq	$4, %rbx
	.p2align 4,,10
	.p2align 3
.L45:
	movdqu	(%r10,%rax), %xmm0
	movdqu	(%r9,%rax), %xmm1
	movups	%xmm1, (%r10,%rax)
	movups	%xmm0, (%r9,%rax)
	addq	$16, %rax
	cmpq	%rax, %rbx
	jne	.L45
	movl	%r8d, %eax
	andl	$-16, %eax
	movl	%eax, %r9d
	cmpl	%eax, %r8d
	je	.L41
	movl	%r8d, %r10d
	subl	%eax, %r10d
	leal	-1(%r10), %ebx
	cmpl	$6, %ebx
	jbe	.L47
.L44:
	addq	%rax, %rcx
	addq	%r11, %rax
	addq	%rdx, %rax
	addq	%rdx, %rcx
	movq	(%rax), %rbx
	movq	(%rcx), %r11
	movq	%rbx, (%rcx)
	movq	%r11, (%rax)
	movl	%r10d, %eax
	andl	$-8, %eax
	addl	%eax, %r9d
	cmpl	%eax, %r10d
	je	.L41
.L47:
	leal	(%rdi,%r9), %ecx
	leal	(%rsi,%r9), %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rdx, %rax
	addq	%rdx, %rcx
	movzbl	(%rax), %r11d
	movzbl	(%rcx), %r10d
	movb	%r11b, (%rcx)
	movb	%r10b, (%rax)
	leal	1(%r9), %eax
	cmpl	%eax, %r8d
	jle	.L41
	leal	(%rdi,%rax), %ecx
	addl	%esi, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rdx, %rax
	addq	%rdx, %rcx
	movzbl	(%rax), %r11d
	movzbl	(%rcx), %r10d
	movb	%r11b, (%rcx)
	movb	%r10b, (%rax)
	leal	2(%r9), %eax
	cmpl	%eax, %r8d
	jle	.L41
	leal	(%rdi,%rax), %ecx
	addl	%esi, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rdx, %rax
	addq	%rdx, %rcx
	movzbl	(%rax), %r11d
	movzbl	(%rcx), %r10d
	movb	%r11b, (%rcx)
	movb	%r10b, (%rax)
	leal	3(%r9), %eax
	cmpl	%eax, %r8d
	jle	.L41
	leal	(%rdi,%rax), %ecx
	addl	%esi, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rdx, %rax
	addq	%rdx, %rcx
	movzbl	(%rax), %r11d
	movzbl	(%rcx), %r10d
	movb	%r11b, (%rcx)
	movb	%r10b, (%rax)
	leal	4(%r9), %eax
	cmpl	%eax, %r8d
	jle	.L41
	leal	(%rdi,%rax), %ecx
	addl	%esi, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rdx, %rax
	addq	%rdx, %rcx
	movzbl	(%rax), %r11d
	movzbl	(%rcx), %r10d
	movb	%r11b, (%rcx)
	movb	%r10b, (%rax)
	leal	5(%r9), %eax
	cmpl	%eax, %r8d
	jle	.L41
	leal	(%rdi,%rax), %ecx
	addl	%esi, %eax
	addl	$6, %r9d
	movslq	%ecx, %rcx
	cltq
	addq	%rdx, %rcx
	addq	%rdx, %rax
	movzbl	(%rcx), %r10d
	movzbl	(%rax), %r11d
	movb	%r11b, (%rcx)
	movb	%r10b, (%rax)
	cmpl	%r9d, %r8d
	jle	.L41
	leal	(%rdi,%r9), %ecx
	leal	(%rsi,%r9), %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rdx, %rcx
	addq	%rdx, %rax
	movzbl	(%rcx), %edi
	movzbl	(%rax), %edx
	movb	%dl, (%rcx)
	movb	%dil, (%rax)
.L41:
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L43:
	.cfi_restore_state
	leaq	1(%rdx,%rcx), %r8
	leaq	(%rdx,%rcx), %rax
	addq	%r9, %r8
	.p2align 4,,10
	.p2align 3
.L49:
	movq	%rax, %rdx
	movzbl	(%rax), %esi
	addq	$1, %rax
	subq	%rcx, %rdx
	movzbl	(%rdx,%r11), %edi
	movb	%dil, -1(%rax)
	movb	%sil, (%rdx,%r11)
	cmpq	%r8, %rax
	jne	.L49
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L61:
	.cfi_restore 3
	ret
.L51:
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	xorl	%eax, %eax
	xorl	%r9d, %r9d
	jmp	.L44
	.cfi_endproc
.LFE41:
	.size	swapRow, .-swapRow
	.p2align 4
	.globl	loopRow
	.type	loopRow, @function
loopRow:
.LFB42:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movl	%ecx, %r15d
	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
	movq	%rsi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$88, %rsp
	.cfi_def_cfa_offset 144
	movl	%edx, 44(%rsp)
	subl	%edi, %edx
	leal	-1(%rdx), %eax
	movl	%edx, 40(%rsp)
	cmpl	%edi, %eax
	jle	.L65
	cmpl	%edi, %edx
	jle	.L67
	imull	%ecx, %eax
	movl	%edi, %ebx
	movl	%ecx, %r14d
	imull	%ecx, %ebx
	andl	$-16, %r14d
	movl	%r14d, %r9d
	movl	%eax, %r10d
	leal	1(%rdi), %eax
	movl	%eax, 64(%rsp)
	movl	64(%rsp), %edi
	movl	%eax, 52(%rsp)
	imull	%ecx, %eax
	movl	%ebx, 32(%rsp)
	movl	%ebx, 36(%rsp)
	leal	-1(%rcx), %ebx
	movl	%eax, 68(%rsp)
	movl	%ecx, %eax
	shrl	$4, %eax
	movl	%ebx, 4(%rsp)
	subl	$1, %eax
	addq	$1, %rax
	salq	$4, %rax
	movq	%rax, %r11
	movl	%ebx, %eax
	leaq	1(%rsi,%rax), %rax
	movq	%r11, %r13
	movq	%rax, 56(%rsp)
	cmpl	%edi, 40(%rsp)
	je	.L67
.L144:
	movslq	36(%rsp), %r11
	movslq	32(%rsp), %r14
	movl	%edi, (%rsp)
	cmpl	$6, 4(%rsp)
	movl	68(%rsp), %r8d
	leaq	16(%r11), %rax
	leaq	16(%r14), %rdx
	seta	50(%rsp)
	movzbl	50(%rsp), %ebx
	cmpq	%r14, %rax
	setle	%al
	cmpq	%r11, %rdx
	setle	%dl
	orl	%edx, %eax
	andl	%ebx, %eax
	movb	%al, 51(%rsp)
	movq	56(%rsp), %rax
	addq	%r11, %rax
	movq	%rax, 72(%rsp)
	movq	%r14, %rax
	movl	%r8d, %r14d
	movq	%rax, %r8
.L68:
	testl	%r15d, %r15d
	jle	.L142
	cmpb	$0, 51(%rsp)
	je	.L69
	cmpl	$14, 4(%rsp)
	jbe	.L108
	leaq	0(%rbp,%r11), %rcx
	leaq	0(%rbp,%r8), %rdx
	xorl	%eax, %eax
	.p2align 4,,10
	.p2align 3
.L71:
	movdqu	(%rcx,%rax), %xmm0
	movdqu	(%rdx,%rax), %xmm2
	movups	%xmm2, (%rcx,%rax)
	movups	%xmm0, (%rdx,%rax)
	addq	$16, %rax
	cmpq	%rax, %r13
	jne	.L71
	cmpl	%r9d, %r15d
	je	.L76
	movl	%r15d, %esi
	subl	%r9d, %esi
	leal	-1(%rsi), %eax
	cmpl	$6, %eax
	jbe	.L109
	movl	%r9d, %eax
	movl	%r9d, %edx
.L70:
	leaq	(%r11,%rax), %rcx
	addq	%r8, %rax
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movq	(%rax), %rbx
	movq	(%rcx), %rdi
	movq	%rbx, (%rcx)
	movq	%rdi, (%rax)
	movl	%esi, %eax
	andl	$-8, %eax
	addl	%eax, %edx
	cmpl	%eax, %esi
	je	.L76
.L73:
	movl	36(%rsp), %ebx
	movl	32(%rsp), %r12d
	leal	(%rbx,%rdx), %ecx
	leal	(%r12,%rdx), %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	1(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L76
	leal	(%rbx,%rax), %ecx
	addl	%r12d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	2(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L76
	leal	(%rbx,%rax), %ecx
	addl	%r12d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	3(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L76
	leal	(%rbx,%rax), %ecx
	addl	%r12d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	4(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L76
	leal	(%rbx,%rax), %ecx
	addl	%r12d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	5(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L76
	leal	(%rbx,%rax), %ecx
	addl	%r12d, %eax
	addl	$6, %edx
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rcx
	addq	%rbp, %rax
	movzbl	(%rcx), %esi
	movzbl	(%rax), %edi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	cmpl	%edx, %r15d
	jle	.L76
	leal	(%rbx,%rdx), %ecx
	addl	%r12d, %edx
	movslq	%edx, %rax
	movslq	%ecx, %rcx
	addq	%rbp, %rcx
	addq	%rbp, %rax
	movzbl	(%rcx), %esi
	movzbl	(%rax), %edx
	movb	%dl, (%rcx)
	movb	%sil, (%rax)
.L76:
	movslq	%r10d, %rbx
	movslq	%r14d, %r12
	leaq	16(%rbx), %rax
	leaq	16(%r12), %rdx
	cmpq	%r12, %rax
	setle	%al
	cmpq	%rbx, %rdx
	setle	%dl
	orb	%dl, %al
	je	.L77
	cmpb	$0, 50(%rsp)
	je	.L77
	cmpl	$14, 4(%rsp)
	jbe	.L110
	leaq	0(%rbp,%rbx), %rcx
	leaq	0(%rbp,%r12), %rdx
	xorl	%eax, %eax
	.p2align 4,,10
	.p2align 3
.L79:
	movdqu	(%rcx,%rax), %xmm0
	movdqu	(%rdx,%rax), %xmm3
	movups	%xmm3, (%rcx,%rax)
	movups	%xmm0, (%rdx,%rax)
	addq	$16, %rax
	cmpq	%rax, %r13
	jne	.L79
	cmpl	%r9d, %r15d
	je	.L84
	movl	%r15d, %esi
	subl	%r9d, %esi
	leal	-1(%rsi), %eax
	cmpl	$6, %eax
	jbe	.L111
	movl	%r9d, %eax
	movl	%r9d, %edx
.L78:
	leaq	(%rbx,%rax), %rcx
	addq	%r12, %rax
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movq	(%rax), %xmm0
	movq	(%rcx), %rdi
	movq	%xmm0, (%rcx)
	movq	%rdi, (%rax)
	movl	%esi, %eax
	andl	$-8, %eax
	addl	%eax, %edx
	cmpl	%eax, %esi
	je	.L84
.L81:
	leal	(%r10,%rdx), %ecx
	leal	(%r14,%rdx), %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	1(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L84
	leal	(%r10,%rax), %ecx
	addl	%r14d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	2(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L84
	leal	(%r10,%rax), %ecx
	addl	%r14d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	3(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L84
	leal	(%r10,%rax), %ecx
	addl	%r14d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	4(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L84
	leal	(%r10,%rax), %ecx
	addl	%r14d, %eax
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rax
	addq	%rbp, %rcx
	movzbl	(%rax), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	leal	5(%rdx), %eax
	cmpl	%eax, %r15d
	jle	.L84
	leal	(%r10,%rax), %ecx
	addl	%r14d, %eax
	addl	$6, %edx
	movslq	%ecx, %rcx
	cltq
	addq	%rbp, %rcx
	addq	%rbp, %rax
	movzbl	(%rcx), %esi
	movzbl	(%rax), %edi
	movb	%dil, (%rcx)
	movb	%sil, (%rax)
	cmpl	%edx, %r15d
	jle	.L84
	leal	(%r10,%rdx), %ecx
	addl	%r14d, %edx
	movslq	%edx, %rax
	movslq	%ecx, %rcx
	addq	%rbp, %rcx
	addq	%rbp, %rax
	movzbl	(%rcx), %esi
	movzbl	(%rax), %edx
	movb	%dl, (%rcx)
	movb	%sil, (%rax)
.L84:
	movl	44(%rsp), %edx
	movl	52(%rsp), %edi
	movl	%r15d, %ecx
	movq	%rbp, %rsi
	movl	%r9d, 28(%rsp)
	movq	%r8, 16(%rsp)
	movq	%r11, 8(%rsp)
	movl	%r10d, 24(%rsp)
	call	loopRow
	movl	24(%rsp), %r10d
	movq	8(%rsp), %r11
	testl	%eax, %eax
	movq	16(%rsp), %r8
	movl	28(%rsp), %r9d
	je	.L143
.L117:
	addq	$88, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	movl	$1, %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
	.p2align 4,,10
	.p2align 3
.L77:
	.cfi_restore_state
	movq	56(%rsp), %rdi
	leaq	0(%rbp,%rbx), %rax
	leaq	(%rdi,%rbx), %rsi
	.p2align 4,,10
	.p2align 3
.L83:
	movq	%rax, %rdx
	movzbl	(%rax), %ecx
	addq	$1, %rax
	subq	%rbx, %rdx
	movzbl	(%rdx,%r12), %edi
	movb	%dil, -1(%rax)
	movb	%cl, (%rdx,%r12)
	cmpq	%rax, %rsi
	jne	.L83
	jmp	.L84
	.p2align 4,,10
	.p2align 3
.L69:
	movq	72(%rsp), %rdi
	leaq	0(%rbp,%r11), %rax
	.p2align 4,,10
	.p2align 3
.L75:
	movq	%rax, %rdx
	movzbl	(%rax), %ecx
	addq	$1, %rax
	subq	%r11, %rdx
	movzbl	(%rdx,%r8), %esi
	movb	%sil, -1(%rax)
	movb	%cl, (%rdx,%r8)
	cmpq	%rax, %rdi
	jne	.L75
	jmp	.L76
	.p2align 4,,10
	.p2align 3
.L143:
	cmpb	$0, 51(%rsp)
	je	.L88
	cmpl	$14, 4(%rsp)
	jbe	.L113
	leaq	0(%rbp,%r11), %rsi
	leaq	0(%rbp,%r8), %rcx
	xorl	%edx, %edx
	.p2align 4,,10
	.p2align 3
.L90:
	movdqu	(%rsi,%rdx), %xmm0
	movdqu	(%rcx,%rdx), %xmm5
	movups	%xmm5, (%rsi,%rdx)
	movups	%xmm0, (%rcx,%rdx)
	addq	$16, %rdx
	cmpq	%rdx, %r13
	jne	.L90
	cmpl	%r9d, %r15d
	je	.L95
	movl	%r15d, %edi
	subl	%r9d, %edi
	leal	-1(%rdi), %edx
	cmpl	$6, %edx
	jbe	.L114
	movl	%r9d, %edx
	movl	%r9d, %ecx
.L89:
	leaq	(%rdx,%r11), %rsi
	addq	%r8, %rdx
	addq	%rbp, %rsi
	addq	%rbp, %rdx
	movq	(%rsi), %xmm0
	movq	(%rdx), %xmm1
	movq	%xmm1, (%rsi)
	movq	%xmm0, (%rdx)
	movl	%edi, %edx
	andl	$-8, %edx
	leal	(%rcx,%rdx), %esi
	movl	%esi, 24(%rsp)
	cmpl	%edx, %edi
	je	.L95
.L92:
	movl	24(%rsp), %ecx
	movl	32(%rsp), %edx
	movl	36(%rsp), %edi
	addl	%ecx, %edx
	movslq	%edx, %rdx
	leal	(%rdi,%rcx), %esi
	addq	%rbp, %rdx
	movslq	%esi, %rsi
	movzbl	(%rdx), %ecx
	addq	%rbp, %rsi
	movzbl	(%rsi), %edi
	movb	%cl, (%rsi)
	movl	24(%rsp), %ecx
	movb	%dil, (%rdx)
	leal	1(%rcx), %edx
	cmpl	%edx, %r15d
	jle	.L95
	movl	36(%rsp), %edi
	leal	(%rdi,%rdx), %esi
	addl	32(%rsp), %edx
	movslq	%edx, %rdx
	movslq	%esi, %rsi
	addq	%rbp, %rdx
	addq	%rbp, %rsi
	movzbl	(%rdx), %ecx
	movzbl	(%rsi), %edi
	movb	%cl, (%rsi)
	movl	24(%rsp), %ecx
	movb	%dil, (%rdx)
	leal	2(%rcx), %edx
	cmpl	%edx, %r15d
	jle	.L95
	movl	36(%rsp), %edi
	leal	(%rdi,%rdx), %esi
	addl	32(%rsp), %edx
	movslq	%edx, %rdx
	movslq	%esi, %rsi
	addq	%rbp, %rdx
	addq	%rbp, %rsi
	movzbl	(%rdx), %ecx
	movzbl	(%rsi), %edi
	movb	%cl, (%rsi)
	movl	24(%rsp), %ecx
	movb	%dil, (%rdx)
	leal	3(%rcx), %edx
	cmpl	%edx, %r15d
	jle	.L95
	movl	36(%rsp), %edi
	leal	(%rdi,%rdx), %esi
	addl	32(%rsp), %edx
	movslq	%edx, %rdx
	movslq	%esi, %rsi
	addq	%rbp, %rdx
	addq	%rbp, %rsi
	movzbl	(%rdx), %ecx
	movzbl	(%rsi), %edi
	movb	%cl, (%rsi)
	movl	24(%rsp), %ecx
	movb	%dil, (%rdx)
	leal	4(%rcx), %edx
	cmpl	%edx, %r15d
	jle	.L95
	movl	36(%rsp), %edi
	leal	(%rdi,%rdx), %esi
	addl	32(%rsp), %edx
	movslq	%edx, %rdx
	movslq	%esi, %rsi
	addq	%rbp, %rdx
	addq	%rbp, %rsi
	movzbl	(%rdx), %ecx
	movzbl	(%rsi), %edi
	movb	%cl, (%rsi)
	movl	24(%rsp), %ecx
	movb	%dil, (%rdx)
	leal	5(%rcx), %edx
	cmpl	%edx, %r15d
	jle	.L95
	movl	36(%rsp), %edi
	leal	(%rdi,%rdx), %esi
	addl	32(%rsp), %edx
	movslq	%edx, %rdx
	movslq	%esi, %rsi
	addq	%rbp, %rdx
	addq	%rbp, %rsi
	movzbl	(%rdx), %ecx
	movzbl	(%rsi), %edi
	movb	%cl, (%rsi)
	movl	24(%rsp), %ecx
	movb	%dil, (%rdx)
	addl	$6, %ecx
	cmpl	%ecx, %r15d
	jle	.L95
	movl	36(%rsp), %edi
	leal	(%rdi,%rcx), %edx
	addl	32(%rsp), %ecx
	movslq	%edx, %rdx
	movslq	%ecx, %rcx
	addq	%rbp, %rdx
	addq	%rbp, %rcx
	movzbl	(%rdx), %esi
	movzbl	(%rcx), %edi
	movb	%dil, (%rdx)
	movb	%sil, (%rcx)
	.p2align 4,,10
	.p2align 3
.L95:
	leaq	16(%r12), %rdx
	cmpq	%rdx, %rbx
	leaq	16(%rbx), %rdx
	setge	%cl
	cmpq	%rdx, %r12
	setge	%dl
	orb	%cl, %dl
	je	.L96
	cmpb	$0, 50(%rsp)
	je	.L96
	cmpl	$14, 4(%rsp)
	jbe	.L115
	leaq	0(%rbp,%rbx), %rcx
	leaq	0(%rbp,%r12), %rdx
	xorl	%eax, %eax
	.p2align 4,,10
	.p2align 3
.L98:
	movdqu	(%rcx,%rax), %xmm0
	movdqu	(%rdx,%rax), %xmm4
	movups	%xmm4, (%rcx,%rax)
	movups	%xmm0, (%rdx,%rax)
	addq	$16, %rax
	cmpq	%rax, %r13
	jne	.L98
	cmpl	%r9d, %r15d
	je	.L100
	movl	%r15d, %ecx
	movl	%r9d, %edx
	subl	%r9d, %ecx
	leal	-1(%rcx), %eax
	cmpl	$6, %eax
	movl	%r9d, %eax
	jbe	.L102
.L97:
	addq	%rdx, %rbx
	addq	%r12, %rdx
	addq	%rbp, %rdx
	addq	%rbp, %rbx
	movq	(%rdx), %rdi
	movq	(%rbx), %rsi
	movq	%rdi, (%rbx)
	movq	%rsi, (%rdx)
	movl	%ecx, %edx
	andl	$-8, %edx
	addl	%edx, %eax
	cmpl	%edx, %ecx
	je	.L100
.L102:
	leal	(%r10,%rax), %ecx
	leal	(%r14,%rax), %edx
	movslq	%ecx, %rcx
	movslq	%edx, %rdx
	addq	%rbp, %rdx
	addq	%rbp, %rcx
	movzbl	(%rdx), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rdx)
	leal	1(%rax), %edx
	cmpl	%edx, %r15d
	jle	.L100
	leal	(%r10,%rdx), %ecx
	addl	%r14d, %edx
	movslq	%ecx, %rcx
	movslq	%edx, %rdx
	addq	%rbp, %rdx
	addq	%rbp, %rcx
	movzbl	(%rdx), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rdx)
	leal	2(%rax), %edx
	cmpl	%edx, %r15d
	jle	.L100
	leal	(%r10,%rdx), %ecx
	addl	%r14d, %edx
	movslq	%ecx, %rcx
	movslq	%edx, %rdx
	addq	%rbp, %rdx
	addq	%rbp, %rcx
	movzbl	(%rdx), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rdx)
	leal	3(%rax), %edx
	cmpl	%edx, %r15d
	jle	.L100
	leal	(%r10,%rdx), %ecx
	addl	%r14d, %edx
	movslq	%ecx, %rcx
	movslq	%edx, %rdx
	addq	%rbp, %rdx
	addq	%rbp, %rcx
	movzbl	(%rdx), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rdx)
	leal	4(%rax), %edx
	cmpl	%edx, %r15d
	jle	.L100
	leal	(%r10,%rdx), %ecx
	addl	%r14d, %edx
	movslq	%ecx, %rcx
	movslq	%edx, %rdx
	addq	%rbp, %rdx
	addq	%rbp, %rcx
	movzbl	(%rdx), %edi
	movzbl	(%rcx), %esi
	movb	%dil, (%rcx)
	movb	%sil, (%rdx)
	leal	5(%rax), %edx
	cmpl	%edx, %r15d
	jle	.L100
	leal	(%r10,%rdx), %ecx
	addl	%r14d, %edx
	addl	$6, %eax
	movslq	%ecx, %rcx
	movslq	%edx, %rdx
	addq	%rbp, %rcx
	addq	%rbp, %rdx
	movzbl	(%rcx), %esi
	movzbl	(%rdx), %edi
	movb	%dil, (%rcx)
	movb	%sil, (%rdx)
	cmpl	%eax, %r15d
	jle	.L100
	leal	(%r10,%rax), %edx
	addl	%r14d, %eax
	movslq	%edx, %rdx
	cltq
	addq	%rbp, %rdx
	addq	%rbp, %rax
	movzbl	(%rdx), %ecx
	movzbl	(%rax), %esi
	movb	%sil, (%rdx)
	movb	%cl, (%rax)
.L100:
	addl	$1, (%rsp)
	addl	%r15d, %r14d
	movl	(%rsp), %eax
	cmpl	%eax, 40(%rsp)
	jne	.L68
	movl	64(%rsp), %eax
	addl	%r15d, 32(%rsp)
	addl	%r15d, 68(%rsp)
	addl	$1, %eax
	movl	%eax, 64(%rsp)
	movl	64(%rsp), %edi
	cmpl	%edi, 40(%rsp)
	jne	.L144
.L67:
	addq	$88, %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
	.p2align 4,,10
	.p2align 3
.L96:
	.cfi_restore_state
	movq	56(%rsp), %rdi
	leaq	0(%rbp,%rbx), %rax
	leaq	(%rdi,%rbx), %rsi
	.p2align 4,,10
	.p2align 3
.L104:
	movq	%rax, %rdx
	movzbl	(%rax), %ecx
	addq	$1, %rax
	subq	%rbx, %rdx
	movzbl	(%rdx,%r12), %edi
	movb	%dil, -1(%rax)
	movb	%cl, (%rdx,%r12)
	cmpq	%rsi, %rax
	jne	.L104
	jmp	.L100
	.p2align 4,,10
	.p2align 3
.L142:
	movl	44(%rsp), %edx
	movl	52(%rsp), %edi
	movl	%r15d, %ecx
	movq	%rbp, %rsi
	movl	%r9d, 28(%rsp)
	movq	%r8, 16(%rsp)
	movq	%r11, 8(%rsp)
	movl	%r10d, 24(%rsp)
	call	loopRow
	movl	24(%rsp), %r10d
	movq	8(%rsp), %r11
	testl	%eax, %eax
	movq	16(%rsp), %r8
	movl	28(%rsp), %r9d
	jne	.L117
	jmp	.L100
.L65:
	movl	44(%rsp), %esi
	addq	$88, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	movq	%rbp, %rdi
	movl	%ecx, %edx
	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
	jmp	calcCol
.L110:
	.cfi_restore_state
	movl	%r15d, %esi
	xorl	%eax, %eax
	xorl	%edx, %edx
	jmp	.L78
.L108:
	movl	%r15d, %esi
	xorl	%eax, %eax
	xorl	%edx, %edx
	jmp	.L70
.L115:
	movl	%r15d, %ecx
	xorl	%edx, %edx
	jmp	.L97
.L111:
	movl	%r9d, %edx
	jmp	.L81
.L109:
	movl	%r9d, %edx
	jmp	.L73
.L88:
	movl	%eax, 24(%rsp)
	movq	72(%rsp), %rdi
	leaq	0(%rbp,%r11), %rdx
	.p2align 4,,10
	.p2align 3
.L94:
	movq	%rdx, %rcx
	movzbl	(%rdx), %esi
	addq	$1, %rdx
	subq	%r11, %rcx
	movzbl	(%rcx,%r8), %eax
	movb	%al, -1(%rdx)
	movb	%sil, (%rcx,%r8)
	cmpq	%rdx, %rdi
	jne	.L94
	movl	24(%rsp), %eax
	jmp	.L95
.L113:
	movl	%r15d, %edi
	xorl	%ecx, %ecx
	xorl	%edx, %edx
	jmp	.L89
.L114:
	movl	%r9d, 24(%rsp)
	jmp	.L92
	.cfi_endproc
.LFE42:
	.size	loopRow, .-loopRow
	.p2align 4
	.globl	calc
	.type	calc, @function
calc:
.LFB43:
	.cfi_startproc
	endbr64
	movl	%edx, %ecx
	movl	%esi, %edx
	movq	%rdi, %rsi
	xorl	%edi, %edi
	jmp	loopRow
	.cfi_endproc
.LFE43:
	.size	calc, .-calc
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"YES"
.LC1:
	.string	"NO"
.LC2:
	.string	"%d%d"
.LC3:
	.string	"%s"
	.text
	.p2align 4
	.globl	run
	.type	run, @function
run:
.LFB44:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	leaq	.LC2(%rip), %rdi
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	subq	$16, %rsp
	.cfi_def_cfa_offset 64
	movq	%fs:40, %rax
	movq	%rax, 8(%rsp)
	xorl	%eax, %eax
	leaq	4(%rsp), %rdx
	movq	%rsp, %rsi
	call	__isoc99_scanf@PLT
	movl	(%rsp), %r14d
	movl	4(%rsp), %r12d
	movl	%r14d, %edi
	imull	%r12d, %edi
	addl	$1, %edi
	movslq	%edi, %rdi
	call	malloc@PLT
	movq	%rax, %rbp
	testl	%r14d, %r14d
	jle	.L147
	xorl	%r13d, %r13d
	leaq	.LC3(%rip), %rbx
	.p2align 4,,10
	.p2align 3
.L149:
	imull	%r13d, %r12d
	movq	%rbx, %rdi
	xorl	%eax, %eax
	addl	$1, %r13d
	movslq	%r12d, %rsi
	addq	%rbp, %rsi
	call	__isoc99_scanf@PLT
	movl	(%rsp), %r14d
	movl	4(%rsp), %r12d
	cmpl	%r13d, %r14d
	jg	.L149
.L147:
	xorl	%edi, %edi
	movl	%r12d, %ecx
	movl	%r14d, %edx
	movq	%rbp, %rsi
	call	loopRow
	leaq	.LC0(%rip), %rdi
	testl	%eax, %eax
	leaq	.LC1(%rip), %rax
	cmove	%rax, %rdi
	call	puts@PLT
	movq	8(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L155
	addq	$16, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 48
	movq	%rbp, %rdi
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	jmp	free@PLT
.L155:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE44:
	.size	run, .-run
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB45:
	.cfi_startproc
	endbr64
	subq	$8, %rsp
	.cfi_def_cfa_offset 16
	call	run
	xorl	%eax, %eax
	addq	$8, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE45:
	.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:

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

typedef long long int int64;

#define MAX(a,b) ((a)>(b)?(a):(b))
#define MIN(a,b) ((a)<(b)?(a):(b))
#define ABS(a) ((a)>(0)?(a):-(a))

#define POS(i,j) ((i)*w+(j))

int func(int i,int j,char *board,int h,int w){
  int k;
  for(k=0;k<h;k++){
    if(board[POS(k,i)]!=board[POS(h-1-k,j)]) return 0;
  }
  return 1;
}

int calcCol(char *board,int h,int w){
  int flag[16];
  int i,j;
  for(i=0;i<w;i++) flag[i]=0;
  int useCenter=0;
  for(i=0;i<w;i++){
    if(flag[i]) continue;
    for(j=i+1;j<w;j++){
      if(flag[j]) continue;
      if(func(i,j,board,h,w)){
	flag[i]=1;
	flag[j]=1;
	break;
      }
    }
    if(flag[i]==0){
      if(w%2==0 || useCenter) return 0;
      for(j=0;j<h-1-j;j++){
	if(board[POS(j,i)]!=board[POS(h-1-j,i)]) return 0;
      }
      useCenter=1;
      flag[i]=1;
    }
  }
  return 1;
}

void swapRow(int a,int b,char *board,int h,int w){
  int i;
  for(i=0;i<w;i++){
    char t=board[POS(a,i)];
    board[POS(a,i)]=board[POS(b,i)];
    board[POS(b,i)]=t;
  }
  return;
}

int loopRow(int d,char *board,int h,int w){
  if(d>=h-d-1) return calcCol(board,h,w);
  int i,j;
  for(i=d;i<h-d;i++){
    for(j=i+1;j<h-d;j++){
      swapRow(d,i,board,h,w);
      swapRow(h-d-1,j,board,h,w);
      if(loopRow(d+1,board,h,w)) return 1;
      swapRow(d,i,board,h,w);
      swapRow(h-d-1,j,board,h,w);
    }
  }
  return 0;
}

int calc(char *board,int h,int w){
  return loopRow(0,board,h,w);
}

void run(void){
  int h,w;
  scanf("%d%d",&h,&w);
  char *board=(char *)malloc(sizeof(char)*(h*w+1));
  int i;
  for(i=0;i<h;i++) scanf("%s",board+POS(i,0));
  printf("%s\n",calc(board,h,w)?"YES":"NO");
  free(board);
}

int main(void){
  run();
  return 0;
}

3 7
atcocer
regular
contest
 2 3
acr
car
 12 12
bimonigaloaf
faurwlkbleht
dexwimqxzxbb
lxdgyoifcxid
ydxilincfdgx
nfoabgilamoi
ibxbdqmzxxwe
pqirylfrcrnf
wtehfkllbura
yfrnpflcrirq
wvcclwgiubrk
lkbrwgwuiccv
 12 12
bimonigaloaf
faurwlkbleht
dexwimqxzxbb
lxdgyoifcxid
ydxilincfdgw
nfoabgilamoi
ibxbdqmzxxwe
pqirylfrcrnf
wtehfkllbura
yfrnpflcrirq
wvcclwgiubrk
lkbrwgwuiccv
 12 12
bimonigaloaf
faurwlkbleht
dexwimqxzxbb
lxdgyoifcxid
ydxilincfdgw
nfoabgilbmoi
ibxbdqmzxxwe
pqirylfrcrnf
wtehfkllbura
yfrnpflcrirq
wvcclwgiubrk
lkbrwgwuiccv
 12 12
bimonigaloaf
faurwlkbleht
dexwimqxzxbb
lxdgyoifcxid
ydxilincfdgw
nfoabgilbmoi
ibxbdqmzxxwe
pqirylfrcrnf
wtehfkllbura
qrirclfpnrfy
wvcclwgiubrk
lkbrwgwuiccv
 12 12
bimonigaloaf
faurwlkbleht
dexwimqxzxbb
lxdgyoifcxid
ydxilincfdgw
nfoabgilbmoi
ibxbdqmzxxwe
pqirylfrcrnf
wtehfkllbura
qrirclfpnrfy
wvcclwgiubqk
lkbrwgwuiccv
 12 12
bimonigaloaf
faurwlkbleht
dexwimqxzxbb
lxdgyoifcxid
ydxilincfdgw
nfobbgilbmoi
ibxbdqmzxxwe
pqirylfrcrnf
wtehfkllbura
qrirclfpnrfy
wvcclwgiubqk
lkbrwgwuiccv
 12 12
bimonigaloaf
faurwlkbleht
dexwimqxzxbb
lxdgyoifcxid
ydxilincfdgw
nfobbgilbmoi
ibxbdqmzxxwe
pqirylfrcrnf
wtehfkllbura
qrirclfpnrfy
wvcclwgiubqk
ukbrwgwliccv
 12 12
bimonigaloaf
faurwlkbleht
dexwimqxzxbb
lxdgyoifcxid
ydxilincfdgw
nfobbgilbmoi
ibxbdqmzxxwe
pqirylfrcrnf
arubllkfhetw
qrirclfpnrfy
wvcclwgiubqk
ukbrwgwliccv

NO
 YES
 NO
 NO
 NO
 NO
 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
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

typedef long long int int64;

#define MAX(a,b) ((a)>(b)?(a):(b))
#define MIN(a,b) ((a)<(b)?(a):(b))
#define ABS(a) ((a)>(0)?(a):-(a))

#define POS(i,j) ((i)*w+(j))

int func(int i,int j,char *board,int h,int w){
  int k;
  for(k=0;k<h;k++){
    if(board[POS(k,i)]!=board[POS(h-1-k,j)]) return 0;
  }
  return 1;
}

int calcCol(char *board,int h,int w){
  int flag[16];
  int i,j;
  for(i=0;i<w;i++) flag[i]=0;
  int useCenter=0;
  for(i=0;i<w;i++){
    if(flag[i]) continue;
    for(j=i+1;j<w;j++){
      if(flag[j]) continue;
      if(func(i,j,board,h,w)){
	flag[i]=1;
	flag[j]=1;
	break;
      }
    }
    if(flag[i]==0){
      if(w%2==0 || useCenter) return 0;
      for(j=0;j<h-1-j;j++){
	if(board[POS(j,i)]!=board[POS(h-1-j,i)]) return 0;
      }
      useCenter=1;
      flag[i]=1;
    }
  }
  return 1;
}

void swapRow(int a,int b,char *board,int h,int w){
  int i;
  for(i=0;i<w;i++){
    char t=board[POS(a,i)];
    board[POS(a,i)]=board[POS(b,i)];
    board[POS(b,i)]=t;
  }
  return;
}

int loopRow(int d,char *board,int h,int w){
  if(d>=h-d-1) return calcCol(board,h,w);
  int i,j;
  for(i=d;i<h-d;i++){
    for(j=i+1;j<h-d;j++){
      swapRow(d,i,board,h,w);
      swapRow(h-d-1,j,board,h,w);
      if(loopRow(d+1,board,h,w)) return 1;
      swapRow(d,i,board,h,w);
      swapRow(h-d-1,j,board,h,w);
    }
  }
  return 0;
}

int calc(char *board,int h,int w){
  return loopRow(0,board,h,w);
}

void run(void){
  int h,w;
  scanf("%d%d",&h,&w);
  char *board=(char *)malloc(sizeof(char)*(h*w+1));
  int i;
  for(i=0;i<h;i++) scanf("%s",board+POS(i,0));
  printf("%s\n",calc(board,h,w)?"YES":"NO");
  free(board);
}

int main(void){
  run();
  return 0;
}
```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	func
	.type	func, @function
func:
.LFB6:
	.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)
	movq	%rdx, -32(%rbp)
	movl	%ecx, -36(%rbp)
	movl	%r8d, -40(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L2
.L5:
	movl	-4(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-20(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %edx
	movl	-36(%rbp), %eax
	subl	$1, %eax
	subl	-4(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %ecx
	movl	-24(%rbp), %eax
	addl	%ecx, %eax
	movslq	%eax, %rcx
	movq	-32(%rbp), %rax
	addq	%rcx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L3
	movl	$0, %eax
	jmp	.L4
.L3:
	addl	$1, -4(%rbp)
.L2:
	movl	-4(%rbp), %eax
	cmpl	-36(%rbp), %eax
	jl	.L5
	movl	$1, %eax
.L4:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	func, .-func
	.globl	calcCol
	.type	calcCol, @function
calcCol:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$112, %rsp
	movq	%rdi, -104(%rbp)
	movl	%esi, -108(%rbp)
	movl	%edx, -112(%rbp)
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$0, -92(%rbp)
	jmp	.L7
.L8:
	movl	-92(%rbp), %eax
	cltq
	movl	$0, -80(%rbp,%rax,4)
	addl	$1, -92(%rbp)
.L7:
	movl	-92(%rbp), %eax
	cmpl	-112(%rbp), %eax
	jl	.L8
	movl	$0, -84(%rbp)
	movl	$0, -92(%rbp)
	jmp	.L9
.L23:
	movl	-92(%rbp), %eax
	cltq
	movl	-80(%rbp,%rax,4), %eax
	testl	%eax, %eax
	jne	.L26
	movl	-92(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -88(%rbp)
	jmp	.L12
.L16:
	movl	-88(%rbp), %eax
	cltq
	movl	-80(%rbp,%rax,4), %eax
	testl	%eax, %eax
	jne	.L27
	movl	-112(%rbp), %edi
	movl	-108(%rbp), %ecx
	movq	-104(%rbp), %rdx
	movl	-88(%rbp), %esi
	movl	-92(%rbp), %eax
	movl	%edi, %r8d
	movl	%eax, %edi
	call	func
	testl	%eax, %eax
	je	.L14
	movl	-92(%rbp), %eax
	cltq
	movl	$1, -80(%rbp,%rax,4)
	movl	-88(%rbp), %eax
	cltq
	movl	$1, -80(%rbp,%rax,4)
	jmp	.L15
.L27:
	nop
.L14:
	addl	$1, -88(%rbp)
.L12:
	movl	-88(%rbp), %eax
	cmpl	-112(%rbp), %eax
	jl	.L16
.L15:
	movl	-92(%rbp), %eax
	cltq
	movl	-80(%rbp,%rax,4), %eax
	testl	%eax, %eax
	jne	.L11
	movl	-112(%rbp), %eax
	andl	$1, %eax
	testl	%eax, %eax
	je	.L17
	cmpl	$0, -84(%rbp)
	je	.L18
.L17:
	movl	$0, %eax
	jmp	.L24
.L18:
	movl	$0, -88(%rbp)
	jmp	.L20
.L22:
	movl	-88(%rbp), %eax
	imull	-112(%rbp), %eax
	movl	%eax, %edx
	movl	-92(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-104(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %edx
	movl	-108(%rbp), %eax
	subl	$1, %eax
	subl	-88(%rbp), %eax
	imull	-112(%rbp), %eax
	movl	%eax, %ecx
	movl	-92(%rbp), %eax
	addl	%ecx, %eax
	movslq	%eax, %rcx
	movq	-104(%rbp), %rax
	addq	%rcx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L21
	movl	$0, %eax
	jmp	.L24
.L21:
	addl	$1, -88(%rbp)
.L20:
	movl	-108(%rbp), %eax
	subl	$1, %eax
	subl	-88(%rbp), %eax
	cmpl	%eax, -88(%rbp)
	jl	.L22
	movl	$1, -84(%rbp)
	movl	-92(%rbp), %eax
	cltq
	movl	$1, -80(%rbp,%rax,4)
	jmp	.L11
.L26:
	nop
.L11:
	addl	$1, -92(%rbp)
.L9:
	movl	-92(%rbp), %eax
	cmpl	-112(%rbp), %eax
	jl	.L23
	movl	$1, %eax
.L24:
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L25
	call	__stack_chk_fail@PLT
.L25:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	calcCol, .-calcCol
	.globl	swapRow
	.type	swapRow, @function
swapRow:
.LFB8:
	.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)
	movq	%rdx, -32(%rbp)
	movl	%ecx, -36(%rbp)
	movl	%r8d, -40(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L29
.L30:
	movl	-20(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-4(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movb	%al, -5(%rbp)
	movl	-24(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-4(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	leaq	(%rdx,%rax), %rcx
	movl	-20(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-4(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	addq	%rax, %rdx
	movzbl	(%rcx), %eax
	movb	%al, (%rdx)
	movl	-24(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-4(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	addq	%rax, %rdx
	movzbl	-5(%rbp), %eax
	movb	%al, (%rdx)
	addl	$1, -4(%rbp)
.L29:
	movl	-4(%rbp), %eax
	cmpl	-40(%rbp), %eax
	jl	.L30
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	swapRow, .-swapRow
	.globl	loopRow
	.type	loopRow, @function
loopRow:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$48, %rsp
	movl	%edi, -20(%rbp)
	movq	%rsi, -32(%rbp)
	movl	%edx, -24(%rbp)
	movl	%ecx, -36(%rbp)
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	subl	$1, %eax
	cmpl	%eax, -20(%rbp)
	jl	.L33
	movl	-36(%rbp), %edx
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	calcCol
	jmp	.L34
.L33:
	movl	-20(%rbp), %eax
	movl	%eax, -8(%rbp)
	jmp	.L35
.L39:
	movl	-8(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -4(%rbp)
	jmp	.L36
.L38:
	movl	-36(%rbp), %edi
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rdx
	movl	-8(%rbp), %esi
	movl	-20(%rbp), %eax
	movl	%edi, %r8d
	movl	%eax, %edi
	call	swapRow
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	leal	-1(%rax), %edi
	movl	-36(%rbp), %esi
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rdx
	movl	-4(%rbp), %eax
	movl	%esi, %r8d
	movl	%eax, %esi
	call	swapRow
	movl	-20(%rbp), %eax
	leal	1(%rax), %edi
	movl	-36(%rbp), %ecx
	movl	-24(%rbp), %edx
	movq	-32(%rbp), %rax
	movq	%rax, %rsi
	call	loopRow
	testl	%eax, %eax
	je	.L37
	movl	$1, %eax
	jmp	.L34
.L37:
	movl	-36(%rbp), %edi
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rdx
	movl	-8(%rbp), %esi
	movl	-20(%rbp), %eax
	movl	%edi, %r8d
	movl	%eax, %edi
	call	swapRow
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	leal	-1(%rax), %edi
	movl	-36(%rbp), %esi
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rdx
	movl	-4(%rbp), %eax
	movl	%esi, %r8d
	movl	%eax, %esi
	call	swapRow
	addl	$1, -4(%rbp)
.L36:
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	cmpl	%eax, -4(%rbp)
	jl	.L38
	addl	$1, -8(%rbp)
.L35:
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	cmpl	%eax, -8(%rbp)
	jl	.L39
	movl	$0, %eax
.L34:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	loopRow, .-loopRow
	.globl	calc
	.type	calc, @function
calc:
.LFB10:
	.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
	movq	%rdi, -8(%rbp)
	movl	%esi, -12(%rbp)
	movl	%edx, -16(%rbp)
	movl	-16(%rbp), %ecx
	movl	-12(%rbp), %edx
	movq	-8(%rbp), %rax
	movq	%rax, %rsi
	movl	$0, %edi
	call	loopRow
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	calc, .-calc
	.section	.rodata
.LC0:
	.string	"%d%d"
.LC1:
	.string	"%s"
.LC2:
	.string	"YES"
.LC3:
	.string	"NO"
	.text
	.globl	run
	.type	run, @function
run:
.LFB11:
	.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
	leaq	-24(%rbp), %rdx
	leaq	-28(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	-28(%rbp), %edx
	movl	-24(%rbp), %eax
	imull	%edx, %eax
	addl	$1, %eax
	cltq
	movq	%rax, %rdi
	call	malloc@PLT
	movq	%rax, -16(%rbp)
	movl	$0, -20(%rbp)
	jmp	.L43
.L44:
	movl	-24(%rbp), %eax
	imull	-20(%rbp), %eax
	movslq	%eax, %rdx
	movq	-16(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -20(%rbp)
.L43:
	movl	-28(%rbp), %eax
	cmpl	%eax, -20(%rbp)
	jl	.L44
	movl	-24(%rbp), %edx
	movl	-28(%rbp), %ecx
	movq	-16(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	calc
	testl	%eax, %eax
	je	.L45
	leaq	.LC2(%rip), %rax
	jmp	.L46
.L45:
	leaq	.LC3(%rip), %rax
.L46:
	movq	%rax, %rdi
	call	puts@PLT
	movq	-16(%rbp), %rax
	movq	%rax, %rdi
	call	free@PLT
	nop
	movq	-8(%rbp), %rax
	subq	%fs:40, %rax
	je	.L47
	call	__stack_chk_fail@PLT
.L47:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	run, .-run
	.globl	main
	.type	main, @function
main:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	call	run
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.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	func
	.type	func, @function
func:
.LFB6:
	.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)
	movq	%rdx, -32(%rbp)
	movl	%ecx, -36(%rbp)
	movl	%r8d, -40(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L2
.L5:
	movl	-4(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-20(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %edx
	movl	-36(%rbp), %eax
	subl	$1, %eax
	subl	-4(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %ecx
	movl	-24(%rbp), %eax
	addl	%ecx, %eax
	movslq	%eax, %rcx
	movq	-32(%rbp), %rax
	addq	%rcx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L3
	movl	$0, %eax
	jmp	.L4
.L3:
	addl	$1, -4(%rbp)
.L2:
	movl	-4(%rbp), %eax
	cmpl	-36(%rbp), %eax
	jl	.L5
	movl	$1, %eax
.L4:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	func, .-func
	.globl	calcCol
	.type	calcCol, @function
calcCol:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$112, %rsp
	movq	%rdi, -104(%rbp)
	movl	%esi, -108(%rbp)
	movl	%edx, -112(%rbp)
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$0, -92(%rbp)
	jmp	.L7
.L8:
	movl	-92(%rbp), %eax
	cltq
	movl	$0, -80(%rbp,%rax,4)
	addl	$1, -92(%rbp)
.L7:
	movl	-92(%rbp), %eax
	cmpl	-112(%rbp), %eax
	jl	.L8
	movl	$0, -84(%rbp)
	movl	$0, -92(%rbp)
	jmp	.L9
.L23:
	movl	-92(%rbp), %eax
	cltq
	movl	-80(%rbp,%rax,4), %eax
	testl	%eax, %eax
	jne	.L26
	movl	-92(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -88(%rbp)
	jmp	.L12
.L16:
	movl	-88(%rbp), %eax
	cltq
	movl	-80(%rbp,%rax,4), %eax
	testl	%eax, %eax
	jne	.L27
	movl	-112(%rbp), %edi
	movl	-108(%rbp), %ecx
	movq	-104(%rbp), %rdx
	movl	-88(%rbp), %esi
	movl	-92(%rbp), %eax
	movl	%edi, %r8d
	movl	%eax, %edi
	call	func
	testl	%eax, %eax
	je	.L14
	movl	-92(%rbp), %eax
	cltq
	movl	$1, -80(%rbp,%rax,4)
	movl	-88(%rbp), %eax
	cltq
	movl	$1, -80(%rbp,%rax,4)
	jmp	.L15
.L27:
	nop
.L14:
	addl	$1, -88(%rbp)
.L12:
	movl	-88(%rbp), %eax
	cmpl	-112(%rbp), %eax
	jl	.L16
.L15:
	movl	-92(%rbp), %eax
	cltq
	movl	-80(%rbp,%rax,4), %eax
	testl	%eax, %eax
	jne	.L11
	movl	-112(%rbp), %eax
	andl	$1, %eax
	testl	%eax, %eax
	je	.L17
	cmpl	$0, -84(%rbp)
	je	.L18
.L17:
	movl	$0, %eax
	jmp	.L24
.L18:
	movl	$0, -88(%rbp)
	jmp	.L20
.L22:
	movl	-88(%rbp), %eax
	imull	-112(%rbp), %eax
	movl	%eax, %edx
	movl	-92(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-104(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %edx
	movl	-108(%rbp), %eax
	subl	$1, %eax
	subl	-88(%rbp), %eax
	imull	-112(%rbp), %eax
	movl	%eax, %ecx
	movl	-92(%rbp), %eax
	addl	%ecx, %eax
	movslq	%eax, %rcx
	movq	-104(%rbp), %rax
	addq	%rcx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L21
	movl	$0, %eax
	jmp	.L24
.L21:
	addl	$1, -88(%rbp)
.L20:
	movl	-108(%rbp), %eax
	subl	$1, %eax
	subl	-88(%rbp), %eax
	cmpl	%eax, -88(%rbp)
	jl	.L22
	movl	$1, -84(%rbp)
	movl	-92(%rbp), %eax
	cltq
	movl	$1, -80(%rbp,%rax,4)
	jmp	.L11
.L26:
	nop
.L11:
	addl	$1, -92(%rbp)
.L9:
	movl	-92(%rbp), %eax
	cmpl	-112(%rbp), %eax
	jl	.L23
	movl	$1, %eax
.L24:
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L25
	call	__stack_chk_fail@PLT
.L25:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	calcCol, .-calcCol
	.globl	swapRow
	.type	swapRow, @function
swapRow:
.LFB8:
	.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)
	movq	%rdx, -32(%rbp)
	movl	%ecx, -36(%rbp)
	movl	%r8d, -40(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L29
.L30:
	movl	-20(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-4(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movb	%al, -5(%rbp)
	movl	-24(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-4(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	leaq	(%rdx,%rax), %rcx
	movl	-20(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-4(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	addq	%rax, %rdx
	movzbl	(%rcx), %eax
	movb	%al, (%rdx)
	movl	-24(%rbp), %eax
	imull	-40(%rbp), %eax
	movl	%eax, %edx
	movl	-4(%rbp), %eax
	addl	%edx, %eax
	movslq	%eax, %rdx
	movq	-32(%rbp), %rax
	addq	%rax, %rdx
	movzbl	-5(%rbp), %eax
	movb	%al, (%rdx)
	addl	$1, -4(%rbp)
.L29:
	movl	-4(%rbp), %eax
	cmpl	-40(%rbp), %eax
	jl	.L30
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	swapRow, .-swapRow
	.globl	loopRow
	.type	loopRow, @function
loopRow:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$48, %rsp
	movl	%edi, -20(%rbp)
	movq	%rsi, -32(%rbp)
	movl	%edx, -24(%rbp)
	movl	%ecx, -36(%rbp)
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	subl	$1, %eax
	cmpl	%eax, -20(%rbp)
	jl	.L33
	movl	-36(%rbp), %edx
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	calcCol
	jmp	.L34
.L33:
	movl	-20(%rbp), %eax
	movl	%eax, -8(%rbp)
	jmp	.L35
.L39:
	movl	-8(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -4(%rbp)
	jmp	.L36
.L38:
	movl	-36(%rbp), %edi
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rdx
	movl	-8(%rbp), %esi
	movl	-20(%rbp), %eax
	movl	%edi, %r8d
	movl	%eax, %edi
	call	swapRow
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	leal	-1(%rax), %edi
	movl	-36(%rbp), %esi
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rdx
	movl	-4(%rbp), %eax
	movl	%esi, %r8d
	movl	%eax, %esi
	call	swapRow
	movl	-20(%rbp), %eax
	leal	1(%rax), %edi
	movl	-36(%rbp), %ecx
	movl	-24(%rbp), %edx
	movq	-32(%rbp), %rax
	movq	%rax, %rsi
	call	loopRow
	testl	%eax, %eax
	je	.L37
	movl	$1, %eax
	jmp	.L34
.L37:
	movl	-36(%rbp), %edi
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rdx
	movl	-8(%rbp), %esi
	movl	-20(%rbp), %eax
	movl	%edi, %r8d
	movl	%eax, %edi
	call	swapRow
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	leal	-1(%rax), %edi
	movl	-36(%rbp), %esi
	movl	-24(%rbp), %ecx
	movq	-32(%rbp), %rdx
	movl	-4(%rbp), %eax
	movl	%esi, %r8d
	movl	%eax, %esi
	call	swapRow
	addl	$1, -4(%rbp)
.L36:
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	cmpl	%eax, -4(%rbp)
	jl	.L38
	addl	$1, -8(%rbp)
.L35:
	movl	-24(%rbp), %eax
	subl	-20(%rbp), %eax
	cmpl	%eax, -8(%rbp)
	jl	.L39
	movl	$0, %eax
.L34:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	loopRow, .-loopRow
	.globl	calc
	.type	calc, @function
calc:
.LFB10:
	.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
	movq	%rdi, -8(%rbp)
	movl	%esi, -12(%rbp)
	movl	%edx, -16(%rbp)
	movl	-16(%rbp), %ecx
	movl	-12(%rbp), %edx
	movq	-8(%rbp), %rax
	movq	%rax, %rsi
	movl	$0, %edi
	call	loopRow
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	calc, .-calc
	.section	.rodata
.LC0:
	.string	"%d%d"
.LC1:
	.string	"%s"
.LC2:
	.string	"YES"
.LC3:
	.string	"NO"
	.text
	.globl	run
	.type	run, @function
run:
.LFB11:
	.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
	leaq	-24(%rbp), %rdx
	leaq	-28(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	-28(%rbp), %edx
	movl	-24(%rbp), %eax
	imull	%edx, %eax
	addl	$1, %eax
	cltq
	movq	%rax, %rdi
	call	malloc@PLT
	movq	%rax, -16(%rbp)
	movl	$0, -20(%rbp)
	jmp	.L43
.L44:
	movl	-24(%rbp), %eax
	imull	-20(%rbp), %eax
	movslq	%eax, %rdx
	movq	-16(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -20(%rbp)
.L43:
	movl	-28(%rbp), %eax
	cmpl	%eax, -20(%rbp)
	jl	.L44
	movl	-24(%rbp), %edx
	movl	-28(%rbp), %ecx
	movq	-16(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	calc
	testl	%eax, %eax
	je	.L45
	leaq	.LC2(%rip), %rax
	jmp	.L46
.L45:
	leaq	.LC3(%rip), %rax
.L46:
	movq	%rax, %rdi
	call	puts@PLT
	movq	-16(%rbp), %rax
	movq	%rax, %rdi
	call	free@PLT
	nop
	movq	-8(%rbp), %rax
	subq	%fs:40, %rax
	je	.L47
	call	__stack_chk_fail@PLT
.L47:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	run, .-run
	.globl	main
	.type	main, @function
main:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	call	run
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.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:
