In the document attached below explain each block of assembly code. There are different blocks of 4 assembly codes, place explanation in table provided. Then convert the entire assembly code to C. Typ

Assembly Code:

Explanation

push %rbp

mov %rsp,%rbp

sub $0x10,%rsp

movl $0x1,-0x8(%rbp)

jmp 0x4005c5 <main+72>

movl $0x1,-0x4(%rbp)

jmp 0x4005bb <main+62>

mov -0x8(%rbp),%eax

imul -0x4(%rbp),%eax

mov %eax,%ecx

mov -0x4(%rbp),%edx

mov -0x8(%rbp),%eax

mov %eax,%esi

mov $0x400664,%edi

mov $0x0,%eax

callq 0x400450 <printf@plt>

addl $0x1,-0x4(%rbp)

cmpl $0x9,-0x4(%rbp)

jle 0x400597 <main+26>

addl $0x1,-0x8(%rbp)

cmpl $0x9,-0x8(%rbp)

jle 0x40058e <main+17>

mov $0x0,%edi

callq 0x400480 <exit@plt>

Code 1:

Code 2:

Assembly code:

push %rbp

mov %rsp,%rbp

movsd %xmm0,-0x8(%rbp)

movsd -0x8(%rbp),%xmm1

movsd 0x14d(%rip),%xmm0 #0x400750

mulsd %xmm1,%xmm0

mulsd -0x8(%rbp),%xmm0

mulsd -0x8(%rbp),%xmm0

movsd %xmm0,-0x10(%rbp)

mov -0x10(%rbp),%rax

mov %rax,-0x10(%rbp)

movsd -0x10(%rbp),%xmm0

pop %rbp

retq

Calculate V function

push %rbp

mov %rsp,%rbp

sub $0x20,%rsp

mov $0x400728,%edi

mov $0x0,%eax

callq 0x4004b0 <printf@plt>

lea -0xc(%rbp),%rax

mov %rax,%rsi

mov $0x400736,%edi

mov $0x0,%eax

Main function

callq 0x4004e0 <__isoc99_scanf@plt>

mov -0xc(%rbp),%eax

cvtsi2sd %eax,%xmm0

callq 0x4005ed <CalculateV>

movsd %xmm0,-0x18(%rbp)

mov -0x18(%rbp),%rax

mov %rax,-0x8(%rbp)

mov -0x8(%rbp),%rax

mov %rax,-0x18(%rbp)

movsd -0x18(%rbp),%xmm0

mov $0x400739,%edi

mov $0x1,%eax

callq 0x4004b0 <printf@plt>

mov $0x0,%edi

callq 0x4004f0 <exit@plt>

Code 3:

Assembly Code:

Comments

push %rbp

mov %rsp,%rbp

sub $0x10,%rsp

movl $0x1,-0x4(%rbp)

mov $0x400794,%edi

callq 0x4004c0 <puts@plt>

lea -0x10(%rbp),%rax

mov %rax,%rsi

mov $0x4007a9,%edi

mov $0x0,%eax

Main function

callq 0x4004f0 <__isoc99_scanf@plt>

mov -0x10(%rbp),%eax

sub $0x1,%eax

mov %eax,-0x4(%rbp)

movl $0x1,-0x8(%rbp)

jmp 0x400683 <main+150>

movl $0x1,-0xc(%rbp)

jmp 0x400645 <main+88>

mov $0x20,%edi

callq 0x4004b0 <putchar@plt>

addl $0x1,-0xc(%rbp)

mov -0xc(%rbp),%eax

cmp -0x4(%rbp),%eax

jle 0x400637 <main+74>

subl $0x1,-0x4(%rbp)

movl $0x1,-0xc(%rbp)

jmp 0x400668 <main+123>

mov $0x2a,%edi

callq 0x4004b0 <putchar@plt>

Code 4:

Assembly Code:

Comments:

push %rbp

mov %rsp,%rbp

sub $0x20,%rsp

movq $0x0,-0x18(%rbp)

movq $0x1,-0x10(%rbp)

mov $0x400718,%edi

mov $0x0,%eax

callq 0x400470 <printf@plt>

lea -0x20(%rbp),%rax

mov %rax,%rsi

Main function

mov $0x400732,%edi

mov $0x0,%eax

callq 0x4004a0 <__isoc99_scanf@plt>

jmp 0x40065a <main+189>

mov -0x20(%rbp),%rcx

movabs $0x6666666666666667,%rdx

mov %rcx,%rax

imul %rdx

sar $0x2,%rdx

mov %rcx,%rax

sar $0x3f,%rax

sub %rax,%rdx

mov %rdx,%rax

mov %rax,-0x8(%rbp)

mov -0x8(%rbp),%rdx

mov %rdx,%rax

shl $0x2,%rax

add %rdx,%rax

add %rax,%rax