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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x168
mov rax, qword [rcx]
mov rbx, qword [rcx + 0x10]
mov qword [rsp + 0x1b8], rdx
mov rdx, qword [rax + 8]
mov qword [rsp + 0x38], rax
movzx eax, byte [rbx + 0x10]
mov qword [rsp + 0x1b0], rcx
mov word [rsp + 0x72], 0xffff
imul rax, rax, 0x68
lea rsi, [rdx + rax + 8]
mov rax, qword [rcx + 8]
test byte [rsi + 0x40], 2
mov rbp, qword [rsi + 0x20]
mov qword [rsp + 0x40], rax
je 0x140161753
mov r15, qword [rsi + 0x60]
jmp 0x1401617e2
mov eax, dword [rbp + 0x30]
and eax, 0x80
je 0x140161763
mov r15, qword [rbp + 0x10]
jmp 0x1401617e2
lea r15, [rsp + 0xc0]
mov ecx, 0x28
mov word [rsp + 0x76], 0
mov rdi, r15
rep stosd dword [rdi], eax
lea rax, [rsp + 0x72]
mov dword [rsp + 0x11c], 0x10003
mov qword [rsp + 0xc8], rax
lea rax, [rsp + 0x74]
mov byte [rsp + 0x122], 5
test byte [rsi + 0x40], 1
mov qword [rsp + 0xd0], rax
mov byte [rsp + 0x124], 3
mov ax, word [rbp + 0x3a]
mov qword [rsp + 0xd8], rbp
mov word [rsp + 0x120], 1
mov word [rsp + 0x74], ax
jne 0x1401617e2
mov rax, qword [rsi + 0x20]
mov rax, qword [rax + 0x10]
mov qword [rsp + 0xe8], rax
mov rax, qword [rsp + 0x1b0]
xor edi, edi
cmp qword [rax + 0x18], 0
jne 0x14016180c
mov rax, qword [rsp + 0x38]
test word [rax + 0x3c], 0x1020
jne 0x14016180c
mov rax, qword [rax]
mov rax, qword [rax]
test byte [rax + 0x31], 0x80
jne 0x140161819
mov dword [rsp + 0x54], 1
jmp 0x140161954
mov al, byte [rsi + 0x40]
test al, 3
jne 0x14016180c
test byte [rbp + 0x30], 0x80
jne 0x14016180c
test al, 0x48
jne 0x14016180c
test byte [rsi + 0x3c], 0x10
jne 0x14016180c
mov rax, qword [rsp + 0x40]
movsx ecx, word [rbp + 0x3a]
movsxd r13, dword [rax + 0x14]
mov r12, qword [rax + 0x20]
mov r14d, ecx
imul r13, r13, 0x38
lea rax, [r12 + r13]
mov qword [rsp + 0x48], rax
call fcn.1400c2bd0
add r14d, eax
cwde
mov dword [rsp + 0x54], eax
lea eax, [r14 - 0x19]
mov word [rsp + 0x58], ax
test edi, edi
jne 0x14016180c
mov rax, qword [rsp + 0x48]
cmp r12, rax
jae 0x14016180c
mov r13, qword [r12 + 0x28]
mov edi, 0
mov rax, r13
and rax, qword [rbx + 8]
jne 0x140161919
xor r8d, r8d
mov rdx, rsi
mov rcx, r12
call fcn.140159f80
test eax, eax
mov edi, eax
je 0x140161919
xor eax, eax
mov word [rbx + 0x18], 1
mov qword [rbx + 0x20], rax
mov rax, qword [rbx + 0x48]
mov dword [rbx + 0x3c], 1
mov qword [rax], r12
cmp byte [rbp + 0x3f], 2
je 0x1401618ca
test byte [rbp + 0x31], 0x40
lea eax, [r14 + 0x1c]
je 0x1401618ce
mov eax, dword [rsp + 0x58]
mov ecx, dword [rsp + 0x54]
xor edx, edx
test ax, ax
mov word [rbx + 0x16], 0x2b
cmovs eax, edx
mov edx, 0x2b
mov word [rbx + 0x12], ax
call fcn.140129060
mov rcx, qword [rsp + 0x1b0]
mov dword [rbx + 0x38], 0x4000
mov rdx, rbx
mov word [rbx + 0x14], ax
mov rax, qword [rsp + 0x1b8]
or rax, r13
mov qword [rbx], rax
call fcn.140164220
mov edi, eax
add r12, 0x38
jmp 0x140161867
test r15, r15
je 0x140161df7
mov r9, qword [r15 + 0x48]
test r9, r9
jne 0x14016195d
mov al, byte [r15 + 0x65]
and al, 2
mov byte [rsp + 0x48], al
je 0x140161974
xor edi, edi
test byte [rsi + 0x40], 2
jne 0x140161def
mov r15, qword [r15 + 0x28]
inc dword [rsp + 0x54]
test edi, edi
je 0x140161922
jmp 0x140161df7
movzx edx, byte [rsi + 0x3c]
mov ecx, dword [rsi + 0x44]
mov r8, qword [rsp + 0x40]
call fcn.140165c40
test eax, eax
jne 0x140161934
jmp 0x140161940
mov rax, qword [r15 + 0x10]
xor r12d, r12d
xor edi, edi
mov r14w, word [rax]
mov byte [rbx + 0x11], 0
mov rax, qword [rsp + 0x1b8]
mov dword [rbx + 0x3c], r12d
test byte [r15 + 0x64], 4
mov dword [rbx + 0x18], edi
mov word [rbx + 0x1c], 0
mov word [rbx + 0x12], 0
mov qword [rbx], rax
mov eax, dword [rsi + 0x44]
mov word [rbx + 0x16], r14w
mov qword [rbx + 0x20], r15
mov dword [rsp + 0x58], eax
je 0x1401619c1
xor edi, edi
jmp 0x140161a92
mov rax, qword [rsp + 0x1b0]
xor edi, edi
mov rax, qword [rax]
mov r13, qword [rax + 0x10]
test r13, r13
je 0x1401619ba
cmp dword [r13], edi
jle 0x1401619ba
mov rax, rdi
shl rax, 5
mov rcx, qword [r13 + rax + 8]
call fcn.140116ad0
test rax, rax
mov rcx, rax
jne 0x1401619fb
inc rdi
jmp 0x1401619d7
mov al, byte [rax]
add eax, 0x59
test al, 0xfd
jne 0x140161a3b
mov eax, dword [rsp + 0x58]
cmp eax, dword [rcx + 0x2c]
jne 0x140161a3b
mov edx, dword [rcx + 0x30]
test dx, dx
jns 0x140161a1c
mov edi, 1
jmp 0x140161a92
movzx ecx, word [r15 + 0x5e]
xor eax, eax
cmp ecx, eax
jle 0x1401619f6
mov r8, qword [r15 + 8]
mov r8w, word [r8 + rax*2]
inc rax
cmp dx, r8w
jne 0x140161a23
jmp 0x140161a15
mov r9, qword [r15 + 0x50]
test r9, r9
je 0x1401619f6
xor r12d, r12d
movzx eax, word [r15 + 0x5e]
cmp eax, r12d
jle 0x1401619f6
mov rax, qword [r15 + 8]
cmp word [rax + r12*2], 0xfffe
je 0x140161a62
inc r12
jmp 0x140161a47
mov rax, r12
mov r8d, dword [rsp + 0x58]
mov qword [rsp + 0x68], r9
shl rax, 5
mov qword [rsp + 0x60], rcx
mov rdx, qword [r9 + rax + 8]
call fcn.140115680
mov rcx, qword [rsp + 0x60]
test eax, eax
mov r9, qword [rsp + 0x68]
jne 0x140161a5d
jmp 0x140161a15
mov al, byte [r15 + 0x64]
mov edx, eax
not edx
and dl, 3
jne 0x140161adc
test edi, edi
mov edx, r14d
mov rcx, qword [rsp + 0x40]
movsx r8d, r14w
cmovne edi, dword [rsp + 0x54]
mov dword [rbx + 0x38], 0x100
mov byte [rbx + 0x11], dil
mov eax, dword [rbp + 0x30]
shr eax, 0xc
and eax, 2
sub edx, eax
lea eax, [rdx + 0x10]
mov rdx, rbx
mov word [rbx + 0x14], ax
call fcn.140164470
jmp 0x140161d28
test al, 0x20
je 0x140161aed
xor r11d, r11d
mov qword [rsp + 0x78], r11
jmp 0x140161b81
mov r8, qword [r15 + 0x48]
mov rax, qword [rsi + 0x50]
and rax, qword [r15 + 0x98]
test r8, r8
mov qword [rsp + 0x78], rax
je 0x140161b2b
mov rax, qword [rsp + 0x38]
xor r9d, r9d
xor r10d, r10d
mov rdx, r15
mov qword [rsp + 0x28], r9
lea r9, [rsp + 0x78]
mov dword [rsp + 0x20], r10d
mov rcx, qword [rax]
call fcn.1401648c0
mov rax, qword [rsp + 0x78]
mov edx, 1
mov dword [rbx + 0x38], 0x200
shl rdx, 0x3f
cmp rax, rdx
je 0x140161b56
mov dl, byte [r15 + 0x65]
and edx, 0x18
cmp dl, 0x10
jne 0x140161b7c
test rax, rax
je 0x140161b81
mov rax, qword [rsp + 0x38]
mov rdx, r15
mov r8d, dword [rsi + 0x44]
mov rcx, qword [rax + 0x20]
call fcn.1401611f0
test eax, eax
je 0x140161b88
or dword [rbx + 0x38], eax
xor r8d, r8d
mov qword [rsp + 0x78], r8
jmp 0x140161b88
test rax, rax
jne 0x140161b88
mov dword [rbx + 0x38], 0x240
test edi, edi
mov rcx, qword [rsp + 0x78]
jne 0x140161bf8
test byte [rbp + 0x30], 0x80
jne 0x140161c00
cmp qword [r15 + 0x48], 0
jne 0x140161c00
test byte [rsi + 0x40], 2
jne 0x140161c00
test rcx, rcx
jne 0x140161d47
mov al, byte [r15 + 0x64]
and al, 4
mov byte [rsp + 0x48], al
jne 0x140161d47
mov eax, dword [rbp + 0x3c]
cmp word [r15 + 0x5c], ax
jge 0x140161d47
mov rax, qword [rsp + 0x38]
test byte [rax + 0x3c], 4
jne 0x140161d47
cmp byte [0x14016f1a7], 0
je 0x140161d47
mov rax, qword [rax]
mov rax, qword [rax]
test byte [rax + 0x60], 0x20
je 0x140161c00
jmp 0x140161d47
mov al, byte [rsp + 0x54]
mov byte [rsp + 0x48], al
mov al, byte [rsp + 0x48]
mov byte [rbx + 0x11], al
movsx eax, word [r15 + 0x5c]
movsx r8d, word [rbp + 0x3c]
imul eax, eax, 0xf
cdq
idiv r8d
test rcx, rcx
lea eax, [r14 + rax + 1]
mov word [rbx + 0x14], ax
je 0x140161d03
mov r9d, dword [rsi + 0x44]
lea rax, [rsp + 0x90]
xor r8d, r8d
lea r12d, [r14 + 0x10]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x38]
cmp dword [rax + 0x84], r8d
jle 0x140161cca
mov rax, qword [rsp + 0x38]
imul r13, r8, 0x38
mov ecx, 0xa
mov qword [rsp + 0x60], r8
mov rdi, qword [rsp + 0x48]
mov dword [rsp + 0x58], r9d
add r13, qword [rax + 0x90]
xor eax, eax
mov rdx, qword [r13]
mov dword [rsp + 0x88], r9d
rep stosd dword [rdi], eax
mov rcx, qword [rsp + 0x48]
lea rax, [0x1400c4bb0]
mov qword [rsp + 0x80], r15
mov qword [rsp + 0x98], rax
lea rax, [rsp + 0x80]
mov qword [rsp + 0xb8], rax
call fcn.1401483e0
mov r9d, dword [rsp + 0x58]
cmp word [rsp + 0xb4], 0
mov r8, qword [rsp + 0x60]
je 0x140161cdd
movsx ecx, word [rbx + 0x14]
movsx edx, r12w
call fcn.140129060
mov word [rbx + 0x14], ax
jmp 0x140161d03
mov eax, dword [r13 + 0x10]
test ax, ax
jg 0x140161ceb
add r12d, eax
jmp 0x140161cfb
test byte [r13 + 0x14], 0x82
jne 0x140161cf7
dec r12d
jmp 0x140161cfb
sub r12d, 0x14
inc r8
jmp 0x140161c42
mov rcx, qword [rsp + 0x40]
movsx r8d, r14w
mov rdx, rbx
call fcn.140164470
test byte [rsi + 0x3c], 0x10
je 0x140161d28
cmp qword [r15 + 0x50], 0
je 0x140161d28
mov word [rbx + 0x16], r14w
jmp 0x140161d47
mov rcx, qword [rsp + 0x1b0]
mov rdx, rbx
call fcn.140164220
mov word [rbx + 0x16], r14w
test eax, eax
mov edi, eax
jne 0x140161df7
mov rax, qword [rsp + 0x1b0]
xor r9d, r9d
mov r8, r15
mov rdx, rsi
mov byte [rax + 0x2c], 0
mov rcx, rax
call fcn.140161e10
mov edi, eax
mov rax, qword [rsp + 0x1b0]
cmp byte [rax + 0x2c], 1
jne 0x140161d7b
or dword [rbp + 0x30], 0x100
mov rax, qword [rsp + 0x1b0]
mov r12, qword [rax + 0x20]
test r12, r12
je 0x140161dd7
mov rax, qword [r12]
xor r13d, r13d
mov r14, qword [r12 + 8]
movzx eax, word [rax + 8]
mov dword [rsp + 0x48], eax
mov rax, qword [r14 + 0x18]
mov qword [rsp + 0x58], rax
cmp dword [rsp + 0x48], r13d
jle 0x140161dc1
mov rcx, r14
inc r13d
add r14, 0x38
call fcn.1401456d0
jmp 0x140161da9
mov rcx, qword [r12]
call fcn.1401289a0
mov rcx, qword [rsp + 0x58]
mov rdx, r12
call fcn.14010fd60
mov rax, qword [rsp + 0x1b0]
xor edx, edx
xor ecx, ecx
mov dword [rax + 0x28], edx
mov qword [rax + 0x20], rcx
jmp 0x140161942
xor r15d, r15d
jmp 0x140161950
mov eax, edi
add rsp, 0x168
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret