Помогите "расшифровать" дизассемблированный код
.file "Fibas.c" //файл, который был дизассемблирован
.intel_syntax noprefix //позволяет не ставить % перед регистрами
.section .rodata
.align 8
.LC0:
.string "\320\222\320\262\320\265\320\264\320\270\321\202\320\265 \321\201\320\272\320\276\320\273\321\214\320\272\320\276 \321\207\320\270\321\201\320\265\320\273 \320\244\320\270\320\261\320\276\320\275\320\260\321\207\321\207\320\270 \320\262\321\213 \321\205\320\276\321\202\320\270\321\202\320\265 \321\203\320\262\320\270\320\264\320\265\321\202\321\214\n"
.LC1:
.string "%d"
.align 8
.LC2:
.string "\320\222\321\213 \320\262\320\262\320\265\320\273\320\270 \320\275\320\265\320\277\321\200\320\260\320\262\320\270\320\273\321\214\320\275\321\213\320\265 \320\264\320\260\320\275\320\275\321\213\320\265\n"
.LC3:
.string "0 \n"
.LC4:
.string "%u "
.text
.globl main
.type main, @function
main:
.LFB2:
.cfi_startproc
push rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
mov rbp, rsp
.cfi_def_cfa_register 6
push rbx
sub rsp, 72
.cfi_offset 3, -24
mov DWORD PTR -68[rbp], 0
mov QWORD PTR -32[rbp], 0
mov QWORD PTR -40[rbp], 0
mov QWORD PTR -48[rbp], 0
mov rax, QWORD PTR stderr[rip]
mov rcx, rax
mov edx, 93
mov esi, 1
lea rdi, .LC0[rip]
call fwrite@PLT
lea rax, -68[rbp]
mov rsi, rax
lea rdi, .LC1[rip]
mov eax, 0
call __isoc99_scanf@PLT
cdqe
mov QWORD PTR -56[rbp], rax
cmp QWORD PTR -56[rbp], 0
je .L2 //условный переход
mov eax, DWORD PTR -68[rbp]
test eax, eax
jns .L3
.L2:
mov rax, QWORD PTR stderr[rip]
mov rcx, rax
mov edx, 54
mov esi, 1
lea rdi, .LC2[rip]
call fwrite@PLT
mov eax, 0
jmp .L9
.L3:
mov eax, DWORD PTR -68[rbp]
cdqe
mov QWORD PTR -56[rbp], rax
mov eax, DWORD PTR -68[rbp]
test eax, eax
jne .L5
mov eax, 0
jmp .L9
.L5:
mov eax, DWORD PTR -68[rbp]
cmp eax, 1
jne .L6
mov rax, QWORD PTR stderr[rip]
mov rcx, rax
mov edx, 3
mov esi, 1
lea rdi, .LC3[rip]
call fwrite@PLT
mov eax, 0
jmp .L9
.L6:
mov rax, QWORD PTR -56[rbp]
sal rax, 3
mov rdi, rax
call malloc@PLT
mov QWORD PTR -64[rbp], rax
mov rsi, QWORD PTR -56[rbp]
mov r8, QWORD PTR -64[rbp]
mov r9, QWORD PTR -32[rbp]
mov r10, QWORD PTR -40[rbp]
mov r11, QWORD PTR -48[rbp]
#APP //обозначение приложения
# 31 "Fibas.c" 1
.intel_syntax noprefix //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
mov rcx, rsi //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
mov rax, r8 //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
mov rbx, r9 //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
mov rdx, r10 //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
mov rdi, r11 //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
sub rcx, 1 //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
mov [rax+8*rcx], rdi //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
sub rcx, 1 //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
add rbx, 1 //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
mov [rax+8*rcx], rbx //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
sub rcx, 1 //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
l1: //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
cmp rcx, -1 //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
je l2 //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
mov rdi, rdx //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
mov rdx, rbx //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
add rbx, rdi //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
mov [rax+8*rcx], rbx //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
sub rcx, 1 //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
jmp l1 //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
l2: //ЭТО НЕ НАДО КОММЕНТИРОВАТЬ!!!
# 0 "" 2
#NO_APP //конец приложения
mov rax, QWORD PTR stderr[rip]
mov rsi, rax
mov edi, 10
call fputc@PLT
mov eax, DWORD PTR -68[rbp]
sub eax, 1
mov DWORD PTR -20[rbp], eax
jmp .L7
.L8:
mov eax, DWORD PTR -20[rbp]
cdqe
lea rdx, 0[0+rax*8]
mov rax, QWORD PTR -64[rbp]
add rax, rdx
mov rdx, QWORD PTR [rax]
mov rax, QWORD PTR stderr[rip]
lea rsi, .LC4[rip]
mov rdi, rax
mov eax, 0
call fprintf@PLT
sub DWORD PTR -20[rbp], 1
.L7:
cmp DWORD PTR -20[rbp], 0
jns .L8
mov rax, QWORD PTR stderr[rip]
mov rsi, rax
mov edi, 10
call fputc@PLT
mov rax, QWORD PTR -64[rbp]
mov rdi, rax
call free@PLT
mov eax, 0
.L9:
add rsp, 72
pop rbx
pop rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE2:
.size main, .-main
.ident "GCC: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516"
.section .note.GNU-stack,"",@progbits
Я студент и только начал изучать язык assembly. Я диззасемблил программу, теперь мне нужно проанализировать этот код на языке ассемблера (прокомментить каждую строку). Помогите пожалуйста:)
Код был на языке C, компилировал с помощью GCC (gcc -S masm=intel)
Также, если есть возможность, подскажите с помощью каких книг, документации и т.д. можно это все "расшифровать". Заранее спасибо!