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

int main()
{
    int N,ii;
    scanf("%d",&N);
    char *s[51];
    for(ii=0;ii<51;ii++)
    {
        s[ii]=(char*)malloc(sizeof(char)*105);
    }
    char X[105];
    char **p=s;
    int t[51];
    int i;
    for(i=0; i<N; i++,p++)
    {
        scanf("%s",*p);
        scanf("%d",&t[i]);
    }
    scanf("%s",X);
    p=s;
    int sum=0,start=0;
    for(i=0; i<N; i++,p++)
    {
        if(!(strcmp(*p,X)))
        {
            start=i;break;
        }

    }
    for(i=start+1;i<N;i++)
    {
        sum+=t[i];
    }
    printf("%d",sum);



    return 0;
}
```

Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB51:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	leaq	.LC0(%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	$792, %rsp
	.cfi_def_cfa_offset 848
	movq	%fs:40, %rax
	movq	%rax, 776(%rsp)
	xorl	%eax, %eax
	leaq	28(%rsp), %rsi
	leaq	240(%rsp), %r12
	movq	%r12, %rbx
	leaq	648(%rsp), %rbp
	call	__isoc99_scanf@PLT
	.p2align 4,,10
	.p2align 3
.L2:
	movl	$105, %edi
	addq	$8, %rbx
	call	malloc@PLT
	movq	%rax, -8(%rbx)
	cmpq	%rbp, %rbx
	jne	.L2
	movl	28(%rsp), %eax
	leaq	32(%rsp), %rbp
	xorl	%ebx, %ebx
	leaq	.LC1(%rip), %r14
	testl	%eax, %eax
	jle	.L7
	.p2align 4,,10
	.p2align 3
.L6:
	movq	(%r12,%rbx,8), %rsi
	movq	%r14, %rdi
	xorl	%eax, %eax
	addq	$1, %rbx
	call	__isoc99_scanf@PLT
	movq	%rbp, %rsi
	movq	%r13, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	addq	$4, %rbp
	cmpl	%ebx, 28(%rsp)
	jg	.L6
.L7:
	leaq	656(%rsp), %rbp
	movq	%r14, %rdi
	xorl	%eax, %eax
	xorl	%r15d, %r15d
	movq	%rbp, %rsi
	call	__isoc99_scanf@PLT
	movslq	28(%rsp), %r14
	movl	%r14d, 12(%rsp)
	testl	%r14d, %r14d
	jg	.L9
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L60:
	addq	$1, %r15
	cmpq	%r14, %r15
	je	.L59
.L9:
	movq	(%r12,%r15,8), %rdi
	movq	%rbp, %rsi
	movl	%r15d, %ebx
	call	strcmp@PLT
	testl	%eax, %eax
	jne	.L60
.L8:
	movl	12(%rsp), %ecx
	leal	1(%rbx), %eax
	cmpl	%ecx, %eax
	jge	.L14
	movl	%ecx, %edx
	subl	%ebx, %edx
	leal	-1(%rdx), %esi
	subl	$2, %edx
	cmpl	$2, %edx
	jbe	.L15
	movl	%esi, %ecx
	movslq	%eax, %rdx
	leaq	32(%rsp,%rdx,4), %rdx
	shrl	$2, %ecx
	movdqu	(%rdx), %xmm0
	cmpl	$1, %ecx
	je	.L11
	movdqu	16(%rdx), %xmm2
	paddd	%xmm2, %xmm0
	cmpl	$2, %ecx
	je	.L11
	movdqu	32(%rdx), %xmm3
	paddd	%xmm3, %xmm0
	cmpl	$3, %ecx
	je	.L11
	movdqu	48(%rdx), %xmm4
	paddd	%xmm4, %xmm0
	cmpl	$4, %ecx
	je	.L11
	movdqu	64(%rdx), %xmm5
	paddd	%xmm5, %xmm0
	cmpl	$5, %ecx
	je	.L11
	movdqu	80(%rdx), %xmm6
	paddd	%xmm6, %xmm0
	cmpl	$6, %ecx
	je	.L11
	movdqu	96(%rdx), %xmm7
	paddd	%xmm7, %xmm0
	cmpl	$7, %ecx
	je	.L11
	movdqu	112(%rdx), %xmm7
	paddd	%xmm7, %xmm0
	cmpl	$8, %ecx
	je	.L11
	movdqu	128(%rdx), %xmm6
	paddd	%xmm6, %xmm0
	cmpl	$9, %ecx
	je	.L11
	movdqu	144(%rdx), %xmm5
	paddd	%xmm5, %xmm0
	cmpl	$10, %ecx
	je	.L11
	movdqu	160(%rdx), %xmm4
	paddd	%xmm4, %xmm0
	cmpl	$11, %ecx
	je	.L11
	movdqu	176(%rdx), %xmm1
	paddd	%xmm1, %xmm0
	.p2align 4,,10
	.p2align 3
.L11:
	movdqa	%xmm0, %xmm1
	movl	%esi, %ecx
	psrldq	$8, %xmm1
	andl	$-4, %ecx
	paddd	%xmm1, %xmm0
	addl	%ecx, %eax
	movdqa	%xmm0, %xmm1
	psrldq	$4, %xmm1
	paddd	%xmm1, %xmm0
	movd	%xmm0, %edx
	cmpl	%ecx, %esi
	je	.L5
.L10:
	movslq	%eax, %rcx
	movl	12(%rsp), %esi
	addl	32(%rsp,%rcx,4), %edx
	leal	1(%rax), %ecx
	cmpl	%esi, %ecx
	jge	.L5
	movslq	%ecx, %rcx
	addl	$2, %eax
	addl	32(%rsp,%rcx,4), %edx
	cmpl	%eax, %esi
	jle	.L5
	cltq
	addl	32(%rsp,%rax,4), %edx
.L5:
	xorl	%eax, %eax
	movq	%r13, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	movq	776(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L61
	addq	$792, %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
.L59:
	.cfi_restore_state
	xorl	%ebx, %ebx
	jmp	.L8
.L14:
	xorl	%edx, %edx
	jmp	.L5
.L15:
	xorl	%edx, %edx
	jmp	.L10
.L61:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE51:
	.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	"%d"
.LC1:
	.string	"%s"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB51:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	leaq	.LC0(%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	$792, %rsp
	.cfi_def_cfa_offset 848
	movq	%fs:40, %rax
	movq	%rax, 776(%rsp)
	xorl	%eax, %eax
	leaq	28(%rsp), %rsi
	leaq	240(%rsp), %r12
	movq	%r12, %rbx
	leaq	648(%rsp), %rbp
	call	__isoc99_scanf@PLT
	.p2align 4,,10
	.p2align 3
.L2:
	movl	$105, %edi
	addq	$8, %rbx
	call	malloc@PLT
	movq	%rax, -8(%rbx)
	cmpq	%rbp, %rbx
	jne	.L2
	movl	28(%rsp), %eax
	leaq	32(%rsp), %rbp
	xorl	%ebx, %ebx
	leaq	.LC1(%rip), %r14
	testl	%eax, %eax
	jle	.L7
	.p2align 4,,10
	.p2align 3
.L6:
	movq	(%r12,%rbx,8), %rsi
	movq	%r14, %rdi
	xorl	%eax, %eax
	addq	$1, %rbx
	call	__isoc99_scanf@PLT
	movq	%rbp, %rsi
	movq	%r13, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	addq	$4, %rbp
	cmpl	%ebx, 28(%rsp)
	jg	.L6
.L7:
	leaq	656(%rsp), %rbp
	movq	%r14, %rdi
	xorl	%eax, %eax
	xorl	%r15d, %r15d
	movq	%rbp, %rsi
	call	__isoc99_scanf@PLT
	movslq	28(%rsp), %r14
	movl	%r14d, 12(%rsp)
	testl	%r14d, %r14d
	jg	.L9
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L60:
	addq	$1, %r15
	cmpq	%r14, %r15
	je	.L59
.L9:
	movq	(%r12,%r15,8), %rdi
	movq	%rbp, %rsi
	movl	%r15d, %ebx
	call	strcmp@PLT
	testl	%eax, %eax
	jne	.L60
.L8:
	movl	12(%rsp), %ecx
	leal	1(%rbx), %eax
	cmpl	%ecx, %eax
	jge	.L14
	movl	%ecx, %edx
	subl	%ebx, %edx
	leal	-1(%rdx), %esi
	subl	$2, %edx
	cmpl	$2, %edx
	jbe	.L15
	movl	%esi, %ecx
	movslq	%eax, %rdx
	leaq	32(%rsp,%rdx,4), %rdx
	shrl	$2, %ecx
	movdqu	(%rdx), %xmm0
	cmpl	$1, %ecx
	je	.L11
	movdqu	16(%rdx), %xmm2
	paddd	%xmm2, %xmm0
	cmpl	$2, %ecx
	je	.L11
	movdqu	32(%rdx), %xmm3
	paddd	%xmm3, %xmm0
	cmpl	$3, %ecx
	je	.L11
	movdqu	48(%rdx), %xmm4
	paddd	%xmm4, %xmm0
	cmpl	$4, %ecx
	je	.L11
	movdqu	64(%rdx), %xmm5
	paddd	%xmm5, %xmm0
	cmpl	$5, %ecx
	je	.L11
	movdqu	80(%rdx), %xmm6
	paddd	%xmm6, %xmm0
	cmpl	$6, %ecx
	je	.L11
	movdqu	96(%rdx), %xmm7
	paddd	%xmm7, %xmm0
	cmpl	$7, %ecx
	je	.L11
	movdqu	112(%rdx), %xmm7
	paddd	%xmm7, %xmm0
	cmpl	$8, %ecx
	je	.L11
	movdqu	128(%rdx), %xmm6
	paddd	%xmm6, %xmm0
	cmpl	$9, %ecx
	je	.L11
	movdqu	144(%rdx), %xmm5
	paddd	%xmm5, %xmm0
	cmpl	$10, %ecx
	je	.L11
	movdqu	160(%rdx), %xmm4
	paddd	%xmm4, %xmm0
	cmpl	$11, %ecx
	je	.L11
	movdqu	176(%rdx), %xmm1
	paddd	%xmm1, %xmm0
	.p2align 4,,10
	.p2align 3
.L11:
	movdqa	%xmm0, %xmm1
	movl	%esi, %ecx
	psrldq	$8, %xmm1
	andl	$-4, %ecx
	paddd	%xmm1, %xmm0
	addl	%ecx, %eax
	movdqa	%xmm0, %xmm1
	psrldq	$4, %xmm1
	paddd	%xmm1, %xmm0
	movd	%xmm0, %edx
	cmpl	%ecx, %esi
	je	.L5
.L10:
	movslq	%eax, %rcx
	movl	12(%rsp), %esi
	addl	32(%rsp,%rcx,4), %edx
	leal	1(%rax), %ecx
	cmpl	%esi, %ecx
	jge	.L5
	movslq	%ecx, %rcx
	addl	$2, %eax
	addl	32(%rsp,%rcx,4), %edx
	cmpl	%eax, %esi
	jle	.L5
	cltq
	addl	32(%rsp,%rax,4), %edx
.L5:
	xorl	%eax, %eax
	movq	%r13, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	movq	776(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L61
	addq	$792, %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
.L59:
	.cfi_restore_state
	xorl	%ebx, %ebx
	jmp	.L8
.L14:
	xorl	%edx, %edx
	jmp	.L5
.L15:
	xorl	%edx, %edx
	jmp	.L10
.L61:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE51:
	.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	"%d"
.LC1:
	.string	"%s"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB51:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	leaq	.LC0(%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	$792, %rsp
	.cfi_def_cfa_offset 848
	movq	%fs:40, %rax
	movq	%rax, 776(%rsp)
	xorl	%eax, %eax
	leaq	28(%rsp), %rsi
	leaq	240(%rsp), %r12
	movq	%r12, %rbx
	leaq	648(%rsp), %rbp
	call	__isoc99_scanf@PLT
	.p2align 4,,10
	.p2align 3
.L2:
	movl	$105, %edi
	addq	$8, %rbx
	call	malloc@PLT
	movq	%rax, -8(%rbx)
	cmpq	%rbp, %rbx
	jne	.L2
	movl	28(%rsp), %eax
	leaq	32(%rsp), %rbp
	xorl	%ebx, %ebx
	leaq	.LC1(%rip), %r14
	testl	%eax, %eax
	jle	.L7
	.p2align 4,,10
	.p2align 3
.L6:
	movq	(%r12,%rbx,8), %rsi
	movq	%r14, %rdi
	xorl	%eax, %eax
	addq	$1, %rbx
	call	__isoc99_scanf@PLT
	movq	%rbp, %rsi
	movq	%r13, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	addq	$4, %rbp
	cmpl	%ebx, 28(%rsp)
	jg	.L6
.L7:
	leaq	656(%rsp), %rbp
	movq	%r14, %rdi
	xorl	%eax, %eax
	xorl	%r15d, %r15d
	movq	%rbp, %rsi
	call	__isoc99_scanf@PLT
	movslq	28(%rsp), %r14
	movl	%r14d, 12(%rsp)
	testl	%r14d, %r14d
	jg	.L9
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L60:
	addq	$1, %r15
	cmpq	%r14, %r15
	je	.L59
.L9:
	movq	(%r12,%r15,8), %rdi
	movq	%rbp, %rsi
	movl	%r15d, %ebx
	call	strcmp@PLT
	testl	%eax, %eax
	jne	.L60
.L8:
	movl	12(%rsp), %ecx
	leal	1(%rbx), %eax
	cmpl	%ecx, %eax
	jge	.L14
	movl	%ecx, %edx
	subl	%ebx, %edx
	leal	-1(%rdx), %esi
	subl	$2, %edx
	cmpl	$2, %edx
	jbe	.L15
	movl	%esi, %ecx
	movslq	%eax, %rdx
	leaq	32(%rsp,%rdx,4), %rdx
	shrl	$2, %ecx
	movdqu	(%rdx), %xmm0
	cmpl	$1, %ecx
	je	.L11
	movdqu	16(%rdx), %xmm2
	paddd	%xmm2, %xmm0
	cmpl	$2, %ecx
	je	.L11
	movdqu	32(%rdx), %xmm3
	paddd	%xmm3, %xmm0
	cmpl	$3, %ecx
	je	.L11
	movdqu	48(%rdx), %xmm4
	paddd	%xmm4, %xmm0
	cmpl	$4, %ecx
	je	.L11
	movdqu	64(%rdx), %xmm5
	paddd	%xmm5, %xmm0
	cmpl	$5, %ecx
	je	.L11
	movdqu	80(%rdx), %xmm6
	paddd	%xmm6, %xmm0
	cmpl	$6, %ecx
	je	.L11
	movdqu	96(%rdx), %xmm7
	paddd	%xmm7, %xmm0
	cmpl	$7, %ecx
	je	.L11
	movdqu	112(%rdx), %xmm7
	paddd	%xmm7, %xmm0
	cmpl	$8, %ecx
	je	.L11
	movdqu	128(%rdx), %xmm6
	paddd	%xmm6, %xmm0
	cmpl	$9, %ecx
	je	.L11
	movdqu	144(%rdx), %xmm5
	paddd	%xmm5, %xmm0
	cmpl	$10, %ecx
	je	.L11
	movdqu	160(%rdx), %xmm4
	paddd	%xmm4, %xmm0
	cmpl	$11, %ecx
	je	.L11
	movdqu	176(%rdx), %xmm1
	paddd	%xmm1, %xmm0
	.p2align 4,,10
	.p2align 3
.L11:
	movdqa	%xmm0, %xmm1
	movl	%esi, %ecx
	psrldq	$8, %xmm1
	andl	$-4, %ecx
	paddd	%xmm1, %xmm0
	addl	%ecx, %eax
	movdqa	%xmm0, %xmm1
	psrldq	$4, %xmm1
	paddd	%xmm1, %xmm0
	movd	%xmm0, %edx
	cmpl	%ecx, %esi
	je	.L5
.L10:
	movslq	%eax, %rcx
	movl	12(%rsp), %esi
	addl	32(%rsp,%rcx,4), %edx
	leal	1(%rax), %ecx
	cmpl	%esi, %ecx
	jge	.L5
	movslq	%ecx, %rcx
	addl	$2, %eax
	addl	32(%rsp,%rcx,4), %edx
	cmpl	%eax, %esi
	jle	.L5
	cltq
	addl	32(%rsp,%rax,4), %edx
.L5:
	xorl	%eax, %eax
	movq	%r13, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	movq	776(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L61
	addq	$792, %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
.L59:
	.cfi_restore_state
	xorl	%ebx, %ebx
	jmp	.L8
.L14:
	xorl	%edx, %edx
	jmp	.L5
.L15:
	xorl	%edx, %edx
	jmp	.L10
.L61:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE51:
	.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 <stdlib.h>
#include <string.h>

int main()
{
    int N,ii;
    scanf("%d",&N);
    char *s[51];
    for(ii=0;ii<51;ii++)
    {
        s[ii]=(char*)malloc(sizeof(char)*105);
    }
    char X[105];
    char **p=s;
    int t[51];
    int i;
    for(i=0; i<N; i++,p++)
    {
        scanf("%s",*p);
        scanf("%d",&t[i]);
    }
    scanf("%s",X);
    p=s;
    int sum=0,start=0;
    for(i=0; i<N; i++,p++)
    {
        if(!(strcmp(*p,X)))
        {
            start=i;break;
        }

    }
    for(i=start+1;i<N;i++)
    {
        sum+=t[i];
    }
    printf("%d",sum);



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

int main()
{
    int N,ii;
    scanf("%d",&N);
    char *s[51];
    for(ii=0;ii<51;ii++)
    {
        s[ii]=(char*)malloc(sizeof(char)*105);
    }
    char X[105];
    char **p=s;
    int t[51];
    int i;
    for(i=0; i<N; i++,p++)
    {
        scanf("%s",*p);
        scanf("%d",&t[i]);
    }
    scanf("%s",X);
    p=s;
    int sum=0,start=0;
    for(i=0; i<N; i++,p++)
    {
        if(!(strcmp(*p,X)))
        {
            start=i;break;
        }

    }
    for(i=start+1;i<N;i++)
    {
        sum+=t[i];
    }
    printf("%d",sum);



    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:

15
ypnxn 279
kgjgwx 464
qquhuwq 327
rxing 549
pmuduhznoaqu 832
dagktgdarveusju 595
wunfagppcoi 200
dhavrncwfw 720
jpcmigg 658
wrczqxycivdqn 639
mcmkkbnjfeod 992
zstythbkgkvqth 130
twflegsjz 467
dswxxrxuzzfhkp 989
szfwtzfpnscgue 958
pmuduhznoaqu
 1
abcde 0000
abcde
 15
ypnxn 279
kgjfwx 464
qquhuwq 327
rxing 549
pmuduhznoaqu 832
dagktgdarveusju 595
wunfagppcoi 200
dhavrncwfw 720
jpcmigg 658
wrczqxycivdqn 639
mcmkkbnjfeod 992
zstythbkgkvqth 130
twflegsjz 809
dswxxrxuzzfhkp 989
szfwtzfpnscgue 958
pmuduhznoaqu
 15
ynpxn 307
jgfjwx 127
qquhuwq 319
rxing 549
pmuduhznoaqu 832
dagktgdarveusju 595
iunfagppcow 200
dhavrncwfw 1135
ggimcpj 658
wrczqxycivdqn 639
mcmkkbnjfeod 992
zstythbkgkwqth 130
twflegsjz 809
dswzxrxuzxfhkp 989
szfwtzfpnscgue 958
pmuduhznoaqu
 3
dwango 2
sixth 5
prelims 4
dwango
 15
ypnxn 279
kgjgwx 464
qquhuwq 327
rxing 549
pmuduhznoaqu 832
dagktgdarveusju 595
wunfagppcoi 200
dhavrncwfw 720
jpcmigg 658
wrczqxycivdqn 639
mcmkkbnjfeod 992
zstythbkgkvqth 130
twflegsjz 467
dswxxrxuzzfhkp 1344
szfwtzfpnscgue 958
pmuduhznoaqu
 15
ypnxn 279
kgjfwx 464
qquhuwq 327
rxing 549
pmuduhznoaqu 832
dagktgdarveusju 595
wunfagppcoi 200
dhavrncwfw 720
jpcmigg 1050
wrczqxycivdqn 639
mcmkkbnjfeod 992
zstythbkgkvqth 130
twflegsjz 467
dswxxrxuzzfhkp 989
szfwtzfpnscgue 958
pmuduhznoaqu
 15
ynpxn 279
jgjfwx 127
qquhuwq 319
rxing 549
pmuduhznoaqu 832
dagktgdarveusju 595
iunfagppcow 200
dhavrncwfw 720
ggimcpj 658
wrczqxycivdqn 19
mcmkkbnjfeod 992
zstythbkgkwqth 130
twflegsjz 809
dswzxrxuzxfhkp 989
szfwtzfpnscgue 958
pmuduhznoaqu
 15
ynpxn 279
jgfjwx 127
qquhuwq 319
rxing 549
pmuduhznoaqu 832
dagktgdarveusju 595
iunfagppcow 200
dhavrncwfw 720
ggimcpj 658
wrczqxycivdqn 639
mcmkkbnjfeod 327
zstythbkgkwqth 130
twflegsjz 809
dswzxrxuzxfhkp 989
szfwtzfpnscgue 958
pmuduhznoaqu
 3
dwango 2
sixth 5
prelims 7
dwango

6348 0 6690 7105 9 6703 6740 6070 6025 12
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 <stdlib.h>
#include <string.h>

int main()
{
    int N,ii;
    scanf("%d",&N);
    char *s[51];
    for(ii=0;ii<51;ii++)
    {
        s[ii]=(char*)malloc(sizeof(char)*105);
    }
    char X[105];
    char **p=s;
    int t[51];
    int i;
    for(i=0; i<N; i++,p++)
    {
        scanf("%s",*p);
        scanf("%d",&t[i]);
    }
    scanf("%s",X);
    p=s;
    int sum=0,start=0;
    for(i=0; i<N; i++,p++)
    {
        if(!(strcmp(*p,X)))
        {
            start=i;break;
        }

    }
    for(i=start+1;i<N;i++)
    {
        sum+=t[i];
    }
    printf("%d",sum);



    return 0;
}
```

Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%d"
.LC1:
	.string	"%s"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB51:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	leaq	.LC0(%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	$792, %rsp
	.cfi_def_cfa_offset 848
	movq	%fs:40, %rax
	movq	%rax, 776(%rsp)
	xorl	%eax, %eax
	leaq	28(%rsp), %rsi
	leaq	240(%rsp), %r12
	movq	%r12, %rbx
	leaq	648(%rsp), %rbp
	call	__isoc99_scanf@PLT
	.p2align 4,,10
	.p2align 3
.L2:
	movl	$105, %edi
	addq	$8, %rbx
	call	malloc@PLT
	movq	%rax, -8(%rbx)
	cmpq	%rbp, %rbx
	jne	.L2
	movl	28(%rsp), %eax
	leaq	32(%rsp), %rbp
	xorl	%ebx, %ebx
	leaq	.LC1(%rip), %r14
	testl	%eax, %eax
	jle	.L7
	.p2align 4,,10
	.p2align 3
.L6:
	movq	(%r12,%rbx,8), %rsi
	movq	%r14, %rdi
	xorl	%eax, %eax
	addq	$1, %rbx
	call	__isoc99_scanf@PLT
	movq	%rbp, %rsi
	movq	%r13, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	addq	$4, %rbp
	cmpl	%ebx, 28(%rsp)
	jg	.L6
.L7:
	leaq	656(%rsp), %rbp
	movq	%r14, %rdi
	xorl	%eax, %eax
	xorl	%r15d, %r15d
	movq	%rbp, %rsi
	call	__isoc99_scanf@PLT
	movslq	28(%rsp), %r14
	movl	%r14d, 12(%rsp)
	testl	%r14d, %r14d
	jg	.L9
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L60:
	addq	$1, %r15
	cmpq	%r14, %r15
	je	.L59
.L9:
	movq	(%r12,%r15,8), %rdi
	movq	%rbp, %rsi
	movl	%r15d, %ebx
	call	strcmp@PLT
	testl	%eax, %eax
	jne	.L60
.L8:
	movl	12(%rsp), %ecx
	leal	1(%rbx), %eax
	cmpl	%ecx, %eax
	jge	.L14
	movl	%ecx, %edx
	subl	%ebx, %edx
	leal	-1(%rdx), %esi
	subl	$2, %edx
	cmpl	$2, %edx
	jbe	.L15
	movl	%esi, %ecx
	movslq	%eax, %rdx
	leaq	32(%rsp,%rdx,4), %rdx
	shrl	$2, %ecx
	movdqu	(%rdx), %xmm0
	cmpl	$1, %ecx
	je	.L11
	movdqu	16(%rdx), %xmm2
	paddd	%xmm2, %xmm0
	cmpl	$2, %ecx
	je	.L11
	movdqu	32(%rdx), %xmm3
	paddd	%xmm3, %xmm0
	cmpl	$3, %ecx
	je	.L11
	movdqu	48(%rdx), %xmm4
	paddd	%xmm4, %xmm0
	cmpl	$4, %ecx
	je	.L11
	movdqu	64(%rdx), %xmm5
	paddd	%xmm5, %xmm0
	cmpl	$5, %ecx
	je	.L11
	movdqu	80(%rdx), %xmm6
	paddd	%xmm6, %xmm0
	cmpl	$6, %ecx
	je	.L11
	movdqu	96(%rdx), %xmm7
	paddd	%xmm7, %xmm0
	cmpl	$7, %ecx
	je	.L11
	movdqu	112(%rdx), %xmm7
	paddd	%xmm7, %xmm0
	cmpl	$8, %ecx
	je	.L11
	movdqu	128(%rdx), %xmm6
	paddd	%xmm6, %xmm0
	cmpl	$9, %ecx
	je	.L11
	movdqu	144(%rdx), %xmm5
	paddd	%xmm5, %xmm0
	cmpl	$10, %ecx
	je	.L11
	movdqu	160(%rdx), %xmm4
	paddd	%xmm4, %xmm0
	cmpl	$11, %ecx
	je	.L11
	movdqu	176(%rdx), %xmm1
	paddd	%xmm1, %xmm0
	.p2align 4,,10
	.p2align 3
.L11:
	movdqa	%xmm0, %xmm1
	movl	%esi, %ecx
	psrldq	$8, %xmm1
	andl	$-4, %ecx
	paddd	%xmm1, %xmm0
	addl	%ecx, %eax
	movdqa	%xmm0, %xmm1
	psrldq	$4, %xmm1
	paddd	%xmm1, %xmm0
	movd	%xmm0, %edx
	cmpl	%ecx, %esi
	je	.L5
.L10:
	movslq	%eax, %rcx
	movl	12(%rsp), %esi
	addl	32(%rsp,%rcx,4), %edx
	leal	1(%rax), %ecx
	cmpl	%esi, %ecx
	jge	.L5
	movslq	%ecx, %rcx
	addl	$2, %eax
	addl	32(%rsp,%rcx,4), %edx
	cmpl	%eax, %esi
	jle	.L5
	cltq
	addl	32(%rsp,%rax,4), %edx
.L5:
	xorl	%eax, %eax
	movq	%r13, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	movq	776(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L61
	addq	$792, %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
.L59:
	.cfi_restore_state
	xorl	%ebx, %ebx
	jmp	.L8
.L14:
	xorl	%edx, %edx
	jmp	.L5
.L15:
	xorl	%edx, %edx
	jmp	.L10
.L61:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE51:
	.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	"%d"
.LC1:
	.string	"%s"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB51:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	leaq	.LC0(%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	$792, %rsp
	.cfi_def_cfa_offset 848
	movq	%fs:40, %rax
	movq	%rax, 776(%rsp)
	xorl	%eax, %eax
	leaq	28(%rsp), %rsi
	leaq	240(%rsp), %r12
	movq	%r12, %rbx
	leaq	648(%rsp), %rbp
	call	__isoc99_scanf@PLT
	.p2align 4,,10
	.p2align 3
.L2:
	movl	$105, %edi
	addq	$8, %rbx
	call	malloc@PLT
	movq	%rax, -8(%rbx)
	cmpq	%rbp, %rbx
	jne	.L2
	movl	28(%rsp), %eax
	leaq	32(%rsp), %rbp
	xorl	%ebx, %ebx
	leaq	.LC1(%rip), %r14
	testl	%eax, %eax
	jle	.L7
	.p2align 4,,10
	.p2align 3
.L6:
	movq	(%r12,%rbx,8), %rsi
	movq	%r14, %rdi
	xorl	%eax, %eax
	addq	$1, %rbx
	call	__isoc99_scanf@PLT
	movq	%rbp, %rsi
	movq	%r13, %rdi
	xorl	%eax, %eax
	call	__isoc99_scanf@PLT
	addq	$4, %rbp
	cmpl	%ebx, 28(%rsp)
	jg	.L6
.L7:
	leaq	656(%rsp), %rbp
	movq	%r14, %rdi
	xorl	%eax, %eax
	xorl	%r15d, %r15d
	movq	%rbp, %rsi
	call	__isoc99_scanf@PLT
	movslq	28(%rsp), %r14
	movl	%r14d, 12(%rsp)
	testl	%r14d, %r14d
	jg	.L9
	jmp	.L14
	.p2align 4,,10
	.p2align 3
.L60:
	addq	$1, %r15
	cmpq	%r14, %r15
	je	.L59
.L9:
	movq	(%r12,%r15,8), %rdi
	movq	%rbp, %rsi
	movl	%r15d, %ebx
	call	strcmp@PLT
	testl	%eax, %eax
	jne	.L60
.L8:
	movl	12(%rsp), %ecx
	leal	1(%rbx), %eax
	cmpl	%ecx, %eax
	jge	.L14
	movl	%ecx, %edx
	subl	%ebx, %edx
	leal	-1(%rdx), %esi
	subl	$2, %edx
	cmpl	$2, %edx
	jbe	.L15
	movl	%esi, %ecx
	movslq	%eax, %rdx
	leaq	32(%rsp,%rdx,4), %rdx
	shrl	$2, %ecx
	movdqu	(%rdx), %xmm0
	cmpl	$1, %ecx
	je	.L11
	movdqu	16(%rdx), %xmm2
	paddd	%xmm2, %xmm0
	cmpl	$2, %ecx
	je	.L11
	movdqu	32(%rdx), %xmm3
	paddd	%xmm3, %xmm0
	cmpl	$3, %ecx
	je	.L11
	movdqu	48(%rdx), %xmm4
	paddd	%xmm4, %xmm0
	cmpl	$4, %ecx
	je	.L11
	movdqu	64(%rdx), %xmm5
	paddd	%xmm5, %xmm0
	cmpl	$5, %ecx
	je	.L11
	movdqu	80(%rdx), %xmm6
	paddd	%xmm6, %xmm0
	cmpl	$6, %ecx
	je	.L11
	movdqu	96(%rdx), %xmm7
	paddd	%xmm7, %xmm0
	cmpl	$7, %ecx
	je	.L11
	movdqu	112(%rdx), %xmm7
	paddd	%xmm7, %xmm0
	cmpl	$8, %ecx
	je	.L11
	movdqu	128(%rdx), %xmm6
	paddd	%xmm6, %xmm0
	cmpl	$9, %ecx
	je	.L11
	movdqu	144(%rdx), %xmm5
	paddd	%xmm5, %xmm0
	cmpl	$10, %ecx
	je	.L11
	movdqu	160(%rdx), %xmm4
	paddd	%xmm4, %xmm0
	cmpl	$11, %ecx
	je	.L11
	movdqu	176(%rdx), %xmm1
	paddd	%xmm1, %xmm0
	.p2align 4,,10
	.p2align 3
.L11:
	movdqa	%xmm0, %xmm1
	movl	%esi, %ecx
	psrldq	$8, %xmm1
	andl	$-4, %ecx
	paddd	%xmm1, %xmm0
	addl	%ecx, %eax
	movdqa	%xmm0, %xmm1
	psrldq	$4, %xmm1
	paddd	%xmm1, %xmm0
	movd	%xmm0, %edx
	cmpl	%ecx, %esi
	je	.L5
.L10:
	movslq	%eax, %rcx
	movl	12(%rsp), %esi
	addl	32(%rsp,%rcx,4), %edx
	leal	1(%rax), %ecx
	cmpl	%esi, %ecx
	jge	.L5
	movslq	%ecx, %rcx
	addl	$2, %eax
	addl	32(%rsp,%rcx,4), %edx
	cmpl	%eax, %esi
	jle	.L5
	cltq
	addl	32(%rsp,%rax,4), %edx
.L5:
	xorl	%eax, %eax
	movq	%r13, %rsi
	movl	$1, %edi
	call	__printf_chk@PLT
	movq	776(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L61
	addq	$792, %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
.L59:
	.cfi_restore_state
	xorl	%ebx, %ebx
	jmp	.L8
.L14:
	xorl	%edx, %edx
	jmp	.L5
.L15:
	xorl	%edx, %edx
	jmp	.L10
.L61:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE51:
	.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:
```