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

typedef long long ll;
typedef char keytype;

int gcd(int a, int b){ return (a % b) ? gcd(b, a % b) : b;}
int lcm(int a, int b){ return (a / gcd(a, b)) * b;}

/* a[0], ..., a[n-1] の数の最大公約数 */
int ngcd(int n, int a[])
{
    int i, d;

    d = a[0];
    for (i = 1; i < n && d != 1; i++)
        d = gcd(a[i], d);
    return d;
}

void quicksort(keytype a[], int first, int last)
{
    int i, j;
    keytype x, t;

    x = a[(first + last) / 2];
    i = first;  j = last;
    for ( ; ; ) {
        while (a[i] < x) i++;
        while (x < a[j]) j--;
        if (i >= j) break;
        t = a[i];  a[i] = a[j];  a[j] = t;
        i++;  j--;
    }
    if (first  < i - 1) quicksort(a, first , i - 1);
    if (j + 1 < last) quicksort(a, j + 1, last);
}

int is_prime(int x){
    if(x <= 1) return 0;
    for(int i = 2; i * i <= x; i++){
        if(x % i == 0) return 0;
    }
    return 1;
}

int is_substr(char s[], char t[], int i){
    int flag = 1;

    if(s[i] == '\0') flag = 0;

    for(int j = 0; j < strlen(t); ++j, ++i){
        if(s[i] != t[j]){
            flag = 0;
            break;
        }
    }
    return flag;
}

// factor list, number of factors, natural number
void factorize(int ftr[], int *num, int n){
    int a = 2, cnt = 0;

    while(n >= a){
        if(n % a == 0){
            n = n / a;
            ftr[cnt++] = a;
        }else{
            a++;
        }
    }
    *num = cnt;
}

//#define N 5
//int p[N + 1];
int nextperm(int p[], int N)  /* 辞書式順序で次の順列 */
{
    int i, j, t;

    i = N - 1;
    p[0] = 0;  /* 番人 */
    while (p[i] >= p[i + 1]) i--;
    if (i == 0) return 0;  /* 完了 */
    j = N;
    while (p[i] >= p[j]) j--;
    t = p[i];  p[i] = p[j];  p[j] = t;
    i++;  j = N;
    while (i < j) {
        t = p[i];  p[i] = p[j];  p[j] = t;  i++;  j--;
    }
    return 1;  /* 未了 */
}

void comb(int size1, int size2, int v[size1][size2]){
  for(int i = 0; i < size1; i++){
    v[i][0] = 1;
    v[i][i] = 1;
  }
  for(int k = 1; k < size1; k++){
    for(int j = 1; j < k; j++){
      v[k][j] = (v[k-1][j-1] + v[k-1][j]);
    }
  }
}

int abs_val(int a, int b){
    if(a > b) return a - b;
    else return b - a;
}

const int inf = 1012345678;
int main(){
    char c[3][3];

    for(int i = 0; i < 3; ++i){
        scanf("%s", c[i]);
    }

    for(int i = 0; i < 3; ++i){
        for(int j = 0; j < 3; ++j){
            if(i == j){
                printf("%c", c[i][j]);
            }
        }
    }
    puts("");

    return 0;
}
```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	gcd
	.type	gcd, @function
gcd:
.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)
	movl	%esi, -8(%rbp)
	movl	-4(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	%edx, %eax
	testl	%eax, %eax
	je	.L2
	movl	-4(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	-8(%rbp), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	jmp	.L4
.L2:
	movl	-8(%rbp), %eax
.L4:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	gcd, .-gcd
	.globl	lcm
	.type	lcm, @function
lcm:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	%esi, -8(%rbp)
	movl	-8(%rbp), %edx
	movl	-4(%rbp), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	movl	%eax, %ecx
	movl	-4(%rbp), %eax
	cltd
	idivl	%ecx
	imull	-8(%rbp), %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	lcm, .-lcm
	.globl	ngcd
	.type	ngcd, @function
ngcd:
.LFB8:
	.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
	movl	%edi, -20(%rbp)
	movq	%rsi, -32(%rbp)
	movq	-32(%rbp), %rax
	movl	(%rax), %eax
	movl	%eax, -4(%rbp)
	movl	$1, -8(%rbp)
	jmp	.L8
.L10:
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-32(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %eax
	movl	-4(%rbp), %edx
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	movl	%eax, -4(%rbp)
	addl	$1, -8(%rbp)
.L8:
	movl	-8(%rbp), %eax
	cmpl	-20(%rbp), %eax
	jge	.L9
	cmpl	$1, -4(%rbp)
	jne	.L10
.L9:
	movl	-4(%rbp), %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	ngcd, .-ngcd
	.globl	quicksort
	.type	quicksort, @function
quicksort:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movl	%esi, -28(%rbp)
	movl	%edx, -32(%rbp)
	movl	-28(%rbp), %edx
	movl	-32(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, %edx
	shrl	$31, %edx
	addl	%edx, %eax
	sarl	%eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movb	%al, -10(%rbp)
	movl	-28(%rbp), %eax
	movl	%eax, -8(%rbp)
	movl	-32(%rbp), %eax
	movl	%eax, -4(%rbp)
	jmp	.L13
.L14:
	addl	$1, -8(%rbp)
.L13:
	movl	-8(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, -10(%rbp)
	jg	.L14
	jmp	.L15
.L16:
	subl	$1, -4(%rbp)
.L15:
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, -10(%rbp)
	jl	.L16
	movl	-8(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jge	.L23
	movl	-8(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movb	%al, -9(%rbp)
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	-8(%rbp), %edx
	movslq	%edx, %rcx
	movq	-24(%rbp), %rdx
	addq	%rcx, %rdx
	movzbl	(%rax), %eax
	movb	%al, (%rdx)
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movzbl	-9(%rbp), %eax
	movb	%al, (%rdx)
	addl	$1, -8(%rbp)
	subl	$1, -4(%rbp)
	jmp	.L13
.L23:
	nop
	movl	-8(%rbp), %eax
	subl	$1, %eax
	cmpl	%eax, -28(%rbp)
	jge	.L20
	movl	-8(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-28(%rbp), %ecx
	movq	-24(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	quicksort
.L20:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	cmpl	%eax, -32(%rbp)
	jle	.L24
	movl	-4(%rbp), %eax
	leal	1(%rax), %ecx
	movl	-32(%rbp), %edx
	movq	-24(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	quicksort
.L24:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	quicksort, .-quicksort
	.globl	is_prime
	.type	is_prime, @function
is_prime:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	cmpl	$1, -20(%rbp)
	jg	.L26
	movl	$0, %eax
	jmp	.L27
.L26:
	movl	$2, -4(%rbp)
	jmp	.L28
.L30:
	movl	-20(%rbp), %eax
	cltd
	idivl	-4(%rbp)
	movl	%edx, %eax
	testl	%eax, %eax
	jne	.L29
	movl	$0, %eax
	jmp	.L27
.L29:
	addl	$1, -4(%rbp)
.L28:
	movl	-4(%rbp), %eax
	imull	%eax, %eax
	cmpl	%eax, -20(%rbp)
	jge	.L30
	movl	$1, %eax
.L27:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	is_prime, .-is_prime
	.globl	is_substr
	.type	is_substr, @function
is_substr:
.LFB11:
	.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	$56, %rsp
	.cfi_offset 3, -24
	movq	%rdi, -40(%rbp)
	movq	%rsi, -48(%rbp)
	movl	%edx, -52(%rbp)
	movl	$1, -24(%rbp)
	movl	-52(%rbp), %eax
	movslq	%eax, %rdx
	movq	-40(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	testb	%al, %al
	jne	.L32
	movl	$0, -24(%rbp)
.L32:
	movl	$0, -20(%rbp)
	jmp	.L33
.L36:
	movl	-52(%rbp), %eax
	movslq	%eax, %rdx
	movq	-40(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %edx
	movl	-20(%rbp), %eax
	movslq	%eax, %rcx
	movq	-48(%rbp), %rax
	addq	%rcx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L34
	movl	$0, -24(%rbp)
	jmp	.L35
.L34:
	addl	$1, -20(%rbp)
	addl	$1, -52(%rbp)
.L33:
	movl	-20(%rbp), %eax
	movslq	%eax, %rbx
	movq	-48(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	cmpq	%rax, %rbx
	jb	.L36
.L35:
	movl	-24(%rbp), %eax
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	is_substr, .-is_substr
	.globl	factorize
	.type	factorize, @function
factorize:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movq	%rsi, -32(%rbp)
	movl	%edx, -36(%rbp)
	movl	$2, -8(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L39
.L41:
	movl	-36(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	%edx, %eax
	testl	%eax, %eax
	jne	.L40
	movl	-36(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	%eax, -36(%rbp)
	movl	-4(%rbp), %eax
	leal	1(%rax), %edx
	movl	%edx, -4(%rbp)
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movl	-8(%rbp), %eax
	movl	%eax, (%rdx)
	jmp	.L39
.L40:
	addl	$1, -8(%rbp)
.L39:
	movl	-36(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jge	.L41
	movq	-32(%rbp), %rax
	movl	-4(%rbp), %edx
	movl	%edx, (%rax)
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	factorize, .-factorize
	.globl	nextperm
	.type	nextperm, @function
nextperm:
.LFB13:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movl	%esi, -28(%rbp)
	movl	-28(%rbp), %eax
	subl	$1, %eax
	movl	%eax, -12(%rbp)
	movq	-24(%rbp), %rax
	movl	$0, (%rax)
	jmp	.L43
.L44:
	subl	$1, -12(%rbp)
.L43:
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %edx
	movl	-12(%rbp), %eax
	cltq
	addq	$1, %rax
	leaq	0(,%rax,4), %rcx
	movq	-24(%rbp), %rax
	addq	%rcx, %rax
	movl	(%rax), %eax
	cmpl	%eax, %edx
	jge	.L44
	cmpl	$0, -12(%rbp)
	jne	.L45
	movl	$0, %eax
	jmp	.L46
.L45:
	movl	-28(%rbp), %eax
	movl	%eax, -8(%rbp)
	jmp	.L47
.L48:
	subl	$1, -8(%rbp)
.L47:
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %edx
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rcx
	movq	-24(%rbp), %rax
	addq	%rcx, %rax
	movl	(%rax), %eax
	cmpl	%eax, %edx
	jge	.L48
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %eax
	movl	%eax, -4(%rbp)
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	-12(%rbp), %edx
	movslq	%edx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-24(%rbp), %rdx
	addq	%rcx, %rdx
	movl	(%rax), %eax
	movl	%eax, (%rdx)
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rdx)
	addl	$1, -12(%rbp)
	movl	-28(%rbp), %eax
	movl	%eax, -8(%rbp)
	jmp	.L49
.L50:
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %eax
	movl	%eax, -4(%rbp)
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	-12(%rbp), %edx
	movslq	%edx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-24(%rbp), %rdx
	addq	%rcx, %rdx
	movl	(%rax), %eax
	movl	%eax, (%rdx)
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rdx)
	addl	$1, -12(%rbp)
	subl	$1, -8(%rbp)
.L49:
	movl	-12(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jl	.L50
	movl	$1, %eax
.L46:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	nextperm, .-nextperm
	.globl	comb
	.type	comb, @function
comb:
.LFB14:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%rbx
	.cfi_offset 3, -24
	movl	%edi, -52(%rbp)
	movl	%esi, -56(%rbp)
	movq	%rdx, -64(%rbp)
	movl	-56(%rbp), %eax
	movslq	%eax, %rdx
	subq	$1, %rdx
	movq	%rdx, -24(%rbp)
	movslq	%eax, %rdx
	movq	%rdx, %rcx
	movl	$0, %ebx
	movl	$0, -36(%rbp)
	jmp	.L52
.L53:
	movl	-36(%rbp), %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rcx, %rdx
	movl	$1, (%rdx)
	movl	-36(%rbp), %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rdx, %rcx
	movl	-36(%rbp), %edx
	movslq	%edx, %rdx
	movl	$1, (%rcx,%rdx,4)
	addl	$1, -36(%rbp)
.L52:
	movl	-36(%rbp), %edx
	cmpl	-52(%rbp), %edx
	jl	.L53
	movl	$1, -32(%rbp)
	jmp	.L54
.L57:
	movl	$1, -28(%rbp)
	jmp	.L55
.L56:
	movl	-32(%rbp), %edx
	subl	$1, %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rdx, %rcx
	movl	-28(%rbp), %edx
	subl	$1, %edx
	movslq	%edx, %rdx
	movl	(%rcx,%rdx,4), %edi
	movl	-32(%rbp), %edx
	subl	$1, %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rdx, %rcx
	movl	-28(%rbp), %edx
	movslq	%edx, %rdx
	movl	(%rcx,%rdx,4), %esi
	movl	-32(%rbp), %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rdx, %rcx
	addl	%edi, %esi
	movl	-28(%rbp), %edx
	movslq	%edx, %rdx
	movl	%esi, (%rcx,%rdx,4)
	addl	$1, -28(%rbp)
.L55:
	movl	-28(%rbp), %edx
	cmpl	-32(%rbp), %edx
	jl	.L56
	addl	$1, -32(%rbp)
.L54:
	movl	-32(%rbp), %edx
	cmpl	-52(%rbp), %edx
	jl	.L57
	nop
	nop
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	comb, .-comb
	.globl	abs_val
	.type	abs_val, @function
abs_val:
.LFB15:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -4(%rbp)
	movl	%esi, -8(%rbp)
	movl	-4(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jle	.L59
	movl	-4(%rbp), %eax
	subl	-8(%rbp), %eax
	jmp	.L60
.L59:
	movl	-8(%rbp), %eax
	subl	-4(%rbp), %eax
.L60:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	abs_val, .-abs_val
	.globl	inf
	.section	.rodata
	.align 4
	.type	inf, @object
	.size	inf, 4
inf:
	.long	1012345678
.LC0:
	.string	"%s"
.LC1:
	.string	""
	.text
	.globl	main
	.type	main, @function
main:
.LFB16:
	.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
	movl	$0, -32(%rbp)
	jmp	.L62
.L63:
	leaq	-17(%rbp), %rcx
	movl	-32(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	addq	%rcx, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -32(%rbp)
.L62:
	cmpl	$2, -32(%rbp)
	jle	.L63
	movl	$0, -28(%rbp)
	jmp	.L64
.L68:
	movl	$0, -24(%rbp)
	jmp	.L65
.L67:
	movl	-28(%rbp), %eax
	cmpl	-24(%rbp), %eax
	jne	.L66
	movl	-24(%rbp), %eax
	movslq	%eax, %rcx
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	addq	%rbp, %rax
	addq	%rcx, %rax
	subq	$17, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	%eax, %edi
	call	putchar@PLT
.L66:
	addl	$1, -24(%rbp)
.L65:
	cmpl	$2, -24(%rbp)
	jle	.L67
	addl	$1, -28(%rbp)
.L64:
	cmpl	$2, -28(%rbp)
	jle	.L68
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L70
	call	__stack_chk_fail@PLT
.L70:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.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	gcd
	.type	gcd, @function
gcd:
.LFB51:
	.cfi_startproc
	endbr64
	movl	%edi, %eax
	movl	%esi, %edx
	.p2align 4,,10
	.p2align 3
.L2:
	movl	%edx, %ecx
	cltd
	idivl	%ecx
	movl	%ecx, %eax
	testl	%edx, %edx
	jne	.L2
	ret
	.cfi_endproc
.LFE51:
	.size	gcd, .-gcd
	.p2align 4
	.globl	lcm
	.type	lcm, @function
lcm:
.LFB52:
	.cfi_startproc
	endbr64
	movl	%esi, %edx
	movl	%edi, %ecx
	.p2align 4,,10
	.p2align 3
.L6:
	movl	%ecx, %eax
	movl	%edx, %ecx
	cltd
	idivl	%ecx
	testl	%edx, %edx
	jne	.L6
	movl	%edi, %eax
	cltd
	idivl	%ecx
	imull	%esi, %eax
	ret
	.cfi_endproc
.LFE52:
	.size	lcm, .-lcm
	.p2align 4
	.globl	ngcd
	.type	ngcd, @function
ngcd:
.LFB53:
	.cfi_startproc
	endbr64
	movl	(%rsi), %r8d
	cmpl	$1, %r8d
	je	.L8
	cmpl	$1, %edi
	jle	.L8
	movl	$2, %ecx
	.p2align 4,,10
	.p2align 3
.L11:
	movl	-4(%rsi,%rcx,4), %eax
	movl	%r8d, %edx
	.p2align 4,,10
	.p2align 3
.L10:
	movl	%edx, %r8d
	cltd
	idivl	%r8d
	movl	%r8d, %eax
	testl	%edx, %edx
	jne	.L10
	cmpl	%ecx, %edi
	setg	%dl
	cmpl	$1, %r8d
	setne	%al
	addq	$1, %rcx
	testb	%al, %dl
	jne	.L11
.L8:
	movl	%r8d, %eax
	ret
	.cfi_endproc
.LFE53:
	.size	ngcd, .-ngcd
	.p2align 4
	.globl	quicksort
	.type	quicksort, @function
quicksort:
.LFB54:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movq	%rdi, %r9
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movl	%esi, %r14d
	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
	movl	%edx, 48(%rsp)
.L27:
	movl	48(%rsp), %edi
	movl	%r14d, %edx
	movslq	%r14d, %rbx
	movl	%r14d, %r11d
	leaq	(%r9,%rbx), %r8
	addl	%edi, %edx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r9,%rax), %esi
	movslq	%edi, %rax
.L21:
	movzbl	(%r8), %ebp
	leaq	(%r9,%rax), %rcx
	movzbl	(%rcx), %edx
	cmpb	%sil, %bpl
	jl	.L22
	cmpb	%dl, %sil
	jge	.L23
	leaq	-1(%r9,%rax), %rax
	leal	-1(%rdi), %r10d
	subl	%eax, %r10d
	.p2align 4,,10
	.p2align 3
.L24:
	leal	(%r10,%rax), %edi
	movq	%rax, %rcx
	movzbl	(%rax), %edx
	subq	$1, %rax
	cmpb	%sil, %dl
	jg	.L24
.L23:
	cmpl	%edi, %r11d
	jge	.L25
	movb	%dl, (%r8)
	subl	$1, %edi
	movb	%bpl, (%rcx)
	movslq	%edi, %rax
.L22:
	addq	$1, %r8
	addl	$1, %r11d
	jmp	.L21
.L25:
	leal	-1(%r11), %eax
	movl	%edi, 88(%rsp)
	movl	%eax, 20(%rsp)
	cmpl	%r14d, %eax
	jg	.L122
.L35:
	movl	88(%rsp), %eax
	addl	$1, %eax
	movl	%eax, %r14d
	cmpl	48(%rsp), %eax
	jl	.L27
	addq	$120, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
.L122:
	.cfi_restore_state
	cltq
	movq	%rax, 80(%rsp)
.L26:
	movl	20(%rsp), %ecx
	movl	%r14d, %r8d
	leaq	(%r9,%rbx), %rdi
	movl	%ecx, %edx
	addl	%r14d, %edx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r9,%rax), %esi
	movq	80(%rsp), %rax
	.p2align 4,,10
	.p2align 3
.L29:
	movzbl	(%rdi), %r11d
	leaq	(%r9,%rax), %r10
	movzbl	(%r10), %edx
	cmpb	%r11b, %sil
	jg	.L30
	cmpb	%dl, %sil
	jge	.L31
	leaq	-1(%r9,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L32:
	movq	%rax, %r10
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %ecx
	cmpb	%dl, %sil
	jl	.L32
.L31:
	cmpl	%ecx, %r8d
	jge	.L33
	movb	%dl, (%rdi)
	subl	$1, %ecx
	movb	%r11b, (%r10)
	movslq	%ecx, %rax
.L30:
	addq	$1, %rdi
	addl	$1, %r8d
	jmp	.L29
.L33:
	leal	-1(%r8), %eax
	movl	%ecx, 52(%rsp)
	movl	%eax, 24(%rsp)
	cmpl	%eax, %r14d
	jl	.L123
.L42:
	movl	52(%rsp), %eax
	addl	$1, %eax
	movl	%eax, %r14d
	cmpl	%eax, 20(%rsp)
	jle	.L35
	movslq	%eax, %rbx
	jmp	.L26
.L123:
	cltq
	movq	%r9, %r8
	movq	%rax, 72(%rsp)
.L34:
	movl	24(%rsp), %ecx
	movl	%r14d, %r10d
	leaq	(%r8,%rbx), %rdi
	movl	%ecx, %edx
	addl	%r14d, %edx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r8,%rax), %esi
	movq	72(%rsp), %rax
	.p2align 4,,10
	.p2align 3
.L36:
	movzbl	(%rdi), %r11d
	leaq	(%r8,%rax), %r9
	movzbl	(%r9), %edx
	cmpb	%r11b, %sil
	jg	.L37
	cmpb	%dl, %sil
	jge	.L38
	leaq	-1(%r8,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L39:
	movq	%rax, %r9
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %ecx
	cmpb	%dl, %sil
	jl	.L39
.L38:
	cmpl	%r10d, %ecx
	jle	.L40
	movb	%dl, (%rdi)
	subl	$1, %ecx
	movb	%r11b, (%r9)
	movslq	%ecx, %rax
.L37:
	addq	$1, %rdi
	addl	$1, %r10d
	jmp	.L36
.L40:
	leal	-1(%r10), %eax
	movl	%ecx, 56(%rsp)
	movl	%eax, 28(%rsp)
	cmpl	%eax, %r14d
	jl	.L124
	movl	56(%rsp), %eax
	addl	$1, %eax
	movl	%eax, %r14d
	cmpl	%eax, 24(%rsp)
	jle	.L114
.L134:
	movslq	%eax, %rbx
	jmp	.L34
.L124:
	cltq
	movq	%r8, %r9
	movq	%rax, 64(%rsp)
.L41:
	movl	28(%rsp), %ecx
	movl	%r14d, %r8d
	leaq	(%r9,%rbx), %rdi
	movl	%ecx, %edx
	addl	%r14d, %edx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r9,%rax), %esi
	movq	64(%rsp), %rax
	.p2align 4,,10
	.p2align 3
.L43:
	movzbl	(%rdi), %r11d
	leaq	(%r9,%rax), %r10
	movzbl	(%r10), %edx
	cmpb	%r11b, %sil
	jg	.L44
	cmpb	%dl, %sil
	jge	.L45
	leaq	-1(%r9,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L46:
	movq	%rax, %r10
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %ecx
	cmpb	%dl, %sil
	jl	.L46
.L45:
	cmpl	%ecx, %r8d
	jge	.L47
	movb	%dl, (%rdi)
	subl	$1, %ecx
	movb	%r11b, (%r10)
	movslq	%ecx, %rax
.L44:
	addq	$1, %rdi
	addl	$1, %r8d
	jmp	.L43
.L47:
	leal	-1(%r8), %eax
	movl	%ecx, 60(%rsp)
	movl	%eax, 16(%rsp)
	cmpl	%eax, %r14d
	jl	.L125
	movl	60(%rsp), %eax
	addl	$1, %eax
	movl	%eax, %r14d
	cmpl	%eax, 28(%rsp)
	jle	.L115
.L133:
	movslq	%eax, %rbx
	jmp	.L41
.L125:
	cltq
	movq	%r9, %r15
	movq	%rax, 40(%rsp)
.L48:
	movl	16(%rsp), %r8d
	movl	%r14d, %r10d
	leaq	(%r15,%rbx), %rdi
	movl	%r8d, %edx
	addl	%r14d, %edx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r15,%rax), %esi
	movq	40(%rsp), %rax
	.p2align 4,,10
	.p2align 3
.L50:
	movzbl	(%rdi), %r9d
	leaq	(%r15,%rax), %rcx
	movzbl	(%rcx), %edx
	cmpb	%r9b, %sil
	jg	.L51
	cmpb	%dl, %sil
	jge	.L52
	leaq	-1(%r15,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L53:
	movq	%rax, %rcx
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %r8d
	cmpb	%dl, %sil
	jl	.L53
.L52:
	cmpl	%r8d, %r10d
	jge	.L54
	movb	%dl, (%rdi)
	subl	$1, %r8d
	movb	%r9b, (%rcx)
	movslq	%r8d, %rax
.L51:
	addq	$1, %rdi
	addl	$1, %r10d
	jmp	.L50
.L54:
	leal	-1(%r10), %eax
	movl	%eax, 4(%rsp)
	cmpl	%eax, %r14d
	jl	.L126
	leal	1(%r8), %eax
	movl	%eax, %r14d
	cmpl	%eax, 16(%rsp)
	jle	.L116
.L132:
	movslq	%eax, %rbx
	jmp	.L48
.L126:
	cltq
	movl	%r8d, 92(%rsp)
	movq	%rax, 32(%rsp)
.L55:
	movl	4(%rsp), %r9d
	movl	%r14d, %r8d
	leaq	(%r15,%rbx), %rdi
	movl	%r9d, %edx
	addl	%r14d, %edx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r15,%rax), %esi
	movq	32(%rsp), %rax
	.p2align 4,,10
	.p2align 3
.L57:
	movzbl	(%rdi), %r10d
	leaq	(%r15,%rax), %rcx
	movzbl	(%rcx), %edx
	cmpb	%r10b, %sil
	jg	.L58
	cmpb	%dl, %sil
	jge	.L59
	leaq	-1(%r15,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L60:
	movq	%rax, %rcx
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %r9d
	cmpb	%dl, %sil
	jl	.L60
.L59:
	cmpl	%r9d, %r8d
	jge	.L61
	movb	%dl, (%rdi)
	subl	$1, %r9d
	movb	%r10b, (%rcx)
	movslq	%r9d, %rax
.L58:
	addq	$1, %rdi
	addl	$1, %r8d
	jmp	.L57
.L61:
	leal	-1(%r8), %eax
	movl	%eax, (%rsp)
	cmpl	%eax, %r14d
	jl	.L127
	leal	1(%r9), %eax
	movl	%eax, %r14d
	cmpl	%eax, 4(%rsp)
	jle	.L117
.L131:
	movslq	%eax, %rbx
	jmp	.L55
.L127:
	cltq
	movl	%r9d, 96(%rsp)
	movl	%r14d, %r10d
	movq	%rax, 8(%rsp)
.L62:
	movl	(%rsp), %r12d
	leaq	(%r15,%rbx), %rdi
	movl	%r10d, %r14d
	leal	(%r12,%r10), %edx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r15,%rax), %esi
	movq	8(%rsp), %rax
	.p2align 4,,10
	.p2align 3
.L64:
	movzbl	(%rdi), %r8d
	leaq	(%r15,%rax), %rcx
	movzbl	(%rcx), %edx
	cmpb	%r8b, %sil
	jg	.L65
	cmpb	%dl, %sil
	jge	.L66
	leaq	-1(%r15,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L67:
	movq	%rax, %rcx
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %r12d
	cmpb	%dl, %sil
	jl	.L67
.L66:
	cmpl	%r12d, %r14d
	jge	.L68
	movb	%dl, (%rdi)
	subl	$1, %r12d
	movb	%r8b, (%rcx)
	movslq	%r12d, %rax
.L65:
	addq	$1, %rdi
	addl	$1, %r14d
	jmp	.L64
.L68:
	subl	$1, %r14d
	cmpl	%r14d, %r10d
	jl	.L128
	leal	1(%r12), %r10d
	cmpl	%r10d, (%rsp)
	jle	.L118
.L130:
	movslq	%r10d, %rbx
	jmp	.L62
.L128:
	movl	%r12d, 100(%rsp)
	movslq	%r14d, %rax
	movq	%r15, %r9
	movq	%rax, %r15
.L69:
	leal	(%r14,%r10), %edx
	leaq	(%r9,%rbx), %r8
	movl	%r10d, %r13d
	movl	%r14d, %ebp
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r9,%rax), %esi
	movq	%r15, %rax
	.p2align 4,,10
	.p2align 3
.L71:
	movzbl	(%r8), %edi
	leaq	(%r9,%rax), %rcx
	movzbl	(%rcx), %edx
	cmpb	%dil, %sil
	jg	.L72
	cmpb	%dl, %sil
	jge	.L73
	leaq	-1(%r9,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L74:
	movq	%rax, %rcx
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %ebp
	cmpb	%dl, %sil
	jl	.L74
.L73:
	cmpl	%ebp, %r13d
	jge	.L75
	movb	%dl, (%r8)
	subl	$1, %ebp
	movb	%dil, (%rcx)
	movslq	%ebp, %rax
.L72:
	addq	$1, %r8
	addl	$1, %r13d
	jmp	.L71
.L75:
	subl	$1, %r13d
	movslq	%r13d, %r12
	cmpl	%r13d, %r10d
	jl	.L76
.L84:
	leal	1(%rbp), %r10d
	cmpl	%r10d, %r14d
	jle	.L119
	movslq	%r10d, %rbx
	jmp	.L69
	.p2align 4,,10
	.p2align 3
.L82:
	leal	-1(%r8), %edx
	cmpl	%edx, %r10d
	jl	.L129
.L83:
	leal	1(%rbx), %r10d
	cmpl	%r10d, %r13d
	jle	.L84
	movslq	%r10d, %rbx
.L76:
	leal	0(%r13,%r10), %edx
	leaq	(%r9,%rbx), %rdi
	movl	%r10d, %r8d
	movl	%r13d, %ebx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r9,%rax), %esi
	movq	%r12, %rax
	.p2align 4,,10
	.p2align 3
.L78:
	movzbl	(%rdi), %r11d
	leaq	(%r9,%rax), %rcx
	movzbl	(%rcx), %edx
	cmpb	%r11b, %sil
	jg	.L79
	cmpb	%dl, %sil
	jge	.L80
	leaq	-1(%r9,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L81:
	movq	%rax, %rcx
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %ebx
	cmpb	%dl, %sil
	jl	.L81
.L80:
	cmpl	%ebx, %r8d
	jge	.L82
	movb	%dl, (%rdi)
	subl	$1, %ebx
	movb	%r11b, (%rcx)
	movslq	%ebx, %rax
.L79:
	addq	$1, %rdi
	addl	$1, %r8d
	jmp	.L78
.L119:
	movl	100(%rsp), %r12d
	movq	%r9, %r15
	leal	1(%r12), %r10d
	cmpl	%r10d, (%rsp)
	jg	.L130
.L118:
	movl	96(%rsp), %r9d
	leal	1(%r9), %eax
	movl	%eax, %r14d
	cmpl	%eax, 4(%rsp)
	jg	.L131
.L117:
	movl	92(%rsp), %r8d
	leal	1(%r8), %eax
	movl	%eax, %r14d
	cmpl	%eax, 16(%rsp)
	jg	.L132
.L116:
	movl	60(%rsp), %eax
	movq	%r15, %r9
	addl	$1, %eax
	movl	%eax, %r14d
	cmpl	%eax, 28(%rsp)
	jg	.L133
.L115:
	movl	56(%rsp), %eax
	movq	%r9, %r8
	addl	$1, %eax
	movl	%eax, %r14d
	cmpl	%eax, 24(%rsp)
	jg	.L134
.L114:
	movq	%r8, %r9
	jmp	.L42
.L129:
	movq	%r9, %rdi
	movl	%r10d, %esi
	movq	%r9, 104(%rsp)
	call	quicksort
	movq	104(%rsp), %r9
	jmp	.L83
	.cfi_endproc
.LFE54:
	.size	quicksort, .-quicksort
	.p2align 4
	.globl	is_prime
	.type	is_prime, @function
is_prime:
.LFB55:
	.cfi_startproc
	endbr64
	xorl	%edx, %edx
	cmpl	$1, %edi
	jle	.L135
	cmpl	$3, %edi
	jle	.L140
	testb	$1, %dil
	je	.L135
	movl	$2, %ecx
	jmp	.L137
	.p2align 4,,10
	.p2align 3
.L138:
	movl	%edi, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L135
.L137:
	addl	$1, %ecx
	movl	%ecx, %eax
	imull	%ecx, %eax
	cmpl	%edi, %eax
	jle	.L138
.L140:
	movl	$1, %edx
.L135:
	movl	%edx, %eax
	ret
	.cfi_endproc
.LFE55:
	.size	is_prime, .-is_prime
	.p2align 4
	.globl	is_substr
	.type	is_substr, @function
is_substr:
.LFB56:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdi, %r12
	movq	%rsi, %rdi
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movl	%edx, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	call	strlen@PLT
	movslq	%ebp, %rdx
	xorl	%ecx, %ecx
	leaq	(%r12,%rdx), %rsi
	jmp	.L146
	.p2align 4,,10
	.p2align 3
.L148:
	movzbl	(%rsi,%rcx), %r8d
	addq	$1, %rcx
	cmpb	-1(%rbx,%rcx), %r8b
	jne	.L149
.L146:
	cmpq	%rcx, %rax
	jne	.L148
	xorl	%eax, %eax
	cmpb	$0, (%r12,%rdx)
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	setne	%al
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L149:
	.cfi_restore_state
	popq	%rbx
	.cfi_def_cfa_offset 24
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE56:
	.size	is_substr, .-is_substr
	.p2align 4
	.globl	factorize
	.type	factorize, @function
factorize:
.LFB57:
	.cfi_startproc
	endbr64
	movl	%edx, %r8d
	cmpl	$1, %edx
	jle	.L156
	xorl	%r9d, %r9d
	movl	$2, %ecx
	.p2align 4,,10
	.p2align 3
.L155:
	movl	%r8d, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	jne	.L153
.L159:
	movl	%eax, %r8d
	movl	%ecx, (%rdi,%r9,4)
	leal	1(%r9), %eax
	cmpl	%ecx, %r8d
	jl	.L158
	movslq	%eax, %r9
	movl	%r8d, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L159
.L153:
	addl	$1, %ecx
	cmpl	%r8d, %ecx
	jle	.L155
	movl	%r9d, (%rsi)
	ret
	.p2align 4,,10
	.p2align 3
.L158:
	movl	%eax, %r9d
	movl	%r9d, (%rsi)
	ret
	.p2align 4,,10
	.p2align 3
.L156:
	xorl	%r9d, %r9d
	movl	%r9d, (%rsi)
	ret
	.cfi_endproc
.LFE57:
	.size	factorize, .-factorize
	.p2align 4
	.globl	nextperm
	.type	nextperm, @function
nextperm:
.LFB58:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	movslq	%esi, %r12
	leal	-1(%r12), %r14d
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	movslq	%r14d, %rdx
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	movl	%r14d, %r8d
	leaq	0(,%rdx,4), %rbp
	movl	$0, (%rdi)
	leaq	4(%rbp), %rbx
	leaq	(%rdi,%rbp), %rcx
	leaq	(%rdi,%rbx), %r13
	movl	(%rcx), %eax
	movl	0(%r13), %r11d
	cmpl	%r11d, %eax
	jl	.L161
	movl	-4(%r13), %eax
	movq	%r12, %r10
	leaq	-4(%rdi,%rdx,4), %rsi
	.p2align 4,,10
	.p2align 3
.L162:
	movl	%eax, %r9d
	movl	(%rsi), %eax
	movl	%r8d, %edx
	movq	%rsi, %rcx
	leal	-1(%r8), %r8d
	leaq	-4(%rsi), %rsi
	cmpl	%r9d, %eax
	jge	.L162
	testl	%r8d, %r8d
	je	.L160
	cmpl	%r11d, %eax
	jl	.L164
	leaq	-4(%rdi,%r12,4), %rsi
	.p2align 4,,10
	.p2align 3
.L165:
	movq	%rsi, %r13
	movl	(%rsi), %r11d
	subq	$4, %rsi
	cmpl	%r11d, %eax
	jge	.L165
.L164:
	movl	%r11d, (%rcx)
	movl	%eax, 0(%r13)
	cmpl	%edx, %r10d
	jle	.L171
	subl	%edx, %r14d
	movslq	%edx, %r8
	leaq	8(%rbp), %r9
	movl	%r14d, %r13d
	leaq	0(,%r8,4), %rsi
	shrl	%r13d
	leal	1(%r13), %eax
	leaq	(%rax,%r8), %rcx
	movq	%rax, %r11
	negq	%rax
	salq	$2, %rcx
	leaq	(%r9,%rax,4), %rax
	cmpq	%rax, %rcx
	setle	%al
	cmpq	%r9, %rsi
	setge	%cl
	orb	%cl, %al
	je	.L184
	cmpl	$1, %r14d
	jbe	.L184
	cmpl	$5, %r14d
	jbe	.L176
	movl	%r11d, %ecx
	addq	%rdi, %rsi
	leaq	-8(%rdi,%rbp), %rax
	shrl	$2, %ecx
	leal	-1(%rcx), %r9d
	leaq	16(%rsi), %rcx
	salq	$4, %r9
	addq	%rcx, %r9
	jmp	.L169
	.p2align 4,,10
	.p2align 3
.L194:
	addq	$16, %rcx
.L169:
	movdqu	(%rsi), %xmm0
	movdqu	(%rax), %xmm2
	subq	$16, %rax
	pshufd	$27, %xmm2, %xmm1
	pshufd	$27, %xmm0, %xmm0
	movups	%xmm1, (%rsi)
	movq	%rcx, %rsi
	movups	%xmm0, 16(%rax)
	cmpq	%r9, %rcx
	jne	.L194
	movl	%r11d, %eax
	andl	$-4, %eax
	addl	%eax, %edx
	subl	%eax, %r10d
	cmpl	%eax, %r11d
	je	.L171
.L168:
	subl	%eax, %r11d
	cmpl	%eax, %r13d
	je	.L173
	addq	%rax, %r8
	notq	%rax
	leaq	(%rbx,%rax,4), %rax
	leaq	(%rdi,%r8,4), %rcx
	addq	%rdi, %rax
	movq	(%rcx), %xmm0
	movq	(%rax), %xmm1
	pshufd	$225, %xmm0, %xmm0
	pshufd	$225, %xmm1, %xmm1
	movq	%xmm1, (%rcx)
	movq	%xmm0, (%rax)
	movl	%r11d, %eax
	andl	$-2, %eax
	addl	%eax, %edx
	subl	%eax, %r10d
	cmpl	%eax, %r11d
	je	.L171
.L173:
	movslq	%edx, %rdx
	movslq	%r10d, %r10
	leaq	(%rdi,%rdx,4), %rdx
	leaq	(%rdi,%r10,4), %rax
	movl	(%rdx), %ecx
	movl	(%rax), %esi
	movl	%esi, (%rdx)
	movl	%ecx, (%rax)
.L171:
	movl	$1, %r8d
.L160:
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movl	%r8d, %eax
	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
	ret
	.p2align 4,,10
	.p2align 3
.L184:
	.cfi_restore_state
	movl	(%rdi,%r8,4), %eax
	movl	(%rdi,%r12,4), %edx
	movl	%edx, (%rdi,%r8,4)
	addq	$1, %r8
	movl	%eax, (%rdi,%r12,4)
	subq	$1, %r12
	cmpl	%r8d, %r12d
	jg	.L184
	jmp	.L171
	.p2align 4,,10
	.p2align 3
.L161:
	testl	%r14d, %r14d
	je	.L160
	movl	%r11d, (%rcx)
	movl	%eax, 0(%r13)
	jmp	.L171
.L176:
	xorl	%eax, %eax
	jmp	.L168
	.cfi_endproc
.LFE58:
	.size	nextperm, .-nextperm
	.p2align 4
	.globl	comb
	.type	comb, @function
comb:
.LFB59:
	.cfi_startproc
	endbr64
	testl	%edi, %edi
	jle	.L229
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movq	%rdx, %r8
	movq	%rdx, %rcx
	xorl	%eax, %eax
	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
	movslq	%esi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	leaq	0(,%r12,4), %rsi
	movl	%edi, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	leaq	4(%rsi), %rdi
	.p2align 4,,10
	.p2align 3
.L199:
	addl	$1, %eax
	movl	$1, (%rcx)
	addq	%rsi, %rcx
	movl	$1, (%rdx)
	addq	%rdi, %rdx
	cmpl	%eax, %ebp
	jne	.L199
	cmpl	$1, %ebp
	jle	.L195
	cmpl	$2, %ebp
	je	.L195
	leaq	1(%r12), %r13
	subl	$1, %ebp
	movq	%r12, %r9
	movl	$1, %edi
	leaq	0(,%r12,4), %rbx
	movl	$2, %r10d
	leaq	(%r8,%rbx), %rdx
	leaq	4(%rbx), %r11
	movq	%rdx, -16(%rsp)
	.p2align 4,,10
	.p2align 3
.L210:
	leaq	(%rdx,%rbx), %rsi
	cmpq	$12, %rbx
	jbe	.L214
	cmpl	$1, %edi
	je	.L214
	leal	-1(%rdi), %eax
	cmpl	$2, %eax
	jbe	.L213
	movq	-16(%rsp), %rax
	movl	%edi, %ecx
	leaq	(%r8,%r11), %r15
	shrl	$2, %ecx
	leaq	(%r11,%rax), %r14
	salq	$4, %rcx
	xorl	%eax, %eax
	.p2align 4,,10
	.p2align 3
.L204:
	movdqu	(%rdx,%rax), %xmm0
	movdqu	(%r15,%rax), %xmm2
	paddd	%xmm2, %xmm0
	movups	%xmm0, (%r14,%rax)
	addq	$16, %rax
	cmpq	%rcx, %rax
	jne	.L204
	movl	%edi, %ecx
	andl	$-4, %ecx
	leal	1(%rcx), %eax
	cmpl	%edi, %ecx
	je	.L209
.L203:
	movl	%edi, %r15d
	subl	%ecx, %r15d
	cmpl	$1, %r15d
	je	.L206
	leaq	(%r9,%rcx), %r14
	movq	4(%r8,%r14,4), %xmm0
	movq	(%r8,%r14,4), %xmm1
	leaq	0(%r13,%r9), %r14
	addq	%rcx, %r14
	movl	%r15d, %ecx
	paddd	%xmm1, %xmm0
	andl	$-2, %ecx
	addl	%ecx, %eax
	movq	%xmm0, (%r8,%r14,4)
	cmpl	%ecx, %r15d
	je	.L209
.L206:
	movslq	%eax, %rcx
	subl	$1, %eax
	cltq
	movl	(%rdx,%rcx,4), %r14d
	addl	(%rdx,%rax,4), %r14d
	movl	%r14d, (%rsi,%rcx,4)
.L209:
	addl	$1, %edi
	movq	%rsi, %rdx
	addq	$1, %r10
	addq	%rbx, %r11
	addq	%r12, %r9
	cmpl	%edi, %ebp
	jne	.L210
.L195:
	popq	%rbx
	.cfi_remember_state
	.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
.L214:
	.cfi_restore_state
	movl	$1, %eax
	.p2align 4,,10
	.p2align 3
.L208:
	movl	(%rdx,%rax,4), %ecx
	addl	-4(%rdx,%rax,4), %ecx
	movl	%ecx, (%rsi,%rax,4)
	addq	$1, %rax
	cmpq	%r10, %rax
	jne	.L208
	jmp	.L209
.L213:
	xorl	%ecx, %ecx
	movl	$1, %eax
	jmp	.L203
.L229:
	.cfi_def_cfa_offset 8
	.cfi_restore 3
	.cfi_restore 6
	.cfi_restore 12
	.cfi_restore 13
	.cfi_restore 14
	.cfi_restore 15
	ret
	.cfi_endproc
.LFE59:
	.size	comb, .-comb
	.p2align 4
	.globl	abs_val
	.type	abs_val, @function
abs_val:
.LFB60:
	.cfi_startproc
	endbr64
	movl	%edi, %edx
	movl	%esi, %eax
	subl	%esi, %edx
	subl	%edi, %eax
	cmpl	%esi, %edi
	cmovg	%edx, %eax
	ret
	.cfi_endproc
.LFE60:
	.size	abs_val, .-abs_val
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%s"
.LC1:
	.string	""
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB61:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	leaq	.LC0(%rip), %rbp
	movq	%rbp, %rdi
	subq	$32, %rsp
	.cfi_def_cfa_offset 48
	movq	%fs:40, %rax
	movq	%rax, 24(%rsp)
	xorl	%eax, %eax
	leaq	15(%rsp), %rsi
	call	__isoc99_scanf@PLT
	leaq	18(%rsp), %rsi
	movq	%rbp, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	leaq	21(%rsp), %rsi
	movq	%rbp, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movsbl	15(%rsp), %edi
	call	putchar@PLT
	movsbl	19(%rsp), %edi
	call	putchar@PLT
	movsbl	23(%rsp), %edi
	call	putchar@PLT
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L236
	addq	$32, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 16
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L236:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE61:
	.size	main, .-main
	.globl	inf
	.section	.rodata
	.align 4
	.type	inf, @object
	.size	inf, 4
inf:
	.long	1012345678
	.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	gcd
	.type	gcd, @function
gcd:
.LFB51:
	.cfi_startproc
	endbr64
	movl	%edi, %eax
	movl	%esi, %edx
	.p2align 4,,10
	.p2align 3
.L2:
	movl	%edx, %ecx
	cltd
	idivl	%ecx
	movl	%ecx, %eax
	testl	%edx, %edx
	jne	.L2
	ret
	.cfi_endproc
.LFE51:
	.size	gcd, .-gcd
	.p2align 4
	.globl	lcm
	.type	lcm, @function
lcm:
.LFB52:
	.cfi_startproc
	endbr64
	movl	%esi, %edx
	movl	%edi, %ecx
	.p2align 4,,10
	.p2align 3
.L6:
	movl	%ecx, %eax
	movl	%edx, %ecx
	cltd
	idivl	%ecx
	testl	%edx, %edx
	jne	.L6
	movl	%edi, %eax
	cltd
	idivl	%ecx
	imull	%esi, %eax
	ret
	.cfi_endproc
.LFE52:
	.size	lcm, .-lcm
	.p2align 4
	.globl	ngcd
	.type	ngcd, @function
ngcd:
.LFB53:
	.cfi_startproc
	endbr64
	movl	(%rsi), %r8d
	cmpl	$1, %r8d
	je	.L8
	cmpl	$1, %edi
	jle	.L8
	movl	$2, %ecx
	.p2align 4,,10
	.p2align 3
.L11:
	movl	-4(%rsi,%rcx,4), %eax
	movl	%r8d, %edx
	.p2align 4,,10
	.p2align 3
.L10:
	movl	%edx, %r8d
	cltd
	idivl	%r8d
	movl	%r8d, %eax
	testl	%edx, %edx
	jne	.L10
	cmpl	%ecx, %edi
	setg	%dl
	cmpl	$1, %r8d
	setne	%al
	addq	$1, %rcx
	testb	%al, %dl
	jne	.L11
.L8:
	movl	%r8d, %eax
	ret
	.cfi_endproc
.LFE53:
	.size	ngcd, .-ngcd
	.p2align 4
	.globl	quicksort
	.type	quicksort, @function
quicksort:
.LFB54:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movq	%rdi, %r9
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	movl	%esi, %r14d
	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
	movl	%edx, 48(%rsp)
.L27:
	movl	48(%rsp), %edi
	movl	%r14d, %edx
	movslq	%r14d, %rbx
	movl	%r14d, %r11d
	leaq	(%r9,%rbx), %r8
	addl	%edi, %edx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r9,%rax), %esi
	movslq	%edi, %rax
.L21:
	movzbl	(%r8), %ebp
	leaq	(%r9,%rax), %rcx
	movzbl	(%rcx), %edx
	cmpb	%sil, %bpl
	jl	.L22
	cmpb	%dl, %sil
	jge	.L23
	leaq	-1(%r9,%rax), %rax
	leal	-1(%rdi), %r10d
	subl	%eax, %r10d
	.p2align 4,,10
	.p2align 3
.L24:
	leal	(%r10,%rax), %edi
	movq	%rax, %rcx
	movzbl	(%rax), %edx
	subq	$1, %rax
	cmpb	%sil, %dl
	jg	.L24
.L23:
	cmpl	%edi, %r11d
	jge	.L25
	movb	%dl, (%r8)
	subl	$1, %edi
	movb	%bpl, (%rcx)
	movslq	%edi, %rax
.L22:
	addq	$1, %r8
	addl	$1, %r11d
	jmp	.L21
.L25:
	leal	-1(%r11), %eax
	movl	%edi, 88(%rsp)
	movl	%eax, 20(%rsp)
	cmpl	%r14d, %eax
	jg	.L122
.L35:
	movl	88(%rsp), %eax
	addl	$1, %eax
	movl	%eax, %r14d
	cmpl	48(%rsp), %eax
	jl	.L27
	addq	$120, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
.L122:
	.cfi_restore_state
	cltq
	movq	%rax, 80(%rsp)
.L26:
	movl	20(%rsp), %ecx
	movl	%r14d, %r8d
	leaq	(%r9,%rbx), %rdi
	movl	%ecx, %edx
	addl	%r14d, %edx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r9,%rax), %esi
	movq	80(%rsp), %rax
	.p2align 4,,10
	.p2align 3
.L29:
	movzbl	(%rdi), %r11d
	leaq	(%r9,%rax), %r10
	movzbl	(%r10), %edx
	cmpb	%r11b, %sil
	jg	.L30
	cmpb	%dl, %sil
	jge	.L31
	leaq	-1(%r9,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L32:
	movq	%rax, %r10
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %ecx
	cmpb	%dl, %sil
	jl	.L32
.L31:
	cmpl	%ecx, %r8d
	jge	.L33
	movb	%dl, (%rdi)
	subl	$1, %ecx
	movb	%r11b, (%r10)
	movslq	%ecx, %rax
.L30:
	addq	$1, %rdi
	addl	$1, %r8d
	jmp	.L29
.L33:
	leal	-1(%r8), %eax
	movl	%ecx, 52(%rsp)
	movl	%eax, 24(%rsp)
	cmpl	%eax, %r14d
	jl	.L123
.L42:
	movl	52(%rsp), %eax
	addl	$1, %eax
	movl	%eax, %r14d
	cmpl	%eax, 20(%rsp)
	jle	.L35
	movslq	%eax, %rbx
	jmp	.L26
.L123:
	cltq
	movq	%r9, %r8
	movq	%rax, 72(%rsp)
.L34:
	movl	24(%rsp), %ecx
	movl	%r14d, %r10d
	leaq	(%r8,%rbx), %rdi
	movl	%ecx, %edx
	addl	%r14d, %edx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r8,%rax), %esi
	movq	72(%rsp), %rax
	.p2align 4,,10
	.p2align 3
.L36:
	movzbl	(%rdi), %r11d
	leaq	(%r8,%rax), %r9
	movzbl	(%r9), %edx
	cmpb	%r11b, %sil
	jg	.L37
	cmpb	%dl, %sil
	jge	.L38
	leaq	-1(%r8,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L39:
	movq	%rax, %r9
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %ecx
	cmpb	%dl, %sil
	jl	.L39
.L38:
	cmpl	%r10d, %ecx
	jle	.L40
	movb	%dl, (%rdi)
	subl	$1, %ecx
	movb	%r11b, (%r9)
	movslq	%ecx, %rax
.L37:
	addq	$1, %rdi
	addl	$1, %r10d
	jmp	.L36
.L40:
	leal	-1(%r10), %eax
	movl	%ecx, 56(%rsp)
	movl	%eax, 28(%rsp)
	cmpl	%eax, %r14d
	jl	.L124
	movl	56(%rsp), %eax
	addl	$1, %eax
	movl	%eax, %r14d
	cmpl	%eax, 24(%rsp)
	jle	.L114
.L134:
	movslq	%eax, %rbx
	jmp	.L34
.L124:
	cltq
	movq	%r8, %r9
	movq	%rax, 64(%rsp)
.L41:
	movl	28(%rsp), %ecx
	movl	%r14d, %r8d
	leaq	(%r9,%rbx), %rdi
	movl	%ecx, %edx
	addl	%r14d, %edx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r9,%rax), %esi
	movq	64(%rsp), %rax
	.p2align 4,,10
	.p2align 3
.L43:
	movzbl	(%rdi), %r11d
	leaq	(%r9,%rax), %r10
	movzbl	(%r10), %edx
	cmpb	%r11b, %sil
	jg	.L44
	cmpb	%dl, %sil
	jge	.L45
	leaq	-1(%r9,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L46:
	movq	%rax, %r10
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %ecx
	cmpb	%dl, %sil
	jl	.L46
.L45:
	cmpl	%ecx, %r8d
	jge	.L47
	movb	%dl, (%rdi)
	subl	$1, %ecx
	movb	%r11b, (%r10)
	movslq	%ecx, %rax
.L44:
	addq	$1, %rdi
	addl	$1, %r8d
	jmp	.L43
.L47:
	leal	-1(%r8), %eax
	movl	%ecx, 60(%rsp)
	movl	%eax, 16(%rsp)
	cmpl	%eax, %r14d
	jl	.L125
	movl	60(%rsp), %eax
	addl	$1, %eax
	movl	%eax, %r14d
	cmpl	%eax, 28(%rsp)
	jle	.L115
.L133:
	movslq	%eax, %rbx
	jmp	.L41
.L125:
	cltq
	movq	%r9, %r15
	movq	%rax, 40(%rsp)
.L48:
	movl	16(%rsp), %r8d
	movl	%r14d, %r10d
	leaq	(%r15,%rbx), %rdi
	movl	%r8d, %edx
	addl	%r14d, %edx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r15,%rax), %esi
	movq	40(%rsp), %rax
	.p2align 4,,10
	.p2align 3
.L50:
	movzbl	(%rdi), %r9d
	leaq	(%r15,%rax), %rcx
	movzbl	(%rcx), %edx
	cmpb	%r9b, %sil
	jg	.L51
	cmpb	%dl, %sil
	jge	.L52
	leaq	-1(%r15,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L53:
	movq	%rax, %rcx
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %r8d
	cmpb	%dl, %sil
	jl	.L53
.L52:
	cmpl	%r8d, %r10d
	jge	.L54
	movb	%dl, (%rdi)
	subl	$1, %r8d
	movb	%r9b, (%rcx)
	movslq	%r8d, %rax
.L51:
	addq	$1, %rdi
	addl	$1, %r10d
	jmp	.L50
.L54:
	leal	-1(%r10), %eax
	movl	%eax, 4(%rsp)
	cmpl	%eax, %r14d
	jl	.L126
	leal	1(%r8), %eax
	movl	%eax, %r14d
	cmpl	%eax, 16(%rsp)
	jle	.L116
.L132:
	movslq	%eax, %rbx
	jmp	.L48
.L126:
	cltq
	movl	%r8d, 92(%rsp)
	movq	%rax, 32(%rsp)
.L55:
	movl	4(%rsp), %r9d
	movl	%r14d, %r8d
	leaq	(%r15,%rbx), %rdi
	movl	%r9d, %edx
	addl	%r14d, %edx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r15,%rax), %esi
	movq	32(%rsp), %rax
	.p2align 4,,10
	.p2align 3
.L57:
	movzbl	(%rdi), %r10d
	leaq	(%r15,%rax), %rcx
	movzbl	(%rcx), %edx
	cmpb	%r10b, %sil
	jg	.L58
	cmpb	%dl, %sil
	jge	.L59
	leaq	-1(%r15,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L60:
	movq	%rax, %rcx
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %r9d
	cmpb	%dl, %sil
	jl	.L60
.L59:
	cmpl	%r9d, %r8d
	jge	.L61
	movb	%dl, (%rdi)
	subl	$1, %r9d
	movb	%r10b, (%rcx)
	movslq	%r9d, %rax
.L58:
	addq	$1, %rdi
	addl	$1, %r8d
	jmp	.L57
.L61:
	leal	-1(%r8), %eax
	movl	%eax, (%rsp)
	cmpl	%eax, %r14d
	jl	.L127
	leal	1(%r9), %eax
	movl	%eax, %r14d
	cmpl	%eax, 4(%rsp)
	jle	.L117
.L131:
	movslq	%eax, %rbx
	jmp	.L55
.L127:
	cltq
	movl	%r9d, 96(%rsp)
	movl	%r14d, %r10d
	movq	%rax, 8(%rsp)
.L62:
	movl	(%rsp), %r12d
	leaq	(%r15,%rbx), %rdi
	movl	%r10d, %r14d
	leal	(%r12,%r10), %edx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r15,%rax), %esi
	movq	8(%rsp), %rax
	.p2align 4,,10
	.p2align 3
.L64:
	movzbl	(%rdi), %r8d
	leaq	(%r15,%rax), %rcx
	movzbl	(%rcx), %edx
	cmpb	%r8b, %sil
	jg	.L65
	cmpb	%dl, %sil
	jge	.L66
	leaq	-1(%r15,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L67:
	movq	%rax, %rcx
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %r12d
	cmpb	%dl, %sil
	jl	.L67
.L66:
	cmpl	%r12d, %r14d
	jge	.L68
	movb	%dl, (%rdi)
	subl	$1, %r12d
	movb	%r8b, (%rcx)
	movslq	%r12d, %rax
.L65:
	addq	$1, %rdi
	addl	$1, %r14d
	jmp	.L64
.L68:
	subl	$1, %r14d
	cmpl	%r14d, %r10d
	jl	.L128
	leal	1(%r12), %r10d
	cmpl	%r10d, (%rsp)
	jle	.L118
.L130:
	movslq	%r10d, %rbx
	jmp	.L62
.L128:
	movl	%r12d, 100(%rsp)
	movslq	%r14d, %rax
	movq	%r15, %r9
	movq	%rax, %r15
.L69:
	leal	(%r14,%r10), %edx
	leaq	(%r9,%rbx), %r8
	movl	%r10d, %r13d
	movl	%r14d, %ebp
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r9,%rax), %esi
	movq	%r15, %rax
	.p2align 4,,10
	.p2align 3
.L71:
	movzbl	(%r8), %edi
	leaq	(%r9,%rax), %rcx
	movzbl	(%rcx), %edx
	cmpb	%dil, %sil
	jg	.L72
	cmpb	%dl, %sil
	jge	.L73
	leaq	-1(%r9,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L74:
	movq	%rax, %rcx
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %ebp
	cmpb	%dl, %sil
	jl	.L74
.L73:
	cmpl	%ebp, %r13d
	jge	.L75
	movb	%dl, (%r8)
	subl	$1, %ebp
	movb	%dil, (%rcx)
	movslq	%ebp, %rax
.L72:
	addq	$1, %r8
	addl	$1, %r13d
	jmp	.L71
.L75:
	subl	$1, %r13d
	movslq	%r13d, %r12
	cmpl	%r13d, %r10d
	jl	.L76
.L84:
	leal	1(%rbp), %r10d
	cmpl	%r10d, %r14d
	jle	.L119
	movslq	%r10d, %rbx
	jmp	.L69
	.p2align 4,,10
	.p2align 3
.L82:
	leal	-1(%r8), %edx
	cmpl	%edx, %r10d
	jl	.L129
.L83:
	leal	1(%rbx), %r10d
	cmpl	%r10d, %r13d
	jle	.L84
	movslq	%r10d, %rbx
.L76:
	leal	0(%r13,%r10), %edx
	leaq	(%r9,%rbx), %rdi
	movl	%r10d, %r8d
	movl	%r13d, %ebx
	movl	%edx, %eax
	shrl	$31, %eax
	addl	%edx, %eax
	sarl	%eax
	cltq
	movzbl	(%r9,%rax), %esi
	movq	%r12, %rax
	.p2align 4,,10
	.p2align 3
.L78:
	movzbl	(%rdi), %r11d
	leaq	(%r9,%rax), %rcx
	movzbl	(%rcx), %edx
	cmpb	%r11b, %sil
	jg	.L79
	cmpb	%dl, %sil
	jge	.L80
	leaq	-1(%r9,%rax), %rax
	.p2align 4,,10
	.p2align 3
.L81:
	movq	%rax, %rcx
	movzbl	(%rax), %edx
	subq	$1, %rax
	subl	$1, %ebx
	cmpb	%dl, %sil
	jl	.L81
.L80:
	cmpl	%ebx, %r8d
	jge	.L82
	movb	%dl, (%rdi)
	subl	$1, %ebx
	movb	%r11b, (%rcx)
	movslq	%ebx, %rax
.L79:
	addq	$1, %rdi
	addl	$1, %r8d
	jmp	.L78
.L119:
	movl	100(%rsp), %r12d
	movq	%r9, %r15
	leal	1(%r12), %r10d
	cmpl	%r10d, (%rsp)
	jg	.L130
.L118:
	movl	96(%rsp), %r9d
	leal	1(%r9), %eax
	movl	%eax, %r14d
	cmpl	%eax, 4(%rsp)
	jg	.L131
.L117:
	movl	92(%rsp), %r8d
	leal	1(%r8), %eax
	movl	%eax, %r14d
	cmpl	%eax, 16(%rsp)
	jg	.L132
.L116:
	movl	60(%rsp), %eax
	movq	%r15, %r9
	addl	$1, %eax
	movl	%eax, %r14d
	cmpl	%eax, 28(%rsp)
	jg	.L133
.L115:
	movl	56(%rsp), %eax
	movq	%r9, %r8
	addl	$1, %eax
	movl	%eax, %r14d
	cmpl	%eax, 24(%rsp)
	jg	.L134
.L114:
	movq	%r8, %r9
	jmp	.L42
.L129:
	movq	%r9, %rdi
	movl	%r10d, %esi
	movq	%r9, 104(%rsp)
	call	quicksort
	movq	104(%rsp), %r9
	jmp	.L83
	.cfi_endproc
.LFE54:
	.size	quicksort, .-quicksort
	.p2align 4
	.globl	is_prime
	.type	is_prime, @function
is_prime:
.LFB55:
	.cfi_startproc
	endbr64
	xorl	%edx, %edx
	cmpl	$1, %edi
	jle	.L135
	cmpl	$3, %edi
	jle	.L140
	testb	$1, %dil
	je	.L135
	movl	$2, %ecx
	jmp	.L137
	.p2align 4,,10
	.p2align 3
.L138:
	movl	%edi, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L135
.L137:
	addl	$1, %ecx
	movl	%ecx, %eax
	imull	%ecx, %eax
	cmpl	%edi, %eax
	jle	.L138
.L140:
	movl	$1, %edx
.L135:
	movl	%edx, %eax
	ret
	.cfi_endproc
.LFE55:
	.size	is_prime, .-is_prime
	.p2align 4
	.globl	is_substr
	.type	is_substr, @function
is_substr:
.LFB56:
	.cfi_startproc
	endbr64
	pushq	%r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	movq	%rdi, %r12
	movq	%rsi, %rdi
	pushq	%rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	movl	%edx, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	movq	%rsi, %rbx
	call	strlen@PLT
	movslq	%ebp, %rdx
	xorl	%ecx, %ecx
	leaq	(%r12,%rdx), %rsi
	jmp	.L146
	.p2align 4,,10
	.p2align 3
.L148:
	movzbl	(%rsi,%rcx), %r8d
	addq	$1, %rcx
	cmpb	-1(%rbx,%rcx), %r8b
	jne	.L149
.L146:
	cmpq	%rcx, %rax
	jne	.L148
	xorl	%eax, %eax
	cmpb	$0, (%r12,%rdx)
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	setne	%al
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L149:
	.cfi_restore_state
	popq	%rbx
	.cfi_def_cfa_offset 24
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 16
	popq	%r12
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE56:
	.size	is_substr, .-is_substr
	.p2align 4
	.globl	factorize
	.type	factorize, @function
factorize:
.LFB57:
	.cfi_startproc
	endbr64
	movl	%edx, %r8d
	cmpl	$1, %edx
	jle	.L156
	xorl	%r9d, %r9d
	movl	$2, %ecx
	.p2align 4,,10
	.p2align 3
.L155:
	movl	%r8d, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	jne	.L153
.L159:
	movl	%eax, %r8d
	movl	%ecx, (%rdi,%r9,4)
	leal	1(%r9), %eax
	cmpl	%ecx, %r8d
	jl	.L158
	movslq	%eax, %r9
	movl	%r8d, %eax
	cltd
	idivl	%ecx
	testl	%edx, %edx
	je	.L159
.L153:
	addl	$1, %ecx
	cmpl	%r8d, %ecx
	jle	.L155
	movl	%r9d, (%rsi)
	ret
	.p2align 4,,10
	.p2align 3
.L158:
	movl	%eax, %r9d
	movl	%r9d, (%rsi)
	ret
	.p2align 4,,10
	.p2align 3
.L156:
	xorl	%r9d, %r9d
	movl	%r9d, (%rsi)
	ret
	.cfi_endproc
.LFE57:
	.size	factorize, .-factorize
	.p2align 4
	.globl	nextperm
	.type	nextperm, @function
nextperm:
.LFB58:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	movslq	%esi, %r12
	leal	-1(%r12), %r14d
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	movslq	%r14d, %rdx
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	movl	%r14d, %r8d
	leaq	0(,%rdx,4), %rbp
	movl	$0, (%rdi)
	leaq	4(%rbp), %rbx
	leaq	(%rdi,%rbp), %rcx
	leaq	(%rdi,%rbx), %r13
	movl	(%rcx), %eax
	movl	0(%r13), %r11d
	cmpl	%r11d, %eax
	jl	.L161
	movl	-4(%r13), %eax
	movq	%r12, %r10
	leaq	-4(%rdi,%rdx,4), %rsi
	.p2align 4,,10
	.p2align 3
.L162:
	movl	%eax, %r9d
	movl	(%rsi), %eax
	movl	%r8d, %edx
	movq	%rsi, %rcx
	leal	-1(%r8), %r8d
	leaq	-4(%rsi), %rsi
	cmpl	%r9d, %eax
	jge	.L162
	testl	%r8d, %r8d
	je	.L160
	cmpl	%r11d, %eax
	jl	.L164
	leaq	-4(%rdi,%r12,4), %rsi
	.p2align 4,,10
	.p2align 3
.L165:
	movq	%rsi, %r13
	movl	(%rsi), %r11d
	subq	$4, %rsi
	cmpl	%r11d, %eax
	jge	.L165
.L164:
	movl	%r11d, (%rcx)
	movl	%eax, 0(%r13)
	cmpl	%edx, %r10d
	jle	.L171
	subl	%edx, %r14d
	movslq	%edx, %r8
	leaq	8(%rbp), %r9
	movl	%r14d, %r13d
	leaq	0(,%r8,4), %rsi
	shrl	%r13d
	leal	1(%r13), %eax
	leaq	(%rax,%r8), %rcx
	movq	%rax, %r11
	negq	%rax
	salq	$2, %rcx
	leaq	(%r9,%rax,4), %rax
	cmpq	%rax, %rcx
	setle	%al
	cmpq	%r9, %rsi
	setge	%cl
	orb	%cl, %al
	je	.L184
	cmpl	$1, %r14d
	jbe	.L184
	cmpl	$5, %r14d
	jbe	.L176
	movl	%r11d, %ecx
	addq	%rdi, %rsi
	leaq	-8(%rdi,%rbp), %rax
	shrl	$2, %ecx
	leal	-1(%rcx), %r9d
	leaq	16(%rsi), %rcx
	salq	$4, %r9
	addq	%rcx, %r9
	jmp	.L169
	.p2align 4,,10
	.p2align 3
.L194:
	addq	$16, %rcx
.L169:
	movdqu	(%rsi), %xmm0
	movdqu	(%rax), %xmm2
	subq	$16, %rax
	pshufd	$27, %xmm2, %xmm1
	pshufd	$27, %xmm0, %xmm0
	movups	%xmm1, (%rsi)
	movq	%rcx, %rsi
	movups	%xmm0, 16(%rax)
	cmpq	%r9, %rcx
	jne	.L194
	movl	%r11d, %eax
	andl	$-4, %eax
	addl	%eax, %edx
	subl	%eax, %r10d
	cmpl	%eax, %r11d
	je	.L171
.L168:
	subl	%eax, %r11d
	cmpl	%eax, %r13d
	je	.L173
	addq	%rax, %r8
	notq	%rax
	leaq	(%rbx,%rax,4), %rax
	leaq	(%rdi,%r8,4), %rcx
	addq	%rdi, %rax
	movq	(%rcx), %xmm0
	movq	(%rax), %xmm1
	pshufd	$225, %xmm0, %xmm0
	pshufd	$225, %xmm1, %xmm1
	movq	%xmm1, (%rcx)
	movq	%xmm0, (%rax)
	movl	%r11d, %eax
	andl	$-2, %eax
	addl	%eax, %edx
	subl	%eax, %r10d
	cmpl	%eax, %r11d
	je	.L171
.L173:
	movslq	%edx, %rdx
	movslq	%r10d, %r10
	leaq	(%rdi,%rdx,4), %rdx
	leaq	(%rdi,%r10,4), %rax
	movl	(%rdx), %ecx
	movl	(%rax), %esi
	movl	%esi, (%rdx)
	movl	%ecx, (%rax)
.L171:
	movl	$1, %r8d
.L160:
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 40
	movl	%r8d, %eax
	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
	ret
	.p2align 4,,10
	.p2align 3
.L184:
	.cfi_restore_state
	movl	(%rdi,%r8,4), %eax
	movl	(%rdi,%r12,4), %edx
	movl	%edx, (%rdi,%r8,4)
	addq	$1, %r8
	movl	%eax, (%rdi,%r12,4)
	subq	$1, %r12
	cmpl	%r8d, %r12d
	jg	.L184
	jmp	.L171
	.p2align 4,,10
	.p2align 3
.L161:
	testl	%r14d, %r14d
	je	.L160
	movl	%r11d, (%rcx)
	movl	%eax, 0(%r13)
	jmp	.L171
.L176:
	xorl	%eax, %eax
	jmp	.L168
	.cfi_endproc
.LFE58:
	.size	nextperm, .-nextperm
	.p2align 4
	.globl	comb
	.type	comb, @function
comb:
.LFB59:
	.cfi_startproc
	endbr64
	testl	%edi, %edi
	jle	.L229
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movq	%rdx, %r8
	movq	%rdx, %rcx
	xorl	%eax, %eax
	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
	movslq	%esi, %r12
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	leaq	0(,%r12,4), %rsi
	movl	%edi, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	leaq	4(%rsi), %rdi
	.p2align 4,,10
	.p2align 3
.L199:
	addl	$1, %eax
	movl	$1, (%rcx)
	addq	%rsi, %rcx
	movl	$1, (%rdx)
	addq	%rdi, %rdx
	cmpl	%eax, %ebp
	jne	.L199
	cmpl	$1, %ebp
	jle	.L195
	cmpl	$2, %ebp
	je	.L195
	leaq	1(%r12), %r13
	subl	$1, %ebp
	movq	%r12, %r9
	movl	$1, %edi
	leaq	0(,%r12,4), %rbx
	movl	$2, %r10d
	leaq	(%r8,%rbx), %rdx
	leaq	4(%rbx), %r11
	movq	%rdx, -16(%rsp)
	.p2align 4,,10
	.p2align 3
.L210:
	leaq	(%rdx,%rbx), %rsi
	cmpq	$12, %rbx
	jbe	.L214
	cmpl	$1, %edi
	je	.L214
	leal	-1(%rdi), %eax
	cmpl	$2, %eax
	jbe	.L213
	movq	-16(%rsp), %rax
	movl	%edi, %ecx
	leaq	(%r8,%r11), %r15
	shrl	$2, %ecx
	leaq	(%r11,%rax), %r14
	salq	$4, %rcx
	xorl	%eax, %eax
	.p2align 4,,10
	.p2align 3
.L204:
	movdqu	(%rdx,%rax), %xmm0
	movdqu	(%r15,%rax), %xmm2
	paddd	%xmm2, %xmm0
	movups	%xmm0, (%r14,%rax)
	addq	$16, %rax
	cmpq	%rcx, %rax
	jne	.L204
	movl	%edi, %ecx
	andl	$-4, %ecx
	leal	1(%rcx), %eax
	cmpl	%edi, %ecx
	je	.L209
.L203:
	movl	%edi, %r15d
	subl	%ecx, %r15d
	cmpl	$1, %r15d
	je	.L206
	leaq	(%r9,%rcx), %r14
	movq	4(%r8,%r14,4), %xmm0
	movq	(%r8,%r14,4), %xmm1
	leaq	0(%r13,%r9), %r14
	addq	%rcx, %r14
	movl	%r15d, %ecx
	paddd	%xmm1, %xmm0
	andl	$-2, %ecx
	addl	%ecx, %eax
	movq	%xmm0, (%r8,%r14,4)
	cmpl	%ecx, %r15d
	je	.L209
.L206:
	movslq	%eax, %rcx
	subl	$1, %eax
	cltq
	movl	(%rdx,%rcx,4), %r14d
	addl	(%rdx,%rax,4), %r14d
	movl	%r14d, (%rsi,%rcx,4)
.L209:
	addl	$1, %edi
	movq	%rsi, %rdx
	addq	$1, %r10
	addq	%rbx, %r11
	addq	%r12, %r9
	cmpl	%edi, %ebp
	jne	.L210
.L195:
	popq	%rbx
	.cfi_remember_state
	.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
.L214:
	.cfi_restore_state
	movl	$1, %eax
	.p2align 4,,10
	.p2align 3
.L208:
	movl	(%rdx,%rax,4), %ecx
	addl	-4(%rdx,%rax,4), %ecx
	movl	%ecx, (%rsi,%rax,4)
	addq	$1, %rax
	cmpq	%r10, %rax
	jne	.L208
	jmp	.L209
.L213:
	xorl	%ecx, %ecx
	movl	$1, %eax
	jmp	.L203
.L229:
	.cfi_def_cfa_offset 8
	.cfi_restore 3
	.cfi_restore 6
	.cfi_restore 12
	.cfi_restore 13
	.cfi_restore 14
	.cfi_restore 15
	ret
	.cfi_endproc
.LFE59:
	.size	comb, .-comb
	.p2align 4
	.globl	abs_val
	.type	abs_val, @function
abs_val:
.LFB60:
	.cfi_startproc
	endbr64
	movl	%edi, %edx
	movl	%esi, %eax
	subl	%esi, %edx
	subl	%edi, %eax
	cmpl	%esi, %edi
	cmovg	%edx, %eax
	ret
	.cfi_endproc
.LFE60:
	.size	abs_val, .-abs_val
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%s"
.LC1:
	.string	""
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB61:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	leaq	.LC0(%rip), %rbp
	movq	%rbp, %rdi
	subq	$32, %rsp
	.cfi_def_cfa_offset 48
	movq	%fs:40, %rax
	movq	%rax, 24(%rsp)
	xorl	%eax, %eax
	leaq	15(%rsp), %rsi
	call	__isoc99_scanf@PLT
	leaq	18(%rsp), %rsi
	movq	%rbp, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	leaq	21(%rsp), %rsi
	movq	%rbp, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movsbl	15(%rsp), %edi
	call	putchar@PLT
	movsbl	19(%rsp), %edi
	call	putchar@PLT
	movsbl	23(%rsp), %edi
	call	putchar@PLT
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L236
	addq	$32, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 16
	xorl	%eax, %eax
	popq	%rbp
	.cfi_def_cfa_offset 8
	ret
.L236:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE61:
	.size	main, .-main
	.globl	inf
	.section	.rodata
	.align 4
	.type	inf, @object
	.size	inf, 4
inf:
	.long	1012345678
	.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 <string.h>
#include <stdlib.h>

typedef long long ll;
typedef char keytype;

int gcd(int a, int b){ return (a % b) ? gcd(b, a % b) : b;}
int lcm(int a, int b){ return (a / gcd(a, b)) * b;}

/* a[0], ..., a[n-1] の数の最大公約数 */
int ngcd(int n, int a[])
{
    int i, d;

    d = a[0];
    for (i = 1; i < n && d != 1; i++)
        d = gcd(a[i], d);
    return d;
}

void quicksort(keytype a[], int first, int last)
{
    int i, j;
    keytype x, t;

    x = a[(first + last) / 2];
    i = first;  j = last;
    for ( ; ; ) {
        while (a[i] < x) i++;
        while (x < a[j]) j--;
        if (i >= j) break;
        t = a[i];  a[i] = a[j];  a[j] = t;
        i++;  j--;
    }
    if (first  < i - 1) quicksort(a, first , i - 1);
    if (j + 1 < last) quicksort(a, j + 1, last);
}

int is_prime(int x){
    if(x <= 1) return 0;
    for(int i = 2; i * i <= x; i++){
        if(x % i == 0) return 0;
    }
    return 1;
}

int is_substr(char s[], char t[], int i){
    int flag = 1;

    if(s[i] == '\0') flag = 0;

    for(int j = 0; j < strlen(t); ++j, ++i){
        if(s[i] != t[j]){
            flag = 0;
            break;
        }
    }
    return flag;
}

// factor list, number of factors, natural number
void factorize(int ftr[], int *num, int n){
    int a = 2, cnt = 0;

    while(n >= a){
        if(n % a == 0){
            n = n / a;
            ftr[cnt++] = a;
        }else{
            a++;
        }
    }
    *num = cnt;
}

//#define N 5
//int p[N + 1];
int nextperm(int p[], int N)  /* 辞書式順序で次の順列 */
{
    int i, j, t;

    i = N - 1;
    p[0] = 0;  /* 番人 */
    while (p[i] >= p[i + 1]) i--;
    if (i == 0) return 0;  /* 完了 */
    j = N;
    while (p[i] >= p[j]) j--;
    t = p[i];  p[i] = p[j];  p[j] = t;
    i++;  j = N;
    while (i < j) {
        t = p[i];  p[i] = p[j];  p[j] = t;  i++;  j--;
    }
    return 1;  /* 未了 */
}

void comb(int size1, int size2, int v[size1][size2]){
  for(int i = 0; i < size1; i++){
    v[i][0] = 1;
    v[i][i] = 1;
  }
  for(int k = 1; k < size1; k++){
    for(int j = 1; j < k; j++){
      v[k][j] = (v[k-1][j-1] + v[k-1][j]);
    }
  }
}

int abs_val(int a, int b){
    if(a > b) return a - b;
    else return b - a;
}

const int inf = 1012345678;
int main(){
    char c[3][3];

    for(int i = 0; i < 3; ++i){
        scanf("%s", c[i]);
    }

    for(int i = 0; i < 3; ++i){
        for(int j = 0; j < 3; ++j){
            if(i == j){
                printf("%c", c[i][j]);
            }
        }
    }
    puts("");

    return 0;
}

ant
obe
rfc
 ddu
cat
ion
 ant
obe
rcf
 ddu
cat
ioo
 ddu
cat
ooi
 una
obe
rcf
 edu
bau
ooi
 una
pbe
fdr
 una
bep
dfr
 ued
bau
oni

abc
 dan
 abf
 dao
 dai
 ubf
 eai
 ubr
 uer
 uai

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

typedef long long ll;
typedef char keytype;

int gcd(int a, int b){ return (a % b) ? gcd(b, a % b) : b;}
int lcm(int a, int b){ return (a / gcd(a, b)) * b;}

/* a[0], ..., a[n-1] の数の最大公約数 */
int ngcd(int n, int a[])
{
    int i, d;

    d = a[0];
    for (i = 1; i < n && d != 1; i++)
        d = gcd(a[i], d);
    return d;
}

void quicksort(keytype a[], int first, int last)
{
    int i, j;
    keytype x, t;

    x = a[(first + last) / 2];
    i = first;  j = last;
    for ( ; ; ) {
        while (a[i] < x) i++;
        while (x < a[j]) j--;
        if (i >= j) break;
        t = a[i];  a[i] = a[j];  a[j] = t;
        i++;  j--;
    }
    if (first  < i - 1) quicksort(a, first , i - 1);
    if (j + 1 < last) quicksort(a, j + 1, last);
}

int is_prime(int x){
    if(x <= 1) return 0;
    for(int i = 2; i * i <= x; i++){
        if(x % i == 0) return 0;
    }
    return 1;
}

int is_substr(char s[], char t[], int i){
    int flag = 1;

    if(s[i] == '\0') flag = 0;

    for(int j = 0; j < strlen(t); ++j, ++i){
        if(s[i] != t[j]){
            flag = 0;
            break;
        }
    }
    return flag;
}

// factor list, number of factors, natural number
void factorize(int ftr[], int *num, int n){
    int a = 2, cnt = 0;

    while(n >= a){
        if(n % a == 0){
            n = n / a;
            ftr[cnt++] = a;
        }else{
            a++;
        }
    }
    *num = cnt;
}

//#define N 5
//int p[N + 1];
int nextperm(int p[], int N)  /* 辞書式順序で次の順列 */
{
    int i, j, t;

    i = N - 1;
    p[0] = 0;  /* 番人 */
    while (p[i] >= p[i + 1]) i--;
    if (i == 0) return 0;  /* 完了 */
    j = N;
    while (p[i] >= p[j]) j--;
    t = p[i];  p[i] = p[j];  p[j] = t;
    i++;  j = N;
    while (i < j) {
        t = p[i];  p[i] = p[j];  p[j] = t;  i++;  j--;
    }
    return 1;  /* 未了 */
}

void comb(int size1, int size2, int v[size1][size2]){
  for(int i = 0; i < size1; i++){
    v[i][0] = 1;
    v[i][i] = 1;
  }
  for(int k = 1; k < size1; k++){
    for(int j = 1; j < k; j++){
      v[k][j] = (v[k-1][j-1] + v[k-1][j]);
    }
  }
}

int abs_val(int a, int b){
    if(a > b) return a - b;
    else return b - a;
}

const int inf = 1012345678;
int main(){
    char c[3][3];

    for(int i = 0; i < 3; ++i){
        scanf("%s", c[i]);
    }

    for(int i = 0; i < 3; ++i){
        for(int j = 0; j < 3; ++j){
            if(i == j){
                printf("%c", c[i][j]);
            }
        }
    }
    puts("");

    return 0;
}
```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	gcd
	.type	gcd, @function
gcd:
.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)
	movl	%esi, -8(%rbp)
	movl	-4(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	%edx, %eax
	testl	%eax, %eax
	je	.L2
	movl	-4(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	-8(%rbp), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	jmp	.L4
.L2:
	movl	-8(%rbp), %eax
.L4:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	gcd, .-gcd
	.globl	lcm
	.type	lcm, @function
lcm:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	%esi, -8(%rbp)
	movl	-8(%rbp), %edx
	movl	-4(%rbp), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	movl	%eax, %ecx
	movl	-4(%rbp), %eax
	cltd
	idivl	%ecx
	imull	-8(%rbp), %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	lcm, .-lcm
	.globl	ngcd
	.type	ngcd, @function
ngcd:
.LFB8:
	.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
	movl	%edi, -20(%rbp)
	movq	%rsi, -32(%rbp)
	movq	-32(%rbp), %rax
	movl	(%rax), %eax
	movl	%eax, -4(%rbp)
	movl	$1, -8(%rbp)
	jmp	.L8
.L10:
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-32(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %eax
	movl	-4(%rbp), %edx
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	movl	%eax, -4(%rbp)
	addl	$1, -8(%rbp)
.L8:
	movl	-8(%rbp), %eax
	cmpl	-20(%rbp), %eax
	jge	.L9
	cmpl	$1, -4(%rbp)
	jne	.L10
.L9:
	movl	-4(%rbp), %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	ngcd, .-ngcd
	.globl	quicksort
	.type	quicksort, @function
quicksort:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movl	%esi, -28(%rbp)
	movl	%edx, -32(%rbp)
	movl	-28(%rbp), %edx
	movl	-32(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, %edx
	shrl	$31, %edx
	addl	%edx, %eax
	sarl	%eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movb	%al, -10(%rbp)
	movl	-28(%rbp), %eax
	movl	%eax, -8(%rbp)
	movl	-32(%rbp), %eax
	movl	%eax, -4(%rbp)
	jmp	.L13
.L14:
	addl	$1, -8(%rbp)
.L13:
	movl	-8(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, -10(%rbp)
	jg	.L14
	jmp	.L15
.L16:
	subl	$1, -4(%rbp)
.L15:
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, -10(%rbp)
	jl	.L16
	movl	-8(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jge	.L23
	movl	-8(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movb	%al, -9(%rbp)
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	-8(%rbp), %edx
	movslq	%edx, %rcx
	movq	-24(%rbp), %rdx
	addq	%rcx, %rdx
	movzbl	(%rax), %eax
	movb	%al, (%rdx)
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movzbl	-9(%rbp), %eax
	movb	%al, (%rdx)
	addl	$1, -8(%rbp)
	subl	$1, -4(%rbp)
	jmp	.L13
.L23:
	nop
	movl	-8(%rbp), %eax
	subl	$1, %eax
	cmpl	%eax, -28(%rbp)
	jge	.L20
	movl	-8(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-28(%rbp), %ecx
	movq	-24(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	quicksort
.L20:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	cmpl	%eax, -32(%rbp)
	jle	.L24
	movl	-4(%rbp), %eax
	leal	1(%rax), %ecx
	movl	-32(%rbp), %edx
	movq	-24(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	quicksort
.L24:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	quicksort, .-quicksort
	.globl	is_prime
	.type	is_prime, @function
is_prime:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	cmpl	$1, -20(%rbp)
	jg	.L26
	movl	$0, %eax
	jmp	.L27
.L26:
	movl	$2, -4(%rbp)
	jmp	.L28
.L30:
	movl	-20(%rbp), %eax
	cltd
	idivl	-4(%rbp)
	movl	%edx, %eax
	testl	%eax, %eax
	jne	.L29
	movl	$0, %eax
	jmp	.L27
.L29:
	addl	$1, -4(%rbp)
.L28:
	movl	-4(%rbp), %eax
	imull	%eax, %eax
	cmpl	%eax, -20(%rbp)
	jge	.L30
	movl	$1, %eax
.L27:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	is_prime, .-is_prime
	.globl	is_substr
	.type	is_substr, @function
is_substr:
.LFB11:
	.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	$56, %rsp
	.cfi_offset 3, -24
	movq	%rdi, -40(%rbp)
	movq	%rsi, -48(%rbp)
	movl	%edx, -52(%rbp)
	movl	$1, -24(%rbp)
	movl	-52(%rbp), %eax
	movslq	%eax, %rdx
	movq	-40(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	testb	%al, %al
	jne	.L32
	movl	$0, -24(%rbp)
.L32:
	movl	$0, -20(%rbp)
	jmp	.L33
.L36:
	movl	-52(%rbp), %eax
	movslq	%eax, %rdx
	movq	-40(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %edx
	movl	-20(%rbp), %eax
	movslq	%eax, %rcx
	movq	-48(%rbp), %rax
	addq	%rcx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L34
	movl	$0, -24(%rbp)
	jmp	.L35
.L34:
	addl	$1, -20(%rbp)
	addl	$1, -52(%rbp)
.L33:
	movl	-20(%rbp), %eax
	movslq	%eax, %rbx
	movq	-48(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	cmpq	%rax, %rbx
	jb	.L36
.L35:
	movl	-24(%rbp), %eax
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	is_substr, .-is_substr
	.globl	factorize
	.type	factorize, @function
factorize:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movq	%rsi, -32(%rbp)
	movl	%edx, -36(%rbp)
	movl	$2, -8(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L39
.L41:
	movl	-36(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	%edx, %eax
	testl	%eax, %eax
	jne	.L40
	movl	-36(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	%eax, -36(%rbp)
	movl	-4(%rbp), %eax
	leal	1(%rax), %edx
	movl	%edx, -4(%rbp)
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movl	-8(%rbp), %eax
	movl	%eax, (%rdx)
	jmp	.L39
.L40:
	addl	$1, -8(%rbp)
.L39:
	movl	-36(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jge	.L41
	movq	-32(%rbp), %rax
	movl	-4(%rbp), %edx
	movl	%edx, (%rax)
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	factorize, .-factorize
	.globl	nextperm
	.type	nextperm, @function
nextperm:
.LFB13:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movl	%esi, -28(%rbp)
	movl	-28(%rbp), %eax
	subl	$1, %eax
	movl	%eax, -12(%rbp)
	movq	-24(%rbp), %rax
	movl	$0, (%rax)
	jmp	.L43
.L44:
	subl	$1, -12(%rbp)
.L43:
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %edx
	movl	-12(%rbp), %eax
	cltq
	addq	$1, %rax
	leaq	0(,%rax,4), %rcx
	movq	-24(%rbp), %rax
	addq	%rcx, %rax
	movl	(%rax), %eax
	cmpl	%eax, %edx
	jge	.L44
	cmpl	$0, -12(%rbp)
	jne	.L45
	movl	$0, %eax
	jmp	.L46
.L45:
	movl	-28(%rbp), %eax
	movl	%eax, -8(%rbp)
	jmp	.L47
.L48:
	subl	$1, -8(%rbp)
.L47:
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %edx
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rcx
	movq	-24(%rbp), %rax
	addq	%rcx, %rax
	movl	(%rax), %eax
	cmpl	%eax, %edx
	jge	.L48
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %eax
	movl	%eax, -4(%rbp)
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	-12(%rbp), %edx
	movslq	%edx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-24(%rbp), %rdx
	addq	%rcx, %rdx
	movl	(%rax), %eax
	movl	%eax, (%rdx)
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rdx)
	addl	$1, -12(%rbp)
	movl	-28(%rbp), %eax
	movl	%eax, -8(%rbp)
	jmp	.L49
.L50:
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %eax
	movl	%eax, -4(%rbp)
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	-12(%rbp), %edx
	movslq	%edx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-24(%rbp), %rdx
	addq	%rcx, %rdx
	movl	(%rax), %eax
	movl	%eax, (%rdx)
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rdx)
	addl	$1, -12(%rbp)
	subl	$1, -8(%rbp)
.L49:
	movl	-12(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jl	.L50
	movl	$1, %eax
.L46:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	nextperm, .-nextperm
	.globl	comb
	.type	comb, @function
comb:
.LFB14:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%rbx
	.cfi_offset 3, -24
	movl	%edi, -52(%rbp)
	movl	%esi, -56(%rbp)
	movq	%rdx, -64(%rbp)
	movl	-56(%rbp), %eax
	movslq	%eax, %rdx
	subq	$1, %rdx
	movq	%rdx, -24(%rbp)
	movslq	%eax, %rdx
	movq	%rdx, %rcx
	movl	$0, %ebx
	movl	$0, -36(%rbp)
	jmp	.L52
.L53:
	movl	-36(%rbp), %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rcx, %rdx
	movl	$1, (%rdx)
	movl	-36(%rbp), %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rdx, %rcx
	movl	-36(%rbp), %edx
	movslq	%edx, %rdx
	movl	$1, (%rcx,%rdx,4)
	addl	$1, -36(%rbp)
.L52:
	movl	-36(%rbp), %edx
	cmpl	-52(%rbp), %edx
	jl	.L53
	movl	$1, -32(%rbp)
	jmp	.L54
.L57:
	movl	$1, -28(%rbp)
	jmp	.L55
.L56:
	movl	-32(%rbp), %edx
	subl	$1, %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rdx, %rcx
	movl	-28(%rbp), %edx
	subl	$1, %edx
	movslq	%edx, %rdx
	movl	(%rcx,%rdx,4), %edi
	movl	-32(%rbp), %edx
	subl	$1, %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rdx, %rcx
	movl	-28(%rbp), %edx
	movslq	%edx, %rdx
	movl	(%rcx,%rdx,4), %esi
	movl	-32(%rbp), %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rdx, %rcx
	addl	%edi, %esi
	movl	-28(%rbp), %edx
	movslq	%edx, %rdx
	movl	%esi, (%rcx,%rdx,4)
	addl	$1, -28(%rbp)
.L55:
	movl	-28(%rbp), %edx
	cmpl	-32(%rbp), %edx
	jl	.L56
	addl	$1, -32(%rbp)
.L54:
	movl	-32(%rbp), %edx
	cmpl	-52(%rbp), %edx
	jl	.L57
	nop
	nop
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	comb, .-comb
	.globl	abs_val
	.type	abs_val, @function
abs_val:
.LFB15:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -4(%rbp)
	movl	%esi, -8(%rbp)
	movl	-4(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jle	.L59
	movl	-4(%rbp), %eax
	subl	-8(%rbp), %eax
	jmp	.L60
.L59:
	movl	-8(%rbp), %eax
	subl	-4(%rbp), %eax
.L60:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	abs_val, .-abs_val
	.globl	inf
	.section	.rodata
	.align 4
	.type	inf, @object
	.size	inf, 4
inf:
	.long	1012345678
.LC0:
	.string	"%s"
.LC1:
	.string	""
	.text
	.globl	main
	.type	main, @function
main:
.LFB16:
	.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
	movl	$0, -32(%rbp)
	jmp	.L62
.L63:
	leaq	-17(%rbp), %rcx
	movl	-32(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	addq	%rcx, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -32(%rbp)
.L62:
	cmpl	$2, -32(%rbp)
	jle	.L63
	movl	$0, -28(%rbp)
	jmp	.L64
.L68:
	movl	$0, -24(%rbp)
	jmp	.L65
.L67:
	movl	-28(%rbp), %eax
	cmpl	-24(%rbp), %eax
	jne	.L66
	movl	-24(%rbp), %eax
	movslq	%eax, %rcx
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	addq	%rbp, %rax
	addq	%rcx, %rax
	subq	$17, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	%eax, %edi
	call	putchar@PLT
.L66:
	addl	$1, -24(%rbp)
.L65:
	cmpl	$2, -24(%rbp)
	jle	.L67
	addl	$1, -28(%rbp)
.L64:
	cmpl	$2, -28(%rbp)
	jle	.L68
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L70
	call	__stack_chk_fail@PLT
.L70:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.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	gcd
	.type	gcd, @function
gcd:
.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)
	movl	%esi, -8(%rbp)
	movl	-4(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	%edx, %eax
	testl	%eax, %eax
	je	.L2
	movl	-4(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	-8(%rbp), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	jmp	.L4
.L2:
	movl	-8(%rbp), %eax
.L4:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	gcd, .-gcd
	.globl	lcm
	.type	lcm, @function
lcm:
.LFB7:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movl	%edi, -4(%rbp)
	movl	%esi, -8(%rbp)
	movl	-8(%rbp), %edx
	movl	-4(%rbp), %eax
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	movl	%eax, %ecx
	movl	-4(%rbp), %eax
	cltd
	idivl	%ecx
	imull	-8(%rbp), %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	lcm, .-lcm
	.globl	ngcd
	.type	ngcd, @function
ngcd:
.LFB8:
	.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
	movl	%edi, -20(%rbp)
	movq	%rsi, -32(%rbp)
	movq	-32(%rbp), %rax
	movl	(%rax), %eax
	movl	%eax, -4(%rbp)
	movl	$1, -8(%rbp)
	jmp	.L8
.L10:
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-32(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %eax
	movl	-4(%rbp), %edx
	movl	%edx, %esi
	movl	%eax, %edi
	call	gcd
	movl	%eax, -4(%rbp)
	addl	$1, -8(%rbp)
.L8:
	movl	-8(%rbp), %eax
	cmpl	-20(%rbp), %eax
	jge	.L9
	cmpl	$1, -4(%rbp)
	jne	.L10
.L9:
	movl	-4(%rbp), %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	ngcd, .-ngcd
	.globl	quicksort
	.type	quicksort, @function
quicksort:
.LFB9:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$32, %rsp
	movq	%rdi, -24(%rbp)
	movl	%esi, -28(%rbp)
	movl	%edx, -32(%rbp)
	movl	-28(%rbp), %edx
	movl	-32(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, %edx
	shrl	$31, %edx
	addl	%edx, %eax
	sarl	%eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movb	%al, -10(%rbp)
	movl	-28(%rbp), %eax
	movl	%eax, -8(%rbp)
	movl	-32(%rbp), %eax
	movl	%eax, -4(%rbp)
	jmp	.L13
.L14:
	addl	$1, -8(%rbp)
.L13:
	movl	-8(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, -10(%rbp)
	jg	.L14
	jmp	.L15
.L16:
	subl	$1, -4(%rbp)
.L15:
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, -10(%rbp)
	jl	.L16
	movl	-8(%rbp), %eax
	cmpl	-4(%rbp), %eax
	jge	.L23
	movl	-8(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movb	%al, -9(%rbp)
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	-8(%rbp), %edx
	movslq	%edx, %rcx
	movq	-24(%rbp), %rdx
	addq	%rcx, %rdx
	movzbl	(%rax), %eax
	movb	%al, (%rdx)
	movl	-4(%rbp), %eax
	movslq	%eax, %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movzbl	-9(%rbp), %eax
	movb	%al, (%rdx)
	addl	$1, -8(%rbp)
	subl	$1, -4(%rbp)
	jmp	.L13
.L23:
	nop
	movl	-8(%rbp), %eax
	subl	$1, %eax
	cmpl	%eax, -28(%rbp)
	jge	.L20
	movl	-8(%rbp), %eax
	leal	-1(%rax), %edx
	movl	-28(%rbp), %ecx
	movq	-24(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	quicksort
.L20:
	movl	-4(%rbp), %eax
	addl	$1, %eax
	cmpl	%eax, -32(%rbp)
	jle	.L24
	movl	-4(%rbp), %eax
	leal	1(%rax), %ecx
	movl	-32(%rbp), %edx
	movq	-24(%rbp), %rax
	movl	%ecx, %esi
	movq	%rax, %rdi
	call	quicksort
.L24:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	quicksort, .-quicksort
	.globl	is_prime
	.type	is_prime, @function
is_prime:
.LFB10:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	cmpl	$1, -20(%rbp)
	jg	.L26
	movl	$0, %eax
	jmp	.L27
.L26:
	movl	$2, -4(%rbp)
	jmp	.L28
.L30:
	movl	-20(%rbp), %eax
	cltd
	idivl	-4(%rbp)
	movl	%edx, %eax
	testl	%eax, %eax
	jne	.L29
	movl	$0, %eax
	jmp	.L27
.L29:
	addl	$1, -4(%rbp)
.L28:
	movl	-4(%rbp), %eax
	imull	%eax, %eax
	cmpl	%eax, -20(%rbp)
	jge	.L30
	movl	$1, %eax
.L27:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	is_prime, .-is_prime
	.globl	is_substr
	.type	is_substr, @function
is_substr:
.LFB11:
	.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	$56, %rsp
	.cfi_offset 3, -24
	movq	%rdi, -40(%rbp)
	movq	%rsi, -48(%rbp)
	movl	%edx, -52(%rbp)
	movl	$1, -24(%rbp)
	movl	-52(%rbp), %eax
	movslq	%eax, %rdx
	movq	-40(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	testb	%al, %al
	jne	.L32
	movl	$0, -24(%rbp)
.L32:
	movl	$0, -20(%rbp)
	jmp	.L33
.L36:
	movl	-52(%rbp), %eax
	movslq	%eax, %rdx
	movq	-40(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %edx
	movl	-20(%rbp), %eax
	movslq	%eax, %rcx
	movq	-48(%rbp), %rax
	addq	%rcx, %rax
	movzbl	(%rax), %eax
	cmpb	%al, %dl
	je	.L34
	movl	$0, -24(%rbp)
	jmp	.L35
.L34:
	addl	$1, -20(%rbp)
	addl	$1, -52(%rbp)
.L33:
	movl	-20(%rbp), %eax
	movslq	%eax, %rbx
	movq	-48(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	cmpq	%rax, %rbx
	jb	.L36
.L35:
	movl	-24(%rbp), %eax
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	is_substr, .-is_substr
	.globl	factorize
	.type	factorize, @function
factorize:
.LFB12:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movq	%rsi, -32(%rbp)
	movl	%edx, -36(%rbp)
	movl	$2, -8(%rbp)
	movl	$0, -4(%rbp)
	jmp	.L39
.L41:
	movl	-36(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	%edx, %eax
	testl	%eax, %eax
	jne	.L40
	movl	-36(%rbp), %eax
	cltd
	idivl	-8(%rbp)
	movl	%eax, -36(%rbp)
	movl	-4(%rbp), %eax
	leal	1(%rax), %edx
	movl	%edx, -4(%rbp)
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movl	-8(%rbp), %eax
	movl	%eax, (%rdx)
	jmp	.L39
.L40:
	addl	$1, -8(%rbp)
.L39:
	movl	-36(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jge	.L41
	movq	-32(%rbp), %rax
	movl	-4(%rbp), %edx
	movl	%edx, (%rax)
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	factorize, .-factorize
	.globl	nextperm
	.type	nextperm, @function
nextperm:
.LFB13:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -24(%rbp)
	movl	%esi, -28(%rbp)
	movl	-28(%rbp), %eax
	subl	$1, %eax
	movl	%eax, -12(%rbp)
	movq	-24(%rbp), %rax
	movl	$0, (%rax)
	jmp	.L43
.L44:
	subl	$1, -12(%rbp)
.L43:
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %edx
	movl	-12(%rbp), %eax
	cltq
	addq	$1, %rax
	leaq	0(,%rax,4), %rcx
	movq	-24(%rbp), %rax
	addq	%rcx, %rax
	movl	(%rax), %eax
	cmpl	%eax, %edx
	jge	.L44
	cmpl	$0, -12(%rbp)
	jne	.L45
	movl	$0, %eax
	jmp	.L46
.L45:
	movl	-28(%rbp), %eax
	movl	%eax, -8(%rbp)
	jmp	.L47
.L48:
	subl	$1, -8(%rbp)
.L47:
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %edx
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rcx
	movq	-24(%rbp), %rax
	addq	%rcx, %rax
	movl	(%rax), %eax
	cmpl	%eax, %edx
	jge	.L48
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %eax
	movl	%eax, -4(%rbp)
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	-12(%rbp), %edx
	movslq	%edx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-24(%rbp), %rdx
	addq	%rcx, %rdx
	movl	(%rax), %eax
	movl	%eax, (%rdx)
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rdx)
	addl	$1, -12(%rbp)
	movl	-28(%rbp), %eax
	movl	%eax, -8(%rbp)
	jmp	.L49
.L50:
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	(%rax), %eax
	movl	%eax, -4(%rbp)
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rdx, %rax
	movl	-12(%rbp), %edx
	movslq	%edx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-24(%rbp), %rdx
	addq	%rcx, %rdx
	movl	(%rax), %eax
	movl	%eax, (%rdx)
	movl	-8(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	movq	-24(%rbp), %rax
	addq	%rax, %rdx
	movl	-4(%rbp), %eax
	movl	%eax, (%rdx)
	addl	$1, -12(%rbp)
	subl	$1, -8(%rbp)
.L49:
	movl	-12(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jl	.L50
	movl	$1, %eax
.L46:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	nextperm, .-nextperm
	.globl	comb
	.type	comb, @function
comb:
.LFB14:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	pushq	%rbx
	.cfi_offset 3, -24
	movl	%edi, -52(%rbp)
	movl	%esi, -56(%rbp)
	movq	%rdx, -64(%rbp)
	movl	-56(%rbp), %eax
	movslq	%eax, %rdx
	subq	$1, %rdx
	movq	%rdx, -24(%rbp)
	movslq	%eax, %rdx
	movq	%rdx, %rcx
	movl	$0, %ebx
	movl	$0, -36(%rbp)
	jmp	.L52
.L53:
	movl	-36(%rbp), %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rcx, %rdx
	movl	$1, (%rdx)
	movl	-36(%rbp), %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rdx, %rcx
	movl	-36(%rbp), %edx
	movslq	%edx, %rdx
	movl	$1, (%rcx,%rdx,4)
	addl	$1, -36(%rbp)
.L52:
	movl	-36(%rbp), %edx
	cmpl	-52(%rbp), %edx
	jl	.L53
	movl	$1, -32(%rbp)
	jmp	.L54
.L57:
	movl	$1, -28(%rbp)
	jmp	.L55
.L56:
	movl	-32(%rbp), %edx
	subl	$1, %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rdx, %rcx
	movl	-28(%rbp), %edx
	subl	$1, %edx
	movslq	%edx, %rdx
	movl	(%rcx,%rdx,4), %edi
	movl	-32(%rbp), %edx
	subl	$1, %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rdx, %rcx
	movl	-28(%rbp), %edx
	movslq	%edx, %rdx
	movl	(%rcx,%rdx,4), %esi
	movl	-32(%rbp), %edx
	movslq	%edx, %rcx
	movslq	%eax, %rdx
	imulq	%rcx, %rdx
	leaq	0(,%rdx,4), %rcx
	movq	-64(%rbp), %rdx
	addq	%rdx, %rcx
	addl	%edi, %esi
	movl	-28(%rbp), %edx
	movslq	%edx, %rdx
	movl	%esi, (%rcx,%rdx,4)
	addl	$1, -28(%rbp)
.L55:
	movl	-28(%rbp), %edx
	cmpl	-32(%rbp), %edx
	jl	.L56
	addl	$1, -32(%rbp)
.L54:
	movl	-32(%rbp), %edx
	cmpl	-52(%rbp), %edx
	jl	.L57
	nop
	nop
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	comb, .-comb
	.globl	abs_val
	.type	abs_val, @function
abs_val:
.LFB15:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -4(%rbp)
	movl	%esi, -8(%rbp)
	movl	-4(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jle	.L59
	movl	-4(%rbp), %eax
	subl	-8(%rbp), %eax
	jmp	.L60
.L59:
	movl	-8(%rbp), %eax
	subl	-4(%rbp), %eax
.L60:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	abs_val, .-abs_val
	.globl	inf
	.section	.rodata
	.align 4
	.type	inf, @object
	.size	inf, 4
inf:
	.long	1012345678
.LC0:
	.string	"%s"
.LC1:
	.string	""
	.text
	.globl	main
	.type	main, @function
main:
.LFB16:
	.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
	movl	$0, -32(%rbp)
	jmp	.L62
.L63:
	leaq	-17(%rbp), %rcx
	movl	-32(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	addq	%rcx, %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	addl	$1, -32(%rbp)
.L62:
	cmpl	$2, -32(%rbp)
	jle	.L63
	movl	$0, -28(%rbp)
	jmp	.L64
.L68:
	movl	$0, -24(%rbp)
	jmp	.L65
.L67:
	movl	-28(%rbp), %eax
	cmpl	-24(%rbp), %eax
	jne	.L66
	movl	-24(%rbp), %eax
	movslq	%eax, %rcx
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	%rdx, %rax
	addq	%rax, %rax
	addq	%rdx, %rax
	addq	%rbp, %rax
	addq	%rcx, %rax
	subq	$17, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	%eax, %edi
	call	putchar@PLT
.L66:
	addl	$1, -24(%rbp)
.L65:
	cmpl	$2, -24(%rbp)
	jle	.L67
	addl	$1, -28(%rbp)
.L64:
	cmpl	$2, -28(%rbp)
	jle	.L68
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L70
	call	__stack_chk_fail@PLT
.L70:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.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:
