Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; пролог
- push rbp
- mov rbp, rsp
- push r15
- push r14
- push r13
- push r12
- push rbx
- sub rsp, 0x38
- mov dword [rbp - 0x54], edi ; argc
- mov qword [rbp - 0x60], rsi ; argv
- mov rax, rsp
- mov rbx, rax
- lea rax, [rbp - 0x44]
- mov rsi, rax
- lea rax, [0x556526fe5004] ; "%d"
- mov rdi, rax
- mov eax, 0
- call sym.imp.__isoc99_scanf ; scanf("%d", &n)
- mov eax, dword [rbp - 0x44]
- movsxd rdx, eax
- sub rdx, 1
- mov qword [rbp - 0x38], rdx
- movsxd rdx, eax
- mov r14, rdx
- mov r15d, 0
- movsxd rdx, eax
- mov r12, rdx
- mov r13d, 0
- ; вычисление нужного количества байтов с округлением до ближайшего блока в 16
- cdqe
- lea rdx, [rax*4]
- mov eax, 0x10 ; rcx
- sub rax, 1
- add rax, rdx
- mov ecx, 0x10 ; rcx
- mov edx, 0
- div rcx
- imul rax, rax, 0x10
- ; выделение памяти на стеке
- sub rsp, rax
- ; выравнивание адреса по 4
- mov rax, rsp
- add rax, 3
- shr rax, 2
- shl rax, 2
- ; локальная переменная массива
- mov qword [rbp - 0x40], rax
- ; эпилог
- mov eax, 0
- mov rsp, rbx
- lea rsp, [rbp - 0x28]
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
Advertisement
Add Comment
Please, Sign In to add comment