Function at 0x1400719a0
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]
xor ebx, ebx
movzx ebp, byte [rcx + 0x40]
mov rdi, rcx
cmp ebp, 2
mov qword [rsp + 0x90], rax
mov dword [rsp + 0x54], ebx
mov r8, qword [rax]
lea esi, [rbx + 1]
lea eax, [rbx + 5]
mov word [rsp + 0x40], bx
lea r14d, [rbx + 0xa]
mov word [rsp + 0x118], bx
cmove r14d, eax
mov qword [rsp + 0x70], rbx
mov rax, qword [rcx + 0x10]
cmp ebp, esi
mov qword [rsp + 0xa8], r8
cmovbe r14d, esi
mov dword [rsp + 0x68], ebp
test rax, rax
je 0x140071a20
test dx, dx
je 0x140071a20
mov r12d, dword [rax]
mov dword [rsp + 0x5c], r12d
jmp 0x140071a27
mov r12d, ebx
mov dword [rsp + 0x5c], ebx
lea eax, [rbp + 4]
imul eax, r14d
lea ecx, [r12 + rax*8]
add ecx, ecx
movsxd rdx, ecx
mov rcx, r8
call fcn.1400096c8
mov qword [rsp + 0x98], rax
test rax, rax
jne 0x140071a56
mov eax, 7
jmp 0x1400721a0
xor edx, edx
mov ebx, r14d
shl rbx, 5
mov r13, rax
mov qword [rsp + 0x60], rax
lea r8d, [rdx + 0x20]
lea r15, [rbx + rax]
mov rcx, r15
mov qword [rsp + 0x88], r15
call qword [sym.imp.VCRUNTIME140.dll_memset]
mov r8, rbp
lea rcx, [rbx + r15]
shl r8, 3
lea eax, [r14 + r14]
xor r11d, r11d
lea rdx, [r13 + 0x18]
mov qword [rdx], rcx
sub eax, esi
add rcx, r8
lea rdx, [rdx + 0x20]
test eax, eax
jg 0x140071a96
test r12d, r12d
je 0x140071ac1
movsxd r8, r12d
xor edx, edx
add r8, r8
mov qword [rsp + 0x70], rcx
call qword [sym.imp.VCRUNTIME140.dll_memset]
xor r11d, r11d
mov rax, qword [rsp + 0x90]
mov ecx, 0x30
mov eax, dword [rax + 0xc4]
cmp eax, ecx
cmovb ecx, eax
mov word [r15 + 0x10], cx
mov ecx, esi
test r12d, r12d
je 0x140071af6
or edx, 0xffffffff
movzx eax, r12b
test bpl, bpl
cmovne eax, edx
mov byte [r15 + 0x16], al
mov edx, r11d
mov r10d, 0x100
mov dword [rsp + 0x58], edx
test bpl, bpl
je 0x140071f28
mov r8, r11
mov qword [rsp + 0x48], r11
mov r9d, 0x4000
mov r12d, r11d
test ecx, ecx
jle 0x140071ed4
mov ebp, dword [rsp + 0x5c]
lea rax, [r15 + 0x10]
mov qword [rsp + 0x100], rax
mov r15, qword [rsp + 0x100]
mov eax, ecx
mov qword [rsp + 0x80], rax
mov r13, qword [rdi + 0x58]
test r13, r13
je 0x140071ea5
mov al, byte [r15 + 6]
mov byte [rsp + 0x100], al
mov qword [rsp + 0x78], r11
mov r11, qword [r15 - 0x10]
mov rax, r11
not rax
test qword [r13], rax
jne 0x140071e9e
mov r10, qword [r13 + 8]
test r10, r11
jne 0x140071e9e
test dword [r13 + 0x28], r9d
je 0x140071b96
cmp word [r15], 3
jl 0x140071e9e
movzx eax, word [r15]
movzx ecx, word [r13 + 0x12]
movzx edx, ax
add dx, word [r13 + 0x14]
mov word [rsp + 0x110], ax
call fcn.14000d03c
movzx edx, word [r15 + 4]
movzx ecx, ax
call fcn.14000d03c
or r11, r10
movzx ebx, ax
movzx eax, word [rsp + 0x110]
add ax, word [r13 + 0x16]
mov r10b, byte [rsp + 0x100]
mov word [rsp + 0x110], ax
mov qword [rsp + 0xa0], r11
test r10b, r10b
jns 0x140071cb1
movzx r9d, word [rdi + 0x3c]
lea rax, [rsp + 0x78]
mov rdx, qword [rdi + 0x10]
lea r8, [r15 - 0x10]
mov qword [rsp + 0x30], rax
mov rcx, rdi
mov eax, dword [rsp + 0x58]
mov qword [rsp + 0x28], r13
mov word [rsp + 0x20], ax
call fcn.140071174
mov byte [rsp + 0x100], al
mov r10b, al
test al, al
jns 0x140071cba
movzx edx, bx
lea r9d, [rbx - 2]
mov r11, qword [rsp + 0x60]
xor eax, eax
mov ecx, eax
mov rbx, r11
test r12d, r12d
jle 0x140071d81
mov r8, qword [rsp + 0xa0]
cmp qword [rbx], r8
jne 0x140071c65
mov al, r10b
xor al, byte [rbx + 0x16]
jge 0x140071c70
add ecx, esi
add rbx, 0x20
cmp ecx, r12d
jl 0x140071c58
cmp ecx, r12d
jge 0x140071d81
cmp word [rbx + 0x12], dx
jl 0x140071e79
jne 0x140071dc6
movzx eax, word [rsp + 0x110]
cmp word [rbx + 0x10], ax
jl 0x140071e79
jne 0x140071dc6
cmp word [rbx + 0x14], r9w
jle 0x140071e79
jmp 0x140071dc6
mov rax, qword [r15 - 8]
mov qword [rsp + 0x78], rax
movzx ecx, r10b
cmp ecx, ebp
jge 0x140071c34
mov rax, qword [rsp + 0x70]
mov r11d, ecx
movzx r9d, word [rax + rcx*2]
test r9w, r9w
jne 0x140071d4a
movzx r10d, word [rsp + 0x108]
mov eax, ebp
sub eax, ecx
imul eax, eax, 0x64
cdq
idiv ebp
movsxd rcx, eax
call fcn.14000d0b4
movzx r9d, ax
mov ecx, 0x4000
movzx eax, r10w
add r9w, ax
test word [rdi + 0x3c], cx
je 0x140071d62
cmp word [rdi + 0x3e], ax
jge 0x140071d62
movzx r10d, word [rdi + 0x3e]
mov ecx, 0xa
cmp r10w, cx
jle 0x140071d33
movsx rcx, r10w
call fcn.14000d0b4
sub r9w, 0x21
add r9w, ax
mov rax, qword [rsp + 0x70]
sub r9w, 0x32
mov r10b, byte [rsp + 0x100]
mov word [rax + r11*2], r9w
movzx edx, r9w
movzx ecx, bx
call fcn.14000d03c
movzx r9d, bx
lea edx, [rax + 5]
jmp 0x140071c3b
mov ecx, 0x100
test word [rdi + 0x3c], cx
je 0x140071d16
mov ecx, 0xa
cmp ax, cx
jle 0x140071d33
movzx r10d, ax
sub r10w, cx
jmp 0x140071d1b
cmp r12d, r14d
jl 0x140071da2
cmp dx, word [rsp + 0x40]
jg 0x140071e79
jne 0x140071da2
cmp r9w, word [rsp + 0x118]
jge 0x140071e79
cmp r12d, r14d
mov eax, r12d
cmovge eax, dword [rsp + 0x54]
movsxd rbx, eax
lea eax, [r12 + 1]
shl rbx, 5
add rbx, r11
cmp r12d, r14d
cmovge eax, r12d
mov r12d, eax
mov rax, qword [r13 + 8]
or rax, qword [r15 - 0x10]
mov r8, qword [rsp + 0x48]
mov rcx, qword [rbx + 0x18]
mov qword [rbx], rax
mov rax, qword [rsp + 0x78]
mov qword [rbx + 8], rax
movzx eax, word [rsp + 0x110]
mov word [rbx + 0x10], ax
mov word [rbx + 0x12], dx
mov word [rbx + 0x14], r9w
mov byte [rbx + 0x16], r10b
mov rdx, qword [r15 + 8]
call qword [sym.imp.VCRUNTIME140.dll_memcpy]
mov rax, qword [rbx + 0x18]
mov r8, qword [rsp + 0x48]
mov qword [r8 + rax], r13
cmp r12d, r14d
jl 0x140071e7e
mov r11, qword [rsp + 0x60]
xor eax, eax
mov dword [rsp + 0x54], eax
mov ecx, esi
movzx r8d, word [r11 + 0x12]
movzx edx, word [r11 + 0x10]
mov word [rsp + 0x40], r8w
mov word [rsp + 0x118], dx
cmp r14d, esi
jbe 0x140071e79
lea rax, [r11 + 0x34]
cmp word [rax - 2], r8w
jg 0x140071e54
jne 0x140071e60
cmp word [rax], dx
jle 0x140071e60
movzx r8d, word [rax - 2]
movzx edx, word [rax]
mov dword [rsp + 0x54], ecx
add ecx, esi
add rax, 0x20
cmp ecx, r14d
jl 0x140071e46
mov word [rsp + 0x118], dx
mov word [rsp + 0x40], r8w
mov r8, qword [rsp + 0x48]
mov r9d, 0x4000
mov r13, qword [r13 + 0x40]
xor r11d, r11d
test r13, r13
jne 0x140071b54
mov rax, qword [rsp + 0x80]
jmp 0x140071eaa
mov r8, qword [rsp + 0x48]
jmp 0x140071e84
mov r8, qword [rsp + 0x48]
add r15, 0x20
sub rax, rsi
mov qword [rsp + 0x80], rax
jne 0x140071b47
mov ebp, dword [rsp + 0x68]
mov r15, qword [rsp + 0x88]
mov r13, qword [rsp + 0x60]
mov edx, dword [rsp + 0x58]
mov rax, r13
mov qword [rsp + 0x60], r15
add edx, esi
mov qword [rsp + 0x88], rax
add r8, 8
mov dword [rsp + 0x58], edx
mov qword [rsp + 0x48], r8
mov r13, r15
mov r15, rax
mov ecx, r12d
cmp edx, ebp
jl 0x140071b1a
test r12d, r12d
jne 0x140071f22
mov rcx, qword [rsp + 0x90]
lea rdx, str.no_query_solution
call fcn.14000bee8
jmp 0x140072189
mov r10d, 0x100
movsxd rax, ecx
mov rbx, r15
mov edx, esi
cmp rax, rsi
jle 0x140071f5b
lea rcx, [r15 + 0x32]
lea r8, [rax - 1]
movzx eax, word [rcx]
cmp word [rbx + 0x12], ax
jle 0x140071f50
movsxd rbx, edx
shl rbx, 5
add rbx, r15
add edx, esi
add rcx, 0x20
sub r8, rsi
jne 0x140071f3d
test bpl, bpl
je 0x140071f9e
mov r8, r11
mov r9d, ebp
lea rdx, [rdi + 0x394]
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 0x140071f6d
movzx eax, word [rdi + 0x3c]
mov ecx, 0x180
and ax, cx
cmp ax, r10w
jne 0x140072012
cmp byte [rdi + 0x43], r11b
jne 0x140072012
cmp word [rsp + 0x108], r11w
je 0x140072012
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.140071174
movsx ecx, al
xor r11d, r11d
mov rax, qword [rdi + 0x18]
cmp ecx, dword [rax]
jne 0x140072012
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 0x14007217d
movzx ecx, word [rdi + 0x3c]
movsx r9d, byte [rbx + 0x16]
test cl, cl
jns 0x14007204c
cmp r9d, dword [r10]
jne 0x140072041
mov byte [rdi + 0x43], 2
movzx eax, cx
mov rdx, r10
jmp 0x140072111
mov byte [rdi + 0x41], r9b
mov rdx, r10
mov rax, qword [rbx + 8]
mov qword [rdi + 0x68], rax
test r9b, r9b
jg 0x1400720f7
mov byte [rdi + 0x41], r11b
test bpl, bpl
je 0x1400720f1
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 0x1400720ee
xor eax, eax
lea rcx, [rsp + 0x100]
mov qword [rsp + 0x30], rcx
mov r9d, 0x800
mov qword [rsp + 0x100], rax
mov r8, rbx
movzx eax, bp
mov qword [rsp + 0x28], r11
sub ax, si
mov rcx, rdi
mov word [rsp + 0x20], ax
call fcn.140071174
mov rdx, qword [rdi + 0x10]
movsx ecx, al
cmp ecx, dword [rdx]
jne 0x1400720ee
mov rax, qword [rsp + 0x100]
or dword [rdi + 0x44], 4
mov qword [rdi + 0x68], rax
xor r11d, r11d
movzx eax, word [rdi + 0x3c]
jmp 0x140072111
movzx eax, cx
test bpl, bpl
je 0x140072111
cmp r9b, sil
jne 0x140072111
test cl, 3
je 0x140072111
or r8d, 4
mov dword [rdi + 0x44], r8d
bt ax, 9
jae 0x14007217d
movsx eax, byte [rdi + 0x41]
cmp eax, dword [rdx]
jne 0x14007217d
test bpl, bpl
je 0x14007217d
mov rax, qword [rbx + 0x18]
lea r8, [rsp + 0x100]
mov qword [rsp + 0x30], r8
xor r9d, r9d
movzx ecx, bpl
mov r8, rbx
mov qword [rsp + 0x100], r11
sub bp, si
mov rax, qword [rax + rcx*8 - 8]
mov rcx, rdi
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], bp
call fcn.140071174
movsx edx, al
mov rax, qword [rdi + 0x10]
cmp edx, dword [rax]
jne 0x14007217d
mov rax, qword [rsp + 0x100]
or dword [rdi + 0x44], 8
mov qword [rdi + 0x68], rax
movzx eax, word [rbx + 0x10]
mov word [rdi + 0x48], ax
xor eax, eax
mov esi, eax
mov rdx, qword [rsp + 0x98]
mov rcx, qword [rsp + 0xa8]
call fcn.140009378
mov eax, esi
add rsp, 0xb8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret