Function at 0x140164a40
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, 0xa8
mov eax, dword [rsp + 0x110]
mov qword [rsp + 0xf8], rdx
mov rdx, qword [rcx]
test ax, ax
mov rbp, rcx
mov dword [rsp + 0x68], r9d
mov esi, dword [rsp + 0x68]
mov qword [rsp + 0x100], r8
mov word [rsp + 0x9a], ax
mov rdx, qword [rdx]
mov word [rsp + 0x54], si
je 0x140164a9b
test byte [rdx + 0x60], 0x40
je 0x140164a9b
xor eax, eax
jmp 0x1401650dd
mov rax, qword [rsp + 0xf8]
mov eax, dword [rax]
mov dword [rsp + 0x48], eax
cmp word [rsp + 0x48], 0x3f
ja 0x140164a94
movzx eax, word [rsp + 0x48]
mov bl, 1
mov cl, byte [rsp + 0x48]
mov dword [rsp + 0x4c], eax
mov eax, 1
shl rax, cl
dec rax
mov qword [rsp + 0x80], rax
mov eax, dword [rsp + 0x68]
and ax, 0x803
cmp ax, 1
sbb eax, eax
xor r10d, r10d
xor esi, esi
mov dword [rsp + 0x58], eax
add word [rsp + 0x58], 0x183
mov qword [rsp + 0x38], r10
mov qword [rsp + 0x78], r10
mov qword [rsp + 0x70], r10
mov qword [rsp + 0x30], r10
mov rdi, qword [rsp + 0x80]
cmp qword [rsp + 0x30], rdi
jae 0x14016508d
test bl, 1
je 0x14016508d
movzx eax, word [rsp + 0x9a]
mov edx, dword [rsp + 0x38]
cmp eax, edx
jl 0x140165089
cmp qword [rsp + 0x38], 0
je 0x140164b46
mov rsi, qword [rsi + 8]
or qword [rsp + 0x78], rsi
cmp eax, edx
jle 0x140164b70
mov rax, qword [rsp + 0x100]
mov bl, 1
mov rsi, qword [rsp + 0x38]
test word [rsp + 0x54], 0x800
mov rax, qword [rax + 0x18]
mov rsi, qword [rax + rsi*8]
jne 0x14016507f
jmp 0x140164b78
mov rsi, qword [rsp + 0x118]
test byte [rsi + 0x39], 4
je 0x140164ba2
cmp byte [rsi + 0x20], 0
mov al, 0xff
je 0x1401650dd
mov edx, dword [rsp + 0x68]
and dx, 0x280
add dx, 0xff80
jne 0x14016509c
jmp 0x1401650dd
mov eax, dword [rsp + 0x54]
and ax, 0x80
mov word [rsp + 0x98], ax
je 0x140164bba
mov word [rsi + 0x1e], 0
movzx eax, byte [rsi + 0x10]
xor ebx, ebx
imul rax, rax, 0x68
add rax, qword [rbp + 8]
mov eax, dword [rax + 0x4c]
mov dword [rsp + 0x50], eax
mov rax, qword [rsp + 0xf8]
add rax, 8
mov qword [rsp + 0x88], rax
mov rdi, rax
mov eax, dword [rsp + 0x4c]
cmp ebx, eax
je 0x140164ced
mov r12, qword [rsp + 0x30]
mov ecx, ebx
shr r12, cl
and r12d, 1
jne 0x140164ce2
mov rcx, qword [rdi]
call fcn.140116ad0
test rax, rax
mov r13, rax
je 0x140164ce2
mov al, byte [rax]
add eax, 0x59
test al, 0xfd
jne 0x140164ce2
mov eax, dword [rsp + 0x50]
cmp dword [r13 + 0x2c], eax
jne 0x140164ce2
movsx r8d, word [r13 + 0x30]
lea rcx, [rbp + 0x70]
xor r9d, r9d
movzx eax, word [rsp + 0x58]
mov qword [rsp + 0x28], r9
mov r9, qword [rsp + 0x78]
mov edx, dword [rsp + 0x50]
mov dword [rsp + 0x20], eax
not r9
call fcn.14014c6a0
test rax, rax
mov r14, rax
je 0x140164ce2
mov eax, dword [rax + 0x14]
cmp ax, 1
jne 0x140164ca4
movzx eax, word [rsi + 0x3c]
cmp eax, r12d
jle 0x140164ce2
mov rdx, qword [rsi + 0x48]
lea rcx, [r12 + 1]
cmp qword [rdx + r12*8], r14
je 0x140164c8e
mov r12, rcx
jmp 0x140164c75
cmp eax, r12d
jle 0x140164ce2
mov eax, 1
mov ecx, ebx
shl rax, cl
or qword [rsp + 0x30], rax
jmp 0x140164ce2
test al, 0x82
je 0x140164c93
cmp word [r13 + 0x30], 0
js 0x140164c93
mov r13, qword [rbp]
mov rdx, qword [rdi]
mov rcx, r13
call fcn.140116830
mov rdx, qword [r14]
mov rcx, r13
mov r12, rax
call fcn.140115660
test rax, rax
je 0x140164ce2
mov rdx, qword [rax]
mov rcx, qword [r12]
call fcn.140139c40
test eax, eax
je 0x140164c93
inc ebx
add rdi, 0x20
jmp 0x140164be6
mov eax, dword [rsi + 0x38]
bt eax, 0xc
jb 0x140164ffc
bt eax, 8
jb 0x140164d40
mov r12, qword [rsi + 0x20]
test r12, r12
je 0x140164a94
test byte [r12 + 0x64], 4
jne 0x140164a94
mov di, word [r12 + 0x5e]
xor ebx, ebx
cmp byte [r12 + 0x62], 0
mov edx, dword [r12 + 0x60]
mov word [rsp + 0x6e], di
je 0x140164d51
shr eax, 0xf
xor eax, 1
and eax, 1
mov ebx, eax
jmp 0x140164d51
xor r12d, r12d
mov edx, 1
mov word [rsp + 0x6e], 0
mov bl, 1
mov cl, byte [rsp + 0x38]
mov eax, 1
xor r13d, r13d
mov byte [rsp + 0x57], 0
mov byte [rsp + 0x6d], 0
mov byte [rsp + 0x6c], 0
shl rax, cl
mov qword [rsp + 0x90], rax
movzx eax, dx
mov dword [rsp + 0x9c], eax
cmp dword [rsp + 0x9c], r13d
mov r14d, r13d
jle 0x140164ff2
movzx edx, word [rsi + 0x18]
cmp edx, r13d
jle 0x140164de8
movzx eax, word [rsi + 0x3e]
cmp eax, r14d
jg 0x140164de8
mov r8, qword [rsi + 0x48]
mov r11, qword [r8 + r13*8]
mov ecx, dword [r11 + 0x14]
test word [rsp + 0x58], cx
je 0x140164dc6
xor eax, eax
test cx, 0x180
cmovne ebx, eax
jmp 0x140164fe8
and cl, 1
mov al, 1
je 0x140164dea
mov rcx, qword [r11]
lea rax, [r13 + 1]
cmp edx, eax
jle 0x140164de8
mov r11, qword [r8 + rax*8]
inc rax
cmp qword [r11], rcx
jne 0x140164dd4
xor eax, eax
jmp 0x140164dea
mov al, 1
test r12, r12
je 0x140164e31
mov r8, qword [r12 + 0x38]
mov rcx, qword [r12 + 8]
mov dil, byte [r8 + r13]
mov r8, qword [r12 + 0x18]
movsx rcx, word [rcx + r13*2]
and edi, 1
cmp cx, word [r8 + 0x34]
je 0x140164e33
test bl, bl
movsx r15d, cx
je 0x140164e42
test r15d, r15d
js 0x140164e3b
cmp edx, r14d
jg 0x140164e42
imul rcx, rcx, 0x18
add rcx, qword [r8 + 8]
test byte [rcx + 8], 0xf
jmp 0x140164e3f
xor edi, edi
or r15d, 0xffffffff
test bl, bl
je 0x140164e42
cmp r15d, 0xfffffffe
setne bl
mov rdx, qword [rsp + 0x88]
mov dword [rsp + 0x5c], r13d
mov qword [rsp + 0x60], rdx
xor edx, edx
mov dword [rsp + 0x44], edx
mov ecx, dword [rsp + 0x4c]
cmp dword [rsp + 0x44], ecx
jge 0x140164fcf
test al, al
je 0x140164fcf
mov rax, qword [rsp + 0x30]
mov edx, dword [rsp + 0x44]
bt rax, rdx
jb 0x140164f49
mov rax, qword [rsp + 0x60]
mov rcx, qword [rax]
call fcn.140116ad0
test rax, rax
mov rcx, rax
je 0x140164f49
cmp r15d, 0xffffffff
jl 0x140164eca
mov al, byte [rax]
add eax, 0x59
test al, 0xfd
jne 0x140164ebd
mov eax, dword [rsp + 0x50]
cmp dword [rcx + 0x2c], eax
jne 0x140164ebd
movsx eax, word [rcx + 0x30]
cmp eax, r15d
je 0x140164f12
test byte [rsp + 0x54], 0xc0
setne al
jmp 0x140164f4b
movsxd rax, dword [rsp + 0x5c]
mov r8d, dword [rsp + 0x50]
shl rax, 5
add rax, qword [r12 + 0x50]
mov rdx, qword [rax + 8]
call fcn.140115680
test eax, eax
jne 0x140164ebd
mov rax, qword [rsp + 0x60]
mov rcx, qword [rbp]
mov rdx, qword [rax]
call fcn.140116830
mov rdx, qword [r12 + 0x40]
mov rcx, qword [rax]
mov rdx, qword [rdx + r13*8]
call fcn.140139c40
test eax, eax
je 0x140164f18
jmp 0x140164ebd
cmp r15d, 0xffffffff
jne 0x140164eea
cmp word [rsp + 0x98], 0
je 0x140164f2b
lea eax, [r13 + 1]
mov word [rsi + 0x1e], ax
movsxd rax, dword [rsp + 0x44]
mov rdx, qword [rsp + 0xf8]
shl rax, 5
test byte [rsp + 0x54], 0x40
mov dl, byte [rdx + rax + 0x18]
je 0x140164f5a
jmp 0x140164f96
mov al, 1
inc dword [rsp + 0x44]
add qword [rsp + 0x60], 0x20
jmp 0x140164e5a
mov eax, edx
and eax, 1
cmp byte [rsp + 0x6c], 0
je 0x140164f72
xor dil, byte [rsp + 0x6d]
cmp dil, al
je 0x140164f96
jmp 0x140164fcf
cmp dil, al
je 0x140164f8a
mov rcx, qword [rsp + 0x120]
mov r10, qword [rsp + 0x90]
or qword [rcx], r10
xor edi, eax
mov byte [rsp + 0x6c], 1
mov byte [rsp + 0x6d], dil
and dl, 2
je 0x140164fab
movzx eax, word [rsi + 0x18]
cmp eax, r14d
jne 0x140164fcf
or dword [rsi + 0x38], 0x80000
mov al, byte [rsp + 0x57]
inc r15d
mov dil, 1
mov cl, byte [rsp + 0x44]
cmove eax, edi
mov byte [rsp + 0x57], al
mov eax, 1
shl rax, cl
or qword [rsp + 0x30], rax
jmp 0x140164fe8
cmp dword [rsp + 0x5c], 0
je 0x140164ff0
movzx eax, word [rsp + 0x6e]
mov edi, dword [rsp + 0x5c]
cmp eax, edi
mov al, 0
cmovg ebx, eax
jmp 0x140164ff2
inc r13
jmp 0x140164d81
xor ebx, ebx
or bl, byte [rsp + 0x57]
je 0x14016507f
mov rbx, qword [rsi + 8]
xor r14d, r14d
mov r13d, 1
or qword [rsp + 0x70], rbx
lea rdi, [rbp + 0x258]
mov r12, qword [rsp + 0x70]
not r12
cmp dword [rsp + 0x4c], r14d
mov ebx, r14d
jle 0x14016507d
mov rax, qword [rsp + 0x30]
bt rax, r14
jb 0x140165078
mov rdx, qword [rsp + 0xf8]
mov rax, r14
mov rcx, rdi
shl rax, 5
mov r15, qword [rdx + rax + 8]
mov rdx, r15
call fcn.14014c590
test rax, rax
jne 0x140165073
xor ecx, ecx
mov rdx, r15
call fcn.1401161c0
test eax, eax
je 0x140165078
mov rax, r13
mov ecx, ebx
shl rax, cl
or qword [rsp + 0x30], rax
jmp 0x140165078
test r12, rax
je 0x140165064
inc r14
jmp 0x14016501d
mov bl, 1
inc qword [rsp + 0x38]
jmp 0x140164b05
mov al, 0xff
jmp 0x1401650dd
mov rsi, qword [rsp + 0x80]
cmp qword [rsp + 0x30], rsi
jne 0x1401650a2
mov al, byte [rsp + 0x48]
jmp 0x1401650dd
test bl, bl
mov al, 0xff
jne 0x1401650dd
mov eax, dword [rsp + 0x4c]
mov r8d, 1
dec eax
test eax, eax
jle 0x140164a94
cmp eax, 0x3f
jg 0x1401650dd
mov ecx, eax
mov rdx, r8
shl rdx, cl
mov rcx, qword [rsp + 0x30]
dec rdx
not rcx
test rcx, rdx
je 0x1401650dd
dec eax
jmp 0x1401650b4
add rsp, 0xa8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret