Function at 0x2015cec0
Capabilities:
Parse credit card information

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x4f8
lea rbp, [rsp + 0x80]
movaps xmmword [rbp + 0x460], xmm6
mov qword [rbp + 0x458], 0xfffffffffffffffe
mov r12d, r8d
mov r15, rdx
mov esi, ecx
mov ebx, dword [0x205a6e7f]
test ebx, 0x100
je 0x2015cf5c
cmp dword [0x205a6eaf], 0
je 0x2015cf5c
mov r14d, ebx
not r14d
or r14d, 0xfffffffe
lea rdi, [0x20161d00]
nop dword [rax]
cmp r14d, 0xffffffff
setne al
mov ecx, dword [0x205b3c78]
lea edx, [rcx - 1]
imul edx, ecx
test dl, 1
je 0x2015cf53
mov ecx, 0x48
call fcn.20407ac4
mov qword [0x205b3c70], rax
mov rcx, rdi
call fcn.20427ec0
jmp 0x2015cf20
or al, r12b
je 0x2015d00c
mov eax, ebx
and eax, 1
mov ecx, 0xaa8bd721
add ecx, dword [0x2054e6cc]
cmp eax, ecx
jne 0x2015cffd
mov dword [0x205a6eab], 0
xorps xmm0, xmm0
movaps xmmword [rbp + 0x420], xmm0
mov qword [rbp + 0x430], 0
mov eax, 0xaa8bd720
add eax, dword [0x2054e6cc]
cmp dword [0x205a6e93], eax
jg 0x2015cfe9
call fcn.20101bd0
mov qword [rbp + 0x428], rax
call fcn.2015f710
mov qword [rbp + 0x430], rax
mov edx, 0x3fffffff
and edx, dword [0x205a6e93]
mov dword [rsp + 0x20], 0x18593d1f
lea rcx, [rbp + 0x420]
mov r8d, 0x98896ebd
mov r9d, 0x89569afe
call fcn.201637c0
mov eax, dword [0x205b3c7c]
cmp eax, 0x30
jg 0x2015d1d0
jmp 0x2015d189
test ebx, 0x100
jne 0x2015d018
xor esi, esi
jmp 0x2015eb0a
lea rsi, [0x2015c6c0]
jmp 0x2015eb0a
mov eax, dword [0x205b3c78]
lea ecx, [rax - 1]
imul ecx, eax
and ecx, 1
mov eax, 0xaa8bd721
mov edx, dword [0x2054e6cc]
add edx, eax
cmp ecx, edx
je 0x2015d05b
nop dword [rax + rax]
mov ecx, dword [0x205b3c78]
lea edx, [rcx - 1]
imul edx, ecx
and edx, 1
mov ecx, dword [0x2054e6cc]
add ecx, eax
cmp edx, ecx
jne 0x2015d040
mov eax, 0xaa8bd731
add eax, dword [0x2054e6cc]
mov r9d, dword [0x205a6e83]
xor eax, r9d
not eax
test eax, r9d
je 0x2015d09e
mov eax, 0xaa8bd722
add eax, dword [0x2054e6cc]
lea rcx, [fcn.2015cec0]
add ecx, ecx
add ecx, 0x3400
test ecx, eax
jne 0x2015d49d
jmp 0x2015d46b
test esi, esi
jne 0x2015eafc
mov eax, r9d
not eax
mov ecx, dword [0x2054e6cc]
lea edx, [rcx - 0x557428bf]
add ecx, 0xaa8bd720
xor ecx, edx
and ecx, eax
xor r9d, edx
or r9d, ecx
cmp r9d, 0xffffffff
jne 0x2015d0e3
mov eax, ebx
and eax, 0x804
mov ecx, 0xaa8bdf25
add ecx, dword [0x2054e6cc]
cmp eax, ecx
jne 0x2015d0ef
mov rsi, qword [0x205a6ea3]
jmp 0x2015eb0a
mov eax, dword [0x205b2f93]
not eax
or eax, 0xffffff7f
cmp eax, 0xffffffff
je 0x2015d142
mov esi, 0xaa8bd723
mov ecx, dword [0x205b3c78]
lea eax, [rcx - 1]
imul eax, ecx
mov ecx, dword [0x2054e6cc]
add ecx, esi
xor edx, edx
div ecx
test edx, edx
je 0x2015d135
mov rcx, r15
call fcn.2015c1a0
mov eax, dword [0x205b3c7c]
cmp eax, 0x49
jge 0x2015d106
mov rcx, r15
call fcn.2015c1a0
jmp 0x2015eafc
or ebx, 4
mov dword [0x205a6e7f], ebx
lea rcx, [0x205a6e7f]
mov rdi, qword [0x205a6ea3]
lea rdx, [rbp - 0x40]
mov r8d, 0x30
call fcn.2015c270
mov rcx, qword [rbp - 0x38]
xor esi, esi
xor edx, edx
mov r8, r15
mov rax, rdi
call qword [case.0x2010e313.0]
mov rcx, r15
call fcn.2015c1a0
jmp 0x2015eb0a
call fcn.2015ee50
mov r8d, 0x9c
mov rcx, rax
xor edx, edx
call fcn.2015edc0
mov rdi, rax
mov ecx, dword [0x205b3c78]
lea eax, [rcx - 1]
imul eax, ecx
mov ecx, dword [0x2054e6cc]
lea r8d, [rcx - 0x557428dd]
xor edx, edx
div r8d
add ecx, 0xaa8bd721
cmp edx, ecx
je 0x2015d1f2
nop dword [rax]
call fcn.2015ee50
mov r8d, 0x9c
mov rcx, rax
xor edx, edx
call fcn.2015edc0
mov eax, dword [0x205b3c7c]
cmp eax, 0xf
jge 0x2015d1d0
jmp 0x2015d189
test rdi, rdi
jne 0x2015d231
lea rax, [fcn.2015cec0]
add eax, eax
add eax, 0x3000
mov ecx, eax
not ecx
test ecx, eax
je 0x2015d21f
call fcn.20101bd0
mov rcx, rax
mov edx, 0x12
call fcn.2015c860
call fcn.20101bd0
mov rcx, rax
mov edx, 0x12
call fcn.2015c860
mov dword [rdi], 0x9c
mov rcx, rdi
call fcn.2015ef40
test eax, eax
jne 0x2015d26d
call fcn.2015ee50
mov rcx, rax
xor edx, edx
mov r8, rdi
call fcn.2015efc0
call fcn.20101bd0
mov edx, 0xaa8bd820
add edx, dword [0x2054e6cc]
mov rcx, rax
call fcn.2015c860
mov dword [rsp + 0x28], 0xfaa4ba06
mov dword [rsp + 0x20], 0x68597457
xor ecx, ecx
xor edx, edx
mov r8d, 1
mov r9, r15
call fcn.20161fc0
mov ecx, 0xe1f08e0b
mov edx, 0xcaf95e6b
mov r8d, 0xce9ff19c
call fcn.201497b0
cmp qword [0x205b3908], 0
jne 0x2015d396
mov eax, dword [0x2054e6cc]
mov ecx, eax
xor ecx, 0xaa8bd721
and eax, 0x2a8bd721
add eax, eax
add eax, ecx
je 0x2015d343
lea rsi, [0x2046c3e8]
lea rbx, [0x2046c448]
xorps xmm6, xmm6
nop dword [rax]
mov ecx, 0xe8
mov edx, 0xba138554
mov r8d, 0x88c8f57d
call fcn.2008daf0
mov qword [rax], rsi
mov qword [rax + 0x28], 0
mov qword [rax + 0x30], 0xf
mov byte [rax + 0x18], 0
mov qword [rax + 0x10], rbx
movzx ecx, byte [0x2054e6c8]
add cl, 0x2e
mov byte [rax + 8], cl
mov byte [rax + 9], 0
mov word [rax + 0xa], 0
movups xmmword [rax + 0x38], xmm6
mov qword [0x205b3908], rax
mov eax, dword [0x205b3c78]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x2015d2e0
mov ecx, 0xe8
mov edx, 0xba138554
mov r8d, 0x88c8f57d
call fcn.2008daf0
lea rcx, [0x2046c3e8]
mov qword [rax], rcx
mov qword [rax + 0x28], 0
mov qword [rax + 0x30], 0xf
mov byte [rax + 0x18], 0
lea rcx, [0x2046c448]
mov qword [rax + 0x10], rcx
mov dword [rax + 8], 0
xorps xmm0, xmm0
movups xmmword [rax + 0x38], xmm0
mov qword [0x205b3908], rax
mov byte [rbp + 0x448], r12b
mov rsi, qword [0x205b3908]
lea rcx, [rsi + 0x48]
mov r8d, 0x9c
mov rdx, rdi
call fcn.2044f800
mov r9d, dword [0x2054e6cc]
lea edx, [r9 + 0xb5f841f]
mov eax, r9d
xor eax, 0x3025ee02
mov ecx, r9d
and ecx, 0x3025ee02
lea r8d, [rax + rcx*2]
add r9d, 0x6a447e4
mov rcx, rsi
call fcn.201624f0
mov rcx, rsi
mov edx, 0x9e3d7334
mov r8d, 0xb17061da
mov r9d, 0xfceb5979
call fcn.20162830
call fcn.2015ee50
mov rcx, rax
xor edx, edx
mov r8, rdi
call fcn.2015efc0
cmp qword [0x205b6560], 0
jne 0x2015d44f
mov ecx, 0x900
mov edx, 0xba138554
mov r8d, 0x88c8f57d
call fcn.2008daf0
mov qword [rbp + 0x450], rax
mov rcx, rax
call fcn.20067cf0
mov rax, qword [rbp + 0x450]
mov qword [0x205b6560], rax
mov qword [rbp + 0x410], r15
cmp dword [0x2054e6cc], 0x557428df
jne 0x2015d625
jmp 0x2015d52c
lea eax, [r9 + r9]
mov dword [0x205a6e83], eax
mov eax, ebx
or eax, 5
mov dword [0x205a6e7f], eax
lea rsi, [0x2015c6c0]
mov qword [0x205a6ea3], rsi
mov eax, dword [0x205b3c7c]
cmp eax, 0x42
jl 0x2015eb0a
mov eax, 5
sub eax, ebx
lea r10, [0x2015c6c0]
nop dword [rax + rax]
mov ecx, dword [0x2054e6cc]
sub ecx, r9d
add ecx, 0xaa8bd722
mov r11d, r9d
shl r11d, cl
sub ecx, r11d
mov edx, r11d
sub edx, ecx
imul edx, ecx
mov r8d, r11d
mov ecx, edx
shl r8d, cl
mov ecx, r8d
shl r11d, cl
sub r8d, r11d
mov ecx, r8d
shl r11d, cl
mov edx, r11d
mov ecx, r8d
shl edx, cl
mov ecx, edx
shl r11d, cl
shl r11d, cl
shl r11d, cl
mov edx, ebx
mov ecx, eax
shl edx, cl
mov dword [0x205a6e83], r11d
or edx, eax
mov dword [0x205a6e7f], edx
mov qword [0x205a6ea3], r10
mov ecx, dword [0x205b3c78]
lea edx, [rcx - 1]
imul edx, ecx
test dl, 1
jne 0x2015d4b0
jmp 0x2015d46b
mov rdi, qword [0x205b6560]
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov qword [rdi + 0x2a0], rax
mov dword [rsp + 0x30], 0x3e23d091
mov dword [rsp + 0x28], 0xbce89f65
mov qword [rsp + 0x20], 0
mov ecx, 1
xor edx, edx
xor r8d, r8d
xor r9d, r9d
call fcn.20162490
mov qword [rsi + 0x40], rax
movzx eax, word [rsi + 0xa]
cmp eax, 0x601
setae byte [rdi + 0x4b9]
movzx eax, word [rsi + 0xa]
cmp eax, 0x602
setae byte [rdi + 0x4ba]
mov eax, dword [0x205a6e9f]
lea rbx, [0x205a6e7f]
mov r14, rbx
sub r14, rax
lea r12, [rbp - 0x40]
mov r8d, 0x400
mov rcx, r12
xor edx, edx
call fcn.2044feb0
mov rcx, r14
mov rdx, r12
mov r8d, 0x400
call fcn.2015f050
mov qword [rsi + 0x38], r14
lea rcx, [rsi + 0x10]
mov dword [rsp + 0x20], 0x322f7db3
mov rdx, r12
mov r8d, 0x3333150e
mov r9d, 0x3f713d2d
call fcn.200f1ed0
call fcn.2015c560
mov qword [rbp + 0x440], 0
mov r14d, dword [0x205b2fdf]
mov eax, dword [0x205b3c78]
mov ecx, dword [0x2054e6cc]
neg ecx
add ecx, eax
add ecx, 0x557428de
imul ecx, eax
test cl, 1
je 0x2015d73f
mov rbx, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
lea r13, [0x205a6e7f]
lea rdi, [rbp - 0x40]
lea r14, [rsi + 0x10]
mov r15d, 0xaa8bd723
nop word cs:[rax + rax]
mov r12, qword [0x205b6560]
mov qword [r12 + 0x2a0], rbx
mov dword [rsp + 0x30], 0x3e23d091
mov dword [rsp + 0x28], 0xbce89f65
mov qword [rsp + 0x20], 0
mov ecx, 1
xor edx, edx
xor r8d, r8d
xor r9d, r9d
call fcn.20162490
mov qword [rsi + 0x40], rax
movzx eax, word [rsi + 0xa]
cmp eax, 0x601
setae byte [r12 + 0x4b9]
movzx eax, word [rsi + 0xa]
cmp eax, 0x602
setae byte [r12 + 0x4ba]
mov eax, dword [0x205a6e9f]
mov r12, rax
neg r12
imul r12, rax
add r12, r13
mov r8d, 0x400
mov rcx, rdi
xor edx, edx
call fcn.2044feb0
mov rcx, r12
mov rdx, rdi
mov r8d, 0x400
call fcn.2015f050
mov qword [rsi + 0x38], r12
mov dword [rsp + 0x20], 0x322f7db3
mov rcx, r14
mov rdx, rdi
mov r8d, 0x3333150e
mov r9d, 0x3f713d2d
call fcn.200f1ed0
call fcn.2015c560
mov qword [rbp + 0x440], 0
mov ecx, dword [0x205b3c78]
lea eax, [rcx - 1]
imul eax, ecx
mov ecx, dword [0x2054e6cc]
add ecx, r15d
xor edx, edx
div ecx
test edx, edx
jne 0x2015d650
jmp 0x2015d52c
mov ecx, 0x40
call fcn.2042789c
mov r15b, byte [rbp + 0x448]
add rbx, r14
mov edx, dword [0x205b2fdb]
add rdx, rbx
mov rcx, rax
mov qword [rbp + 0x450], rax
call fcn.2024c040
mov r14, qword [rbp + 0x440]
mov rbx, qword [rbp + 0x450]
cmp r14, rbx
je 0x2015d793
test r14, r14
je 0x2015d793
mov rcx, r14
call fcn.20056cf0
mov rcx, r14
call fcn.2008bfc0
mov qword [rbp + 0x440], rbx
mov rcx, rdi
mov rdx, rbx
call fcn.200f6da0
test al, al
jne 0x2015d7bb
call fcn.20101bd0
mov rcx, rax
mov edx, 0xff
call fcn.2015c860
mov eax, dword [0x205b3c7c]
xor eax, eax
jmp 0x2015d7e1
mov ecx, dword [0x205b3c78]
lea edx, [rcx - 1]
imul edx, ecx
test dl, 1
je 0x2015d81d
test al, al
jne 0x2015d810
nop word cs:[rax + rax]
mov ecx, dword [0x205b3c78]
lea edx, [rcx - 1]
imul edx, ecx
test dl, 1
je 0x2015d7d0
nop word cs:[rax + rax]
mov ecx, dword [0x205b3c7c]
cmp ecx, 0x18
jge 0x2015d810
jmp 0x2015d7f0
mov rbx, qword [0x2054de98]
mov eax, dword [0x205b3c78]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
mov eax, dword [0x205b3c7c]
cmp eax, 0x46
jg 0x2015d858
jmp 0x2015d840
movsxd r13, dword [rbx]
mov ecx, dword [0x204716e0]
mov eax, dword [0x205b3c7c]
cmp eax, 0x22
jl 0x2015d8db
lea r14, [0x20160880]
nop
mov eax, dword [rbx]
mov eax, dword [0x2054e6cc]
lea ecx, [rax - 0x557428df]
lea edx, [rax - 0x557428de]
lea r9d, [rax - 0x557428cf]
lea r8d, [rax + 0x67747686]
add eax, 0xe8afa7b2
mov dword [rsp + 0x30], eax
mov dword [rsp + 0x28], r8d
mov qword [rsp + 0x20], 0
xor r8d, r8d
call fcn.20162490
mov qword [0x205b3bf0], rax
mov r8d, dword [0x2054e6cc]
lea edx, [r8 + 0x6a447e4]
add r8d, 0x575bcdee
mov rcx, r14
call fcn.20100d90
mov eax, dword [0x204716e0]
mov eax, dword [0x205b3c7c]
cmp eax, 0x55
jge 0x2015d860
jmp 0x2015d840
mov dword [rbp + 0x450], ecx
mov eax, dword [0x205b3c7c]
cmp eax, 0x42
mov eax, dword [0x205a6e7f]
mov ecx, eax
not ecx
xor eax, 0x400
and ecx, 0xfffffbff
or ecx, eax
mov eax, 0xaa8bd720
add eax, dword [0x2054e6cc]
mov edx, ecx
not edx
and edx, eax
not eax
and eax, ecx
or eax, edx
je 0x2015dabd
cmp qword [rdi + 0x7c0], 0
je 0x2015dabd
mov eax, dword [0x2054e6cc]
lea ecx, [rax - 0x557428de]
lea rdx, [fcn.2015cec0]
add edx, edx
add edx, 0x360
and edx, ecx
add eax, 0xaa8bd721
cmp edx, eax
mov eax, dword [0x205b3c7c]
cmp eax, 0x61
jg 0x2015d950
lea rcx, [rbp + 0x3c0]
lea rdx, [rbp - 0x40]
call fcn.2024cef0
mov r14, qword [rdi + 0x7c0]
lea rcx, [rbp + 0x3c0]
lea rdx, [rbp + 0x3e8]
call fcn.2024f840
cmp qword [rbp + 0x408], 0x10
jb 0x2015d998
mov rcx, qword [rbp + 0x3f0]
jmp 0x2015d99f
lea rcx, [rbp + 0x3f0]
mov rax, r14
call qword [case.0x2010e313.0]
mov eax, dword [0x205b3c78]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x2015d9d7
jmp 0x2015d9bb
mov rax, qword [rbp + 0x408]
mov ecx, dword [0x205b3c7c]
mov edx, 0xaa8bd738
add edx, dword [0x2054e6cc]
cmp ecx, edx
jl 0x2015da01
mov ecx, 0xaa8bd723
nop dword [rax]
mov edx, dword [0x205b3c78]
lea eax, [rdx - 1]
imul eax, edx
mov r8d, dword [0x2054e6cc]
add r8d, ecx
xor edx, edx
div r8d
test edx, edx
jne 0x2015d9e0
jmp 0x2015d9bb
cmp rax, 0x10
jb 0x2015da78
mov r14, qword [rbp + 0x3f0]
lea r12, [rax + 1]
cmp r12, 0x1000
jb 0x2015da43
mov rcx, qword [r14 - 8]
sub r14, rcx
add r14, 0xfffffffffffffff8
cmp r14, 0x20
jae 0x2015da50
sub rax, qword [0x2054e6d0]
movabs r12, 0x25d80db8a50014e3
add r12, rax
mov r14, rcx
mov eax, dword [0x205b3c7c]
cmp eax, 0x25
jg 0x2015da6b
jmp 0x2015da55
call fcn.20407a4c
mov rcx, r14
mov rdx, r12
call fcn.2008bfb0
mov eax, dword [0x205b3c7c]
cmp eax, 0x5d
jle 0x2015da78
mov rcx, r14
mov rdx, r12
call fcn.2008bfb0
jmp 0x2015da55
mov rax, qword [rbp + 0x3e0]
cmp rax, 0x10
jb 0x2015dabd
mov rcx, qword [rbp + 0x3c8]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x2015dab8
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x2015df02
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.2008bfb0
call fcn.20062310
mov r14, rax
add r13, rbx
xor r15b, 1
nop dword [rax]
mov byte [r14 + 0x778], r15b
mov eax, dword [0x205b3c7c]
cmp eax, 0x53
jle 0x2015daeb
mov byte [r14 + 0x778], r15b
jmp 0x2015dad0
mov rcx, r14
call fcn.20144050
mov eax, dword [0x205b3c7c]
nop dword [rax]
cmp dword [0x2054e6cc], 0x557428df
jne 0x2015db00
mov rcx, rsi
call fcn.201071b0
mov qword [rbp + 0x418], r13
mov eax, dword [0x205b3c7c]
cmp eax, 0x4c
mov r12d, dword [0x2054de94]
lea eax, [r12 + 1]
mov dword [rbp + 0x448], eax
lea r10d, [r12 + r12]
dec r10d
nop dword [rax]
mov eax, dword [0x205b3c7c]
cmp eax, 0x3e
jg 0x2015db80
mov eax, dword [rbp + 0x448]
mov dword [0x2054de94], eax
mov eax, dword [0x205b3c78]
mov ecx, dword [0x2054e6cc]
neg ecx
add ecx, eax
add ecx, 0x557428de
imul ecx, eax
test cl, 1
je 0x2015de90
nop dword [rax]
mov eax, dword [0x205b3c78]
mov ecx, dword [0x2054e6cc]
neg ecx
add ecx, eax
add ecx, 0x557428de
imul ecx, eax
test cl, 1
je 0x2015de31
mov r11d, dword [0x2054e6cc]
mov r9d, 0x557428de
sub r9d, r11d
lea ecx, [r12 + r9]
mov edx, r12d
shl edx, cl
lea eax, [r11 - 0x557428df]
mov ecx, eax
sub ecx, edx
inc ecx
sub edx, ecx
imul edx, ecx
mov r8d, edx
sub r8d, ecx
mov ecx, r8d
neg ecx
shl edx, cl
add edx, r8d
imul edx, ecx
mov r8d, edx
shl r8d, cl
sub edx, r8d
imul edx, r8d
sub edx, r8d
imul edx, r8d
sub edx, r8d
lea ecx, [rdx + rdx]
shl edx, cl
mov ebx, ecx
sub ebx, edx
neg edx
imul edx, ecx
mov r8d, ebx
mov ecx, edx
shl r8d, cl
mov ecx, r8d
shl ebx, cl
mov edx, ebx
mov ecx, r8d
shl edx, cl
mov ecx, edx
shl ebx, cl
imul ebx, edx
add ebx, edx
lea r8d, [r11 - 0x557428de]
imul r9d, r8d
lea ecx, [r9 - 1]
imul ecx, r8d
mov r15d, ecx
sub r15d, r9d
mov r8d, r15d
shl r8d, cl
imul ebx, edx
mov r13d, r8d
sub r13d, r15d
mov r9d, r13d
mov ecx, r8d
shl r9d, cl
mov r15d, ebx
mov edx, r9d
sub edx, r13d
mov r8d, edx
mov ecx, r9d
shl r8d, cl
neg r15d
sub r8d, edx
mov r9d, edx
mov ecx, r8d
shl r9d, cl
mov ecx, r9d
shl edx, cl
mov ecx, r9d
sub ecx, edx
add ecx, r9d
sub ecx, ebx
mov r8d, r15d
imul r8d, ecx
mov edx, ebx
sub edx, ecx
mov ecx, edx
xor ecx, r8d
and edx, r8d
lea edx, [rcx + rdx*2]
mov ecx, edx
sub ecx, r8d
imul ecx, r8d
mov r8d, edx
shl r8d, cl
mov ecx, r8d
shl edx, cl
mov r8d, ebx
mov ecx, edx
shl r8d, cl
mov r13d, r8d
sub r13d, ebx
mov edx, r13d
mov ecx, r8d
shl edx, cl
mov ecx, r13d
sub ecx, edx
imul ecx, edx
mov edx, r13d
shl edx, cl
sub r13d, edx
imul r13d, edx
sub r13d, edx
imul r13d, edx
mov r9d, edx
sub r9d, r13d
mov ecx, edx
shl r9d, cl
shl r9d, cl
imul r15d, ebx
mov r13d, r15d
neg r13d
imul r13d, r15d
sub r13d, r15d
sub r13d, r9d
imul r13d, r9d
mov r8d, r13d
mov ecx, r9d
shl r8d, cl
imul r13d, r8d
mov edx, eax
mov ecx, eax
shl edx, cl
mov r9d, eax
mov ecx, edx
shl r9d, cl
add r8d, r8d
add r8d, r13d
neg r9d
lea edx, [r11 + r9]
add edx, 0xaa8bd721
mov ecx, r8d
shl edx, cl
neg edx
lea ecx, [r11 + rdx]
add ecx, 0xaa8bd721
add r8d, ecx
add ecx, r8d
mov r9d, r8d
sub r9d, ecx
mov ecx, r8d
shl r9d, cl
shl r9d, cl
mov edx, r8d
sub edx, r9d
add edx, r8d
mov ecx, ebx
sub ecx, eax
sub r11d, eax
lea r9d, [r11 + rcx]
add r9d, 0xaa8bd721
shl r9d, cl
shl r9d, cl
sub ebx, r9d
mov ecx, r9d
sub ecx, ebx
imul ecx, ebx
sub r9d, ecx
sub r9d, edx
imul r9d, edx
mov r8d, r9d
mov ecx, edx
shl r8d, cl
sub r8d, r9d
mov r11d, r9d
mov ecx, r8d
shl r11d, cl
sub r9d, r11d
imul r9d, r11d
mov ecx, r9d
sub ecx, r11d
imul ecx, r11d
mov r11d, r9d
shl r11d, cl
mov r8d, r11d
sub r8d, r9d
add r8d, r11d
mov r9d, eax
sub r9d, r8d
imul r9d, r8d
mov r11d, eax
sub r11d, r9d
imul r11d, r9d
mov ecx, eax
sub ecx, r11d
add ecx, r9d
shl r11d, cl
shl r11d, cl
mov r9d, r11d
sub r9d, ecx
add r9d, r11d
mov r11d, r9d
mov ecx, edx
shl r11d, cl
sub r9d, r11d
imul r9d, r11d
add r9d, r11d
mov ecx, r8d
sub ecx, r9d
imul ecx, r9d
mov edx, r8d
sub edx, ecx
imul edx, ecx
add edx, r8d
mov dword [0x2054de94], edx
mov ecx, dword [0x205b3c78]
lea edx, [rcx - 1]
imul edx, ecx
and edx, 1
cmp edx, eax
jne 0x2015db80
mov cl, 1
sub cl, r10b
mov eax, r10d
shl eax, cl
mov edx, r10d
mov ecx, eax
shl edx, cl
sub edx, r10d
mov eax, dword [0x2054e6cc]
sub eax, r10d
add eax, 0xaa8bd721
mov ecx, eax
xor ecx, edx
and eax, edx
lea eax, [rcx + rax*2]
mov dword [0x2054de94], eax
mov eax, dword [0x205b3c7c]
cmp eax, 0x45
jg 0x2015dba2
mov eax, dword [0x205b3c78]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x2015db40
jmp 0x2015db4b
mov eax, dword [0x205b3c78]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
je 0x2015deb2
mov eax, dword [0x205b3c78]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x2015de90
mov ecx, dword [0x205b3c78]
lea eax, [rcx - 1]
imul eax, ecx
mov ecx, dword [0x2054e6cc]
lea r8d, [rcx - 0x557428dd]
xor edx, edx
div r8d
add ecx, 0xaa8bd721
cmp edx, ecx
jne 0x2015dea1
test dword [rbp + 0x448], r12d
mov r15, qword [rbp + 0x410]
mov rdx, qword [rbp + 0x418]
jne 0x2015df90
mov eax, dword [0x205b3c7c]
cmp eax, 0xf
jg 0x2015df70
jmp 0x2015df56
mov ecx, 0xaa8bd723
mov eax, dword [0x205b3c7c]
cmp eax, 0x27
jg 0x2015df31
mov edx, dword [0x205b3c78]
lea eax, [rdx - 1]
imul eax, edx
mov r8d, dword [0x2054e6cc]
add r8d, ecx
xor edx, edx
div r8d
test edx, edx
je 0x2015df51
mov eax, dword [0x205b3c78]
mov edx, dword [0x2054e6cc]
neg edx
add edx, eax
add edx, 0x557428de
imul edx, eax
test dl, 1
jne 0x2015df07
jmp 0x2015df12
call fcn.20407a4c
mov eax, dword [0x205b3c7c]
cmp eax, 0x5a
jl 0x2015df83
nop word cs:[rax + rax]
mov eax, dword [0x205b3c78]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x2015df70
jmp 0x2015df56
cmp dword [rbp + 0x450], 0
jg 0x2015e2ef
xor ebx, ebx
lea rdx, [0x205a6e7f]
lea r8, [rbp + 0x440]
mov rcx, r14
call fcn.200e91d0
lea rdx, [0x205a6e7f]
mov rcx, r14
call fcn.2013b7a0
mov byte [rbp + 0x450], al
cmp byte [rbp + 0x450], 0
je 0x2015e131
mov eax, dword [r14 + 0x164]
mov ecx, eax
xor ecx, 0xfffffeff
test ecx, eax
jne 0x2015e099
mov eax, dword [0x205b3c78]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
mov eax, dword [r14 + 0x160]
mov ecx, eax
not ecx
xor eax, 0x800000
and ecx, 0xff7fffff
or ecx, eax
cmp ecx, 0xffffffff
jne 0x2015e099
cmp qword [rdi + 0x4e8], 0
je 0x2015e099
mov eax, dword [0x205b3c7c]
mov ecx, 0xaa8bd73c
add ecx, dword [0x2054e6cc]
cmp eax, ecx
nop
mov rax, qword [rdi + 0x4f0]
mov ecx, dword [0x205b3c7c]
cmp ecx, 0x32
jg 0x2015e030
test rax, rax
je 0x2015e099
cmp dword [0x2054e6cc], 0x557428df
nop word cs:[rax + rax]
mov rax, qword [rdi + 0x4f8]
mov ecx, dword [0x205b3c7c]
cmp ecx, 0x18
jg 0x2015e060
xor ecx, ecx
call qword [case.0x2010e313.0]
call fcn.2015cd50
jmp 0x2015e099
mov eax, dword [0x205b3c7c]
cmp eax, 0xf
mov eax, dword [0x205b3c7c]
cmp eax, 0x2f
jg 0x2015e090
lea rdx, [0x205a6e7f]
mov rcx, r14
call fcn.20136ca0
call fcn.201b46f0
call fcn.2015f0e0
mov r13, rax
and r12d, dword [rbp + 0x448]
movzx eax, byte [0x204716e4]
xor edx, edx
cmp r12d, 1
mov ecx, 0
sbb ecx, ecx
mov r8d, 0xaa8bd721
nop word cs:[rax + rax]
mov r9d, dword [0x205b3c78]
lea r10d, [r9 - 1]
imul r10d, r9d
test r10b, 1
jne 0x2015e10d
test dl, dl
je 0x2015e1c1
mov r9d, dword [0x205b3c78]
lea r10d, [r9 - 1]
imul r10d, r9d
and r10d, 1
mov r9d, dword [0x2054e6cc]
add r9d, r8d
cmp r10d, r9d
jne 0x2015e0f0
jmp 0x2015e105
mov eax, dword [0x205a6e7f]
mov ecx, eax
or ecx, 1
mov dword [0x205a6e7f], ecx
mov ecx, eax
not ecx
mov edx, ecx
and edx, 0x100
and eax, 0xfffffeff
or eax, edx
and ecx, 0xfffffeff
or ecx, eax
cmp ecx, 0xffffffff
je 0x2015e317
test byte [0x205a6e83], 0x10
je 0x2015e47c
mov ecx, 0xaa8bd723
nop dword [rax + rax]
mov eax, dword [0x205b3c7c]
cmp eax, 0x31
jg 0x2015e1ae
mov edx, dword [0x205b3c78]
lea eax, [rdx - 1]
imul eax, edx
mov r8d, dword [0x2054e6cc]
add r8d, ecx
xor edx, edx
div r8d
test edx, edx
je 0x2015e470
mov eax, dword [0x205b3c78]
lea edx, [rax + 1]
imul edx, eax
test dl, 1
jne 0x2015e180
jmp 0x2015e18b
mov edx, dword [0x205b3c7c]
sub al, bl
mov edx, eax
not dl
mov r8d, ecx
not r8b
nop word cs:[rax + rax]
mov r9d, dword [0x205b3c78]
lea r10d, [r9 - 1]
imul r10d, r9d
test r10b, 1
jne 0x2015e1e0
nop word cs:[rax + rax]
mov r9d, dword [0x205b3c7c]
cmp r9d, 0x37
jle 0x2015e232
mov r9d, dword [0x205b3c78]
mov r10d, dword [0x2054e6cc]
neg r10d
add r10d, r9d
add r10d, 0xaa8bd722
imul r10d, r9d
test r10b, 1
jne 0x2015e200
mov r9d, dword [0x205b3c7c]
cmp r9d, 0x46
jg 0x2015e20d
xor al, cl
and dl, r8b
nop word cs:[rax + rax]
mov ecx, dword [0x205b3c7c]
cmp ecx, 0x39
jle 0x2015e26f
mov ecx, dword [0x205b3c78]
lea r8d, [rcx - 1]
imul r8d, ecx
test r8b, 1
jne 0x2015e250
or al, dl
not al
mov ecx, dword [0x205b3c7c]
cmp ecx, 0x34
nop dword [rax]
mov ecx, dword [0x205b3c78]
lea edx, [rcx - 1]
imul edx, ecx
test dl, 1
jne 0x2015e280
mov ecx, dword [0x205b3c7c]
movzx eax, al
mov edx, 0xaa8bd744
nop
mov rcx, qword [0x205b38a0]
mov r8d, dword [0x205b3c7c]
mov r9d, dword [0x2054e6cc]
add r9d, edx
cmp r8d, r9d
jge 0x2015e2a0
add rcx, rax
mov qword [0x205b38a0], rcx
mov ebx, dword [0x205b33b6]
mov edx, dword [0x205b33ba]
mov rcx, r14
call fcn.200e90b0
mov ecx, dword [0x205b3c7c]
cmp ecx, 0x18
jg 0x2015e4e0
jmp 0x2015e4be
xor eax, eax
xor ebx, ebx
nop word cs:[rax + rax]
xor bl, byte [rdx + rax]
lea ecx, [rax + 1]
cmp ecx, dword [rbp + 0x450]
jge 0x2015df92
inc rax
jmp 0x2015e300
mov rsi, qword [0x205b3938]
test rsi, rsi
je 0x2015e397
nop word cs:[rax + rax]
mov eax, dword [0x205b3c7c]
cmp eax, 0x1a
jg 0x2015e36b
mov rax, qword [rsi]
mov rax, qword [rax]
mov rcx, rsi
mov edx, 1
call qword [case.0x2010e313.0]
mov qword [0x205b3938], 0
mov eax, dword [0x205b3c78]
lea ecx, [rax + 1]
imul ecx, eax
test cl, 1
je 0x2015e397
mov rax, qword [rsi]
mov rax, qword [rax]
mov rcx, rsi
mov edx, 1
call qword [case.0x2010e313.0]
mov qword [0x205b3938], 0
mov eax, dword [0x205b3c7c]
cmp eax, 0x5f
jge 0x2015e330
jmp 0x2015e33b
mov rcx, qword [0x205b39c8]
test rcx, rcx
je 0x2015e3bf
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x2010e313.0]
mov qword [0x205b39c8], 0
mov rcx, qword [0x205b3a70]
test rcx, rcx
je 0x2015e3e7
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x2010e313.0]
mov qword [0x205b3a70], 0
mov eax, dword [0x205b3c7c]
mov ecx, 0xaa8bd77f
add ecx, dword [0x2054e6cc]
cmp eax, ecx
nop word [rax + rax]
mov eax, 0xaa8bd722
add eax, dword [0x2054e6cc]
lea rcx, [fcn.2015cec0]
add ecx, ecx
add ecx, 0x80
test ecx, eax
jne 0x2015e400
mov rcx, qword [0x205b3908]
test rcx, rcx
je 0x2015e44c
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 0xaa8bd722
add edx, dword [0x2054e6cc]
call qword [case.0x2010e313.0]
mov qword [0x205b3908], 0
mov rsi, qword [0x205b6560]
test rsi, rsi
je 0x2015e768
mov eax, dword [0x205b3c7c]
cmp eax, 0x25
jg 0x2015e740
jmp 0x2015e6f8
lea rcx, [0x205a6e7f]
call fcn.2012a9f0
call fcn.20154a20
test r15, r15
jne 0x2015e4ad
mov rsi, qword [0x205b6560]
test rsi, rsi
je 0x2015e4ad
mov rcx, rsi
call fcn.20068040
mov rcx, rsi
call fcn.2008bfc0
mov qword [0x205b6560], 0
xor ecx, ecx
xor edx, edx
mov r8, r15
call fcn.20428108
jmp 0x2015e768
mov ecx, dword [r14 + 0x160]
mov edx, dword [0x205b33be]
mov r8d, dword [0x205b3c7c]
cmp r8d, 0x33
jl 0x2015e4ed
nop dword [rax + rax]
mov ecx, dword [0x205b3c7c]
cmp ecx, 0x54
jge 0x2015e4e0
jmp 0x2015e4be
mov r8d, ecx
not r8d
mov r9d, r8d
and r9d, 0x20000
and ecx, 0xfffdffff
or ecx, r9d
and r8d, 0xfffdffff
or r8d, ecx
not r8d
test r8d, r8d
sete r8b
mov dword [rsp + 0x20], ebx
mov rcx, r13
mov r9, rax
call fcn.20102a80
mov dword [0x205b33be], 0
mov dword [0x205b33b6], 0
mov rcx, r14
call fcn.20097680
mov rcx, r14
mov dl, 1
xor r8d, r8d
call fcn.20094600
test byte [r14 + 0x160], 4
je 0x2015e656
mov eax, dword [0x205b3c7c]
cmp eax, 0x40
nop dword [rax]
cmp dword [0x2054e6cc], 0x557428df
jne 0x2015e570
cmp qword [0x205b3c88], 0
jne 0x2015e5e5
mov eax, dword [0x205b3c7c]
mov ecx, 0xaa8bd747
add ecx, dword [0x2054e6cc]
cmp eax, ecx
nop dword [rax]
mov eax, dword [0x205b3c78]
mov ecx, dword [0x2054e6cc]
neg ecx
add ecx, eax
add ecx, 0x557428de
imul ecx, eax
test cl, 1
jne 0x2015e5a0
mov ecx, 0x98
call fcn.2042789c
mov qword [rbp + 0x448], rax
mov rcx, rax
call fcn.2015f8b0
mov rax, qword [rbp + 0x448]
mov qword [0x205b3c88], rax
mov r12, qword [0x205b3c88]
mov ebx, dword [0x205b33ee]
mov edx, dword [0x205b33f2]
mov rcx, r14
call fcn.200e90b0
mov edx, dword [0x205b2fbb]
mov ecx, dword [0x205b3c7c]
cmp ecx, 0x3d
jl 0x2015e633
nop word cs:[rax + rax]
mov ecx, dword [0x205b3c78]
lea edx, [rcx - 1]
imul edx, ecx
test dl, 1
jne 0x2015e620
jmp 0x2015e600
mov rcx, r12
mov r8, rax
mov r9d, ebx
call fcn.2016ed00
mov dword [0x205b2fbb], 0
mov qword [0x205b33ee], 0
test byte [r14 + 0x160], 8
je 0x2015e7d4
cmp qword [0x205b3ac8], 0
jne 0x2015e6e4
mov eax, 0xaa8bd721
nop word cs:[rax + rax]
mov ecx, dword [0x205b3c78]
lea edx, [rcx - 1]
imul edx, ecx
test dl, 1
je 0x2015e6bd
nop word cs:[rax + rax]
mov ecx, dword [0x205b3c78]
lea edx, [rcx - 1]
imul edx, ecx
and edx, 1
mov ecx, dword [0x2054e6cc]
add ecx, eax
cmp edx, ecx
jne 0x2015e6a0
jmp 0x2015e680
mov ecx, 0xa0
call fcn.2042789c
mov qword [rbp + 0x448], rax
mov rcx, rax
call fcn.20157480
mov rax, qword [rbp + 0x448]
mov qword [0x205b3ac8], rax
mov eax, dword [0x205b3c7c]
cmp eax, 0x3b
jg 0x2015e7aa
jmp 0x2015e774
mov rcx, rsi
call fcn.20068040
mov rcx, rsi
call fcn.2008bfc0
mov qword [0x205b6560], 0
mov eax, dword [0x2054e6cc]
mov ecx, eax
xor ecx, 0xaa8bd722
and eax, 0x2a8bd722
lea eax, [rcx + rax*2]
lea rcx, [fcn.2015cec0]
add ecx, ecx
add ecx, 0x1aa0
test ecx, eax
je 0x2015e768
nop dword [rax]
mov rcx, rsi
call fcn.20068040
mov rcx, rsi
call fcn.2008bfc0
mov qword [0x205b6560], 0
mov eax, dword [0x205b3c7c]
cmp eax, 0x33
jge 0x2015e740
jmp 0x2015e6f8
mov rsi, qword [0x205a6ea3]
jmp 0x2015eaaf
mov rax, qword [0x205b3ac8]
mov edx, dword [r14 + 0x160]
movzx ecx, byte [0x2054e6cc]
add cl, 0x33
shr edx, cl
mov ecx, edx
not cl
xor dl, 1
and cl, 0xfe
or cl, dl
not cl
mov byte [rax + 9], cl
mov eax, dword [0x205b3c7c]
cmp eax, 0x26
jle 0x2015e7d4
mov rax, qword [0x205b3ac8]
movzx ecx, byte [0x2054e6cc]
add cl, 0x33
mov edx, 0xfffffebc
shr edx, cl
lea ecx, [rdx + rdx]
mov r8b, 1
sub r8b, cl
and r8b, dl
mov byte [rax + 9], r8b
jmp 0x2015e774
cmp qword [0x205b3a60], 0
jne 0x2015e858
mov eax, dword [0x205b3c78]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
nop dword [rax]
mov eax, dword [0x205b3c78]
lea ecx, [rax - 1]
imul ecx, eax
and ecx, 1
mov eax, 0xaa8bd721
add eax, dword [0x2054e6cc]
cmp ecx, eax
jne 0x2015e7f0
mov ecx, 0x40
call fcn.2042789c
mov qword [rax + 0x18], 0
movabs rcx, 0xda27f2475affeb54
add rcx, qword [0x2054e6d0]
mov qword [rax + 0x20], rcx
mov byte [rax + 8], 0
lea rcx, [0x20471b08]
mov qword [rax], rcx
xorps xmm0, xmm0
movups xmmword [rax + 0x28], xmm0
mov dword [rax + 0x38], 0
mov qword [0x205b3a60], rax
mov r12, qword [0x205b3a60]
mov r15d, dword [0x205b33fe]
mov ebx, dword [0x205b33fa]
mov r13d, dword [0x205b33f6]
mov rcx, qword [r14 + 0x190]
movzx edx, word [0x205b3010]
call fcn.2024c130
mov dword [rsp + 0x20], r15d
mov rcx, r12
mov rdx, rax
mov r8d, r13d
mov r9d, ebx
call fcn.2015f2d0
mov eax, dword [0x2054e6cc]
lea ecx, [rax - 0x457428df]
mov edx, dword [0x205b3402]
xor edx, ecx
not edx
and edx, ecx
add eax, 0xaa8bd721
cmp edx, eax
je 0x2015e8d6
mov eax, dword [0x205b73d8]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
inc dword [rax + 0x25810]
mov qword [0x205b33fa], 0
mov eax, dword [0x205b3402]
mov ecx, dword [0x2054e6cc]
lea edx, [rcx - 0x557428af]
add ecx, 0xaa8bd720
mov r8d, ecx
xor r8d, ecx
not r8d
and r8d, edx
xor r8d, ecx
mov ecx, r8d
xor ecx, eax
xor eax, 0x30
and ecx, r8d
or ecx, eax
cmp ecx, 0xffffffdf
jne 0x2015e9d0
mov eax, 0xaa93d721
add eax, dword [0x2054e6cc]
test dword [r14 + 0x160], eax
jne 0x2015e9d0
jmp 0x2015e94f
mov eax, dword [0x205b3c78]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
movzx eax, word [rsi + 0xa]
mov ecx, dword [0x205b3c7c]
cmp ecx, 0x3c
jg 0x2015e940
movzx eax, ax
cmp eax, 0x5ff
ja 0x2015e9d0
call fcn.2015be00
mov ecx, dword [0x205b3c7c]
cmp ecx, 0x3b
jg 0x2015e9a3
mov rdx, qword [rdi + 0x2b0]
lea rcx, [rax + 0x18]
cmp qword [rax + 0x30], 0x10
jb 0x2015e98e
mov rcx, qword [rax + 0x18]
mov r8d, dword [0x205b3c78]
lea r9d, [r8 - 1]
imul r9d, r8d
test r9b, 1
je 0x2015e9c7
mov ecx, 0xaa8bd743
nop dword [rax + rax]
mov edx, dword [0x205b3c7c]
mov r8d, dword [0x2054e6cc]
add r8d, ecx
cmp edx, r8d
jge 0x2015e9b0
jmp 0x2015e978
mov rax, rdx
call qword [case.0x2010e313.0]
cmp qword [0x205b3908], 0
jne 0x2015ea22
mov ecx, 0xe8
call fcn.2042789c
lea rcx, [0x2046c3e8]
mov qword [rax], rcx
mov qword [rax + 0x28], 0
mov qword [rax + 0x30], 0xf
mov byte [rax + 0x18], 0
lea rcx, [0x2046c448]
mov qword [rax + 0x10], rcx
mov dword [rax + 8], 0
xorps xmm0, xmm0
movups xmmword [rax + 0x38], xmm0
mov qword [0x205b3908], rax
xor eax, eax
test al, al
jne 0x2015ea46
mov rax, qword [0x205b3908]
mov ecx, dword [0x205b3406]
add rcx, qword [rax + 0x38]
mov qword [0x205a6ea3], rcx
xor eax, eax
test al, al
je 0x2015ea60
mov rax, qword [0x205b3908]
mov ecx, dword [0x205b3406]
add rcx, qword [rax + 0x38]
mov qword [0x205a6ea3], rcx
jmp 0x2015ea28
mov eax, 0xc0000000
and eax, dword [0x205a6e93]
cmp eax, 0x80000000
jne 0x2015ea96
mov edx, dword [rbp + 0x424]
mov rcx, qword [rbp + 0x430]
call fcn.20160640
mov edx, dword [rbp + 0x420]
mov rcx, qword [rbp + 0x428]
call fcn.201606c0
mov byte [r14 + 0x778], 0
mov eax, 0xaa8bd722
add eax, dword [0x2054e6cc]
or dword [0x205a6e7f], eax
mov rdi, qword [rbp + 0x440]
test rdi, rdi
je 0x2015eaf3
nop dword [rax + rax]
mov rcx, rdi
call fcn.20056cf0
mov rcx, rdi
call fcn.2008bfc0
mov eax, dword [0x205b3c78]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
je 0x2015eaf3
mov rcx, rdi
call fcn.20056cf0
mov rcx, rdi
call fcn.2008bfc0
jmp 0x2015eac0
cmp byte [rbp + 0x450], 0
je 0x2015eb0a
mov rsi, qword [0x205a6ea3]
add rsi, qword [0x205b38a0]
mov rax, rsi
movaps xmm6, xmmword [rbp + 0x460]
add rsp, 0x4f8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret