Function at 0x6658cc10
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
mov ebp, ecx
push esi
push ebx
mov esi, eax
mov ebx, edx
sub esp, 0x3c
lea ecx, [esp + 0x2c]
call sym._findElementWithHash
test eax, eax
je 0x6658cc50
test ebp, ebp
mov edi, dword [eax + 8]
je 0x6658cdb1
mov dword [eax + 8], ebp
mov dword [eax + 0xc], ebx
mov edx, edi
add esp, 0x3c
mov eax, edx
pop ebx
pop esi
pop edi
pop ebp
ret
test ebp, ebp
je 0x6658ce14
xor edx, edx
mov eax, 0x10
call sym._sqlite3Malloc
test eax, eax
mov edi, eax
mov edx, ebp
je 0x6658cc3d
mov dword [eax + 0xc], ebx
mov dword [eax + 8], ebp
mov eax, dword [esi + 4]
lea edx, [eax + 1]
cmp edx, 9
mov dword [esi + 4], edx
jbe 0x6658cd90
mov ecx, dword [esi]
lea eax, [ecx + ecx]
cmp edx, eax
jbe 0x6658cd90
lea ebp, [edx + edx]
shl edx, 4
cmp edx, 0x401
mov edx, pe_nt_image_headers32
cmovae ebp, edx
cmp ecx, ebp
je 0x6658cd90
mov edx, dword [0x6663c47c]
test edx, edx
je 0x6658ccb9
call edx
lea eax, [ebp*8]
xor edx, edx
call sym._sqlite3Malloc
mov ebp, eax
mov eax, dword [0x6663c480]
test eax, eax
je 0x6658ccd4
call eax
test ebp, ebp
je 0x6658cd90
mov eax, dword [esi + 0xc]
mov dword [esp], eax
call sym.libsqlite3_0.dll_sqlite3_free
mov dword [esi + 0xc], ebp
mov dword [esp], ebp
call dword [0x666191b0]
shr eax, 3
mov dword [esi], eax
mov dword [esp + 0x14], eax
shl eax, 3
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov dword [esp], ebp
call sym._memset
mov eax, dword [esi + 8]
lea ecx, [esi + 8]
mov dword [esi + 8], 0
mov dword [esp + 0x10], ecx
test eax, eax
je 0x6658ce27
mov dword [esp + 0x18], edi
mov ecx, eax
mov edi, dword [esp + 0x14]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x14], esi
nop
mov eax, dword [ecx + 0xc]
movzx ebx, byte [eax]
lea edx, [eax + 1]
test bl, bl
je 0x6658ce6a
xor eax, eax
movzx ebx, byte [ebx + 0x66626580]
lea esi, [eax*8]
add edx, 1
xor esi, ebx
movzx ebx, byte [edx - 1]
xor eax, esi
test bl, bl
jne 0x6658cd53
xor edx, edx
div edi
shl edx, 3
mov ebx, dword [ecx]
mov eax, dword [esp + 0x10]
add edx, ebp
call sym._insertElement.isra.14
test ebx, ebx
je 0x6658ce1b
mov ecx, ebx
jmp 0x6658cd40
lea ebp, [esi + 8]
mov edx, dword [esi + 0xc]
test edx, edx
je 0x6658cda1
mov eax, dword [esp + 0x2c]
lea edx, [edx + eax*8]
mov ecx, edi
mov eax, ebp
call sym._insertElement.isra.14
xor edx, edx
jmp 0x6658cc3d
mov ecx, dword [eax + 4]
mov edx, dword [esp + 0x2c]
mov ebx, dword [eax]
test ecx, ecx
je 0x6658ce0a
mov dword [ecx], ebx
mov ebx, dword [eax]
test ebx, ebx
je 0x6658cdc9
mov dword [ebx + 4], ecx
mov ecx, dword [esi + 0xc]
test ecx, ecx
je 0x6658cddb
lea ecx, [ecx + edx*8]
cmp eax, dword [ecx + 4]
je 0x6658ce0f
sub dword [ecx], 1
mov dword [esp], eax
call sym.libsqlite3_0.dll_sqlite3_free
mov eax, dword [esi + 4]
mov edx, edi
sub eax, 1
test eax, eax
mov dword [esi + 4], eax
jne 0x6658cc3d
mov eax, esi
mov dword [esp + 0x10], edi
call sym._sqlite3HashClear
mov edx, dword [esp + 0x10]
jmp 0x6658cc3d
mov dword [esi + 8], ebx
jmp 0x6658cdc2
mov dword [ecx + 4], ebx
jmp 0x6658cdd8
xor edx, edx
jmp 0x6658cc3d
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
movzx edx, byte [ebx]
xor eax, eax
mov ebp, dword [esp + 0x10]
lea ecx, [ebx + 1]
test dl, dl
je 0x6658ce5d
mov esi, esi
lea edi, [edi]
movzx edx, byte [edx + 0x66626580]
lea ebx, [eax*8]
add ecx, 1
xor ebx, edx
movzx edx, byte [ecx - 1]
xor eax, ebx
test dl, dl
jne 0x6658ce40
xor edx, edx
div dword [esi]
mov dword [esp + 0x2c], edx
jmp 0x6658cd93
xor edx, edx
jmp 0x6658cd77