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

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x138
mov rax, qword [0x140144080]
xor rax, rsp
mov qword [rsp + 0x120], rax
mov rax, qword [rcx]
mov r10, rcx
mov word [rsp + 0x30], r9w
mov r15, r8
xor r9d, r9d
mov qword [rsp + 0x60], rcx
mov r8, rdx
mov qword [rsp + 0x58], rdx
mov rax, qword [rax]
mov esi, r9d
mov rbx, qword [r10 + 0x10]
mov ebp, r9d
mov qword [rsp + 0x88], rax
mov r14d, r9d
mov dword [rsp + 0x48], r9d
mov rcx, qword [rax]
mov qword [rsp + 0x68], rcx
mov qword [rsp + 0xa0], rbx
cmp dword [rax + 0x30], r9d
je 0x14009aa70
mov eax, dword [rax + 0x18]
jmp 0x14009b481
mov eax, dword [rbx + 0x38]
mov edi, 0x100
mov dword [rsp + 0x4c], eax
mov r11d, 2
and al, 0x20
neg al
sbb ecx, ecx
and ecx, 0xfffffe59
add ecx, 0x1bf
test dword [r15 + 0x64], 0x104
je 0x14009aabf
mov edx, ecx
and edx, 0xffffffc3
test byte [r15 + 0x64], 4
cmove edx, ecx
mov ecx, edx
test dword [r15 + 0x64], edi
je 0x14009aabf
test byte [r8 + 0x40], r11b
jne 0x14009aabf
and ecx, 0xffffff7c
movzx eax, word [rbx + 0x1a]
movzx edx, word [rbx + 0x3c]
movzx r12d, word [rbx + 0x18]
mov r8d, dword [r8 + 0x44]
mov r9d, r12d
mov word [rsp + 0x38], ax
movzx eax, word [rbx + 0x1c]
mov word [rsp + 0x3a], ax
movzx eax, word [rbx + 0x3e]
mov word [rsp + 0x42], ax
mov rax, qword [rbx]
mov qword [rsp + 0x90], rax
movzx eax, word [rbx + 0x16]
mov word [rsp + 0x3c], dx
mov rdx, qword [r10 + 8]
mov qword [rsp + 0x28], r15
mov dword [rsp + 0x20], ecx
lea rcx, [rsp + 0xb0]
mov word [rsp + 0x32], ax
mov word [rsp + 0x3e], r12w
call fcn.140098c68
xor r9d, r9d
mov qword [rsp + 0x78], rax
mov word [rbx + 0x12], r9w
mov rdi, rax
mov rcx, qword [r15 + 0x10]
movsx rax, word [rcx]
lea ecx, [r9 + 0xa]
mov word [rsp + 0x40], ax
cmp ax, cx
jg 0x14009ab51
mov word [rsp + 0x36], r9w
jmp 0x14009ab62
mov rcx, rax
call fcn.14002fcc8
sub ax, 0x21
mov word [rsp + 0x36], ax
mov edx, 3
lea r8d, [rdx + 0xd]
lea r10d, [rdx - 2]
test rdi, rdi
je 0x14009b350
movzx r11d, word [rdi + 0x14]
mov ecx, 0x100
mov word [rsp + 0x34], r11w
mov r13d, r9d
mov dword [rsp + 0x70], r9d
cmp r11w, cx
je 0x14009ab9c
test byte [rdi + 0x12], 0x80
je 0x14009abe4
mov rax, qword [r15 + 8]
movzx ecx, r12w
movsx r8, word [rax + rcx*2]
test r8d, r8d
js 0x14009abcf
mov rdx, qword [r15 + 0x18]
lea rcx, [r8 + r8*2]
mov rax, qword [rdx + 8]
test dword [rax + rcx*8 + 8], 0xf
jne 0x14009b31c
mov edx, 3
jmp 0x14009abd9
cmp r8d, 0xffffffff
je 0x14009b31c
mov ecx, 0x100
mov r8d, 0x10
mov rax, qword [rbx + 8]
test qword [rdi + 0x28], rax
jne 0x14009b31c
test word [rdi + 0x12], cx
je 0x14009ac02
cmp r11w, r8w
je 0x14009b31c
mov r8, qword [rsp + 0x58]
test byte [r8 + 0x3c], 0x58
je 0x14009ac3e
mov rcx, qword [rdi]
test byte [rcx + 4], dl
je 0x14009b31c
mov eax, dword [r8 + 0x44]
cmp dword [rcx + 0x34], eax
jne 0x14009b31c
test byte [r8 + 0x3c], 0x18
mov edx, 2
je 0x14009ac43
test byte [rcx + 4], dl
jne 0x14009b31c
jmp 0x14009ac43
mov edx, 2
cmp byte [r15 + 0x62], r9b
je 0x14009ac63
movzx eax, word [r15 + 0x5e]
sub eax, r10d
movzx ecx, r12w
cmp ecx, eax
jne 0x14009ac63
mov rax, qword [rsp + 0x60]
or byte [rax + 0x20], dl
jmp 0x14009ac6c
mov rax, qword [rsp + 0x60]
or byte [rax + 0x20], r10b
mov eax, dword [rsp + 0x4c]
mov dword [rbx + 0x38], eax
movzx eax, word [rsp + 0x38]
mov word [rbx + 0x1a], ax
movzx eax, word [rsp + 0x3a]
mov word [rbx + 0x1c], ax
movzx eax, word [rsp + 0x3c]
mov word [rbx + 0x18], r12w
mov word [rbx + 0x3c], ax
cmp ax, word [rbx + 0x40]
jb 0x14009acc4
mov rcx, qword [rsp + 0x68]
lea r8d, [r10 + rax]
mov rdx, rbx
call fcn.14009a2e4
xor r9d, r9d
lea r10d, [r9 + 1]
test eax, eax
jne 0x14009b350
movzx r11d, word [rsp + 0x34]
mov r8, qword [rsp + 0x58]
movzx ecx, word [rbx + 0x3c]
mov rax, qword [rbx + 0x48]
mov qword [rax + rcx*8], rdi
movzx edx, word [rbx + 0x3c]
mov rcx, qword [rsp + 0x90]
add dx, r10w
mov rax, qword [rbx + 8]
mov word [rbx + 0x3c], dx
not rax
or rcx, qword [rdi + 0x28]
and rcx, rax
mov qword [rbx], rcx
test r10b, r11b
je 0x14009addc
mov r8, qword [rdi]
test dword [r8 + 4], 0x1000
je 0x14009ad3a
movzx ecx, dx
mov r13d, 0x2e
dec ecx
test ecx, ecx
jle 0x14009ad54
mov rax, qword [rbx + 0x48]
mov edx, ecx
mov rcx, qword [rax]
test rcx, rcx
je 0x14009ad2f
cmp qword [rcx], r8
cmove r13d, r9d
add rax, 8
sub rdx, r10
jne 0x14009ad20
jmp 0x14009ad54
mov rax, qword [r8 + 0x20]
test rax, rax
je 0x14009ad54
cmp dword [rax], r9d
je 0x14009ad54
movsxd rcx, dword [rax]
call fcn.14002fcc8
movsx r13d, ax
test byte [r15 + 0x64], 0x80
je 0x14009adcc
movzx r10d, word [rsp + 0x36]
mov edx, 0xa
cmp r10w, dx
jl 0x14009adcc
mov rax, qword [r15 + 0x10]
movzx ecx, r12w
movzx r9d, word [rax + rcx*2]
cmp r13w, dx
jg 0x14009ad86
xor edx, edx
movzx eax, dx
jmp 0x14009ad93
movsx rcx, r13w
call fcn.14002fcc8
sub ax, 0x21
sub ax, r13w
sub ax, r10w
add ax, r9w
add ax, 0xa
jns 0x14009adcc
mov eax, 2
cmp word [rsp + 0x30], ax
jge 0x14009b31c
mov rax, qword [rsp + 0x68]
test dword [rax + 0x60], 0x20000
jne 0x14009b31c
bts dword [rbx + 0x38], 0x14
or dword [rbx + 0x38], 4
mov r10d, dword [rbx + 0x38]
xor r9d, r9d
jmp 0x14009b0e1
test r11b, 0x82
je 0x14009ae84
mov rax, qword [r15 + 8]
movzx ecx, r12w
movsx r8d, word [rax + rcx*2]
mov ecx, dword [rbx + 0x38]
or ecx, r10d
mov dword [rbx + 0x38], ecx
cmp r8d, 0xffffffff
je 0x14009ae51
mov edx, ecx
mov r10d, ecx
test r8d, r8d
js 0x14009ae60
cmp word [rsp + 0x30], r9w
jne 0x14009ae60
movzx r8d, word [r15 + 0x5e]
mov esi, 1
mov eax, r8d
movzx r9d, r12w
sub eax, esi
cmp r9d, eax
jne 0x14009ae60
test byte [r15 + 0x64], 8
jne 0x14009ae51
cmp r8w, si
jne 0x14009ae4a
xor edx, edx
cmp byte [r15 + 0x62], dl
je 0x14009ae4a
lea eax, [rsi + 1]
cmp r11w, ax
je 0x14009ae51
bts r10d, 0x10
jmp 0x14009ae59
mov r10d, ecx
bts r10d, 0xc
mov edx, r10d
mov dword [rbx + 0x38], r10d
mov esi, 1
cmp byte [rsp + 0xd9], sil
jbe 0x14009b0b2
mov r10d, edx
bts r10d, 0x15
mov dword [rbx + 0x38], r10d
jmp 0x14009b0b2
bt r11w, 8
jae 0x14009ae95
or dword [rbx + 0x38], 8
jmp 0x14009add0
mov rcx, qword [rdi]
mov r9d, dword [r8 + 0x44]
mov dword [rsp + 0x50], r9d
mov rcx, qword [rcx + 0x10]
call fcn.14005bac8
movzx ecx, word [r15 + 0x60]
mov edx, r10d
movzx r8d, r12w
mov r14, r10
sub ecx, r8d
mov dword [rsp + 0x44], edx
cmp eax, ecx
cmovl ecx, eax
movsxd rax, ecx
mov qword [rsp + 0x98], rax
cmp rax, r10
jle 0x14009b03b
mov r12d, r8d
lea r13, [r8*8 + 8]
lea r8, [r8*2 + 2]
mov esi, 0x20
mov qword [rsp + 0x80], r8
mov ebx, r10d
mov rdx, qword [rdi]
mov rax, qword [rdx + 0x10]
mov rcx, qword [rax + 0x20]
mov rax, qword [rdx + 0x18]
mov rdi, qword [rcx + rsi + 8]
test dword [rax + 4], 0x1000
mov rcx, qword [rax + 0x20]
je 0x14009af28
mov rax, qword [rcx + 0x20]
mov rbp, qword [rax + rsi + 8]
jmp 0x14009af2d
mov rbp, qword [rsi + rcx + 8]
cmp byte [rdi], 0xa7
jne 0x14009b011
cmp dword [rdi + 0x2c], r9d
jne 0x14009b011
mov rax, qword [r15 + 8]
movzx ecx, word [r8 + rax]
cmp word [rdi + 0x30], cx
jne 0x14009b011
mov rax, qword [r15 + 0x38]
lea rcx, [rax + r12]
mov al, byte [rax + r12]
cmp byte [rcx + r14], al
jne 0x14009b011
mov rcx, rdi
call fcn.14005b458
mov dl, al
mov rcx, rbp
call fcn.14005b8d0
movsx rcx, word [rdi + 0x30]
test cx, cx
js 0x14009af9f
mov r8, qword [r15 + 0x18]
cmp cx, word [r8 + 0x36]
jge 0x14009af9f
lea rdx, [rcx + rcx*2]
mov rcx, qword [r8 + 8]
mov r8b, byte [rcx + rdx*8 + 0xc]
jmp 0x14009afa2
mov r8b, 0x44
cmp al, r8b
jne 0x14009b011
mov rcx, qword [rsp + 0x88]
mov r8, rbp
mov rdx, rdi
call fcn.14005b998
test rax, rax
je 0x14009b011
mov rdx, qword [r15 + 0x40]
mov rcx, qword [rax]
mov rdx, qword [rdx + r13]
call fcn.14002e3dc
test eax, eax
jne 0x14009b011
mov r8, qword [rsp + 0x80]
mov eax, 1
mov r9d, dword [rsp + 0x50]
add r8, 2
mov rdi, qword [rsp + 0x78]
add ebx, eax
add r14, rax
mov qword [rsp + 0x80], r8
add r13, 8
add rsi, 0x20
cmp r14, qword [rsp + 0x98]
jl 0x14009aefc
mov rdi, qword [rsp + 0x78]
mov esi, dword [rsp + 0x48]
movzx r11d, word [rsp + 0x34]
movzx r12d, word [rsp + 0x3e]
mov r13d, dword [rsp + 0x70]
mov dword [rsp + 0x44], ebx
mov edx, dword [rsp + 0x44]
mov rbx, qword [rsp + 0xa0]
mov r10d, dword [rbx + 0x38]
test r11b, 0x24
je 0x14009b0b7
xor eax, eax
mov word [rbx + 0x1a], dx
or r10d, 0x22
mov ebp, eax
mov eax, 0x100
mov dword [rbx + 0x38], r10d
mov r14, rdi
test word [rdi + 0x12], ax
je 0x14009b0ad
movzx r8d, word [rbx + 0x3c]
lea rbp, [rdi + 0x38]
mov rcx, qword [rsp + 0x68]
inc r8d
mov rdx, rbx
call fcn.14009a2e4
test eax, eax
jne 0x14009b34a
movzx ecx, word [rbx + 0x3c]
mov esi, 1
mov rax, qword [rbx + 0x48]
movzx r11d, word [rsp + 0x34]
mov qword [rax + rcx*8], rbp
add word [rbx + 0x3c], si
or dword [rbx + 0x38], 0x10
mov r10d, dword [rbx + 0x38]
mov word [rbx + 0x1c], si
jmp 0x14009b0b2
mov esi, 1
xor r9d, r9d
jmp 0x14009b0e6
or r10d, 0x12
mov word [rbx + 0x1c], dx
xor r9d, r9d
mov dword [rbx + 0x38], r10d
mov rbp, rdi
test r10b, 0x20
je 0x14009b0de
movzx ecx, word [rbx + 0x3c]
mov rax, qword [rbx + 0x48]
mov r14, qword [rax + rcx*8 - 0x10]
jmp 0x14009b0e1
mov r14, r9
mov esi, 1
mov eax, 2
test al, r10b
je 0x14009b182
movsx ecx, word [rbx + 0x16]
mov edx, ecx
test r14, r14
je 0x14009b118
cmp word [r14 + 0x10], r9w
jg 0x14009b10d
add cx, word [r14 + 0x10]
jmp 0x14009b118
test byte [r14 + 0x12], 0x80
jne 0x14009b118
add cx, 0xffec
test rbp, rbp
je 0x14009b135
movzx eax, word [rbp + 0x10]
test ax, ax
jg 0x14009b12b
add cx, ax
jmp 0x14009b135
test byte [rbp + 0x12], 0x80
jne 0x14009b135
sub cx, 0x14
test r14, r14
je 0x14009b151
cmp word [r14 + 0x10], r9w
jle 0x14009b151
test rbp, rbp
je 0x14009b151
cmp word [rbp + 0x10], r9w
jle 0x14009b151
sub cx, 0x14
test r14, r14
mov eax, r9d
setne al
sub edx, eax
mov eax, r9d
test rbp, rbp
setne al
sub edx, eax
mov eax, 0xa
cmp cx, ax
jge 0x14009b173
mov ecx, eax
movzx edi, cx
cmp edi, edx
cmovge di, dx
mov word [rbx + 0x16], di
jmp 0x14009b1eb
movzx r8d, word [rbx + 0x18]
add r8w, si
mov word [rbx + 0x18], r8w
movzx edx, word [rdi + 0x10]
test dx, dx
jg 0x14009b1b9
mov rax, qword [r15 + 8]
movzx ecx, r12w
cmp word [rax + rcx*2], r9w
jl 0x14009b1b9
sub dx, r13w
add dx, word [rbx + 0x16]
mov word [rbx + 0x16], dx
movzx edi, dx
jmp 0x14009b1eb
mov rax, qword [r15 + 0x10]
movzx ecx, r8w
movzx edx, word [rax + rcx*2]
sub dx, word [rax + rcx*2 - 2]
add dx, word [rbx + 0x16]
bt r11w, 8
mov word [rbx + 0x16], dx
movzx eax, dx
movzx edi, dx
jae 0x14009b1eb
add ax, 0xa
mov word [rbx + 0x16], ax
movzx edi, ax
mov eax, dword [r15 + 0x64]
mov ecx, 3
mov r11d, 0x10
and eax, ecx
add r11d, edi
cmp al, cl
jne 0x14009b209
movzx eax, r11w
jmp 0x14009b229
mov rcx, qword [rsp + 0x58]
movsx eax, word [r15 + 0x5c]
imul eax, eax, 0xf
mov rcx, qword [rcx + 0x20]
cdq
movsx r8d, word [rcx + 0x3c]
idiv r8d
add ax, di
add ax, si
movzx ecx, word [rsp + 0x36]
movzx edx, ax
call fcn.14002fc50
test r10d, 0x4000140
jne 0x14009b24b
movzx edx, r11w
movzx ecx, ax
call fcn.14002fc50
mov rsi, qword [rsp + 0x60]
add ax, r13w
add ax, word [rsp + 0x30]
mov rdx, rbx
movzx r8d, word [rsp + 0x40]
mov word [rbx + 0x14], ax
lea eax, [rdi + r13]
add ax, word [rsp + 0x30]
mov word [rbx + 0x16], ax
mov rcx, qword [rsi + 8]
call fcn.14009a81c
mov rdx, rbx
mov rcx, rsi
call fcn.14009a594
mov edx, dword [rbx + 0x38]
mov r8d, 2
movzx ecx, word [rsp + 0x32]
test r8b, dl
mov esi, eax
mov dword [rsp + 0x48], eax
cmove cx, di
lea eax, [r8 + 0xe]
mov word [rbx + 0x16], cx
test al, dl
jne 0x14009b313
movzx ecx, word [rbx + 0x18]
cmp cx, word [r15 + 0x60]
jae 0x14009b313
lea edx, [rax - 0xd]
cmp cx, word [r15 + 0x5e]
jb 0x14009b2ce
mov eax, dword [r15 + 0x64]
and al, dl
cmp al, r8b
je 0x14009b313
cmp cx, dx
jbe 0x14009b2f7
mov rdx, qword [rsp + 0x88]
mov rax, qword [rdx]
mov ecx, dword [rax + 0x188]
test ecx, ecx
je 0x14009b2f7
mov eax, 1
mov dword [rdx + 0x18], 9
add dword [rdx + 0x30], eax
add r13w, word [rsp + 0x30]
mov r8, r15
mov rdx, qword [rsp + 0x58]
movzx r9d, r13w
mov rcx, qword [rsp + 0x60]
call fcn.14009a9f0
movzx ecx, word [rsp + 0x32]
mov word [rbx + 0x16], cx
lea rcx, [rsp + 0xb0]
call fcn.1400989e0
xor r9d, r9d
mov qword [rsp + 0x78], rax
mov rdi, rax
lea edx, [r9 + 3]
lea r10d, [r9 + 1]
lea r8d, [r9 + 0x10]
test esi, esi
je 0x14009ab6f
jmp 0x14009b350
mov r10d, 1
mov rax, qword [rsp + 0x90]
movzx r14d, word [rsp + 0x42]
movzx edx, word [rsp + 0x3c]
mov ebp, dword [rsp + 0x4c]
mov qword [rbx], rax
movzx eax, word [rsp + 0x38]
mov word [rbx + 0x1a], ax
movzx eax, word [rsp + 0x3a]
mov word [rbx + 0x1c], ax
movzx eax, word [rsp + 0x32]
mov word [rbx + 0x16], ax
mov word [rbx + 0x18], r12w
mov word [rbx + 0x3e], r14w
mov dword [rbx + 0x38], ebp
mov word [rbx + 0x3c], dx
cmp r12w, r14w
jne 0x14009b47f
movzx ecx, word [r15 + 0x5e]
movzx r13d, r12w
lea eax, [r13 + 1]
cmp eax, ecx
jae 0x14009b47f
cmp r12w, dx
jne 0x14009b47f
test byte [r15 + 0x64], 0x40
jne 0x14009b47f
test byte [r15 + 0x64], 0x80
je 0x14009b47f
mov rcx, qword [rsp + 0x68]
test dword [rcx + 0x60], 0x4000
jne 0x14009b47f
mov rax, qword [r15 + 0x10]
cmp word [rax + r13*2 + 2], 0x2a
jl 0x14009b47f
lea r8d, [r10 + rdx]
mov rdx, rbx
call fcn.14009a2e4
xor edx, edx
mov esi, eax
test eax, eax
jne 0x14009b47f
movzx ecx, word [rbx + 0x3c]
lea r8d, [rax + 1]
add word [rbx + 0x18], r8w
add word [rbx + 0x3e], r8w
mov rax, qword [rbx + 0x48]
mov qword [rax + rcx*8], rdx
add word [rbx + 0x3c], r8w
mov r8, r15
bts dword [rbx + 0x38], 0xf
mov r9, qword [r15 + 0x10]
mov rdx, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x60]
movzx eax, r12w
movzx r10d, word [r9 + rax*2]
sub r10w, word [r9 + r13*2 + 2]
movzx r9d, word [rsp + 0x30]
sub word [rbx + 0x16], r10w
add r9w, 5
add r9w, r10w
call fcn.14009a9f0
movzx eax, word [rsp + 0x32]
mov word [rbx + 0x16], ax
mov word [rbx + 0x18], r12w
mov word [rbx + 0x3e], r14w
mov dword [rbx + 0x38], ebp
mov eax, esi
mov rcx, qword [rsp + 0x120]
xor rcx, rsp
call fcn.1400e4680
add rsp, 0x138
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret