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

Disassembly:
mov word [rsp + 0x10], dx
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xa8
mov rax, qword [rcx]
movzx r15d, dx
xor edx, edx
mov qword [rsp + 0x90], rax
mov rdi, rcx
mov dword [rsp + 0x48], edx
movzx ecx, byte [rcx + 0x3a]
mov ebp, 1
mov r13, qword [rax]
movzx esi, dx
mov qword [rsp + 0x98], r13
movzx r12d, dx
mov qword [rsp + 0x80], rdx
mov dword [rsp + 0x108], ecx
cmp ecx, ebp
ja 0x1400ae547
mov ebx, ebp
jmp 0x1400ae557
cmp ecx, 2
mov ebx, 0xa
mov eax, 5
cmove ebx, eax
mov rax, qword [rdi + 0x10]
mov dword [rsp + 0x44], ebx
test rax, rax
je 0x1400ae574
test r15w, r15w
je 0x1400ae574
mov r14d, dword [rax]
mov dword [rsp + 0x40], r14d
jmp 0x1400ae57b
mov r14d, edx
mov dword [rsp + 0x40], edx
lea eax, [rcx + 4]
imul eax, ebx
lea ecx, [r14 + rax*8]
add ecx, ecx
movsxd rdx, ecx
mov rcx, r13
call fcn.1400354c0
mov qword [rsp + 0x68], rax
mov rdx, rax
test rax, rax
jne 0x1400ae5a7
lea eax, [rdx + 7]
jmp 0x1400aee1a
movsxd r8, dword [rsp + 0x108]
xor ecx, ecx
mov eax, ebx
mov r10, rdx
shl rax, 5
lea r9, [rdx + rax]
shl r8, 3
mov qword [r9], rcx
mov qword [r9 + 8], rcx
mov qword [r9 + 0x10], rcx
mov qword [r9 + 0x18], rcx
lea rcx, [r9 + rax]
mov qword [rsp + 0x58], rdx
lea eax, [rbx + rbx]
mov qword [rsp + 0x70], r9
add rdx, 0x18
nop word [rax + rax]
mov qword [rdx], rcx
lea rdx, [rdx + 0x20]
add rcx, r8
dec eax
test eax, eax
jg 0x1400ae5f0
test r14d, r14d
je 0x1400ae624
movsxd r8, r14d
xor edx, edx
add r8, r8
mov qword [rsp + 0x80], rcx
call fcn.1400dfb10
mov r10, qword [rsp + 0x58]
mov r9, qword [rsp + 0x70]
mov rax, qword [rsp + 0x90]
mov ecx, 0x30
mov eax, dword [rax + 0xb4]
cmp eax, ecx
cmovb ecx, eax
mov word [r9 + 0x10], cx
mov ecx, ebp
test r14d, r14d
je 0x1400ae665
movzx eax, r14b
mov edx, 0xffffffff
mov r14d, dword [rsp + 0x108]
test r14b, r14b
cmovne eax, edx
mov byte [r9 + 0x16], al
jmp 0x1400ae66d
mov r14d, dword [rsp + 0x108]
xor ebx, ebx
mov dword [rsp + 0x4c], ebx
mov r8d, ebx
test r14b, r14b
je 0x1400aeb99
mov r14d, ebx
mov qword [rsp + 0x60], rbx
nop word [rax + rax]
mov dword [rsp + 0x100], ebx
mov edx, ebx
test ecx, ecx
jle 0x1400aeacd
lea r15, [r9 + 0x10]
mov eax, ecx
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x88], rax
nop dword [rax]
nop dword [rax + rax]
mov r13, qword [rdi + 0x48]
test r13, r13
je 0x1400aeaa8
nop dword [rax]
mov rbp, qword [r15 - 0x10]
movzx r11d, byte [r15 + 6]
mov rax, rbp
not rax
mov qword [rsp + 0x78], rbx
test qword [r13], rax
jne 0x1400aea84
mov r10, qword [r13 + 8]
test r10, rbp
jne 0x1400aea7f
mov eax, 0x4000
test dword [r13 + 0x28], eax
je 0x1400ae711
cmp word [r15], 0xa
jl 0x1400aea7f
movsx edi, word [r13 + 0x12]
lea r14, str._n_n_t_t_b_b_a_a_a
movzx r9d, word [r15]
mov ecx, edi
movzx r8d, word [r13 + 0x14]
add r8w, r9w
movsx edx, r8w
cmp di, r8w
jl 0x1400ae758
lea eax, [rdx + 0x31]
cmp ecx, eax
jg 0x1400ae780
lea eax, [rdx + 0x1f]
cmp ecx, eax
jle 0x1400ae749
inc di
jmp 0x1400ae780
sub ecx, edx
movsxd rax, ecx
movzx ecx, byte [rax + r14]
add di, cx
jmp 0x1400ae780
lea eax, [rcx + 0x31]
cmp edx, eax
jle 0x1400ae765
movzx edi, r8w
jmp 0x1400ae780
lea eax, [rcx + 0x1f]
cmp edx, eax
jle 0x1400ae772
lea edi, [r8 + 1]
jmp 0x1400ae780
sub edx, ecx
movsxd rax, edx
movzx edi, byte [rax + r14]
add di, r8w
movsx r8d, word [r15 + 4]
movsx ecx, di
mov edx, r8d
cmp di, r8w
jl 0x1400ae7b3
lea eax, [rdx + 0x31]
cmp ecx, eax
jg 0x1400ae7db
lea eax, [rdx + 0x1f]
cmp ecx, eax
jle 0x1400ae7a4
inc di
jmp 0x1400ae7db
sub ecx, edx
movsxd rax, ecx
movzx eax, byte [rax + r14]
add di, ax
jmp 0x1400ae7db
lea eax, [rcx + 0x31]
cmp edx, eax
jle 0x1400ae7c0
movzx edi, r8w
jmp 0x1400ae7db
lea eax, [rcx + 0x1f]
cmp edx, eax
jle 0x1400ae7cd
lea edi, [r8 + 1]
jmp 0x1400ae7db
sub edx, ecx
movsxd rax, edx
movzx edi, byte [rax + r14]
add di, r8w
movzx r14d, word [r13 + 0x16]
or rbp, r10
mov rbx, qword [rsp + 0xf0]
add r14w, r9w
test r11b, r11b
jns 0x1400ae82f
movzx r9d, word [rbx + 0x38]
lea rax, [rsp + 0x78]
mov rdx, qword [rbx + 0x10]
lea r8, [r15 - 0x10]
mov qword [rsp + 0x30], rax
mov rcx, rbx
mov eax, dword [rsp + 0x4c]
mov qword [rsp + 0x28], r13
mov word [rsp + 0x20], ax
mov rax, rbx
call fcn.1400adc00
mov r15, qword [rsp + 0x78]
movzx r11d, al
jmp 0x1400ae833
mov r15, qword [r15 - 8]
test r11b, r11b
js 0x1400ae929
mov edx, dword [rsp + 0x40]
movsx ecx, r11b
cmp ecx, edx
jge 0x1400ae929
mov r8, qword [rsp + 0x80]
movsx rax, r11b
lea r10, [r8 + rax*2]
movzx r8d, word [r8 + rax*2]
test r8w, r8w
jne 0x1400ae8c7
movzx r9d, word [rsp + 0xf8]
mov eax, edx
sub eax, ecx
imul eax, eax, 0x64
cdq
idiv dword [rsp + 0x40]
movsxd rcx, eax
call fcn.1400394a0
movzx r8d, ax
mov ecx, 0x4000
movzx eax, r9w
add r8w, ax
test word [rbx + 0x38], cx
je 0x1400ae8a5
cmp word [rbx + 0x20], ax
cmovl r9w, word [rbx + 0x20]
cmp r9w, 0xa
jle 0x1400ae8be
movsx rcx, r9w
call fcn.1400394a0
sub r8w, 0x21
add r8w, ax
sub r8w, 0x32
mov word [r10], r8w
movsx ecx, di
movsx edx, r8w
cmp di, r8w
jl 0x1400ae8ff
lea eax, [rdx + 0x31]
cmp ecx, eax
jg 0x1400ae929
lea eax, [rdx + 0x1f]
cmp ecx, eax
jle 0x1400ae8e8
lea r8d, [rdi + 1]
jmp 0x1400ae92d
sub ecx, edx
lea rdx, str._n_n_t_t_b_b_a_a_a
movsxd rax, ecx
movzx r8d, byte [rax + rdx]
add r8w, di
jmp 0x1400ae92d
lea eax, [rcx + 0x31]
cmp edx, eax
jg 0x1400ae92d
lea eax, [rcx + 0x1f]
cmp edx, eax
jle 0x1400ae913
inc r8w
jmp 0x1400ae92d
sub edx, ecx
movsxd rax, edx
lea rdx, str._n_n_t_t_b_b_a_a_a
movzx ecx, byte [rax + rdx]
add r8w, cx
jmp 0x1400ae92d
movzx r8d, di
mov r10, qword [rsp + 0x58]
xor ecx, ecx
mov edx, dword [rsp + 0x100]
mov rbx, r10
test edx, edx
jle 0x1400ae95e
cmp qword [rbx], rbp
jne 0x1400ae954
movzx eax, byte [rbx + 0x16]
xor al, r11b
jge 0x1400aea50
inc ecx
add rbx, 0x20
cmp ecx, edx
jl 0x1400ae942
mov r9d, dword [rsp + 0x44]
cmp edx, r9d
jl 0x1400ae97e
cmp r8w, si
jg 0x1400aea73
jne 0x1400ae97e
cmp di, r12w
jge 0x1400aea73
cmp edx, r9d
mov eax, edx
cmovge eax, dword [rsp + 0x48]
movsxd rbx, eax
lea eax, [rdx + 1]
shl rbx, 5
add rbx, r10
cmp edx, r9d
cmovge eax, edx
mov dword [rsp + 0x100], eax
mov rax, qword [r13 + 8]
mov rcx, qword [rsp + 0x50]
or rax, qword [rcx - 0x10]
mov word [rbx + 0x10], r14w
mov r14, qword [rsp + 0x60]
mov qword [rbx + 8], r15
mov r15, rcx
mov word [rbx + 0x12], r8w
mov r8, r14
mov qword [rbx], rax
mov word [rbx + 0x14], di
mov byte [rbx + 0x16], r11b
mov rdx, qword [rcx + 8]
mov rcx, qword [rbx + 0x18]
call fcn.1400df6a0
mov rax, qword [rbx + 0x18]
xor ebx, ebx
mov edx, dword [rsp + 0x100]
mov r9d, dword [rsp + 0x44]
mov r10, qword [rsp + 0x58]
mov qword [r14 + rax], r13
lea ebp, [rbx + 1]
cmp edx, r9d
jl 0x1400aea8b
movzx esi, word [r10 + 0x12]
mov edx, ebp
movzx r12d, word [r10 + 0x10]
mov dword [rsp + 0x48], ebx
cmp r9d, edx
jbe 0x1400aea47
lea rax, [r10 + 0x34]
movzx ecx, word [rax - 2]
cmp cx, si
jg 0x1400aea31
jne 0x1400aea3c
cmp word [rax], r12w
jle 0x1400aea3c
movzx r12d, word [rax]
movzx esi, cx
mov dword [rsp + 0x48], edx
inc edx
add rax, 0x20
cmp edx, r9d
jl 0x1400aea20
mov edx, dword [rsp + 0x100]
jmp 0x1400aea8b
cmp ecx, edx
jge 0x1400ae95e
movzx eax, word [rbx + 0x12]
cmp ax, r8w
jl 0x1400aea73
jne 0x1400ae9a2
cmp word [rbx + 0x10], r14w
jg 0x1400ae9a2
mov r15, qword [rsp + 0x50]
mov r14, qword [rsp + 0x60]
jmp 0x1400aea84
mov r10, qword [rsp + 0x58]
mov ebp, 1
xor ebx, ebx
mov r13, qword [r13 + 0x40]
test r13, r13
jne 0x1400ae6d0
mov rdi, qword [rsp + 0xf0]
mov rax, qword [rsp + 0x88]
add r15, 0x20
sub rax, 1
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x88], rax
jne 0x1400ae6c0
mov r8d, dword [rsp + 0x4c]
mov r9, qword [rsp + 0x70]
mov rax, r10
mov qword [rsp + 0x58], r9
inc r8d
mov qword [rsp + 0x70], rax
add r14, 8
mov dword [rsp + 0x4c], r8d
mov r10, r9
mov r9, rax
mov ecx, edx
mov qword [rsp + 0x60], r14
cmp r8d, dword [rsp + 0x108]
jl 0x1400ae690
test edx, edx
jne 0x1400aeb80
mov rcx, qword [rsp + 0x90]
lea rdx, str.no_query_solution
call fcn.140038260
mov rcx, qword [rsp + 0x98]
mov rdx, qword [rsp + 0x68]
test rcx, rcx
je 0x1400aeb71
cmp qword [rcx + 0x298], 0
je 0x1400aeb41
call fcn.140035140
mov eax, ebp
jmp 0x1400aee1a
cmp rdx, qword [rcx + 0x180]
jb 0x1400aeb71
cmp rdx, qword [rcx + 0x188]
jae 0x1400aeb71
mov rax, qword [rcx + 0x178]
mov qword [rdx], rax
mov eax, ebp
dec dword [rcx + 0x160]
mov qword [rcx + 0x178], rdx
jmp 0x1400aee1a
mov rcx, rdx
call fcn.1400350d0
mov eax, ebp
jmp 0x1400aee1a
movzx r15d, word [rsp + 0xf8]
mov r13, qword [rsp + 0x98]
mov r14d, dword [rsp + 0x108]
movsxd rdx, ecx
mov rbx, r9
cmp rdx, 1
jle 0x1400aebcf
lea rcx, [r9 + 0x32]
dec rdx
nop dword [rax]
movzx eax, word [rcx]
cmp word [rbx + 0x12], ax
jle 0x1400aebc3
movsxd rbx, ebp
shl rbx, 5
add rbx, r9
inc ebp
add rcx, 0x20
sub rdx, 1
jne 0x1400aebb0
test r14b, r14b
je 0x1400aec12
xor r8d, r8d
mov r9d, r14d
lea rdx, [rdi + 0x3bc]
mov rax, qword [rbx + 0x18]
lea rdx, [rdx + 0x58]
lea r8, [r8 + 8]
mov rcx, qword [r8 + rax - 8]
mov qword [rdx - 0x3c], rcx
movzx eax, byte [rcx + 0x10]
imul rcx, rax, 0x78
mov byte [rdx - 0x58], al
mov rax, qword [rdi + 8]
mov ecx, dword [rcx + rax + 0x50]
mov dword [rdx - 0x80], ecx
sub r9, 1
jne 0x1400aebe1
movzx eax, word [rdi + 0x38]
mov ecx, 0x180
and ax, cx
mov ecx, 0x100
cmp ax, cx
jne 0x1400aec80
cmp byte [rdi + 0x3f], 0
jne 0x1400aec80
test r15w, r15w
je 0x1400aec80
mov rax, qword [rbx + 0x18]
lea r8, [rsp + 0xf0]
mov qword [rsp + 0x30], r8
lea edx, [r14 - 1]
movzx ecx, r14b
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.1400adc00
movsx ecx, al
mov rax, qword [rdi + 0x18]
cmp ecx, dword [rax]
jne 0x1400aec80
mov byte [rdi + 0x3f], 2
mov r10, qword [rdi + 0x10]
test r10, r10
je 0x1400aedbe
test byte [rdi + 0x38], 0x80
movzx ecx, byte [rbx + 0x16]
je 0x1400aecab
movsx eax, cl
cmp eax, dword [r10]
jne 0x1400aeca3
mov byte [rdi + 0x3f], 2
mov rdx, r10
jmp 0x1400aed48
mov byte [rdi + 0x3b], cl
mov rdx, r10
mov rax, qword [rbx + 8]
mov qword [rdi + 0x50], rax
test cl, cl
jg 0x1400aed48
mov byte [rdi + 0x3b], 0
test r14b, r14b
je 0x1400aed48
mov rax, qword [rbx + 0x18]
movzx ecx, r14b
mov r11, qword [rax + rcx*8 - 8]
mov eax, dword [r11 + 0x28]
and eax, 0x104
cmp eax, 0x104
setne cl
bt dword [r11 + 0x28], 0xc
setae al
test al, cl
je 0x1400aed48
lea rcx, [rsp + 0xf0]
mov qword [rsp + 0xf0], 0
mov qword [rsp + 0x30], rcx
lea eax, [r14 - 1]
mov qword [rsp + 0x28], r11
mov rcx, rdi
mov r9d, 0x800
mov word [rsp + 0x20], ax
mov r8, rbx
call fcn.1400adc00
mov rdx, qword [rdi + 0x10]
movsx ecx, al
cmp ecx, dword [rdx]
jne 0x1400aed48
mov rax, qword [rsp + 0xf0]
mov qword [rdi + 0x50], rax
mov byte [rdi + 0x40], 1
mov eax, 0x200
test word [rdi + 0x38], ax
je 0x1400aedbe
movsx eax, byte [rdi + 0x3b]
cmp eax, dword [rdx]
jne 0x1400aedbe
test r14b, r14b
je 0x1400aedbe
mov rax, qword [rbx + 0x18]
lea r8, [rsp + 0xf0]
mov qword [rsp + 0x30], r8
xor r9d, r9d
movzx ecx, r14b
mov r8, rbx
dec r14w
mov qword [rsp + 0xf0], 0
mov rax, qword [rax + rcx*8 - 8]
mov rcx, rdi
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], r14w
call fcn.1400adc00
movsx ecx, al
mov rax, qword [rdi + 0x10]
cmp ecx, dword [rax]
jne 0x1400aedbe
mov rax, qword [rsp + 0xf0]
mov qword [rdi + 0x50], rax
mov byte [rdi + 0x3c], 1
movzx eax, word [rbx + 0x10]
mov rdx, qword [rsp + 0x68]
mov word [rdi + 0x58], ax
test r13, r13
je 0x1400aee10
cmp qword [r13 + 0x298], 0
je 0x1400aede4
mov rcx, r13
call fcn.140035140
jmp 0x1400aee18
cmp rdx, qword [r13 + 0x180]
jb 0x1400aee10
cmp rdx, qword [r13 + 0x188]
jae 0x1400aee10
mov rax, qword [r13 + 0x178]
mov qword [rdx], rax
dec dword [r13 + 0x160]
mov qword [r13 + 0x178], rdx
jmp 0x1400aee18
mov rcx, rdx
call fcn.1400350d0
xor eax, eax
add rsp, 0xa8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret