Function at 0x140159150
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x3a8
mov rdi, r9
mov rsi, rdx
mov rbx, rcx
movabs r15, 0x8000000000000000
mov rax, qword [r9]
xor rax, r15
cmp rax, 4
setae cl
cmp rax, 1
sete al
or al, cl
lea r13, [r9 + 0x18]
cmp al, 1
jne 0x140159300
lea rcx, [r15 + 6]
cmp qword [rdi + 0x18], rcx
jne 0x140159300
mov r12, r8
mov qword [rsp + 0xb8], r13
mov rbp, qword [rdi + 8]
mov r13, qword [rdi + 0x10]
lea rcx, [rsi + 0xf0]
mov rdx, rbp
mov r8, r13
call fcn.1401175a0
lea rax, [rsi + 0xd8]
mov qword [rsp + 0xb0], rax
mov rax, qword [rax]
cmp rax, r15
je 0x14015922a
mov r14, qword [rsi + 0xe8]
sub rax, r14
cmp rax, r13
jae 0x14015920b
mov rcx, qword [rsp + 0xb0]
mov rdx, r14
mov r8, r13
call fcn.1400670d0
mov r14, qword [rsi + 0xe8]
mov rcx, qword [rsi + 0xe0]
add rcx, r14
mov rdx, rbp
mov r8, r13
call sub.msvcrt.dll_memcpy
add r14, r13
mov qword [rsi + 0xe8], r14
cmp qword [rdi + 0x20], r15
jne 0x140159482
mov rax, qword [rsi + 0x1f0]
movzx eax, byte [rax + 0x48]
movups xmm0, xmmword [rdi + 0x30]
movups xmmword [rsp + 0xc0], xmm0
mov qword [rsp + 0xd0], 0
cmp al, 5
jne 0x140159482
lea rcx, [rsp + 0x100]
lea rdx, [rsp + 0xc0]
call case.0x1401300b8.80
movzx eax, byte [rsp + 0x100]
cmp al, 0x14
jne 0x1401593a0
mov ebp, dword [rsp + 0x102]
movzx r14d, word [rsp + 0x106]
lea rcx, [rsp + 0x100]
lea rdx, [rsp + 0xc0]
call fcn.140128490
movzx eax, byte [rsp + 0x10f]
shl eax, 0x10
movzx ecx, word [rsp + 0x10d]
or ecx, eax
shl rcx, 0x20
mov r8d, dword [rsp + 0x109]
or r8, rcx
cmp qword [rsp + 0x100], 0
movzx eax, byte [rsp + 0x108]
mov r13, qword [rsp + 0x110]
je 0x1401598d6
mov r14, qword [rsp + 0x118]
mov r9, r14
shr r9, 0x30
jmp 0x1401593eb
test al, al
je 0x140159338
movzx eax, byte [0x1402f9139]
mov edx, 2
xor ecx, ecx
call fcn.1401860d0
test rax, rax
je 0x140159be6
mov word [rax], 9
movzx ecx, byte [rdi + 0xb0]
movzx r8d, byte [rdi + 0xb1]
mov dl, 1
jmp 0x14015937e
movzx eax, byte [0x1402f9139]
mov edx, 2
xor ecx, ecx
call fcn.1401860d0
test rax, rax
je 0x140159be6
mov word [rax], 2
mov rdx, qword [rdi]
lea r8, [r15 + 4]
lea ecx, [rdx*8]
mov r9d, 0x3000201
shr r9d, cl
cmp rdx, r8
mov ecx, 2
cmovl ecx, r9d
xor edx, edx
mov byte [rbx + 1], cl
mov byte [rbx + 2], r8b
mov qword [rbx + 0x10], rax
mov qword [rbx + 0x18], 1
mov byte [rbx], dl
mov qword [rbx + 8], 1
jmp 0x1401594d3
movzx ecx, byte [rsp + 0x107]
shl ecx, 0x10
movzx edx, word [rsp + 0x105]
or edx, ecx
shl rdx, 0x20
mov r8d, dword [rsp + 0x101]
or r8, rdx
mov r13, qword [rsp + 0x108]
mov ecx, dword [rsp + 0x110]
mov r14d, dword [rsp + 0x114]
shl r14, 0x20
or r14, rcx
movzx r9d, word [rsp + 0x116]
movzx eax, al
shl r8, 8
or r8, rax
mov ebp, r13d
shr ebp, 8
mov ecx, r13d
shr ecx, 0x10
mov rdx, r13
shr rdx, 0x20
movabs rax, 0xffffffffffff
and rax, r14
movzx r14d, r9w
shl r14, 0x30
or r14, rax
mov qword [rsp + 0x28], r15
mov r9, qword [rsp + 0xd0]
cmp r9, qword [rsp + 0xc8]
jae 0x140159474
mov rax, qword [rsp + 0x28]
cmp rax, r15
je 0x140159482
test rax, rax
je 0x140159454
mov rcx, qword [0x1402f90f8]
xor edx, edx
call fcn.1401d02bc
cmp qword [rsp + 0xa8], 0
je 0x140159482
mov rcx, qword [0x1402f90f8]
xor edx, edx
mov r8, qword [rsp + 0x60]
call fcn.1401d02bc
jmp 0x140159482
mov r10, qword [rsp + 0x28]
cmp r10, r15
jne 0x140159559
mov r14, qword [r12]
mov word [rsp + 0x1b8], 4
mov qword [rsp + 0x100], r15
mov dword [rsp + 0x108], 0x100001
cmp byte [r14 + 0x40], 2
sete r8b
lea rdx, [rsp + 0x100]
mov rcx, r14
call fcn.140139470
mov byte [r14 + 0x141], 1
mov byte [rbx], 2
mov byte [rbx + 8], 0xc
mov r13, qword [rsp + 0xb8]
mov r14, qword [rdi]
xor r15, r14
cmp r15, 4
mov eax, 1
cmovb rax, r15
test rax, rax
je 0x140159529
cmp rax, 1
je 0x140159505
cmp rax, 2
je 0x140159529
mov eax, 0x10
cmp qword [rdi + 8], 0
jne 0x140159517
jmp 0x140159529
mov rcx, r13
call fcn.140137760
mov eax, 8
test r14, r14
je 0x140159529
mov r8, qword [rdi + rax]
mov rcx, qword [0x1402f90f8]
xor edx, edx
call fcn.1401d02bc
mov rcx, rsi
call fcn.140158e90
mov rcx, qword [0x1402f90f8]
xor edx, edx
mov r8, rsi
call fcn.1401d02bc
mov rax, rbx
add rsp, 0x3a8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov r9, r8
shr r9, 0x38
mov byte [rsp + 0x77], r9b
mov r9, r8
shr r9, 0x28
mov word [rsp + 0x75], r9w
mov r9, r8
shr r9, 8
mov dword [rsp + 0x71], r9d
mov byte [rsp + 0x79], bpl
mov word [rsp + 0x7a], cx
mov dword [rsp + 0x7c], edx
mov qword [rsp + 0x80], r14
mov rcx, qword [rsp + 0xa8]
mov qword [rsp + 0x88], rcx
mov rcx, qword [rsp + 0x60]
mov qword [rsp + 0x90], rcx
mov word [rsp + 0x98], ax
movzx eax, word [rsp + 0x20]
mov word [rsp + 0x9a], ax
mov eax, dword [rsp + 0x24]
mov dword [rsp + 0x9c], eax
movzx eax, word [rsp + 0x22]
mov word [rsp + 0xa0], ax
mov word [rsp + 0xa2], r11w
mov qword [rsp + 0x68], r10
mov byte [rsp + 0x70], r8b
mov byte [rsp + 0x78], r13b
lea rcx, [rsp + 0x80]
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x48], 1
mov qword [rsp + 0x50], 0
lea rdx, [rsp + 0x40]
call fcn.140132120
mov r13, qword [rsp + 0x78]
mov rax, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x50]
cmp rbp, rax
jne 0x140159646
lea rcx, [rsp + 0x40]
call fcn.140039bb0
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x48]
mov byte [rcx + rbp], r13b
inc rbp
mov qword [rsp + 0x50], rbp
mov r12, qword [rsp + 0x70]
sub rax, rbp
cmp rax, r13
jae 0x14015967e
lea rcx, [rsp + 0x40]
mov rdx, rbp
mov r8, r13
call fcn.1400670d0
mov rcx, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x50]
add rcx, rbp
mov rdx, r12
mov r8, r13
call sub.msvcrt.dll_memcpy
add rbp, r13
mov qword [rsp + 0x50], rbp
mov qword [rsp + 0xd0], rbp
movups xmm0, xmmword [rsp + 0x40]
movaps xmmword [rsp + 0xc0], xmm0
movups xmm0, xmmword [rsp + 0x88]
movups xmm1, xmmword [rsp + 0x98]
movups xmmword [rsp + 0xd8], xmm0
movups xmmword [rsp + 0xe8], xmm1
lea rdx, [rsi + 0x48]
lea rcx, [rsp + 0x180]
mov r8d, 0x90
call sub.msvcrt.dll_memcpy
mov rax, qword [rsi + 0x218]
mov qword [rsp + 0x350], rax
movups xmm0, xmmword [rsi + 0x1f8]
movups xmm1, xmmword [rsi + 0x208]
movaps xmmword [rsp + 0x340], xmm1
movaps xmmword [rsp + 0x330], xmm0
movups xmm0, xmmword [rsi + 0x1c8]
movups xmm1, xmmword [rsi + 0x1d8]
movaps xmmword [rsp + 0x310], xmm1
movaps xmmword [rsp + 0x300], xmm0
movups xmm0, xmmword [rsi + 0x220]
movups xmm1, xmmword [rsi + 0x230]
movups xmm2, xmmword [rsi + 0x240]
movups xmm3, xmmword [rsi + 0x250]
movups xmmword [rsp + 0x368], xmm1
movups xmmword [rsp + 0x358], xmm0
movups xmmword [rsp + 0x388], xmm3
movups xmmword [rsp + 0x378], xmm2
movzx ebp, byte [rsi + 0x260]
lea rcx, [rsp + 0x210]
mov r8d, 0xf0
mov rdx, qword [rsp + 0xb0]
call sub.msvcrt.dll_memcpy
mov rax, qword [rsi + 0x40]
mov qword [rsp + 0x140], rax
movups xmm0, xmmword [rsi]
movups xmm1, xmmword [rsi + 0x10]
movups xmm2, xmmword [rsi + 0x20]
movups xmm3, xmmword [rsi + 0x30]
movaps xmmword [rsp + 0x130], xmm3
movaps xmmword [rsp + 0x120], xmm2
movaps xmmword [rsp + 0x110], xmm1
movaps xmmword [rsp + 0x100], xmm0
mov rax, qword [rsp + 0xf0]
mov qword [rsp + 0x178], rax
movaps xmm0, xmmword [rsp + 0xc0]
movaps xmm1, xmmword [rsp + 0xd0]
movaps xmm2, xmmword [rsp + 0xe0]
movups xmmword [rsp + 0x168], xmm2
movups xmmword [rsp + 0x148], xmm0
movups xmmword [rsp + 0x158], xmm1
movzx eax, byte [rsi + 0x261]
mov byte [rsp + 0x398], bpl
movups xmm0, xmmword [rsi + 0x1e8]
movaps xmmword [rsp + 0x320], xmm0
mov byte [rsp + 0x399], al
movzx eax, byte [0x1402f9139]
mov edx, 0x2a0
xor ecx, ecx
call fcn.1401860d0
test rax, rax
je 0x140159bf7
mov r14, rax
lea rdx, [rsp + 0x100]
mov r8d, 0x2a0
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov qword [rbx + 8], r14
lea rax, fcn.140159d80
mov qword [rbx + 0x10], rax
mov byte [rbx], 0x14
cmp qword [rsp + 0x28], 0
mov r13, qword [rsp + 0xb8]
je 0x140159891
mov rcx, qword [0x1402f90f8]
xor edx, edx
mov r8, r12
call fcn.1401d02bc
mov r14, qword [rdi]
xor r15, r14
cmp r15, 4
mov eax, 1
cmovb rax, r15
test rax, rax
je 0x140159531
cmp rax, 1
je 0x1401599ea
cmp rax, 2
je 0x140159531
mov eax, 0x10
cmp qword [rdi + 8], 0
jne 0x140159a00
jmp 0x140159531
shl r14, 0x20
or r14, rbp
movzx eax, al
mov rcx, qword [rsp + 0x118]
shl r8, 8
or r8, rax
mov qword [rsp + 0x28], r8
cmp r8, r15
jne 0x14015990b
mov r8, r13
shr r8, 8
mov eax, r13d
mov r13, rcx
jmp 0x1401593eb
mov rbp, rcx
lea rcx, [rsp + 0x100]
lea rdx, [rsp + 0xc0]
call fcn.14012c280
movzx r10d, byte [rsp + 0x100]
cmp r10b, 0x14
jne 0x140159a17
movzx eax, word [rsp + 0x102]
mov word [rsp + 0x22], ax
movzx eax, word [rsp + 0x104]
mov qword [rsp + 0x58], rax
lea rcx, [rsp + 0x100]
lea rdx, [rsp + 0xc0]
call fcn.140128340
cmp qword [rsp + 0x100], 0
mov rax, qword [rsp + 0x108]
je 0x140159afa
mov r10, rax
mov r9d, r10d
shr r9d, 8
mov ecx, r10d
shr ecx, 0x10
mov r8, rax
shr r8, 0x20
mov rdx, rax
shr rdx, 0x30
movzx eax, byte [rsp + 0x110]
mov qword [rsp + 0x30], rax
movzx ebp, byte [rsp + 0x111]
movzx eax, word [rsp + 0x112]
mov word [rsp + 0x20], ax
mov eax, dword [rsp + 0x114]
mov dword [rsp + 0x24], eax
movzx eax, word [rsp + 0x118]
mov word [rsp + 0x22], ax
movzx r11d, word [rsp + 0x11a]
mov r14d, dword [rsp + 0x11c]
jmp 0x140159a81
mov rcx, r13
call fcn.140137760
mov eax, 8
test r14, r14
je 0x140159531
mov r8, qword [rdi + rax]
mov rcx, qword [0x1402f90f8]
xor edx, edx
call fcn.1401d02bc
jmp 0x140159531
movzx r9d, byte [rsp + 0x101]
movzx ecx, word [rsp + 0x102]
movzx r8d, word [rsp + 0x104]
movzx edx, word [rsp + 0x106]
movzx eax, word [rsp + 0x108]
mov qword [rsp + 0x30], rax
mov ebp, eax
shr ebp, 8
movzx eax, word [rsp + 0x10a]
mov word [rsp + 0x20], ax
mov eax, dword [rsp + 0x10c]
mov dword [rsp + 0x24], eax
movzx eax, word [rsp + 0x110]
mov word [rsp + 0x22], ax
movzx r11d, word [rsp + 0x112]
mov r14d, dword [rsp + 0x114]
movzx eax, r10b
movzx r9d, r9b
shl r9d, 8
or r9, rax
shl ecx, 0x10
or rcx, r9
movzx eax, r8w
shl rax, 0x20
or rax, rcx
movzx r8d, dx
shl r8, 0x30
or r8, rax
movzx eax, word [rsp + 0x22]
shl r11d, 0x10
or r11, rax
shl r14, 0x20
or r14, r11
cmp qword [rsp + 0x28], 0
je 0x140159ae2
mov rcx, qword [0x1402f90f8]
xor edx, edx
mov qword [rsp + 0x58], r8
mov r8, r13
call fcn.1401d02bc
mov r8, qword [rsp + 0x58]
mov qword [rsp + 0x28], r15
movzx ecx, word [rsp + 0x20]
mov edx, dword [rsp + 0x24]
mov r13, qword [rsp + 0x30]
jmp 0x140159425
movzx r10d, byte [rsp + 0x110]
movzx r9d, byte [rsp + 0x111]
movzx ecx, word [rsp + 0x112]
movzx r8d, word [rsp + 0x114]
movzx edx, word [rsp + 0x116]
movzx r11d, word [rsp + 0x118]
mov dword [rsp + 0x3c], r11d
movzx r11d, word [rsp + 0x11a]
mov word [rsp + 0x20], r11w
mov r11d, dword [rsp + 0x11c]
mov dword [rsp + 0x24], r11d
mov qword [rsp + 0xa8], rax
cmp rax, r15
jne 0x140159b74
mov eax, dword [rsp + 0x3c]
mov ebp, eax
shr ebp, 8
mov qword [rsp + 0x30], rax
mov r11, qword [rsp + 0x58]
jmp 0x140159a81
movzx eax, r10b
mov qword [rsp + 0x60], rax
movzx r10d, r9b
movzx r9d, cx
movzx r8d, r8w
movzx eax, dx
mov rdx, rbp
mov qword [rsp + 0x30], rbp
shr ebp, 8
mov ecx, edx
shr ecx, 0x10
shr rdx, 0x20
movabs r11, 0xffffffffffff
and r14, r11
shl r10d, 8
add r10, qword [rsp + 0x60]
shl r9d, 0x10
or r9, r10
shl r8, 0x20
or r8, r9
shl rax, 0x30
or rax, r8
mov qword [rsp + 0x60], rax
mov r8, r13
mov r13, qword [rsp + 0x30]
mov r11, qword [rsp + 0x58]
mov eax, dword [rsp + 0x3c]
jmp 0x140159425
mov ecx, 1
mov edx, 2
call fcn.1400257c0
jmp 0x140159c06
mov ecx, 8
mov edx, 0x2a0
call fcn.140025820
ud2