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

```c
/*
AizuOnline A2024
Title blackjack
*/
#include <stdio.h>
// Select Below
//#include <stdlib.h>
//#include <string.h>
//#include <float.h>
//#include <math.h>
//#include <limits.h>
//Global data section
int N;
char d1,d2;
char pile[8];
int acef;
int softf;//including A that counts as 11
//
int   eval_card(char c)
 {
   if(c=='T' || c=='J' || c=='Q' || c=='K')
     return(10);
   if(c=='A')
     return(1);
   return(c - '0');
 }
int point(int c)
{
  int i,ret;

  ret=0;

  for(i=0;i<c+2;i++)
    {
      ret += eval_card(pile[i]);
      if(pile[i]=='A')
	acef=-1;
    }
  softf=0;
  if(ret < 12 && acef)
    { softf=-1;
      ret += 10;
    }
  return(ret);
}

main()
{
  int i,j,count,sum;
  char s[20],s2[20];

  while(EOF != scanf("%d\n",&N) && N)
    {
      for(i=0;i<N;i++)
	{
	  fgets(s,20,stdin);
	  pile[0]=s[0];pile[1]=s[2];
	  fgets(s,20,stdin);
	  pile[2]=s[0];pile[3]=s[2];pile[4]=s[4];pile[5]=s[6];
	  pile[6]=s[8];pile[7]=s[10];pile[8]=s[12];pile[9]=s[14];
	  count=0;acef=0;
	    while(point(count) < 17 ||point(count) == 17 && softf && count < 8)
	      {  //printf("%d %d\n",count,point(count));
	      count++;
	      }
	    sum=point(count);
	    if(count==0 && sum == 21)
	      printf("blackjack\n");
	    else if(sum < 22)
	      printf("%d\n",sum);
	    else
	      printf("bust\n");
	}

    }

return(0);
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	N
	.bss
	.align 4
	.type	N, @object
	.size	N, 4
N:
	.zero	4
	.globl	d1
	.type	d1, @object
	.size	d1, 1
d1:
	.zero	1
	.globl	d2
	.type	d2, @object
	.size	d2, 1
d2:
	.zero	1
	.globl	pile
	.align 8
	.type	pile, @object
	.size	pile, 8
pile:
	.zero	8
	.globl	acef
	.align 4
	.type	acef, @object
	.size	acef, 4
acef:
	.zero	4
	.globl	softf
	.align 4
	.type	softf, @object
	.size	softf, 4
softf:
	.zero	4
	.text
	.globl	eval_card
	.type	eval_card, @function
eval_card:
.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)
	cmpb	$84, -4(%rbp)
	je	.L2
	cmpb	$74, -4(%rbp)
	je	.L2
	cmpb	$81, -4(%rbp)
	je	.L2
	cmpb	$75, -4(%rbp)
	jne	.L3
.L2:
	movl	$10, %eax
	jmp	.L4
.L3:
	cmpb	$65, -4(%rbp)
	jne	.L5
	movl	$1, %eax
	jmp	.L4
.L5:
	movsbl	-4(%rbp), %eax
	subl	$48, %eax
.L4:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	eval_card, .-eval_card
	.globl	point
	.type	point, @function
point:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$24, %rsp
	movl	%edi, -20(%rbp)
	movl	$0, -4(%rbp)
	movl	$0, -8(%rbp)
	jmp	.L7
.L9:
	movl	-8(%rbp), %eax
	cltq
	leaq	pile(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	movsbl	%al, %eax
	movl	%eax, %edi
	call	eval_card
	addl	%eax, -4(%rbp)
	movl	-8(%rbp), %eax
	cltq
	leaq	pile(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$65, %al
	jne	.L8
	movl	$-1, acef(%rip)
.L8:
	addl	$1, -8(%rbp)
.L7:
	movl	-20(%rbp), %eax
	addl	$1, %eax
	cmpl	%eax, -8(%rbp)
	jle	.L9
	movl	$0, softf(%rip)
	cmpl	$11, -4(%rbp)
	jg	.L10
	movl	acef(%rip), %eax
	testl	%eax, %eax
	je	.L10
	movl	$-1, softf(%rip)
	addl	$10, -4(%rbp)
.L10:
	movl	-4(%rbp), %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	point, .-point
	.section	.rodata
.LC0:
	.string	"blackjack"
.LC1:
	.string	"%d\n"
.LC2:
	.string	"bust"
	.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
	jmp	.L13
.L23:
	movl	$0, -44(%rbp)
	jmp	.L14
.L21:
	movq	stdin(%rip), %rdx
	leaq	-32(%rbp), %rax
	movl	$20, %esi
	movq	%rax, %rdi
	call	fgets@PLT
	movzbl	-32(%rbp), %eax
	movb	%al, pile(%rip)
	movzbl	-30(%rbp), %eax
	movb	%al, 1+pile(%rip)
	movq	stdin(%rip), %rdx
	leaq	-32(%rbp), %rax
	movl	$20, %esi
	movq	%rax, %rdi
	call	fgets@PLT
	movzbl	-32(%rbp), %eax
	movb	%al, 2+pile(%rip)
	movzbl	-30(%rbp), %eax
	movb	%al, 3+pile(%rip)
	movzbl	-28(%rbp), %eax
	movb	%al, 4+pile(%rip)
	movzbl	-26(%rbp), %eax
	movb	%al, 5+pile(%rip)
	movzbl	-24(%rbp), %eax
	movb	%al, 6+pile(%rip)
	movzbl	-22(%rbp), %eax
	movb	%al, 7+pile(%rip)
	movzbl	-20(%rbp), %eax
	movb	%al, 8+pile(%rip)
	movzbl	-18(%rbp), %eax
	movb	%al, 9+pile(%rip)
	movl	$0, -40(%rbp)
	movl	$0, acef(%rip)
	jmp	.L15
.L16:
	addl	$1, -40(%rbp)
.L15:
	movl	-40(%rbp), %eax
	movl	%eax, %edi
	call	point
	cmpl	$16, %eax
	jle	.L16
	movl	-40(%rbp), %eax
	movl	%eax, %edi
	call	point
	cmpl	$17, %eax
	jne	.L17
	movl	softf(%rip), %eax
	testl	%eax, %eax
	je	.L17
	cmpl	$7, -40(%rbp)
	jle	.L16
.L17:
	movl	-40(%rbp), %eax
	movl	%eax, %edi
	call	point
	movl	%eax, -36(%rbp)
	cmpl	$0, -40(%rbp)
	jne	.L18
	cmpl	$21, -36(%rbp)
	jne	.L18
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	jmp	.L19
.L18:
	cmpl	$21, -36(%rbp)
	jg	.L20
	movl	-36(%rbp), %eax
	movl	%eax, %esi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	jmp	.L19
.L20:
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L19:
	addl	$1, -44(%rbp)
.L14:
	movl	N(%rip), %eax
	cmpl	%eax, -44(%rbp)
	jl	.L21
.L13:
	leaq	N(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	cmpl	$-1, %eax
	je	.L22
	movl	N(%rip), %eax
	testl	%eax, %eax
	jne	.L23
.L22:
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L25
	call	__stack_chk_fail@PLT
.L25:
	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	eval_card
	.type	eval_card, @function
eval_card:
.LFB23:
	.cfi_startproc
	endbr64
	leal	-74(%rdi), %eax
	cmpb	$10, %al
	jbe	.L2
	movl	$1, %r8d
	cmpb	$65, %dil
	je	.L1
.L4:
	movsbl	%dil, %edi
	leal	-48(%rdi), %r8d
.L1:
	movl	%r8d, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L2:
	movq	$-1156, %rdx
	movl	$10, %r8d
	btq	%rax, %rdx
	jc	.L4
	movl	%r8d, %eax
	ret
	.cfi_endproc
.LFE23:
	.size	eval_card, .-eval_card
	.p2align 4
	.globl	point
	.type	point, @function
point:
.LFB24:
	.cfi_startproc
	endbr64
	movl	%edi, %edx
	cmpl	$-1, %edi
	jl	.L11
	movsbl	pile(%rip), %eax
	leal	-74(%rax), %ecx
	cmpb	$10, %cl
	jbe	.L104
	cmpb	$65, %al
	jne	.L13
	movl	$1, %ecx
	movl	$1, %eax
	testl	%edi, %edi
	js	.L105
	movsbl	1+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	ja	.L16
.L109:
	movq	$-1156, %r8
	btq	%rdi, %r8
	jnc	.L106
.L17:
	leal	-48(%rax,%rsi), %eax
.L61:
	testl	%edx, %edx
	je	.L20
	movsbl	2+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	ja	.L21
.L110:
	movq	$-1156, %r8
	btq	%rdi, %r8
	jnc	.L107
.L22:
	leal	-48(%rax,%rsi), %eax
.L59:
	cmpl	$1, %edx
	jne	.L58
	.p2align 4,,10
	.p2align 3
.L20:
	testb	%cl, %cl
	je	.L46
.L48:
	movl	$-1, acef(%rip)
.L46:
	movl	$0, softf(%rip)
	cmpl	$11, %eax
	jle	.L45
.L10:
	ret
	.p2align 4,,10
	.p2align 3
.L104:
	movq	$-1156, %rsi
	btq	%rcx, %rsi
	jnc	.L108
.L13:
	subl	$48, %eax
.L14:
	xorl	%ecx, %ecx
	testl	%edx, %edx
	js	.L46
	movsbl	1+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	jbe	.L109
.L16:
	cmpb	$65, %sil
	jne	.L17
	addl	$1, %eax
	movl	$1, %ecx
	testl	%edx, %edx
	je	.L48
	movsbl	2+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	jbe	.L110
.L21:
	cmpb	$65, %sil
	jne	.L22
	addl	$1, %eax
	movl	$1, %ecx
	cmpl	$1, %edx
	je	.L48
.L58:
	movsbl	3+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	ja	.L25
	movq	$-1156, %r8
	btq	%rdi, %r8
	jnc	.L111
.L26:
	leal	-48(%rax,%rsi), %eax
.L57:
	cmpl	$2, %edx
	je	.L20
	movsbl	4+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	ja	.L29
.L116:
	movq	$-1156, %r8
	btq	%rdi, %r8
	jnc	.L112
.L30:
	leal	-48(%rax,%rsi), %eax
.L55:
	cmpl	$3, %edx
	je	.L20
	movsbl	5+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	jbe	.L113
.L33:
	cmpb	$65, %sil
	jne	.L34
	addl	$1, %eax
	movl	$1, %ecx
	cmpl	$4, %edx
	je	.L48
	movsbl	6+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	jbe	.L114
.L37:
	cmpb	$65, %sil
	jne	.L38
	addl	$1, %eax
	movl	$1, %ecx
	cmpl	$5, %edx
	je	.L48
	movsbl	7+pile(%rip), %edx
	leal	-74(%rdx), %esi
	cmpb	$10, %sil
	jbe	.L115
.L41:
	cmpb	$65, %dl
	jne	.L42
	addl	$1, %eax
	jmp	.L48
	.p2align 4,,10
	.p2align 3
.L11:
	movl	$0, softf(%rip)
	xorl	%eax, %eax
.L45:
	movl	acef(%rip), %edx
	testl	%edx, %edx
	je	.L10
	movl	$-1, softf(%rip)
	addl	$10, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L25:
	cmpb	$65, %sil
	jne	.L26
	addl	$1, %eax
	movl	$1, %ecx
	cmpl	$2, %edx
	je	.L48
	movsbl	4+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	jbe	.L116
.L29:
	cmpb	$65, %sil
	jne	.L30
	addl	$1, %eax
	movl	$1, %ecx
	cmpl	$3, %edx
	je	.L48
	movsbl	5+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	ja	.L33
.L113:
	movq	$-1156, %r8
	btq	%rdi, %r8
	jnc	.L117
.L34:
	leal	-48(%rax,%rsi), %eax
.L53:
	cmpl	$4, %edx
	je	.L20
	movsbl	6+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	ja	.L37
.L114:
	movq	$-1156, %r8
	btq	%rdi, %r8
	jnc	.L118
.L38:
	leal	-48(%rax,%rsi), %eax
.L51:
	cmpl	$5, %edx
	je	.L20
	movsbl	7+pile(%rip), %edx
	leal	-74(%rdx), %esi
	cmpb	$10, %sil
	ja	.L41
.L115:
	movq	$-1156, %rdi
	btq	%rsi, %rdi
	jnc	.L119
.L42:
	leal	-48(%rax,%rdx), %eax
	jmp	.L20
	.p2align 4,,10
	.p2align 3
.L107:
	addl	$10, %eax
	jmp	.L59
	.p2align 4,,10
	.p2align 3
.L111:
	addl	$10, %eax
	jmp	.L57
	.p2align 4,,10
	.p2align 3
.L112:
	addl	$10, %eax
	jmp	.L55
	.p2align 4,,10
	.p2align 3
.L108:
	movl	$10, %eax
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L106:
	addl	$10, %eax
	jmp	.L61
	.p2align 4,,10
	.p2align 3
.L117:
	addl	$10, %eax
	jmp	.L53
	.p2align 4,,10
	.p2align 3
.L118:
	addl	$10, %eax
	jmp	.L51
.L119:
	addl	$10, %eax
	jmp	.L20
.L105:
	movl	$-1, acef(%rip)
	movl	$0, softf(%rip)
	jmp	.L45
	.cfi_endproc
.LFE24:
	.size	point, .-point
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"blackjack"
.LC1:
	.string	"%d\n"
.LC2:
	.string	"bust"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB25:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	.LC0(%rip), %r15
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	leaq	.LC2(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	leaq	.LC1(%rip), %r13
	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	$40, %rsp
	.cfi_def_cfa_offset 96
	movq	%fs:40, %rax
	movq	%rax, 24(%rsp)
	xorl	%eax, %eax
	movq	%rsp, %rbp
	.p2align 4,,10
	.p2align 3
.L121:
	xorl	%eax, %eax
	leaq	N(%rip), %rsi
	movq	%r13, %rdi
	call	__isoc99_scanf@PLT
	cmpl	$-1, %eax
	je	.L130
	movl	N(%rip), %eax
	testl	%eax, %eax
	je	.L130
	movl	$0, %ebx
	leaq	pile(%rip), %r12
	jle	.L121
	.p2align 4,,10
	.p2align 3
.L129:
	movq	stdin(%rip), %rdx
	movl	$20, %esi
	movq	%rbp, %rdi
	call	fgets@PLT
	xorl	%eax, %eax
	movb	(%rsp), %al
	movb	2(%rsp), %ah
	movq	stdin(%rip), %rdx
	movl	$20, %esi
	movq	%rbp, %rdi
	movw	%ax, (%r12)
	call	fgets@PLT
	movzbl	14(%rsp), %eax
	movzbl	12(%rsp), %edx
	xorl	%r9d, %r9d
	movl	$0, acef(%rip)
	salq	$8, %rax
	orq	%rdx, %rax
	movzbl	10(%rsp), %edx
	salq	$8, %rax
	orq	%rdx, %rax
	movzbl	8(%rsp), %edx
	salq	$8, %rax
	orq	%rdx, %rax
	movzbl	6(%rsp), %edx
	salq	$8, %rax
	orq	%rdx, %rax
	movzbl	4(%rsp), %edx
	salq	$8, %rax
	orq	%rdx, %rax
	movzbl	2(%rsp), %edx
	salq	$8, %rax
	orq	%rdx, %rax
	movzbl	(%rsp), %edx
	salq	$8, %rax
	orq	%rdx, %rax
	movq	%rax, 2+pile(%rip)
	jmp	.L122
	.p2align 4,,10
	.p2align 3
.L152:
	cmpl	$7, %r9d
	jg	.L124
.L123:
	addl	$1, %r9d
.L122:
	movl	%r9d, %edi
	call	point
	cmpl	$16, %eax
	jle	.L123
	movl	%r9d, %edi
	call	point
	cmpl	$17, %eax
	jne	.L124
	movl	softf(%rip), %edx
	testl	%edx, %edx
	jne	.L152
.L124:
	movl	%r9d, %edi
	call	point
	testl	%r9d, %r9d
	jne	.L126
	cmpl	$21, %eax
	jne	.L126
	movq	%r15, %rdi
	call	puts@PLT
.L127:
	addl	$1, %ebx
	cmpl	%ebx, N(%rip)
	jg	.L129
	jmp	.L121
	.p2align 4,,10
	.p2align 3
.L126:
	cmpl	$21, %eax
	jg	.L128
	movl	%eax, %edx
	movq	%r13, %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	jmp	.L127
	.p2align 4,,10
	.p2align 3
.L128:
	movq	%r14, %rdi
	call	puts@PLT
	jmp	.L127
.L130:
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L153
	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
.L153:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE25:
	.size	main, .-main
	.globl	softf
	.bss
	.align 4
	.type	softf, @object
	.size	softf, 4
softf:
	.zero	4
	.globl	acef
	.align 4
	.type	acef, @object
	.size	acef, 4
acef:
	.zero	4
	.globl	pile
	.align 8
	.type	pile, @object
	.size	pile, 8
pile:
	.zero	8
	.globl	d2
	.type	d2, @object
	.size	d2, 1
d2:
	.zero	1
	.globl	d1
	.type	d1, @object
	.size	d1, 1
d1:
	.zero	1
	.globl	N
	.align 4
	.type	N, @object
	.size	N, 4
N:
	.zero	4
	.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	eval_card
	.type	eval_card, @function
eval_card:
.LFB23:
	.cfi_startproc
	endbr64
	leal	-74(%rdi), %eax
	cmpb	$10, %al
	jbe	.L2
	movl	$1, %r8d
	cmpb	$65, %dil
	je	.L1
.L4:
	movsbl	%dil, %edi
	leal	-48(%rdi), %r8d
.L1:
	movl	%r8d, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L2:
	movq	$-1156, %rdx
	movl	$10, %r8d
	btq	%rax, %rdx
	jc	.L4
	movl	%r8d, %eax
	ret
	.cfi_endproc
.LFE23:
	.size	eval_card, .-eval_card
	.p2align 4
	.globl	point
	.type	point, @function
point:
.LFB24:
	.cfi_startproc
	endbr64
	movl	%edi, %edx
	cmpl	$-1, %edi
	jl	.L11
	movsbl	pile(%rip), %eax
	leal	-74(%rax), %ecx
	cmpb	$10, %cl
	jbe	.L104
	cmpb	$65, %al
	jne	.L13
	movl	$1, %ecx
	movl	$1, %eax
	testl	%edi, %edi
	js	.L105
	movsbl	1+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	ja	.L16
.L109:
	movq	$-1156, %r8
	btq	%rdi, %r8
	jnc	.L106
.L17:
	leal	-48(%rax,%rsi), %eax
.L61:
	testl	%edx, %edx
	je	.L20
	movsbl	2+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	ja	.L21
.L110:
	movq	$-1156, %r8
	btq	%rdi, %r8
	jnc	.L107
.L22:
	leal	-48(%rax,%rsi), %eax
.L59:
	cmpl	$1, %edx
	jne	.L58
	.p2align 4,,10
	.p2align 3
.L20:
	testb	%cl, %cl
	je	.L46
.L48:
	movl	$-1, acef(%rip)
.L46:
	movl	$0, softf(%rip)
	cmpl	$11, %eax
	jle	.L45
.L10:
	ret
	.p2align 4,,10
	.p2align 3
.L104:
	movq	$-1156, %rsi
	btq	%rcx, %rsi
	jnc	.L108
.L13:
	subl	$48, %eax
.L14:
	xorl	%ecx, %ecx
	testl	%edx, %edx
	js	.L46
	movsbl	1+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	jbe	.L109
.L16:
	cmpb	$65, %sil
	jne	.L17
	addl	$1, %eax
	movl	$1, %ecx
	testl	%edx, %edx
	je	.L48
	movsbl	2+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	jbe	.L110
.L21:
	cmpb	$65, %sil
	jne	.L22
	addl	$1, %eax
	movl	$1, %ecx
	cmpl	$1, %edx
	je	.L48
.L58:
	movsbl	3+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	ja	.L25
	movq	$-1156, %r8
	btq	%rdi, %r8
	jnc	.L111
.L26:
	leal	-48(%rax,%rsi), %eax
.L57:
	cmpl	$2, %edx
	je	.L20
	movsbl	4+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	ja	.L29
.L116:
	movq	$-1156, %r8
	btq	%rdi, %r8
	jnc	.L112
.L30:
	leal	-48(%rax,%rsi), %eax
.L55:
	cmpl	$3, %edx
	je	.L20
	movsbl	5+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	jbe	.L113
.L33:
	cmpb	$65, %sil
	jne	.L34
	addl	$1, %eax
	movl	$1, %ecx
	cmpl	$4, %edx
	je	.L48
	movsbl	6+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	jbe	.L114
.L37:
	cmpb	$65, %sil
	jne	.L38
	addl	$1, %eax
	movl	$1, %ecx
	cmpl	$5, %edx
	je	.L48
	movsbl	7+pile(%rip), %edx
	leal	-74(%rdx), %esi
	cmpb	$10, %sil
	jbe	.L115
.L41:
	cmpb	$65, %dl
	jne	.L42
	addl	$1, %eax
	jmp	.L48
	.p2align 4,,10
	.p2align 3
.L11:
	movl	$0, softf(%rip)
	xorl	%eax, %eax
.L45:
	movl	acef(%rip), %edx
	testl	%edx, %edx
	je	.L10
	movl	$-1, softf(%rip)
	addl	$10, %eax
	ret
	.p2align 4,,10
	.p2align 3
.L25:
	cmpb	$65, %sil
	jne	.L26
	addl	$1, %eax
	movl	$1, %ecx
	cmpl	$2, %edx
	je	.L48
	movsbl	4+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	jbe	.L116
.L29:
	cmpb	$65, %sil
	jne	.L30
	addl	$1, %eax
	movl	$1, %ecx
	cmpl	$3, %edx
	je	.L48
	movsbl	5+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	ja	.L33
.L113:
	movq	$-1156, %r8
	btq	%rdi, %r8
	jnc	.L117
.L34:
	leal	-48(%rax,%rsi), %eax
.L53:
	cmpl	$4, %edx
	je	.L20
	movsbl	6+pile(%rip), %esi
	leal	-74(%rsi), %edi
	cmpb	$10, %dil
	ja	.L37
.L114:
	movq	$-1156, %r8
	btq	%rdi, %r8
	jnc	.L118
.L38:
	leal	-48(%rax,%rsi), %eax
.L51:
	cmpl	$5, %edx
	je	.L20
	movsbl	7+pile(%rip), %edx
	leal	-74(%rdx), %esi
	cmpb	$10, %sil
	ja	.L41
.L115:
	movq	$-1156, %rdi
	btq	%rsi, %rdi
	jnc	.L119
.L42:
	leal	-48(%rax,%rdx), %eax
	jmp	.L20
	.p2align 4,,10
	.p2align 3
.L107:
	addl	$10, %eax
	jmp	.L59
	.p2align 4,,10
	.p2align 3
.L111:
	addl	$10, %eax
	jmp	.L57
	.p2align 4,,10
	.p2align 3
.L112:
	addl	$10, %eax
	jmp	.L55
	.p2align 4,,10
	.p2align 3
.L108:
	movl	$10, %eax
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L106:
	addl	$10, %eax
	jmp	.L61
	.p2align 4,,10
	.p2align 3
.L117:
	addl	$10, %eax
	jmp	.L53
	.p2align 4,,10
	.p2align 3
.L118:
	addl	$10, %eax
	jmp	.L51
.L119:
	addl	$10, %eax
	jmp	.L20
.L105:
	movl	$-1, acef(%rip)
	movl	$0, softf(%rip)
	jmp	.L45
	.cfi_endproc
.LFE24:
	.size	point, .-point
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"blackjack"
.LC1:
	.string	"%d\n"
.LC2:
	.string	"bust"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB25:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	leaq	.LC0(%rip), %r15
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	leaq	.LC2(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	leaq	.LC1(%rip), %r13
	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	$40, %rsp
	.cfi_def_cfa_offset 96
	movq	%fs:40, %rax
	movq	%rax, 24(%rsp)
	xorl	%eax, %eax
	movq	%rsp, %rbp
	.p2align 4,,10
	.p2align 3
.L121:
	xorl	%eax, %eax
	leaq	N(%rip), %rsi
	movq	%r13, %rdi
	call	__isoc99_scanf@PLT
	cmpl	$-1, %eax
	je	.L130
	movl	N(%rip), %eax
	testl	%eax, %eax
	je	.L130
	movl	$0, %ebx
	leaq	pile(%rip), %r12
	jle	.L121
	.p2align 4,,10
	.p2align 3
.L129:
	movq	stdin(%rip), %rdx
	movl	$20, %esi
	movq	%rbp, %rdi
	call	fgets@PLT
	xorl	%eax, %eax
	movb	(%rsp), %al
	movb	2(%rsp), %ah
	movq	stdin(%rip), %rdx
	movl	$20, %esi
	movq	%rbp, %rdi
	movw	%ax, (%r12)
	call	fgets@PLT
	movzbl	14(%rsp), %eax
	movzbl	12(%rsp), %edx
	xorl	%r9d, %r9d
	movl	$0, acef(%rip)
	salq	$8, %rax
	orq	%rdx, %rax
	movzbl	10(%rsp), %edx
	salq	$8, %rax
	orq	%rdx, %rax
	movzbl	8(%rsp), %edx
	salq	$8, %rax
	orq	%rdx, %rax
	movzbl	6(%rsp), %edx
	salq	$8, %rax
	orq	%rdx, %rax
	movzbl	4(%rsp), %edx
	salq	$8, %rax
	orq	%rdx, %rax
	movzbl	2(%rsp), %edx
	salq	$8, %rax
	orq	%rdx, %rax
	movzbl	(%rsp), %edx
	salq	$8, %rax
	orq	%rdx, %rax
	movq	%rax, 2+pile(%rip)
	jmp	.L122
	.p2align 4,,10
	.p2align 3
.L152:
	cmpl	$7, %r9d
	jg	.L124
.L123:
	addl	$1, %r9d
.L122:
	movl	%r9d, %edi
	call	point
	cmpl	$16, %eax
	jle	.L123
	movl	%r9d, %edi
	call	point
	cmpl	$17, %eax
	jne	.L124
	movl	softf(%rip), %edx
	testl	%edx, %edx
	jne	.L152
.L124:
	movl	%r9d, %edi
	call	point
	testl	%r9d, %r9d
	jne	.L126
	cmpl	$21, %eax
	jne	.L126
	movq	%r15, %rdi
	call	puts@PLT
.L127:
	addl	$1, %ebx
	cmpl	%ebx, N(%rip)
	jg	.L129
	jmp	.L121
	.p2align 4,,10
	.p2align 3
.L126:
	cmpl	$21, %eax
	jg	.L128
	movl	%eax, %edx
	movq	%r13, %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
	jmp	.L127
	.p2align 4,,10
	.p2align 3
.L128:
	movq	%r14, %rdi
	call	puts@PLT
	jmp	.L127
.L130:
	movq	24(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L153
	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
.L153:
	.cfi_restore_state
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE25:
	.size	main, .-main
	.globl	softf
	.bss
	.align 4
	.type	softf, @object
	.size	softf, 4
softf:
	.zero	4
	.globl	acef
	.align 4
	.type	acef, @object
	.size	acef, 4
acef:
	.zero	4
	.globl	pile
	.align 8
	.type	pile, @object
	.size	pile, 8
pile:
	.zero	8
	.globl	d2
	.type	d2, @object
	.size	d2, 1
d2:
	.zero	1
	.globl	d1
	.type	d1, @object
	.size	d1, 1
d1:
	.zero	1
	.globl	N
	.align 4
	.type	N, @object
	.size	N, 4
N:
	.zero	4
	.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:

/*
AizuOnline A2024
Title blackjack
*/
#include <stdio.h>
// Select Below
//#include <stdlib.h>
//#include <string.h>
//#include <float.h>
//#include <math.h>
//#include <limits.h>
//Global data section
int N;
char d1,d2;
char pile[8];
int acef;
int softf;//including A that counts as 11
//
int   eval_card(char c)
 {
   if(c=='T' || c=='J' || c=='Q' || c=='K')
     return(10);
   if(c=='A')
     return(1);
   return(c - '0');
 }
int point(int c)
{
  int i,ret;

  ret=0;

  for(i=0;i<c+2;i++)
    {
      ret += eval_card(pile[i]);
      if(pile[i]=='A')
	acef=-1;
    }
  softf=0;
  if(ret < 12 && acef)
    { softf=-1;
      ret += 10;
    }
  return(ret);
}

main()
{
  int i,j,count,sum;
  char s[20],s2[20];

  while(EOF != scanf("%d\n",&N) && N)
    {
      for(i=0;i<N;i++)
	{
	  fgets(s,20,stdin);
	  pile[0]=s[0];pile[1]=s[2];
	  fgets(s,20,stdin);
	  pile[2]=s[0];pile[3]=s[2];pile[4]=s[4];pile[5]=s[6];
	  pile[6]=s[8];pile[7]=s[10];pile[8]=s[12];pile[9]=s[14];
	  count=0;acef=0;
	    while(point(count) < 17 ||point(count) == 17 && softf && count < 8)
	      {  //printf("%d %d\n",count,point(count));
	      count++;
	      }
	    sum=point(count);
	    if(count==0 && sum == 21)
	      printf("blackjack\n");
	    else if(sum < 22)
	      printf("%d\n",sum);
	    else
	      printf("bust\n");
	}

    }

return(0);
}
4
5 4
9 2 8 3 9 4 6 5
A J
K Q J T 9 8 7 6
T 4
7 J A 6 Q T K 7
2 2
2 3 4 K 2 3 4 K
 4
5 4
9 2 3 3 9 4 9 5
A J
K Q J T 9 8 8 6
T 7
7 J A 6 Q T K 7
2 2
2 3 4 K 2 3 4 K
 4
5 4
9 2 8 3 7 4 6 5
A J
K Q J T 9 8 7 6
T 5
7 J A 6 Q T K 7
2 2
2 3 4 K 2 3 4 K
 4
5 4
9 2 8 3 7 4 6 5
A J
K Q J T 9 8 7 6
T 9
7 J A 6 Q T K 7
2 2
2 3 4 K 2 3 4 K
 4
5 4
9 2 8 3 7 4 6 5
A J
K Q J T 9 7 7 6
T 8
7 J A 6 Q T K 7
2 3
2 3 4 K 2 3 4 K
 4
0 4
9 2 8 3 7 8 6 2
A J
K Q J T 9 7 7 6
T 4
7 J A 6 Q T K 5
2 2
2 2 4 J 3 3 4 K
 4
5 5
9 2 3 3 9 4 9 5
A J
K Q K T 9 8 8 6
T 7
7 J A 6 Q T K 7
2 2
2 3 4 K 2 3 4 K
 4
9 4
9 2 6 3 7 4 6 5
A J
K Q J T 9 8 7 6
T 5
7 J A 6 Q T K 7
2 2
2 3 4 K 2 3 4 K
 4
5 8
9 2 8 4 7 4 6 6
A J
K Q J T 9 7 7 6
T 8
7 J A 6 Q T K 7
2 3
2 3 4 K 2 3 4 K
 4
7 4
9 2 8 1 8 5 6 5
A J
K Q J T 9 7 7 6
T 4
7 J A 6 Q T K 5
2 2
2 3 4 J 2 5 0 K

18
blackjack
21
bust
 18
blackjack
17
bust
 18
blackjack
bust
bust
 18
blackjack
19
bust
 18
blackjack
18
bust
 bust
blackjack
21
bust
 19
blackjack
17
bust
 bust
blackjack
bust
bust
 bust
blackjack
18
bust
 20
blackjack
21
bust

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

```c
/*
AizuOnline A2024
Title blackjack
*/
#include <stdio.h>
// Select Below
//#include <stdlib.h>
//#include <string.h>
//#include <float.h>
//#include <math.h>
//#include <limits.h>
//Global data section
int N;
char d1,d2;
char pile[8];
int acef;
int softf;//including A that counts as 11
//
int   eval_card(char c)
 {
   if(c=='T' || c=='J' || c=='Q' || c=='K')
     return(10);
   if(c=='A')
     return(1);
   return(c - '0');
 }
int point(int c)
{
  int i,ret;

  ret=0;

  for(i=0;i<c+2;i++)
    {
      ret += eval_card(pile[i]);
      if(pile[i]=='A')
	acef=-1;
    }
  softf=0;
  if(ret < 12 && acef)
    { softf=-1;
      ret += 10;
    }
  return(ret);
}

main()
{
  int i,j,count,sum;
  char s[20],s2[20];

  while(EOF != scanf("%d\n",&N) && N)
    {
      for(i=0;i<N;i++)
	{
	  fgets(s,20,stdin);
	  pile[0]=s[0];pile[1]=s[2];
	  fgets(s,20,stdin);
	  pile[2]=s[0];pile[3]=s[2];pile[4]=s[4];pile[5]=s[6];
	  pile[6]=s[8];pile[7]=s[10];pile[8]=s[12];pile[9]=s[14];
	  count=0;acef=0;
	    while(point(count) < 17 ||point(count) == 17 && softf && count < 8)
	      {  //printf("%d %d\n",count,point(count));
	      count++;
	      }
	    sum=point(count);
	    if(count==0 && sum == 21)
	      printf("blackjack\n");
	    else if(sum < 22)
	      printf("%d\n",sum);
	    else
	      printf("bust\n");
	}

    }

return(0);
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	N
	.bss
	.align 4
	.type	N, @object
	.size	N, 4
N:
	.zero	4
	.globl	d1
	.type	d1, @object
	.size	d1, 1
d1:
	.zero	1
	.globl	d2
	.type	d2, @object
	.size	d2, 1
d2:
	.zero	1
	.globl	pile
	.align 8
	.type	pile, @object
	.size	pile, 8
pile:
	.zero	8
	.globl	acef
	.align 4
	.type	acef, @object
	.size	acef, 4
acef:
	.zero	4
	.globl	softf
	.align 4
	.type	softf, @object
	.size	softf, 4
softf:
	.zero	4
	.text
	.globl	eval_card
	.type	eval_card, @function
eval_card:
.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)
	cmpb	$84, -4(%rbp)
	je	.L2
	cmpb	$74, -4(%rbp)
	je	.L2
	cmpb	$81, -4(%rbp)
	je	.L2
	cmpb	$75, -4(%rbp)
	jne	.L3
.L2:
	movl	$10, %eax
	jmp	.L4
.L3:
	cmpb	$65, -4(%rbp)
	jne	.L5
	movl	$1, %eax
	jmp	.L4
.L5:
	movsbl	-4(%rbp), %eax
	subl	$48, %eax
.L4:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	eval_card, .-eval_card
	.globl	point
	.type	point, @function
point:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$24, %rsp
	movl	%edi, -20(%rbp)
	movl	$0, -4(%rbp)
	movl	$0, -8(%rbp)
	jmp	.L7
.L9:
	movl	-8(%rbp), %eax
	cltq
	leaq	pile(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	movsbl	%al, %eax
	movl	%eax, %edi
	call	eval_card
	addl	%eax, -4(%rbp)
	movl	-8(%rbp), %eax
	cltq
	leaq	pile(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$65, %al
	jne	.L8
	movl	$-1, acef(%rip)
.L8:
	addl	$1, -8(%rbp)
.L7:
	movl	-20(%rbp), %eax
	addl	$1, %eax
	cmpl	%eax, -8(%rbp)
	jle	.L9
	movl	$0, softf(%rip)
	cmpl	$11, -4(%rbp)
	jg	.L10
	movl	acef(%rip), %eax
	testl	%eax, %eax
	je	.L10
	movl	$-1, softf(%rip)
	addl	$10, -4(%rbp)
.L10:
	movl	-4(%rbp), %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	point, .-point
	.section	.rodata
.LC0:
	.string	"blackjack"
.LC1:
	.string	"%d\n"
.LC2:
	.string	"bust"
	.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
	jmp	.L13
.L23:
	movl	$0, -44(%rbp)
	jmp	.L14
.L21:
	movq	stdin(%rip), %rdx
	leaq	-32(%rbp), %rax
	movl	$20, %esi
	movq	%rax, %rdi
	call	fgets@PLT
	movzbl	-32(%rbp), %eax
	movb	%al, pile(%rip)
	movzbl	-30(%rbp), %eax
	movb	%al, 1+pile(%rip)
	movq	stdin(%rip), %rdx
	leaq	-32(%rbp), %rax
	movl	$20, %esi
	movq	%rax, %rdi
	call	fgets@PLT
	movzbl	-32(%rbp), %eax
	movb	%al, 2+pile(%rip)
	movzbl	-30(%rbp), %eax
	movb	%al, 3+pile(%rip)
	movzbl	-28(%rbp), %eax
	movb	%al, 4+pile(%rip)
	movzbl	-26(%rbp), %eax
	movb	%al, 5+pile(%rip)
	movzbl	-24(%rbp), %eax
	movb	%al, 6+pile(%rip)
	movzbl	-22(%rbp), %eax
	movb	%al, 7+pile(%rip)
	movzbl	-20(%rbp), %eax
	movb	%al, 8+pile(%rip)
	movzbl	-18(%rbp), %eax
	movb	%al, 9+pile(%rip)
	movl	$0, -40(%rbp)
	movl	$0, acef(%rip)
	jmp	.L15
.L16:
	addl	$1, -40(%rbp)
.L15:
	movl	-40(%rbp), %eax
	movl	%eax, %edi
	call	point
	cmpl	$16, %eax
	jle	.L16
	movl	-40(%rbp), %eax
	movl	%eax, %edi
	call	point
	cmpl	$17, %eax
	jne	.L17
	movl	softf(%rip), %eax
	testl	%eax, %eax
	je	.L17
	cmpl	$7, -40(%rbp)
	jle	.L16
.L17:
	movl	-40(%rbp), %eax
	movl	%eax, %edi
	call	point
	movl	%eax, -36(%rbp)
	cmpl	$0, -40(%rbp)
	jne	.L18
	cmpl	$21, -36(%rbp)
	jne	.L18
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	jmp	.L19
.L18:
	cmpl	$21, -36(%rbp)
	jg	.L20
	movl	-36(%rbp), %eax
	movl	%eax, %esi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	jmp	.L19
.L20:
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L19:
	addl	$1, -44(%rbp)
.L14:
	movl	N(%rip), %eax
	cmpl	%eax, -44(%rbp)
	jl	.L21
.L13:
	leaq	N(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	cmpl	$-1, %eax
	je	.L22
	movl	N(%rip), %eax
	testl	%eax, %eax
	jne	.L23
.L22:
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L25
	call	__stack_chk_fail@PLT
.L25:
	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	N
	.bss
	.align 4
	.type	N, @object
	.size	N, 4
N:
	.zero	4
	.globl	d1
	.type	d1, @object
	.size	d1, 1
d1:
	.zero	1
	.globl	d2
	.type	d2, @object
	.size	d2, 1
d2:
	.zero	1
	.globl	pile
	.align 8
	.type	pile, @object
	.size	pile, 8
pile:
	.zero	8
	.globl	acef
	.align 4
	.type	acef, @object
	.size	acef, 4
acef:
	.zero	4
	.globl	softf
	.align 4
	.type	softf, @object
	.size	softf, 4
softf:
	.zero	4
	.text
	.globl	eval_card
	.type	eval_card, @function
eval_card:
.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)
	cmpb	$84, -4(%rbp)
	je	.L2
	cmpb	$74, -4(%rbp)
	je	.L2
	cmpb	$81, -4(%rbp)
	je	.L2
	cmpb	$75, -4(%rbp)
	jne	.L3
.L2:
	movl	$10, %eax
	jmp	.L4
.L3:
	cmpb	$65, -4(%rbp)
	jne	.L5
	movl	$1, %eax
	jmp	.L4
.L5:
	movsbl	-4(%rbp), %eax
	subl	$48, %eax
.L4:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	eval_card, .-eval_card
	.globl	point
	.type	point, @function
point:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$24, %rsp
	movl	%edi, -20(%rbp)
	movl	$0, -4(%rbp)
	movl	$0, -8(%rbp)
	jmp	.L7
.L9:
	movl	-8(%rbp), %eax
	cltq
	leaq	pile(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	movsbl	%al, %eax
	movl	%eax, %edi
	call	eval_card
	addl	%eax, -4(%rbp)
	movl	-8(%rbp), %eax
	cltq
	leaq	pile(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	cmpb	$65, %al
	jne	.L8
	movl	$-1, acef(%rip)
.L8:
	addl	$1, -8(%rbp)
.L7:
	movl	-20(%rbp), %eax
	addl	$1, %eax
	cmpl	%eax, -8(%rbp)
	jle	.L9
	movl	$0, softf(%rip)
	cmpl	$11, -4(%rbp)
	jg	.L10
	movl	acef(%rip), %eax
	testl	%eax, %eax
	je	.L10
	movl	$-1, softf(%rip)
	addl	$10, -4(%rbp)
.L10:
	movl	-4(%rbp), %eax
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	point, .-point
	.section	.rodata
.LC0:
	.string	"blackjack"
.LC1:
	.string	"%d\n"
.LC2:
	.string	"bust"
	.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
	jmp	.L13
.L23:
	movl	$0, -44(%rbp)
	jmp	.L14
.L21:
	movq	stdin(%rip), %rdx
	leaq	-32(%rbp), %rax
	movl	$20, %esi
	movq	%rax, %rdi
	call	fgets@PLT
	movzbl	-32(%rbp), %eax
	movb	%al, pile(%rip)
	movzbl	-30(%rbp), %eax
	movb	%al, 1+pile(%rip)
	movq	stdin(%rip), %rdx
	leaq	-32(%rbp), %rax
	movl	$20, %esi
	movq	%rax, %rdi
	call	fgets@PLT
	movzbl	-32(%rbp), %eax
	movb	%al, 2+pile(%rip)
	movzbl	-30(%rbp), %eax
	movb	%al, 3+pile(%rip)
	movzbl	-28(%rbp), %eax
	movb	%al, 4+pile(%rip)
	movzbl	-26(%rbp), %eax
	movb	%al, 5+pile(%rip)
	movzbl	-24(%rbp), %eax
	movb	%al, 6+pile(%rip)
	movzbl	-22(%rbp), %eax
	movb	%al, 7+pile(%rip)
	movzbl	-20(%rbp), %eax
	movb	%al, 8+pile(%rip)
	movzbl	-18(%rbp), %eax
	movb	%al, 9+pile(%rip)
	movl	$0, -40(%rbp)
	movl	$0, acef(%rip)
	jmp	.L15
.L16:
	addl	$1, -40(%rbp)
.L15:
	movl	-40(%rbp), %eax
	movl	%eax, %edi
	call	point
	cmpl	$16, %eax
	jle	.L16
	movl	-40(%rbp), %eax
	movl	%eax, %edi
	call	point
	cmpl	$17, %eax
	jne	.L17
	movl	softf(%rip), %eax
	testl	%eax, %eax
	je	.L17
	cmpl	$7, -40(%rbp)
	jle	.L16
.L17:
	movl	-40(%rbp), %eax
	movl	%eax, %edi
	call	point
	movl	%eax, -36(%rbp)
	cmpl	$0, -40(%rbp)
	jne	.L18
	cmpl	$21, -36(%rbp)
	jne	.L18
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	jmp	.L19
.L18:
	cmpl	$21, -36(%rbp)
	jg	.L20
	movl	-36(%rbp), %eax
	movl	%eax, %esi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	jmp	.L19
.L20:
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
.L19:
	addl	$1, -44(%rbp)
.L14:
	movl	N(%rip), %eax
	cmpl	%eax, -44(%rbp)
	jl	.L21
.L13:
	leaq	N(%rip), %rax
	movq	%rax, %rsi
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	cmpl	$-1, %eax
	je	.L22
	movl	N(%rip), %eax
	testl	%eax, %eax
	jne	.L23
.L22:
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L25
	call	__stack_chk_fail@PLT
.L25:
	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:
