Function at 0x140043bf0
Capabilities:
Capture screenshot

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x58]
sub rsp, 0x158
mov rax, qword [0x140104270]
xor r14d, r14d
cmp byte [rcx + 1], 1
mov ebx, r14d
mov r12d, r9d
mov qword [rbp - 0x20], rax
cmova rbx, qword [0x140104278]
mov edi, r8d
mov qword [rbp - 0x18], rbx
mov esi, edx
test rax, rax
je 0x140043c51
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
xor edx, edx
mov rcx, rax
call fcn.14008c5a0
test rbx, rbx
je 0x140043c6c
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
xor edx, edx
mov rcx, rbx
call fcn.14008c5a0
xor r8d, r8d
mov qword [rsp + 0x78], r14
lea rdx, [rsp + 0x7c]
lea rcx, [rsp + 0x78]
call fcn.14008a760
add edi, dword [rsp + 0x7c]
mov edx, 0x2e
add esi, dword [rsp + 0x78]
mov r15d, r14d
mov r13d, dword [rbp + 0xc0]
add r12d, dword [rsp + 0x78]
add r13d, dword [rsp + 0x7c]
mov dword [rbp + 0xb0], edi
mov rdi, qword [rbp + 0xc8]
mov rcx, rdi
mov dword [rbp + 0xa8], esi
mov dword [rsp + 0x54], r14d
mov esi, r14d
mov dword [rsp + 0x50], 0xffffffff
call fcn.1400a76fc
mov rbx, rax
test rax, rax
je 0x140043d2f
add rbx, 2
lea rdx, [0x1400e7058]
mov rcx, rbx
call fcn.1400a8ef0
test eax, eax
je 0x140043d14
lea rdx, [0x1400e7060]
mov rcx, rbx
call fcn.1400a8ef0
test eax, eax
je 0x140043d14
lea rdx, [0x1400e7068]
mov rcx, rbx
call fcn.1400a8ef0
test eax, eax
jne 0x140043d2f
mov ecx, gethostbyname
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov ecx, gethostbyname
mov esi, eax
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov r14d, eax
mov rbx, rdi
movzx eax, word [rbx]
cmp ax, 0x20
je 0x140043d41
cmp ax, 9
jne 0x140043d47
add rbx, 2
jmp 0x140043d32
cmp word [rbx], 0x2a
jne 0x140043fcf
movzx ecx, word [rbx + 2]
add rbx, 2
call fcn.1400b12e0
movzx eax, ax
cmp eax, 0x48
je 0x140043f07
cmp eax, 0x57
je 0x140043ede
mov r8d, 4
lea rdx, [0x1400e8c38]
mov rcx, rbx
call fcn.1400ab4d8
test eax, eax
jne 0x140043dbf
add rbx, 8
mov rcx, rbx
call fcn.14000f930
mov rcx, rbx
test al, al
je 0x140043db2
xor edx, edx
lea r8d, [rdx + 0x10]
call fcn.1400acfc4
mov r15d, eax
jmp 0x140043f2d
call fcn.1400acac8
mov r15d, eax
jmp 0x140043f2d
mov r8d, 5
lea rdx, [0x1400e8dc0]
mov rcx, rbx
call fcn.1400ab4d8
test eax, eax
jne 0x140043e98
add rbx, 0xa
lea r8d, [rax + 0x1f]
mov rdx, rbx
lea rcx, [rbp + 0x10]
call fcn.1400b1fb4
movzx edx, word [rbp + 0x10]
lea r8, [rbp + 0x10]
xor r9d, r9d
mov word [rbp + 0x4e], r9w
test dx, dx
je 0x140043e46
nop word [rax + rax]
lea rcx, [0x1400e0a20]
mov eax, SafeArrayAllocDescriptor
nop dword [rax]
cmp dx, ax
je 0x140043e42
movzx eax, word [rcx + 2]
add rcx, 2
test ax, ax
jne 0x140043e20
movzx edx, word [r8 + 2]
add r8, 2
test dx, dx
jne 0x140043e10
jmp 0x140043e46
mov word [r8], r9w
lea rcx, [rbp + 0x10]
call fcn.14008a4c0
mov edx, eax
cmp eax, 0xffffffff
jne 0x140043e6e
xor edx, edx
lea rcx, [rbp + 0x10]
lea r8d, [rdx + 0x10]
call fcn.1400acfc4
mov dword [rsp + 0x50], eax
jmp 0x140043f2d
shr ax, 8
movzx r8d, al
mov eax, edx
shr eax, 0x10
movzx ecx, al
shl r8d, 8
movzx eax, dl
or r8d, ecx
shl eax, 0x10
or r8d, eax
mov dword [rsp + 0x50], r8d
jmp 0x140043f2d
mov rcx, rbx
call fcn.14000f930
mov rcx, rbx
test al, al
je 0x140043eb4
xor edx, edx
lea r8d, [rdx + 0x10]
call fcn.1400acfc4
jmp 0x140043eb9
call fcn.1400acac8
mov dword [rsp + 0x54], eax
mov ecx, eax
test eax, eax
jns 0x140043ecb
xor eax, eax
mov dword [rsp + 0x54], eax
jmp 0x140043f2d
cmp ecx, 0xff
jle 0x140043f2d
mov ecx, 0xff
mov dword [rsp + 0x54], ecx
jmp 0x140043f2d
lea rcx, [rbx + 2]
call fcn.14000f930
lea rcx, [rbx + 2]
test al, al
je 0x140043efe
xor edx, edx
lea r8d, [rdx + 0x10]
call fcn.1400acfc4
mov esi, eax
jmp 0x140043f2d
call fcn.1400acac8
mov esi, eax
jmp 0x140043f2d
lea rcx, [rbx + 2]
call fcn.14000f930
lea rcx, [rbx + 2]
test al, al
je 0x140043f25
xor edx, edx
lea r8d, [rdx + 0x10]
call fcn.1400acfc4
jmp 0x140043f2a
call fcn.1400acac8
mov r14d, eax
test rbx, rbx
je 0x140043f6f
movzx edx, word [rbx]
test dx, dx
je 0x140043f6f
nop word [rax + rax]
lea rcx, [0x1400e0a20]
mov eax, SafeArrayAllocDescriptor
nop dword [rax]
cmp dx, ax
je 0x140043fa7
movzx eax, word [rcx + 2]
add rcx, 2
test ax, ax
jne 0x140043f50
movzx edx, word [rbx + 2]
add rbx, 2
test dx, dx
jne 0x140043f40
mov rax, qword [0x1400fda58]
lea rdx, [0x1400e0a84]
test byte [rax + 0x140], 1
jne 0x140044829
mov rcx, qword [0x140101f48]
xor r9d, r9d
or r8, 0xffffffffffffffff
mov byte [rsp + 0x20], 1
call fcn.14008c5a0
jmp 0x14004483f
lea rdi, [rbx + 2]
mov rbx, rdi
nop
movzx eax, word [rbx]
cmp ax, 0x20
je 0x140043fbf
cmp ax, 9
jne 0x140043fc5
add rbx, 2
jmp 0x140043fb0
cmp word [rbx], 0x2a
je 0x140043d51
xor eax, eax
lea r9, [rbp + 0xb8]
mov qword [rsp + 0x38], rax
mov r8d, r14d
lea rax, [rbp + 0xc8]
mov edx, esi
mov qword [rsp + 0x30], rax
mov rcx, rdi
mov byte [rsp + 0x28], 0
mov dword [rsp + 0x20], r15d
call fcn.14008a880
mov qword [rbp - 0x78], rax
mov r14, rax
test rax, rax
je 0x140043f6f
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetDC]
mov qword [rbp - 0x50], rax
mov r15, rax
test rax, rax
jne 0x140044052
cmp byte [rbp + 0xc8], al
jne 0x140043f6f
cmp dword [rbp + 0xb8], 1
mov rcx, r14
jne 0x140044047
call qword [sym.imp.USER32.dll_DestroyIcon]
jmp 0x140043f6f
call qword [sym.imp.GDI32.dll_DeleteObject]
jmp 0x140043f6f
xor eax, eax
xor dil, dil
cmp dword [rbp + 0xb8], 1
mov ebx, eax
mov qword [rbp - 0x38], rax
mov qword [rbp - 0x48], rax
mov qword [rsp + 0x68], rax
mov qword [rbp - 0x70], rax
mov qword [rbp - 0x30], rax
mov byte [rbp + 0xc0], dil
jne 0x1400440ec
lea rdx, [rbp - 0x10]
mov rcx, r14
call qword [sym.imp.USER32.dll_GetIconInfo]
test eax, eax
je 0x1400440d4
mov rcx, qword [rbp]
lea rax, [rbp + 0xb8]
mov dword [rsp + 0x28], 1
lea r9, [rsp + 0x64]
lea r8, [rsp + 0x58]
mov qword [rsp + 0x20], rax
mov rdx, r15
call fcn.140042fc0
mov rcx, qword [rbp + 8]
mov rbx, rax
mov qword [rbp - 0x70], rax
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, qword [rbp]
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, r14
call fcn.14008b300
mov qword [rbp - 0x78], rax
mov r14, rax
test rax, rax
je 0x140043f6f
lea rax, [rbp + 0xb8]
mov dword [rsp + 0x28], 8
lea r9, [rsp + 0x64]
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x58]
mov rdx, r15
mov rcx, r14
call fcn.140042fc0
mov qword [rbp - 0x80], rax
mov rsi, rax
test rax, rax
je 0x1400446ec
sub r13d, dword [rbp + 0xb0]
mov rcx, r15
sub r12d, dword [rbp + 0xa8]
inc r13d
call qword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov qword [rbp - 0x38], rax
mov r15, rax
test rax, rax
je 0x1400446ec
mov rcx, qword [rbp - 0x50]
lea edx, [r12 + 1]
mov r8d, r13d
call qword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov qword [rbp - 0x48], rax
test rax, rax
je 0x1400446ec
mov rdx, rax
mov rcx, r15
call qword [sym.imp.GDI32.dll_SelectObject]
mov qword [rbp - 0x30], rax
test rax, rax
je 0x1400446ec
mov eax, dword [rbp + 0xb0]
lea r9d, [r12 + 1]
mov dword [rsp + 0x40], 0xcc0020
xor r8d, r8d
mov dword [rsp + 0x38], eax
xor edx, edx
mov eax, dword [rbp + 0xa8]
mov rcx, r15
mov dword [rsp + 0x30], eax
mov rax, qword [rbp - 0x50]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r13d
call qword [sym.imp.GDI32.dll_BitBlt]
test eax, eax
je 0x1400446ec
mov rcx, qword [rbp - 0x48]
lea rax, [rsp + 0x5c]
mov dword [rsp + 0x28], 8
lea r9, [rsp + 0x70]
lea r8, [rsp + 0x60]
mov qword [rsp + 0x20], rax
mov rdx, r15
call fcn.140042fc0
mov qword [rsp + 0x68], rax
mov r12, rax
test rax, rax
je 0x1400446ec
mov r8d, dword [rsp + 0x58]
mov edx, r8d
mov edi, dword [rsp + 0x64]
mov r13d, dword [rsp + 0x60]
mov r9d, r13d
imul r9d, dword [rsp + 0x70]
imul edx, edi
cmp byte [rbp + 0xb8], 0
mov dword [rbp - 0x58], r9d
movsxd r11, edx
mov qword [rbp - 0x60], r11
movsxd r14, r9d
jne 0x140044244
cmp byte [rsp + 0x5c], 0
je 0x140044364
mov eax, dword [rsp + 0x50]
cmp eax, 0xffffffff
je 0x140044256
and eax, 0xf8f8f8
mov dword [rsp + 0x50], eax
xor r10d, r10d
mov r8d, r10d
test r9d, r9d
jle 0x1400442c3
cmp r9d, 8
jb 0x1400442c3
mov ecx, r9d
and ecx, 0x80000007
jge 0x140044279
dec ecx
or ecx, 0xfffffff8
inc ecx
movdqa xmm2, xmmword [0x1400eb900]
mov eax, r9d
sub eax, ecx
movsxd rcx, eax
mov rax, r10
nop dword [rax]
movdqu xmm0, xmmword [r12 + rax*4]
add r8d, 8
movdqa xmm1, xmm2
pand xmm0, xmm2
movdqu xmmword [r12 + rax*4], xmm0
movdqu xmm0, xmmword [r12 + rax*4 + 0x10]
pand xmm1, xmm0
movdqu xmmword [r12 + rax*4 + 0x10], xmm1
add rax, 8
cmp rax, rcx
jl 0x140044290
movsxd rax, r8d
cmp rax, r14
jge 0x1400442e0
nop dword [rax + rax]
and dword [r12 + rax*4], 0xf8f8f8
inc rax
cmp rax, r14
jl 0x1400442d0
mov ecx, r10d
test edx, edx
jle 0x14004433e
cmp edx, 8
jb 0x14004433e
mov eax, edx
and eax, 0x80000007
jge 0x1400442fc
dec eax
or eax, 0xfffffff8
inc eax
movdqa xmm2, xmmword [0x1400eb900]
sub edx, eax
movsxd r8, edx
mov rax, r10
nop dword [rax]
movdqu xmm0, xmmword [rsi + rax*4]
add ecx, 8
movdqa xmm1, xmm2
pand xmm1, xmm0
movdqu xmmword [rsi + rax*4], xmm1
movdqu xmm0, xmmword [rsi + rax*4 + 0x10]
pand xmm0, xmm2
movdqu xmmword [rsi + rax*4 + 0x10], xmm0
add rax, 8
cmp rax, r8
jl 0x140044310
movsxd rax, ecx
cmp rax, r11
jge 0x14004435f
nop word [rax + rax]
and dword [rsi + rax*4], 0xf8f8f8
inc rax
cmp rax, r11
jl 0x140044350
mov r8d, dword [rsp + 0x58]
test r11, r11
jle 0x14004437d
lea rax, [rsi + 3]
mov rcx, r11
mov byte [rax], 0
lea rax, [rax + 4]
sub rcx, 1
jne 0x140044370
mov r10d, dword [rsp + 0x54]
cmp r10d, 1
jge 0x1400444d4
test r9d, r9d
jle 0x1400443ad
lea rax, [r12 + 3]
mov rcx, r14
nop dword [rax]
mov byte [rax], 0
lea rax, [rax + 4]
sub rcx, 1
jne 0x1400443a0
xor r10d, r10d
mov dword [rbp + 0xb8], r10d
mov r15d, r10d
test r9d, r9d
jle 0x1400446c4
mov esi, dword [rsi]
mov edi, r10d
mov r9d, dword [rsp + 0x50]
nop dword [rax]
cmp dword [r12 + rdi*4], esi
mov r12, qword [rbp - 0x70]
je 0x1400443ef
test r12, r12
je 0x1400443e6
cmp dword [r12], 0
jne 0x1400443ef
cmp esi, r9d
jne 0x1400444af
mov ecx, dword [rsp + 0x70]
mov eax, r15d
cdq
idiv r13d
sub ecx, eax
cmp dword [rsp + 0x64], ecx
jg 0x1400444af
mov eax, r13d
sub eax, edx
cmp r8d, eax
jg 0x1400444af
cmp qword [rbp - 0x60], 0
mov al, 1
mov r8d, r10d
mov r11, r10
mov ecx, r15d
jle 0x140044713
mov rbx, qword [rbp - 0x80]
mov r10d, r15d
sub rbx, r12
mov byte [rbp + 0xc0], al
mov rdx, r12
nop dword [rax]
mov r15, qword [rsp + 0x68]
mov r9d, dword [rbx + rdx]
movsxd rax, ecx
cmp dword [r15 + rax*4], r9d
mov r15d, dword [rbp + 0xb8]
je 0x14004446a
test r12, r12
je 0x140044463
cmp dword [rdx], 0
jne 0x14004446a
cmp r9d, dword [rsp + 0x50]
jne 0x14004449f
inc r8d
cmp r8d, dword [rsp + 0x58]
jge 0x140044478
inc ecx
jmp 0x140044483
xor eax, eax
add r10d, r13d
mov r8d, eax
mov ecx, r10d
inc r11
add rdx, 4
cmp r11, qword [rbp - 0x60]
jl 0x140044440
movzx edi, byte [rbp + 0xc0]
mov ebx, r15d
jmp 0x14004471c
mov r9d, dword [rsp + 0x50]
xor al, al
mov byte [rbp + 0xc0], al
xor r10d, r10d
inc r15d
inc rdi
mov dword [rbp + 0xb8], r15d
cmp rdi, r14
jge 0x1400446c4
mov r8d, dword [rsp + 0x58]
mov r12, qword [rsp + 0x68]
jmp 0x1400443d0
xor r14d, r14d
mov dword [rbp + 0xb8], r14d
mov r15d, r14d
test r9d, r9d
jle 0x1400446c4
jmp 0x1400444f4
mov rbx, qword [rbp - 0x70]
mov ecx, dword [rsp + 0x70]
mov eax, r15d
cdq
idiv r13d
sub ecx, eax
cmp edi, ecx
jg 0x1400446ac
mov eax, r13d
sub eax, edx
cmp r8d, eax
jg 0x1400446ac
mov qword [rbp - 0x40], r14
mov dil, 1
mov dword [rsp + 0x74], r15d
mov r13d, r14d
test r11, r11
jle 0x14004470b
mov rax, rbx
mov byte [rbp + 0xc0], dil
sub rax, rsi
mov dword [rbp - 0x68], r15d
mov qword [rbp - 0x28], rax
mov r12, rsi
nop word [rax + rax]
mov ecx, dword [r12]
movzx r9d, byte [r12 + 1]
movzx r15d, byte [r12]
shr ecx, 0x10
movzx edx, cl
cmp r10d, edx
jle 0x14004456f
xor r14b, r14b
jmp 0x140044576
movzx r14d, cl
sub r14b, r10b
movzx r8d, r9b
cmp r10d, r8d
jle 0x140044584
xor sil, sil
jmp 0x14004458b
movzx esi, r9b
sub sil, r10b
movzx ebx, r15b
cmp r10d, ebx
jle 0x140044599
xor dil, dil
jmp 0x1400445a0
movzx edi, r15b
sub dil, r10b
mov eax, 0xff
sub eax, edx
cmp r10d, eax
jle 0x1400445b1
mov r11b, 0xff
jmp 0x1400445b5
lea r11d, [rcx + r10]
mov eax, 0xff
sub eax, r8d
cmp r10d, eax
jle 0x1400445c7
mov r10b, 0xff
jmp 0x1400445ca
add r10b, r9b
mov ecx, dword [rsp + 0x54]
mov eax, 0xff
sub eax, ebx
cmp ecx, eax
jle 0x1400445dd
mov cl, 0xff
jmp 0x1400445e0
add cl, r15b
movsxd rbx, dword [rsp + 0x74]
mov r15, qword [rsp + 0x68]
movzx r8d, byte [r15 + rbx*4 + 2]
movzx edx, byte [r15 + rbx*4 + 1]
movzx r9d, byte [r15 + rbx*4]
cmp r8b, r14b
jb 0x140044619
cmp r8b, r11b
ja 0x140044619
cmp dl, sil
jb 0x140044619
cmp dl, r10b
ja 0x140044619
cmp r9b, dil
jb 0x140044619
cmp r9b, cl
jbe 0x140044635
cmp qword [rbp - 0x70], 0
je 0x14004462b
mov rax, qword [rbp - 0x28]
cmp dword [rax + r12], 0
jne 0x140044635
mov eax, dword [rsp + 0x50]
cmp dword [r12], eax
jne 0x140044680
inc r13d
cmp r13d, dword [rsp + 0x58]
jge 0x140044647
inc ebx
mov dword [rsp + 0x74], ebx
jmp 0x14004465e
mov r8d, dword [rbp - 0x68]
xor eax, eax
add r8d, dword [rsp + 0x60]
mov r13d, eax
mov dword [rbp - 0x68], r8d
mov dword [rsp + 0x74], r8d
mov r8, qword [rbp - 0x40]
add r12, 4
mov r11, qword [rbp - 0x60]
inc r8
mov qword [rbp - 0x40], r8
cmp r8, r11
jge 0x1400446f4
mov r10d, dword [rsp + 0x54]
jmp 0x140044550
mov r10d, dword [rsp + 0x54]
xor al, al
mov r15d, dword [rbp + 0xb8]
xor r14d, r14d
mov r13d, dword [rsp + 0x60]
mov r9d, dword [rbp - 0x58]
mov r11, qword [rbp - 0x60]
mov rsi, qword [rbp - 0x80]
mov edi, dword [rsp + 0x64]
mov byte [rbp + 0xc0], al
mov r8d, dword [rsp + 0x58]
inc r15d
mov dword [rbp + 0xb8], r15d
cmp r15d, r9d
jl 0x1400444f0
mov rcx, qword [0x140101f48]
lea rdx, [0x1400e04fc]
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
call fcn.14008c5a0
movzx edi, byte [rbp + 0xc0]
jmp 0x140044716
mov ebx, dword [rbp + 0xa8]
jmp 0x140044724
mov ebx, dword [rbp + 0xb8]
movzx edi, byte [rbp + 0xc0]
mov rsi, qword [rbp - 0x80]
mov r14, qword [rbp - 0x78]
jmp 0x140044729
mov ebx, dword [rbp + 0xb8]
jmp 0x140044720
movzx edi, al
mov ebx, dword [rbp + 0xb8]
mov rsi, qword [rbp - 0x80]
mov r14, qword [rbp - 0x78]
mov r15, qword [rsp + 0x68]
mov rdx, qword [rbp - 0x50]
xor ecx, ecx
call qword [sym.imp.USER32.dll_ReleaseDC]
cmp byte [rbp + 0xc8], 0
jne 0x140044747
mov rcx, r14
call qword [sym.imp.GDI32.dll_DeleteObject]
mov r14, qword [rbp - 0x38]
test r14, r14
je 0x14004476e
mov rax, qword [rbp - 0x30]
test rax, rax
je 0x140044765
mov rdx, rax
mov rcx, r14
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, r14
call qword [sym.imp.GDI32.dll_DeleteDC]
mov rax, qword [rbp - 0x48]
test rax, rax
je 0x140044780
mov rcx, rax
call qword [sym.imp.GDI32.dll_DeleteObject]
test rsi, rsi
je 0x14004478d
mov rcx, rsi
call fcn.1400ab68c
mov rax, qword [rbp - 0x70]
test rax, rax
je 0x14004479e
mov rcx, rax
call fcn.1400ab68c
test r15, r15
je 0x140043f6f
mov rcx, r15
call fcn.1400ab68c
test dil, dil
jne 0x1400447be
mov eax, 1
jmp 0x14004483f
mov rcx, qword [rbp - 0x20]
mov edi, dword [rsp + 0x60]
test rcx, rcx
je 0x1400447e5
mov eax, ebx
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
cdq
idiv edi
sub edx, dword [rsp + 0x78]
add edx, dword [rbp + 0xa8]
movsxd rdx, edx
call fcn.1400012a0
mov rcx, qword [rbp - 0x18]
test rcx, rcx
je 0x140044808
mov eax, ebx
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
cdq
idiv edi
sub eax, dword [rsp + 0x7c]
add eax, dword [rbp + 0xb0]
movsxd rdx, eax
call fcn.1400012a0
mov rcx, qword [0x140101f48]
lea rdx, [0x1400ccfe4]
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
call fcn.14008c5a0
jmp 0x14004483f
mov rcx, qword [rbp + 0xa0]
lea r9, [0x1400ccf5c]
xor r8d, r8d
call fcn.140036900
add rsp, 0x158
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret