Function at 0x140222e38
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, 0x148
mov rax, qword [0x14036f078]
xor rax, rsp
mov qword [rsp + 0x130], rax
mov rax, qword [rcx]
movzx r14d, r9w
mov rbx, qword [rcx + 0x10]
mov rsi, r8
mov word [rsp + 0x32], r9w
mov r10, rdx
xor r9d, r9d
mov qword [rsp + 0xb0], r8
mov rax, qword [rax]
mov r13, rcx
mov qword [rsp + 0x80], rdx
mov ebp, r9d
mov qword [rsp + 0x98], rcx
mov qword [rsp + 0x60], rax
mov rdi, qword [rax]
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x58], r9
mov qword [rsp + 0x70], r9
cmp dword [rax + 0x30], r9d
je 0x140222ebe
mov eax, dword [rax + 0x18]
jmp 0x14022395c
mov eax, dword [rbx + 0x38]
movzx r15d, word [rbx + 0x18]
movzx r8d, word [rbx + 0x3c]
mov r9d, r15d
mov dword [rsp + 0x6c], eax
and al, 0x20
neg al
mov word [rsp + 0x50], r8w
movzx eax, word [rbx + 0x1a]
mov r8d, dword [r10 + 0x44]
sbb edx, edx
mov word [rsp + 0x4c], ax
and edx, 0xfffffe59
movzx eax, word [rbx + 0x1c]
add edx, 0x1bf
mov ecx, edx
mov word [rsp + 0x4e], ax
movzx eax, word [rbx + 0x3e]
and ecx, 0xffffffc3
test byte [rsi + 0x64], 4
mov word [rsp + 0x52], ax
mov rax, qword [rbx]
cmove ecx, edx
mov rdx, qword [r13 + 8]
mov qword [rsp + 0xa8], rax
movzx eax, word [rbx + 0x16]
mov qword [rsp + 0x28], rsi
mov dword [rsp + 0x20], ecx
lea rcx, [rsp + 0xc0]
mov word [rsp + 0x30], r15w
mov word [rsp + 0x38], ax
mov dword [rsp + 0x90], r15d
call fcn.140226948
xor r9d, r9d
mov qword [rsp + 0xa0], rax
mov word [rbx + 0x12], r9w
mov r12, rax
mov rcx, qword [rsi + 0x10]
movsx rax, word [rcx]
lea ecx, [r9 + 0xa]
mov word [rsp + 0x68], ax
cmp ax, cx
jg 0x140222f82
mov word [rsp + 0x48], r9w
jmp 0x140222f93
mov rcx, rax
call fcn.1401f3bc4
sub ax, 0x21
mov word [rsp + 0x48], ax
mov edx, 2
mov ecx, 0x100
lea r10d, [rdx + 0xe]
lea r8d, [rdx + 1]
lea r11d, [rdx - 1]
test r12, r12
je 0x14022382f
movzx edi, word [r12 + 0x14]
mov eax, dword [r13 + 0x28]
mov word [rsp + 0x4a], di
mov dword [rsp + 0x34], r9d
mov dword [rsp + 0x94], eax
cmp di, cx
je 0x140222fda
test byte [r12 + 0x12], 0x80
je 0x140223022
mov rax, qword [rsi + 8]
movzx ecx, r15w
movsx r8, word [rax + rcx*2]
test r8d, r8d
js 0x14022300d
mov rdx, qword [rsi + 0x18]
lea rcx, [r8 + r8*2]
mov rax, qword [rdx + 8]
test dword [rax + rcx*8 + 8], 0xf
jne 0x1402237d7
mov edx, 2
jmp 0x140223017
cmp r8d, 0xffffffff
je 0x1402237d7
mov ecx, 0x100
mov r8d, 3
mov rax, qword [rbx + 8]
test qword [r12 + 0x28], rax
jne 0x1402237d7
test word [r12 + 0x12], cx
je 0x140223043
cmp di, r10w
je 0x1402237d7
mov r10, qword [rsp + 0x80]
test byte [r10 + 0x3c], 0x58
je 0x14022307d
mov rcx, qword [r12]
test byte [rcx + 4], r8b
je 0x1402237d7
mov eax, dword [r10 + 0x44]
cmp dword [rcx + 0x34], eax
jne 0x1402237d7
test byte [r10 + 0x3c], 0x18
je 0x14022307d
test byte [rcx + 4], dl
jne 0x1402237d7
cmp byte [rsi + 0x62], r9b
je 0x140223098
movzx eax, word [rsi + 0x5e]
sub eax, r11d
movzx ecx, r15w
cmp ecx, eax
jne 0x140223098
or byte [r13 + 0x2c], dl
jmp 0x14022309c
or byte [r13 + 0x2c], r11b
mov eax, dword [rsp + 0x6c]
mov dword [rbx + 0x38], eax
movzx eax, word [rsp + 0x4c]
mov word [rbx + 0x1a], ax
movzx eax, word [rsp + 0x4e]
mov word [rbx + 0x1c], ax
movzx eax, word [rsp + 0x50]
mov word [rbx + 0x18], r15w
mov word [rbx + 0x3c], ax
cmp ax, word [rbx + 0x40]
jb 0x1402230f1
mov rcx, qword [rsp + 0x40]
lea r8d, [r11 + rax]
mov rdx, rbx
call fcn.140224c7c
xor r9d, r9d
lea r11d, [r9 + 1]
test eax, eax
jne 0x14022382a
mov r10, qword [rsp + 0x80]
movzx ecx, word [rbx + 0x3c]
movzx r15d, di
mov rax, qword [rbx + 0x48]
mov qword [rax + rcx*8], r12
movzx edx, word [rbx + 0x3c]
mov rcx, qword [rsp + 0xa8]
add dx, r11w
mov rax, qword [rbx + 8]
mov word [rbx + 0x3c], dx
not rax
or rcx, qword [r12 + 0x28]
and rcx, rax
mov qword [rbx], rcx
and r15w, r11w
je 0x140223235
mov r8, qword [r12]
test dword [r8 + 4], 0x1000
je 0x140223179
movzx ecx, dx
mov r11d, 0x2e
dec ecx
mov dword [rsp + 0x34], r11d
test ecx, ecx
jle 0x14022319a
mov rax, qword [rbx + 0x48]
mov edx, ecx
mov rcx, qword [rax]
test rcx, rcx
je 0x140223168
cmp qword [rcx], r8
cmove r11d, r9d
add rax, 8
sub rdx, 1
jne 0x140223159
mov dword [rsp + 0x34], r11d
jmp 0x14022319a
mov rax, qword [r8 + 0x20]
test rax, rax
je 0x140223195
cmp dword [rax], r9d
je 0x140223195
movsxd rcx, dword [rax]
call fcn.1401f3bc4
movsx r11d, ax
jmp 0x140223172
mov r11d, dword [rsp + 0x34]
test byte [rsi + 0x64], 0x80
je 0x14022322d
movzx edi, word [rsp + 0x48]
mov edx, 0xa
cmp di, dx
jl 0x14022322d
movzx r10d, word [rsp + 0x30]
mov rax, qword [rsi + 0x10]
movzx r9d, word [rax + r10*2]
cmp r11w, dx
jg 0x1402231cc
xor eax, eax
jmp 0x1402231de
movsx rcx, r11w
call fcn.1401f3bc4
sub ax, 0x21
mov edx, 0xa
sub ax, r11w
sub ax, di
add ax, r9w
add ax, dx
jns 0x140223214
mov rdi, qword [rsp + 0x40]
mov eax, 2
cmp r14w, ax
jge 0x140223816
test dword [rdi + 0x60], 0x20000
jne 0x140223816
bts dword [rbx + 0x38], 0x14
xor r9d, r9d
or dword [rbx + 0x38], 4
mov edx, dword [rbx + 0x38]
mov rax, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x70]
jmp 0x1402233ee
movzx r10d, word [rsp + 0x30]
jmp 0x140223217
test dil, 0x82
je 0x1402232d5
mov rax, qword [rsi + 8]
mov ecx, dword [rbx + 0x38]
movzx r10d, word [rsp + 0x30]
or ecx, r11d
movsx r9d, word [rax + r10*2]
mov dword [rbx + 0x38], ecx
cmp r9d, 0xffffffff
je 0x1402232a3
xor ebp, ebp
mov r8d, ecx
mov edx, ecx
test r9d, r9d
js 0x1402232af
test r14w, r14w
jne 0x1402232af
movzx r9d, word [rsi + 0x5e]
mov eax, r9d
sub eax, r11d
lea r11d, [rbp + 1]
cmp r10d, eax
jne 0x1402232af
test byte [rsi + 0x64], 8
jne 0x1402232a3
cmp r9w, r11w
jne 0x14022329d
cmp byte [rsi + 0x62], bpl
je 0x14022329d
lea eax, [rbp + 2]
cmp di, ax
je 0x1402232a3
bts edx, 0x10
jmp 0x1402232a9
mov edx, ecx
bts edx, 0xc
mov r8d, edx
mov dword [rbx + 0x38], edx
cmp byte [rsp + 0xe9], r11b
jbe 0x1402232c3
mov edx, r8d
bts edx, 0x15
mov dword [rbx + 0x38], edx
mov rax, qword [rsp + 0x58]
xor r9d, r9d
mov rcx, qword [rsp + 0x70]
jmp 0x1402233f4
bt di, 8
jae 0x1402232fa
mov edx, dword [rbx + 0x38]
movzx r10d, word [rsp + 0x30]
or edx, 8
mov rax, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x70]
mov dword [rbx + 0x38], edx
jmp 0x1402233f4
mov r9d, dword [rsp + 0x90]
mov r8, rsi
mov edx, dword [r10 + 0x44]
mov rcx, qword [rsp + 0x60]
mov qword [rsp + 0x20], r12
call fcn.1402267a4
mov edx, dword [rbx + 0x38]
xor r9d, r9d
test dil, 0x24
je 0x1402233b7
or edx, 0x22
mov word [rbx + 0x1a], ax
mov eax, 0x100
mov dword [rbx + 0x38], edx
mov qword [rsp + 0x70], r12
mov qword [rsp + 0x58], r9
test word [r12 + 0x12], ax
je 0x1402233a1
movzx r8d, word [rbx + 0x3c]
lea rax, [r12 + 0x38]
mov rdi, qword [rsp + 0x40]
inc r8d
mov rcx, rdi
mov qword [rsp + 0x58], rax
mov rdx, rbx
call fcn.140224c7c
xor r9d, r9d
lea r11d, [r9 + 1]
test eax, eax
jne 0x14022382f
movzx ecx, word [rbx + 0x3c]
mov rax, qword [rbx + 0x48]
mov r8, qword [rsp + 0x58]
mov qword [rax + rcx*8], r8
lea eax, [r9 + 0x10]
add word [rbx + 0x3c], r11w
or dword [rbx + 0x38], eax
mov edx, dword [rbx + 0x38]
mov word [rbx + 0x1c], r11w
jmp 0x1402233a7
mov r11d, 1
movzx r10d, word [rsp + 0x30]
mov rcx, r12
mov rax, qword [rsp + 0x58]
jmp 0x1402233f4
movzx r10d, word [rsp + 0x30]
or edx, 0x12
mov word [rbx + 0x1c], ax
mov rax, r12
mov qword [rsp + 0x58], rax
mov dword [rbx + 0x38], edx
test dl, 0x20
je 0x1402233e6
mov rax, qword [rbx + 0x48]
movzx ecx, word [rbx + 0x3c]
mov rcx, qword [rax + rcx*8 - 0x10]
mov rax, r12
jmp 0x1402233e9
mov rcx, r9
mov qword [rsp + 0x70], rcx
mov r11d, 1
test dl, 2
je 0x140223419
mov r12, qword [rsp + 0x60]
mov r8, rcx
mov rcx, r12
mov qword [rsp + 0x20], rbx
mov r9, rax
mov rdx, r13
call fcn.14022605c
jmp 0x1402236b8
movzx eax, word [rbx + 0x18]
add ax, r11w
movzx r14d, ax
mov word [rbx + 0x18], r14w
movzx edx, word [r12 + 0x10]
mov dword [rsp + 0x78], r14d
test dx, dx
jg 0x140223466
mov rax, qword [rsi + 8]
movzx ecx, r10w
cmp word [rax + rcx*2], r9w
jl 0x140223466
mov r15d, dword [rsp + 0x34]
sub dx, r15w
add word [rbx + 0x16], dx
movzx r14d, word [rsp + 0x32]
mov r12, qword [rsp + 0x60]
jmp 0x1402236bd
mov rdi, r9
mov qword [rsp + 0x88], r9
cmp word [rsp + 0x32], r9w
jne 0x14022367d
cmp dword [rsi + 0x68], r9d
je 0x14022367d
cmp r14d, dword [rsi + 0x6c]
jg 0x14022367d
test r15w, r15w
je 0x1402234a8
mov rax, qword [r12]
test dword [rax + 4], 0x1000
jne 0x14022367d
mov rax, qword [rsp + 0x40]
test dword [rax + 0x60], 0x800
jne 0x14022367d
mov rax, qword [r12]
mov ecx, 0x182
test word [rsp + 0x4a], cx
je 0x1402234f0
mov r8, qword [rax + 0x18]
lea r9, [rsp + 0x88]
mov rcx, qword [rsp + 0x60]
mov rdx, r13
call fcn.14022203c
mov rdi, qword [rsp + 0x88]
jmp 0x140223590
mov r13, qword [rax + 0x20]
mov r11, qword [rsp + 0x98]
mov rax, qword [r11 + 0x10]
mov rcx, qword [rax + 0x20]
mov rcx, qword [rcx + 0x10]
movzx ecx, word [rcx]
call fcn.1401f3d3c
mov r12d, dword [r11 + 0x28]
lea r15, [r13 + 8]
xor ecx, ecx
mov r14, rax
mov eax, ecx
mov esi, ecx
mov ebp, ecx
cmp ebp, dword [r13]
jge 0x140223569
mov r8, qword [r15]
lea r9, [rsp + 0x88]
mov rcx, qword [rsp + 0x60]
mov rdx, r11
mov qword [rsp + 0x88], r14
call fcn.14022203c
mov r11, qword [rsp + 0x98]
inc ebp
add rsi, qword [rsp + 0x88]
add r15, 0x20
mov dword [r11 + 0x28], r12d
test eax, eax
je 0x140223523
jmp 0x140223573
cmp rsi, r14
mov rdi, rsi
cmova rdi, r14
mov rsi, qword [rsp + 0xb0]
mov r14d, dword [rsp + 0x78]
mov r12, qword [rsp + 0xa0]
mov r13, qword [rsp + 0x98]
xor r9d, r9d
cmp eax, 0xc
mov ebp, r9d
cmovne ebp, eax
test ebp, ebp
jne 0x14022381e
test rdi, rdi
je 0x14022367d
lea edx, [rbp + 0x28]
movzx eax, dx
cmp rdi, 8
jae 0x1402235d7
cmp rdi, 2
jae 0x1402235c8
movzx eax, r9w
lea ecx, [rbp + 0xa]
jmp 0x140223617
add ax, 0xfff6
add rdi, rdi
cmp rdi, 8
jb 0x1402235c8
jmp 0x140223601
mov ecx, 0xff
jmp 0x1402235e5
add ax, dx
shr rdi, 4
cmp rdi, rcx
ja 0x1402235de
cmp rdi, 0xf
jbe 0x140223601
mov ecx, 0xa
add ax, cx
shr rdi, 1
cmp rdi, 0xf
ja 0x1402235f5
and edi, 7
lea rcx, [0x1403699c0]
add ax, word [rcx + rdi*2]
mov ecx, 0xa
sub ax, cx
mov r9d, 1
mov word [rbx + 0x16], ax
cmp r14w, r9w
jne 0x140223654
movsx edx, ax
mov rax, qword [rsi + 0x10]
add edx, ecx
movsx ecx, word [rax]
cmp edx, ecx
jle 0x140223654
mov eax, 0x4000
or word [r12 + 0x12], ax
mov eax, 0x2000
test word [r12 + 0x12], ax
je 0x140223654
or byte [r13 + 0x2d], 4
movzx eax, word [rbx + 0x16]
cmp ax, word [rsp + 0x38]
mov r15d, dword [rsp + 0x34]
cmovg ax, word [rsp + 0x38]
movzx r14d, word [rsp + 0x32]
sub ax, r15w
mov r12, qword [rsp + 0x60]
mov word [rbx + 0x16], ax
jmp 0x1402236c3
mov rax, qword [rsi + 0x10]
mov r12, qword [rsp + 0x60]
movzx ecx, r14w
movzx r14d, word [rsp + 0x32]
movzx edx, word [rax + rcx*2]
sub dx, word [rax + rcx*2 - 2]
mov ecx, 0x100
add dx, word [rbx + 0x16]
movzx eax, dx
mov word [rbx + 0x16], dx
test word [rsp + 0x4a], cx
je 0x1402236b8
add ax, 0xa
mov word [rbx + 0x16], ax
mov r15d, dword [rsp + 0x34]
mov r9d, 1
mov eax, dword [rsi + 0x64]
mov ecx, 3
movzx edi, word [rbx + 0x16]
and eax, ecx
lea r10d, [rcx + 0xd]
cmp al, cl
jne 0x1402236df
lea eax, [r10 + rdi]
jmp 0x140223702
mov rcx, qword [rsp + 0x80]
movsx eax, word [rsi + 0x5c]
imul eax, eax, 0xf
mov rcx, qword [rcx + 0x20]
cdq
movsx r8d, word [rcx + 0x3c]
idiv r8d
add ax, di
add ax, r9w
movzx ecx, word [rsp + 0x48]
movzx edx, ax
call fcn.1401f3c24
test dword [rbx + 0x38], 0x4000140
jne 0x140223724
lea edx, [r10 + rdi]
movzx ecx, ax
call fcn.1401f3c24
movzx r8d, word [rsp + 0x68]
add ax, r15w
add ax, r14w
mov rdx, rbx
mov word [rbx + 0x14], ax
lea eax, [r15 + rdi]
add ax, r14w
mov word [rbx + 0x16], ax
mov rcx, qword [r13 + 8]
call fcn.140224abc
mov rdx, rbx
mov rcx, r13
call fcn.1402248d8
mov edx, dword [rbx + 0x38]
mov r8d, 2
movzx ecx, word [rsp + 0x38]
test r8b, dl
mov ebp, eax
cmove cx, di
lea eax, [r8 + 0xe]
mov word [rbx + 0x16], cx
test al, dl
jne 0x1402237bd
movzx ecx, word [rbx + 0x18]
cmp cx, word [rsi + 0x60]
jae 0x1402237bd
lea edx, [rax - 0xd]
cmp cx, word [rsi + 0x5e]
jb 0x140223799
mov eax, dword [rsi + 0x64]
and al, dl
cmp al, r8b
je 0x1402237bd
cmp cx, dx
jbe 0x1402237a6
mov rcx, r12
call fcn.1401fb9ac
mov rdx, qword [rsp + 0x80]
lea r9d, [r14 + r15]
mov r8, rsi
mov rcx, r13
call fcn.140222e38
movzx ecx, word [rsp + 0x38]
mov eax, dword [rsp + 0x94]
movzx r15d, word [rsp + 0x30]
mov word [rbx + 0x16], cx
mov dword [r13 + 0x28], eax
mov rdi, qword [rsp + 0x40]
lea rcx, [rsp + 0xc0]
call fcn.140226a3c
xor r9d, r9d
mov qword [rsp + 0xa0], rax
mov r12, rax
mov ecx, 0x100
lea edx, [r9 + 2]
lea r11d, [r9 + 1]
lea r8d, [r9 + 3]
lea r10d, [r9 + 0x10]
test ebp, ebp
je 0x140222fa9
jmp 0x14022382f
movzx r15d, word [rsp + 0x30]
jmp 0x1402237dc
movzx r14d, word [rsp + 0x32]
mov r11d, 1
mov rdi, qword [rsp + 0x40]
mov rax, qword [rsp + 0xa8]
movzx r15d, word [rsp + 0x30]
movzx r12d, word [rsp + 0x38]
movzx r8d, word [rsp + 0x50]
mov ecx, dword [rsp + 0x6c]
mov qword [rbx], rax
movzx eax, word [rsp + 0x4c]
mov word [rbx + 0x1a], ax
movzx eax, word [rsp + 0x4e]
mov word [rbx + 0x1c], ax
movzx eax, word [rsp + 0x52]
mov word [rbx + 0x18], r15w
mov word [rbx + 0x3e], ax
mov dword [rbx + 0x38], ecx
mov word [rbx + 0x16], r12w
mov word [rbx + 0x3c], r8w
cmp r15w, ax
jne 0x14022395a
movzx ecx, word [rsi + 0x5e]
lea eax, [r15 + 1]
cmp eax, ecx
jae 0x14022395a
cmp r15w, r8w
jne 0x14022395a
test byte [rsi + 0x64], 0x40
jne 0x14022395a
test byte [rsi + 0x64], 0x80
je 0x14022395a
mov eax, 0x4000
test dword [rdi + 0x60], eax
jne 0x14022395a
mov rax, qword [rsi + 0x10]
cmp word [rax + r15*2 + 2], 0x2a
jl 0x14022395a
mov rcx, qword [rsp + 0x40]
add r8d, r11d
mov rdx, rbx
call fcn.140224c7c
xor edx, edx
mov ebp, eax
test eax, eax
jne 0x14022395a
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
mov rcx, r13
add word [rbx + 0x3c], r8w
mov r8, rsi
bts dword [rbx + 0x38], 0xf
mov r9, qword [rsi + 0x10]
mov rdx, qword [rsp + 0x80]
movzx r10d, word [r9 + r15*2]
sub r10w, word [r9 + r15*2 + 2]
sub word [rbx + 0x16], r10w
lea r9d, [r10 + r14]
add r9w, 5
call fcn.140222e38
movzx eax, word [rsp + 0x52]
mov word [rbx + 0x3e], ax
mov eax, dword [rsp + 0x6c]
mov dword [rbx + 0x38], eax
mov word [rbx + 0x16], r12w
mov word [rbx + 0x18], r15w
mov eax, ebp
mov rcx, qword [rsp + 0x130]
xor rcx, rsp
call fcn.1402803d0
add rsp, 0x148
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret