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>

int n, k, m;
int i, j;
int tmp;
int game[20000] = {0};

int main(void){
    while(true){
        scanf("%d %d %d", &n, &k, &m);
        if(n == 0 && k == 0 && m == 0) break;
        for(i = 0; i < n; i++){
            game[i] = i + 1;
        }

        tmp = m - 1;
        while(true){
            if(n == 1) break;
            for(i = tmp; i < n - 1; i++){
                game[i] = game[i + 1];
            }
            n--;
            tmp = (tmp + k - 1) % n;
        }
        printf("%d\n", game[0]);
    }

    return 0;
}

```

Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	"%d %d %d"
.LC4:
	.string	"%d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB23:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	m(%rip), %r15
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	leaq	k(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	leaq	game(%rip), %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 64
	.p2align 4,,10
	.p2align 3
.L12:
	movq	%r15, %rcx
	movq	%r14, %rdx
	leaq	n(%rip), %rsi
	xorl	%eax, %eax
	leaq	.LC1(%rip), %rdi
	call	__isoc99_scanf@PLT
	movl	n(%rip), %ecx
	testl	%ecx, %ecx
	jne	.L2
	movl	k(%rip), %ebp
	movl	m(%rip), %r8d
	movl	%ebp, %eax
	orl	%r8d, %eax
	je	.L26
	movl	$0, i(%rip)
	leal	-1(%r8), %r12d
	movl	%r12d, tmp(%rip)
.L13:
	leal	-1(%rcx), %r13d
	jmp	.L11
	.p2align 4,,10
	.p2align 3
.L28:
	movl	%r12d, %eax
	movslq	%r12d, %rdi
	notl	%eax
	salq	$2, %rdi
	addl	%r13d, %eax
	leaq	4(%rbx,%rdi), %rsi
	addq	%rbx, %rdi
	movl	%eax, %eax
	leaq	4(,%rax,4), %rdx
	call	memmove@PLT
	movl	%r13d, %esi
.L10:
	leal	-1(%r12,%rbp), %eax
	cltd
	idivl	%r13d
	movl	%edx, %r12d
	subl	$1, %r13d
	je	.L27
.L11:
	cmpl	%r13d, %r12d
	jl	.L28
	movl	%r12d, %esi
	jmp	.L10
	.p2align 4,,10
	.p2align 3
.L27:
	movl	%esi, i(%rip)
	movl	$1, n(%rip)
	movl	%edx, tmp(%rip)
.L9:
	movl	(%rbx), %edx
	leaq	.LC4(%rip), %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	jmp	.L12
.L2:
	movl	$0, i(%rip)
	movl	m(%rip), %r8d
	jle	.L5
	leal	-1(%rcx), %eax
	cmpl	$2, %eax
	jbe	.L14
	movl	%ecx, %edx
	leaq	game(%rip), %rax
	movdqa	.LC0(%rip), %xmm1
	shrl	$2, %edx
	leaq	16(%rax), %rsi
	subl	$1, %edx
	salq	$4, %rdx
	addq	%rsi, %rdx
	.p2align 4,,10
	.p2align 3
.L7:
	movdqa	%xmm1, %xmm0
	paddd	.LC3(%rip), %xmm0
	addq	$16, %rax
	paddd	.LC2(%rip), %xmm1
	movaps	%xmm0, -16(%rax)
	cmpq	%rdx, %rax
	jne	.L7
	movl	%ecx, %eax
	andl	$-4, %eax
	testb	$3, %cl
	je	.L8
.L6:
	leal	1(%rax), %edx
	movslq	%eax, %rsi
	movl	%edx, (%rbx,%rsi,4)
	cmpl	%edx, %ecx
	jle	.L8
	leal	2(%rax), %esi
	movslq	%edx, %rdx
	movl	%esi, (%rbx,%rdx,4)
	cmpl	%esi, %ecx
	jle	.L8
	movslq	%esi, %rsi
	addl	$3, %eax
	movl	%eax, (%rbx,%rsi,4)
.L8:
	movl	%ecx, i(%rip)
.L5:
	leal	-1(%r8), %r12d
	movl	%r12d, tmp(%rip)
	cmpl	$1, %ecx
	je	.L9
	movl	k(%rip), %ebp
	jmp	.L13
.L14:
	xorl	%eax, %eax
	jmp	.L6
.L26:
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE23:
	.size	main, .-main
	.globl	game
	.bss
	.align 32
	.type	game, @object
	.size	game, 80000
game:
	.zero	80000
	.globl	tmp
	.align 4
	.type	tmp, @object
	.size	tmp, 4
tmp:
	.zero	4
	.globl	j
	.align 4
	.type	j, @object
	.size	j, 4
j:
	.zero	4
	.globl	i
	.align 4
	.type	i, @object
	.size	i, 4
i:
	.zero	4
	.globl	m
	.align 4
	.type	m, @object
	.size	m, 4
m:
	.zero	4
	.globl	k
	.align 4
	.type	k, @object
	.size	k, 4
k:
	.zero	4
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC0:
	.long	0
	.long	1
	.long	2
	.long	3
	.align 16
.LC2:
	.long	4
	.long	4
	.long	4
	.long	4
	.align 16
.LC3:
	.long	1
	.long	1
	.long	1
	.long	1
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
```

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
.LC1:
	.string	"%d %d %d"
.LC4:
	.string	"%d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB23:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	m(%rip), %r15
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	leaq	k(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	leaq	game(%rip), %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 64
	.p2align 4,,10
	.p2align 3
.L12:
	movq	%r15, %rcx
	movq	%r14, %rdx
	leaq	n(%rip), %rsi
	xorl	%eax, %eax
	leaq	.LC1(%rip), %rdi
	call	__isoc99_scanf@PLT
	movl	n(%rip), %ecx
	testl	%ecx, %ecx
	jne	.L2
	movl	k(%rip), %ebp
	movl	m(%rip), %r8d
	movl	%ebp, %eax
	orl	%r8d, %eax
	je	.L26
	movl	$0, i(%rip)
	leal	-1(%r8), %r12d
	movl	%r12d, tmp(%rip)
.L13:
	leal	-1(%rcx), %r13d
	jmp	.L11
	.p2align 4,,10
	.p2align 3
.L28:
	movl	%r12d, %eax
	movslq	%r12d, %rdi
	notl	%eax
	salq	$2, %rdi
	addl	%r13d, %eax
	leaq	4(%rbx,%rdi), %rsi
	addq	%rbx, %rdi
	movl	%eax, %eax
	leaq	4(,%rax,4), %rdx
	call	memmove@PLT
	movl	%r13d, %esi
.L10:
	leal	-1(%r12,%rbp), %eax
	cltd
	idivl	%r13d
	movl	%edx, %r12d
	subl	$1, %r13d
	je	.L27
.L11:
	cmpl	%r13d, %r12d
	jl	.L28
	movl	%r12d, %esi
	jmp	.L10
	.p2align 4,,10
	.p2align 3
.L27:
	movl	%esi, i(%rip)
	movl	$1, n(%rip)
	movl	%edx, tmp(%rip)
.L9:
	movl	(%rbx), %edx
	leaq	.LC4(%rip), %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	jmp	.L12
.L2:
	movl	$0, i(%rip)
	movl	m(%rip), %r8d
	jle	.L5
	leal	-1(%rcx), %eax
	cmpl	$2, %eax
	jbe	.L14
	movl	%ecx, %edx
	leaq	game(%rip), %rax
	movdqa	.LC0(%rip), %xmm1
	shrl	$2, %edx
	leaq	16(%rax), %rsi
	subl	$1, %edx
	salq	$4, %rdx
	addq	%rsi, %rdx
	.p2align 4,,10
	.p2align 3
.L7:
	movdqa	%xmm1, %xmm0
	paddd	.LC3(%rip), %xmm0
	addq	$16, %rax
	paddd	.LC2(%rip), %xmm1
	movaps	%xmm0, -16(%rax)
	cmpq	%rdx, %rax
	jne	.L7
	movl	%ecx, %eax
	andl	$-4, %eax
	testb	$3, %cl
	je	.L8
.L6:
	leal	1(%rax), %edx
	movslq	%eax, %rsi
	movl	%edx, (%rbx,%rsi,4)
	cmpl	%edx, %ecx
	jle	.L8
	leal	2(%rax), %esi
	movslq	%edx, %rdx
	movl	%esi, (%rbx,%rdx,4)
	cmpl	%esi, %ecx
	jle	.L8
	movslq	%esi, %rsi
	addl	$3, %eax
	movl	%eax, (%rbx,%rsi,4)
.L8:
	movl	%ecx, i(%rip)
.L5:
	leal	-1(%r8), %r12d
	movl	%r12d, tmp(%rip)
	cmpl	$1, %ecx
	je	.L9
	movl	k(%rip), %ebp
	jmp	.L13
.L14:
	xorl	%eax, %eax
	jmp	.L6
.L26:
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE23:
	.size	main, .-main
	.globl	game
	.bss
	.align 32
	.type	game, @object
	.size	game, 80000
game:
	.zero	80000
	.globl	tmp
	.align 4
	.type	tmp, @object
	.size	tmp, 4
tmp:
	.zero	4
	.globl	j
	.align 4
	.type	j, @object
	.size	j, 4
j:
	.zero	4
	.globl	i
	.align 4
	.type	i, @object
	.size	i, 4
i:
	.zero	4
	.globl	m
	.align 4
	.type	m, @object
	.size	m, 4
m:
	.zero	4
	.globl	k
	.align 4
	.type	k, @object
	.size	k, 4
k:
	.zero	4
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC0:
	.long	0
	.long	1
	.long	2
	.long	3
	.align 16
.LC2:
	.long	4
	.long	4
	.long	4
	.long	4
	.align 16
.LC3:
	.long	1
	.long	1
	.long	1
	.long	1
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
```
rule
```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	"%d %d %d"
.LC4:
	.string	"%d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB23:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	m(%rip), %r15
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	leaq	k(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	leaq	game(%rip), %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 64
	.p2align 4,,10
	.p2align 3
.L12:
	movq	%r15, %rcx
	movq	%r14, %rdx
	leaq	n(%rip), %rsi
	xorl	%eax, %eax
	leaq	.LC1(%rip), %rdi
	call	__isoc99_scanf@PLT
	movl	n(%rip), %ecx
	testl	%ecx, %ecx
	jne	.L2
	movl	k(%rip), %ebp
	movl	m(%rip), %r8d
	movl	%ebp, %eax
	orl	%r8d, %eax
	je	.L26
	movl	$0, i(%rip)
	leal	-1(%r8), %r12d
	movl	%r12d, tmp(%rip)
.L13:
	leal	-1(%rcx), %r13d
	jmp	.L11
	.p2align 4,,10
	.p2align 3
.L28:
	movl	%r12d, %eax
	movslq	%r12d, %rdi
	notl	%eax
	salq	$2, %rdi
	addl	%r13d, %eax
	leaq	4(%rbx,%rdi), %rsi
	addq	%rbx, %rdi
	movl	%eax, %eax
	leaq	4(,%rax,4), %rdx
	call	memmove@PLT
	movl	%r13d, %esi
.L10:
	leal	-1(%r12,%rbp), %eax
	cltd
	idivl	%r13d
	movl	%edx, %r12d
	subl	$1, %r13d
	je	.L27
.L11:
	cmpl	%r13d, %r12d
	jl	.L28
	movl	%r12d, %esi
	jmp	.L10
	.p2align 4,,10
	.p2align 3
.L27:
	movl	%esi, i(%rip)
	movl	$1, n(%rip)
	movl	%edx, tmp(%rip)
.L9:
	movl	(%rbx), %edx
	leaq	.LC4(%rip), %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	jmp	.L12
.L2:
	movl	$0, i(%rip)
	movl	m(%rip), %r8d
	jle	.L5
	leal	-1(%rcx), %eax
	cmpl	$2, %eax
	jbe	.L14
	movl	%ecx, %edx
	leaq	game(%rip), %rax
	movdqa	.LC0(%rip), %xmm1
	shrl	$2, %edx
	leaq	16(%rax), %rsi
	subl	$1, %edx
	salq	$4, %rdx
	addq	%rsi, %rdx
	.p2align 4,,10
	.p2align 3
.L7:
	movdqa	%xmm1, %xmm0
	paddd	.LC3(%rip), %xmm0
	addq	$16, %rax
	paddd	.LC2(%rip), %xmm1
	movaps	%xmm0, -16(%rax)
	cmpq	%rdx, %rax
	jne	.L7
	movl	%ecx, %eax
	andl	$-4, %eax
	testb	$3, %cl
	je	.L8
.L6:
	leal	1(%rax), %edx
	movslq	%eax, %rsi
	movl	%edx, (%rbx,%rsi,4)
	cmpl	%edx, %ecx
	jle	.L8
	leal	2(%rax), %esi
	movslq	%edx, %rdx
	movl	%esi, (%rbx,%rdx,4)
	cmpl	%esi, %ecx
	jle	.L8
	movslq	%esi, %rsi
	addl	$3, %eax
	movl	%eax, (%rbx,%rsi,4)
.L8:
	movl	%ecx, i(%rip)
.L5:
	leal	-1(%r8), %r12d
	movl	%r12d, tmp(%rip)
	cmpl	$1, %ecx
	je	.L9
	movl	k(%rip), %ebp
	jmp	.L13
.L14:
	xorl	%eax, %eax
	jmp	.L6
.L26:
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE23:
	.size	main, .-main
	.globl	game
	.bss
	.align 32
	.type	game, @object
	.size	game, 80000
game:
	.zero	80000
	.globl	tmp
	.align 4
	.type	tmp, @object
	.size	tmp, 4
tmp:
	.zero	4
	.globl	j
	.align 4
	.type	j, @object
	.size	j, 4
j:
	.zero	4
	.globl	i
	.align 4
	.type	i, @object
	.size	i, 4
i:
	.zero	4
	.globl	m
	.align 4
	.type	m, @object
	.size	m, 4
m:
	.zero	4
	.globl	k
	.align 4
	.type	k, @object
	.size	k, 4
k:
	.zero	4
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC0:
	.long	0
	.long	1
	.long	2
	.long	3
	.align 16
.LC2:
	.long	4
	.long	4
	.long	4
	.long	4
	.align 16
.LC3:
	.long	1
	.long	1
	.long	1
	.long	1
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
```
```c
#include <stdio.h>
#include <stdbool.h>

int n, k, m;
int i, j;
int tmp;
int game[20000] = {0};

int main(void){
    while(true){
        scanf("%d %d %d", &n, &k, &m);
        if(n == 0 && k == 0 && m == 0) break;
        for(i = 0; i < n; i++){
            game[i] = i + 1;
        }

        tmp = m - 1;
        while(true){
            if(n == 1) break;
            for(i = tmp; i < n - 1; i++){
                game[i] = game[i + 1];
            }
            n--;
            tmp = (tmp + k - 1) % n;
        }
        printf("%d\n", game[0]);
    }

    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>

int n, k, m;
int i, j;
int tmp;
int game[20000] = {0};

int main(void){
    while(true){
        scanf("%d %d %d", &n, &k, &m);
        if(n == 0 && k == 0 && m == 0) break;
        for(i = 0; i < n; i++){
            game[i] = i + 1;
        }

        tmp = m - 1;
        while(true){
            if(n == 1) break;
            for(i = tmp; i < n - 1; i++){
                game[i] = game[i + 1];
            }
            n--;
            tmp = (tmp + k - 1) % n;
        }
        printf("%d\n", game[0]);
    }

    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:

12 5 3
100 9999 98
10000 10000 10000
0 0 0
 12 2 3
100 9999 98
10000 10000 10000
0 0 0
 12 2 3
100 15522 98
10000 10000 10000
0 0 0
 12 2 3
100 15914 98
10000 10000 10000
0 0 0
 12 2 3
100 15914 98
10001 10000 10000
0 0 0
 12 2 3
100 15914 12
10001 10000 10000
0 0 0
 12 2 3
100 7953 12
10001 10000 10000
0 0 0
 12 2 3
101 7953 12
10001 10000 10000
0 0 0
 12 2 3
100 9999 98
10100 10000 10000
0 0 0
 12 2 3
100 15914 12
10001 10001 10000
0 0 0

11
93
2019
 10
93
2019
 10
89
2019
 10
16
2019
 10
16
2018
 10
30
2018
 10
17
2018
 10
70
2018
 10
93
7033
 10
30
8812

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>

int n, k, m;
int i, j;
int tmp;
int game[20000] = {0};

int main(void){
    while(true){
        scanf("%d %d %d", &n, &k, &m);
        if(n == 0 && k == 0 && m == 0) break;
        for(i = 0; i < n; i++){
            game[i] = i + 1;
        }

        tmp = m - 1;
        while(true){
            if(n == 1) break;
            for(i = tmp; i < n - 1; i++){
                game[i] = game[i + 1];
            }
            n--;
            tmp = (tmp + k - 1) % n;
        }
        printf("%d\n", game[0]);
    }

    return 0;
}

```

Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC1:
	.string	"%d %d %d"
.LC4:
	.string	"%d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB23:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	m(%rip), %r15
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	leaq	k(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	leaq	game(%rip), %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 64
	.p2align 4,,10
	.p2align 3
.L12:
	movq	%r15, %rcx
	movq	%r14, %rdx
	leaq	n(%rip), %rsi
	xorl	%eax, %eax
	leaq	.LC1(%rip), %rdi
	call	__isoc99_scanf@PLT
	movl	n(%rip), %ecx
	testl	%ecx, %ecx
	jne	.L2
	movl	k(%rip), %ebp
	movl	m(%rip), %r8d
	movl	%ebp, %eax
	orl	%r8d, %eax
	je	.L26
	movl	$0, i(%rip)
	leal	-1(%r8), %r12d
	movl	%r12d, tmp(%rip)
.L13:
	leal	-1(%rcx), %r13d
	jmp	.L11
	.p2align 4,,10
	.p2align 3
.L28:
	movl	%r12d, %eax
	movslq	%r12d, %rdi
	notl	%eax
	salq	$2, %rdi
	addl	%r13d, %eax
	leaq	4(%rbx,%rdi), %rsi
	addq	%rbx, %rdi
	movl	%eax, %eax
	leaq	4(,%rax,4), %rdx
	call	memmove@PLT
	movl	%r13d, %esi
.L10:
	leal	-1(%r12,%rbp), %eax
	cltd
	idivl	%r13d
	movl	%edx, %r12d
	subl	$1, %r13d
	je	.L27
.L11:
	cmpl	%r13d, %r12d
	jl	.L28
	movl	%r12d, %esi
	jmp	.L10
	.p2align 4,,10
	.p2align 3
.L27:
	movl	%esi, i(%rip)
	movl	$1, n(%rip)
	movl	%edx, tmp(%rip)
.L9:
	movl	(%rbx), %edx
	leaq	.LC4(%rip), %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	jmp	.L12
.L2:
	movl	$0, i(%rip)
	movl	m(%rip), %r8d
	jle	.L5
	leal	-1(%rcx), %eax
	cmpl	$2, %eax
	jbe	.L14
	movl	%ecx, %edx
	leaq	game(%rip), %rax
	movdqa	.LC0(%rip), %xmm1
	shrl	$2, %edx
	leaq	16(%rax), %rsi
	subl	$1, %edx
	salq	$4, %rdx
	addq	%rsi, %rdx
	.p2align 4,,10
	.p2align 3
.L7:
	movdqa	%xmm1, %xmm0
	paddd	.LC3(%rip), %xmm0
	addq	$16, %rax
	paddd	.LC2(%rip), %xmm1
	movaps	%xmm0, -16(%rax)
	cmpq	%rdx, %rax
	jne	.L7
	movl	%ecx, %eax
	andl	$-4, %eax
	testb	$3, %cl
	je	.L8
.L6:
	leal	1(%rax), %edx
	movslq	%eax, %rsi
	movl	%edx, (%rbx,%rsi,4)
	cmpl	%edx, %ecx
	jle	.L8
	leal	2(%rax), %esi
	movslq	%edx, %rdx
	movl	%esi, (%rbx,%rdx,4)
	cmpl	%esi, %ecx
	jle	.L8
	movslq	%esi, %rsi
	addl	$3, %eax
	movl	%eax, (%rbx,%rsi,4)
.L8:
	movl	%ecx, i(%rip)
.L5:
	leal	-1(%r8), %r12d
	movl	%r12d, tmp(%rip)
	cmpl	$1, %ecx
	je	.L9
	movl	k(%rip), %ebp
	jmp	.L13
.L14:
	xorl	%eax, %eax
	jmp	.L6
.L26:
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE23:
	.size	main, .-main
	.globl	game
	.bss
	.align 32
	.type	game, @object
	.size	game, 80000
game:
	.zero	80000
	.globl	tmp
	.align 4
	.type	tmp, @object
	.size	tmp, 4
tmp:
	.zero	4
	.globl	j
	.align 4
	.type	j, @object
	.size	j, 4
j:
	.zero	4
	.globl	i
	.align 4
	.type	i, @object
	.size	i, 4
i:
	.zero	4
	.globl	m
	.align 4
	.type	m, @object
	.size	m, 4
m:
	.zero	4
	.globl	k
	.align 4
	.type	k, @object
	.size	k, 4
k:
	.zero	4
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC0:
	.long	0
	.long	1
	.long	2
	.long	3
	.align 16
.LC2:
	.long	4
	.long	4
	.long	4
	.long	4
	.align 16
.LC3:
	.long	1
	.long	1
	.long	1
	.long	1
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
```

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
.LC1:
	.string	"%d %d %d"
.LC4:
	.string	"%d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB23:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	m(%rip), %r15
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	leaq	k(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	leaq	game(%rip), %rbx
	subq	$8, %rsp
	.cfi_def_cfa_offset 64
	.p2align 4,,10
	.p2align 3
.L12:
	movq	%r15, %rcx
	movq	%r14, %rdx
	leaq	n(%rip), %rsi
	xorl	%eax, %eax
	leaq	.LC1(%rip), %rdi
	call	__isoc99_scanf@PLT
	movl	n(%rip), %ecx
	testl	%ecx, %ecx
	jne	.L2
	movl	k(%rip), %ebp
	movl	m(%rip), %r8d
	movl	%ebp, %eax
	orl	%r8d, %eax
	je	.L26
	movl	$0, i(%rip)
	leal	-1(%r8), %r12d
	movl	%r12d, tmp(%rip)
.L13:
	leal	-1(%rcx), %r13d
	jmp	.L11
	.p2align 4,,10
	.p2align 3
.L28:
	movl	%r12d, %eax
	movslq	%r12d, %rdi
	notl	%eax
	salq	$2, %rdi
	addl	%r13d, %eax
	leaq	4(%rbx,%rdi), %rsi
	addq	%rbx, %rdi
	movl	%eax, %eax
	leaq	4(,%rax,4), %rdx
	call	memmove@PLT
	movl	%r13d, %esi
.L10:
	leal	-1(%r12,%rbp), %eax
	cltd
	idivl	%r13d
	movl	%edx, %r12d
	subl	$1, %r13d
	je	.L27
.L11:
	cmpl	%r13d, %r12d
	jl	.L28
	movl	%r12d, %esi
	jmp	.L10
	.p2align 4,,10
	.p2align 3
.L27:
	movl	%esi, i(%rip)
	movl	$1, n(%rip)
	movl	%edx, tmp(%rip)
.L9:
	movl	(%rbx), %edx
	leaq	.LC4(%rip), %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	jmp	.L12
.L2:
	movl	$0, i(%rip)
	movl	m(%rip), %r8d
	jle	.L5
	leal	-1(%rcx), %eax
	cmpl	$2, %eax
	jbe	.L14
	movl	%ecx, %edx
	leaq	game(%rip), %rax
	movdqa	.LC0(%rip), %xmm1
	shrl	$2, %edx
	leaq	16(%rax), %rsi
	subl	$1, %edx
	salq	$4, %rdx
	addq	%rsi, %rdx
	.p2align 4,,10
	.p2align 3
.L7:
	movdqa	%xmm1, %xmm0
	paddd	.LC3(%rip), %xmm0
	addq	$16, %rax
	paddd	.LC2(%rip), %xmm1
	movaps	%xmm0, -16(%rax)
	cmpq	%rdx, %rax
	jne	.L7
	movl	%ecx, %eax
	andl	$-4, %eax
	testb	$3, %cl
	je	.L8
.L6:
	leal	1(%rax), %edx
	movslq	%eax, %rsi
	movl	%edx, (%rbx,%rsi,4)
	cmpl	%edx, %ecx
	jle	.L8
	leal	2(%rax), %esi
	movslq	%edx, %rdx
	movl	%esi, (%rbx,%rdx,4)
	cmpl	%esi, %ecx
	jle	.L8
	movslq	%esi, %rsi
	addl	$3, %eax
	movl	%eax, (%rbx,%rsi,4)
.L8:
	movl	%ecx, i(%rip)
.L5:
	leal	-1(%r8), %r12d
	movl	%r12d, tmp(%rip)
	cmpl	$1, %ecx
	je	.L9
	movl	k(%rip), %ebp
	jmp	.L13
.L14:
	xorl	%eax, %eax
	jmp	.L6
.L26:
	addq	$8, %rsp
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE23:
	.size	main, .-main
	.globl	game
	.bss
	.align 32
	.type	game, @object
	.size	game, 80000
game:
	.zero	80000
	.globl	tmp
	.align 4
	.type	tmp, @object
	.size	tmp, 4
tmp:
	.zero	4
	.globl	j
	.align 4
	.type	j, @object
	.size	j, 4
j:
	.zero	4
	.globl	i
	.align 4
	.type	i, @object
	.size	i, 4
i:
	.zero	4
	.globl	m
	.align 4
	.type	m, @object
	.size	m, 4
m:
	.zero	4
	.globl	k
	.align 4
	.type	k, @object
	.size	k, 4
k:
	.zero	4
	.globl	n
	.align 4
	.type	n, @object
	.size	n, 4
n:
	.zero	4
	.section	.rodata.cst16,"aM",@progbits,16
	.align 16
.LC0:
	.long	0
	.long	1
	.long	2
	.long	3
	.align 16
.LC2:
	.long	4
	.long	4
	.long	4
	.long	4
	.align 16
.LC3:
	.long	1
	.long	1
	.long	1
	.long	1
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
```