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

#define _CRT_SECURE_NO_WARNINGS
#define TLong long long 

// fact(n)
int fact(int n){
	if(n == 1)	return 1;
	else return (n * fact(n - 1));
}

// combination(n,r)
int combination(int n, int r){
	if(r == 0 || r == n)	return 1;
	else if(r == 1)	return n;
	return (combination(n - 1, r - 1) + combination(n - 1, r));
}

// gcd(a,b)
int gcd(int a,int b){
	return (b == 0) ? a : gcd(b, a % b);
}

// lcm(a.b)
int lcm(int a,int b){
	return (a * b) / gcd(a,b);
}

// qsort(array, size, sizeof(int),comp);
int comp(const int *a,const int *b){
	return (*a - *b);
}

// append(array,*size,addNum)
void append(int *array,int *size,int num){
	realloc(array, sizeof(int) * (*size + 1));
	array[(*size)] = num;
	++(*size);
}

// pop(array,*size) & nongetpop(array,*size)
int pop(int *array,int *size){
	int temp = array[(*size - 1)];
	realloc(array,sizeof(int) * (*size - 1));
	--(*size);
	return temp;
}

void nongetpop(int *array,int *size){
	realloc(array,sizeof(int) * (*size - 1));
	--(*size);
}

int main(int argc, char const *argv[])
{
	char c_str[] = "CODEFESTIVAL2016" ;
	char input[17];
	int cnt = 0;

	scanf("%s",input);
	for (int i = 0; i < 17; i++){
		if (c_str[i] != input[i])	++cnt;
	}
	printf("%d\n", cnt);
	return 0;
}
```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	fact
	.type	fact, @function
fact:
.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
	movl	%edi, -4(%rbp)
	cmpl	$1, -4(%rbp)
	jne	.L2
	movl	$1, %eax
	jmp	.L3
.L2:
	movl	-4(%rbp), %eax
	subl	$1, %eax
	movl	%eax, %edi
	call	fact
	imull	-4(%rbp), %eax
.L3:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	fact, .-fact
	.globl	combination
	.type	combination, @function
combination:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%rbx
	subq	$24, %rsp
	.cfi_offset 3, -24
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	cmpl	$0, -24(%rbp)
	je	.L5
	movl	-24(%rbp), %eax
	cmpl	-20(%rbp), %eax
	jne	.L6
.L5:
	movl	$1, %eax
	jmp	.L7
.L6:
	cmpl	$1, -24(%rbp)
	jne	.L8
	movl	-20(%rbp), %eax
	jmp	.L7
.L8:
	movl	-24(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-20(%rbp), %eax
	subl	$1, %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	combination
	movl	%eax, %ebx
	movl	-20(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-24(%rbp), %eax
	movl	%eax, %esi
	movl	%edx, %edi
	call	combination
	addl	%ebx, %eax
.L7:
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	combination, .-combination
	.globl	gcd
	.type	gcd, @function
gcd:
.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)
	cmpl	$0, -8(%rbp)
	je	.L10
	movl	-4(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	-8(%rbp), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	jmp	.L12
.L10:
	movl	-4(%rbp), %eax
.L12:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	gcd, .-gcd
	.globl	lcm
	.type	lcm, @function
lcm:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%rbx
	subq	$24, %rsp
	.cfi_offset 3, -24
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	movl	-20(%rbp), %eax
	imull	-24(%rbp), %eax
	movl	%eax, %ebx
	movl	-24(%rbp), %edx
	movl	-20(%rbp), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	movl	%eax, %ecx
	movl	%ebx, %eax
	cltd
	idivl	%ecx
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	lcm, .-lcm
	.globl	comp
	.type	comp, @function
comp:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-8(%rbp), %rax
	movl	(%rax), %edx
	movq	-16(%rbp), %rax
	movl	(%rax), %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	comp, .-comp
	.globl	append
	.type	append, @function
append:
.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	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movl	%edx, -20(%rbp)
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	addl	$1, %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-8(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	realloc@PLT
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-8(%rbp), %rax
	addq	%rax, %rdx
	movl	-20(%rbp), %eax
	movl	%eax, (%rdx)
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	leal	1(%rax), %edx
	movq	-16(%rbp), %rax
	movl	%edx, (%rax)
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	append, .-append
	.globl	pop
	.type	pop, @function
pop:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movq	%rsi, -32(%rbp)
	movq	-32(%rbp), %rax
	movl	(%rax), %eax
	cltq
	salq	$2, %rax
	leaq	-4(%rax), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %eax
	movl	%eax, -4(%rbp)
	movq	-32(%rbp), %rax
	movl	(%rax), %eax
	subl	$1, %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	realloc@PLT
	movq	-32(%rbp), %rax
	movl	(%rax), %eax
	leal	-1(%rax), %edx
	movq	-32(%rbp), %rax
	movl	%edx, (%rax)
	movl	-4(%rbp), %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	pop, .-pop
	.globl	nongetpop
	.type	nongetpop, @function
nongetpop:
.LFB13:
	.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)
	movq	%rsi, -16(%rbp)
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	subl	$1, %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-8(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	realloc@PLT
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	leal	-1(%rax), %edx
	movq	-16(%rbp), %rax
	movl	%edx, (%rax)
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	nongetpop, .-nongetpop
	.section	.rodata
.LC0:
	.string	"%s"
.LC1:
	.string	"%d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB14:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$96, %rsp
	movl	%edi, -84(%rbp)
	movq	%rsi, -96(%rbp)
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movabsq	$6076276490365062979, %rax
	movabsq	$3904955344492779081, %rdx
	movq	%rax, -64(%rbp)
	movq	%rdx, -56(%rbp)
	movb	$0, -48(%rbp)
	movl	$0, -72(%rbp)
	leaq	-32(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -68(%rbp)
	jmp	.L22
.L24:
	movl	-68(%rbp), %eax
	cltq
	movzbl	-64(%rbp,%rax), %edx
	movl	-68(%rbp), %eax
	cltq
	movzbl	-32(%rbp,%rax), %eax
	cmpb	%al, %dl
	je	.L23
	addl	$1, -72(%rbp)
.L23:
	addl	$1, -68(%rbp)
.L22:
	cmpl	$16, -68(%rbp)
	jle	.L24
	movl	-72(%rbp), %eax
	movl	%eax, %esi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L26
	call	__stack_chk_fail@PLT
.L26:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.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	fact
	.type	fact, @function
fact:
.LFB51:
	.cfi_startproc
	endbr64
	movl	$1, %eax
	cmpl	$1, %edi
	je	.L1
	.p2align 4,,10
	.p2align 3
.L2:
	movl	%edi, %edx
	subl	$1, %edi
	imull	%edx, %eax
	cmpl	$1, %edi
	jne	.L2
.L1:
	ret
	.cfi_endproc
.LFE51:
	.size	fact, .-fact
	.p2align 4
	.globl	combination
	.type	combination, @function
combination:
.LFB52:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$120, %rsp
	.cfi_def_cfa_offset 176
	testl	%esi, %esi
	je	.L29
	movl	%edi, %r15d
	cmpl	%esi, %edi
	je	.L29
	cmpl	$1, %esi
	je	.L11
	leal	-2(%rsi), %eax
	leal	-8(%rsi), %r9d
	movl	$0, 44(%rsp)
	movl	%eax, 28(%rsp)
	leal	-3(%rsi), %eax
	leal	-6(%rsi), %r11d
	movl	%r9d, %edi
	movl	%eax, 36(%rsp)
	leal	-4(%rsi), %eax
	leal	-7(%rsi), %r10d
	movl	%eax, 40(%rsp)
	leal	-5(%rsi), %eax
	movl	%r10d, %r9d
	movl	%edi, %r10d
	movl	%eax, 20(%rsp)
	movl	%esi, %eax
	subl	$1, %eax
	movl	%esi, 24(%rsp)
	movl	%eax, 72(%rsp)
	movl	%r15d, %eax
	movl	%r11d, %r15d
	sete	83(%rsp)
	movl	%eax, %r11d
.L28:
	movl	%r11d, %eax
	subl	$1, %r11d
	cmpl	%eax, 24(%rsp)
	je	.L30
	cmpb	$0, 83(%rsp)
	jne	.L30
	cmpl	$1, 72(%rsp)
	je	.L31
	movl	28(%rsp), %esi
	movl	$0, 48(%rsp)
	movl	%r11d, 32(%rsp)
	testl	%esi, %esi
	movl	%r11d, 88(%rsp)
	movl	%r10d, %r11d
	movl	%r9d, %r10d
	sete	84(%rsp)
.L27:
	movl	32(%rsp), %eax
	movl	28(%rsp), %esi
	movl	%eax, 76(%rsp)
	subl	$1, %eax
	movl	%eax, 32(%rsp)
	cmpl	%eax, %esi
	je	.L32
	cmpb	$0, 84(%rsp)
	jne	.L32
	cmpl	$1, %esi
	je	.L13
	movl	36(%rsp), %ecx
	movl	%eax, 12(%rsp)
	movl	%r15d, %r14d
	movl	%r11d, %r13d
	movl	$0, 52(%rsp)
	movl	%r10d, %r15d
	testl	%ecx, %ecx
	sete	85(%rsp)
.L26:
	subl	$1, 12(%rsp)
	movl	36(%rsp), %edi
	movl	12(%rsp), %eax
	cmpl	%eax, %edi
	je	.L34
	cmpb	$0, 85(%rsp)
	jne	.L34
	cmpl	$1, %edi
	je	.L14
	movl	40(%rsp), %edx
	movl	$0, 56(%rsp)
	movl	%eax, 16(%rsp)
	movl	%r13d, %eax
	movl	%r14d, %r13d
	testl	%edx, %edx
	movl	%eax, %r14d
	sete	86(%rsp)
.L25:
	subl	$1, 16(%rsp)
	movl	40(%rsp), %eax
	movl	16(%rsp), %r10d
	cmpl	%r10d, %eax
	je	.L36
	cmpb	$0, 86(%rsp)
	jne	.L36
	cmpl	$1, %eax
	je	.L37
	movl	20(%rsp), %eax
	movl	$0, 60(%rsp)
	movl	%r15d, %r8d
	movl	%r14d, %r11d
	movl	%r10d, %r15d
	movl	%r13d, %r14d
	testl	%eax, %eax
	sete	87(%rsp)
.L24:
	movl	20(%rsp), %eax
	subl	$1, %r15d
	cmpl	%r15d, %eax
	je	.L38
	cmpb	$0, 87(%rsp)
	jne	.L38
	cmpl	$1, %eax
	je	.L39
	testl	%r14d, %r14d
	movl	%r15d, 92(%rsp)
	movl	%r15d, %r12d
	movl	%r14d, %r15d
	sete	81(%rsp)
	xorl	%r9d, %r9d
	movl	%r9d, %r14d
	.p2align 4,,10
	.p2align 3
.L23:
	subl	$1, %r12d
	cmpl	%r12d, %r15d
	je	.L40
	cmpb	$0, 81(%rsp)
	jne	.L40
	cmpl	$1, %r15d
	je	.L41
	testl	%r8d, %r8d
	movl	%r12d, 64(%rsp)
	movl	%r12d, %ebx
	sete	80(%rsp)
	xorl	%r13d, %r13d
	movl	%r14d, 68(%rsp)
	movl	%r13d, %r14d
	movl	%r8d, %r13d
	.p2align 4,,10
	.p2align 3
.L22:
	subl	$1, %ebx
	cmpl	%ebx, %r13d
	je	.L42
	cmpb	$0, 80(%rsp)
	jne	.L42
	cmpl	$1, %r13d
	je	.L43
	testl	%r11d, %r11d
	movl	%r15d, %ecx
	movl	%r13d, %edx
	movl	%ebx, %r8d
	sete	82(%rsp)
	xorl	%ebp, %ebp
	movl	%r11d, %r13d
	movl	%r14d, %r9d
	movl	%ebp, %r15d
	movl	%ebx, %ebp
	.p2align 4,,10
	.p2align 3
.L21:
	subl	$1, %ebp
	cmpl	%ebp, %r13d
	je	.L44
	cmpb	$0, 82(%rsp)
	jne	.L44
	cmpl	$1, %r13d
	je	.L45
	movl	24(%rsp), %eax
	movl	%ecx, 96(%rsp)
	xorl	%r12d, %r12d
	movl	%ebp, %ebx
	movl	%edx, 100(%rsp)
	leal	-9(%rax), %r14d
	movl	%r8d, 104(%rsp)
	movl	%r9d, 108(%rsp)
	movl	%r14d, %eax
	movl	%ebp, %r14d
	movl	%r12d, %ebp
	movl	%eax, %r12d
	.p2align 4,,10
	.p2align 3
.L20:
	subl	$1, %ebx
	movl	%r12d, %esi
	movl	%ebx, %edi
	call	combination
	addl	%eax, %ebp
	cmpl	%ebx, %r13d
	jne	.L20
	movl	%ebp, %r12d
	movl	96(%rsp), %ecx
	movl	100(%rsp), %edx
	movl	%r14d, %ebp
	movl	104(%rsp), %r8d
	movl	108(%rsp), %r9d
	addl	$1, %r12d
.L19:
	addl	%r12d, %r15d
	cmpl	%ebp, %edx
	jne	.L21
	movl	%r15d, %ebp
	movl	%r13d, %r11d
	movl	%r8d, %ebx
	movl	%r9d, %r14d
	movl	%edx, %r13d
	movl	%ecx, %r15d
	leal	1(%rbp), %eax
.L18:
	addl	%eax, %r14d
	cmpl	%ebx, %r15d
	jne	.L22
	movl	%r13d, %r8d
	movl	64(%rsp), %r12d
	movl	%r14d, %r13d
	movl	68(%rsp), %r14d
	addl	$1, %r13d
.L17:
	addl	%r13d, %r14d
	cmpl	%r12d, 20(%rsp)
	jne	.L23
	movl	%r14d, %r9d
	movl	%r15d, %r14d
	movl	92(%rsp), %r15d
	leal	1(%r9), %eax
.L16:
	addl	%eax, 60(%rsp)
	cmpl	%r15d, 40(%rsp)
	jne	.L24
	movl	60(%rsp), %eax
	movl	%r14d, %r13d
	movl	%r8d, %r15d
	movl	%r11d, %r14d
	addl	$1, %eax
.L15:
	addl	%eax, 56(%rsp)
	movl	16(%rsp), %edx
	cmpl	%edx, 36(%rsp)
	jne	.L25
	movl	%r14d, %eax
	movl	%r13d, %r14d
	movl	%eax, %r13d
	movl	56(%rsp), %eax
	addl	$1, %eax
.L14:
	addl	%eax, 52(%rsp)
	movl	12(%rsp), %ecx
	cmpl	%ecx, 28(%rsp)
	jne	.L26
	movl	52(%rsp), %eax
	movl	%r15d, %r10d
	movl	%r13d, %r11d
	movl	%r14d, %r15d
	addl	$1, %eax
.L13:
	addl	%eax, 48(%rsp)
	movl	76(%rsp), %esi
	cmpl	%esi, 24(%rsp)
	jne	.L27
.L59:
	movl	48(%rsp), %eax
	movl	%r10d, %r9d
	movl	%r11d, %r10d
	movl	88(%rsp), %r11d
	addl	$1, %eax
.L12:
	addl	%eax, 44(%rsp)
	cmpl	24(%rsp), %r11d
	jne	.L28
	movl	44(%rsp), %r15d
	addl	$1, %r15d
.L11:
	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
	.p2align 4,,10
	.p2align 3
.L44:
	.cfi_restore_state
	movl	$1, %r12d
	jmp	.L19
.L43:
	movl	%ebx, %eax
	jmp	.L18
.L40:
	movl	$1, %r13d
	jmp	.L17
.L41:
	movl	%r12d, %r13d
	jmp	.L17
.L39:
	movl	%r15d, %eax
	jmp	.L16
.L38:
	movl	$1, %eax
	jmp	.L16
.L42:
	movl	$1, %eax
	jmp	.L18
	.p2align 4,,10
	.p2align 3
.L45:
	movl	%ebp, %r12d
	jmp	.L19
.L36:
	movl	$1, %eax
	jmp	.L15
.L37:
	movl	%r10d, %eax
	jmp	.L15
.L32:
	movl	$1, %eax
	movl	76(%rsp), %esi
	addl	%eax, 48(%rsp)
	cmpl	%esi, 24(%rsp)
	jne	.L27
	jmp	.L59
	.p2align 4,,10
	.p2align 3
.L34:
	movl	$1, %eax
	jmp	.L14
.L31:
	movl	%r11d, %eax
	jmp	.L12
.L30:
	movl	$1, %eax
	jmp	.L12
.L29:
	movl	$1, %r15d
	jmp	.L11
	.cfi_endproc
.LFE52:
	.size	combination, .-combination
	.p2align 4
	.globl	gcd
	.type	gcd, @function
gcd:
.LFB53:
	.cfi_startproc
	endbr64
	movl	%edi, %eax
	movl	%esi, %r8d
	testl	%esi, %esi
	jne	.L62
	jmp	.L65
	.p2align 4,,10
	.p2align 3
.L64:
	movl	%edx, %r8d
.L62:
	cltd
	idivl	%r8d
	movl	%r8d, %eax
	testl	%edx, %edx
	jne	.L64
	movl	%r8d, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L65:
	movl	%edi, %r8d
	movl	%r8d, %eax
	ret
	.cfi_endproc
.LFE53:
	.size	gcd, .-gcd
	.p2align 4
	.globl	lcm
	.type	lcm, @function
lcm:
.LFB54:
	.cfi_startproc
	endbr64
	movl	%edi, %ecx
	movl	%edi, %eax
	imull	%esi, %ecx
	testl	%esi, %esi
	jne	.L68
	jmp	.L71
	.p2align 4,,10
	.p2align 3
.L70:
	movl	%edx, %esi
.L68:
	cltd
	idivl	%esi
	movl	%esi, %eax
	testl	%edx, %edx
	jne	.L70
	movl	%ecx, %eax
	cltd
	idivl	%esi
	ret
	.p2align 4,,10
	.p2align 3
.L71:
	xorl	%eax, %eax
	ret
	.cfi_endproc
.LFE54:
	.size	lcm, .-lcm
	.p2align 4
	.globl	comp
	.type	comp, @function
comp:
.LFB55:
	.cfi_startproc
	endbr64
	movl	(%rdi), %eax
	subl	(%rsi), %eax
	ret
	.cfi_endproc
.LFE55:
	.size	comp, .-comp
	.p2align 4
	.globl	append
	.type	append, @function
append:
.LFB56:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movl	%edx, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movl	(%rsi), %eax
	movq	%rsi, %rbx
	leal	1(%rax), %esi
	movslq	%esi, %rsi
	salq	$2, %rsi
	call	realloc@PLT
	movslq	(%rbx), %rax
	movl	%r12d, 0(%rbp,%rax,4)
	addl	$1, (%rbx)
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE56:
	.size	append, .-append
	.p2align 4
	.globl	pop
	.type	pop, @function
pop:
.LFB57:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rsi, %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 32
	movslq	(%rsi), %rdx
	leal	-1(%rdx), %esi
	movl	-4(%rdi,%rdx,4), %r12d
	movslq	%esi, %rsi
	salq	$2, %rsi
	call	realloc@PLT
	subl	$1, (%rbx)
	addq	$8, %rsp
	.cfi_def_cfa_offset 24
	movl	%r12d, %eax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE57:
	.size	pop, .-pop
	.p2align 4
	.globl	nongetpop
	.type	nongetpop, @function
nongetpop:
.LFB58:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movl	(%rsi), %eax
	movq	%rsi, %rbx
	leal	-1(%rax), %esi
	movslq	%esi, %rsi
	salq	$2, %rsi
	call	realloc@PLT
	subl	$1, (%rbx)
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE58:
	.size	nongetpop, .-nongetpop
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%s"
.LC3:
	.string	"%d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB59:
	.cfi_startproc
	endbr64
	subq	$40, %rsp
	.cfi_def_cfa_offset 48
	leaq	.LC0(%rip), %rdi
	movq	%fs:40, %rax
	movq	%rax, 24(%rsp)
	xorl	%eax, %eax
	movq	%rsp, %rsi
	call	__isoc99_scanf@PLT
	movdqa	(%rsp), %xmm1
	pxor	%xmm2, %xmm2
	cmpb	$1, 16(%rsp)
	leaq	.LC3(%rip), %rsi
	movl	$1, %edi
	pcmpeqb	.LC1(%rip), %xmm1
	pandn	.LC2(%rip), %xmm1
	pcmpgtb	%xmm1, %xmm2
	movdqa	%xmm1, %xmm0
	punpcklbw	%xmm2, %xmm0
	punpckhbw	%xmm2, %xmm1
	pxor	%xmm2, %xmm2
	movdqa	%xmm2, %xmm3
	pcmpgtw	%xmm1, %xmm2
	movdqa	%xmm0, %xmm4
	pcmpgtw	%xmm0, %xmm3
	punpcklwd	%xmm3, %xmm4
	punpckhwd	%xmm3, %xmm0
	movdqa	%xmm1, %xmm3
	paddd	%xmm4, %xmm0
	punpcklwd	%xmm2, %xmm3
	punpckhwd	%xmm2, %xmm1
	paddd	%xmm3, %xmm0
	paddd	%xmm1, %xmm0
	movdqa	%xmm0, %xmm1
	psrldq	$8, %xmm1
	paddd	%xmm1, %xmm0
	movdqa	%xmm0, %xmm1
	psrldq	$4, %xmm1
	paddd	%xmm1, %xmm0
	movd	%xmm0, %edx
	sbbl	$-1, %edx
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L84
	xorl	%eax, %eax
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L84:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE59:
	.size	main, .-main
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC1:
	.byte	67
	.byte	79
	.byte	68
	.byte	69
	.byte	70
	.byte	69
	.byte	83
	.byte	84
	.byte	73
	.byte	86
	.byte	65
	.byte	76
	.byte	50
	.byte	48
	.byte	49
	.byte	54
	.align 16
.LC2:
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:

rule
	.file	"temp.c"
	.text
	.p2align 4
	.globl	fact
	.type	fact, @function
fact:
.LFB51:
	.cfi_startproc
	endbr64
	movl	$1, %eax
	cmpl	$1, %edi
	je	.L1
	.p2align 4,,10
	.p2align 3
.L2:
	movl	%edi, %edx
	subl	$1, %edi
	imull	%edx, %eax
	cmpl	$1, %edi
	jne	.L2
.L1:
	ret
	.cfi_endproc
.LFE51:
	.size	fact, .-fact
	.p2align 4
	.globl	combination
	.type	combination, @function
combination:
.LFB52:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$120, %rsp
	.cfi_def_cfa_offset 176
	testl	%esi, %esi
	je	.L29
	movl	%edi, %r15d
	cmpl	%esi, %edi
	je	.L29
	cmpl	$1, %esi
	je	.L11
	leal	-2(%rsi), %eax
	leal	-8(%rsi), %r9d
	movl	$0, 44(%rsp)
	movl	%eax, 28(%rsp)
	leal	-3(%rsi), %eax
	leal	-6(%rsi), %r11d
	movl	%r9d, %edi
	movl	%eax, 36(%rsp)
	leal	-4(%rsi), %eax
	leal	-7(%rsi), %r10d
	movl	%eax, 40(%rsp)
	leal	-5(%rsi), %eax
	movl	%r10d, %r9d
	movl	%edi, %r10d
	movl	%eax, 20(%rsp)
	movl	%esi, %eax
	subl	$1, %eax
	movl	%esi, 24(%rsp)
	movl	%eax, 72(%rsp)
	movl	%r15d, %eax
	movl	%r11d, %r15d
	sete	83(%rsp)
	movl	%eax, %r11d
.L28:
	movl	%r11d, %eax
	subl	$1, %r11d
	cmpl	%eax, 24(%rsp)
	je	.L30
	cmpb	$0, 83(%rsp)
	jne	.L30
	cmpl	$1, 72(%rsp)
	je	.L31
	movl	28(%rsp), %esi
	movl	$0, 48(%rsp)
	movl	%r11d, 32(%rsp)
	testl	%esi, %esi
	movl	%r11d, 88(%rsp)
	movl	%r10d, %r11d
	movl	%r9d, %r10d
	sete	84(%rsp)
.L27:
	movl	32(%rsp), %eax
	movl	28(%rsp), %esi
	movl	%eax, 76(%rsp)
	subl	$1, %eax
	movl	%eax, 32(%rsp)
	cmpl	%eax, %esi
	je	.L32
	cmpb	$0, 84(%rsp)
	jne	.L32
	cmpl	$1, %esi
	je	.L13
	movl	36(%rsp), %ecx
	movl	%eax, 12(%rsp)
	movl	%r15d, %r14d
	movl	%r11d, %r13d
	movl	$0, 52(%rsp)
	movl	%r10d, %r15d
	testl	%ecx, %ecx
	sete	85(%rsp)
.L26:
	subl	$1, 12(%rsp)
	movl	36(%rsp), %edi
	movl	12(%rsp), %eax
	cmpl	%eax, %edi
	je	.L34
	cmpb	$0, 85(%rsp)
	jne	.L34
	cmpl	$1, %edi
	je	.L14
	movl	40(%rsp), %edx
	movl	$0, 56(%rsp)
	movl	%eax, 16(%rsp)
	movl	%r13d, %eax
	movl	%r14d, %r13d
	testl	%edx, %edx
	movl	%eax, %r14d
	sete	86(%rsp)
.L25:
	subl	$1, 16(%rsp)
	movl	40(%rsp), %eax
	movl	16(%rsp), %r10d
	cmpl	%r10d, %eax
	je	.L36
	cmpb	$0, 86(%rsp)
	jne	.L36
	cmpl	$1, %eax
	je	.L37
	movl	20(%rsp), %eax
	movl	$0, 60(%rsp)
	movl	%r15d, %r8d
	movl	%r14d, %r11d
	movl	%r10d, %r15d
	movl	%r13d, %r14d
	testl	%eax, %eax
	sete	87(%rsp)
.L24:
	movl	20(%rsp), %eax
	subl	$1, %r15d
	cmpl	%r15d, %eax
	je	.L38
	cmpb	$0, 87(%rsp)
	jne	.L38
	cmpl	$1, %eax
	je	.L39
	testl	%r14d, %r14d
	movl	%r15d, 92(%rsp)
	movl	%r15d, %r12d
	movl	%r14d, %r15d
	sete	81(%rsp)
	xorl	%r9d, %r9d
	movl	%r9d, %r14d
	.p2align 4,,10
	.p2align 3
.L23:
	subl	$1, %r12d
	cmpl	%r12d, %r15d
	je	.L40
	cmpb	$0, 81(%rsp)
	jne	.L40
	cmpl	$1, %r15d
	je	.L41
	testl	%r8d, %r8d
	movl	%r12d, 64(%rsp)
	movl	%r12d, %ebx
	sete	80(%rsp)
	xorl	%r13d, %r13d
	movl	%r14d, 68(%rsp)
	movl	%r13d, %r14d
	movl	%r8d, %r13d
	.p2align 4,,10
	.p2align 3
.L22:
	subl	$1, %ebx
	cmpl	%ebx, %r13d
	je	.L42
	cmpb	$0, 80(%rsp)
	jne	.L42
	cmpl	$1, %r13d
	je	.L43
	testl	%r11d, %r11d
	movl	%r15d, %ecx
	movl	%r13d, %edx
	movl	%ebx, %r8d
	sete	82(%rsp)
	xorl	%ebp, %ebp
	movl	%r11d, %r13d
	movl	%r14d, %r9d
	movl	%ebp, %r15d
	movl	%ebx, %ebp
	.p2align 4,,10
	.p2align 3
.L21:
	subl	$1, %ebp
	cmpl	%ebp, %r13d
	je	.L44
	cmpb	$0, 82(%rsp)
	jne	.L44
	cmpl	$1, %r13d
	je	.L45
	movl	24(%rsp), %eax
	movl	%ecx, 96(%rsp)
	xorl	%r12d, %r12d
	movl	%ebp, %ebx
	movl	%edx, 100(%rsp)
	leal	-9(%rax), %r14d
	movl	%r8d, 104(%rsp)
	movl	%r9d, 108(%rsp)
	movl	%r14d, %eax
	movl	%ebp, %r14d
	movl	%r12d, %ebp
	movl	%eax, %r12d
	.p2align 4,,10
	.p2align 3
.L20:
	subl	$1, %ebx
	movl	%r12d, %esi
	movl	%ebx, %edi
	call	combination
	addl	%eax, %ebp
	cmpl	%ebx, %r13d
	jne	.L20
	movl	%ebp, %r12d
	movl	96(%rsp), %ecx
	movl	100(%rsp), %edx
	movl	%r14d, %ebp
	movl	104(%rsp), %r8d
	movl	108(%rsp), %r9d
	addl	$1, %r12d
.L19:
	addl	%r12d, %r15d
	cmpl	%ebp, %edx
	jne	.L21
	movl	%r15d, %ebp
	movl	%r13d, %r11d
	movl	%r8d, %ebx
	movl	%r9d, %r14d
	movl	%edx, %r13d
	movl	%ecx, %r15d
	leal	1(%rbp), %eax
.L18:
	addl	%eax, %r14d
	cmpl	%ebx, %r15d
	jne	.L22
	movl	%r13d, %r8d
	movl	64(%rsp), %r12d
	movl	%r14d, %r13d
	movl	68(%rsp), %r14d
	addl	$1, %r13d
.L17:
	addl	%r13d, %r14d
	cmpl	%r12d, 20(%rsp)
	jne	.L23
	movl	%r14d, %r9d
	movl	%r15d, %r14d
	movl	92(%rsp), %r15d
	leal	1(%r9), %eax
.L16:
	addl	%eax, 60(%rsp)
	cmpl	%r15d, 40(%rsp)
	jne	.L24
	movl	60(%rsp), %eax
	movl	%r14d, %r13d
	movl	%r8d, %r15d
	movl	%r11d, %r14d
	addl	$1, %eax
.L15:
	addl	%eax, 56(%rsp)
	movl	16(%rsp), %edx
	cmpl	%edx, 36(%rsp)
	jne	.L25
	movl	%r14d, %eax
	movl	%r13d, %r14d
	movl	%eax, %r13d
	movl	56(%rsp), %eax
	addl	$1, %eax
.L14:
	addl	%eax, 52(%rsp)
	movl	12(%rsp), %ecx
	cmpl	%ecx, 28(%rsp)
	jne	.L26
	movl	52(%rsp), %eax
	movl	%r15d, %r10d
	movl	%r13d, %r11d
	movl	%r14d, %r15d
	addl	$1, %eax
.L13:
	addl	%eax, 48(%rsp)
	movl	76(%rsp), %esi
	cmpl	%esi, 24(%rsp)
	jne	.L27
.L59:
	movl	48(%rsp), %eax
	movl	%r10d, %r9d
	movl	%r11d, %r10d
	movl	88(%rsp), %r11d
	addl	$1, %eax
.L12:
	addl	%eax, 44(%rsp)
	cmpl	24(%rsp), %r11d
	jne	.L28
	movl	44(%rsp), %r15d
	addl	$1, %r15d
.L11:
	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
	.p2align 4,,10
	.p2align 3
.L44:
	.cfi_restore_state
	movl	$1, %r12d
	jmp	.L19
.L43:
	movl	%ebx, %eax
	jmp	.L18
.L40:
	movl	$1, %r13d
	jmp	.L17
.L41:
	movl	%r12d, %r13d
	jmp	.L17
.L39:
	movl	%r15d, %eax
	jmp	.L16
.L38:
	movl	$1, %eax
	jmp	.L16
.L42:
	movl	$1, %eax
	jmp	.L18
	.p2align 4,,10
	.p2align 3
.L45:
	movl	%ebp, %r12d
	jmp	.L19
.L36:
	movl	$1, %eax
	jmp	.L15
.L37:
	movl	%r10d, %eax
	jmp	.L15
.L32:
	movl	$1, %eax
	movl	76(%rsp), %esi
	addl	%eax, 48(%rsp)
	cmpl	%esi, 24(%rsp)
	jne	.L27
	jmp	.L59
	.p2align 4,,10
	.p2align 3
.L34:
	movl	$1, %eax
	jmp	.L14
.L31:
	movl	%r11d, %eax
	jmp	.L12
.L30:
	movl	$1, %eax
	jmp	.L12
.L29:
	movl	$1, %r15d
	jmp	.L11
	.cfi_endproc
.LFE52:
	.size	combination, .-combination
	.p2align 4
	.globl	gcd
	.type	gcd, @function
gcd:
.LFB53:
	.cfi_startproc
	endbr64
	movl	%edi, %eax
	movl	%esi, %r8d
	testl	%esi, %esi
	jne	.L62
	jmp	.L65
	.p2align 4,,10
	.p2align 3
.L64:
	movl	%edx, %r8d
.L62:
	cltd
	idivl	%r8d
	movl	%r8d, %eax
	testl	%edx, %edx
	jne	.L64
	movl	%r8d, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L65:
	movl	%edi, %r8d
	movl	%r8d, %eax
	ret
	.cfi_endproc
.LFE53:
	.size	gcd, .-gcd
	.p2align 4
	.globl	lcm
	.type	lcm, @function
lcm:
.LFB54:
	.cfi_startproc
	endbr64
	movl	%edi, %ecx
	movl	%edi, %eax
	imull	%esi, %ecx
	testl	%esi, %esi
	jne	.L68
	jmp	.L71
	.p2align 4,,10
	.p2align 3
.L70:
	movl	%edx, %esi
.L68:
	cltd
	idivl	%esi
	movl	%esi, %eax
	testl	%edx, %edx
	jne	.L70
	movl	%ecx, %eax
	cltd
	idivl	%esi
	ret
	.p2align 4,,10
	.p2align 3
.L71:
	xorl	%eax, %eax
	ret
	.cfi_endproc
.LFE54:
	.size	lcm, .-lcm
	.p2align 4
	.globl	comp
	.type	comp, @function
comp:
.LFB55:
	.cfi_startproc
	endbr64
	movl	(%rdi), %eax
	subl	(%rsi), %eax
	ret
	.cfi_endproc
.LFE55:
	.size	comp, .-comp
	.p2align 4
	.globl	append
	.type	append, @function
append:
.LFB56:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movl	%edx, %r12d
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movq	%rdi, %rbp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movl	(%rsi), %eax
	movq	%rsi, %rbx
	leal	1(%rax), %esi
	movslq	%esi, %rsi
	salq	$2, %rsi
	call	realloc@PLT
	movslq	(%rbx), %rax
	movl	%r12d, 0(%rbp,%rax,4)
	addl	$1, (%rbx)
	popq	%rbx
	.cfi_def_cfa_offset 24
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE56:
	.size	append, .-append
	.p2align 4
	.globl	pop
	.type	pop, @function
pop:
.LFB57:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	pushq	%rbx
	.cfi_def_cfa_offset 24
	.cfi_offset 3, -24
	movq	%rsi, %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 32
	movslq	(%rsi), %rdx
	leal	-1(%rdx), %esi
	movl	-4(%rdi,%rdx,4), %r12d
	movslq	%esi, %rsi
	salq	$2, %rsi
	call	realloc@PLT
	subl	$1, (%rbx)
	addq	$8, %rsp
	.cfi_def_cfa_offset 24
	movl	%r12d, %eax
	popq	%rbx
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE57:
	.size	pop, .-pop
	.p2align 4
	.globl	nongetpop
	.type	nongetpop, @function
nongetpop:
.LFB58:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movl	(%rsi), %eax
	movq	%rsi, %rbx
	leal	-1(%rax), %esi
	movslq	%esi, %rsi
	salq	$2, %rsi
	call	realloc@PLT
	subl	$1, (%rbx)
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE58:
	.size	nongetpop, .-nongetpop
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%s"
.LC3:
	.string	"%d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB59:
	.cfi_startproc
	endbr64
	subq	$40, %rsp
	.cfi_def_cfa_offset 48
	leaq	.LC0(%rip), %rdi
	movq	%fs:40, %rax
	movq	%rax, 24(%rsp)
	xorl	%eax, %eax
	movq	%rsp, %rsi
	call	__isoc99_scanf@PLT
	movdqa	(%rsp), %xmm1
	pxor	%xmm2, %xmm2
	cmpb	$1, 16(%rsp)
	leaq	.LC3(%rip), %rsi
	movl	$1, %edi
	pcmpeqb	.LC1(%rip), %xmm1
	pandn	.LC2(%rip), %xmm1
	pcmpgtb	%xmm1, %xmm2
	movdqa	%xmm1, %xmm0
	punpcklbw	%xmm2, %xmm0
	punpckhbw	%xmm2, %xmm1
	pxor	%xmm2, %xmm2
	movdqa	%xmm2, %xmm3
	pcmpgtw	%xmm1, %xmm2
	movdqa	%xmm0, %xmm4
	pcmpgtw	%xmm0, %xmm3
	punpcklwd	%xmm3, %xmm4
	punpckhwd	%xmm3, %xmm0
	movdqa	%xmm1, %xmm3
	paddd	%xmm4, %xmm0
	punpcklwd	%xmm2, %xmm3
	punpckhwd	%xmm2, %xmm1
	paddd	%xmm3, %xmm0
	paddd	%xmm1, %xmm0
	movdqa	%xmm0, %xmm1
	psrldq	$8, %xmm1
	paddd	%xmm1, %xmm0
	movdqa	%xmm0, %xmm1
	psrldq	$4, %xmm1
	paddd	%xmm1, %xmm0
	movd	%xmm0, %edx
	sbbl	$-1, %edx
	xorl	%eax, %eax
	call	__printf_chk@PLT
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L84
	xorl	%eax, %eax
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
.L84:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE59:
	.size	main, .-main
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC1:
	.byte	67
	.byte	79
	.byte	68
	.byte	69
	.byte	70
	.byte	69
	.byte	83
	.byte	84
	.byte	73
	.byte	86
	.byte	65
	.byte	76
	.byte	50
	.byte	48
	.byte	49
	.byte	54
	.align 16
.LC2:
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.byte	1
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:

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

#define _CRT_SECURE_NO_WARNINGS
#define TLong long long 

// fact(n)
int fact(int n){
	if(n == 1)	return 1;
	else return (n * fact(n - 1));
}

// combination(n,r)
int combination(int n, int r){
	if(r == 0 || r == n)	return 1;
	else if(r == 1)	return n;
	return (combination(n - 1, r - 1) + combination(n - 1, r));
}

// gcd(a,b)
int gcd(int a,int b){
	return (b == 0) ? a : gcd(b, a % b);
}

// lcm(a.b)
int lcm(int a,int b){
	return (a * b) / gcd(a,b);
}

// qsort(array, size, sizeof(int),comp);
int comp(const int *a,const int *b){
	return (*a - *b);
}

// append(array,*size,addNum)
void append(int *array,int *size,int num){
	realloc(array, sizeof(int) * (*size + 1));
	array[(*size)] = num;
	++(*size);
}

// pop(array,*size) & nongetpop(array,*size)
int pop(int *array,int *size){
	int temp = array[(*size - 1)];
	realloc(array,sizeof(int) * (*size - 1));
	--(*size);
	return temp;
}

void nongetpop(int *array,int *size){
	realloc(array,sizeof(int) * (*size - 1));
	--(*size);
}

int main(int argc, char const *argv[])
{
	char c_str[] = "CODEFESTIVAL2016" ;
	char input[17];
	int cnt = 0;

	scanf("%s",input);
	for (int i = 0; i < 17; i++){
		if (c_str[i] != input[i])	++cnt;
	}
	printf("%d\n", cnt);
	return 0;
}

C0DEFESTIVAL2O61
 EDOC6102LAVITSEF
 C0DEFERTIVAL2O61
 C0DEGERTIVAL2O61
 CTDEGER0IVAL2O61
 CT/EGERDIVAL2O61
 CT0EGERDIVAK2O61
 1DO2LAVI6REGE0TC
 VT0EGER6ICAL2OD0
 VV1EFFR7ICAK2OD0

4
 16
 5
 6
 7
 8
 9
 15
 10
 11

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

#define _CRT_SECURE_NO_WARNINGS
#define TLong long long 

// fact(n)
int fact(int n){
	if(n == 1)	return 1;
	else return (n * fact(n - 1));
}

// combination(n,r)
int combination(int n, int r){
	if(r == 0 || r == n)	return 1;
	else if(r == 1)	return n;
	return (combination(n - 1, r - 1) + combination(n - 1, r));
}

// gcd(a,b)
int gcd(int a,int b){
	return (b == 0) ? a : gcd(b, a % b);
}

// lcm(a.b)
int lcm(int a,int b){
	return (a * b) / gcd(a,b);
}

// qsort(array, size, sizeof(int),comp);
int comp(const int *a,const int *b){
	return (*a - *b);
}

// append(array,*size,addNum)
void append(int *array,int *size,int num){
	realloc(array, sizeof(int) * (*size + 1));
	array[(*size)] = num;
	++(*size);
}

// pop(array,*size) & nongetpop(array,*size)
int pop(int *array,int *size){
	int temp = array[(*size - 1)];
	realloc(array,sizeof(int) * (*size - 1));
	--(*size);
	return temp;
}

void nongetpop(int *array,int *size){
	realloc(array,sizeof(int) * (*size - 1));
	--(*size);
}

int main(int argc, char const *argv[])
{
	char c_str[] = "CODEFESTIVAL2016" ;
	char input[17];
	int cnt = 0;

	scanf("%s",input);
	for (int i = 0; i < 17; i++){
		if (c_str[i] != input[i])	++cnt;
	}
	printf("%d\n", cnt);
	return 0;
}
```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	fact
	.type	fact, @function
fact:
.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
	movl	%edi, -4(%rbp)
	cmpl	$1, -4(%rbp)
	jne	.L2
	movl	$1, %eax
	jmp	.L3
.L2:
	movl	-4(%rbp), %eax
	subl	$1, %eax
	movl	%eax, %edi
	call	fact
	imull	-4(%rbp), %eax
.L3:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	fact, .-fact
	.globl	combination
	.type	combination, @function
combination:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%rbx
	subq	$24, %rsp
	.cfi_offset 3, -24
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	cmpl	$0, -24(%rbp)
	je	.L5
	movl	-24(%rbp), %eax
	cmpl	-20(%rbp), %eax
	jne	.L6
.L5:
	movl	$1, %eax
	jmp	.L7
.L6:
	cmpl	$1, -24(%rbp)
	jne	.L8
	movl	-20(%rbp), %eax
	jmp	.L7
.L8:
	movl	-24(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-20(%rbp), %eax
	subl	$1, %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	combination
	movl	%eax, %ebx
	movl	-20(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-24(%rbp), %eax
	movl	%eax, %esi
	movl	%edx, %edi
	call	combination
	addl	%ebx, %eax
.L7:
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	combination, .-combination
	.globl	gcd
	.type	gcd, @function
gcd:
.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)
	cmpl	$0, -8(%rbp)
	je	.L10
	movl	-4(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	-8(%rbp), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	jmp	.L12
.L10:
	movl	-4(%rbp), %eax
.L12:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	gcd, .-gcd
	.globl	lcm
	.type	lcm, @function
lcm:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%rbx
	subq	$24, %rsp
	.cfi_offset 3, -24
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	movl	-20(%rbp), %eax
	imull	-24(%rbp), %eax
	movl	%eax, %ebx
	movl	-24(%rbp), %edx
	movl	-20(%rbp), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	movl	%eax, %ecx
	movl	%ebx, %eax
	cltd
	idivl	%ecx
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	lcm, .-lcm
	.globl	comp
	.type	comp, @function
comp:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-8(%rbp), %rax
	movl	(%rax), %edx
	movq	-16(%rbp), %rax
	movl	(%rax), %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	comp, .-comp
	.globl	append
	.type	append, @function
append:
.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	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movl	%edx, -20(%rbp)
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	addl	$1, %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-8(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	realloc@PLT
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-8(%rbp), %rax
	addq	%rax, %rdx
	movl	-20(%rbp), %eax
	movl	%eax, (%rdx)
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	leal	1(%rax), %edx
	movq	-16(%rbp), %rax
	movl	%edx, (%rax)
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	append, .-append
	.globl	pop
	.type	pop, @function
pop:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movq	%rsi, -32(%rbp)
	movq	-32(%rbp), %rax
	movl	(%rax), %eax
	cltq
	salq	$2, %rax
	leaq	-4(%rax), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %eax
	movl	%eax, -4(%rbp)
	movq	-32(%rbp), %rax
	movl	(%rax), %eax
	subl	$1, %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	realloc@PLT
	movq	-32(%rbp), %rax
	movl	(%rax), %eax
	leal	-1(%rax), %edx
	movq	-32(%rbp), %rax
	movl	%edx, (%rax)
	movl	-4(%rbp), %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	pop, .-pop
	.globl	nongetpop
	.type	nongetpop, @function
nongetpop:
.LFB13:
	.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)
	movq	%rsi, -16(%rbp)
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	subl	$1, %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-8(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	realloc@PLT
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	leal	-1(%rax), %edx
	movq	-16(%rbp), %rax
	movl	%edx, (%rax)
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	nongetpop, .-nongetpop
	.section	.rodata
.LC0:
	.string	"%s"
.LC1:
	.string	"%d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB14:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$96, %rsp
	movl	%edi, -84(%rbp)
	movq	%rsi, -96(%rbp)
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movabsq	$6076276490365062979, %rax
	movabsq	$3904955344492779081, %rdx
	movq	%rax, -64(%rbp)
	movq	%rdx, -56(%rbp)
	movb	$0, -48(%rbp)
	movl	$0, -72(%rbp)
	leaq	-32(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -68(%rbp)
	jmp	.L22
.L24:
	movl	-68(%rbp), %eax
	cltq
	movzbl	-64(%rbp,%rax), %edx
	movl	-68(%rbp), %eax
	cltq
	movzbl	-32(%rbp,%rax), %eax
	cmpb	%al, %dl
	je	.L23
	addl	$1, -72(%rbp)
.L23:
	addl	$1, -68(%rbp)
.L22:
	cmpl	$16, -68(%rbp)
	jle	.L24
	movl	-72(%rbp), %eax
	movl	%eax, %esi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L26
	call	__stack_chk_fail@PLT
.L26:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.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	fact
	.type	fact, @function
fact:
.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
	movl	%edi, -4(%rbp)
	cmpl	$1, -4(%rbp)
	jne	.L2
	movl	$1, %eax
	jmp	.L3
.L2:
	movl	-4(%rbp), %eax
	subl	$1, %eax
	movl	%eax, %edi
	call	fact
	imull	-4(%rbp), %eax
.L3:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	fact, .-fact
	.globl	combination
	.type	combination, @function
combination:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%rbx
	subq	$24, %rsp
	.cfi_offset 3, -24
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	cmpl	$0, -24(%rbp)
	je	.L5
	movl	-24(%rbp), %eax
	cmpl	-20(%rbp), %eax
	jne	.L6
.L5:
	movl	$1, %eax
	jmp	.L7
.L6:
	cmpl	$1, -24(%rbp)
	jne	.L8
	movl	-20(%rbp), %eax
	jmp	.L7
.L8:
	movl	-24(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-20(%rbp), %eax
	subl	$1, %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	combination
	movl	%eax, %ebx
	movl	-20(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-24(%rbp), %eax
	movl	%eax, %esi
	movl	%edx, %edi
	call	combination
	addl	%ebx, %eax
.L7:
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	combination, .-combination
	.globl	gcd
	.type	gcd, @function
gcd:
.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)
	cmpl	$0, -8(%rbp)
	je	.L10
	movl	-4(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	-8(%rbp), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	jmp	.L12
.L10:
	movl	-4(%rbp), %eax
.L12:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	gcd, .-gcd
	.globl	lcm
	.type	lcm, @function
lcm:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%rbx
	subq	$24, %rsp
	.cfi_offset 3, -24
	movl	%edi, -20(%rbp)
	movl	%esi, -24(%rbp)
	movl	-20(%rbp), %eax
	imull	-24(%rbp), %eax
	movl	%eax, %ebx
	movl	-24(%rbp), %edx
	movl	-20(%rbp), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	movl	%eax, %ecx
	movl	%ebx, %eax
	cltd
	idivl	%ecx
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	lcm, .-lcm
	.globl	comp
	.type	comp, @function
comp:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movq	-8(%rbp), %rax
	movl	(%rax), %edx
	movq	-16(%rbp), %rax
	movl	(%rax), %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	comp, .-comp
	.globl	append
	.type	append, @function
append:
.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	%rdi, -8(%rbp)
	movq	%rsi, -16(%rbp)
	movl	%edx, -20(%rbp)
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	addl	$1, %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-8(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	realloc@PLT
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-8(%rbp), %rax
	addq	%rax, %rdx
	movl	-20(%rbp), %eax
	movl	%eax, (%rdx)
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	leal	1(%rax), %edx
	movq	-16(%rbp), %rax
	movl	%edx, (%rax)
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	append, .-append
	.globl	pop
	.type	pop, @function
pop:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movq	%rsi, -32(%rbp)
	movq	-32(%rbp), %rax
	movl	(%rax), %eax
	cltq
	salq	$2, %rax
	leaq	-4(%rax), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %eax
	movl	%eax, -4(%rbp)
	movq	-32(%rbp), %rax
	movl	(%rax), %eax
	subl	$1, %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	realloc@PLT
	movq	-32(%rbp), %rax
	movl	(%rax), %eax
	leal	-1(%rax), %edx
	movq	-32(%rbp), %rax
	movl	%edx, (%rax)
	movl	-4(%rbp), %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	pop, .-pop
	.globl	nongetpop
	.type	nongetpop, @function
nongetpop:
.LFB13:
	.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)
	movq	%rsi, -16(%rbp)
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	subl	$1, %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-8(%rbp), %rax
	movq	%rdx, %rsi
	movq	%rax, %rdi
	call	realloc@PLT
	movq	-16(%rbp), %rax
	movl	(%rax), %eax
	leal	-1(%rax), %edx
	movq	-16(%rbp), %rax
	movl	%edx, (%rax)
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	nongetpop, .-nongetpop
	.section	.rodata
.LC0:
	.string	"%s"
.LC1:
	.string	"%d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB14:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$96, %rsp
	movl	%edi, -84(%rbp)
	movq	%rsi, -96(%rbp)
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movabsq	$6076276490365062979, %rax
	movabsq	$3904955344492779081, %rdx
	movq	%rax, -64(%rbp)
	movq	%rdx, -56(%rbp)
	movb	$0, -48(%rbp)
	movl	$0, -72(%rbp)
	leaq	-32(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -68(%rbp)
	jmp	.L22
.L24:
	movl	-68(%rbp), %eax
	cltq
	movzbl	-64(%rbp,%rax), %edx
	movl	-68(%rbp), %eax
	cltq
	movzbl	-32(%rbp,%rax), %eax
	cmpb	%al, %dl
	je	.L23
	addl	$1, -72(%rbp)
.L23:
	addl	$1, -68(%rbp)
.L22:
	cmpl	$16, -68(%rbp)
	jle	.L24
	movl	-72(%rbp), %eax
	movl	%eax, %esi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L26
	call	__stack_chk_fail@PLT
.L26:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.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:
