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

Disassembly:
mov word [rsp + 0x10], dx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xb8
movzx ebp, byte [rcx + 0x40]
xor ebx, ebx
mov r14, qword [rcx]
cmp ebp, 2
mov rdi, rcx
mov dword [rsp + 0x5c], ebx
mov word [rsp + 0x40], bx
lea eax, [rbx + 5]
mov word [rsp + 0x118], bx
mov r8, qword [r14]
lea esi, [rbx + 1]
lea r12d, [rbx + 0xa]
mov qword [rsp + 0x78], rbx
cmove r12d, eax
mov qword [rsp + 0xa0], r14
mov rax, qword [rcx + 0x10]
cmp ebp, esi
mov qword [rsp + 0xa8], r8
cmovbe r12d, esi
mov dword [rsp + 0x70], ebp
test rax, rax
je 0x1401964fa
test dx, dx
je 0x1401964fa
mov ecx, dword [rax]
mov dword [rsp + 0x44], ecx
jmp 0x140196500
mov ecx, ebx
mov dword [rsp + 0x44], ebx
lea eax, [rbp + 4]
imul eax, r12d
lea ecx, [rcx + rax*8]
add ecx, ecx
movsxd rdx, ecx
mov rcx, r8
call fcn.140152438
mov qword [rsp + 0x90], rax
test rax, rax
jne 0x14019652e
mov eax, 7
jmp 0x140196c43
xor edx, edx
mov ebx, r12d
shl rbx, 5
mov r13, rax
mov qword [rsp + 0x50], rax
lea r8d, [rdx + 0x20]
lea r15, [rbx + rax]
mov rcx, r15
mov qword [rsp + 0x88], r15
call sub.VCRUNTIME140.dll_memset
mov r8, rbp
lea rcx, [rbx + r15]
shl r8, 3
lea eax, [r12 + r12]
mov rdx, r13
add rdx, 0x18
mov qword [rdx], rcx
sub eax, esi
add rcx, r8
lea rdx, [rdx + 0x20]
test eax, eax
jg 0x14019656d
movsxd rbx, dword [rsp + 0x44]
test ebx, ebx
je 0x140196598
mov r8, rbx
mov qword [rsp + 0x78], rcx
add r8, r8
xor edx, edx
call sub.VCRUNTIME140.dll_memset
mov eax, dword [r14 + 0xc4]
mov ecx, 0x30
cmp eax, ecx
cmovb ecx, eax
xor r14d, r14d
mov word [r15 + 0x10], cx
mov ecx, esi
test ebx, ebx
je 0x1401965c7
or edx, 0xffffffff
movzx eax, bl
test bpl, bpl
cmovne eax, edx
mov byte [r15 + 0x16], al
mov edx, r14d
mov dword [rsp + 0x60], edx
test bpl, bpl
je 0x1401969d4
mov r8, r14
mov qword [rsp + 0x48], r14
mov dword [rsp + 0x58], r14d
mov r9d, r14d
test ecx, ecx
jle 0x140196986
mov eax, ecx
lea rbp, [r15 + 0x10]
mov r15d, dword [rsp + 0x60]
xor r10d, r10d
mov qword [rsp + 0x80], rax
mov r14, qword [rdi + 0x50]
test r14, r14
je 0x140196959
mov al, byte [rbp + 6]
mov r10, qword [rbp - 0x10]
mov byte [rsp + 0x100], al
xor eax, eax
mov qword [rsp + 0x68], rax
mov rax, r10
not rax
test qword [r14], rax
jne 0x140196934
mov r11, qword [r14 + 8]
test r10, r11
jne 0x140196934
mov eax, 0x4000
test dword [r14 + 0x28], eax
je 0x140196659
cmp word [rbp], 3
jl 0x140196934
movzx edx, word [r14 + 0x14]
add dx, word [rbp]
movzx ecx, word [r14 + 0x12]
call fcn.140169488
movzx edx, word [rbp + 4]
movzx ecx, ax
call fcn.140169488
or r11, r10
movzx r13d, ax
movzx eax, word [r14 + 0x16]
xor r10d, r10d
add ax, word [rbp]
mov qword [rsp + 0x98], r11
mov r11b, byte [rsp + 0x100]
mov word [rsp + 0x110], ax
test r11b, r11b
jns 0x14019684a
movzx r9d, word [rdi + 0x3c]
lea rax, [rsp + 0x68]
mov rdx, qword [rdi + 0x10]
lea r8, [rbp - 0x10]
mov qword [rsp + 0x30], rax
mov rcx, rdi
mov qword [rsp + 0x28], r14
mov word [rsp + 0x20], r15w
call fcn.140195ca0
xor r10d, r10d
mov byte [rsp + 0x100], al
test al, al
mov r11b, al
mov rax, qword [rsp + 0x68]
mov qword [rsp + 0x68], rax
jns 0x140196853
movzx edx, r13w
add r13w, 0xfffe
mov r9d, dword [rsp + 0x58]
mov r8d, r10d
mov r10, qword [rsp + 0x50]
mov rcx, r10
test r9d, r9d
jle 0x14019673d
mov r10, qword [rsp + 0x98]
cmp qword [rcx], r10
jne 0x14019672c
mov al, byte [rcx + 0x16]
xor al, r11b
jge 0x1401968fb
add r8d, esi
add rcx, 0x20
cmp r8d, r9d
jl 0x14019671b
mov r10, qword [rsp + 0x50]
cmp r9d, r12d
jl 0x14019675e
cmp dx, word [rsp + 0x40]
jg 0x14019692f
jne 0x14019675e
cmp r13w, word [rsp + 0x118]
jge 0x14019692f
movzx r8d, word [rsp + 0x110]
cmp r9d, r12d
mov eax, r9d
cmovge eax, dword [rsp + 0x5c]
movsxd rbx, eax
lea eax, [r9 + 1]
shl rbx, 5
add rbx, r10
cmp r9d, r12d
cmovge eax, r9d
mov dword [rsp + 0x58], eax
mov rax, qword [rbp - 0x10]
or rax, qword [r14 + 8]
mov rcx, qword [rbx + 0x18]
mov qword [rbx], rax
mov rax, qword [rsp + 0x68]
mov word [rbx + 0x10], r8w
mov r8, qword [rsp + 0x48]
mov qword [rbx + 8], rax
mov word [rbx + 0x12], dx
mov word [rbx + 0x14], r13w
mov byte [rbx + 0x16], r11b
mov rdx, qword [rbp + 8]
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rbx + 0x18]
xor r10d, r10d
mov r8, qword [rsp + 0x48]
mov r9d, dword [rsp + 0x58]
mov r13, qword [rsp + 0x50]
mov qword [r8 + rax], r14
cmp r9d, r12d
jl 0x140196953
movzx r8d, word [r13 + 0x12]
mov ecx, esi
movzx edx, word [r13 + 0x10]
mov word [rsp + 0x40], r8w
mov word [rsp + 0x118], dx
mov dword [rsp + 0x5c], r10d
cmp r12d, esi
jbe 0x140196841
lea rax, [r13 + 0x34]
cmp word [rax - 2], r8w
jg 0x14019681c
jne 0x140196828
cmp word [rax], dx
jle 0x140196828
movzx r8d, word [rax - 2]
movzx edx, word [rax]
mov dword [rsp + 0x5c], ecx
add ecx, esi
add rax, 0x20
cmp ecx, r12d
jl 0x14019680e
mov word [rsp + 0x118], dx
mov word [rsp + 0x40], r8w
mov ebx, dword [rsp + 0x44]
jmp 0x140196937
mov rax, qword [rbp - 8]
mov qword [rsp + 0x68], rax
movsx ecx, r11b
cmp ecx, ebx
jge 0x1401966f5
mov rax, qword [rsp + 0x78]
movsx r11, r11b
movzx r9d, word [rax + r11*2]
test r9w, r9w
jne 0x1401968de
movzx r10d, word [rsp + 0x108]
mov eax, ebx
sub eax, ecx
imul eax, eax, 0x64
cdq
idiv ebx
movsxd rcx, eax
call fcn.140169424
movzx r9d, ax
mov ecx, 0x4000
movzx eax, r10w
add r9w, ax
test word [rdi + 0x3c], cx
je 0x1401968af
cmp word [rdi + 0x3e], ax
cmovl r10w, word [rdi + 0x3e]
mov eax, 0xa
cmp r10w, ax
jle 0x1401968cc
movsx rcx, r10w
call fcn.140169424
sub r9w, 0x21
add r9w, ax
mov rax, qword [rsp + 0x78]
sub r9w, 0x32
xor r10d, r10d
mov word [rax + r11*2], r9w
movzx edx, r9w
movzx ecx, r13w
call fcn.140169488
mov r11b, byte [rsp + 0x100]
lea edx, [rax + 5]
jmp 0x1401966fe
cmp word [rcx + 0x12], dx
jl 0x14019692f
movzx r8d, word [rsp + 0x110]
mov rbx, rcx
jne 0x14019678b
cmp word [rcx + 0x10], r8w
jl 0x14019692b
jne 0x14019678b
cmp word [rcx + 0x14], r13w
jg 0x14019678b
mov ebx, dword [rsp + 0x44]
mov r13, qword [rsp + 0x50]
xor r10d, r10d
mov r8, qword [rsp + 0x48]
mov r14, qword [r14 + 0x40]
test r14, r14
jne 0x140196612
mov rax, qword [rsp + 0x80]
jmp 0x14019695e
mov ebx, dword [rsp + 0x44]
jmp 0x14019693c
mov r8, qword [rsp + 0x48]
add rbp, 0x20
sub rax, rsi
mov qword [rsp + 0x80], rax
jne 0x140196605
mov ebp, dword [rsp + 0x70]
xor r14d, r14d
mov r15, qword [rsp + 0x88]
mov edx, dword [rsp + 0x60]
mov rax, r13
mov qword [rsp + 0x50], r15
add edx, esi
mov qword [rsp + 0x88], rax
add r8, 8
mov dword [rsp + 0x60], edx
mov qword [rsp + 0x48], r8
mov r13, r15
mov r15, rax
mov ecx, r9d
cmp edx, ebp
jl 0x1401965df
test r9d, r9d
jne 0x1401969d4
mov rcx, qword [rsp + 0xa0]
lea rdx, str.no_query_solution
call fcn.140154378
jmp 0x140196c2c
movsxd rax, ecx
mov rbx, r15
mov edx, esi
cmp rax, rsi
jle 0x140196a07
lea rcx, [r15 + 0x32]
lea r8, [rax - 1]
movzx eax, word [rcx]
cmp word [rbx + 0x12], ax
jle 0x1401969fc
movsxd rbx, edx
shl rbx, 5
add rbx, r15
add edx, esi
add rcx, 0x20
sub r8, rsi
jne 0x1401969e9
test bpl, bpl
je 0x140196a4a
mov r8, r14
mov r9d, ebp
lea rdx, [rdi + 0x3cc]
mov rax, qword [rbx + 0x18]
mov rcx, qword [r8 + rax]
lea r8, [r8 + 8]
mov qword [rdx + 0x1c], rcx
movzx eax, byte [rcx + 0x10]
imul rcx, rax, 0x70
mov byte [rdx], al
lea rdx, [rdx + 0x60]
mov rax, qword [rdi + 8]
mov ecx, dword [rcx + rax + 0x4c]
mov dword [rdx - 0x90], ecx
sub r9, rsi
jne 0x140196a19
movzx eax, word [rdi + 0x3c]
mov ecx, 0x180
and ax, cx
mov ecx, 0x100
cmp ax, cx
jne 0x140196abf
cmp byte [rdi + 0x43], r14b
jne 0x140196abf
cmp word [rsp + 0x108], r14w
je 0x140196abf
mov rax, qword [rbx + 0x18]
lea r8, [rsp + 0x100]
mov qword [rsp + 0x30], r8
movzx edx, bp
sub dx, si
movzx ecx, bpl
mov r9d, 0x80
mov r8, rbx
mov rax, qword [rax + rcx*8 - 8]
mov rcx, rdi
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], dx
mov rdx, qword [rdi + 0x18]
call fcn.140195ca0
movsx ecx, al
mov rax, qword [rdi + 0x18]
cmp ecx, dword [rax]
jne 0x140196abf
mov byte [rdi + 0x43], 2
mov r8d, dword [rdi + 0x44]
mov r10, qword [rdi + 0x10]
and r8d, 0xfffffffb
mov dword [rdi + 0x44], r8d
test r10, r10
je 0x140196c21
movzx ecx, word [rdi + 0x3c]
movsx r9d, byte [rbx + 0x16]
test cl, cl
jns 0x140196af9
cmp r9d, dword [r10]
jne 0x140196aee
mov byte [rdi + 0x43], 2
movzx eax, cx
mov rdx, r10
jmp 0x140196bb5
mov byte [rdi + 0x41], r9b
mov rdx, r10
mov rax, qword [rbx + 8]
mov qword [rdi + 0x60], rax
test r9b, r9b
jg 0x140196b9b
mov byte [rdi + 0x41], r14b
test bpl, bpl
je 0x140196b95
mov rax, qword [rbx + 0x18]
movzx ecx, bpl
mov r11, qword [rax + rcx*8 - 8]
mov ecx, 0x104
mov eax, dword [r11 + 0x28]
and eax, ecx
cmp eax, ecx
setne cl
bt dword [r11 + 0x28], 0xc
setae al
test al, cl
je 0x140196b95
movzx eax, bp
mov qword [rsp + 0x100], r14
lea rcx, [rsp + 0x100]
sub ax, si
mov qword [rsp + 0x30], rcx
mov r9d, 0x800
mov qword [rsp + 0x28], r11
mov rcx, rdi
mov r8, rbx
mov word [rsp + 0x20], ax
call fcn.140195ca0
mov rdx, qword [rdi + 0x10]
movsx ecx, al
cmp ecx, dword [rdx]
jne 0x140196b95
mov rax, qword [rsp + 0x100]
or dword [rdi + 0x44], 4
mov qword [rdi + 0x60], rax
movzx eax, word [rdi + 0x3c]
jmp 0x140196bb5
movzx eax, cx
test bpl, bpl
je 0x140196bb5
cmp r9b, sil
jne 0x140196bb5
test cl, 3
je 0x140196bb5
or r8d, 4
mov dword [rdi + 0x44], r8d
bt ax, 9
jae 0x140196c21
movsx eax, byte [rdi + 0x41]
cmp eax, dword [rdx]
jne 0x140196c21
test bpl, bpl
je 0x140196c21
mov rax, qword [rbx + 0x18]
lea r8, [rsp + 0x100]
mov qword [rsp + 0x30], r8
xor r9d, r9d
movzx ecx, bpl
mov r8, rbx
sub bp, si
mov qword [rsp + 0x100], r14
mov rax, qword [rax + rcx*8 - 8]
mov rcx, rdi
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], bp
call fcn.140195ca0
movsx edx, al
mov rax, qword [rdi + 0x10]
cmp edx, dword [rax]
jne 0x140196c21
mov rax, qword [rsp + 0x100]
or dword [rdi + 0x44], 8
mov qword [rdi + 0x60], rax
movzx eax, word [rbx + 0x10]
mov esi, r14d
mov word [rdi + 0x48], ax
mov rdx, qword [rsp + 0x90]
mov rcx, qword [rsp + 0xa8]
call fcn.140152380
mov eax, esi
add rsp, 0xb8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret