Function at 0x180014cd0
Capabilities:
Connect pipe
Encode data using xor
Read pipe
Suspend thread
Write pipe

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xa0
mov r10d, dword [rsp + 0x108]
lea eax, [r8 + 0x1ca]
mov edi, dword [rsp + 0x118]
lea r11d, [r8 + 0x3e6]
mov r12d, dword [rsp + 0x110]
lea ebp, [r8 + 0x19b]
mov dword [rsp + 0x118], eax
add edi, 0xfffffb59
lea eax, [rcx - 0x3ab2]
mov dword [rsp + 0x68], edi
lea r14d, [r10 - 0x1cb]
movsxd r13, eax
lea ebx, [r10 - 0x10a]
mov dword [rsp + 0x70], eax
lea r10d, [r9 + 0x60]
mov dword [rsp + 0x6c], r14d
add ecx, 0xffffffbc
mov dword [rsp + 0xe0], r11d
mov rsi, rdx
mov dword [rsp + 0x64], ebx
movsxd rdx, dword [rsp + 0x100]
lea eax, [r13 + 0x3aed]
add r12d, 0x25c
mov dword [rsp + 0xf0], ecx
lea r9d, [r8 + 0x1ca]
mov dword [rsp + 0x110], r10d
lea r15d, [rdx - 0x3a6e]
mov dword [rsp + 0xf8], r15d
cmp r9d, eax
jl 0x180015851
lea eax, [r14 + 0x4b0]
cmp r11d, eax
je 0x1800155fa
lea rax, [0x18001fa80]
mov r14d, 1
mov qword [rsi + 0x180], rax
mov rax, qword [rsi + 0xd0]
mov ecx, dword [rax + 0xd8]
sub ecx, 0x3b4d
movsxd r8, ecx
cmp r8, 0x174
jge 0x180014e93
lea r11, [rsi + 0x38]
shl r8, 2
mov rax, qword [rsi + 0x88]
xor rax, 0x3a6e
mov qword [rsi + 0x150], rax
mov rax, qword [rsi + 0x180]
mov r10d, dword [rax + r8]
mov rax, qword [rsi + 0xd0]
imul r10d, dword [rsi + 0x118]
or qword [rax + 0x110], r11
mov r9d, dword [rsi + 0x17c]
mov rcx, qword [rsi + 0x88]
mov edx, r10d
mov eax, dword [rsi + 0x120]
xor eax, 0x3b55
sub r9d, eax
mov rax, qword [rsi + 0x20]
imul rax, rcx
mov qword [rsi + 0x20], rax
lea rax, [rcx + 1]
mov qword [rsi + 0x88], rax
mov ecx, r9d
mov rax, qword [rsi + 0x48]
shr edx, cl
movsxd rcx, dword [rsi + 0x160]
mov byte [rcx + rax], dl
add dword [rsi + 0x160], r14d
add qword [rsi + 0x1e0], 0x77ef
test r9d, r9d
jne 0x180014e29
add r8, 4
cmp r8, 0x5d0
jl 0x180014ded
mov ebp, 0x3f0a
cmp qword [rsi + 0x140], rbp
jb 0x180014eba
imul rax, qword [rsi + 0x1e0], 0x3aed
mov rcx, qword [rsi + 0x1c0]
or qword [rcx + 0x170], rax
mov rax, qword [rsi + 0x1b0]
mov ebx, 0x3d0e
mov eax, dword [rax + 0x1b8]
add eax, 0x2e5
cmp rax, qword [rsi + 0x30]
jbe 0x180014ee8
mov rax, qword [rsi + 0x158]
or rax, rbx
or qword [rsi + 0x128], rax
mov dword [rsi + 0x118], 0x791064e3
mov r8d, 0x3a95
mov rax, qword [rsi + 0xe0]
mov r10d, r8d
add rax, rbp
mov qword [rsi + 0x1e0], rax
mov rax, qword [rsi + 0xd0]
mov ecx, dword [rax + 0x120]
xor ecx, 0x3b45
mov dword [rsi + 0x17c], ecx
mov rax, qword [rsi]
mov rcx, qword [rax + 0x1b0]
lea rax, [0x18002b130]
xor rcx, 0x3f59
mov qword [rsi + 0x50], rcx
mov qword [rsi + 0x180], rax
mov r11, qword [rsi + 0x1b0]
imul eax, dword [r11 + 0x120], 0xd243c099
cmp eax, r8d
jb 0x180014f8d
mov rdx, qword [rsi + 0x10]
mov r9, qword [rsi + 0x170]
xor rdx, r8
add r9, rdx
add r10d, r14d
mov qword [rsi + 0x170], r9
imul ecx, dword [r11 + 0x120], 0xd243c099
movsxd rax, r10d
cmp rax, rcx
jbe 0x180014f6d
mov rax, qword [rsi + 0x1c0]
mov r12d, 0x3b1e
movsxd rcx, dword [rax + 0x1b8]
lea r13d, [r12 - 0x21]
xor rcx, 0x3c7d
cmp rcx, 0x180
jge 0x1800150e9
mov r9, rcx
shl r9, 2
mov rax, qword [rsi + 0x180]
mov r11d, dword [r9 + rax]
mov rax, qword [rsi + 0x100]
mov qword [rsi + 0x88], rax
inc rax
mov qword [rsi + 0x100], rax
mov rax, qword [rsi + 0x1c8]
mov ecx, dword [rax + 0xd8]
xor ecx, 0x53
cmp ecx, r12d
jg 0x18001500f
mov eax, 0x3b1f
lea rdx, [rsi + 0x10]
sub eax, ecx
mov ecx, eax
sub rcx, r14
jne 0x180015006
mov qword [rsi + 0x38], rdx
mov rax, qword [rsi + 0x80]
mov qword [rax + 0xb0], 0x6e
imul r11d, dword [rsi + 0x118]
mov r10d, dword [rsi + 0x17c]
mov rbx, qword [rsi]
mov rax, qword [rsi + 0x1b0]
mov edx, r11d
mov ecx, dword [rax + 0x1b8]
lea rax, [0x18001f53e]
mov qword [rsi + 0x158], rax
xor ecx, 0x3c75
mov al, byte [rbx + 0x1b8]
sub r10d, ecx
sub al, 0x7e
mov ecx, r10d
shr edx, cl
movsxd rcx, dword [rsi + 0x160]
and dl, al
mov rax, qword [rsi + 0x48]
mov byte [rcx + rax], dl
add dword [rsi + 0x160], r14d
mov rbx, qword [rsi]
lea rax, [rbx + 0x30]
mov qword [rsi + 0x1e0], rax
imul rax, qword [rsi + 0x110], 0x59a
mov qword [rsi + 0x110], rax
test r10d, r10d
jne 0x180015033
mov ecx, dword [rbx + 0x1b8]
mov rax, rbx
add ecx, 0x259
cmp ecx, r13d
jb 0x1800150d3
mov rax, qword [rsi + 0xd0]
mov rcx, qword [rax + 0x138]
or rcx, 0x3b73
mov qword [rsi + 0x1e0], rcx
add r9, 4
cmp r9, 0x600
jl 0x180014fc1
mov ebx, 0x3d0e
mov rcx, qword [rsi + 0x1c8]
mov rax, r12
sub rax, qword [rsi + 0x1b0]
mov edi, 0x3d3d
mov r10d, 0x3b5d
add qword [rcx + 0x20], rax
mov rdx, qword [rsi + 0x1b0]
mov rcx, qword [rsi + 0x1e0]
sub rcx, rdi
mov rax, qword [rdx + 0x1e0]
imul rax, rcx
mov qword [rdx + 0x1e0], rax
mov dword [rsi + 0x118], 0x38e38e39
mov rax, qword [rsi + 0x1c0]
mov ecx, dword [rax + 0x1b8]
mov rax, 0xffffffffffffc5bc
sub ecx, 0x3c65
mov dword [rsi + 0x17c], ecx
sub rax, qword [rsi + 0x100]
add qword [rsi + 0x88], rax
lea rax, [0x18002b010]
mov qword [rsi + 0x40], r8
mov qword [rsi + 0x110], 0x3aff
mov qword [rsi + 0x180], rax
mov rax, qword [rsi]
mov ecx, dword [rax + 0xe8]
sub ecx, 0x3aed
movsxd r8, ecx
cmp r8, 0x44
jge 0x1800152d1
shl r8, 2
mov r15d, 0x3a97
mov rax, qword [rsi + 0x1c8]
mov ecx, dword [rax + 0xe8]
xor ecx, 0x43b
cmp ecx, 0x3ed6
jge 0x1800151d7
mov eax, 0x3ed6
sub eax, ecx
imul rcx, rax, 0xffffffffffffc4a3
add qword [rsi + 0x1e0], rcx
mov rax, qword [rsi + 0x180]
mov r11d, dword [rax + r8]
imul r11d, dword [rsi + 0x118]
cmp qword [rsi + 0xb8], r10
jne 0x18001520b
mov rax, qword [rsi + 0x128]
or qword [rsi + 0x170], rax
dec rax
mov qword [rsi + 0x128], rax
mov r9d, dword [rsi + 0x17c]
cmp qword [rsi + 0x138], r10
jbe 0x180015234
imul rcx, qword [rsi + 0xe0], 0x3a44
mov rax, qword [rsi + 0xd0]
mov qword [rax + 0x88], rcx
mov rcx, qword [rsi + 0x1e0]
mov rax, rcx
or rax, r13
xor qword [rsi + 0x88], rax
mov rax, qword [rsi + 0x1c8]
imul edx, dword [rax + 0x1b8], 0x164909f9
cmp edx, r15d
je 0x180015278
mov eax, r15d
lea rbp, [rsi + 0x10]
sub eax, edx
mov edx, eax
or rcx, rbp
sub rdx, r14
jne 0x180015269
mov qword [rsi + 0x1e0], rcx
mov rax, qword [rsi + 0xd0]
mov ecx, 0x3b45
mov edx, r11d
sub ecx, dword [rax + 0xd8]
movzx eax, byte [rsi + 0x120]
add r9d, ecx
mov ecx, r9d
shr edx, cl
imul ecx, eax, 0xb
mov rax, qword [rsi + 0x48]
and dl, cl
movsxd rcx, dword [rsi + 0x160]
mov byte [rcx + rax], dl
add dword [rsi + 0x160], r14d
test r9d, r9d
jne 0x180015278
add r8, 4
cmp r8, 0x110
jl 0x1800151a7
mov ebp, 0x3f0a
mov rax, rbx
sub rax, qword [rsi + 0xb0]
add qword [rsi + 0x1e0], rax
mov dword [rsi + 0x118], 0x72cfe72d
mov rax, qword [rsi + 0x1e0]
sub rax, r12
mov qword [rsi + 0x60], rax
mov rax, qword [rsi + 0x1c0]
mov ecx, dword [rax + 0x1b8]
lea rax, [0x18002b740]
mov qword [rsi + 0x180], rax
sub ecx, 0x3c75
mov dword [rsi + 0x17c], ecx
mov rax, qword [rsi + 0xe0]
lea rax, [rax*2 + 1]
mov qword [rsi + 0xe0], rax
mov rax, qword [rsi + 0x30]
mov ecx, dword [rax + 0xe8]
sub ecx, 0x3aed
movsxd r9, ecx
cmp r9, 0x2f4
jge 0x1800154d9
shl r9, 2
mov r15d, 0x142
mov rax, qword [rsi + 0x180]
mov rdx, qword [rsi + 0x1c0]
mov r8d, dword [rsi + 0x17c]
mov rcx, qword [rsi + 0xa8]
mov r11d, dword [rax + r9]
or rcx, 0x3b73
imul r11d, dword [rsi + 0x118]
mov rax, 0xffffffffffffc12a
sub rax, qword [rsi + 0x58]
add qword [rsi + 0xe0], rax
mov rax, qword [rdx + 0xf0]
imul rax, rcx
mov qword [rdx + 0xf0], rax
mov rax, qword [rsi + 0xd0]
mov ecx, dword [rax + 0x1b8]
mov rax, qword [rsi + 0x168]
xor ecx, 0x3c75
sub r8d, ecx
cmp qword [rsi], rax
je 0x1800153e8
imul rax, qword [rsi + 0x1e0], 0x3b5e
mov qword [rsi + 0x1e0], rax
mov rax, qword [rsi + 0x1b0]
mov ecx, r8d
mov edx, r11d
shr edx, cl
movzx ecx, byte [rax + 0xe8]
imul eax, ecx, 0x1b
movsxd rcx, dword [rsi + 0x160]
and dl, al
mov rax, qword [rsi + 0x48]
mov byte [rcx + rax], dl
add dword [rsi + 0x160], r14d
mov rax, qword [rsi + 0x1e0]
xor rax, rbx
mov qword [rsi + 0xf0], rax
mov rax, qword [rsi + 0x30]
mov qword [rax + 0x170], r12
mov rax, qword [rsi + 0x88]
mov rcx, qword [rsi + 0x1c8]
mov qword [rcx + 0xe0], rax
add qword [rsi + 0x88], r14
test r8d, r8d
jne 0x1800153b4
mov rax, qword [rsi + 0x1b8]
mov r8d, edi
sub rax, rbp
mov qword [rsi + 0x1e0], rax
mov rax, qword [rsi + 0xd0]
mov ecx, dword [rax + 0x1b8]
xor ecx, r15d
cmp ecx, edi
jb 0x1800154b7
mov rax, qword [rsi + 0x1c8]
add r8d, r14d
mov rdx, qword [rsi]
mov rcx, qword [rax + 0x168]
or rcx, r10
xor qword [rdx + 0x1e0], rcx
mov rax, qword [rsi + 0xd0]
mov ecx, dword [rax + 0x1b8]
xor rcx, r15
movsxd rax, r8d
cmp rax, rcx
jbe 0x180015481
mov rax, qword [rsi + 0x1c8]
add r9, 4
or rax, r10
mov qword [rsi + 0x110], rax
cmp r9, 0xbd0
jl 0x180015361
mov rax, qword [rsi + 0x1c0]
mov ecx, dword [rax + 0xe8]
xor ecx, 0x250c
mov dword [rsi + 0xa0], ecx
mov ecx, 0x3afe
mov rax, qword [rsi + 0x58]
or qword [rsi + 0x110], rax
dec rax
mov qword [rsi + 0x58], rax
mov rax, qword [rsi + 0xa8]
add rax, r13
xor qword [rsi + 0x100], rax
mov rax, qword [rsi + 0x80]
mov edx, dword [rax + 0xe8]
add edx, 0x10
cmp edx, ecx
jge 0x180015553
mov r8, qword [rsi + 0x1e0]
sub ecx, edx
mov rax, qword [rsi + 0x60]
mov edx, ecx
xor r8, rax
add rax, r14
sub rdx, r14
jne 0x18001553d
mov qword [rsi + 0x1e0], r8
mov qword [rsi + 0x60], rax
mov rax, qword [rsi]
movsxd r8, dword [rsi + 0xa0]
mov rcx, qword [rsi + 0x1e8]
mov edx, dword [rax + 0xd8]
xor edx, 0x3b45
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov qword [rsi + 0x98], rax
mov rax, qword [rsi]
mov ecx, dword [rax + 0x120]
add ecx, 0x3fc
cmp ecx, 0x3f5b
jg 0x1800155b9
mov edx, 0x3f5c
sub edx, ecx
mov rcx, qword [rsi + 0x80]
mov rax, qword [rcx + 0xa8]
mov qword [rsi + 0x10], rax
dec qword [rcx + 0xa8]
sub rdx, r14
jne 0x18001559b
mov rax, qword [rsi + 0x48]
mov qword [rsi + 0x190], rax
mov eax, dword [rsi + 0xe8]
xor eax, 0x7d0
cmp eax, 0x3ab2
je 0x180015aa7
mov rax, qword [rsi + 0x100]
mov rcx, qword [rsi + 0x80]
sub rax, 0x3f62
or qword [rcx + 0x1e0], rax
jmp 0x180015aa7
mov eax, dword [rsi + 0x1b8]
mov r8d, 0x3aed
sub eax, dword [rsi + 0x168]
and rax, r8
cmp qword [rsi + 0x1c0], rax
jne 0x180015810
movsxd rdi, dword [rsi + 0x50]
movsxd rcx, ebp
xor rcx, qword [rsi + 0xe8]
mov dword [rsp + 0xe0], edi
cmp rdi, rcx
jne 0x180015aa7
movsxd rax, r12d
mov qword [rsp + 0x78], rax
movsxd rcx, r14d
sub rax, qword [rsi + 0x50]
mov dword [rsp + 0x108], r14d
cmp rcx, rax
je 0x1800157e3
mov r12d, dword [rsp + 0x100]
lea r14d, [r8 + r9]
movsxd rbx, r15d
mov eax, edx
mov r15d, dword [rsp + 0x110]
sub eax, r13d
mov dword [rsp + 0x60], eax
lea eax, [r10 - 0x3ed6]
mov edi, dword [rsp + 0x60]
xor eax, ebp
mov dword [rsp + 0x64], eax
mov eax, dword [rsp + 0xf0]
and eax, 0x3b5d
mov qword [rsp + 0x80], rbx
mov dword [rsp + 0x68], eax
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov r8d, dword [rsi + 0x1e0]
movzx eax, r13w
imul r8d, dword [rsi + 0x58]
mov r9, qword [rsi + 0x1c8]
movzx edx, word [rsi + 0xd8]
xor r9, rbx
mov ecx, dword [rsi + 0xa8]
and dx, r14w
and ax, word [rsi + 0xa8]
xor ecx, 0x3d0e
and r8d, 0x3a95
mov word [rsp + 0x20], ax
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov eax, dword [rsi + 0x110]
mov r9d, ebp
mov ebx, dword [rsi + 0x158]
mov r10d, ebx
mov r11d, dword [rsi + 0x1e0]
xor r10d, r15d
imul r9d, dword [rsi + 0x70]
mov ecx, r11d
mov r8d, dword [rsi + 0x1b8]
or ecx, 0x3ed6
or ebx, dword [rsi + 0x1b0]
or r8d, eax
xor ebx, dword [rsi]
imul edx, dword [rsi + 0x120], 0x3a44
sub r8d, dword [rsi + 0x148]
sub r9d, eax
mov eax, dword [rsp + 0x64]
mov dword [rsp + 0x50], edi
mov dword [rsp + 0x48], eax
mov eax, dword [rsp + 0x68]
mov dword [rsp + 0x40], r10d
mov dword [rsp + 0x38], ecx
mov rcx, rsi
mov dword [rsp + 0x30], eax
imul r11d, r12d
mov dword [rsp + 0x28], r11d
mov dword [rsp + 0x20], ebx
call fcn.18001a8bc
mov ecx, dword [rsi + 0xb0]
xor ecx, 0x3f59
add ecx, ebp
call qword [sym.imp.KERNEL32.dll_SuspendThread]
mov eax, dword [rsp + 0x108]
mov rcx, qword [rsp + 0x78]
add eax, 3
sub rcx, qword [rsi + 0x50]
mov rbx, qword [rsp + 0x80]
mov dword [rsp + 0x108], eax
cdqe
cmp rax, rcx
jne 0x1800156a3
mov r14d, dword [rsp + 0x6c]
mov edx, r12d
mov r15d, dword [rsp + 0xf8]
mov r8d, 0x3aed
mov edi, dword [rsp + 0xe0]
mov r10d, dword [rsp + 0x110]
mov r9d, dword [rsp + 0x118]
add edi, 2
movsxd rcx, ebp
xor rcx, qword [rsi + 0xe8]
movsxd rax, edi
cmp rax, rcx
mov dword [rsp + 0xe0], edi
mov rax, qword [rsp + 0x78]
movsxd rcx, r14d
je 0x180015645
jmp 0x180015aa7
lea eax, [r12 + rbx]
cmp r14d, eax
jle 0x180015aa7
mov r8, qword [rsi + 0xb8]
sub r15d, r13d
imul eax, r12d, 0x3a6e
sub r15d, edx
movsxd rcx, r10d
or r8, rdx
or rcx, r13
mov edx, r15d
movsxd r9, eax
movsxd rax, edi
and r9, rax
call qword [sym.imp.KERNEL32.dll_CallNamedPipeA]
jmp 0x180015aa7
lea r9d, [rcx + 0x3b4c]
mov dword [rsp + 0x60], r14d
mov dword [rsp + 0x78], r9d
mov r8d, r14d
cmp r14d, r9d
jl 0x180015aa7
mov edi, 0x3ed6
mov eax, r12d
mov dword [rsp + 0xf0], r14d
sub eax, r11d
cmp r14d, eax
je 0x180015a72
mov eax, ebp
movsxd r8, r10d
sub eax, r15d
mov qword [rsp + 0x98], r8
mov r15d, dword [rsp + 0xe0]
cdqe
mov qword [rsp + 0x88], rax
lea eax, [rbx + rbp]
mov word [rsp + 0x108], ax
movsxd rax, edx
mov qword [rsp + 0x80], rax
mov eax, dword [rsp + 0x68]
and eax, 0x3d3d
xor eax, r10d
mov dword [rsp + 0x6c], eax
movsxd rax, ebx
mov qword [rsp + 0x90], rax
movzx ecx, word [rsi + 0xf0]
mov eax, 0x3f0a
mov rdx, qword [rsi + 0x60]
xor cx, di
mov r11d, dword [rsi + 0x70]
mov r9d, dword [rsi + 0xe8]
sub r11d, edi
add r8, qword [rsi + 0x1c8]
and r9, rdi
movzx r10d, cx
imul r10d, eax
movsxd rax, ebp
and rdx, rax
movzx ecx, bp
movzx eax, word [rsi + 0x138]
add rdx, qword [rsi + 0x70]
mov dword [rsp + 0x28], r11d
imul ecx, eax
mov word [rsp + 0x20], r10w
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [rsi]
mov edx, 0x3f62
mov eax, dword [rsp + 0x118]
add ecx, r14d
mov r10, qword [rsp + 0x88]
sub r13d, ecx
and r10, qword [rsi + 0xe8]
add eax, 0x3c7d
mov rcx, qword [rsp + 0x80]
add edx, r14d
or dx, word [rsi + 0x1b0]
xor rcx, qword [rsi + 0x120]
movsxd r8, eax
movzx eax, word [rsp + 0x108]
mov qword [rsp + 0x28], r10
movsxd rdi, r14d
movsxd rbx, r13d
mov r9, rdi
or r9, rbx
mov word [rsp + 0x20], ax
call qword [sym.imp.KERNEL32.dll_TryEnterCriticalSection]
mov eax, dword [rsp + 0x6c]
mov dword [rsp + 0x118], eax
mov eax, dword [rsi + 0x168]
add eax, dword [rsp + 0x70]
add r15d, eax
lea eax, [r13 + 0x3a6e]
movsxd rcx, eax
or rcx, rbx
mov qword [rsi + 0x1e0], rcx
mov rcx, qword [rsi + 0x110]
mov rax, rcx
xor rax, qword [rsp + 0x90]
sub rcx, rax
mov rax, qword [rsi + 0x170]
sub rax, qword [rsi + 0x168]
and rax, qword [rsp + 0x80]
mov qword [rsi + 0x110], rcx
cmp rdi, rax
jne 0x180015a11
mov eax, dword [rsi + 0xd0]
sub eax, 0x3a6e
xor r14d, eax
mov ecx, dword [rsp + 0xf0]
mov eax, r12d
mov r8, qword [rsp + 0x98]
add ecx, 4
sub eax, r15d
mov dword [rsp + 0xf0], ecx
mov edi, 0x3ed6
cmp ecx, eax
jne 0x1800158dd
mov edx, dword [rsp + 0x100]
mov r8d, dword [rsp + 0x60]
mov r10d, dword [rsp + 0x110]
mov ebx, dword [rsp + 0x64]
mov r9d, dword [rsp + 0x78]
mov dword [rsp + 0xe0], r15d
mov r11d, dword [rsp + 0xe0]
mov r15d, dword [rsp + 0xf8]
mov eax, ebp
or eax, r13d
add eax, 0x3d0e
cmp r14d, eax
jge 0x180015a95
mov rcx, qword [rsi + 0xf0]
movsxd rax, ebp
xor rcx, rax
add qword [rsi + 0x1b8], rcx
add r8d, 2
mov dword [rsp + 0x60], r8d
cmp r8d, r9d
jge 0x180015873
mov eax, dword [rsp + 0x70]
mov rbx, qword [rsp + 0xe8]
add eax, 0x3f0a
add rsp, 0xa0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret