Function at 0x10068310
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x90
mov ebx, edx
mov eax, dword [0x101db014]
xor eax, ebp
mov dword [esp + 0x88], eax
mov edi, dword [ebp + 8]
xor esi, esi
mov dword [esp + 0x14], ecx
mov ecx, dword [ecx + 8]
mov dword [esp + 0x18], ecx
mov edx, 0x11
push esi
push esi
push esi
call fcn.10036aa0
mov edx, edi
add esp, 0xc
mov dword [esp + 0x68], eax
mov eax, dword [edi + 0x10]
mov dword [esp + 0x20], eax
mov eax, dword [ebx + 0xc]
mov dword [esp + 0x5c], ebx
mov ebx, dword [ebx + 0x14]
lea edi, [eax + eax*2]
shl edi, 4
add edi, ebx
mov ecx, dword [ebp + 0x14]
mov ecx, dword [ecx + 0x48]
mov dword [esp + 0x10], ecx
test eax, eax
mov dword [esp + 0x24], edi
jle 0x100684e4
xor eax, eax
mov dword [esp + 0x1c], 0
mov dword [esp + 8], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
or eax, dword [ecx + 4]
je 0x10068ac2
mov esi, dword [esp + 8]
mov eax, dword [ebx + 0x14]
cmp eax, dword [edx + 0x2c]
jne 0x1006841c
movzx eax, word [ebx + 0xc]
test al, 0x82
je 0x1006841c
test byte [edx + 0x24], 8
jne 0x10068a6d
mov eax, dword [ebx + 0x20]
and eax, dword [ebp + 0xc]
mov ecx, dword [ebx + 0x24]
and ecx, dword [ebp + 0x10]
or ecx, eax
jne 0x1006841c
mov eax, dword [ebx + 0x18]
test eax, eax
js 0x1006841c
mov ecx, dword [edx + 0x10]
mov ecx, dword [ecx + 4]
lea eax, [eax + eax*4]
movsx edx, byte [ecx + eax*4 + 0xd]
mov ecx, dword [ebx]
call fcn.100472c0
test eax, eax
jne 0x10068422
mov esi, dword [esp + 0xc]
mov edx, dword [ebp + 8]
add ebx, 0x30
mov eax, esi
cmp ebx, edi
jb 0x100683a6
jmp 0x100684fc
mov esi, dword [esp + 0xc]
jmp 0x1006840e
mov ecx, dword [ebx + 0x18]
xor edi, edi
xor edx, edx
inc edx
shld edi, edx, cl
shl edx, cl
test cl, 0x20
cmovne edi, edx
mov eax, 0
cmovne edx, eax
cmp ecx, 0x3f
mov eax, bind
cmovg edi, eax
mov eax, 0
cmovg edx, eax
mov dword [esp + 0x40], edx
cmp byte [esp + 0x30], 0
jne 0x1006847c
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 4]
lea ecx, [ecx + ecx*4]
push dword [eax + ecx*4]
push dword [edx]
push str.automatic_index_on__s__s_
push 0x11c
call sym.nss3.dll_sqlite3_log
add esp, 0x10
mov eax, dword [esp + 0x40]
and eax, dword [esp + 0x1c]
mov dword [esp + 0x2c], edi
mov ecx, edi
and ecx, esi
or ecx, eax
mov al, 1
mov dword [esp + 0x30], eax
jne 0x10068b41
mov eax, dword [esp + 0xc]
lea esi, [eax + 1]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov edi, dword [esp + 0x10]
mov edx, edi
push esi
call fcn.1014eec0
add esp, 4
test eax, eax
jne 0x10068b38
mov eax, dword [edi + 0x30]
mov ecx, dword [esp + 0xc]
mov dword [eax + ecx*4], ebx
mov eax, dword [esp + 0x40]
or dword [esp + 0x1c], eax
mov eax, dword [esp + 0x2c]
or dword [esp + 8], eax
mov edx, dword [ebp + 8]
mov edi, dword [esp + 0x24]
jmp 0x1006840e
mov dword [esp + 0x28], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 0x10]
mov word [eax + 0x28], si
mov word [eax + 0x18], si
mov dword [eax + 0x24], 0x4241
mov edi, dword [edx + 0x3c]
mov ecx, dword [esp + 0x1c]
not ecx
mov ebx, dword [esp + 8]
not ebx
mov eax, bind
or ebx, eax
and ebx, edi
and ecx, dword [edx + 0x38]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x20]
movsx ecx, word [ecx + 0x2a]
cmp ecx, 0x3f
mov eax, 0x3f
cmovl eax, ecx
mov dword [esp + 0x2c], ecx
test ecx, ecx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
jle 0x10068677
xor edx, edx
inc edx
test eax, eax
cmovg edx, eax
lea ecx, [edx + 3]
dec edx
movd xmm0, edx
movd xmm7, esi
and ecx, 0x7ffffffc
pshufd xmm0, xmm0, 0
movdqa xmmword [esp + 0x30], xmm0
movd xmm0, dword [esp + 0x1c]
movd xmm2, ebx
punpckldq xmm0, xmm2
pshufd xmm0, xmm0, 0x44
movdqa xmmword [esp + 0x40], xmm0
movaps xmm1, xmmword [0x1019c230]
movaps xmm4, xmm1
pxor xmm0, xmm0
movss xmm0, xmm1
movaps xmm2, xmm1
xorps xmm3, xmm3
unpckhps xmm2, xmm3
movdqa xmm3, xmmword [0x1019c200]
movdqa xmm6, xmm3
psllq xmm6, xmm2
movaps xmm2, xmm1
psrldq xmm2, 0xc
movdqa xmm5, xmm3
psllq xmm5, xmm2
movdqa xmm2, xmm3
psllq xmm2, xmm0
movaps xmm0, xmm1
psrlq xmm0, 0x20
psllq xmm3, xmm0
movsd xmm5, xmm6
movsd xmm3, xmm2
movapd xmm0, xmmword [esp + 0x40]
andpd xmm3, xmm0
andpd xmm5, xmm0
pxor xmm2, xmm2
pcmpeqd xmm5, xmm2
pshufd xmm0, xmm5, 0xb1
pand xmm0, xmm5
pcmpeqd xmm3, xmm2
pshufd xmm2, xmm3, 0xb1
pand xmm2, xmm3
pcmpeqd xmm3, xmm3
pxor xmm0, xmm3
pxor xmm2, xmm3
packssdw xmm2, xmm0
movdqa xmm0, xmm7
psubd xmm7, xmm2
paddd xmm1, xmmword [0x1019c2a0]
add ecx, 0xfffffffc
jne 0x1006859a
movaps xmm1, xmmword [0x1019c240]
movaps xmm2, xmmword [esp + 0x30]
xorps xmm2, xmm1
xorps xmm4, xmm1
pcmpgtd xmm4, xmm2
pand xmm0, xmm4
pandn xmm4, xmm7
por xmm4, xmm0
pshufd xmm0, xmm4, 0xee
paddd xmm0, xmm4
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd esi, xmm1
mov ebx, dword [esp + 0x10]
xor ecx, ecx
inc ecx
test edi, edi
mov eax, dword [esp + 0x2c]
lea edx, [eax - 0x3e]
cmovns edx, ecx
add edx, esi
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
lea eax, [esp + 0x6c]
mov dword [esp + 0x64], edx
movsx edx, dx
push eax
call fcn.1014ef40
add esp, 4
test eax, eax
je 0x10068b38
mov ecx, eax
mov dword [ebx + 0x20], eax
mov dword [eax], str.auto_index
mov eax, dword [esp + 0x20]
mov dword [esp + 0x30], ecx
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x5c]
mov esi, dword [eax + 0x14]
mov edi, dword [esp + 0x24]
cmp esi, edi
mov edx, dword [ebp + 8]
jae 0x100687df
mov dword [esp + 0x40], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov eax, dword [esi + 0x14]
cmp eax, dword [edx + 0x2c]
jne 0x1006873f
movzx eax, word [esi + 0xc]
test al, 0x82
je 0x1006873f
test byte [edx + 0x24], 8
jne 0x10068a88
mov eax, dword [esi + 0x20]
and eax, dword [ebp + 0xc]
mov ecx, dword [esi + 0x24]
and ecx, dword [ebp + 0x10]
or ecx, eax
jne 0x1006873f
mov eax, dword [esi + 0x18]
test eax, eax
js 0x1006873f
mov ecx, dword [edx + 0x10]
mov ecx, dword [ecx + 4]
lea eax, [eax + eax*4]
movsx edx, byte [ecx + eax*4 + 0xd]
mov ecx, dword [esi]
call fcn.100472c0
test eax, eax
jne 0x1006874b
mov edx, dword [ebp + 8]
add esi, 0x30
cmp esi, edi
jb 0x100686f2
jmp 0x100687e7
mov ecx, dword [esi + 0x18]
xor ebx, ebx
xor edi, edi
inc edi
shld ebx, edi, cl
shl edi, cl
test cl, 0x20
cmovne ebx, edi
mov edx, 0
cmovne edi, edx
cmp ecx, 0x3f
mov eax, bind
cmovg ebx, eax
cmovg edi, edx
mov dword [esp + 0x60], ebx
mov eax, ebx
and eax, dword [esp + 0x54]
mov edx, edi
and edx, dword [esp + 0x58]
or edx, eax
jne 0x10068b4a
mov edx, dword [esi]
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 4]
mov ebx, dword [esp + 0x40]
mov word [eax + ebx*2], cx
mov ecx, dword [esp + 0x14]
call fcn.10035790
test eax, eax
je 0x10068b56
mov eax, dword [eax]
mov edx, dword [ebp + 8]
mov ecx, dword [esp + 0x30]
mov ecx, dword [ecx + 0x20]
mov ebx, dword [esp + 0x40]
mov dword [ecx + ebx*4], eax
or dword [esp + 0x58], edi
mov eax, dword [esp + 0x60]
or dword [esp + 0x54], eax
inc ebx
mov dword [esp + 0x40], ebx
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x24]
jmp 0x1006873f
mov dword [esp + 0x40], 0
cmp word [esp + 0x2c], 0
jle 0x10068a64
xor eax, eax
xor ecx, ecx
mov edi, dword [esp + 0x30]
xor edx, edx
xor esi, esi
inc esi
shld edx, esi, cl
shl esi, cl
test cl, 0x20
cmovne edx, esi
cmovne esi, eax
and edx, dword [esp + 8]
and esi, dword [esp + 0x1c]
or esi, edx
jne 0x10068aa3
inc ecx
cmp ecx, dword [esp + 0xc]
jl 0x100687fb
mov eax, dword [ebp + 8]
cmp dword [eax + 0x3c], 0
js 0x10068b60
mov esi, dword [esp + 0x14]
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x40]
mov word [eax + ecx*2], 0xffff
mov eax, dword [edi + 0x20]
mov dword [eax + ecx*4], 0x1019c99f
mov eax, dword [esi + 0x28]
lea ecx, [eax + 1]
mov dword [esi + 0x28], ecx
mov ecx, dword [ebp + 0x14]
mov dword [ecx + 8], eax
mov ecx, dword [esp + 0x18]
mov edx, 0x65
push 0
push dword [esp + 0x68]
push eax
call fcn.10036aa0
add esp, 0xc
mov ecx, esi
mov esi, dword [esi + 8]
mov edx, edi
call fcn.10044850
test eax, eax
je 0x100688a2
mov ecx, dword [esi]
cmp byte [ecx + 0x53], 0
jne 0x10068bac
mov ecx, dword [esi + 0x68]
mov edx, dword [esi + 0x6c]
lea edx, [edx + edx*4]
mov byte [ecx + edx*4 - 0x13], 0xf7
mov dword [ecx + edx*4 - 4], eax
mov eax, dword [esp + 0x5c]
mov eax, dword [eax]
mov ecx, dword [eax + 4]
mov eax, dword [ebp + 0x14]
movzx eax, byte [eax + 0x34]
lea eax, [eax + eax*8]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0xc], eax
test byte [ecx + eax*8 + 0x30], 0x10
jne 0x10068bd0
xor eax, eax
mov ecx, dword [esp + 0x18]
mov edx, 0x25
push eax
mov dword [esp + 0x24], 0
push eax
mov eax, dword [ebp + 0x14]
push dword [eax + 4]
call fcn.10036aa0
add esp, 0xc
mov dword [esp + 8], eax
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x10068c2c
xor eax, eax
dec eax
mov dword [esp + 0x10], eax
mov al, byte [esi + 0x13]
test al, al
jne 0x10068916
mov ebx, dword [esi + 0x2c]
inc ebx
mov dword [esi + 0x2c], ebx
jmp 0x10068925
dec al
mov byte [esi + 0x13], al
movzx eax, al
mov ebx, dword [esi + eax*4 + 0x94]
mov edi, dword [ebp + 0x14]
mov eax, dword [edi + 4]
sub esp, 0x18
pxor xmm0, xmm0
movdqu xmmword [esp + 8], xmm0
mov dword [esp + 4], ebx
mov dword [esp], eax
mov ecx, esi
mov edx, dword [esp + 0x48]
call fcn.10056e60
add esp, 0x18
mov dword [esp + 0x30], eax
mov esi, dword [esp + 0x18]
mov ecx, esi
mov edx, 0x86
push 0
push ebx
push dword [edi + 8]
call fcn.10036aa0
add esp, 0xc
mov eax, dword [esi + 0x6c]
test eax, eax
jle 0x1006897e
mov ecx, dword [esi + 0x68]
lea eax, [eax + eax*4]
mov word [ecx + eax*4 - 0x12], 0x10
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0xc]
lea esi, [eax + ecx*8]
add esi, 0x30
cmp dword [esp + 0x28], 0
jne 0x10068c53
test byte [esi], 0x10
jne 0x10068c7c
mov eax, dword [esp + 8]
inc eax
mov esi, dword [esp + 0x18]
mov ecx, esi
mov edx, 5
push 0
push eax
mov eax, dword [ebp + 0x14]
push dword [eax + 4]
call fcn.10036aa0
add esp, 0xc
mov eax, dword [esi + 0x6c]
test eax, eax
jle 0x100689d5
mov ecx, dword [esi + 0x68]
lea eax, [eax + eax*4]
mov word [ecx + eax*4 - 0x12], 3
mov ecx, dword [esi]
mov eax, dword [esi + 0x6c]
cmp byte [ecx + 0x53], 0
mov edi, dword [esp + 0x14]
jne 0x10068d11
lea ecx, [eax - 1]
mov edx, dword [esp + 8]
test edx, edx
cmovns ecx, edx
lea ecx, [ecx + ecx*4]
shl ecx, 2
add ecx, dword [esi + 0x68]
mov dword [ecx + 8], eax
test ebx, ebx
je 0x10068a1b
movzx eax, byte [edi + 0x13]
cmp eax, 7
ja 0x10068a1b
mov ecx, eax
inc cl
mov byte [edi + 0x13], cl
mov dword [edi + eax*4 + 0x94], ebx
mov ecx, dword [esi]
mov eax, dword [esi + 0x6c]
cmp byte [ecx + 0x53], 0
jne 0x10068d1b
lea ecx, [eax - 1]
mov edx, dword [esp + 0x68]
test edx, edx
cmovns ecx, edx
lea ecx, [ecx + ecx*4]
shl ecx, 2
add ecx, dword [esi + 0x68]
mov dword [ecx + 8], eax
mov edx, dword [esp + 0x28]
test edx, edx
jne 0x10068d25
mov ecx, dword [esp + 0x88]
xor ecx, ebp
call fcn.1014dc80
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, dword [esp + 0x30]
jmp 0x10068825
test al, al
jns 0x100683d7
mov eax, dword [ebx]
mov eax, dword [eax + 4]
and eax, 1
jne 0x100683d7
jmp 0x1006841c
test al, al
jns 0x1006870c
mov eax, dword [esi]
mov eax, dword [eax + 4]
and eax, 1
jne 0x1006870c
jmp 0x1006873f
mov edx, dword [edi + 4]
mov esi, dword [esp + 0x40]
mov word [edx + esi*2], cx
mov edx, dword [edi + 0x20]
mov dword [edx + esi*4], 0x1019c99f
inc esi
mov dword [esp + 0x40], esi
jmp 0x1006881e
test byte [ebx + 0xa], 2
jne 0x10068b28
mov edi, dword [ebx]
test byte [edi + 4], 1
jne 0x10068b28
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x2c]
lea esi, [esp + 0x6c]
mov word [esi + 0x14], 3
mov dword [esi + 4], 0x1007ad60
mov dword [esi + 8], 0x1007f830
mov dword [esi + 0x18], eax
mov ecx, esi
mov edx, edi
call fcn.10148200
cmp word [esi + 0x14], 0
je 0x10068b28
mov esi, dword [esp + 0x14]
mov ecx, dword [esi]
xor eax, eax
mov edx, edi
push eax
push eax
call fcn.10001c40
add esp, 8
mov ecx, esi
mov edx, dword [esp + 0x28]
push eax
call fcn.100081d0
add esp, 4
mov dword [esp + 0x28], eax
mov edx, dword [ebp + 8]
mov esi, dword [esp + 8]
mov edi, dword [esp + 0x24]
jmp 0x100683bd
mov edi, dword [esp + 0x14]
jmp 0x10068a42
mov esi, dword [esp + 0xc]
jmp 0x100684d8
mov ebx, dword [esp + 0x10]
mov edx, dword [ebp + 8]
jmp 0x100687d6
mov eax, 0x1019c99f
jmp 0x100687b0
mov eax, dword [esp + 0x20]
cmp word [eax + 0x2a], 0x40
jl 0x10068d31
mov eax, 0x3f
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
mov ecx, dword [edi + 4]
mov edx, dword [esp + 0x40]
mov word [ecx + edx*2], ax
mov ecx, dword [edi + 0x20]
mov dword [ecx + edx*4], 0x1019c99f
inc edx
mov dword [esp + 0x40], edx
inc eax
mov ecx, dword [esp + 0x20]
movsx ecx, word [ecx + 0x2a]
cmp eax, ecx
jl 0x10068b80
jmp 0x10068836
cmp dword [ecx + 0x1f8], 0
jne 0x100688a2
dec dword [eax]
jne 0x100688a2
mov ecx, dword [eax + 0xc]
mov edx, eax
call fcn.10139000
jmp 0x100688a2
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0xc]
mov eax, dword [esi + edi*8 + 0x24]
mov dword [esp + 8], eax
xor eax, eax
mov ebx, dword [esp + 0x18]
mov ecx, ebx
mov edx, 0x45
push eax
push eax
push eax
call fcn.10036aa0
add esp, 0xc
mov dword [esp + 0x20], eax
mov ecx, ebx
mov edx, 0xd
push dword [esi + edi*8 + 0x20]
xor eax, eax
push eax
mov esi, dword [esp + 0x10]
push esi
call fcn.10036aa0
add esp, 0xc
mov ecx, ebx
mov ebx, dword [esp + 0x10]
mov edx, 0xe
xor eax, eax
push eax
push eax
push esi
jmp 0x100688e3
mov edi, dword [esi + 0x38]
mov ecx, eax
lea eax, [edi - 1]
mov dword [esi + 0x38], eax
push 0x10
push eax
push ecx
push esi
call fcn.10044d40
add esp, 0x10
or byte [ebx + 0x26], 2
neg edi
mov dword [esp + 0x10], edi
jmp 0x10068906
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0xc]
mov eax, dword [ecx + 0x38]
add eax, dword [ecx + 0x3c]
js 0x10068d42
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x6c]
mov ecx, dword [ecx + 0x40]
mov edx, dword [esp + 0x10]
mov dword [ecx + edx*4], eax
jmp 0x10068997
cmp dword [esp + 0x20], 0
jns 0x10068c8f
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x6c]
dec eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x30]
add eax, dword [esp + 0x40]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
mov eax, 0x101ddee0
cmp byte [ecx + 0x53], 0
jne 0x10068cbd
mov eax, dword [esp + 0x20]
lea eax, [eax + eax*4]
shl eax, 2
mov ecx, dword [esp + 0x18]
add eax, dword [ecx + 0x68]
mov ecx, dword [esp + 0x30]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 8]
mov eax, dword [ebp + 0x14]
push dword [eax + 8]
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x10]
push dword [edi + eax*8 + 0x28]
mov eax, dword [ebp + 0x14]
push dword [eax + 4]
call fcn.1016b720
add esp, 0xc
xor eax, eax
mov edi, dword [esp + 0x18]
mov ecx, edi
mov edx, 0xb
push eax
push dword [esp + 0xc]
push eax
call fcn.10036aa0
add esp, 0xc
and byte [esi], 0xef
mov esi, edi
jmp 0x100689d5
mov ecx, 0x101ddee0
jmp 0x100689fd
mov ecx, 0x101ddee0
jmp 0x10068a3f
mov ecx, dword [edi]
call fcn.10139110
jmp 0x10068a4e
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
jmp 0x10068836
mov edx, dword [esp + 0x18]
push dword [esp + 0x10]
call fcn.10037c90
add esp, 4
jmp 0x10068997