Function at 0x1002ae70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x14
xor eax, eax
cmp dword [ecx], eax
push ebx
mov ebx, dword [ebp + 0x1c]
sete al
push esi
dec ebx
push edi
mov edi, dword [ebp + 0x18]
mov dword [esp + 0x14], edx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x18], eax
mov esi, 0xd
mov edx, ebx
js 0x1002aeb6
nop
movzx ecx, byte [edx + edi]
lea eax, [esi*8]
xor ecx, eax
xor esi, ecx
dec edx
jns 0x1002aea0
mov ecx, dword [esp + 0xc]
movzx edx, byte [ebp + 0x14]
lea eax, [esi*8]
xor eax, edx
xor eax, esi
mov dword [esp + 0x1c], edx
xor edx, edx
div dword [ecx + 0xc]
mov esi, dword [ecx + 0x14]
mov eax, edx
mov dword [esp + 0x10], eax
shl eax, 2
mov esi, dword [eax + esi]
test esi, esi
je 0x1002afe4
mov al, byte [ebp + 0x14]
cmp byte [esi + 0x28], al
jne 0x1002af47
mov eax, dword [ebp + 0x1c]
cmp dword [esi + 0x14], eax
jne 0x1002af44
mov edx, edi
mov edi, eax
lea ecx, [esi + 0x29]
sub edi, 4
jb 0x1002af12
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x1002af17
add ecx, 4
add edx, 4
sub edi, 4
jae 0x1002af01
cmp edi, 0xfffffffc
je 0x1002af56
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x1002af44
cmp edi, 0xfffffffd
je 0x1002af56
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x1002af44
cmp edi, 0xfffffffe
je 0x1002af56
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x1002af44
cmp edi, 0xffffffff
je 0x1002af56
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x1002af56
mov al, byte [ebp + 0x14]
mov esi, dword [esi]
test esi, esi
je 0x1002afe0
mov edi, dword [ebp + 0x18]
jmp 0x1002aee8
mov ecx, dword [esi + 8]
mov eax, ecx
sub eax, dword [esi + 0x10]
cmp eax, 0x16
jge 0x1002afcc
lea edi, [ecx + ecx]
call sym.SQLite.Interop.dll_sqlite3_initialize
test eax, eax
jne 0x1002b39b
xor ecx, ecx
mov eax, edi
test edi, edi
cmovs eax, ecx
cdq
push edx
push eax
mov ecx, esi
call fcn.100eca20
add esp, 8
test eax, eax
je 0x1002b39b
mov ebx, dword [esp + 0xc]
mov dword [eax + 8], edi
mov edi, dword [esp + 0x10]
mov edx, dword [ebx + 0x14]
lea ecx, [edi*4]
add edx, ecx
mov ecx, dword [edx]
cmp ecx, esi
je 0x1002afb8
mov edi, edi
mov edx, ecx
mov ecx, dword [edx]
cmp ecx, esi
jne 0x1002afb0
mov ecx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov esi, eax
mov dword [edx], eax
mov eax, dword [esi + 0x10]
neg eax
jmp 0x1002b161
mov eax, dword [esi + 0x10]
mov ebx, dword [esp + 0xc]
mov ecx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
neg eax
jmp 0x1002b161
mov ecx, dword [esp + 0xc]
mov edi, dword [ebp + 0x1c]
add edi, 0x6a
mov eax, 0x80
cmp edi, eax
cmovl edi, eax
mov eax, dword [ecx + 8]
add eax, eax
cmp eax, dword [ecx + 0xc]
jl 0x1002b04e
call fcn.1002b4a0
test eax, eax
jne 0x1002b3a0
lea edx, [eax + 0xd]
test ebx, ebx
js 0x1002b032
mov esi, dword [ebp + 0x18]
jmp 0x1002b020
movzx ecx, byte [ebx + esi]
lea eax, [edx*8]
xor ecx, eax
xor edx, ecx
dec ebx
jns 0x1002b020
mov ebx, dword [esp + 0xc]
lea eax, [edx*8]
xor eax, dword [esp + 0x1c]
xor eax, edx
xor edx, edx
div dword [ebx + 0xc]
mov dword [esp + 0x10], edx
jmp 0x1002b052
mov ebx, dword [esp + 0xc]
call sym.SQLite.Interop.dll_sqlite3_initialize
test eax, eax
jne 0x1002b39b
test edi, edi
jle 0x1002b07a
mov eax, edi
cdq
mov ecx, eax
or ecx, edx
je 0x1002b07a
push edx
push eax
call fcn.100ecdb0
add esp, 8
mov esi, eax
jmp 0x1002b07c
xor esi, esi
test esi, esi
je 0x1002b39b
mov al, byte [ebp + 0x14]
xorps xmm0, xmm0
movq qword [esi], xmm0
movq qword [esi + 8], xmm0
movq qword [esi + 0x10], xmm0
movq qword [esi + 0x18], xmm0
movq qword [esi + 0x20], xmm0
mov dword [esi + 8], edi
mov edi, dword [ebp + 0x1c]
push edi
push dword [ebp + 0x18]
mov byte [esi + 0x28], al
lea eax, [esi + 0x29]
push eax
call fcn.100086a0
mov dword [esi + 0x14], edi
mov byte [esi + edi + 0x29], 0
lea eax, [edi + 0x2a]
mov edi, dword [esp + 0x1c]
mov dword [esi + 0x10], eax
mov eax, dword [ebx + 0x14]
add esp, 0xc
mov eax, dword [eax + edi*4]
mov dword [esi], eax
mov eax, dword [ebx + 0x14]
mov dword [eax + edi*4], esi
inc dword [ebx + 8]
mov edx, dword [esi + 0x10]
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
add edx, esi
test edi, edi
ja 0x1002b12d
jb 0x1002b0f4
cmp eax, 0x7f
ja 0x1002b0ff
and al, 0x7f
mov byte [edx], al
mov eax, 1
jmp 0x1002b139
test edi, edi
ja 0x1002b12d
jb 0x1002b10c
cmp eax, 0x3fff
ja 0x1002b12d
mov ecx, eax
mov eax, edi
shrd ecx, eax, 7
or cl, 0x80
shr eax, 7
mov byte [edx], cl
mov ecx, dword [ebp + 8]
mov al, cl
and al, 0x7f
mov byte [edx + 1], al
mov eax, 2
jmp 0x1002b13c
push edi
push eax
mov ecx, edx
call fcn.10018210
add esp, 8
mov ecx, dword [ebp + 8]
add dword [esi + 0x10], eax
mov eax, dword [esi + 0x10]
mov dword [esi + 0x20], ecx
mov dword [esi + 0x24], edi
mov dword [esi + 0xc], eax
cmp dword [ebx], 1
je 0x1002b15e
inc eax
mov dword [esi + 0x10], eax
mov eax, dword [ebx]
neg eax
sbb eax, eax
mov word [esi + 0x1a], ax
mov eax, dword [esi + 0x10]
mov dword [esp + 0x10], eax
cmp ecx, dword [esi + 0x20]
jne 0x1002b173
cmp edi, dword [esi + 0x24]
je 0x1002b20e
mov edx, esi
mov ecx, ebx
call fcn.1002b3b0
mov ecx, dword [ebp + 8]
sub ecx, dword [esi + 0x20]
mov edx, edi
sbb edx, dword [esi + 0x24]
mov edi, dword [esi + 0x10]
add edi, esi
test edx, edx
ja 0x1002b1cb
jb 0x1002b197
cmp ecx, 0x7f
ja 0x1002b1a3
and cl, 0x7f
mov byte [edi], cl
mov eax, 1
jmp 0x1002b1d7
test edx, edx
ja 0x1002b1cb
jb 0x1002b1b1
cmp ecx, 0x3fff
ja 0x1002b1cb
mov eax, ecx
shrd eax, edx, 7
or al, 0x80
shr edx, 7
and cl, 0x7f
mov byte [edi], al
mov byte [edi + 1], cl
mov eax, 2
jmp 0x1002b1d7
push edx
push ecx
mov ecx, edi
call fcn.10018210
add esp, 8
mov ecx, dword [ebp + 8]
add dword [esi + 0x10], eax
mov eax, dword [esi + 0x10]
mov dword [esi + 0x20], ecx
mov ecx, dword [ebp + 0xc]
mov dword [esi + 0x24], ecx
mov dword [esi + 0xc], eax
cmp dword [ebx], 1
mov dword [esp + 0x18], 1
je 0x1002b20e
inc eax
mov dword [esi + 0x10], eax
mov eax, dword [ebx]
neg eax
sbb eax, eax
mov word [esi + 0x1a], ax
mov dword [esi + 0x1c], 0
mov edi, dword [esp + 0x14]
test edi, edi
js 0x1002b382
mov ecx, dword [ebx]
cmp ecx, 1
jne 0x1002b239
mov eax, dword [esi + 0x10]
add eax, dword [esp + 0x10]
mov byte [esi + 0x19], cl
mov ecx, dword [ebx + 4]
add dword [ecx], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movsx eax, word [esi + 0x1a]
cmp edi, eax
je 0x1002b2b6
test ecx, ecx
jne 0x1002b30c
mov eax, dword [esi + 0x10]
mov byte [esi + eax], 1
inc dword [esi + 0x10]
mov ecx, dword [esi + 0x10]
mov eax, edi
cdq
add ecx, esi
mov ebx, eax
test edx, edx
ja 0x1002b29a
jb 0x1002b268
cmp ebx, 0x7f
ja 0x1002b274
and bl, 0x7f
mov byte [ecx], bl
mov eax, 1
jmp 0x1002b2a4
test edx, edx
ja 0x1002b29a
jb 0x1002b282
cmp ebx, 0x3fff
ja 0x1002b29a
shrd eax, edx, 7
or al, 0x80
shr edx, 7
and bl, 0x7f
mov byte [ecx], al
mov byte [ecx + 1], bl
mov eax, 2
jmp 0x1002b2a4
push edx
push ebx
call fcn.10018210
add esp, 8
add dword [esi + 0x10], eax
mov ebx, dword [esp + 0xc]
mov word [esi + 0x1a], di
mov dword [esi + 0x1c], 0
cmp dword [esp + 0x18], 0
je 0x1002b386
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x14], edi
mov eax, edi
sub eax, dword [esi + 0x1c]
mov edi, dword [esi + 0x10]
add eax, 2
cdq
add edi, esi
mov ecx, eax
test edx, edx
ja 0x1002b357
jb 0x1002b2e3
cmp ecx, 0x7f
ja 0x1002b312
mov edx, dword [esp + 0x14]
and cl, 0x7f
mov byte [edi], cl
mov eax, 1
add dword [esi + 0x10], eax
mov eax, dword [esi + 0x10]
add eax, dword [esp + 0x10]
mov dword [esi + 0x1c], edx
mov ecx, dword [ebx + 4]
add dword [ecx], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov word [esi + 0x1a], di
jmp 0x1002b2c8
test edx, edx
ja 0x1002b357
jb 0x1002b320
cmp ecx, 0x3fff
ja 0x1002b357
mov eax, ecx
shrd eax, edx, 7
or al, 0x80
mov byte [edi], al
and cl, 0x7f
mov byte [edi + 1], cl
mov eax, 2
add dword [esi + 0x10], eax
mov eax, dword [esi + 0x10]
add eax, dword [esp + 0x10]
shr edx, 7
mov edx, dword [esp + 0x14]
mov dword [esi + 0x1c], edx
mov ecx, dword [ebx + 4]
add dword [ecx], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push edx
push ecx
mov ecx, edi
call fcn.10018210
add dword [esi + 0x10], eax
mov edx, dword [esp + 0x1c]
mov eax, dword [esi + 0x10]
add eax, dword [esp + 0x18]
mov dword [esi + 0x1c], edx
mov ecx, dword [ebx + 4]
add esp, 8
add dword [ecx], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov byte [esi + 0x18], 1
mov eax, dword [esi + 0x10]
add eax, dword [esp + 0x10]
mov ecx, dword [ebx + 4]
add dword [ecx], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 7
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret