Function at 0x14049df80
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, 0xd8
mov r15d, 1
mov dword [rsp + 0x90], edx
mov eax, dword [rsp + 0x90]
mov rbx, rcx
mov word [rsp + 0x6e], ax
mov rax, qword [rcx]
mov qword [rsp + 0x58], rax
movzx eax, byte [rcx + 0x40]
mov byte [rsp + 0x81], al
mov dword [rsp + 0x4c], eax
cmp eax, 1
jle 0x14049dfda
xor r15d, r15d
cmp eax, 2
setne r15b
lea r15d, [r15 + r15*4 + 5]
cmp word [rsp + 0x90], 0
mov rax, qword [rbx + 0x10]
je 0x14049dff6
test rax, rax
je 0x14049dff6
mov eax, dword [rax]
mov dword [rsp + 0x68], eax
jmp 0x14049dffc
xor ebp, ebp
mov dword [rsp + 0x68], ebp
movzx r13d, byte [rsp + 0x81]
mov edi, dword [rsp + 0x68]
movsxd rsi, r15d
movsxd r12, dword [rsp + 0x68]
lea rax, [r13 + 4]
imul eax, r15d
shl eax, 4
lea edx, [rax + rdi*2]
mov rax, qword [rsp + 0x58]
movsxd rdx, edx
mov rcx, qword [rax]
call fcn.14044b620
mov qword [rsp + 0x60], rax
test rax, rax
je 0x14049e7b8
shl rsi, 5
mov ecx, 8
mov r8, qword [rsp + 0x60]
lea rbp, [rax + rsi]
xor eax, eax
mov rdi, rbp
add rsi, rbp
rep stosd dword [rdi], eax
lea rdi, [r13*8]
lea eax, [r15 + r15]
mov rcx, rsi
mov qword [rsp + 0x70], rdi
mov edx, eax
mov rdi, qword [rsp + 0x70]
mov qword [r8 + 0x18], rcx
add r8, 0x20
add rcx, rdi
dec edx
jne 0x14049e06f
cmp dword [rsp + 0x68], 0
jne 0x14049e0af
mov rax, qword [rsp + 0x58]
mov edx, 0x30
mov eax, dword [rax + 0xd0]
cmp eax, edx
cmova eax, edx
xor edi, edi
mov qword [rsp + 0x88], rdi
mov word [rbp + 0x10], ax
jmp 0x14049e100
mov rdi, qword [rsp + 0x70]
cdqe
lea rcx, [r12 + r12]
mov edx, 0x30
imul rax, rdi
add rax, rsi
mov qword [rsp + 0x88], rax
mov rdi, qword [rsp + 0x88]
xor eax, eax
rep stosb byte [rdi], al
mov rax, qword [rsp + 0x58]
mov eax, dword [rax + 0xd0]
cmp eax, edx
cmova eax, edx
cmp dword [rsp + 0x4c], 0
mov word [rbp + 0x10], ax
mov eax, 0xffffffff
cmove eax, dword [rsp + 0x68]
mov byte [rbp + 0x16], al
mov rax, qword [rsp + 0x60]
xor r11d, r11d
xor esi, esi
mov r12d, 1
mov dword [rsp + 0x84], r11d
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x78], rsi
mov word [rsp + 0x94], 0
mov word [rsp + 0x82], 0
mov eax, dword [rsp + 0x78]
mov dword [rsp + 0xac], eax
cmp dword [rsp + 0x4c], eax
jle 0x14049e516
mov rax, qword [rsp + 0x78]
movsxd r12, r12d
mov r14, rbp
shl r12, 5
shl rax, 3
mov qword [rsp + 0x98], rax
lea rax, [rbp + r12]
xor r12d, r12d
mov qword [rsp + 0xb0], rax
lea rax, [rsp + 0xc8]
mov qword [rsp + 0xb8], rax
mov rax, qword [rsp + 0xb0]
cmp r14, rax
je 0x14049e4ff
mov r13, qword [rbx + 0x58]
test r13, r13
je 0x14049e4f6
mov r10, qword [r14]
mov rax, r10
not rax
and rax, qword [r13]
jne 0x14049e4ed
mov r11, qword [r13 + 8]
test r10, r11
jne 0x14049e4ed
mov edi, dword [r14 + 0x10]
test byte [r13 + 0x39], 0x40
je 0x14049e1d9
cmp di, 2
jle 0x14049e4ed
movsx ecx, word [r13 + 0x12]
mov edx, edi
add edx, dword [r13 + 0x14]
or r10, r11
movsx edx, dx
call fcn.1404623c0
movsx edx, word [r14 + 0x14]
movsx ecx, ax
call fcn.1404623c0
mov qword [rsp + 0xa0], r10
mov r10b, byte [r14 + 0x16]
add di, word [r13 + 0x16]
mov esi, eax
mov word [rsp + 0x96], di
test r10b, r10b
jns 0x14049e265
mov rdx, qword [rbx + 0x10]
mov qword [rsp + 0x28], r13
xor r10d, r10d
mov r8, r14
mov rax, qword [rsp + 0xb8]
mov rcx, rbx
mov qword [rsp + 0xc8], r10
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0xac]
mov dword [rsp + 0x20], eax
movzx r9d, word [rbx + 0x3c]
call fcn.14049d8b0
mov r10d, eax
test al, al
js 0x14049e371
jmp 0x14049e271
mov rax, qword [r14 + 8]
mov qword [rsp + 0xc8], rax
movsx r11d, r10b
cmp dword [rsp + 0x68], r11d
jle 0x14049e371
mov rax, qword [rsp + 0x88]
movsx r9, r10b
add r9, r9
add r9, rax
cmp word [r9], 0
jne 0x14049e35e
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.140462360
mov cx, word [rsp + 0x6e]
lea r8d, [rax + rcx]
mov eax, dword [rbx + 0x3c]
mov word [rsp + 0xa8], ax
and ax, 0x4000
mov word [rsp + 0xaa], ax
test r10b, r10b
je 0x14049e30c
mov eax, dword [rsp + 0x68]
sub eax, r11d
imul eax, eax, 0x64
cdq
idiv dword [rsp + 0x68]
movsxd rcx, eax
call fcn.140462360
cmp word [rsp + 0xaa], 0
lea r8d, [r8 + rax - 0x42]
je 0x14049e32c
add r8d, 0x10
jmp 0x14049e31b
cmp word [rsp + 0xaa], 0
je 0x14049e32c
add r8d, 0xa
mov cx, word [rbx + 0x3e]
cmp word [rsp + 0x6e], cx
cmovle cx, word [rsp + 0x6e]
jmp 0x14049e34f
test word [rsp + 0xa8], 0x100
je 0x14049e34a
cmp word [rsp + 0x6e], 0xa
jle 0x14049e34a
mov ax, word [rsp + 0x6e]
lea ecx, [rax - 0xa]
jmp 0x14049e34f
mov cx, word [rsp + 0x6e]
movsx ecx, cx
call fcn.1403d7090
add eax, r8d
mov word [r9], ax
movsx edx, word [r9]
movsx ecx, si
call fcn.1404623c0
mov edx, esi
lea esi, [rax + 3]
jmp 0x14049e374
lea edx, [rsi - 2]
cmp qword [rsp + 0x78], 0
jne 0x14049e391
test byte [r13 + 0x3b], 2
je 0x14049e391
mov di, word [rsp + 0x96]
sub esi, 0xa
sub edi, 0x1e
mov rax, qword [rsp + 0x50]
xor ecx, ecx
cmp ecx, r12d
je 0x14049e3c0
mov r11, qword [rsp + 0xa0]
cmp r11, qword [rax]
jne 0x14049e3b3
mov r11d, r10d
xor r11b, byte [rax + 0x16]
jns 0x14049e3bb
inc ecx
add rax, 0x20
jmp 0x14049e398
cmp ecx, r12d
jl 0x14049e401
cmp r15d, r12d
jg 0x14049e3ed
cmp word [rsp + 0x82], si
jl 0x14049e4ed
jne 0x14049e3e3
cmp word [rsp + 0x94], dx
jle 0x14049e4ed
movsxd rax, dword [rsp + 0x84]
jmp 0x14049e3f3
movsxd rax, r12d
inc r12d
mov rcx, qword [rsp + 0x50]
shl rax, 5
add rax, rcx
jmp 0x14049e423
cmp si, word [rax + 0x12]
jg 0x14049e4ed
jne 0x14049e423
cmp word [rax + 0x10], di
jl 0x14049e4ed
jne 0x14049e423
cmp dx, word [rax + 0x14]
jge 0x14049e4ed
mov rcx, qword [r14]
or rcx, qword [r13 + 8]
mov word [rax + 0x10], di
mov qword [rax], rcx
mov rcx, qword [rsp + 0xc8]
mov word [rax + 0x12], si
mov rdi, qword [rax + 0x18]
mov qword [rax + 8], rcx
mov ecx, dword [rsp + 0x98]
mov byte [rax + 0x16], r10b
mov rsi, qword [r14 + 0x18]
mov word [rax + 0x14], dx
rep movsb byte [rdi], byte [rsi]
mov rsi, qword [rsp + 0x98]
mov rax, qword [rax + 0x18]
mov qword [rax + rsi], r13
cmp r15d, r12d
jg 0x14049e4ed
mov rax, qword [rsp + 0x50]
xor r9d, r9d
mov edx, 1
mov dword [rsp + 0x84], r9d
mov ax, word [rax + 0x12]
mov word [rsp + 0x82], ax
mov rax, qword [rsp + 0x50]
mov eax, dword [rax + 0x10]
mov word [rsp + 0x94], ax
mov rax, qword [rsp + 0x50]
add rax, 0x20
cmp r15d, edx
je 0x14049e4ed
mov cx, word [rax + 0x12]
cmp cx, word [rsp + 0x82]
jg 0x14049e4cb
jne 0x14049e4e5
mov esi, dword [rsp + 0x94]
cmp word [rax + 0x14], si
jle 0x14049e4e5
mov esi, dword [rax + 0x14]
mov word [rsp + 0x82], cx
mov dword [rsp + 0x84], edx
mov word [rsp + 0x94], si
inc edx
add rax, 0x20
jmp 0x14049e4a9
mov r13, qword [r13 + 0x50]
jmp 0x14049e19b
add r14, 0x20
jmp 0x14049e186
mov rax, rbp
inc qword [rsp + 0x78]
mov rbp, qword [rsp + 0x50]
mov qword [rsp + 0x50], rax
jmp 0x14049e136
test r12d, r12d
je 0x14049e526
lea rax, [rbp + 0x20]
mov edx, 1
jmp 0x14049e53c
mov rcx, qword [rsp + 0x58]
lea rdx, str.no_query_solution
call fcn.14044de50
jmp 0x14049e793
cmp r12d, edx
je 0x14049e555
mov di, word [rax + 0x12]
cmp word [rbp + 0x12], di
cmovg rbp, rax
inc edx
add rax, 0x20
jmp 0x14049e53c
lea rdx, [rbx + 0x364]
xor ecx, ecx
cmp dword [rsp + 0x4c], ecx
jle 0x14049e58e
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 0x14049e55e
mov eax, dword [rbx + 0x3c]
and ax, 0x180
cmp ax, 0x100
jne 0x14049e601
cmp byte [rbx + 0x43], 0
jne 0x14049e601
cmp word [rsp + 0x90], 0
je 0x14049e601
mov rdx, qword [rbx + 0x18]
mov rsi, qword [rsp + 0x70]
mov r8, rbp
mov rcx, rbx
lea rax, [rsp + 0xc8]
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 + 0x81]
dec eax
movzx eax, ax
mov dword [rsp + 0x20], eax
call fcn.14049d8b0
mov rdx, qword [rbx + 0x18]
movsx eax, al
cmp eax, dword [rdx]
jne 0x14049e601
mov byte [rbx + 0x43], 2
mov dl, byte [rbx + 0x44]
mov rcx, qword [rbx + 0x10]
and edx, 0xfffffffb
mov byte [rbx + 0x44], dl
test rcx, rcx
je 0x14049e78c
movsx eax, byte [rbp + 0x16]
mov r8d, dword [rbx + 0x3c]
mov byte [rbx + 0x41], al
test r8b, 0x80
je 0x14049e653
cmp eax, dword [rcx]
jne 0x14049e630
mov byte [rbx + 0x43], 2
mov rdx, qword [rbx + 0x20]
mov rdx, qword [rdx + 0x48]
test rdx, rdx
je 0x14049e70f
mov edx, dword [rdx]
cmp eax, edx
jle 0x14049e70f
mov byte [rbx + 0x41], dl
jmp 0x14049e70f
mov r9, qword [rbp + 8]
mov qword [rbx + 0x68], r9
test al, al
jg 0x14049e6f8
cmp dword [rsp + 0x4c], 0
mov byte [rbx + 0x41], 0
je 0x14049e70f
mov rax, qword [rbp + 0x18]
mov rdi, qword [rsp + 0x70]
mov rdx, qword [rax + rdi - 8]
mov eax, dword [rdx + 0x38]
bt eax, 0xc
jb 0x14049e70f
and eax, 0x104
cmp eax, 0x104
je 0x14049e70f
lea rax, [rsp + 0xc8]
mov qword [rsp + 0x28], rdx
xor r8d, r8d
mov rdx, rcx
mov qword [rsp + 0x30], rax
movzx eax, byte [rsp + 0x81]
mov r9d, 0x800
mov rcx, rbx
mov qword [rsp + 0xc8], r8
mov r8, rbp
dec eax
movzx eax, ax
mov dword [rsp + 0x20], eax
call fcn.14049d8b0
mov rdx, qword [rbx + 0x10]
movsx eax, al
cmp eax, dword [rdx]
jne 0x14049e70f
mov rax, qword [rsp + 0xc8]
or byte [rbx + 0x44], 4
mov qword [rbx + 0x68], rax
jmp 0x14049e70f
cmp dword [rsp + 0x4c], 0
je 0x14049e70f
dec al
jne 0x14049e70f
and r8b, 3
je 0x14049e70f
or edx, 4
mov byte [rbx + 0x44], dl
test byte [rbx + 0x3d], 2
je 0x14049e78c
mov rdx, qword [rbx + 0x10]
movsx eax, byte [rbx + 0x41]
cmp eax, dword [rdx]
jne 0x14049e78c
cmp dword [rsp + 0x4c], 0
je 0x14049e78c
xor eax, eax
mov rdi, qword [rsp + 0x70]
xor r9d, r9d
mov r8, rbp
mov qword [rsp + 0xc8], rax
lea rax, [rsp + 0xc8]
mov rcx, rbx
mov qword [rsp + 0x30], rax
mov rax, qword [rbp + 0x18]
mov rax, qword [rax + rdi - 8]
mov qword [rsp + 0x28], rax
movzx eax, byte [rsp + 0x81]
dec eax
movzx eax, ax
mov dword [rsp + 0x20], eax
call fcn.14049d8b0
mov rdx, qword [rbx + 0x10]
movsx eax, al
cmp eax, dword [rdx]
jne 0x14049e78c
mov rax, qword [rsp + 0xc8]
or byte [rbx + 0x44], 8
mov qword [rbx + 0x68], rax
mov eax, dword [rbp + 0x10]
mov word [rbx + 0x48], ax
mov rax, qword [rsp + 0x58]
mov rdx, qword [rsp + 0x60]
mov rcx, qword [rax]
add rsp, 0xd8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp fcn.14044b550
add rsp, 0xd8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret