Function at 0x140016bf5
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, 0x318
movdqa xmmword [rsp + 0x300], xmm9
movdqa xmmword [rsp + 0x2f0], xmm8
movdqa xmmword [rsp + 0x2e0], xmm7
movaps xmmword [rsp + 0x2d0], xmm6
mov r12, r8
mov rbp, rcx
lea r14, [rsp + 0xd8]
mov qword [r14], 0
lea rax, [rsp + 0x180]
mov dword [rax], 0
mov r10, qword [rdx]
mov qword [rsp + 0x20], rax
mov rcx, rdx
mov edx, 0xffffffff
mov r8d, 1
mov r9, r14
call qword [r10 + 0x20]
mov r13d, eax
test eax, eax
js 0x140016ca9
cmp dword [rsp + 0x180], 0
je 0x140016cd9
mov rsi, qword [rsp + 0xd8]
mov byte [rsp + 0x90], 0xf
test rsi, rsi
je 0x140016eac
lea rcx, [rsp + 0x90]
call fcn.140017e00
mov r15b, 0x12
jmp 0x140016cef
lea rbx, [rsp + 0x90]
mov qword [rbx], 0
xor r15d, r15d
xor ecx, ecx
mov rdx, rbx
call qword [sym.imp.oleaut32.dll_GetErrorInfo]
mov rcx, qword [rbx]
test rcx, rcx
je 0x140016cdc
mov rax, qword [rcx]
call qword [rax + 0x10]
xor r15d, r15d
jmp 0x140016cdc
mov r15b, 0x13
mov rcx, qword [rsp + 0xd8]
test rcx, rcx
je 0x140016cef
mov rax, qword [rcx]
call qword [rax + 0x10]
cmp r15b, 0x13
je 0x140017d85
movzx eax, r15b
cmp eax, 0x12
jne 0x140016ea7
mov qword [rsp + 0xd8], 0
mov rax, qword [rsi]
mov qword [rsp + 0x20], r14
mov qword [rsp + 0x108], rsi
mov rcx, rsi
xor edx, edx
mov r8d, 0x40
xor r9d, r9d
call qword [rax + 0x38]
test eax, eax
js 0x140016eb4
mov r14, qword [rsp + 0xd8]
lea rbx, [rsp + 0x90]
mov rcx, rbx
mov rdx, r14
mov r8w, 8
call fcn.14004ddff
mov r15b, byte [rbx]
cmp r15b, 0x12
jne 0x140016eeb
mov rdi, r12
mov rbx, qword [rsp + 0x98]
mov rsi, qword [rsp + 0xa0]
mov r8, qword [rsp + 0xa8]
mov rcx, r8
shl rcx, 5
add rcx, rsi
mov qword [rsp + 0x90], rsi
mov qword [rsp + 0x98], rsi
mov qword [rsp + 0xa0], rbx
mov r13, rbx
shl r13, 5
movabs rdx, 0xaaaaaaaaaaaaaaab
mov rax, r13
mul rdx
mov qword [rsp + 0xa8], rcx
mov r12, rsi
test r8, r8
je 0x140016e3a
lea rax, [rsp + 0x187]
mov r12, rsi
mov r9, rsi
mov r8b, byte [r9]
movups xmm0, xmmword [r9 + 1]
movups xmm1, xmmword [r9 + 0x10]
movups xmmword [rsp + 0x18f], xmm1
movaps xmmword [rsp + 0x180], xmm0
cmp r8b, 2
jne 0x140016ea5
mov r8, qword [rax + 0x10]
mov qword [rsp + 0x130], r8
movdqu xmm0, xmmword [rax]
movdqa xmmword [rsp + 0x120], xmm0
mov qword [r12 + 0x10], r8
movdqu xmmword [r12], xmm0
add r12, 0x18
add r9, 0x20
cmp r9, rcx
jne 0x140016dda
mov qword [rsp + 0x98], rcx
shr rdx, 4
mov qword [rsp + 0x58], rdx
lea rcx, [rsp + 0x90]
call case.0x14003e4fe.231
mov rcx, qword [rsp + 0x58]
mov r8, rsi
test rbx, rbx
je 0x140016f65
lea rax, [rcx*8]
lea r9, [rax + rax*2]
mov r8, rsi
cmp r13, r9
je 0x140016f65
test r13, r13
je 0x140016f48
mov rcx, qword [0x14007db30]
xor edx, edx
mov r8, rsi
call qword [sym.imp.kernel32.dll_HeapReAlloc]
mov r8, rax
test rax, rax
mov rcx, qword [rsp + 0x58]
jne 0x140016f65
jmp 0x140017d4a
mov r15b, 0xf
jmp 0x140016cef
mov r13d, eax
lea rbx, [rsp + 0x90]
mov qword [rbx], 0
xor r15d, r15d
xor ecx, ecx
mov rdx, rbx
call qword [sym.imp.oleaut32.dll_GetErrorInfo]
mov rcx, qword [rbx]
test rcx, rcx
je 0x140017a1c
mov rax, qword [rcx]
call qword [rax + 0x10]
jmp 0x140017a19
mov eax, dword [rsp + 0x91]
mov ecx, dword [rsp + 0x94]
mov dword [rsp + 0xdc], ecx
mov dword [rsp + 0xd9], eax
mov rax, qword [rsp + 0x98]
mov rcx, qword [rsp + 0xa0]
mov rdx, qword [rsp + 0xa8]
mov qword [rsp + 0x58], rax
mov qword [rsp + 0xe0], rax
mov qword [rsp + 0x60], rcx
mov qword [rsp + 0xe8], rcx
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0xf0], rdx
jmp 0x140016fae
mov rcx, qword [0x14007db30]
xor edx, edx
mov r8, rsi
call qword [sym.imp.kernel32.dll_HeapFree]
mov r8d, 8
mov rcx, qword [rsp + 0x58]
sub r12, rsi
mov rax, r12
movabs rdx, 0xaaaaaaaaaaaaaaab
mul rdx
shr rdx, 4
mov qword [rsp + 0xe0], rcx
mov qword [rsp + 0x60], r8
mov qword [rsp + 0xe8], r8
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0xf0], rdx
lea rcx, [rsp + 0x90]
call fcn.14004c049
mov r12, rdi
mov byte [rsp + 0xd8], r15b
mov rcx, r14
call qword [sym.imp.oleaut32.dll_SafeArrayDestroy]
test eax, eax
js 0x140017989
cmp r15b, 0x12
mov r14, qword [rsp + 0x60]
jne 0x1400179e8
mov eax, dword [0x14007dbbc]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
cmp qword [rax + 0x78], 0
add byte [rax], al
add byte [rax - 0x75], cl
push rsp
and al, 0x50
mov r13d, eax
lea rbx, [rsp + 0x90]
mov qword [rbx], 0
xor ecx, ecx
mov rdx, rbx
call qword [sym.imp.oleaut32.dll_GetErrorInfo]
mov rcx, qword [rbx]
test rcx, rcx
mov rsi, qword [rsp + 0x60]
je 0x1400179b9
mov rax, qword [rcx]
call qword [rax + 0x10]
cmp r15b, 0x12
jne 0x140017a0c
mov rcx, rsi
mov rdx, qword [rsp + 0x50]
call fcn.14004dd81
cmp qword [rsp + 0x58], 0
je 0x140017a19
mov rcx, qword [0x14007db30]
xor edx, edx
mov r8, rsi
call qword [sym.imp.kernel32.dll_HeapFree]
jmp 0x140017a19
movzx eax, byte [rsp + 0xdb]
shl eax, 0x10
movzx edi, word [rsp + 0xd9]
or edi, eax
mov r13d, dword [rsp + 0xdc]
xor esi, esi
jmp 0x140017cfa
lea rcx, [rsp + 0xd8]
call fcn.140017e00
xor r15d, r15d
xor esi, esi
jmp 0x140017cfa