Function at 0x14015aee0
Capabilities:
Check http status code

Disassembly:
mov r11, rsp
mov dword [r11 + 0x18], r8d
mov qword [r11 + 8], rcx
push rbp
push r12
push r15
lea rbp, [r11 - 0xd8]
sub rsp, 0x1c0
mov r9d, r8d
mov r12, rdx
mov r15, rcx
test rdx, rdx
je 0x14015bb5f
cmp r8d, 0x400
jb 0x14015bb5f
cmp dword [rdx], 0x464d4444
jne 0x14015bb5f
movzx eax, byte [rdx + 4]
test al, al
je 0x14015bb5f
test al, 0xf0
jne 0x14015bb5f
movups xmm0, xmmword [rdx + 0xd]
mov qword [r11 - 0x20], rbx
mov r10d, 0x42
mov qword [r11 - 0x28], rsi
mov ebx, 0xf0
movups xmmword [rcx + 0x10528], xmm0
mov qword [r11 - 0x30], rdi
movsd xmm1, qword [rdx + 0x1d]
lea esi, [r10 - 0x22]
movsd qword [rcx + 0x10538], xmm1
lea r8d, [r10 - 0x32]
mov eax, dword [rdx + 0x25]
mov dword [rcx + 0x10540], eax
movzx eax, word [rdx + 0x29]
mov word [rcx + 0x10544], ax
mov byte [rcx + 0x10546], 0
mov qword [r11 - 0x38], r13
mov qword [r11 - 0x40], r14
lea r11d, [r10 - 0x2b]
mov dword [rcx + 0x104a0], 0x20000
lea r14d, [r10 - 0x3e]
mov dword [rcx + 0x10490], 0
lea ecx, [rbx + 0xf]
mov dword [rbp + 0xe8], r10d
nop dword [rax]
mov edi, r10d
add rdi, r12
mov qword [rsp + 0x58], rdi
mov eax, dword [rdi]
cmp eax, 0x49504d53
ja 0x14015b328
je 0x14015b184
cmp eax, 0x44504d53
je 0x14015b0a9
cmp eax, 0x45444e45
je 0x14015bafb
cmp eax, 0x47534d43
jne 0x14015b345
mov ecx, dword [rdi + 4]
lea ebx, [r10 + 1]
cmp eax, 0x47534d43
cmovne ebx, r10d
cmp ecx, r9d
ja 0x14015bafb
lea eax, [rbx + 8]
add eax, ecx
cmp eax, r9d
ja 0x14015bafb
cmp ecx, 8
jb 0x14015bac3
cmp qword [r15 + 0x10518], 0
jne 0x14015bac3
call fcn.14014cb20
mov qword [r15 + 0x10518], rax
test rax, rax
je 0x14015bab6
mov ecx, dword [rdi + 4]
xor r8d, r8d
lea eax, [rcx - 1]
test eax, eax
je 0x14015baa8
lea r11d, [rbx + 8]
nop word [rax + rax]
lea eax, [r11 + r8]
mov r9d, r8d
movzx r10d, byte [rax + r12]
mov eax, 0xcccccccd
add r9, qword [r15 + 0x10518]
mul r8d
mov eax, r8d
shr edx, 5
lea ecx, [rdx + rdx*4]
shl ecx, 3
sub eax, ecx
cmp eax, 0x27
jne 0x14015ba89
mov al, 0xd
jmp 0x14015ba93
mov edx, dword [r15 + 0x104a4]
add r10d, 8
xor esi, esi
mov dword [rbp + 0xe8], r10d
mov edi, 1
cmp edx, edi
jb 0x14015bad5
nop word [rax + rax]
lea r8d, [r10 + 4]
lea esi, [rsi + 1]
cmp r8d, r9d
jae 0x14015b179
mov eax, r10d
mov ebx, r9d
sub ebx, r8d
mov r10d, r8d
mov dword [rbp + 0xe8], r10d
cmp dword [rax + r12], ebx
cmovbe ebx, dword [rax + r12]
test ebx, ebx
je 0x14015b15e
cmp edi, edx
ja 0x14015b15e
mov eax, edi
lea rcx, [rax + rax*8]
lea rdx, [r15 + rcx*8]
movzx ecx, word [rdx + 0x8e2a]
movzx eax, cl
and al, 1
neg al
sbb r8d, r8d
and r8d, 5
test byte [rbp + rsi - 0x60], 4
je 0x14015b139
mov r8d, ecx
and r8d, 1
shl r8d, 2
or r8d, 0x13
lea r9, [r12 + r10]
mov dword [rsp + 0x20], ebx
add rdx, 0x8e00
mov rcx, r15
call fcn.1401272e0
mov r10d, dword [rbp + 0xe8]
mov r9d, dword [rbp + 0xf0]
mov edx, dword [r15 + 0x104a4]
add r10d, ebx
inc edi
mov dword [rbp + 0xe8], r10d
cmp edi, edx
jbe 0x14015b0d0
mov r11d, SafeArrayPutElement
jmp 0x14015bad5
mov eax, r9d
sub eax, r10d
cmp dword [rdi + 4], eax
ja 0x14015b31b
movzx eax, byte [rdi + 8]
lea ecx, [r10 + 9]
mov dword [r15 + 0x104a4], eax
mov r14d, 1
cmp eax, ebx
jb 0x14015b1b9
mov dword [r15 + 0x104a4], 0xef
jmp 0x14015b1c2
cmp eax, r14d
jb 0x14015b315
mov edx, dword [rdi + 4]
movzx r8d, byte [rcx + r12]
add edx, 8
mov esi, r14d
add edx, r10d
lea r13d, [r8 + rcx]
lea eax, [r13 + 1]
mov byte [rbp + rsi - 0x60], 0
mov r15d, eax
add rax, 0x10
cmp rax, rdx
ja 0x14015b307
test r8d, r8d
je 0x14015b252
cmp r8d, 0x20
lea rdx, [r12 + 1]
mov eax, 0x1f
mov ebx, esi
cmovb eax, r8d
add rdx, rcx
mov rcx, qword [rbp + 0xe0]
add rcx, 0x10528
shl rbx, 5
add rcx, rbx
mov r8d, eax
mov edi, eax
call fcn.1400b4c80
mov rcx, qword [rbp + 0xe0]
lea rax, [rdi + rbx]
mov r10d, dword [rbp + 0xe8]
mov r11d, SafeArrayPutElement
mov rdi, qword [rsp + 0x58]
mov byte [rax + rcx + 0x10528], 0
jmp 0x14015b259
mov rcx, qword [rbp + 0xe0]
mov r8d, dword [r15 + r12]
lea rax, [rsi + rsi*8]
lea rcx, [rcx + rax*8]
lea rcx, [rcx + 0x8e00]
mov dword [rcx], r8d
mov eax, dword [r15 + r12 + 4]
mov dword [rcx + 4], eax
mov eax, dword [r15 + r12 + 8]
mov dword [rcx + 8], eax
movzx eax, word [r15 + r12 + 0xc]
mov dword [rcx + 0x20], eax
mov eax, 0x40
mov word [rcx + 0x28], ax
movzx eax, byte [r15 + r12 + 0xe]
test al, al
je 0x14015b2a0
inc ax
jmp 0x14015b2a5
mov eax, 0x100
mov word [rcx + 0x26], ax
movzx eax, byte [r15 + r12 + 0xf]
shr al, 1
and al, 1
movzx edx, al
mov word [rcx + 0x2a], dx
je 0x14015b2c2
shr r8d, 1
mov dword [rcx], r8d
test byte [r15 + r12 + 0xf], 1
je 0x14015b2d2
or dx, 2
mov word [rcx + 0x2a], dx
movzx eax, byte [r15 + r12 + 0xf]
inc r14d
cmp byte [r12 + 4], 8
mov ecx, 0x1f
mov r15, qword [rbp + 0xe0]
cmovb ecx, r11d
mov byte [rbp + rsi - 0x60], al
add ecx, r13d
cmp r14d, dword [r15 + 0x104a4]
jbe 0x14015b1c2
jmp 0x14015b30e
mov r15, qword [rbp + 0xe0]
mov r9d, dword [rbp + 0xf0]
mov r14d, 4
add r10d, 8
add r10d, dword [rdi + 4]
jmp 0x14015bace
cmp eax, 0x4f464e49
je 0x14015afff
cmp eax, 0x54544150
je 0x14015b3c7
cmp eax, 0x55514553
je 0x14015b34e
add r10d, 4
jmp 0x14015bace
mov r8d, dword [rdi + 4]
cmp r8d, r9d
jae 0x14015bafb
lea eax, [r10 + 0xc]
add eax, r8d
cmp eax, r9d
ja 0x14015bafb
movzx eax, word [rdi + 8]
shr r8d, 1
cmp r8d, ecx
cmovae r8d, ecx
cmp eax, r8d
jae 0x14015b385
mov dword [r15 + 0x104d8], eax
test r8d, r8d
je 0x14015b3ba
lea rcx, [r15 + 0xeb60]
mov r9d, r8d
lea rdx, [rdi + 0xc]
nop dword [rax + rax]
movzx eax, byte [rdx]
lea rdx, [rdx + 2]
mov byte [rcx], al
lea rcx, [rcx + 1]
sub r9, 1
jne 0x14015b3a0
mov r9d, dword [rbp + 0xf0]
add r10d, 8
add r10d, dword [rdi + 4]
jmp 0x14015bace
cmp dword [r15 + 0x10490], 0
jne 0x14015bad5
mov eax, dword [rdi + 4]
lea r13d, [r10 + 0xb]
cmp eax, r9d
jae 0x14015bafb
add eax, 8
add eax, r10d
cmp eax, r9d
ja 0x14015bafb
movzx edx, word [rdi + 8]
movzx ecx, byte [rdi + 0xa]
cmp edx, ebx
mov dword [r15 + 0x10490], ecx
movzx eax, byte [rdi + 0xb]
cmova edx, ebx
mov dword [rsp + 0x60], edx
cmp ecx, eax
jae 0x14015b41d
mov dword [r15 + 0x10490], eax
mov ecx, eax
cmp ecx, 0x20
jbe 0x14015b42b
mov dword [r15 + 0x10490], esi
jmp 0x14015b440
mov eax, dword [r15 + 0x10490]
cmp ecx, 4
cmovb eax, r14d
mov dword [r15 + 0x10490], eax
mov dword [rsp + 0x54], 0
test edx, edx
je 0x14015ba7f
xor r10d, r10d
mov qword [rsp + 0x68], r10
nop dword [rax + rax]
mov ebx, r13d
add rbx, r12
movzx edi, byte [rbx]
movzx ecx, word [rbx + 2]
cmp edi, 0x20
cmova edi, esi
mov dword [rsp + 0x44], edi
cmp ecx, 0x100
jbe 0x14015b486
mov ecx, 0x100
jmp 0x14015b48d
cmp ecx, 0x10
cmovb ecx, r8d
mov eax, dword [rbx + 4]
add r13d, 8
mov dword [rsp + 0x48], ecx
cmp eax, r9d
jae 0x14015ba69
add eax, 4
add eax, r13d
cmp eax, r9d
jae 0x14015ba69
movzx ecx, cx
mov word [r15 + r10*2 + 0xe980], cx
mov edx, dword [r15 + 0x10490]
call fcn.1401286e0
mov qword [rsp + 0x78], rax
mov rdx, rax
test rax, rax
je 0x14015baf5
mov r10, qword [rsp + 0x68]
xor esi, esi
mov r11d, r13d
mov dword [rsp + 0x38], 0x7d
mov r9d, 1
mov dword [rsp + 0x4c], esi
mov dword [rsp + 0x40], r9d
mov qword [r15 + r10*8 + 0xe200], rax
movzx eax, byte [rbx + 1]
add r13d, dword [rbx + 4]
movzx ecx, al
and cl, 0xf0
je 0x14015b51b
mov r8d, eax
shr r8d, 4
jmp 0x14015b521
mov r8d, 8
xor ebx, ebx
mov dword [rsp + 0x3c], r8d
test cl, cl
xorps xmm0, xmm0
movups xmmword [rbp - 0x80], xmm0
setne bl
xor r14d, r14d
mov dword [rbp + 0xf8], ebx
movups xmmword [rbp - 0x70], xmm0
mov dword [rsp + 0x50], r14d
cmp dword [rsp + 0x48], esi
jbe 0x14015ba34
mov eax, r14d
imul eax, dword [r15 + 0x10490]
lea rcx, [rax + rax*2]
lea r10, [rdx + rcx*2]
mov qword [rsp + 0x70], r10
test esi, esi
jne 0x14015b606
mov eax, r11d
xor dl, dl
inc r11d
movzx ecx, byte [rax + r12]
test cl, cl
jns 0x14015b592
cmp r11d, r13d
jae 0x14015b592
movzx eax, byte [r11 + r12]
inc r11d
mov dword [rsp + 0x4c], eax
and cl, 0x7f
je 0x14015b5a4
cmp r11d, r13d
jae 0x14015b5a4
movzx edx, byte [r11 + r12]
inc r11d
movzx ecx, cl
sub ecx, 1
je 0x14015b5ea
sub ecx, 1
je 0x14015b5ce
cmp ecx, 1
jne 0x14015b60c
movzx r8d, dl
mov ebx, r9d
shr r8d, 4
mov dword [rsp + 0x3c], r8d
mov dword [rbp + 0xf8], ebx
jmp 0x14015b60c
movzx edx, dl
mov ebx, 1
mov dword [rsp + 0x38], edx
mov dword [rbp + 0xf8], ebx
mov dword [rsp + 0x40], 1
jmp 0x14015b60c
movzx edx, dl
mov ebx, 1
mov dword [rsp + 0x38], edx
mov dword [rbp + 0xf8], ebx
mov dword [rsp + 0x40], 0
jmp 0x14015b60c
dec esi
mov dword [rsp + 0x4c], esi
xor esi, esi
test edi, edi
je 0x14015b937
lea rdi, [rbp - 0x80]
mov r14, r10
nop dword [rax]
movzx eax, byte [rdi]
test al, al
jne 0x14015b907
mov eax, r11d
xor r9b, r9b
xor bl, bl
mov dword [rsp + 0x30], 0
inc r11d
mov word [rsp + 0x34], 0
movzx r10d, byte [rax + r12]
test r10b, r10b
jns 0x14015b659
movzx ecx, byte [r11 + r12]
inc r11d
mov byte [rdi], cl
test r10b, 0x40
je 0x14015b66b
movzx ecx, byte [r11 + r12]
inc r11d
mov byte [rsp + 0x31], cl
test r10b, 0x20
je 0x14015b6a3
movzx r9d, byte [r11 + r12]
inc r11d
mov byte [rsp + 0x30], r9b
test r9b, r9b
je 0x14015b692
cmp r9b, 0xfe
jae 0x14015b692
and r9b, 0x7f
mov byte [rsp + 0x30], r9b
lea eax, [r9 - 1]
cmp al, 0x7e
ja 0x14015b6a3
add r9b, 0x18
mov byte [rsp + 0x30], r9b
test r10b, 0x10
je 0x14015b6c1
movzx ecx, byte [r11 + r12]
mov bl, 1
add ecx, 3
mov byte [rsp + 0x32], bl
shr ecx, 2
mov byte [rsp + 0x34], cl
inc r11d
test r10b, 8
je 0x14015b6f9
movzx edx, byte [r11 + r12]
inc r11d
movzx r8d, byte [r11 + r12]
inc r11d
sub edx, 1
je 0x14015b766
sub edx, 3
je 0x14015b751
sub edx, 1
je 0x14015b740
cmp edx, 1
jne 0x14015b6f9
mov byte [rsp + 0x33], 0xa
mov byte [rsp + 0x35], r8b
mov r8d, 0xfe
test r10b, 4
je case.0x14015b73e.7
movzx eax, byte [r11 + r12]
inc r11d
dec eax
movzx edx, byte [r11 + r12]
inc r11d
cmp eax, 0xb
ja case.0x14015b73e.7
cdqe
lea rcx, [0x140000000]
mov ecx, dword [rcx + rax*4 + 0x15bb70]
lea rax, [0x140000000]
add rcx, rax
jmp rcx
test r8b, 0xe0
je 0x14015b6f9
mov byte [rsp + 0x33], SafeArrayGetElemsize
shr r8b, 5
jmp 0x14015b6f4
test r8b, 0xe0
je 0x14015b6f9
shr r8b, 5
or r8b, 0xd0
mov byte [rsp + 0x33], 0x14
jmp 0x14015b6f4
test r9b, r9b
movzx eax, r9b
mov r8d, 0xfe
cmove eax, r8d
movzx r9d, al
mov byte [rsp + 0x30], al
jmp 0x14015b6ff
test dl, 0xf0
je case.0x14015b73e.7
shr dl, 4
or dl, 0x20
mov byte [rsp + 0x33], 0x14
mov byte [rsp + 0x35], dl
jmp case.0x14015b73e.7
test dl, 0xe0
je case.0x14015b73e.7
shr dl, 5
or dl, 0xd0
mov byte [rsp + 0x33], 0x14
mov byte [rsp + 0x35], dl
jmp case.0x14015b73e.7
test dl, dl
je case.0x14015b73e.7
mov byte [rsp + 0x33], 1
mov byte [rsp + 0x35], dl
jmp case.0x14015b73e.7
mov byte [rsp + 0x33], 2
cmp dl, 0xe0
mov eax, edx
mov ecx, 0xdf
cmovae eax, ecx
mov byte [rsp + 0x35], al
jmp case.0x14015b73e.7
mov byte [rsp + 0x33], 3
jmp 0x14015b7c8
mov byte [rsp + 0x33], 4
mov byte [rsp + 0x35], dl
jmp case.0x14015b73e.7
mov byte [rsp + 0x33], 5
mov byte [rsp + 0x35], dl
jmp case.0x14015b73e.7
test dl, 0xe0
je 0x14015b80e
shr dl, 5
or dl, 0xc0
mov byte [rsp + 0x33], 0x14
mov byte [rsp + 0x35], dl
jmp case.0x14015b73e.7
test r9b, r9b
movzx eax, r9b
cmove eax, r8d
mov byte [rsp + 0x30], al
test r10b, 2
je 0x14015b8e6
movzx eax, byte [r11 + r12]
inc r11d
movzx edx, byte [r11 + r12]
inc r11d
sub eax, 1
je 0x14015b8c2
sub eax, 1
je 0x14015b89e
sub eax, 5
je 0x14015b87e
sub eax, 1
je 0x14015b877
cmp eax, 1
jne 0x14015b8e6
lea ecx, [rdx + 3]
mov byte [rsp + 0x33], 0x1d
shr ecx, 2
movzx eax, cl
cmp cl, 0xf
mov ecx, SafeArrayGetElemsize
cmova eax, ecx
mov byte [rsp + 0x35], al
jmp 0x14015b8e6
mov byte [rsp + 0x33], 0x1d
jmp 0x14015b8cc
test bl, bl
jne 0x14015b893
lea eax, [rdx + 3]
mov byte [rsp + 0x32], 2
shr eax, 2
mov byte [rsp + 0x34], al
jmp 0x14015b8e6
mov byte [rsp + 0x33], 9
mov byte [rsp + 0x35], dl
jmp 0x14015b8e6
cmp dl, 0xff
je 0x14015b8e6
lea ecx, [rdx + 3]
mov byte [rsp + 0x33], 0xb
shr ecx, 2
movzx eax, cl
cmp cl, 0xf
mov ecx, SafeArrayGetElemsize
cmova eax, ecx
mov byte [rsp + 0x35], al
jmp 0x14015b8e6
cmp dl, 0xff
je 0x14015b8e6
mov byte [rsp + 0x33], 0xb
lea eax, [rdx + 3]
shr eax, 2
cmp al, 0xf
movzx ecx, al
mov eax, SafeArrayGetElemsize
cmova ecx, eax
shl cl, 4
mov byte [rsp + 0x35], cl
cmp esi, dword [r15 + 0x10490]
jae 0x14015b900
mov eax, dword [rsp + 0x30]
mov dword [r14], eax
movzx eax, word [rsp + 0x34]
mov word [r14 + 4], ax
cmp r11d, r13d
ja 0x14015b91e
jmp 0x14015b90b
dec al
mov byte [rdi], al
inc esi
add r14, 6
inc rdi
cmp esi, dword [rsp + 0x44]
jb 0x14015b620
mov r10, qword [rsp + 0x70]
mov ebx, dword [rbp + 0xf8]
mov r8d, dword [rsp + 0x3c]
mov edi, dword [rsp + 0x44]
mov r14d, dword [rsp + 0x50]
test ebx, ebx
je 0x14015ba04
xor ebx, ebx
mov dword [rbp + 0xf8], ebx
cmp dword [rsp + 0x40], ebx
je 0x14015b95d
test r8d, r8d
je 0x14015b95d
mov r9d, r8d
imul r9d, dword [rsp + 0x38]
jmp 0x14015b967
mov eax, dword [rsp + 0x38]
inc eax
imul r9d, eax, 0xf
mov r8d, 0x1e
imul ecx, r9d, 0x1e
nop dword [rax]
nop word [rax + rax]
mov eax, 0xaaaaaaab
mul ecx
shr edx, 4
cmp edx, 0xc8
jbe 0x14015b9ac
cmp r8d, 6
jae 0x14015b9a0
cmp edx, 0x100
jb 0x14015b9ac
dec r8d
sub ecx, r9d
cmp r8d, 1
ja 0x14015b980
xor r9d, r9d
cmp dword [r15 + 0x10490], ebx
jbe 0x14015ba04
mov edi, 0xdf
nop dword [rax]
lea rcx, [r9 + r9*2]
cmp byte [r10 + rcx*2 + 3], bl
jne 0x14015b9f4
test r8d, r8d
je 0x14015b9e0
mov byte [r10 + rcx*2 + 5], r8b
xor r8d, r8d
mov byte [r10 + rcx*2 + 3], SafeArrayGetElemsize
jmp 0x14015b9f4
lea eax, [rdx - 0x20]
cmp eax, edi
ja 0x14015ba00
mov byte [r10 + rcx*2 + 5], dl
xor edx, edx
mov byte [r10 + rcx*2 + 3], reloc.OLEAUT32.dll_SafeArrayGetElemsize
inc r9d
cmp r9d, dword [r15 + 0x10490]
jb 0x14015b9c0
mov edi, dword [rsp + 0x44]
cmp r11d, r13d
jae 0x14015ba2f
mov r8d, dword [rsp + 0x3c]
inc r14d
mov r9d, dword [rsp + 0x40]
mov esi, dword [rsp + 0x4c]
mov rdx, qword [rsp + 0x78]
mov dword [rsp + 0x50], r14d
cmp r14d, dword [rsp + 0x48]
jb 0x14015b550
mov r10, qword [rsp + 0x68]
mov r9d, dword [rbp + 0xf0]
lea eax, [r13 + 8]
cmp eax, r9d
jae 0x14015ba69
mov eax, dword [rsp + 0x54]
inc r10
inc eax
mov qword [rsp + 0x68], r10
mov esi, 0x20
mov dword [rsp + 0x54], eax
lea r8d, [rsi - 0x10]
cmp eax, dword [rsp + 0x60]
jb 0x14015b460
mov rdi, qword [rsp + 0x58]
mov r14d, 4
mov r10d, dword [rbp + 0xe8]
lea r11d, [r14 + 0x13]
add r10d, 8
add r10d, dword [rdi + 4]
jmp 0x14015bace
cmp r10b, 0x20
mov eax, r10d
cmovl eax, esi
mov byte [r9], al
inc r8d
mov ecx, dword [rdi + 4]
lea eax, [rcx - 1]
cmp r8d, eax
jb 0x14015b070
mov rax, qword [r15 + 0x10518]
lea ecx, [rcx - 1]
mov byte [rcx + rax], 0
mov r9d, dword [rbp + 0xf0]
mov r11d, SafeArrayPutElement
mov r10d, dword [rdi + 4]
add r10d, 7
add r10d, ebx
mov dword [rbp + 0xe8], r10d
mov esi, 0x20
lea eax, [r10 + 7]
mov ebx, 0xf0
lea r8d, [rsi - 0x10]
lea ecx, [rbx + 0xf]
cmp eax, r9d
jb 0x14015afc0
jmp 0x14015bafb
mov r14d, 4
cmp dword [r15 + 0x10490], 0
mov r13, qword [rsp + 0x1a0]
mov rdi, qword [rsp + 0x1a8]
mov rsi, qword [rsp + 0x1b0]
mov rbx, qword [rsp + 0x1b8]
jne 0x14015bb58
cmp dword [r15 + 0x104a4], 0
jne 0x14015bb51
mov dword [r15 + 0x104a0], 0
xor eax, eax
mov r14, qword [rsp + 0x198]
add rsp, 0x1c0
pop r15
pop r12
pop rbp
ret
mov dword [r15 + 0x10490], r14d
mov eax, 1
jmp 0x14015bb3c
xor eax, eax
add rsp, 0x1c0
pop r15
pop r12
pop rbp
ret