Function at 0x14002b050
Capabilities:
Encode data using xor

Disassembly:
mov dword [rsp + 8], ecx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x68
mov byte [rsp + 0xc0], 0xd
mov dword [rsp + 0x3c], 0x6b
mov dword [rsp + 0x40], 0xd7
mov byte [rsp + 0x24], 0x3b
mov dword [rsp + 0xc8], 0x62
call qword [sym.imp.USER32.dll_GetDesktopWindow]
imul ecx, dword [0x140042b58], 0x119
mov eax, 0xaaaaaaab
movzx edi, byte [0x140042b65]
movzx r8d, byte [0x140042b57]
movzx r12d, dil
mov r11d, dword [0x140042b7c]
inc r8d
mov r15d, dword [0x140042a88]
neg r12b
movzx ebp, byte [0x140042b67]
and r12b, 3
mov r9d, dword [0x140042b68]
mul ecx
movzx ecx, byte [0x140042b83]
mov eax, dword [0x140042b40]
mov r13d, edx
mov edx, dword [0x140042b6c]
xor eax, 0x6b
sub edx, eax
shr r13d, 1
mov dword [0x140042b6c], edx
mov eax, 0x60
sub eax, r8d
mov dword [rsp + 0xb8], r8d
cmp eax, r11d
mov dword [rsp + 0x30], r13d
mov r13d, dword [0x140042b34]
sete al
movsx esi, r12b
and al, cl
imul r14d, edx, 0x36
sub byte [0x140042b80], al
sub cl, bpl
imul r15d, r8d
mov eax, 0xcccccccd
mov r8d, dword [0x140042b4c]
mov byte [0x140042b83], cl
shr r14d, 2
mul r15d
shr edx, 2
lea eax, [rdx + rdx*4]
mov edx, 0x2a7
sub r15d, eax
cmp dword [0x140042b84], 0xffffff9f
mov dword [rsp + 0x2c], r15d
sete byte [0x140042b81]
xor ebx, ebx
nop word [rax + rax]
mov r10d, r9d
mov ecx, esi
sar r10d, cl
mov byte [0x140042b56], r10b
test r8d, r8d
jne 0x14002b1a2
mov eax, esi
sar eax, 0xd4
xor eax, 0xd4
mov eax, ebx
je 0x14002b1a7
mov eax, 1
and r9d, eax
test r13d, r13d
je 0x14002b1ba
mov eax, 1
cmp r14b, 0xd
jne 0x14002b1bc
mov eax, ebx
xor dil, al
sub rdx, 1
jne 0x14002b180
mov eax, dword [0x140042a64]
mov r14d, 0x253
and esi, dword [0x140042a8c]
add eax, 3
mov edi, dword [0x140042b44]
mov r13d, dword [rsp + 0xb8]
mov dword [rsp + 0xb0], eax
movzx eax, byte [0x140042b57]
imul ecx, eax, 0xd7
mov eax, 0x66666667
mov dword [0x140042b68], r9d
imul ecx
mov ecx, edx
mov edx, dword [0x140042b38]
sar ecx, 1
mov eax, ecx
shr eax, 0x1f
add ecx, eax
mov dword [rsp + 0x28], ecx
nop
test edx, edx
je 0x14002b23e
mov eax, ebx
cmp byte [0x140042b66], al
setne al
cmp r15d, eax
jne 0x14002b23e
movsx eax, r10b
xor eax, 0xf
and r11d, eax
test r11b, 3
je 0x14002b260
movzx eax, r12b
movzx ecx, r13b
sar al, cl
movzx ecx, byte [0x140042b64]
sar al, cl
test al, al
mov eax, 1
jne 0x14002b262
mov eax, ebx
sub bpl, al
xor edx, 1
and edi, esi
sub r14, 1
jne 0x14002b220
mov dword [0x140042b38], edx
mov ecx, 0x1dc
mov dword [0x140042b7c], r11d
mov dword [0x140042b44], edi
mov byte [0x140042b67], bpl
nop
test edx, edx
mov eax, ebx
setne al
xor r8d, eax
mov eax, ebx
test edx, edx
setne al
xor r8d, eax
sub rcx, 1
jne 0x14002b290
sub r9b, 0x61
mov dword [0x140042b4c], r8d
or r9b, 3
cmp byte [0x140042b81], bl
mov byte [0x140042b65], r9b
je 0x14002b2de
mov eax, 3
movzx ecx, r15b
shr al, cl
cmp byte [rsp + 0x28], al
mov eax, 1
je 0x14002b2e0
mov eax, ebx
or byte [0x140042b88], al
movsx eax, r10b
cmp eax, dword [rsp + 0xb0]
jne 0x14002b2fa
mov eax, ebx
test r12b, r12b
je 0x14002b2ff
mov eax, 1
and dword [0x140042b34], eax
cmp byte [0x140042b54], bl
mov esi, dword [rsp + 0x30]
jne 0x14002b31a
mov eax, esi
xor eax, 0xffffff9c
mov eax, ebx
je 0x14002b31f
mov eax, 1
xor dword [0x140042b2c], eax
call qword [sym.imp.USER32.dll_GetDesktopWindow]
mov eax, dword [0x140042b28]
inc eax
movsx r14d, sil
add dword [0x140042b48], eax
movsx eax, byte [0x140042a8c]
imul r14d, eax
and r14b, 3
cmp dword [0x140042a64], ebx
mov dword [rsp + 0x34], r14d
mov byte [rsp + 0xb0], r14b
je 0x14002b36b
mov eax, 1
test r15d, r15d
jne 0x14002b36d
mov eax, ebx
movsx r8d, byte [0x140042b88]
mov edi, dword [0x140042b2c]
mov ecx, r8d
mov r13d, dword [0x140042b38]
sub edi, eax
movzx r12d, byte [rsp + 0x28]
mov eax, 0xcccccccd
mul dword [rsp + 0xb8]
mov r11d, dword [0x140042b84]
mov ebp, r13d
mov r10d, dword [0x140042b4c]
shr edx, 2
movsx r9d, r14b
imul ecx, r9d
mov dword [rsp + 0x4c], r9d
lea eax, [rdx + rdx*4]
mov dword [0x140042b2c], edi
sub ebp, eax
mov qword [rsp + 0x50], 0x61
add ebp, dword [rsp + 0xb8]
mov eax, 0x66666667
imul ecx
mov dword [rsp + 0x38], ebp
mov bpl, 3
sar edx, 1
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx*4]
mov edx, ebx
sub ecx, eax
lea eax, [r8 + r9]
movzx r8d, byte [0x140042b67]
mov r9d, dword [0x140042b78]
mov dword [rsp + 0x44], eax
movzx eax, byte [0x140042b82]
cmp r15d, eax
mov dword [rsp + 0x20], ecx
sete dl
mov dword [rsp + 0x48], edx
nop
movzx edx, byte [0x140042b57]
cmp esi, 0xd7
mov eax, ebx
setb al
cmp eax, edx
jne 0x14002b55e
cmp dword [0x140042a64], ebx
je 0x14002b44f
lea eax, [r12 + rsi]
test eax, eax
mov eax, 1
jne 0x14002b451
mov eax, ebx
and r11d, eax
cmp dword [0x140042b34], esi
je 0x14002b469
cmp dword [0x140042b68], ebx
jne 0x14002b469
xor r8b, r8b
jmp 0x14002b46c
mov r8b, 1
movzx esi, byte [rsp + 0xb0]
mov ecx, r15d
movzx ebp, byte [0x140042b44]
mov eax, r15d
shr eax, 2
add al, byte [0x140042b82]
mov dword [rsp + 0xc0], eax
movzx eax, byte [0x140042b65]
sub al, 0x3b
mov byte [0x140042b67], r8b
shl al, cl
movzx ecx, byte [0x140042a62]
xor al, 0x9f
or al, cl
xor cl, al
mov eax, 0xaaaaaaab
mul r15d
mov byte [0x140042a62], cl
movsx ecx, byte [0x140042b56]
shr edx, 1
movzx eax, dl
imul ecx, r12d
add al, al
add dl, al
mov eax, 0xaaaaaaab
sub bpl, dl
mul esi
add bpl, r15b
shr edx, 1
lea eax, [rdx + rdx*2]
sub esi, eax
movzx eax, byte [0x140042a63]
or al, byte [rsp + 0x28]
add byte [0x140042b54], al
mov eax, 0x66666667
add esi, dword [0x140042b40]
imul ecx
mov dword [rsp + 0x30], esi
mov ecx, edx
sar ecx, 1
mov eax, ecx
shr eax, 0x1f
add ecx, eax
cmp dword [0x140042b68], ebx
mov dword [rsp + 0xc8], ecx
je 0x14002b52c
mov eax, 1
test r14b, r14b
jne 0x14002b52e
mov eax, ebx
and edi, eax
cmp dword [0x140042b6c], ebx
jne 0x14002b552
mov eax, dword [rsp + 0x4c]
mov ecx, r12d
shl eax, cl
mov ecx, dword [0x140042a8c]
add ecx, r15d
sar eax, cl
test eax, eax
mov eax, ebx
je 0x14002b557
mov eax, 1
mov ecx, dword [rsp + 0x20]
add r9d, eax
movzx edx, byte [rsp + 0xc0]
cmp r8b, 0x3b
mov esi, dword [rsp + 0x30]
mov eax, ebx
sete al
xor eax, edx
xor r10d, eax
movsx eax, byte [0x140042b88]
add eax, dword [rsp + 0xc8]
add dword [0x140042b30], eax
test r9d, r9d
je 0x14002b5a3
movsx ecx, cl
lea eax, [rcx + 0xd7]
or eax, ecx
mov eax, 1
jne 0x14002b5a5
mov eax, ebx
add dword [0x140042a88], eax
mov eax, dword [rsp + 0x44]
mov ecx, dword [rsp + 0x20]
add eax, edx
and eax, dword [rsp + 0x48]
or r13d, eax
sub qword [rsp + 0x50], 1
jne 0x14002b420
movzx r8d, byte [0x140042b64]
mov eax, 0x92492493
mov dword [0x140042b78], r9d
movsx r9d, byte [0x140042b56]
mov dword [0x140042b38], r13d
mov r13d, dword [rsp + 0x20]
mov dword [0x140042b4c], r10d
lea ecx, [r12 + r9*4]
mov dword [0x140042b84], r11d
add ecx, r9d
mov dword [0x140042b2c], edi
imul ecx
mov byte [rsp + 0xb0], bpl
add edx, ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
imul eax, edx, 7
sub ecx, eax
je 0x14002b69c
sub ecx, 1
je 0x14002b686
sub ecx, 1
je 0x14002b65d
sub ecx, 1
jne 0x14002b6a7
test r13b, r13b
je 0x14002b64d
lea eax, [r12 + 0xd7]
mov ecx, 1
test eax, eax
jne 0x14002b64f
mov ecx, ebx
movsx eax, r8b
xor eax, ecx
xor dword [0x140042b58], eax
jmp 0x14002b6a7
mov r12d, dword [rsp + 0xb8]
mov eax, 0xcccccccd
movzx ecx, bpl
mul ecx
mov dword [0x140042b78], r12d
shr edx, 2
add dl, byte [0x140042b58]
mov byte [rsp + 0x28], dl
jmp 0x14002b6af
mov r12d, dword [rsp + 0xb8]
lea r14d, [r9 + 2]
mov byte [rsp + 0xb0], r14b
jmp 0x14002b6b3
or r10d, 1
mov dword [0x140042b4c], r10d
mov r12d, dword [rsp + 0xb8]
movzx r14d, bpl
mov edx, dword [0x140042b48]
mov eax, edx
mov ebp, dword [rsp + 0x38]
and eax, r15d
cmp eax, 0xffffff9f
je 0x14002b6db
movzx ecx, byte [0x140042b81]
movsx eax, r13b
cmp eax, ecx
mov eax, 1
jne 0x14002b6dd
mov eax, ebx
sub dword [0x140042b68], eax
cmp edx, 0xffffff9f
jne 0x14002b6fd
mov ecx, dword [0x140042b34]
movzx eax, r14b
sub eax, ebp
test ecx, eax
mov eax, 1
jne 0x14002b6ff
mov eax, ebx
add r8b, al
mov byte [0x140042b64], r8b
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
cmp dword [0x140042b78], ebx
mov eax, ebx
mov edx, dword [0x140042b38]
movzx ecx, r12w
movzx r8d, byte [0x140042b81]
setne al
and edx, eax
movzx edi, r14b
mov eax, r8d
mov dword [0x140042b38], edx
xor eax, edi
sub dword [0x140042b68], eax
movzx eax, byte [0x140042b83]
add ax, ax
sub cx, ax
and ecx, 3
je 0x14002b7b7
mov r14d, dword [rsp + 0xc0]
sub ecx, 1
je 0x14002b7a1
sub ecx, 1
je 0x14002b787
cmp ecx, 1
jne 0x14002b805
movzx esi, r14b
imul esi, dword [0x140042b4c]
and esi, 3
mov dword [rsp + 0x40], esi
jmp 0x14002b80a
movzx ecx, byte [rsp + 0x28]
movzx eax, cl
and ecx, edx
and al, 3
add al, dl
and dword [0x140042b84], ecx
mov byte [rsp + 0x34], al
jmp 0x14002b805
mov eax, dword [0x140042b7c]
mov ecx, dword [rsp + 0x4c]
shr eax, cl
and eax, esi
and dword [0x140042b3c], eax
jmp 0x14002b805
test r8b, r8b
je 0x14002b7cb
mov dword [0x140042b68], 1
test r13b, r13b
jne 0x14002b7d1
mov dword [0x140042b68], ebx
movzx ecx, byte [rsp + 0xc0]
sar edx, cl
test edi, edx
jne 0x14002b7f2
movzx ecx, byte [0x140042b58]
movzx eax, r14b
shr al, cl
test al, al
mov eax, ebx
je 0x14002b7f7
mov eax, 1
sub byte [0x140042b80], al
mov r14d, dword [rsp + 0xc0]
mov esi, 0xd7
call qword [sym.imp.KERNEL32.dll_IsDebuggerPresent]
cmp byte [0x140042b67], bl
je 0x14002b82b
mov ecx, dword [0x140042b28]
mov eax, ebx
shr eax, cl
cmp edi, eax
mov eax, 1
je 0x14002b82d
mov eax, ebx
xor dword [0x140042b60], eax
test r15d, r15d
je 0x14002b843
mov eax, ebp
mov ecx, 1
or eax, esi
jne 0x14002b845
mov ecx, ebx
movzx edx, byte [0x140042a62]
mov r10d, r15d
imul edi, dword [0x140042b34], 0xffffff9f
movzx eax, dl
mov r11d, dword [0x140042b44]
mov r9d, 0x111
movzx esi, byte [0x140042b54]
mov r8d, dword [0x140042b2c]
shl al, cl
and dl, al
shr edi, 2
mov byte [0x140042a62], dl
xor r10d, r12d
movzx edx, byte [0x140042b56]
nop dword [rax + rax]
test r10d, r10d
je 0x14002b89e
mov ecx, 1
test ebp, ebp
jne 0x14002b8a0
mov ecx, ebx
mov eax, r11d
shl eax, cl
sub r8d, eax
movzx eax, sil
sub al, dil
add al, r15b
or dl, al
sub r9, 1
jne 0x14002b890
mov byte [0x140042b56], dl
mov dword [0x140042b2c], r8d
call qword [sym.imp.KERNEL32.dll_GetCurrentProcessorNumber]
mov ebp, dword [0x140042b2c]
mov eax, ebp
mov esi, dword [0x140042b48]
or eax, 0xffffff9f
movzx r10d, byte [0x140042b80]
and esi, eax
mov r9d, dword [0x140042b28]
mov eax, r10d
mov edx, dword [0x140042b58]
mov r8d, dword [rsp + 0xc8]
movsx r11d, dil
mov edi, dword [0x140042b4c]
movzx ecx, r14b
or eax, ecx
and r9d, eax
cmp edx, r11d
je 0x14002b927
mov eax, r11d
and eax, r8d
xor eax, edi
mov eax, 1
jne 0x14002b929
mov eax, ebx
movzx r14d, byte [0x140042a87]
xor edi, eax
mov r13d, dword [0x140042b68]
xor edx, 1
mov r15d, dword [0x140042b30]
mov eax, r14d
sub eax, ecx
mov dword [rsp + 0x48], edx
add r9d, eax
mov byte [0x140042b55], bl
mov ecx, r12d
mov dword [0x140042b28], r9d
mov r12d, dword [0x140042b84]
mov eax, r13d
shl eax, cl
movsx ecx, byte [0x140042b56]
add ebp, eax
mov dword [0x140042b2c], ebp
lea eax, [rcx - 0x14b]
or esi, eax
mov eax, ecx
mov ecx, dword [0x140042b6c]
sub eax, r8d
add ecx, eax
mov eax, 0x2aaaaaab
mov dword [rsp + 0x44], ecx
movzx ecx, byte [rsp + 0x28]
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx*2]
add eax, eax
sub ecx, eax
je 0x14002ba05
sub ecx, 1
je 0x14002b9e8
sub ecx, 1
je 0x14002b9d0
cmp ecx, 1
jne 0x14002ba10
movzx eax, byte [0x140042a62]
sar al, 1
and byte [0x140042b64], al
jmp 0x14002ba10
mov eax, r11d
cdq
and edx, 3
add eax, edx
sar eax, 2
add al, byte [0x140042a88]
mov dword [rsp + 0x24], eax
jmp 0x14002ba10
mov ecx, r11d
mov dword [0x140042b68], ebx
sub ecx, dword [rsp + 0x38]
mov edx, r15d
shr edx, cl
mov r13d, ebx
xor dword [0x140042a64], edx
jmp 0x14002ba10
lea ecx, [r12 - 0x4b]
mov byte [0x140042b67], cl
movzx ecx, byte [0x140042b81]
mov eax, 0x92492493
lea r8d, [r11 + rcx*4]
imul r8d
add edx, r8d
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
imul eax, edx, 7
sub r8d, eax
movsx ecx, r8w
test ecx, ecx
je 0x14002bae9
sub ecx, 1
je 0x14002bab2
mov r9d, dword [rsp + 0x24]
sub ecx, 1
je 0x14002ba7b
mov r15d, dword [rsp + 0x2c]
cmp ecx, 1
jne 0x14002bb11
mov r10d, ebx
mov ecx, r12d
shr r10d, cl
and r10b, 0x6b
or r10b, r12b
mov byte [0x140042b80], r10b
jmp 0x14002bb11
movsx ecx, r9b
mov eax, 0x55555556
imul ecx
movsx eax, byte [0x140042b67]
mov ebp, edx
shr ebp, 0x1f
add ebp, edx
add ebp, eax
mov eax, ebx
test edi, edi
mov dword [rsp + 0x3c], ebp
sete al
add r15d, eax
mov dword [0x140042b30], r15d
mov r15d, dword [rsp + 0x2c]
jmp 0x14002bb11
movzx ecx, byte [rsp + 0xb8]
mov eax, ebx
mov r15d, dword [rsp + 0x2c]
mov edx, 0xffffff9f
sar edx, cl
mov ecx, r11d
shl edx, cl
cmp dword [0x140042a88], edx
sete al
and dword [0x140042b40], eax
add r9b, 0x6b
mov byte [0x140042b54], r9b
jmp 0x14002bb0c
mov ecx, dword [rsp + 0xb8]
mov r15d, dword [rsp + 0x2c]
sub r9d, r15d
shr r9d, cl
lea ecx, [rbp + 0x1a]
or r14b, r9b
mov dword [rsp + 0x38], ecx
mov byte [0x140042a87], r14b
mov r9d, dword [rsp + 0x24]
mov ebp, dword [rsp + 0x40]
mov eax, ebp
sub eax, dword [rsp + 0xb8]
mov r8d, dword [rsp + 0x3c]
or eax, r8d
movzx r14d, byte [0x140042a62]
and eax, r13d
xor edi, eax
mov dword [0x140042b4c], edi
test r14b, r14b
jne 0x14002bb4b
test r15d, r15d
je 0x14002bb47
test ebp, ebp
jne 0x14002bb4b
mov eax, ebx
jmp 0x14002bb50
mov eax, 1
mov edi, dword [0x140042b5c]
mov ecx, ebx
mov r13d, dword [rsp + 0x30]
or edi, eax
movsx edx, byte [0x140042b66]
mov eax, ebx
cmp r13d, edx
mov dword [0x140042b5c], edi
seta cl
cmp r12d, r13d
mov r12d, dword [rsp + 0xb8]
seta al
cmp eax, ecx
je 0x14002bb9c
test r12d, r12d
je 0x14002bb9c
cmp r13d, r11d
sete al
or al, r12b
xor dl, al
mov byte [0x140042b66], dl
movzx eax, r9b
movsx r8d, r8b
mov r9d, dword [0x140042b60]
sub al, bpl
xor al, byte [0x140042b67]
and byte [0x140042a86], al
movsx eax, byte [0x140042b65]
imul r8d, eax
and r8b, 3
test r14b, r14b
je 0x14002bc92
cmp ebp, 1
jle 0x14002bc92
movsx eax, byte [rsp + 0x34]
mov r15d, dword [rsp + 0xc0]
movzx r11d, r15b
mov r15d, dword [rsp + 0x2c]
movzx ecx, r8b
add ecx, eax
mov eax, dword [rsp + 0x48]
add eax, r11d
shr eax, cl
test eax, eax
jne 0x14002bc12
cmp dword [0x140042b78], ebx
mov dword [0x140042b38], ebx
je 0x14002bc1c
mov dword [0x140042b38], 1
mov r11d, dword [rsp + 0xc8]
lea eax, [r11 + r12]
test eax, eax
jne 0x14002bc33
mov eax, ebx
test r12d, r12d
je 0x14002bc38
mov eax, 1
and al, r10b
movzx r10d, byte [rsp + 0xb0]
mov byte [0x140042b82], al
test r10b, r10b
jne 0x14002bc58
mov eax, r11d
or eax, ebp
mov eax, ebx
je 0x14002bc5d
mov eax, 1
or al, dl
movzx ecx, r10b
add byte [0x140042b83], al
mov eax, 0x66666667
imul ecx, r9d
imul ecx
movzx eax, r13b
sar edx, 1
and al, 3
mov r10d, edx
shr r10d, 0x1f
add r10d, edx
add al, dil
mov byte [rsp + 0xb0], al
jmp 0x14002bc9f
mov r11d, dword [rsp + 0xc8]
mov r10d, dword [rsp + 0x34]
mov r12d, dword [rsp + 0x38]
mov eax, ebx
mov edx, dword [0x140042b3c]
movsx ebp, r10b
cmp r12d, ebp
sete al
cmp eax, edx
je 0x14002bcd5
mov ecx, r13d
movsx eax, r8b
sub eax, 0x14b
shl eax, cl
movzx ecx, al
shr esi, cl
and edx, esi
mov dword [0x140042b3c], edx
movsx edi, byte [rsp + 0x24]
movsx ecx, byte [0x140042b56]
mov eax, edi
and eax, dword [rsp + 0xb8]
xor eax, ecx
movsx edx, r14b
mov dword [0x140042b48], eax
mov ecx, edi
mov eax, r15d
shl eax, cl
or eax, edx
mov dword [0x140042b58], eax
movzx eax, r10b
sub al, r11b
and eax, 0x4b
movzx ecx, al
sar edx, cl
add r9d, edx
mov dword [0x140042b60], r9d
cmp r11d, r13d
je 0x14002bd28
test r10b, r10b
je 0x14002bd2d
mov ebx, 1
movzx eax, byte [0x140042b54]
mov ecx, dword [rsp + 0x44]
add eax, ebx
and ecx, eax
mov dword [0x140042b6c], ecx
call qword [sym.imp.USER32.dll_GetDesktopWindow]
mov eax, dword [rsp + 0x3c]
sub r12b, r15b
or al, byte [0x140042b54]
xor r12b, byte [rsp + 0x40]
add r12b, byte [0x140042a86]
sub byte [0x140042b81], r12b
mov byte [0x140042b55], al
movsx eax, byte [0x140042b67]
xor eax, ebp
xor eax, dword [0x140042b2c]
xor eax, dword [rsp + 0xc8]
or dword [0x140042b40], eax
call fcn.14002aa30
movzx eax, byte [rsp + 0xb0]
xor eax, edi
add rsp, 0x68
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret