Function at 0x14037df00
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, 0xe8
movaps xmmword [rsp + 0xc0], xmm6
movaps xmmword [rsp + 0xd0], xmm7
lea rsi, [sym.exprNodeIsConstant]
lea rax, [sym.sqlite3SelectWalkFail]
movq xmm6, rsi
mov rsi, qword [rcx + 0x10]
movq xmm0, rax
mov r14, qword [rcx]
punpcklqdq xmm6, xmm0
movzx ebx, byte [rsi + 0x10]
mov qword [rsp + 0x138], rdx
mov rdi, qword [r14 + 8]
mov qword [rsp + 0x130], rcx
mov dword [rsp + 0x8c], 0
mov rax, qword [r14]
mov r15, qword [r14 + 0x10]
imul r10, rbx, 0x68
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x48], rax
mov rax, qword [rcx + 8]
add r10, rdi
mov rdi, qword [r10 + 0x28]
movq xmm7, rax
mov qword [rsp + 0x50], rax
movhps xmm7, qword [rsp + 0x48]
mov qword [rsp + 0x68], rdi
mov rdi, rax
mov rax, qword [rax + 0x20]
mov edx, dword [rdi + 0x14]
test edx, edx
jle 0x14037e974
movsxd rcx, edx
mov r9d, dword [r10 + 0x4c]
xor ebx, ebx
imul rcx, rcx, 0x38
add rcx, rax
nop dword [rax]
movzx r11d, word [rax + 0x12]
mov edx, r11d
and edx, 0xffffffbf
cmp dword [rax + 0x1c], r9d
mov word [rax + 0x12], dx
jne 0x14037e038
mov rdi, r8
and rdi, qword [rax + 0x28]
jne 0x14037e038
movzx edi, word [rax + 0x14]
and edi, 0xf7ff
je 0x14037e038
and r11d, 0x80
jne 0x14037e038
movzx r11d, byte [r10 + 0x44]
test r11b, 0x58
je 0x14037e028
mov rdi, qword [rax]
mov ebp, dword [rdi + 4]
test bpl, 3
je 0x14037e038
cmp r9d, dword [rdi + 0x34]
jne 0x14037e038
and r11d, 0x18
je 0x14037e028
and ebp, 2
jne 0x14037e038
nop dword [rax + rax]
or edx, 0x40
add ebx, 1
mov word [rax + 0x12], dx
nop word [rax + rax]
add rax, 0x38
cmp rax, rcx
jne 0x14037dfc8
movsxd rbx, ebx
imul r13, rbx, 0x1c
add r13, 0x88
test r15, r15
je 0x14037e231
mov edi, dword [r15]
test edi, edi
jle 0x14037ea8f
imul rax, qword [rsp + 0x60], 0x68
xor r12d, r12d
mov qword [rsp + 0x78], rbx
mov rcx, qword [rsp + 0x58]
lea rbp, [r15 + 8]
add rax, rcx
mov qword [rsp + 0x70], rax
mov rax, rbp
mov ebp, r12d
mov r12, rax
mov rbx, qword [r12]
mov eax, 1
movups xmmword [rsp + 0x98], xmm6
mov word [rsp + 0xb4], ax
mov dword [rsp + 0xb8], 0
test rbx, rbx
je 0x14037e1a8
lea rcx, [rsp + 0x90]
mov rdx, rbx
call sym.walkExpr
cmp word [rsp + 0xb4], 0
jne 0x14037e1a8
test byte [r12 + 0x10], 2
jne 0x14037e224
movzx eax, byte [rbx]
cmp al, 0xa7
je 0x14037e210
cmp al, 0x71
jne 0x14037e224
mov rax, qword [rbx + 0x10]
cmp byte [rax], 0xa7
jne 0x14037e224
mov rcx, qword [rsp + 0x70]
mov ecx, dword [rcx + 0x4c]
cmp dword [rax + 0x2c], ecx
jne 0x14037e224
movsx rax, word [rax + 0x30]
test ax, ax
mov word [rbx + 0x30], ax
js 0x14037e1a8
lea rcx, [rax + rax*2]
mov rax, qword [rsp + 0x68]
lea r9, str.BINARY
mov rax, qword [rax + 8]
lea rcx, [rax + rcx*8]
movzx eax, word [rcx + 0x12]
test ah, 2
je 0x14037e166
mov r9, qword [rcx]
cmp byte [r9], 0
je 0x14037e15a
add r9, 1
cmp byte [r9], 0
jne 0x14037e150
test al, 4
jne 0x14037e1f0
add r9, 1
mov r11, qword [rbx + 8]
test r11, r11
je 0x14037e224
lea r10, [0x14047eee0]
xor ecx, ecx
jmp 0x14037e193
movzx ebx, byte [r10 + rdx]
cmp byte [r10 + rax], bl
jne 0x14037e224
add rcx, 1
movzx eax, byte [r11 + rcx]
movzx edx, byte [r9 + rcx]
cmp eax, edx
jne 0x14037e180
test eax, eax
jne 0x14037e18f
nop dword [rax]
add ebp, 1
add r12, 0x20
cmp edi, ebp
jne 0x14037e08b
mov rbx, qword [rsp + 0x78]
nop dword [rax]
movzx r12d, word [r14 + 0x3c]
movsxd rbp, edi
shl rbp, 3
add r13, rbp
test r12b, 0x80
je 0x14037e885
test r12w, 0x200
setne r12b
movzx r12d, r12b
add r12d, 2
jmp 0x14037e238
add r9, 1
cmp byte [r9], 0
je 0x14037e162
add r9, 1
cmp byte [r9], 0
jne 0x14037e1f0
jmp 0x14037e162
imul rax, qword [rsp + 0x60], 0x68
mov rcx, qword [rsp + 0x58]
mov eax, dword [rcx + rax + 0x4c]
cmp dword [rbx + 0x2c], eax
je 0x14037e1a8
mov rbx, qword [rsp + 0x78]
mov r12d, ebp
cmp edi, r12d
je 0x14037e1c0
xor ebp, ebp
xor r12d, r12d
xor edi, edi
mov rax, qword [rsp + 0x48]
mov rdx, r13
mov rcx, qword [rax]
call sym.sqlite3DbMallocZero
test rax, rax
mov r14, rax
je 0x14037e9d2
lea r10, [rax + rbx*8 + 0x80]
movups xmmword [r14 + 0x60], xmm7
lea rax, [rbx + rbx*2]
mov rbx, qword [rsp + 0x50]
mov qword [r14 + 8], r10
lea r13, [r10 + rax*4]
mov dword [r14 + 0x70], r12d
add rbp, r13
mov qword [r14 + 0x18], r13
mov qword [r14 + 0x20], rbp
mov ebp, dword [rbx + 0x14]
mov dword [r14 + 0x74], 0
mov rax, qword [rbx + 0x20]
test ebp, ebp
jle 0x14037e99a
xor r12d, r12d
xor edx, edx
xor ebx, ebx
jmp 0x14037e302
cmp r9w, 0x40
je 0x14037e380
test r11w, 0x180
jne 0x14037e368
and r11d, 0x3c
mov byte [r8 + 4], r9b
je 0x14037e2f0
mov rcx, qword [rax]
mov r11, qword [rcx + 0x18]
movzx ecx, byte [r11]
cmp cl, 0xb0
jne 0x14037e2de
movzx ecx, byte [r11 + 2]
cmp cl, 0xb1
je 0x14037e8a0
cmp cl, 0x8a
je 0x14037e7d8
add ebx, 1
add edx, 1
add rax, 0x38
cmp edx, ebp
je 0x14037e390
movzx ecx, word [rax + 0x12]
test cl, 0x40
je 0x14037e2f3
mov r9d, dword [rax + 0x20]
movsxd r8, ebx
movzx r11d, word [rax + 0x14]
lea r8, [r8 + r8*2]
lea r8, [r10 + r8*4]
mov dword [r8 + 8], edx
mov dword [r8], r9d
mov r9d, r11d
and r9w, 0x3fff
cmp r9w, 1
jne 0x14037e2a8
test cx, cx
js 0x14037e6a0
cmp ebx, 0x1f
mov r9d, dword [r14 + 0x74]
jg 0x14037e35a
mov r11d, 1
mov ecx, ebx
shl r11d, cl
or r9d, r11d
mov dword [r14 + 0x74], r9d
mov byte [r8 + 4], 2
jmp 0x14037e2f0
cmp r9w, 0x100
setne cl
add ecx, 0x47
mov byte [r8 + 4], cl
jmp 0x14037e2f0
movzx ecx, byte [rax + 0x17]
mov byte [r8 + 4], cl
jmp 0x14037e2f0
test edi, edi
mov dword [r14], ebx
je 0x14037e42c
lea rbp, [rsp + 0x90]
movsxd rbx, edi
mov qword [rsp + 0x58], rsi
xor edi, edi
shl rbx, 5
mov rsi, rbp
add rbx, r15
mov rbp, rbx
nop word [rax + rax]
mov rbx, qword [r15 + 8]
mov eax, 1
movups xmmword [rsp + 0x98], xmm6
mov word [rsp + 0xb4], ax
mov dword [rsp + 0xb8], 0
test rbx, rbx
je 0x14037e41b
mov rdx, rbx
mov rcx, rsi
call sym.walkExpr
cmp word [rsp + 0xb4], 0
jne 0x14037e41b
movsxd rax, edi
add edi, 1
lea rdx, [r13 + rax*8]
movsx eax, word [rbx + 0x30]
mov dword [rdx], eax
movzx eax, byte [r15 + 0x18]
and eax, 1
mov byte [rdx + 4], al
add r15, 0x20
cmp rbp, r15
jne 0x14037e3c0
mov rsi, qword [rsp + 0x58]
mov ebx, dword [r14]
mov rax, qword [rsp + 0x48]
mov dword [r14 + 0x10], edi
xor r13d, r13d
xor r15d, r15d
and byte [rsi + 0x1c], 0xfe
mov word [rsi + 0x12], r13w
mov dword [rsi + 0x38], 0x400
mov rbp, qword [rax]
mov word [rsi + 0x3c], r15w
movzx eax, word [rsi + 0x40]
cmp eax, ebx
jge 0x14037e4b1
lea edi, [rbx + 7]
mov rcx, rbp
and edi, 0xfffffff8
movsxd rdx, edi
shl rdx, 3
call sym.sqlite3DbMallocRawNN
test rax, rax
mov r13, rax
je 0x14037e8ab
movzx eax, word [rsi + 0x40]
mov rcx, r13
mov rdx, qword [rsi + 0x48]
lea r8, [rax*8]
call sym.memcpy
mov rdx, qword [rsi + 0x48]
lea rax, [rsi + 0x58]
cmp rdx, rax
je 0x14037e4a9
mov rcx, rbp
call sym.sqlite3DbFreeNN
mov qword [rsi + 0x48], r13
mov word [rsi + 0x40], di
mov rdx, qword [rsp + 0x138]
movzx ebp, r12w
xor r9d, r9d
mov qword [rsp + 0x20], r14
mov rcx, qword [rsp + 0x130]
lea rax, [rsp + 0x8c]
mov dword [rsp + 0x28], ebp
mov r8, 0xffffffffffffffff
lea r12, [rsp + 0x90]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], r12
call sym.whereLoopAddVirtualOne
mov r11d, dword [rsp + 0x8c]
mov edi, eax
test r11d, r11d
jne 0x14037e820
test edi, edi
jne 0x14037e6b2
mov r15, qword [rsp + 0x138]
mov r11d, dword [rsp + 0x90]
not r15
mov rax, r15
and rax, qword [rsi]
mov qword [rsp + 0x68], rax
jne 0x14037e86e
test r11d, r11d
je 0x14037e6b2
mov rcx, qword [rsp + 0x130]
mov qword [rsp + 0x30], r12
mov r9d, 1
mov r8, 0xffffffffffffffff
mov rdx, qword [rsp + 0x138]
mov dword [rsp + 0x28], ebp
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x20], r14
call sym.whereLoopAddVirtualOne
mov rcx, r15
and rcx, qword [rsi]
sete r11b
test eax, eax
mov qword [rsp + 0x58], rcx
movzx r11d, r11b
jne 0x14037e6b0
test ebx, ebx
jle 0x14037e9e8
mov rax, qword [rsp + 0x50]
movsxd rbx, ebx
mov qword [rsp + 0x60], rsi
xor r9d, r9d
lea r13, [rbx + rbx*2]
mov r10, qword [r14 + 8]
mov dword [rsp + 0x78], edi
mov rdi, r15
mov rsi, qword [rsp + 0x68]
shl r13, 2
mov dword [rsp + 0x70], r11d
mov rbx, qword [rsp + 0x138]
mov dword [rsp + 0x68], r11d
mov r8, qword [rax + 0x20]
nop dword [rax]
lea rax, [r10 + 8]
mov r15, 0xffffffffffffffff
lea rcx, [rax + r13]
nop
movsxd rdx, dword [rax]
imul rdx, rdx, 0x38
mov r11, qword [r8 + rdx + 0x28]
and r11, rdi
cmp r11, r15
jae 0x14037e60b
cmp r9, r11
cmovb r15, r11
add rax, 0xc
cmp rcx, rax
jne 0x14037e5f0
cmp r15, 0xffffffffffffffff
je 0x14037ea79
cmp rsi, r15
je 0x14037e696
cmp qword [rsp + 0x58], r15
je 0x14037e696
mov r8, rbx
xor r9d, r9d
mov qword [rsp + 0x30], r12
mov rdx, rbx
mov rcx, qword [rsp + 0x130]
or r8, r15
mov dword [rsp + 0x28], ebp
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x20], r14
call sym.whereLoopAddVirtualOne
mov rcx, qword [rsp + 0x60]
cmp qword [rcx], rbx
jne 0x14037e685
mov r10d, dword [rsp + 0x90]
mov ecx, 1
mov dword [rsp + 0x70], 1
test r10d, r10d
cmovne ecx, dword [rsp + 0x68]
mov dword [rsp + 0x68], ecx
test eax, eax
jne 0x14037e6b0
mov rax, qword [rsp + 0x50]
mov r10, qword [r14 + 8]
mov r8, qword [rax + 0x20]
mov r9, r15
jmp 0x14037e5e0
mov byte [r8 + 4], 2
jmp 0x14037e2f0
mov edi, eax
mov r8d, dword [r14 + 0x38]
test r8d, r8d
jne 0x14037e860
mov rax, qword [rsp + 0x48]
xor esi, esi
mov rbp, qword [rax]
mov eax, dword [r14]
test eax, eax
jg 0x14037e6f7
jmp 0x14037e760
mov rcx, rbx
call sym.sqlite3_free
mov eax, dword [r14]
mov qword [r14 + rsi*8 + 0x80], 0
add rsi, 1
cmp eax, esi
jle 0x14037e760
mov rbx, qword [r14 + rsi*8 + 0x80]
test rbx, rbx
je 0x14037e6e3
test word [rbx + 0x14], 0x9000
jne 0x14037e713
mov ecx, dword [rbx + 0x20]
test ecx, ecx
je 0x14037e71b
mov rcx, rbx
call sym.vdbeMemClear
mov rcx, qword [rbx + 0x18]
test rcx, rcx
je 0x14037e6d8
cmp rbx, qword [rcx + 0x1f0]
jae 0x14037e73f
cmp rbx, qword [rcx + 0x1e0]
jae 0x14037e798
cmp rbx, qword [rcx + 0x1e8]
jae 0x14037e7b8
cmp qword [rcx + 0x308], 0
je 0x14037e6d8
mov rdx, rbx
call sym.measureAllocationSize
mov eax, dword [r14]
jmp 0x14037e6e3
mov rdx, r14
mov rcx, rbp
call sym.sqlite3DbFreeNN
nop
movaps xmm6, xmmword [rsp + 0xc0]
mov eax, edi
movaps xmm7, xmmword [rsp + 0xd0]
add rsp, 0xe8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [rcx + 0x1d8]
mov qword [rbx], rax
mov eax, dword [r14]
mov qword [rcx + 0x1d8], rbx
jmp 0x14037e6e3
mov rax, qword [rcx + 0x1c8]
mov qword [rbx], rax
mov eax, dword [r14]
mov qword [rcx + 0x1c8], rbx
jmp 0x14037e6e3
mov rcx, qword [r11 + 0x20]
mov rcx, qword [rcx + 0x20]
mov ecx, dword [rcx]
cmp ecx, 1
jle 0x14037e2f0
cmp ebx, 0xf
jg 0x14037e7fe
mov r11d, 1
mov ecx, ebx
shl r11d, cl
or r12d, r11d
cmp r9w, 0x10
je 0x14037e893
cmp r9w, 4
jne 0x14037e2f0
mov byte [r8 + 4], 0x20
jmp 0x14037e2f0
mov rdx, qword [rsp + 0x138]
mov qword [rsp + 0x30], r12
xor r9d, r9d
mov r8, 0xffffffffffffffff
mov rcx, qword [rsp + 0x130]
mov dword [rsp + 0x28], ebp
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x20], r14
call sym.whereLoopAddVirtualOne
mov edi, eax
jmp 0x14037e50a
mov rcx, qword [r14 + 0x30]
call sym.sqlite3_free
jmp 0x14037e6bf
test r11d, r11d
jne 0x14037e53f
mov qword [rsp + 0x58], 0
jmp 0x14037e593
shr r12w, 6
and r12d, 1
jmp 0x14037e238
mov byte [r8 + 4], 8
jmp 0x14037e2f0
mov rcx, qword [r11 + 0x20]
mov ecx, dword [rcx]
jmp 0x14037e7e2
mov rax, qword [rsp + 0x48]
xor esi, esi
mov rdi, qword [rax]
mov eax, dword [r14]
test eax, eax
jg 0x14037e8e7
jmp 0x14037e946
mov rcx, rbx
call sym.sqlite3_free
mov eax, dword [r14]
mov qword [r14 + rsi*8 + 0x80], 0
add rsi, 1
cmp eax, esi
jle 0x14037e946
mov rbx, qword [r14 + rsi*8 + 0x80]
test rbx, rbx
je 0x14037e8d3
test word [rbx + 0x14], 0x9000
jne 0x14037e903
mov ebp, dword [rbx + 0x20]
test ebp, ebp
je 0x14037e90b
mov rcx, rbx
call sym.vdbeMemClear
mov rcx, qword [rbx + 0x18]
test rcx, rcx
je 0x14037e8c8
cmp rbx, qword [rcx + 0x1f0]
jae 0x14037e92f
cmp rbx, qword [rcx + 0x1e0]
jae 0x14037e95b
cmp rbx, qword [rcx + 0x1e8]
jae 0x14037e981
cmp qword [rcx + 0x308], 0
je 0x14037e8c8
mov rdx, rbx
call sym.measureAllocationSize
mov eax, dword [r14]
jmp 0x14037e8d3
mov rdx, r14
mov rcx, rdi
call sym.sqlite3DbFreeNN
mov edi, 7
jmp 0x14037e76c
mov rax, qword [rcx + 0x1d8]
mov qword [rbx], rax
mov eax, dword [r14]
mov qword [rcx + 0x1d8], rbx
jmp 0x14037e8d3
mov r13d, 0x88
xor ebx, ebx
jmp 0x14037e04f
mov rax, qword [rcx + 0x1c8]
mov qword [rbx], rax
mov eax, dword [r14]
mov qword [rcx + 0x1c8], rbx
jmp 0x14037e8d3
xor r12d, r12d
test edi, edi
mov dword [r14], 0
jne 0x14037e39b
xor eax, eax
xor edx, edx
mov dword [r14 + 0x10], 0
xor ebx, ebx
and byte [rsi + 0x1c], 0xfe
mov word [rsi + 0x12], ax
mov dword [rsi + 0x38], 0x400
mov word [rsi + 0x3c], dx
jmp 0x14037e4b1
mov rcx, qword [rsp + 0x48]
lea rdx, [0x14046cbbc]
call sym.sqlite3ErrorMsg
jmp 0x14037e951
mov ebx, r11d
test r11d, r11d
jne 0x14037ea35
mov r8, qword [rsp + 0x138]
xor r9d, r9d
mov qword [rsp + 0x38], 0
mov rcx, qword [rsp + 0x130]
mov qword [rsp + 0x30], r12
mov dword [rsp + 0x28], ebp
mov qword [rsp + 0x20], r14
mov rdx, r8
call sym.whereLoopAddVirtualOne
mov r9d, dword [rsp + 0x90]
mov edi, eax
test r9d, r9d
je 0x14037e6b2
or ebx, edi
jne 0x14037e6b2
mov r8, qword [rsp + 0x138]
mov qword [rsp + 0x30], r12
mov r9d, 1
mov rcx, qword [rsp + 0x130]
mov dword [rsp + 0x28], ebp
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x20], r14
mov rdx, r8
call sym.whereLoopAddVirtualOne
mov edi, eax
jmp 0x14037e6b2
mov r11d, dword [rsp + 0x68]
mov edi, dword [rsp + 0x78]
mov ebx, r11d
mov r11d, dword [rsp + 0x70]
jmp 0x14037e9eb
xor r12d, r12d
jmp 0x14037e22c