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

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

#define MAX 100

int main(void)
{
    int i, j;

    char ring[MAX + 1];
    char must_make[MAX + 1];
    scanf("%s %s", ring, must_make);

    char ringring[MAX * 2 + 1];
    for (i = 0; (ringring[i] = ring[i]) != '\0'; i++) {
        ;
    }
    int len_ring = i;
    for (i = 0; (ringring[len_ring + i] = ring[i]) != '\0'; i++) {
        ;
    }

    for (i = 0; must_make[i] != '\0'; i++) {
        ;
    }
    int len_must_make = i;

    bool canMake = false;
    for (i = 0; i < len_ring; i++) {
        if (ringring[i] == must_make[0]) {
            for (j = 0; j < len_must_make; j++) {
                if (ringring[i + j] == must_make[j]) {
                    canMake = true;
                    continue;
                } else {
                    canMake = false;
                    break;
                }
            }
            if (canMake == true) {
                break;
            } else {
                continue;
            }
        }
    }

    if (canMake == true) {
        printf("Yes\n");
    } else {
        printf("No\n");
    }

    return 0;
}```

Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%s %s"
.LC1:
	.string	"Yes"
.LC2:
	.string	"No"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB23:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	leaq	.LC0(%rip), %rdi
	subq	$448, %rsp
	.cfi_def_cfa_offset 464
	movq	%fs:40, %rax
	movq	%rax, 440(%rsp)
	xorl	%eax, %eax
	movq	%rsp, %rbx
	leaq	112(%rsp), %rdx
	movq	%rbx, %rsi
	call	__isoc99_scanf@PLT
	movzbl	(%rsp), %r8d
	movb	%r8b, 224(%rsp)
	testb	%r8b, %r8b
	je	.L2
	movl	$1, %eax
	leaq	224(%rsp), %rdx
	.p2align 4,,10
	.p2align 3
.L3:
	movzbl	(%rbx,%rax), %ecx
	movl	%eax, %esi
	addq	$1, %rax
	movb	%cl, -1(%rax,%rdx)
	testb	%cl, %cl
	jne	.L3
	movslq	%esi, %rdi
	movl	$1, %eax
	movb	%r8b, 224(%rsp,%rdi)
	addq	%rdx, %rdi
	.p2align 4,,10
	.p2align 3
.L7:
	movzbl	(%rbx,%rax), %ecx
	movb	%cl, (%rdi,%rax)
	addq	$1, %rax
	testb	%cl, %cl
	jne	.L7
	movzbl	112(%rsp), %edi
	testb	%dil, %dil
	je	.L17
.L5:
	movl	$1, %eax
	leaq	111(%rsp), %rdx
	.p2align 4,,10
	.p2align 3
.L9:
	movl	%eax, %ecx
	addq	$1, %rax
	cmpb	$0, (%rdx,%rax)
	jne	.L9
	testl	%esi, %esi
	je	.L6
	leaq	224(%rsp), %rdx
.L8:
	movq	%rdx, %rax
	leaq	111(%rsp), %r9
	xorl	%edx, %edx
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L10:
	addl	$1, %edx
	addq	$1, %rax
	cmpl	%esi, %edx
	jge	.L6
.L14:
	cmpb	%dil, (%rax)
	jne	.L10
	movl	$1, %r8d
	testl	%ecx, %ecx
	je	.L10
.L11:
	cmpl	%r8d, %ecx
	jle	.L32
	movzbl	(%rax,%r8), %r10d
	addq	$1, %r8
	cmpb	(%r9,%r8), %r10b
	je	.L11
	addl	$1, %edx
	addq	$1, %rax
	cmpl	%esi, %edx
	jl	.L14
.L6:
	leaq	.LC2(%rip), %rdi
	call	puts@PLT
	jmp	.L13
.L32:
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
.L13:
	movq	440(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L33
	addq	$448, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 16
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
.L2:
	.cfi_restore_state
	movzbl	112(%rsp), %edi
	xorl	%esi, %esi
	testb	%dil, %dil
	jne	.L5
	jmp	.L6
.L17:
	xorl	%ecx, %ecx
	jmp	.L8
.L33:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE23:
	.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.
Optimized Assembly Code:

user
```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%s %s"
.LC1:
	.string	"Yes"
.LC2:
	.string	"No"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB23:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	leaq	.LC0(%rip), %rdi
	subq	$448, %rsp
	.cfi_def_cfa_offset 464
	movq	%fs:40, %rax
	movq	%rax, 440(%rsp)
	xorl	%eax, %eax
	movq	%rsp, %rbx
	leaq	112(%rsp), %rdx
	movq	%rbx, %rsi
	call	__isoc99_scanf@PLT
	movzbl	(%rsp), %r8d
	movb	%r8b, 224(%rsp)
	testb	%r8b, %r8b
	je	.L2
	movl	$1, %eax
	leaq	224(%rsp), %rdx
	.p2align 4,,10
	.p2align 3
.L3:
	movzbl	(%rbx,%rax), %ecx
	movl	%eax, %esi
	addq	$1, %rax
	movb	%cl, -1(%rax,%rdx)
	testb	%cl, %cl
	jne	.L3
	movslq	%esi, %rdi
	movl	$1, %eax
	movb	%r8b, 224(%rsp,%rdi)
	addq	%rdx, %rdi
	.p2align 4,,10
	.p2align 3
.L7:
	movzbl	(%rbx,%rax), %ecx
	movb	%cl, (%rdi,%rax)
	addq	$1, %rax
	testb	%cl, %cl
	jne	.L7
	movzbl	112(%rsp), %edi
	testb	%dil, %dil
	je	.L17
.L5:
	movl	$1, %eax
	leaq	111(%rsp), %rdx
	.p2align 4,,10
	.p2align 3
.L9:
	movl	%eax, %ecx
	addq	$1, %rax
	cmpb	$0, (%rdx,%rax)
	jne	.L9
	testl	%esi, %esi
	je	.L6
	leaq	224(%rsp), %rdx
.L8:
	movq	%rdx, %rax
	leaq	111(%rsp), %r9
	xorl	%edx, %edx
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L10:
	addl	$1, %edx
	addq	$1, %rax
	cmpl	%esi, %edx
	jge	.L6
.L14:
	cmpb	%dil, (%rax)
	jne	.L10
	movl	$1, %r8d
	testl	%ecx, %ecx
	je	.L10
.L11:
	cmpl	%r8d, %ecx
	jle	.L32
	movzbl	(%rax,%r8), %r10d
	addq	$1, %r8
	cmpb	(%r9,%r8), %r10b
	je	.L11
	addl	$1, %edx
	addq	$1, %rax
	cmpl	%esi, %edx
	jl	.L14
.L6:
	leaq	.LC2(%rip), %rdi
	call	puts@PLT
	jmp	.L13
.L32:
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
.L13:
	movq	440(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L33
	addq	$448, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 16
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
.L2:
	.cfi_restore_state
	movzbl	112(%rsp), %edi
	xorl	%esi, %esi
	testb	%dil, %dil
	jne	.L5
	jmp	.L6
.L17:
	xorl	%ecx, %ecx
	jmp	.L8
.L33:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE23:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
```
rule
```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%s %s"
.LC1:
	.string	"Yes"
.LC2:
	.string	"No"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB23:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	leaq	.LC0(%rip), %rdi
	subq	$448, %rsp
	.cfi_def_cfa_offset 464
	movq	%fs:40, %rax
	movq	%rax, 440(%rsp)
	xorl	%eax, %eax
	movq	%rsp, %rbx
	leaq	112(%rsp), %rdx
	movq	%rbx, %rsi
	call	__isoc99_scanf@PLT
	movzbl	(%rsp), %r8d
	movb	%r8b, 224(%rsp)
	testb	%r8b, %r8b
	je	.L2
	movl	$1, %eax
	leaq	224(%rsp), %rdx
	.p2align 4,,10
	.p2align 3
.L3:
	movzbl	(%rbx,%rax), %ecx
	movl	%eax, %esi
	addq	$1, %rax
	movb	%cl, -1(%rax,%rdx)
	testb	%cl, %cl
	jne	.L3
	movslq	%esi, %rdi
	movl	$1, %eax
	movb	%r8b, 224(%rsp,%rdi)
	addq	%rdx, %rdi
	.p2align 4,,10
	.p2align 3
.L7:
	movzbl	(%rbx,%rax), %ecx
	movb	%cl, (%rdi,%rax)
	addq	$1, %rax
	testb	%cl, %cl
	jne	.L7
	movzbl	112(%rsp), %edi
	testb	%dil, %dil
	je	.L17
.L5:
	movl	$1, %eax
	leaq	111(%rsp), %rdx
	.p2align 4,,10
	.p2align 3
.L9:
	movl	%eax, %ecx
	addq	$1, %rax
	cmpb	$0, (%rdx,%rax)
	jne	.L9
	testl	%esi, %esi
	je	.L6
	leaq	224(%rsp), %rdx
.L8:
	movq	%rdx, %rax
	leaq	111(%rsp), %r9
	xorl	%edx, %edx
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L10:
	addl	$1, %edx
	addq	$1, %rax
	cmpl	%esi, %edx
	jge	.L6
.L14:
	cmpb	%dil, (%rax)
	jne	.L10
	movl	$1, %r8d
	testl	%ecx, %ecx
	je	.L10
.L11:
	cmpl	%r8d, %ecx
	jle	.L32
	movzbl	(%rax,%r8), %r10d
	addq	$1, %r8
	cmpb	(%r9,%r8), %r10b
	je	.L11
	addl	$1, %edx
	addq	$1, %rax
	cmpl	%esi, %edx
	jl	.L14
.L6:
	leaq	.LC2(%rip), %rdi
	call	puts@PLT
	jmp	.L13
.L32:
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
.L13:
	movq	440(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L33
	addq	$448, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 16
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
.L2:
	.cfi_restore_state
	movzbl	112(%rsp), %edi
	xorl	%esi, %esi
	testb	%dil, %dil
	jne	.L5
	jmp	.L6
.L17:
	xorl	%ecx, %ecx
	jmp	.L8
.L33:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE23:
	.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:
```
```c
#include <stdio.h>
#include <stdbool.h>

#define MAX 100

int main(void)
{
    int i, j;

    char ring[MAX + 1];
    char must_make[MAX + 1];
    scanf("%s %s", ring, must_make);

    char ringring[MAX * 2 + 1];
    for (i = 0; (ringring[i] = ring[i]) != '\0'; i++) {
        ;
    }
    int len_ring = i;
    for (i = 0; (ringring[len_ring + i] = ring[i]) != '\0'; i++) {
        ;
    }

    for (i = 0; must_make[i] != '\0'; i++) {
        ;
    }
    int len_must_make = i;

    bool canMake = false;
    for (i = 0; i < len_ring; i++) {
        if (ringring[i] == must_make[0]) {
            for (j = 0; j < len_must_make; j++) {
                if (ringring[i + j] == must_make[j]) {
                    canMake = true;
                    continue;
                } else {
                    canMake = false;
                    break;
                }
            }
            if (canMake == true) {
                break;
            } else {
                continue;
            }
        }
    }

    if (canMake == true) {
        printf("Yes\n");
    } else {
        printf("No\n");
    }

    return 0;
}```
Given the following C code, your task is to generate highly optimized x86-64 assembly code.
C Code:

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

#define MAX 100

int main(void)
{
    int i, j;

    char ring[MAX + 1];
    char must_make[MAX + 1];
    scanf("%s %s", ring, must_make);

    char ringring[MAX * 2 + 1];
    for (i = 0; (ringring[i] = ring[i]) != '\0'; i++) {
        ;
    }
    int len_ring = i;
    for (i = 0; (ringring[len_ring + i] = ring[i]) != '\0'; i++) {
        ;
    }

    for (i = 0; must_make[i] != '\0'; i++) {
        ;
    }
    int len_must_make = i;

    bool canMake = false;
    for (i = 0; i < len_ring; i++) {
        if (ringring[i] == must_make[0]) {
            for (j = 0; j < len_must_make; j++) {
                if (ringring[i + j] == must_make[j]) {
                    canMake = true;
                    continue;
                } else {
                    canMake = false;
                    break;
                }
            }
            if (canMake == true) {
                break;
            } else {
                continue;
            }
        }
    }

    if (canMake == true) {
        printf("Yes\n");
    } else {
        printf("No\n");
    }

    return 0;
}```

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.
Optimized Assembly Code:

vanceknowledgetoad
edvanca
 vanceknowledgetoad
bdvanced
 vanceknowledgetoad
edvamca
 vanceknowledgetoad
cdvanced
 daotegdelwonkecnav
edvamca
 vanceknowmedgetoad
cdvanced
 daotegdelwonkecnav
advamce
 vbnceknowmedgetoad
cdvanced
 daovegdelwonkecnat
advamce
 vbnceknowledgetoad
cdvanced

No
 No
 No
 No
 No
 No
 No
 No
 No
 No

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

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

#define MAX 100

int main(void)
{
    int i, j;

    char ring[MAX + 1];
    char must_make[MAX + 1];
    scanf("%s %s", ring, must_make);

    char ringring[MAX * 2 + 1];
    for (i = 0; (ringring[i] = ring[i]) != '\0'; i++) {
        ;
    }
    int len_ring = i;
    for (i = 0; (ringring[len_ring + i] = ring[i]) != '\0'; i++) {
        ;
    }

    for (i = 0; must_make[i] != '\0'; i++) {
        ;
    }
    int len_must_make = i;

    bool canMake = false;
    for (i = 0; i < len_ring; i++) {
        if (ringring[i] == must_make[0]) {
            for (j = 0; j < len_must_make; j++) {
                if (ringring[i + j] == must_make[j]) {
                    canMake = true;
                    continue;
                } else {
                    canMake = false;
                    break;
                }
            }
            if (canMake == true) {
                break;
            } else {
                continue;
            }
        }
    }

    if (canMake == true) {
        printf("Yes\n");
    } else {
        printf("No\n");
    }

    return 0;
}```

Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%s %s"
.LC1:
	.string	"Yes"
.LC2:
	.string	"No"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB23:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	leaq	.LC0(%rip), %rdi
	subq	$448, %rsp
	.cfi_def_cfa_offset 464
	movq	%fs:40, %rax
	movq	%rax, 440(%rsp)
	xorl	%eax, %eax
	movq	%rsp, %rbx
	leaq	112(%rsp), %rdx
	movq	%rbx, %rsi
	call	__isoc99_scanf@PLT
	movzbl	(%rsp), %r8d
	movb	%r8b, 224(%rsp)
	testb	%r8b, %r8b
	je	.L2
	movl	$1, %eax
	leaq	224(%rsp), %rdx
	.p2align 4,,10
	.p2align 3
.L3:
	movzbl	(%rbx,%rax), %ecx
	movl	%eax, %esi
	addq	$1, %rax
	movb	%cl, -1(%rax,%rdx)
	testb	%cl, %cl
	jne	.L3
	movslq	%esi, %rdi
	movl	$1, %eax
	movb	%r8b, 224(%rsp,%rdi)
	addq	%rdx, %rdi
	.p2align 4,,10
	.p2align 3
.L7:
	movzbl	(%rbx,%rax), %ecx
	movb	%cl, (%rdi,%rax)
	addq	$1, %rax
	testb	%cl, %cl
	jne	.L7
	movzbl	112(%rsp), %edi
	testb	%dil, %dil
	je	.L17
.L5:
	movl	$1, %eax
	leaq	111(%rsp), %rdx
	.p2align 4,,10
	.p2align 3
.L9:
	movl	%eax, %ecx
	addq	$1, %rax
	cmpb	$0, (%rdx,%rax)
	jne	.L9
	testl	%esi, %esi
	je	.L6
	leaq	224(%rsp), %rdx
.L8:
	movq	%rdx, %rax
	leaq	111(%rsp), %r9
	xorl	%edx, %edx
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L10:
	addl	$1, %edx
	addq	$1, %rax
	cmpl	%esi, %edx
	jge	.L6
.L14:
	cmpb	%dil, (%rax)
	jne	.L10
	movl	$1, %r8d
	testl	%ecx, %ecx
	je	.L10
.L11:
	cmpl	%r8d, %ecx
	jle	.L32
	movzbl	(%rax,%r8), %r10d
	addq	$1, %r8
	cmpb	(%r9,%r8), %r10b
	je	.L11
	addl	$1, %edx
	addq	$1, %rax
	cmpl	%esi, %edx
	jl	.L14
.L6:
	leaq	.LC2(%rip), %rdi
	call	puts@PLT
	jmp	.L13
.L32:
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
.L13:
	movq	440(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L33
	addq	$448, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 16
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
.L2:
	.cfi_restore_state
	movzbl	112(%rsp), %edi
	xorl	%esi, %esi
	testb	%dil, %dil
	jne	.L5
	jmp	.L6
.L17:
	xorl	%ecx, %ecx
	jmp	.L8
.L33:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE23:
	.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.
Optimized Assembly Code:

train
```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%s %s"
.LC1:
	.string	"Yes"
.LC2:
	.string	"No"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB23:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	leaq	.LC0(%rip), %rdi
	subq	$448, %rsp
	.cfi_def_cfa_offset 464
	movq	%fs:40, %rax
	movq	%rax, 440(%rsp)
	xorl	%eax, %eax
	movq	%rsp, %rbx
	leaq	112(%rsp), %rdx
	movq	%rbx, %rsi
	call	__isoc99_scanf@PLT
	movzbl	(%rsp), %r8d
	movb	%r8b, 224(%rsp)
	testb	%r8b, %r8b
	je	.L2
	movl	$1, %eax
	leaq	224(%rsp), %rdx
	.p2align 4,,10
	.p2align 3
.L3:
	movzbl	(%rbx,%rax), %ecx
	movl	%eax, %esi
	addq	$1, %rax
	movb	%cl, -1(%rax,%rdx)
	testb	%cl, %cl
	jne	.L3
	movslq	%esi, %rdi
	movl	$1, %eax
	movb	%r8b, 224(%rsp,%rdi)
	addq	%rdx, %rdi
	.p2align 4,,10
	.p2align 3
.L7:
	movzbl	(%rbx,%rax), %ecx
	movb	%cl, (%rdi,%rax)
	addq	$1, %rax
	testb	%cl, %cl
	jne	.L7
	movzbl	112(%rsp), %edi
	testb	%dil, %dil
	je	.L17
.L5:
	movl	$1, %eax
	leaq	111(%rsp), %rdx
	.p2align 4,,10
	.p2align 3
.L9:
	movl	%eax, %ecx
	addq	$1, %rax
	cmpb	$0, (%rdx,%rax)
	jne	.L9
	testl	%esi, %esi
	je	.L6
	leaq	224(%rsp), %rdx
.L8:
	movq	%rdx, %rax
	leaq	111(%rsp), %r9
	xorl	%edx, %edx
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L10:
	addl	$1, %edx
	addq	$1, %rax
	cmpl	%esi, %edx
	jge	.L6
.L14:
	cmpb	%dil, (%rax)
	jne	.L10
	movl	$1, %r8d
	testl	%ecx, %ecx
	je	.L10
.L11:
	cmpl	%r8d, %ecx
	jle	.L32
	movzbl	(%rax,%r8), %r10d
	addq	$1, %r8
	cmpb	(%r9,%r8), %r10b
	je	.L11
	addl	$1, %edx
	addq	$1, %rax
	cmpl	%esi, %edx
	jl	.L14
.L6:
	leaq	.LC2(%rip), %rdi
	call	puts@PLT
	jmp	.L13
.L32:
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
.L13:
	movq	440(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L33
	addq	$448, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 16
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 8
	ret
.L2:
	.cfi_restore_state
	movzbl	112(%rsp), %edi
	xorl	%esi, %esi
	testb	%dil, %dil
	jne	.L5
	jmp	.L6
.L17:
	xorl	%ecx, %ecx
	jmp	.L8
.L33:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE23:
	.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:
```