Function at 0x14020ccb0
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, 0xc8
mov r14d, 1
mov dword [rsp + 0x84], edx
mov eax, dword [rsp + 0x84]
mov rbx, rcx
mov word [rsp + 0x70], ax
mov rax, qword [rcx]
mov qword [rsp + 0x50], rax
movzx eax, byte [rcx + 0x40]
mov byte [rsp + 0x73], al
mov dword [rsp + 0x44], eax
cmp eax, 1
jle 0x14020cd07
xor r14d, r14d
cmp eax, 2
setne r14b
lea r14d, [r14 + r14*4 + 5]
mov rax, qword [rbx + 0x10]
test rax, rax
je 0x14020cd23
cmp word [rsp + 0x84], 0
je 0x14020cd23
mov eax, dword [rax]
mov dword [rsp + 0x40], eax
jmp 0x14020cd2b
mov dword [rsp + 0x40], 0
movzx r13d, byte [rsp + 0x73]
mov edi, dword [rsp + 0x40]
movsxd rsi, r14d
movsxd r12, dword [rsp + 0x40]
lea rax, [r13 + 4]
imul eax, r14d
shl eax, 4
lea edx, [rax + rdi*2]
mov rax, qword [rsp + 0x50]
movsxd rdx, edx
mov rcx, qword [rax]
call fcn.1401b9580
mov qword [rsp + 0x58], rax
test rax, rax
je 0x14020d4a4
shl rsi, 5
mov ecx, 8
mov r8, qword [rsp + 0x58]
lea rbp, [rax + rsi]
xor eax, eax
mov rdi, rbp
add rsi, rbp
rep stosd dword [rdi], eax
lea rdi, [r13*8]
lea eax, [r14 + r14]
mov rcx, rsi
mov qword [rsp + 0x60], rdi
mov edx, eax
mov qword [r8 + 0x18], rcx
add r8, 0x20
add rcx, qword [rsp + 0x60]
dec edx
jne 0x14020cd9b
cdqe
imul rax, qword [rsp + 0x60]
add rax, rsi
cmp dword [rsp + 0x40], 0
mov qword [rsp + 0x78], rax
je 0x14020cdd2
mov rdi, qword [rsp + 0x78]
lea rcx, [r12 + r12]
xor eax, eax
rep stosb byte [rdi], al
jmp 0x14020cddb
mov qword [rsp + 0x78], 0
mov rax, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x50]
cmp dword [rax + 0xd0], 0x30
mov eax, 0x30
cmovbe eax, dword [rsi + 0xd0]
cmp dword [rsp + 0x40], 0
mov word [rbp + 0x10], ax
je 0x14020ce15
cmp dword [rsp + 0x44], 0
mov eax, 0xffffffff
cmove eax, dword [rsp + 0x40]
mov byte [rbp + 0x16], al
mov rax, qword [rsp + 0x58]
mov word [rsp + 0x76], 0
mov r12d, 1
mov dword [rsp + 0x80], 0
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x68], 0
mov word [rsp + 0x74], 0
mov eax, dword [rsp + 0x68]
mov dword [rsp + 0x9c], eax
mov dword [rsp + 0xa8], eax
cmp dword [rsp + 0x44], eax
jle 0x14020d0f2
mov rax, qword [rsp + 0x68]
movsxd r12, r12d
mov r15, rbp
shl r12, 5
shl rax, 3
mov qword [rsp + 0x88], rax
lea rax, [rbp + r12]
xor r12d, r12d
mov qword [rsp + 0xa0], rax
cmp r15, qword [rsp + 0xa0]
je 0x14020d0db
mov r13, qword [rbx + 0x58]
test r13, r13
je 0x14020d0d2
mov r10, qword [r15]
mov rax, r10
not rax
and rax, qword [r13]
jne 0x14020d0c9
mov rdi, qword [r13 + 8]
test r10, rdi
jne 0x14020d0c9
mov r11d, dword [r15 + 0x10]
test byte [r13 + 0x39], 0x40
je 0x14020cedf
cmp r11w, 2
jle 0x14020d0c9
movsx ecx, word [r13 + 0x12]
mov edx, r11d
add edx, dword [r13 + 0x14]
or r10, rdi
movsx edx, dx
call fcn.1401cfca0
movsx edx, word [r15 + 0x14]
movsx ecx, ax
call fcn.1401cfca0
mov qword [rsp + 0x90], r10
mov r10b, byte [r15 + 0x16]
add r11w, word [r13 + 0x16]
mov esi, eax
mov word [rsp + 0x9a], r11w
mov word [rsp + 0x98], r11w
test r10b, r10b
jns 0x14020cf77
mov qword [rsp + 0x28], r13
mov rdx, qword [rbx + 0x10]
mov r8, r15
mov rcx, rbx
lea rax, [rsp + 0xb8]
movzx r9d, word [rbx + 0x3c]
mov qword [rsp + 0xb8], 0
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0x9c]
mov dword [rsp + 0x20], eax
call fcn.14020c540
mov r10d, eax
test al, al
js 0x14020d05d
jmp 0x14020cf83
mov rax, qword [r15 + 8]
mov qword [rsp + 0xb8], rax
movsx edi, r10b
cmp dword [rsp + 0x40], edi
jle 0x14020d05d
movsx r9, r10b
add r9, r9
add r9, qword [rsp + 0x78]
cmp word [r9], 0
jne 0x14020d04a
mov rax, qword [rbx + 0x20]
mov ecx, 0x1e
mov rax, qword [rax + 0x20]
mov eax, dword [rax]
add eax, 0x3b
cdq
idiv ecx
movsxd rcx, eax
call fcn.1401cfc40
mov ecx, dword [rsp + 0x70]
lea r11d, [rax + rcx]
test edi, edi
je 0x14020cfec
mov eax, dword [rsp + 0x40]
sub eax, edi
imul eax, eax, 0x64
cdq
idiv dword [rsp + 0x40]
movsxd rcx, eax
call fcn.1401cfc40
lea r11d, [r11 + rax - 0x42]
mov eax, dword [rbx + 0x3c]
mov edx, r11d
test ah, 0x40
je 0x14020d014
lea edx, [r11 + 0x10]
test edi, edi
jne 0x14020d003
lea edx, [r11 + 0xa]
mov eax, dword [rsp + 0x70]
cmp word [rbx + 0x3e], ax
mov ecx, eax
cmovle cx, word [rbx + 0x3e]
jmp 0x14020d02e
test ah, 1
je 0x14020d02a
cmp word [rsp + 0x70], 0xa
jle 0x14020d02a
mov eax, dword [rsp + 0x70]
lea ecx, [rax - 0xa]
jmp 0x14020d02e
mov ecx, dword [rsp + 0x70]
movsx ecx, cx
mov dword [rsp + 0xac], edx
call fcn.1401702f0
mov edx, dword [rsp + 0xac]
add edx, eax
mov word [r9], dx
movsx edx, word [r9]
movsx ecx, si
call fcn.1401cfca0
mov edx, esi
lea esi, [rax + 3]
jmp 0x14020d060
lea edx, [rsi - 2]
cmp dword [rsp + 0xa8], 0
jne 0x14020d087
test byte [r13 + 0x3b], 2
je 0x14020d087
mov ax, word [rsp + 0x9a]
sub esi, 0xa
sub eax, 0x1e
mov word [rsp + 0x98], ax
mov rax, qword [rsp + 0x48]
xor ecx, ecx
cmp ecx, r12d
je 0x14020d0b5
mov rdi, qword [rsp + 0x90]
cmp rdi, qword [rax]
jne 0x14020d0ad
mov edi, r10d
xor dil, byte [rax + 0x16]
jns 0x14020d388
inc ecx
add rax, 0x20
jmp 0x14020d08e
cmp r14d, r12d
jg 0x14020d490
cmp word [rsp + 0x74], si
jge 0x14020d479
mov r13, qword [r13 + 0x50]
jmp 0x14020cea0
add r15, 0x20
jmp 0x14020ce8e
mov rax, rbp
inc qword [rsp + 0x68]
mov rbp, qword [rsp + 0x48]
mov qword [rsp + 0x48], rax
jmp 0x14020ce47
test r12d, r12d
je 0x14020d102
lea rax, [rbp + 0x20]
mov edx, 1
jmp 0x14020d118
mov rcx, qword [rsp + 0x50]
lea rdx, str.no_query_solution
call fcn.1401bbc30
jmp 0x14020d363
cmp r12d, edx
je 0x14020d131
mov di, word [rax + 0x12]
cmp word [rbp + 0x12], di
cmovg rbp, rax
inc edx
add rax, 0x20
jmp 0x14020d118
lea rdx, [rbx + 0x364]
xor ecx, ecx
cmp dword [rsp + 0x44], ecx
jle 0x14020d16a
mov rax, qword [rbp + 0x18]
add rdx, 0x70
mov rax, qword [rax + rcx*8]
inc rcx
mov qword [rdx - 0x14], rax
movzx eax, byte [rax + 0x10]
mov byte [rdx - 0x34], al
imul rax, rax, 0x68
add rax, qword [rbx + 8]
mov eax, dword [rax + 0x4c]
mov dword [rdx - 0x70], eax
jmp 0x14020d13a
mov eax, dword [rbx + 0x3c]
and ax, 0x180
cmp ax, 0x100
jne 0x14020d1da
cmp byte [rbx + 0x43], 0
jne 0x14020d1da
cmp word [rsp + 0x84], 0
je 0x14020d1da
mov rsi, qword [rsp + 0x60]
mov rdx, qword [rbx + 0x18]
mov r8, rbp
mov rcx, rbx
lea rax, [rsp + 0xb8]
mov r9d, pe_nt_image_headers64
mov qword [rsp + 0x30], rax
mov rax, qword [rbp + 0x18]
mov rax, qword [rax + rsi - 8]
mov qword [rsp + 0x28], rax
movzx eax, byte [rsp + 0x73]
dec eax
movzx eax, ax
mov dword [rsp + 0x20], eax
call fcn.14020c540
mov rdx, qword [rbx + 0x18]
movsx eax, al
cmp eax, dword [rdx]
jne 0x14020d1da
mov byte [rbx + 0x43], 2
mov dl, byte [rbx + 0x44]
mov r10, qword [rbx + 0x10]
and edx, 0xfffffffb
mov byte [rbx + 0x44], dl
test r10, r10
je 0x14020d35c
movsx eax, byte [rbp + 0x16]
mov ecx, dword [rbx + 0x3c]
mov byte [rbx + 0x41], al
test cl, 0x80
je 0x14020d22b
cmp eax, dword [r10]
jne 0x14020d208
mov byte [rbx + 0x43], 2
mov rdx, qword [rbx + 0x20]
mov rdx, qword [rdx + 0x48]
test rdx, rdx
je 0x14020d2e0
mov edx, dword [rdx]
cmp eax, edx
jle 0x14020d2e0
mov byte [rbx + 0x41], dl
jmp 0x14020d2e0
mov r8, qword [rbp + 8]
mov qword [rbx + 0x68], r8
test al, al
jg 0x14020d2ca
cmp dword [rsp + 0x44], 0
mov byte [rbx + 0x41], 0
je 0x14020d2e0
mov rax, qword [rbp + 0x18]
mov rdi, qword [rsp + 0x60]
mov rdx, qword [rax + rdi - 8]
mov eax, dword [rdx + 0x38]
bt eax, 0xc
jb 0x14020d2e0
and eax, 0x104
cmp eax, 0x104
je 0x14020d2e0
lea rax, [rsp + 0xb8]
mov qword [rsp + 0x28], rdx
mov r8, rbp
mov rdx, r10
mov qword [rsp + 0x30], rax
mov rcx, rbx
movzx eax, byte [rsp + 0x73]
mov r9d, 0x800
mov qword [rsp + 0xb8], 0
dec eax
movzx eax, ax
mov dword [rsp + 0x20], eax
call fcn.14020c540
mov rdx, qword [rbx + 0x10]
movsx eax, al
cmp eax, dword [rdx]
jne 0x14020d2e0
mov rax, qword [rsp + 0xb8]
or byte [rbx + 0x44], 4
mov qword [rbx + 0x68], rax
jmp 0x14020d2e0
dec al
jne 0x14020d2e0
cmp dword [rsp + 0x44], 0
je 0x14020d2e0
and cl, 3
je 0x14020d2e0
or edx, 4
mov byte [rbx + 0x44], dl
test byte [rbx + 0x3d], 2
je 0x14020d35c
mov rdx, qword [rbx + 0x10]
movsx eax, byte [rbx + 0x41]
cmp eax, dword [rdx]
jne 0x14020d35c
cmp dword [rsp + 0x44], 0
je 0x14020d35c
mov rsi, qword [rsp + 0x60]
xor r9d, r9d
mov r8, rbp
mov rcx, rbx
lea rax, [rsp + 0xb8]
mov qword [rsp + 0xb8], 0
mov qword [rsp + 0x30], rax
mov rax, qword [rbp + 0x18]
mov rax, qword [rax + rsi - 8]
mov qword [rsp + 0x28], rax
movzx eax, byte [rsp + 0x73]
dec eax
movzx eax, ax
mov dword [rsp + 0x20], eax
call fcn.14020c540
mov rdx, qword [rbx + 0x10]
movsx eax, al
cmp eax, dword [rdx]
jne 0x14020d35c
mov rax, qword [rsp + 0xb8]
or byte [rbx + 0x44], 8
mov qword [rbx + 0x68], rax
mov eax, dword [rbp + 0x10]
mov word [rbx + 0x48], ax
mov rax, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x58]
mov rcx, qword [rax]
add rsp, 0xc8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp fcn.1401b94a0
cmp si, word [rax + 0x12]
jg 0x14020d0c9
jne 0x14020d3b1
mov edi, dword [rsp + 0x98]
cmp word [rax + 0x10], di
jl 0x14020d0c9
jne 0x14020d3b1
cmp dx, word [rax + 0x14]
jge 0x14020d0c9
mov rcx, qword [r15]
or rcx, qword [r13 + 8]
mov qword [rax], rcx
mov edi, dword [rsp + 0x98]
mov rcx, qword [rsp + 0xb8]
mov word [rax + 0x12], si
mov word [rax + 0x10], di
mov rdi, qword [rax + 0x18]
mov qword [rax + 8], rcx
mov ecx, dword [rsp + 0x88]
mov byte [rax + 0x16], r10b
mov rsi, qword [r15 + 0x18]
mov word [rax + 0x14], dx
rep movsb byte [rdi], byte [rsi]
mov rsi, qword [rsp + 0x88]
mov rax, qword [rax + 0x18]
mov qword [rax + rsi], r13
cmp r14d, r12d
jg 0x14020d0c9
mov rax, qword [rsp + 0x48]
mov edx, 1
mov dword [rsp + 0x80], 0
mov ax, word [rax + 0x12]
mov word [rsp + 0x74], ax
mov rax, qword [rsp + 0x48]
mov eax, dword [rax + 0x10]
mov word [rsp + 0x76], ax
mov rax, qword [rsp + 0x48]
add rax, 0x20
cmp r14d, edx
je 0x14020d0c9
mov cx, word [rax + 0x12]
cmp cx, word [rsp + 0x74]
jg 0x14020d45d
jne 0x14020d471
mov si, word [rsp + 0x76]
cmp word [rax + 0x14], si
jle 0x14020d471
mov esi, dword [rax + 0x14]
mov word [rsp + 0x74], cx
mov dword [rsp + 0x80], edx
mov word [rsp + 0x76], si
inc edx
add rax, 0x20
jmp 0x14020d43c
jne 0x14020d486
cmp word [rsp + 0x76], dx
jle 0x14020d0c9
movsxd rax, dword [rsp + 0x80]
jmp 0x14020d496
movsxd rax, r12d
inc r12d
shl rax, 5
add rax, qword [rsp + 0x48]
jmp 0x14020d3b1
add rsp, 0xc8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret