Function at 0x4ab870
Capabilities:
Encode data using xor

Disassembly:
test dword [0x87ed4c], 0xfffff000
jne 0x4ab8a0
test dword [0x87ed4c], 0xffffffff
jne 0x4abb80
call fcn.007663a0
jmp fcn.004ab870
push edi
push ebp
push ebx
sub esp, 0x44
mov ebx, edx
mov ebp, eax
mov ecx, dword [ebp + 8]
shl ebx, 4
mov eax, dword [ecx + ebx + 0xc]
mov edi, dword [eax + 0x1c]
test edi, edi
je 0x4ab8cc
mov eax, dword [edi + 8]
call fcn.0058b4a0
mov edi, dword [edi]
test edi, edi
jne 0x4ab8bb
mov ecx, dword [ebp + 8]
mov dword [esp + 0x1c], ebp
mov edi, dword [ecx + ebx]
mov eax, str.sqlite_stat1
mov dword [esp + 0x20], edi
inc eax
movsx edx, byte [eax]
test edx, edx
jne 0x4ab8dc
mov edx, str.sqlite_stat1
sub eax, edx
mov edx, dword [ebp + 4]
and eax, 0x3fffffff
test edx, edx
jle 0x4aba34
xor ebx, ebx
mov dword [esp + 0x40], edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], esi
mov esi, ebx
xor esi, 1
jmp 0x4ab916
mov esi, ebx
shl esi, 4
test edi, edi
je 0x4ab981
mov ebp, dword [esi + ecx]
lea eax, [edi + 1]
movzx edx, byte [edi]
test edx, edx
je 0x4abb5a
mov dword [esp + 0x3c], ecx
movzx ecx, byte [ebp]
movzx edx, byte [edx + 0x789b60]
movzx ecx, byte [ecx + 0x789b60]
cmp edx, ecx
jne 0x4abb4f
movzx edx, byte [eax]
inc ebp
inc eax
test edx, edx
jne 0x4ab932
mov ecx, dword [esp + 0x3c]
movzx eax, byte [ebp]
movzx edx, byte [edx + 0x789b60]
movzx eax, byte [eax + 0x789b60]
cmp eax, edx
je 0x4ab981
inc ebx
cmp ebx, dword [esp + 0x40]
jge 0x4aba30
cmp ebx, 2
jl 0x4ab90d
jmp 0x4ab914
mov edx, dword [esi + ecx + 0xc]
mov ebp, dword [edx + 0x10]
test ebp, ebp
je 0x4ab9f4
mov esi, str.sqlite_stat1
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x28]
xor eax, eax
test esi, esi
jle 0x4ab9ce
mov dword [esp + 0x24], edi
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x2c]
lea edi, [eax*8]
xor edi, eax
movzx eax, byte [ecx]
inc ecx
movzx eax, byte [eax + 0x789b60]
xor eax, edi
dec esi
test esi, esi
jg 0x4ab9ab
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x3c]
mov esi, dword [edx + 4]
xor edx, edx
div esi
mov eax, dword [ebp + edx*8 + 4]
mov edx, dword [ebp + edx*8]
mov ebp, 1
mov dword [esp + 0x30], ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x28]
jmp 0x4aba0f
mov eax, dword [edx + 0xc]
mov edx, dword [edx + 8]
mov ebp, 1
mov dword [esp + 0x30], ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x28]
test edx, edx
mov ebx, edx
cmovne ebx, ebp
dec edx
test ebx, ebx
je 0x4abb3e
test eax, eax
je 0x4abb3e
cmp ecx, dword [eax + 0x10]
je 0x4aba40
mov eax, dword [eax]
jmp 0x4aba0f
mov esi, dword [esp + 0x38]
mov eax, 1
add esp, 0x44
pop ebx
pop ebp
pop edi
ret
mov esi, dword [eax + 0xc]
mov edi, ecx
mov ebx, str.sqlite_stat1
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edx
xor edx, edx
jmp 0x4aba58
inc esi
inc ebx
test edi, edi
mov eax, edx
cmovg eax, ebp
dec edi
test eax, eax
je 0x4abb2d
movzx eax, byte [esi]
test eax, eax
je 0x4abb2d
movzx eax, byte [eax + 0x789b60]
movzx ecx, byte [ebx]
movzx ecx, byte [ecx + 0x789b60]
cmp eax, ecx
je 0x4aba56
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
test edi, edi
js 0x4abab4
movzx edi, byte [esi]
movzx esi, byte [edi + 0x789b60]
movzx ebx, byte [ebx]
movzx ebx, byte [ebx + 0x789b60]
cmp ebx, esi
jne 0x4aba2c
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x3c]
cmp dword [eax + 8], 0
je 0x4ab96f
mov ebp, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
push edi
push str.SELECT_idx__stat_FROM__Q.sqlite_stat1
push ebp
call fcn.00455e50
add esp, 0xc
mov ebx, eax
test ebx, ebx
jne 0x4abaf2
mov byte [ebp + 0x1e], 1
mov edi, 7
jmp 0x4abb24
lea edi, [esp + 0x1c]
mov dword [esp + 0xc], edi
mov eax, ebp
mov edx, ebx
mov dword [esp + 0x10], 0
mov ecx, 0x4697e0
call fcn.005037fc
mov edi, eax
mov eax, ebp
mov edx, ebx
call fcn.004e33d8
cmp edi, 7
jne 0x4abb24
mov byte [ebp + 0x1e], 1
mov eax, edi
add esp, 0x44
pop ebx
pop ebp
pop edi
ret
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
jmp 0x4aba94
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x3c]
jmp 0x4ab96f
mov eax, ecx
mov ecx, dword [esp + 0x3c]
jmp 0x4ab96b
movzx eax, byte [ebp]
movzx edx, byte [edx + 0x789b60]
movzx eax, byte [eax + 0x789b60]
jmp 0x4ab96b
push edi
push ebp
push ebx
sub esp, 0x3c
mov ebx, edx
mov ebp, eax
mov ecx, dword [ebp + 8]
shl ebx, 4
mov eax, dword [ecx + ebx + 0xc]
mov edi, dword [eax + 0x1c]
test edi, edi
je 0x4abbac
mov eax, dword [edi + 8]
call fcn.0058b4a0
mov edi, dword [edi]
test edi, edi
jne 0x4abb9b
mov ecx, dword [ebp + 8]
mov dword [esp + 0x14], ebp
mov edi, dword [ecx + ebx]
mov dword [esp + 0x18], edi
mov eax, str.sqlite_stat1
inc eax
movsx edx, byte [eax]
test edx, edx
jne 0x4abbbc
mov edx, str.sqlite_stat1
sub eax, edx
and eax, 0x3fffffff
mov edx, dword [ebp + 4]
test edx, edx
jle 0x4abd14
xor ebx, ebx
mov dword [esp + 0x38], edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x30], esi
mov esi, ebx
xor esi, 1
jmp 0x4abbf6
mov esi, ebx
shl esi, 4
test edi, edi
je 0x4abc61
mov ebp, dword [esi + ecx]
lea eax, [edi + 1]
movzx edx, byte [edi]
test edx, edx
je 0x4abe29
mov dword [esp + 0x34], ecx
movzx ecx, byte [ebp]
movzx edx, byte [edx + 0x789b60]
movzx ecx, byte [ecx + 0x789b60]
cmp edx, ecx
jne 0x4abe1e
inc ebp
movzx edx, byte [eax]
inc eax
test edx, edx
jne 0x4abc12
mov ecx, dword [esp + 0x34]
movzx eax, byte [ebp]
movzx edx, byte [edx + 0x789b60]
movzx eax, byte [eax + 0x789b60]
cmp eax, edx
je 0x4abc61
inc ebx
cmp ebx, dword [esp + 0x38]
jge 0x4abd10
cmp ebx, 2
jl 0x4abbed
jmp 0x4abbf4
mov edx, dword [esi + ecx + 0xc]
mov ebp, dword [edx + 0x10]
test ebp, ebp
je 0x4abcd4
mov esi, str.sqlite_stat1
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x1c]
xor eax, eax
test esi, esi
jle 0x4abcae
mov dword [esp + 0x20], edi
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x24]
lea edi, [eax*8]
xor edi, eax
movzx eax, byte [ecx]
movzx eax, byte [eax + 0x789b60]
xor eax, edi
inc ecx
dec esi
test esi, esi
jg 0x4abc8b
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x34]
mov esi, dword [edx + 4]
xor edx, edx
div esi
mov eax, dword [ebp + edx*8 + 4]
mov ebp, dword [ebp + edx*8]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0x34], ecx
mov ebx, dword [esp + 0x1c]
mov ecx, str.sqlite_stat1
jmp 0x4abcef
mov eax, dword [edx + 0xc]
mov ebp, dword [edx + 8]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0x34], ecx
mov ebx, dword [esp + 0x1c]
mov ecx, str.sqlite_stat1
xor edx, edx
test ebp, ebp
setne dl
dec ebp
test edx, edx
je 0x4abe0d
test eax, eax
je 0x4abe0d
cmp ebx, dword [eax + 0x10]
je 0x4abd20
mov eax, dword [eax]
jmp 0x4abcef
mov esi, dword [esp + 0x30]
mov eax, 1
add esp, 0x3c
pop ebx
pop ebp
pop edi
ret
mov edx, dword [eax + 0xc]
mov edi, ebx
mov esi, ecx
mov ecx, edx
jmp 0x4abd2d
inc ecx
inc esi
xor edx, edx
test edi, edi
setg dl
dec edi
test edx, edx
je 0x4abdfd
movzx ebx, byte [ecx]
test ebx, ebx
je 0x4abdfd
movzx edx, byte [ebx + 0x789b60]
movzx ebx, byte [esi]
movzx ebx, byte [ebx + 0x789b60]
cmp edx, ebx
je 0x4abd2b
mov edx, ecx
mov ebx, dword [esp + 0x1c]
mov ecx, str.sqlite_stat1
test edi, edi
js 0x4abd84
movzx edi, byte [edx]
movzx edx, byte [edi + 0x789b60]
movzx esi, byte [esi]
movzx esi, byte [esi + 0x789b60]
cmp esi, edx
jne 0x4abd0c
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x34]
cmp dword [eax + 8], 0
je 0x4abc4f
mov ebp, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
push edi
push str.SELECT_idx__stat_FROM__Q.sqlite_stat1
push ebp
call fcn.00455e50
add esp, 0xc
mov ebx, eax
test ebx, ebx
jne 0x4abdc2
mov byte [ebp + 0x1e], 1
mov edi, 7
jmp 0x4abdf4
lea edi, [esp + 0x14]
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], 0
mov eax, ebp
mov edx, ebx
mov ecx, 0x4697e0
call fcn.005037fc
mov edi, eax
mov eax, ebp
mov edx, ebx
call fcn.004e33d8
cmp edi, 7
jne 0x4abdf4
mov byte [ebp + 0x1e], 1
mov eax, edi
add esp, 0x3c
pop ebx
pop ebp
pop edi
ret
mov edx, ecx
mov ebx, dword [esp + 0x1c]
mov ecx, str.sqlite_stat1
jmp 0x4abd68
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x34]
jmp 0x4abc4f
mov eax, ecx
mov ecx, dword [esp + 0x34]
jmp 0x4abc4b
movzx eax, byte [ebp]
movzx edx, byte [edx + 0x789b60]
movzx eax, byte [eax + 0x789b60]
jmp 0x4abc4b