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>

#define N 16777216 // 4^12

char H[N];

int getChar(char ch){
  switch (ch) {
    case 'A': return 1;
    case 'C': return 2;
    case 'G': return 3;
    case 'T': return 4;
  }
  return 0;
}

// convert character string to Quintuple
int getKey(char *str){
  int i, sum=0, p=1;
  for(i=0; i<strlen(str); i++){
    sum += p * getChar(str[i]);
    p *= 4;
  }
  return sum;
}

int main(){
  int i,n;
  char str[13], command[7];
  // char H[N];
  for(i=0; i<N; i++)  H[i] = 0;

  scanf("%d",&n);
  for(i=0; i<n; i++){
    scanf("%s %s",command, str);
    if(command[0] == 'i')  H[getKey(str)]= 1;
    else{
      if(H[getKey(str)]) printf("yes\n");
      else  printf("no\n");
    }
  }
  return 0;
}

```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	H
	.bss
	.align 32
	.type	H, @object
	.size	H, 16777216
H:
	.zero	16777216
	.text
	.globl	getChar
	.type	getChar, @function
getChar:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, %eax
	movb	%al, -4(%rbp)
	movsbl	-4(%rbp), %eax
	cmpl	$84, %eax
	je	.L2
	cmpl	$84, %eax
	jg	.L3
	cmpl	$71, %eax
	je	.L4
	cmpl	$71, %eax
	jg	.L3
	cmpl	$65, %eax
	je	.L5
	cmpl	$67, %eax
	je	.L6
	jmp	.L3
.L5:
	movl	$1, %eax
	jmp	.L7
.L6:
	movl	$2, %eax
	jmp	.L7
.L4:
	movl	$3, %eax
	jmp	.L7
.L2:
	movl	$4, %eax
	jmp	.L7
.L3:
	movl	$0, %eax
.L7:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	getChar, .-getChar
	.globl	getKey
	.type	getKey, @function
getKey:
.LFB1:
	.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	$40, %rsp
	.cfi_offset 3, -24
	movq	%rdi, -40(%rbp)
	movl	$0, -24(%rbp)
	movl	$1, -20(%rbp)
	movl	$0, -28(%rbp)
	jmp	.L9
.L10:
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	-40(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	%eax, %edi
	call	getChar
	imull	-20(%rbp), %eax
	addl	%eax, -24(%rbp)
	sall	$2, -20(%rbp)
	addl	$1, -28(%rbp)
.L9:
	movl	-28(%rbp), %eax
	movslq	%eax, %rbx
	movq	-40(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	cmpq	%rax, %rbx
	jb	.L10
	movl	-24(%rbp), %eax
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	getKey, .-getKey
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%s %s"
.LC2:
	.string	"yes"
.LC3:
	.string	"no"
	.text
	.globl	main
	.type	main, @function
main:
.LFB2:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$48, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$0, -32(%rbp)
	jmp	.L13
.L14:
	movl	-32(%rbp), %eax
	cltq
	leaq	H(%rip), %rdx
	movb	$0, (%rax,%rdx)
	addl	$1, -32(%rbp)
.L13:
	cmpl	$16777215, -32(%rbp)
	jle	.L14
	leaq	-36(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -32(%rbp)
	jmp	.L15
.L19:
	leaq	-21(%rbp), %rdx
	leaq	-28(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movzbl	-28(%rbp), %eax
	cmpb	$105, %al
	jne	.L16
	leaq	-21(%rbp), %rax
	movq	%rax, %rdi
	call	getKey
	cltq
	leaq	H(%rip), %rdx
	movb	$1, (%rax,%rdx)
	jmp	.L17
.L16:
	leaq	-21(%rbp), %rax
	movq	%rax, %rdi
	call	getKey
	cltq
	leaq	H(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L18
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	jmp	.L17
.L18:
	leaq	.LC3(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L17:
	addl	$1, -32(%rbp)
.L15:
	movl	-36(%rbp), %eax
	cmpl	%eax, -32(%rbp)
	jl	.L19
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L21
	call	__stack_chk_fail@PLT
.L21:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.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	getChar
	.type	getChar, @function
getChar:
.LFB35:
	.cfi_startproc
	endbr64
	subl	$65, %edi
	xorl	%eax, %eax
	cmpb	$19, %dil
	ja	.L1
	movzbl	%dil, %edi
	leaq	CSWTCH.3(%rip), %rax
	movl	(%rax,%rdi,4), %eax
.L1:
	ret
	.cfi_endproc
.LFE35:
	.size	getChar, .-getChar
	.p2align 4
	.globl	getKey
	.type	getKey, @function
getKey:
.LFB36:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	%rdi, %rbx
	call	strlen@PLT
	testq	%rax, %rax
	je	.L9
	movq	%rbx, %rdi
	addq	%rbx, %rax
	movl	$1, %ecx
	xorl	%r8d, %r8d
	leaq	CSWTCH.3(%rip), %rsi
	.p2align 4,,10
	.p2align 3
.L8:
	movzbl	(%rdi), %ebx
	leal	-65(%rbx), %edx
	cmpb	$19, %dl
	ja	.L7
	movzbl	%dl, %edx
	movl	(%rsi,%rdx,4), %ebx
	imull	%ecx, %ebx
	addl	%ebx, %r8d
.L7:
	addq	$1, %rdi
	sall	$2, %ecx
	cmpq	%rax, %rdi
	jne	.L8
	movl	%r8d, %eax
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L9:
	.cfi_restore_state
	xorl	%r8d, %r8d
	popq	%rbx
	.cfi_def_cfa_offset 8
	movl	%r8d, %eax
	ret
	.cfi_endproc
.LFE36:
	.size	getKey, .-getKey
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d"
.LC1:
	.string	"%s %s"
.LC2:
	.string	"yes"
.LC3:
	.string	"no"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB37:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movl	$16777216, %edx
	xorl	%esi, %esi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	leaq	H(%rip), %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movq	%r13, %rdi
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$40, %rsp
	.cfi_def_cfa_offset 96
	movq	%fs:40, %rax
	movq	%rax, 24(%rsp)
	xorl	%eax, %eax
	call	memset@PLT
	movq	%rsp, %rsi
	leaq	.LC0(%rip), %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movl	(%rsp), %eax
	testl	%eax, %eax
	jle	.L44
	xorl	%ebx, %ebx
	leaq	11(%rsp), %r12
	leaq	4(%rsp), %r15
	leaq	.LC1(%rip), %r14
	leaq	CSWTCH.3(%rip), %rbp
	jmp	.L13
	.p2align 4,,10
	.p2align 3
.L113:
	call	strlen@PLT
	xorl	%edx, %edx
	testq	%rax, %rax
	je	.L16
	movzbl	11(%rsp), %esi
	xorl	%edx, %edx
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L31
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %edx
.L31:
	cmpq	$1, %rax
	je	.L16
	movzbl	12(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L32
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	leal	(%rdx,%rcx,4), %edx
.L32:
	cmpq	$2, %rax
	je	.L16
	movzbl	13(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L33
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$4, %ecx
	addl	%ecx, %edx
.L33:
	cmpq	$3, %rax
	je	.L16
	movzbl	14(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L34
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$6, %ecx
	addl	%ecx, %edx
.L34:
	cmpq	$4, %rax
	je	.L16
	movzbl	15(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L35
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$8, %ecx
	addl	%ecx, %edx
.L35:
	cmpq	$5, %rax
	je	.L16
	movzbl	16(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L36
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$10, %ecx
	addl	%ecx, %edx
.L36:
	cmpq	$6, %rax
	je	.L16
	movzbl	17(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L37
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$12, %ecx
	addl	%ecx, %edx
.L37:
	cmpq	$7, %rax
	je	.L16
	movzbl	18(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L38
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$14, %ecx
	addl	%ecx, %edx
.L38:
	cmpq	$8, %rax
	je	.L16
	movzbl	19(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L39
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$16, %ecx
	addl	%ecx, %edx
.L39:
	cmpq	$9, %rax
	je	.L16
	movzbl	20(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L40
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$18, %ecx
	addl	%ecx, %edx
.L40:
	cmpq	$10, %rax
	je	.L16
	movzbl	21(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L41
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$20, %ecx
	addl	%ecx, %edx
.L41:
	cmpq	$12, %rax
	jne	.L16
	movzbl	22(%rsp), %eax
	subl	$65, %eax
	cmpb	$19, %al
	ja	.L16
	movzbl	%al, %eax
	movl	0(%rbp,%rax,4), %eax
	sall	$22, %eax
	addl	%eax, %edx
	.p2align 4,,10
	.p2align 3
.L16:
	movslq	%edx, %rdx
	cmpb	$0, 0(%r13,%rdx)
	je	.L43
	leaq	.LC2(%rip), %rdi
	call	puts@PLT
.L30:
	addl	$1, %ebx
	cmpl	%ebx, (%rsp)
	jle	.L44
.L13:
	movq	%r14, %rdi
	xorl	%eax, %eax
	movq	%r12, %rdx
	movq	%r15, %rsi
	call	__isoc99_scanf@PLT
	cmpb	$105, 4(%rsp)
	movq	%r12, %rdi
	jne	.L113
	call	strlen@PLT
	testq	%rax, %rax
	je	.L47
	movzbl	11(%rsp), %edi
	xorl	%edx, %edx
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L18
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %edx
.L18:
	cmpq	$1, %rax
	je	.L17
	movzbl	12(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L19
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	leal	(%rdx,%rcx,4), %edx
.L19:
	cmpq	$2, %rax
	je	.L17
	movzbl	13(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L20
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$4, %ecx
	addl	%ecx, %edx
.L20:
	cmpq	$3, %rax
	je	.L17
	movzbl	14(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L21
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$6, %ecx
	addl	%ecx, %edx
.L21:
	cmpq	$4, %rax
	je	.L17
	movzbl	15(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L22
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$8, %ecx
	addl	%ecx, %edx
.L22:
	cmpq	$5, %rax
	je	.L17
	movzbl	16(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L23
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$10, %ecx
	addl	%ecx, %edx
.L23:
	cmpq	$6, %rax
	je	.L17
	movzbl	17(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L24
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$12, %ecx
	addl	%ecx, %edx
.L24:
	cmpq	$7, %rax
	je	.L17
	movzbl	18(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L25
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$14, %ecx
	addl	%ecx, %edx
.L25:
	cmpq	$8, %rax
	je	.L17
	movzbl	19(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	jbe	.L114
.L26:
	cmpq	$9, %rax
	je	.L17
	movzbl	20(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	jbe	.L115
.L27:
	cmpq	$10, %rax
	je	.L17
	movzbl	21(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	jbe	.L116
.L28:
	cmpq	$12, %rax
	jne	.L17
	movzbl	22(%rsp), %eax
	subl	$65, %eax
	cmpb	$19, %al
	jbe	.L117
	.p2align 4,,10
	.p2align 3
.L17:
	movslq	%edx, %rdx
	addl	$1, %ebx
	movb	$1, 0(%r13,%rdx)
	cmpl	%ebx, (%rsp)
	jg	.L13
.L44:
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L118
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L43:
	.cfi_restore_state
	leaq	.LC3(%rip), %rdi
	call	puts@PLT
	jmp	.L30
.L114:
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$16, %ecx
	addl	%ecx, %edx
	jmp	.L26
.L115:
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$18, %ecx
	addl	%ecx, %edx
	jmp	.L27
.L116:
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$20, %ecx
	addl	%ecx, %edx
	jmp	.L28
.L117:
	movzbl	%al, %eax
	movl	0(%rbp,%rax,4), %eax
	sall	$22, %eax
	addl	%eax, %edx
	jmp	.L17
.L47:
	xorl	%edx, %edx
	jmp	.L17
.L118:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE37:
	.size	main, .-main
	.section	.rodata
	.align 32
	.type	CSWTCH.3, @object
	.size	CSWTCH.3, 80
CSWTCH.3:
	.long	1
	.long	0
	.long	2
	.long	0
	.long	0
	.long	0
	.long	3
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	4
	.globl	H
	.bss
	.align 32
	.type	H, @object
	.size	H, 16777216
H:
	.zero	16777216
	.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	getChar
	.type	getChar, @function
getChar:
.LFB35:
	.cfi_startproc
	endbr64
	subl	$65, %edi
	xorl	%eax, %eax
	cmpb	$19, %dil
	ja	.L1
	movzbl	%dil, %edi
	leaq	CSWTCH.3(%rip), %rax
	movl	(%rax,%rdi,4), %eax
.L1:
	ret
	.cfi_endproc
.LFE35:
	.size	getChar, .-getChar
	.p2align 4
	.globl	getKey
	.type	getKey, @function
getKey:
.LFB36:
	.cfi_startproc
	endbr64
	pushq	%rbx
	.cfi_def_cfa_offset 16
	.cfi_offset 3, -16
	movq	%rdi, %rbx
	call	strlen@PLT
	testq	%rax, %rax
	je	.L9
	movq	%rbx, %rdi
	addq	%rbx, %rax
	movl	$1, %ecx
	xorl	%r8d, %r8d
	leaq	CSWTCH.3(%rip), %rsi
	.p2align 4,,10
	.p2align 3
.L8:
	movzbl	(%rdi), %ebx
	leal	-65(%rbx), %edx
	cmpb	$19, %dl
	ja	.L7
	movzbl	%dl, %edx
	movl	(%rsi,%rdx,4), %ebx
	imull	%ecx, %ebx
	addl	%ebx, %r8d
.L7:
	addq	$1, %rdi
	sall	$2, %ecx
	cmpq	%rax, %rdi
	jne	.L8
	movl	%r8d, %eax
	popq	%rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L9:
	.cfi_restore_state
	xorl	%r8d, %r8d
	popq	%rbx
	.cfi_def_cfa_offset 8
	movl	%r8d, %eax
	ret
	.cfi_endproc
.LFE36:
	.size	getKey, .-getKey
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d"
.LC1:
	.string	"%s %s"
.LC2:
	.string	"yes"
.LC3:
	.string	"no"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB37:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	movl	$16777216, %edx
	xorl	%esi, %esi
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	leaq	H(%rip), %r13
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	movq	%r13, %rdi
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$40, %rsp
	.cfi_def_cfa_offset 96
	movq	%fs:40, %rax
	movq	%rax, 24(%rsp)
	xorl	%eax, %eax
	call	memset@PLT
	movq	%rsp, %rsi
	leaq	.LC0(%rip), %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	movl	(%rsp), %eax
	testl	%eax, %eax
	jle	.L44
	xorl	%ebx, %ebx
	leaq	11(%rsp), %r12
	leaq	4(%rsp), %r15
	leaq	.LC1(%rip), %r14
	leaq	CSWTCH.3(%rip), %rbp
	jmp	.L13
	.p2align 4,,10
	.p2align 3
.L113:
	call	strlen@PLT
	xorl	%edx, %edx
	testq	%rax, %rax
	je	.L16
	movzbl	11(%rsp), %esi
	xorl	%edx, %edx
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L31
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %edx
.L31:
	cmpq	$1, %rax
	je	.L16
	movzbl	12(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L32
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	leal	(%rdx,%rcx,4), %edx
.L32:
	cmpq	$2, %rax
	je	.L16
	movzbl	13(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L33
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$4, %ecx
	addl	%ecx, %edx
.L33:
	cmpq	$3, %rax
	je	.L16
	movzbl	14(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L34
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$6, %ecx
	addl	%ecx, %edx
.L34:
	cmpq	$4, %rax
	je	.L16
	movzbl	15(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L35
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$8, %ecx
	addl	%ecx, %edx
.L35:
	cmpq	$5, %rax
	je	.L16
	movzbl	16(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L36
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$10, %ecx
	addl	%ecx, %edx
.L36:
	cmpq	$6, %rax
	je	.L16
	movzbl	17(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L37
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$12, %ecx
	addl	%ecx, %edx
.L37:
	cmpq	$7, %rax
	je	.L16
	movzbl	18(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L38
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$14, %ecx
	addl	%ecx, %edx
.L38:
	cmpq	$8, %rax
	je	.L16
	movzbl	19(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L39
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$16, %ecx
	addl	%ecx, %edx
.L39:
	cmpq	$9, %rax
	je	.L16
	movzbl	20(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L40
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$18, %ecx
	addl	%ecx, %edx
.L40:
	cmpq	$10, %rax
	je	.L16
	movzbl	21(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L41
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$20, %ecx
	addl	%ecx, %edx
.L41:
	cmpq	$12, %rax
	jne	.L16
	movzbl	22(%rsp), %eax
	subl	$65, %eax
	cmpb	$19, %al
	ja	.L16
	movzbl	%al, %eax
	movl	0(%rbp,%rax,4), %eax
	sall	$22, %eax
	addl	%eax, %edx
	.p2align 4,,10
	.p2align 3
.L16:
	movslq	%edx, %rdx
	cmpb	$0, 0(%r13,%rdx)
	je	.L43
	leaq	.LC2(%rip), %rdi
	call	puts@PLT
.L30:
	addl	$1, %ebx
	cmpl	%ebx, (%rsp)
	jle	.L44
.L13:
	movq	%r14, %rdi
	xorl	%eax, %eax
	movq	%r12, %rdx
	movq	%r15, %rsi
	call	__isoc99_scanf@PLT
	cmpb	$105, 4(%rsp)
	movq	%r12, %rdi
	jne	.L113
	call	strlen@PLT
	testq	%rax, %rax
	je	.L47
	movzbl	11(%rsp), %edi
	xorl	%edx, %edx
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L18
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %edx
.L18:
	cmpq	$1, %rax
	je	.L17
	movzbl	12(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L19
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	leal	(%rdx,%rcx,4), %edx
.L19:
	cmpq	$2, %rax
	je	.L17
	movzbl	13(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L20
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$4, %ecx
	addl	%ecx, %edx
.L20:
	cmpq	$3, %rax
	je	.L17
	movzbl	14(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L21
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$6, %ecx
	addl	%ecx, %edx
.L21:
	cmpq	$4, %rax
	je	.L17
	movzbl	15(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L22
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$8, %ecx
	addl	%ecx, %edx
.L22:
	cmpq	$5, %rax
	je	.L17
	movzbl	16(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L23
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$10, %ecx
	addl	%ecx, %edx
.L23:
	cmpq	$6, %rax
	je	.L17
	movzbl	17(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	ja	.L24
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$12, %ecx
	addl	%ecx, %edx
.L24:
	cmpq	$7, %rax
	je	.L17
	movzbl	18(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	ja	.L25
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$14, %ecx
	addl	%ecx, %edx
.L25:
	cmpq	$8, %rax
	je	.L17
	movzbl	19(%rsp), %edi
	leal	-65(%rdi), %ecx
	cmpb	$19, %cl
	jbe	.L114
.L26:
	cmpq	$9, %rax
	je	.L17
	movzbl	20(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	jbe	.L115
.L27:
	cmpq	$10, %rax
	je	.L17
	movzbl	21(%rsp), %esi
	leal	-65(%rsi), %ecx
	cmpb	$19, %cl
	jbe	.L116
.L28:
	cmpq	$12, %rax
	jne	.L17
	movzbl	22(%rsp), %eax
	subl	$65, %eax
	cmpb	$19, %al
	jbe	.L117
	.p2align 4,,10
	.p2align 3
.L17:
	movslq	%edx, %rdx
	addl	$1, %ebx
	movb	$1, 0(%r13,%rdx)
	cmpl	%ebx, (%rsp)
	jg	.L13
.L44:
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L118
	addq	$40, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L43:
	.cfi_restore_state
	leaq	.LC3(%rip), %rdi
	call	puts@PLT
	jmp	.L30
.L114:
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$16, %ecx
	addl	%ecx, %edx
	jmp	.L26
.L115:
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$18, %ecx
	addl	%ecx, %edx
	jmp	.L27
.L116:
	movzbl	%cl, %ecx
	movl	0(%rbp,%rcx,4), %ecx
	sall	$20, %ecx
	addl	%ecx, %edx
	jmp	.L28
.L117:
	movzbl	%al, %eax
	movl	0(%rbp,%rax,4), %eax
	sall	$22, %eax
	addl	%eax, %edx
	jmp	.L17
.L47:
	xorl	%edx, %edx
	jmp	.L17
.L118:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE37:
	.size	main, .-main
	.section	.rodata
	.align 32
	.type	CSWTCH.3, @object
	.size	CSWTCH.3, 80
CSWTCH.3:
	.long	1
	.long	0
	.long	2
	.long	0
	.long	0
	.long	0
	.long	3
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	0
	.long	4
	.globl	H
	.bss
	.align 32
	.type	H, @object
	.size	H, 16777216
H:
	.zero	16777216
	.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>

#define N 16777216 // 4^12

char H[N];

int getChar(char ch){
  switch (ch) {
    case 'A': return 1;
    case 'C': return 2;
    case 'G': return 3;
    case 'T': return 4;
  }
  return 0;
}

// convert character string to Quintuple
int getKey(char *str){
  int i, sum=0, p=1;
  for(i=0; i<strlen(str); i++){
    sum += p * getChar(str[i]);
    p *= 4;
  }
  return sum;
}

int main(){
  int i,n;
  char str[13], command[7];
  // char H[N];
  for(i=0; i<N; i++)  H[i] = 0;

  scanf("%d",&n);
  for(i=0; i<n; i++){
    scanf("%s %s",command, str);
    if(command[0] == 'i')  H[getKey(str)]= 1;
    else{
      if(H[getKey(str)]) printf("yes\n");
      else  printf("no\n");
    }
  }
  return 0;
}


5
insert A
insert U
insert C
find G
find A
 13
insert AAA
insert AAC
insert AGA
insert AGF
insert TTT
find AAA
find CCC
find CCC
insert CCC
find CCC
insert T
find TTT
find T
 5
insert B
insert T
insert C
find G
find A
 13
insert AAA
insert AAC
insert AGA
insert AGG
insert TTT
find AAA
find CCC
find CCC
insert CCC
find BCC
insert T
find TTT
find T
 13
insert AAA
insert CAA
insert AGA
insert AGG
insert TTT
find AAA
find CCC
find CCC
insert CCC
find CCC
insert T
find TUT
find T
 13
insert AAA
insert CAA
insert AGA
insert AGG
insert TTT
find AAA
find CCC
find CCC
insert CCC
find CCC
insert T
find TTT
find S
 13
insert AAA
insert CAA
insert AGA
insert AGG
insert TTT
find AAA
find CCC
find CCC
insert CCC
find CCC
insert T
find UTT
find S
 13
insert AAA
insert CAA
insert AGA
insert AGG
insert TTT
find AAB
find CCC
find CCC
insert CCC
find CCC
insert T
find TUT
find T
 13
insert AA@
insert CAA
insert AGA
insert AGG
insert TTT
find AAA
find CCC
find CCD
insert CCC
find CCC
insert T
find UTT
find S
 13
insert AAA
insert CAA
insert AGA
insert AGG
insert TTT
find BAA
find CCC
find CCC
insert CCC
find CCC
insert T
find TTT
find T

no
yes
 yes
no
no
yes
yes
yes
 no
no
 yes
no
no
no
yes
yes
 yes
no
no
yes
no
yes
 yes
no
no
yes
yes
no
 yes
no
no
yes
no
no
 no
no
no
yes
no
yes
 no
no
no
yes
no
no
 no
no
no
yes
yes
yes

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>

#define N 16777216 // 4^12

char H[N];

int getChar(char ch){
  switch (ch) {
    case 'A': return 1;
    case 'C': return 2;
    case 'G': return 3;
    case 'T': return 4;
  }
  return 0;
}

// convert character string to Quintuple
int getKey(char *str){
  int i, sum=0, p=1;
  for(i=0; i<strlen(str); i++){
    sum += p * getChar(str[i]);
    p *= 4;
  }
  return sum;
}

int main(){
  int i,n;
  char str[13], command[7];
  // char H[N];
  for(i=0; i<N; i++)  H[i] = 0;

  scanf("%d",&n);
  for(i=0; i<n; i++){
    scanf("%s %s",command, str);
    if(command[0] == 'i')  H[getKey(str)]= 1;
    else{
      if(H[getKey(str)]) printf("yes\n");
      else  printf("no\n");
    }
  }
  return 0;
}

```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	H
	.bss
	.align 32
	.type	H, @object
	.size	H, 16777216
H:
	.zero	16777216
	.text
	.globl	getChar
	.type	getChar, @function
getChar:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, %eax
	movb	%al, -4(%rbp)
	movsbl	-4(%rbp), %eax
	cmpl	$84, %eax
	je	.L2
	cmpl	$84, %eax
	jg	.L3
	cmpl	$71, %eax
	je	.L4
	cmpl	$71, %eax
	jg	.L3
	cmpl	$65, %eax
	je	.L5
	cmpl	$67, %eax
	je	.L6
	jmp	.L3
.L5:
	movl	$1, %eax
	jmp	.L7
.L6:
	movl	$2, %eax
	jmp	.L7
.L4:
	movl	$3, %eax
	jmp	.L7
.L2:
	movl	$4, %eax
	jmp	.L7
.L3:
	movl	$0, %eax
.L7:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	getChar, .-getChar
	.globl	getKey
	.type	getKey, @function
getKey:
.LFB1:
	.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	$40, %rsp
	.cfi_offset 3, -24
	movq	%rdi, -40(%rbp)
	movl	$0, -24(%rbp)
	movl	$1, -20(%rbp)
	movl	$0, -28(%rbp)
	jmp	.L9
.L10:
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	-40(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	%eax, %edi
	call	getChar
	imull	-20(%rbp), %eax
	addl	%eax, -24(%rbp)
	sall	$2, -20(%rbp)
	addl	$1, -28(%rbp)
.L9:
	movl	-28(%rbp), %eax
	movslq	%eax, %rbx
	movq	-40(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	cmpq	%rax, %rbx
	jb	.L10
	movl	-24(%rbp), %eax
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	getKey, .-getKey
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%s %s"
.LC2:
	.string	"yes"
.LC3:
	.string	"no"
	.text
	.globl	main
	.type	main, @function
main:
.LFB2:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$48, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$0, -32(%rbp)
	jmp	.L13
.L14:
	movl	-32(%rbp), %eax
	cltq
	leaq	H(%rip), %rdx
	movb	$0, (%rax,%rdx)
	addl	$1, -32(%rbp)
.L13:
	cmpl	$16777215, -32(%rbp)
	jle	.L14
	leaq	-36(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -32(%rbp)
	jmp	.L15
.L19:
	leaq	-21(%rbp), %rdx
	leaq	-28(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movzbl	-28(%rbp), %eax
	cmpb	$105, %al
	jne	.L16
	leaq	-21(%rbp), %rax
	movq	%rax, %rdi
	call	getKey
	cltq
	leaq	H(%rip), %rdx
	movb	$1, (%rax,%rdx)
	jmp	.L17
.L16:
	leaq	-21(%rbp), %rax
	movq	%rax, %rdi
	call	getKey
	cltq
	leaq	H(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L18
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	jmp	.L17
.L18:
	leaq	.LC3(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L17:
	addl	$1, -32(%rbp)
.L15:
	movl	-36(%rbp), %eax
	cmpl	%eax, -32(%rbp)
	jl	.L19
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L21
	call	__stack_chk_fail@PLT
.L21:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.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	H
	.bss
	.align 32
	.type	H, @object
	.size	H, 16777216
H:
	.zero	16777216
	.text
	.globl	getChar
	.type	getChar, @function
getChar:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, %eax
	movb	%al, -4(%rbp)
	movsbl	-4(%rbp), %eax
	cmpl	$84, %eax
	je	.L2
	cmpl	$84, %eax
	jg	.L3
	cmpl	$71, %eax
	je	.L4
	cmpl	$71, %eax
	jg	.L3
	cmpl	$65, %eax
	je	.L5
	cmpl	$67, %eax
	je	.L6
	jmp	.L3
.L5:
	movl	$1, %eax
	jmp	.L7
.L6:
	movl	$2, %eax
	jmp	.L7
.L4:
	movl	$3, %eax
	jmp	.L7
.L2:
	movl	$4, %eax
	jmp	.L7
.L3:
	movl	$0, %eax
.L7:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	getChar, .-getChar
	.globl	getKey
	.type	getKey, @function
getKey:
.LFB1:
	.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	$40, %rsp
	.cfi_offset 3, -24
	movq	%rdi, -40(%rbp)
	movl	$0, -24(%rbp)
	movl	$1, -20(%rbp)
	movl	$0, -28(%rbp)
	jmp	.L9
.L10:
	movl	-28(%rbp), %eax
	movslq	%eax, %rdx
	movq	-40(%rbp), %rax
	addq	%rdx, %rax
	movzbl	(%rax), %eax
	movsbl	%al, %eax
	movl	%eax, %edi
	call	getChar
	imull	-20(%rbp), %eax
	addl	%eax, -24(%rbp)
	sall	$2, -20(%rbp)
	addl	$1, -28(%rbp)
.L9:
	movl	-28(%rbp), %eax
	movslq	%eax, %rbx
	movq	-40(%rbp), %rax
	movq	%rax, %rdi
	call	strlen@PLT
	cmpq	%rax, %rbx
	jb	.L10
	movl	-24(%rbp), %eax
	movq	-8(%rbp), %rbx
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	getKey, .-getKey
	.section	.rodata
.LC0:
	.string	"%d"
.LC1:
	.string	"%s %s"
.LC2:
	.string	"yes"
.LC3:
	.string	"no"
	.text
	.globl	main
	.type	main, @function
main:
.LFB2:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$48, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$0, -32(%rbp)
	jmp	.L13
.L14:
	movl	-32(%rbp), %eax
	cltq
	leaq	H(%rip), %rdx
	movb	$0, (%rax,%rdx)
	addl	$1, -32(%rbp)
.L13:
	cmpl	$16777215, -32(%rbp)
	jle	.L14
	leaq	-36(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movl	$0, -32(%rbp)
	jmp	.L15
.L19:
	leaq	-21(%rbp), %rdx
	leaq	-28(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movzbl	-28(%rbp), %eax
	cmpb	$105, %al
	jne	.L16
	leaq	-21(%rbp), %rax
	movq	%rax, %rdi
	call	getKey
	cltq
	leaq	H(%rip), %rdx
	movb	$1, (%rax,%rdx)
	jmp	.L17
.L16:
	leaq	-21(%rbp), %rax
	movq	%rax, %rdi
	call	getKey
	cltq
	leaq	H(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	je	.L18
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	jmp	.L17
.L18:
	leaq	.LC3(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L17:
	addl	$1, -32(%rbp)
.L15:
	movl	-36(%rbp), %eax
	cmpl	%eax, -32(%rbp)
	jl	.L19
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L21
	call	__stack_chk_fail@PLT
.L21:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.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:
