Function at 0x14006e864
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
mov rax, qword [rcx]
movzx ebp, byte [rcx + 0x40]
xor ebx, ebx
mov r8, qword [rax]
cmp ebp, 2
mov qword [rsp + 0x90], rax
lea eax, [rbx + 5]
lea esi, [rbx + 1]
lea r12d, [rbx + 0xa]
cmove r12d, eax
mov rax, qword [rcx + 0x10]
cmp ebp, esi
cmovle r12d, esi
movzx r15d, dx
mov rdi, rcx
mov dword [rsp + 0x50], ebx
mov word [rsp + 0x44], bx
mov word [rsp + 0x46], bx
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0xa0], r8
mov dword [rsp + 0x70], ebp
test rax, rax
je 0x14006e8e3
test dx, dx
je 0x14006e8e3
mov ecx, dword [rax]
mov dword [rsp + 0x40], ecx
jmp 0x14006e8e9
mov ecx, ebx
mov dword [rsp + 0x40], ebx
lea eax, [rbp + 4]
imul eax, r12d
lea ecx, [rcx + rax*8]
add ecx, ecx
movsxd rdx, ecx
mov rcx, r8
call fcn.140003da8
mov qword [rsp + 0x80], rax
test rax, rax
jne 0x14006e917
mov eax, 7
jmp 0x14006eff4
xor edx, edx
movsxd rbx, r12d
mov r14, rax
shl rbx, 5
lea r8d, [rdx + 0x20]
mov qword [rsp + 0x68], rax
lea r13, [rbx + rax]
mov rcx, r13
mov qword [rsp + 0x78], r13
call fcn.1400a2620
lea eax, [r12 + r12]
xor r11d, r11d
lea rcx, [rbx + r13]
test eax, eax
jle 0x14006e96a
mov r8, rbp
mov rdx, r14
shl r8, 3
add rdx, 0x18
mov qword [rdx], rcx
sub eax, esi
add rdx, 0x20
add rcx, r8
test eax, eax
jg 0x14006e95a
movsxd rbx, dword [rsp + 0x40]
test ebx, ebx
je 0x14006e988
mov r8, rbx
xor edx, edx
mov qword [rsp + 0x60], rcx
add r8, r8
call fcn.1400a2620
xor r11d, r11d
mov rax, qword [rsp + 0x90]
mov ecx, 0x30
mov eax, dword [rax + 0xc0]
cmp eax, ecx
cmovb ecx, eax
mov word [r13 + 0x10], cx
mov ecx, esi
test ebx, ebx
je 0x14006e9ba
or edx, 0xffffffff
movzx eax, bl
test ebp, ebp
cmovg eax, edx
mov byte [r13 + 0x16], al
mov edx, r11d
mov r10d, 0x100
mov dword [rsp + 0x54], edx
test ebp, ebp
jle 0x14006edbe
mov r8, r11
mov qword [rsp + 0x48], r11
mov r9d, 0x4000
mov r15d, r11d
test ecx, ecx
jle 0x14006ed64
mov eax, ecx
lea rbp, [r13 + 0x10]
mov r13, qword [rsp + 0x68]
mov qword [rsp + 0x88], rax
mov r14, qword [rdi + 0x58]
test r14, r14
je 0x14006ed3d
mov al, byte [rbp + 6]
mov r10, qword [rbp - 0x10]
mov qword [rsp + 0x58], r11
mov byte [rsp + 0x100], al
mov rax, r10
not rax
test qword [r14], rax
jne 0x14006ed28
mov r11, qword [r14 + 8]
test r10, r11
jne 0x14006ed25
test dword [r14 + 0x28], r9d
je 0x14006ea48
cmp word [rbp], 3
jl 0x14006ed25
movzx edx, word [r14 + 0x14]
movzx ecx, word [r14 + 0x12]
add dx, word [rbp]
call fcn.14000748c
movzx edx, word [rbp + 4]
movzx ecx, ax
call fcn.14000748c
or r11, r10
mov r10b, byte [rsp + 0x100]
movzx r8d, ax
mov word [rsp + 0x110], ax
movzx eax, word [r14 + 0x16]
add ax, word [rbp]
mov qword [rsp + 0x98], r11
xor r11d, r11d
mov word [rsp + 0x118], ax
test r10b, r10b
jns 0x14006eae9
movzx r9d, word [rdi + 0x3c]
mov rdx, qword [rdi + 0x10]
lea rax, [rsp + 0x58]
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0x54]
lea r8, [rbp - 0x10]
mov rcx, rdi
mov qword [rsp + 0x28], r14
mov word [rsp + 0x20], ax
call fcn.14006e020
movzx r8d, word [rsp + 0x110]
xor r11d, r11d
mov r10b, al
mov byte [rsp + 0x100], al
mov rax, qword [rsp + 0x58]
jmp 0x14006eaed
mov rax, qword [rbp - 8]
mov qword [rsp + 0x58], rax
test r10b, r10b
js 0x14006ebd2
movsx ecx, r10b
cmp ecx, ebx
jge 0x14006ebd2
mov rax, qword [rsp + 0x60]
movsx r10, r10b
movzx eax, word [rax + r10*2]
test ax, ax
jne 0x14006ebac
movzx r9d, word [rsp + 0x108]
mov eax, ebx
sub eax, ecx
imul eax, eax, 0x64
cdq
idiv ebx
movsxd rcx, eax
call fcn.1400074f8
movzx ecx, r9w
movzx r11d, ax
lea eax, [rcx - 0x32]
add r11w, ax
mov eax, 0x4000
test word [rdi + 0x3c], ax
je 0x14006eb6f
cmp word [rdi + 0x3e], cx
jge 0x14006eb6f
movzx r9d, word [rdi + 0x3e]
mov eax, 0xa
cmp r9w, ax
jg 0x14006eb8e
xor ebx, ebx
mov eax, ebx
jmp 0x14006eb9b
mov eax, 0x100
test word [rdi + 0x3c], ax
je 0x14006eb5e
mov eax, 0xa
cmp cx, ax
jle 0x14006eb69
movzx r9d, cx
sub r9w, ax
jmp 0x14006eb63
movsx rcx, r9w
call fcn.1400074f8
cwde
sub eax, 0x21
mov rcx, qword [rsp + 0x60]
add ax, r11w
xor r11d, r11d
mov word [rcx + r10*2], ax
movzx ecx, word [rsp + 0x110]
movzx edx, ax
call fcn.14000748c
movzx r8d, word [rsp + 0x110]
mov r10b, byte [rsp + 0x100]
lea edx, [rax + 5]
jmp 0x14006ebdb
movzx edx, r8w
add r8w, 0xfffe
mov ecx, r11d
mov rbx, r13
test r15d, r15d
jle 0x14006ec3e
mov r9, qword [rsp + 0x98]
cmp qword [rbx], r9
jne 0x14006ebfb
mov al, byte [rbx + 0x16]
xor al, r10b
jns 0x14006ec06
add ecx, esi
add rbx, 0x20
cmp ecx, r15d
jl 0x14006ebee
cmp ecx, r15d
jge 0x14006ec3e
cmp word [rbx + 0x12], dx
jl 0x14006ec2a
movzx ecx, word [rsp + 0x118]
jne 0x14006ec77
cmp word [rbx + 0x10], cx
jl 0x14006ec2a
jne 0x14006ec77
cmp word [rbx + 0x14], r8w
jg 0x14006ec77
mov r8, qword [rsp + 0x48]
mov ebx, dword [rsp + 0x40]
mov r9d, 0x4000
jmp 0x14006ed28
cmp r15d, r12d
jl 0x14006ec5f
movzx r9d, word [rsp + 0x44]
cmp dx, r9w
jg 0x14006ec2a
jne 0x14006ec59
cmp r8w, word [rsp + 0x46]
jge 0x14006ec2a
mov eax, dword [rsp + 0x50]
jmp 0x14006ec65
mov eax, r15d
add r15d, esi
movzx ecx, word [rsp + 0x118]
movsxd rbx, eax
shl rbx, 5
add rbx, r13
mov rax, qword [rbp - 0x10]
or rax, qword [r14 + 8]
mov word [rbx + 0x10], cx
mov rcx, qword [rbx + 0x18]
mov qword [rbx], rax
mov rax, qword [rsp + 0x58]
mov word [rbx + 0x14], r8w
mov r8, qword [rsp + 0x48]
mov word [rbx + 0x12], dx
mov byte [rbx + 0x16], r10b
mov qword [rbx + 8], rax
mov rdx, qword [rbp + 8]
call fcn.14009e430
mov r11, qword [rbx + 0x18]
mov r8, qword [rsp + 0x48]
mov qword [r8 + r11], r14
xor r11d, r11d
cmp r15d, r12d
jl 0x14006ec2f
movzx r9d, word [r13 + 0x12]
movzx edx, word [r13 + 0x10]
mov dword [rsp + 0x50], r11d
mov word [rsp + 0x44], r9w
mov word [rsp + 0x46], dx
mov ecx, esi
cmp r12d, esi
jle 0x14006ec2f
lea rax, [r13 + 0x32]
cmp word [rax], r9w
jg 0x14006ecfe
jne 0x14006ed0a
cmp word [rax + 2], dx
jle 0x14006ed0a
movzx r9d, word [rax]
movzx edx, word [rax + 2]
mov dword [rsp + 0x50], ecx
add ecx, esi
add rax, 0x20
cmp ecx, r12d
jl 0x14006ecf0
mov word [rsp + 0x46], dx
mov word [rsp + 0x44], r9w
jmp 0x14006ec2f
xor r11d, r11d
mov r14, qword [r14 + 0x40]
test r14, r14
jne 0x14006ea08
mov rax, qword [rsp + 0x88]
add rbp, 0x20
sub rax, rsi
mov qword [rsp + 0x88], rax
jne 0x14006e9fb
mov ebp, dword [rsp + 0x70]
mov r13, qword [rsp + 0x78]
mov r14, qword [rsp + 0x68]
mov edx, dword [rsp + 0x54]
mov rax, r14
add edx, esi
add r8, 8
mov r14, r13
mov qword [rsp + 0x68], r13
mov ecx, r15d
mov qword [rsp + 0x78], rax
mov dword [rsp + 0x54], edx
mov qword [rsp + 0x48], r8
mov r13, rax
cmp edx, ebp
jl 0x14006e9dd
test r15d, r15d
jne 0x14006edaf
mov rcx, qword [rsp + 0x90]
lea rdx, str.no_query_solution
call fcn.1400064c8
jmp 0x14006efdd
movzx r15d, word [rsp + 0x108]
mov r10d, 0x100
movsxd rax, ecx
mov rbx, r13
mov edx, esi
cmp rax, rsi
jle 0x14006edf1
lea rcx, [r13 + 0x32]
lea r8, [rax - 1]
movzx eax, word [rcx]
cmp word [rbx + 0x12], ax
jle 0x14006ede6
movsxd rbx, edx
shl rbx, 5
add rbx, r13
add edx, esi
add rcx, 0x20
sub r8, rsi
jne 0x14006edd3
test ebp, ebp
jle 0x14006ee35
mov r8, r11
lea rdx, [rdi + 0x394]
mov r9d, ebp
mov rax, qword [rbx + 0x18]
mov rcx, qword [r8 + rax]
add r8, 8
mov qword [rdx + 0x1c], rcx
movzx eax, byte [rcx + 0x10]
mov byte [rdx], al
mov ecx, eax
mov rax, qword [rdi + 8]
imul rcx, rcx, 0x70
mov ecx, dword [rcx + rax + 0x4c]
add rdx, 0x60
sub r9, rsi
mov dword [rdx - 0x90], ecx
jne 0x14006ee02
test word [rdi + 0x3c], r10w
je 0x14006ee9e
test byte [rdi + 0x3c], 0x80
jne 0x14006ee9e
cmp byte [rdi + 0x43], r11b
jne 0x14006ee9e
test r15w, r15w
je 0x14006ee9e
mov rax, qword [rbx + 0x18]
movsxd rcx, ebp
lea r8, [rsp + 0x100]
mov rax, qword [rax + rcx*8 - 8]
mov qword [rsp + 0x30], r8
movzx edx, bp
sub dx, si
mov qword [rsp + 0x28], rax
mov r9d, 0x80
mov word [rsp + 0x20], dx
mov rdx, qword [rdi + 0x18]
mov r8, rbx
mov rcx, rdi
call fcn.14006e020
xor r11d, r11d
movsx ecx, al
mov rax, qword [rdi + 0x18]
cmp ecx, dword [rax]
jne 0x14006ee9e
mov byte [rdi + 0x43], 2
and dword [rdi + 0x44], 0xfffffffb
mov rdx, qword [rdi + 0x10]
mov ecx, dword [rdi + 0x44]
test rdx, rdx
je 0x14006efd1
test byte [rdi + 0x3c], 0x80
je 0x14006eecd
movsx eax, byte [rbx + 0x16]
cmp eax, dword [rdx]
jne 0x14006ef63
mov byte [rdi + 0x43], 2
jmp 0x14006ef63
mov r8b, byte [rbx + 0x16]
mov byte [rdi + 0x41], r8b
mov rax, qword [rbx + 8]
mov qword [rdi + 0x68], rax
test r8b, r8b
jg 0x14006f008
mov byte [rdi + 0x41], r11b
test ebp, ebp
jle 0x14006ef63
mov rax, qword [rbx + 0x18]
movsxd rcx, ebp
mov r8, qword [rax + rcx*8 - 8]
mov eax, dword [r8 + 0x28]
bt eax, 0xc
jb 0x14006ef63
mov ecx, 0x104
and eax, ecx
cmp eax, ecx
je 0x14006ef63
lea rcx, [rsp + 0x100]
movzx eax, bp
mov r9d, 0x800
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x28], r8
sub ax, si
mov r8, rbx
mov rcx, rdi
mov qword [rsp + 0x100], r11
mov word [rsp + 0x20], ax
call fcn.14006e020
mov rdx, qword [rdi + 0x10]
movsx ecx, al
cmp ecx, dword [rdx]
jne 0x14006ef60
mov rax, qword [rsp + 0x100]
or dword [rdi + 0x44], 4
mov qword [rdi + 0x68], rax
xor r11d, r11d
mov eax, 0x200
test word [rdi + 0x3c], ax
je 0x14006efd1
movsx eax, byte [rdi + 0x41]
cmp eax, dword [rdx]
jne 0x14006efd1
test ebp, ebp
jle 0x14006efd1
mov rax, qword [rbx + 0x18]
movsxd rcx, ebp
lea r8, [rsp + 0x100]
mov rax, qword [rax + rcx*8 - 8]
mov qword [rsp + 0x30], r8
sub bp, si
mov qword [rsp + 0x28], rax
xor r9d, r9d
mov r8, rbx
mov rcx, rdi
mov qword [rsp + 0x100], r11
mov word [rsp + 0x20], bp
call fcn.14006e020
movsx edx, al
mov rax, qword [rdi + 0x10]
cmp edx, dword [rax]
jne 0x14006efd1
mov rax, qword [rsp + 0x100]
or dword [rdi + 0x44], 8
mov qword [rdi + 0x68], rax
movzx eax, word [rbx + 0x10]
xor ebx, ebx
mov word [rdi + 0x48], ax
mov esi, ebx
mov rdx, qword [rsp + 0x80]
mov rcx, qword [rsp + 0xa0]
call fcn.140003a4c
mov eax, esi
add rsp, 0xb8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
test ebp, ebp
je 0x14006ef63
cmp r8b, sil
jne 0x14006ef63
test byte [rdi + 0x3c], 3
je 0x14006ef63
or ecx, 4
mov dword [rdi + 0x44], ecx
jmp 0x14006ef63