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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xfc
push edi
push esi
push ebx
mov esi, dword [ebp + 0x10]
mov edi, dword [ebp + 0x18]
mov word [ebp - 0x70], di
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x80], eax
mov edx, dword [ebp + 0xc]
cmp word [edx], 0x40
jle 0x60951578
add esp, 0xfffffffc
push 0x40
push 0x609514f8
mov ecx, dword [ebp + 8]
push ecx
call sym._sqlite3ErrorMsg
jmp 0x60951f8b
mov dword [ebp - 0x78], 1
cmp byte [ebp - 0x70], 0
jl 0x6095158e
mov eax, dword [ebp + 0xc]
movsx eax, word [eax]
mov dword [ebp - 0x78], eax
mov edx, dword [ebp + 8]
mov edx, dword [edx]
mov dword [ebp - 0xa4], edx
mov ecx, dword [ebp - 0x78]
dec ecx
mov dword [ebp - 0xa8], ecx
lea eax, [ecx + ecx*4]
shl eax, 4
lea ebx, [eax + 0x80]
add esp, 0xfffffff8
lea eax, [ebx + 0x264]
push eax
push edx
call sym._sqlite3DbMallocZero
mov dword [ebp - 0x7c], eax
add esp, 0x10
mov eax, dword [ebp - 0xa4]
cmp byte [eax + 0x1e], 0
je 0x609515ec
add esp, 0xfffffff8
mov edx, dword [ebp - 0x7c]
push edx
push eax
call sym._sqlite3DbFree
mov dword [ebp - 0x7c], 0
jmp 0x60951f63
mov eax, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x7c]
mov dword [ecx + 0x18], eax
mov edx, dword [ebp + 8]
mov dword [ecx], edx
mov eax, dword [ebp + 0xc]
mov dword [ecx + 8], eax
add esp, 0xfffffff4
mov edx, dword [ebp - 0x80]
push edx
call sym._sqlite3VdbeMakeLabel
mov ecx, dword [ebp - 0x7c]
mov dword [ecx + 0x14], eax
add ebx, ecx
mov dword [ebp - 0x90], ebx
mov dword [ecx + 0x1c], ebx
mov word [ecx + 4], di
mov eax, dword [ebp + 8]
fld qword [eax + 0x1c0]
fstp qword [ecx + 0x20]
mov edx, dword [ebp - 0x90]
add edx, 0x160
mov dword [ebp - 0x8c], edx
mov edi, edx
xor eax, eax
cld
mov ecx, 0x41
rep stosd dword es:[edi], eax
add esp, 0xfffffffc
push edx
mov eax, dword [ebp + 8]
push eax
mov edx, dword [ebp - 0x90]
push edx
call sym._whereClauseInit
add esp, 0x20
add esp, 0xfffffff8
push esi
mov ecx, dword [ebp + 8]
push ecx
call sym._sqlite3ExprCodeConstants
add esp, 0xfffffffc
push 0x45
push esi
mov eax, dword [ebp - 0x90]
push eax
call sym._whereSplit
add esp, 0x20
test esi, esi
je 0x609516b3
cmp dword [ebp - 0x78], 0
je 0x6095169e
add esp, 0xfffffff4
push esi
call sym._sqlite3ExprIsConstantNotJoin
add esp, 0x10
test eax, eax
je 0x609516b3
push 8
mov edx, dword [ebp - 0x7c]
push dword [edx + 0x14]
push esi
mov ecx, dword [ebp + 8]
push ecx
call sym._sqlite3ExprIfFalse
add esp, 0x10
mov dword [ebp - 0x74], 0
mov eax, dword [ebp + 0xc]
cmp word [eax], 0
jle 0x60951727
xor ebx, ebx
lea esi, [esi]
add esp, 0xfffffff8
mov edx, dword [ebp + 0xc]
push dword [edx + ebx + 0x20]
mov ecx, dword [ebp - 0x8c]
push ecx
call sym._createMask
add esp, 0x10
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + ebx + 0x14]
test eax, eax
je 0x60951716
test byte [eax + 0x22], 0x10
je 0x60951716
mov eax, 1
xor edx, edx
mov cl, byte [ebp - 0x74]
shld edx, eax, cl
shl eax, cl
test cl, 0x20
je 0x6095170a
mov edx, eax
xor eax, eax
mov ecx, dword [ebp - 0x90]
or dword [ecx + 8], eax
or dword [ecx + 0xc], edx
add ebx, 0x38
inc dword [ebp - 0x74]
mov edx, dword [ebp + 0xc]
movsx eax, word [edx]
cmp dword [ebp - 0x74], eax
jl 0x609516c8
add esp, 0xfffffff8
mov ecx, dword [ebp - 0x90]
push ecx
mov eax, dword [ebp + 0xc]
push eax
call sym._exprAnalyzeAll
add esp, 0x10
mov edx, dword [ebp - 0xa4]
cmp byte [edx + 0x1e], 0
jne 0x60951f66
mov dword [ebp - 0x88], 0xffffffff
mov dword [ebp - 0x84], 0xffffffff
mov dword [ebp - 0xa0], 0xffffffff
mov dword [ebp - 0x9c], 0
mov dword [ebp - 0x74], 0
mov ecx, dword [ebp - 0x7c]
add ecx, 0x30
mov dword [ebp - 0x98], ecx
mov dword [ebp - 0xcc], ecx
jmp 0x60951bca
mov dword [ebp - 0xb0], 0xffffffff
lea edx, [ebp - 0x30]
mov dword [ebp - 0xc8], edx
mov edi, edx
xor eax, eax
cld
mov ecx, 0xa
rep stosd dword es:[edi], eax
mov dword [ebp - 0xb8], eax
mov dword [ebp - 0xc0], 0
mov dword [ebp - 0xbc], 0
mov eax, dword [ebp - 0xa8]
cmp dword [ebp - 0x9c], eax
setl al
movzx eax, al
mov dword [ebp - 0xb4], eax
fld qword [0x60951530]
fstp qword [ebp - 0x18]
test eax, eax
jl 0x60951ae2
mov esi, esi
mov edx, dword [ebp - 0x9c]
mov dword [ebp - 0xac], edx
mov eax, edx
shl eax, 3
sub eax, edx
mov ecx, dword [ebp + 0xc]
lea eax, [ecx + eax*8 + 8]
mov dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x78]
cmp edx, eax
jge 0x60951acd
mov edx, dword [ebp - 0x94]
test byte [edx + 0x15], 0xa
setne al
movzx eax, al
mov dword [ebp - 0xc4], eax
mov ecx, dword [ebp - 0x9c]
lea eax, [ecx + ecx*4]
shl eax, 4
mov edx, dword [ebp - 0x7c]
lea eax, [edx + eax + 0x78]
mov dword [ebp - 0xd0], eax
mov esi, esi
add esp, 0xfffffff8
mov ecx, dword [ebp - 0x94]
push dword [ecx + 0x18]
mov eax, dword [ebp - 0x8c]
push eax
call sym._getMask
mov ebx, eax
mov esi, edx
mov edx, ebx
mov ecx, esi
and edx, dword [ebp - 0x88]
and ecx, dword [ebp - 0x84]
add esp, 0x10
mov eax, edx
or eax, ecx
jne 0x609518b0
mov edx, dword [ebp - 0x9c]
cmp dword [ebp - 0xac], edx
jne 0x60951a79
mov ecx, dword [ebp - 0xac]
inc ecx
mov dword [ebp - 0x9c], ecx
jmp 0x60951a79
mov eax, dword [ebp - 0x88]
mov edx, dword [ebp - 0x84]
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0xd4], edx
cmp dword [ebp - 0xb4], 0
je 0x609518dd
mov dword [ebp - 0xd8], ebx
mov dword [ebp - 0xd4], esi
xor edi, edi
cmp dword [ebp - 0x74], 0
jne 0x609518f0
cmp dword [ebp + 0x14], 0
je 0x609518f0
mov edx, dword [ebp + 0x14]
mov edi, dword [edx]
mov ecx, dword [ebp - 0x94]
cmp dword [ecx + 0x34], 0
jne 0x60951902
inc dword [ebp - 0xb8]
mov eax, dword [ebp - 0x94]
mov eax, dword [eax + 0xc]
test byte [eax + 0x22], 0x10
je 0x60951958
add esp, 0xfffffff8
mov edx, dword [ebp - 0xd0]
push edx
lea eax, [ebp - 0x60]
push eax
push edi
mov eax, dword [ebp - 0x88]
mov edx, dword [ebp - 0x84]
push edx
push eax
mov edx, dword [ebp - 0xd8]
mov ecx, dword [ebp - 0xd4]
push ecx
push edx
mov ecx, dword [ebp - 0x94]
push ecx
mov eax, dword [ebp - 0x90]
push eax
mov edx, dword [ebp + 8]
push edx
call sym._bestVirtualIndex
jmp 0x60951993
add esp, 0xfffffff4
lea eax, [ebp - 0x60]
push eax
push edi
mov eax, dword [ebp - 0x88]
mov edx, dword [ebp - 0x84]
push edx
push eax
mov edx, dword [ebp - 0xd8]
mov ecx, dword [ebp - 0xd4]
push ecx
push edx
mov ecx, dword [ebp - 0x94]
push ecx
mov eax, dword [ebp - 0x90]
push eax
mov edx, dword [ebp + 8]
push edx
call sym._bestBtreeIndex
add esp, 0x30
cmp dword [ebp - 0xb4], 0
je 0x609519b4
test dword [ebp - 0x60], 0x100f3000
jne 0x609519b4
or dword [ebp - 0xc0], ebx
or dword [ebp - 0xbc], esi
mov edx, dword [ebp - 0x88]
mov ecx, dword [ebp - 0x84]
and edx, dword [ebp - 0x40]
and ecx, dword [ebp - 0x3c]
mov eax, edx
or eax, ecx
jne 0x60951a70
cmp dword [ebp - 0xb0], 0
jl 0x60951a01
mov eax, dword [ebp - 0xc0]
mov edx, dword [ebp - 0xbc]
and eax, ebx
and edx, esi
mov ecx, eax
or ecx, edx
jne 0x60951a01
test dword [ebp - 0x30], 0x100f3000
je 0x60951a01
test dword [ebp - 0x60], 0x100f3000
je 0x60951a70
cmp dword [ebp - 0xb8], 0
je 0x60951a1f
mov ecx, dword [ebp - 0x94]
cmp dword [ecx + 0x34], 0
je 0x60951a1f
test dword [ebp - 0x60], 0x100f3000
je 0x60951a70
cmp dword [ebp - 0xb0], 0
jl 0x60951a53
fld qword [ebp - 0x48]
fld qword [ebp - 0x18]
fcom st(1)
fnstsw ax
and ah, 0x45
je 0x60951a4f
fcompp
fnstsw ax
and ah, 5
jne 0x60951a70
fld qword [ebp - 0x28]
fcomp qword [ebp - 0x58]
fnstsw ax
and ah, 0x45
jne 0x60951a70
jmp 0x60951a53
fstp st(0)
fstp st(0)
mov edi, dword [ebp - 0xc8]
lea esi, [ebp - 0x60]
cld
mov ecx, 0xa
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0xac]
mov dword [ebp - 0xb0], eax
cmp dword [ebp - 0xc4], 0
jne 0x60951acd
add dword [ebp - 0xd0], 0x50
inc dword [ebp - 0xac]
add dword [ebp - 0x94], 0x38
mov edx, dword [ebp - 0x78]
cmp dword [ebp - 0xac], edx
jge 0x60951acd
mov ecx, dword [ebp - 0x94]
test byte [ecx + 0x15], 0xa
setne al
movzx eax, al
mov dword [ebp - 0xc4], eax
mov eax, dword [ebp - 0x9c]
cmp dword [ebp - 0xac], eax
je 0x60951854
cmp dword [ebp - 0xc4], 0
je 0x60951854
dec dword [ebp - 0xb4]
js 0x60951ae2
cmp dword [ebp - 0xb0], 0
jl 0x609517f8
test byte [ebp - 0x2d], 1
je 0x60951af1
mov edx, dword [ebp + 0x14]
mov dword [edx], 0
mov ecx, dword [ebp - 0x30]
and dword [ebp - 0xa0], ecx
mov edi, dword [ebp - 0x98]
lea esi, [ebp - 0x30]
cld
mov ecx, 6
rep movsd dword es:[edi], dword [esi]
test dword [ebp - 0x30], 0x200f0000
je 0x60951b28
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x44]
mov ecx, dword [ebp - 0x98]
mov dword [ecx + 0x20], eax
inc dword [edx + 0x44]
jmp 0x60951b35
mov eax, dword [ebp - 0x98]
mov dword [eax + 0x20], 0xffffffff
add esp, 0xfffffff8
mov esi, dword [ebp - 0xb0]
shl esi, 3
sub esi, dword [ebp - 0xb0]
shl esi, 3
mov edx, dword [ebp + 0xc]
push dword [esi + edx + 0x20]
mov ecx, dword [ebp - 0x8c]
push ecx
call sym._getMask
mov ecx, eax
mov ebx, edx
not eax
not edx
and dword [ebp - 0x88], eax
and dword [ebp - 0x84], edx
mov al, byte [ebp - 0xb0]
mov edx, dword [ebp - 0x98]
mov byte [edx + 0x34], al
add esp, 0x10
fld qword [ebp - 0x28]
fld1
fcomp st(1)
fnstsw ax
and ah, 0x45
dec ah
cmp ah, 0x40
jae 0x60951ba9
mov edx, dword [ebp + 8]
fld qword [edx + 0x1c0]
fmulp st(1)
fstp qword [edx + 0x1c0]
jmp 0x60951bab
fstp st(0)
mov ecx, dword [ebp + 0xc]
mov eax, dword [esi + ecx + 0x3c]
test eax, eax
je 0x60951bc0
test byte [ebp - 0x2e], 0xf
je 0x60951f50
inc dword [ebp - 0x74]
add dword [ebp - 0x98], 0x50
mov eax, dword [ebp - 0x78]
cmp dword [ebp - 0x74], eax
jl 0x60951794
mov edx, dword [ebp + 8]
cmp dword [edx + 0x40], 0
jne 0x60951f66
mov ecx, dword [ebp - 0xa4]
cmp byte [ecx + 0x1e], 0
jne 0x60951f66
mov eax, dword [ebp - 0xa0]
and eax, 0x4000000
je 0x60951c0f
cmp dword [ebp + 0x14], 0
je 0x60951c0f
mov edx, dword [ebp + 0x14]
mov dword [edx], 0
mov ecx, dword [ebp - 0x70]
test cl, 4
je 0x60951c26
test eax, eax
je 0x60951c26
mov eax, dword [ebp - 0x7c]
mov byte [eax + 6], 1
and byte [eax + 0x32], 0x7f
add esp, 0xfffffff8
push 0xffffffffffffffff
mov edx, dword [ebp + 8]
push edx
call sym._sqlite3CodeVerifySchema
mov dword [ebp - 0x88], 0xffffffff
mov dword [ebp - 0x84], 0xffffffff
mov ecx, dword [ebp - 0x7c]
mov dword [ecx + 0x28], 0
mov dword [ecx + 0x2c], 0x3ff00000
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0x98], eax
add esp, 0x10
cmp dword [ebp - 0x78], 0
jle 0x60951e94
mov edx, dword [ebp - 0x78]
mov dword [ebp - 0x74], edx
mov ecx, dword [ebp - 0x98]
movzx edx, byte [ecx + 0x34]
mov eax, edx
shl eax, 3
sub eax, edx
mov edx, dword [ebp + 0xc]
lea eax, [edx + eax*8 + 8]
mov dword [ebp - 0x94], eax
mov ebx, dword [eax + 0xc]
mov eax, dword [eax + 0x18]
mov dword [ecx + 0x1c], eax
mov ecx, dword [ebp - 0x7c]
fld qword [ecx + 0x28]
mov ecx, dword [ebp - 0x98]
fmul qword [ecx + 8]
mov eax, dword [ebp - 0x7c]
add esp, 0xfffffff8
fstp qword [eax + 0x28]
push dword [ebx + 0x44]
mov edx, dword [ebp - 0xa4]
push edx
call sym._sqlite3SchemaToIndex
mov esi, eax
add esp, 0x10
test byte [ebx + 0x22], 2
jne 0x60951dcb
cmp dword [ebx + 0x1c], 0
jne 0x60951dcb
mov ecx, dword [ebp - 0x98]
mov eax, dword [ecx]
test eax, 0x8000000
je 0x60951d24
add esp, 0xfffffff8
push ebx
mov eax, dword [ebp - 0xa4]
push eax
call sym._sqlite3GetVTable
add esp, 0xfffffffc
push 0xfffffffffffffff6
push eax
push 0
push 0
mov edx, dword [ebp - 0x94]
push dword [edx + 0x18]
push 0x7f
mov ecx, dword [ebp - 0x80]
push ecx
call sym._sqlite3VdbeAddOp4
add esp, 0x30
jmp 0x60951dcb
test eax, 0x800000
jne 0x60951db4
test byte [ebp - 0x70], 0x10
jne 0x60951db4
mov eax, 0x26
mov edx, dword [ebp - 0x7c]
cmp byte [edx + 6], 0
je 0x60951d48
mov eax, 0x27
add esp, 0xfffffff4
push eax
push ebx
push esi
mov ecx, dword [ebp - 0x94]
push dword [ecx + 0x18]
mov eax, dword [ebp + 8]
push eax
call sym._sqlite3OpenTable
add esp, 0x20
mov edx, dword [ebp - 0x7c]
cmp byte [edx + 6], 0
jne 0x60951dcb
cmp dword [ebx + 8], 0x3f
jg 0x60951dcb
mov eax, dword [ebp - 0x94]
mov edx, dword [eax + 0x28]
mov ecx, dword [eax + 0x2c]
xor ebx, ebx
jmp 0x60951d8b
shrd edx, ecx, 1
shr ecx, 1
inc ebx
mov eax, edx
or eax, ecx
jne 0x60951d84
push 0xfffffffffffffff2
push ebx
add esp, 0xfffffff4
mov edx, dword [ebp - 0x80]
push edx
call sym._sqlite3VdbeCurrentAddr
add esp, 0x10
dec eax
push eax
mov ecx, dword [ebp - 0x80]
push ecx
call sym._sqlite3VdbeChangeP4
add esp, 0x10
jmp 0x60951dcb
add esp, 0xfffffff4
push dword [ebx]
push 0
push dword [ebx + 0x14]
push esi
mov eax, dword [ebp + 8]
push eax
call sym._sqlite3TableLock
add esp, 0x20
mov edx, dword [ebp - 0x98]
mov eax, dword [edx]
test eax, 0x20000000
je 0x60951e08
add esp, 0xfffffff8
push edx
mov eax, dword [ebp - 0x88]
mov edx, dword [ebp - 0x84]
push edx
push eax
mov edx, dword [ebp - 0x94]
push edx
mov ecx, dword [ebp - 0x90]
push ecx
mov eax, dword [ebp + 8]
push eax
call sym._constructAutomaticIndex
add esp, 0x20
jmp 0x60951e46
test eax, 0xf0000
je 0x60951e46
mov edx, dword [ebp - 0x98]
mov ebx, dword [edx + 0x10]
add esp, 0xfffffff8
push ebx
mov ecx, dword [ebp + 8]
push ecx
call sym._sqlite3IndexKeyinfo
add esp, 0xfffffffc
push 0xfffffffffffffff0
push eax
push esi
push dword [ebx + 0x14]
mov eax, dword [ebp - 0x98]
push dword [eax + 0x20]
push 0x26
mov edx, dword [ebp - 0x80]
push edx
call sym._sqlite3VdbeAddOp4
add esp, 0x30
add esp, 0xfffffff8
push esi
mov ecx, dword [ebp + 8]
push ecx
call sym._sqlite3CodeVerifySchema
add esp, 0xfffffff8
mov eax, dword [ebp - 0x94]
push dword [eax + 0x18]
mov edx, dword [ebp - 0x90]
push dword [edx + 4]
call sym._getMask
mov ecx, eax
mov ebx, edx
not eax
not edx
and dword [ebp - 0x88], eax
and dword [ebp - 0x84], edx
add esp, 0x20
add dword [ebp - 0x98], 0x50
dec dword [ebp - 0x74]
jne 0x60951c78
add esp, 0xfffffff4
mov ecx, dword [ebp - 0x80]
push ecx
call sym._sqlite3VdbeCurrentAddr
mov edx, dword [ebp - 0x7c]
mov dword [edx + 0xc], eax
add esp, 0x10
mov ecx, dword [ebp - 0xa4]
cmp byte [ecx + 0x1e], 0
jne 0x60951f66
mov dword [ebp - 0x88], 0xffffffff
mov dword [ebp - 0x84], 0xffffffff
mov dword [ebp - 0x74], 0
mov eax, dword [ebp - 0x78]
cmp dword [ebp - 0x74], eax
jge 0x60951f4b
mov esi, edx
add esi, 0x30
lea esi, [esi]
add esp, 0xfffffff8
movzx ebx, word [ebp - 0x70]
push ebx
movzx eax, byte [esi + 0x34]
push eax
mov edx, dword [ebp - 0x74]
push edx
push esi
mov ecx, dword [ebp + 0xc]
push ecx
mov eax, dword [ebp + 8]
push eax
call sym._explainOneScan
add esp, 0x20
add esp, 0xfffffff4
mov edx, dword [ebp - 0x88]
mov ecx, dword [ebp - 0x84]
push ecx
push edx
push ebx
mov ecx, dword [ebp - 0x74]
push ecx
mov eax, dword [ebp - 0x7c]
push eax
call sym._codeOneLoopStart
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], edx
mov eax, dword [esi + 0x2c]
mov edx, dword [ebp - 0x7c]
mov dword [edx + 0x10], eax
add esp, 0x20
add esi, 0x50
inc dword [ebp - 0x74]
mov ecx, dword [ebp - 0x78]
cmp dword [ebp - 0x74], ecx
jl 0x60951ee4
mov eax, dword [ebp - 0x7c]
jmp 0x60951f8d
add esp, 0xfffffffc
push dword [eax]
push 0x60951514
mov eax, dword [ebp + 8]
push eax
call sym._sqlite3ErrorMsg
add esp, 0x10
cmp dword [ebp - 0x7c], 0
je 0x60951f8b
mov edx, dword [ebp - 0x7c]
mov ecx, dword [ebp + 8]
add esp, 0xfffffff8
fld qword [edx + 0x20]
fstp qword [ecx + 0x1c0]
push edx
mov eax, dword [ebp - 0xa4]
push eax
call sym._whereInfoFree
xor eax, eax
lea esp, [ebp - 0x108]
pop ebx
pop esi
pop edi
leave
ret