Function at 0x4890b0
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
mov eax, dword [ebp + 0xc]
push ebx
push esi
mov ebx, ecx
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], ecx
push edi
mov edi, dword [eax + 0x10]
mov dword [esp + 0x10], edi
cmp ecx, 8
jb 0x4890dc
mov esi, dword [eax]
jmp 0x4890de
mov esi, eax
xor ecx, ecx
mov edx, 0x811c9dc5
add edi, edi
je 0x489101
lea esp, [esp]
movzx eax, byte [ecx + esi]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, edi
jb 0x4890f0
mov ecx, dword [ebx + 0x14]
and edx, ecx
cmp dword [ebx + 0x18], edx
ja 0x489114
shr ecx, 1
or eax, 0xffffffff
sub eax, ecx
add edx, eax
mov ecx, dword [ebx + 8]
lea edi, [edx*8]
mov esi, dword [ebx]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x24], edi
mov eax, dword [edi + ecx]
cmp esi, eax
je 0x4891dd
mov esi, dword [edi + ecx + 4]
mov esi, dword [esi]
cmp esi, eax
je 0x4891dd
lea eax, [edx*8]
mov dword [esp + 0x20], eax
lea esp, [esp]
mov esi, dword [esi + 4]
cmp dword [esi + 0x1c], 8
lea ecx, [esi + 8]
mov ebx, dword [ecx + 0x10]
jb 0x489161
mov ecx, dword [ecx]
cmp dword [esp + 0x18], 8
jb 0x48916f
mov eax, dword [ebp + 0xc]
mov edx, dword [eax]
jmp 0x489172
mov edx, dword [ebp + 0xc]
cmp dword [esp + 0x10], ebx
mov edi, ebx
cmovb edi, dword [esp + 0x10]
test edi, edi
jne 0x489194
xor eax, eax
mov edx, dword [esp + 0x10]
test eax, eax
jne 0x4891bc
cmp edx, ebx
jae 0x4891b3
or eax, 0xffffffff
jmp 0x4891ba
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x4891a5
add edx, 2
add ecx, 2
dec edi
jmp 0x48917f
movzx eax, word [edx]
cmp ax, word [ecx]
sbb eax, eax
and eax, 0xfffffffe
inc eax
jmp 0x489183
xor eax, eax
cmp edx, ebx
setne al
test eax, eax
sete al
test al, al
sete al
test al, al
je 0x489221
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
cmp esi, dword [ecx + eax]
jne 0x489150
mov ebx, dword [esp + 0x14]
mov edi, dword [ebp + 0x10]
mov eax, dword [edi]
cmp esi, eax
je 0x489207
mov ecx, dword [edi + 4]
mov dword [ecx], eax
mov ecx, dword [eax + 4]
mov dword [ecx], esi
mov ecx, dword [esi + 4]
mov dword [ecx], edi
mov ecx, dword [eax + 4]
mov edx, dword [esi + 4]
mov dword [esi + 4], ecx
mov ecx, dword [edi + 4]
mov dword [eax + 4], ecx
mov dword [edi + 4], edx
mov ecx, dword [ebx + 8]
mov edx, dword [esp + 0x24]
add ecx, edx
mov eax, dword [ecx]
cmp eax, dword [ebx]
jne 0x489274
mov dword [ecx], edi
mov eax, dword [ebx + 8]
mov dword [edx + eax + 4], edi
jmp 0x489296
cmp dword [esp + 0x18], 8
lea ecx, [esi + 8]
mov eax, dword [ebp + 0xc]
jb 0x489230
mov eax, dword [eax]
push edx
push eax
push dword [ecx + 0x10]
push ecx
call fcn.00473600
test eax, eax
je 0x489243
mov esi, dword [esi]
jmp 0x4891d9
mov edx, dword [ebp + 0x10]
push edx
mov ecx, dword [edx + 4]
mov eax, dword [edx]
mov dword [ecx], eax
mov ecx, dword [edx]
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x18]
dec dword [eax + 4]
call fcn.00488390
mov eax, dword [ebp + 8]
mov dword [eax], esi
mov byte [eax + 4], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp eax, esi
jne 0x48927c
mov dword [ecx], edi
jmp 0x489296
mov eax, dword [ecx + 4]
mov eax, dword [eax]
mov dword [ecx + 4], eax
cmp eax, edi
je 0x489296
mov ecx, dword [ebx + 8]
mov eax, dword [ecx + edx + 4]
mov eax, dword [eax + 4]
mov dword [ecx + edx + 4], eax
mov ecx, ebx
call fcn.004892f0
mov eax, dword [ebp + 8]
mov dword [eax], edi
pop edi
pop esi
mov byte [eax + 4], 1
pop ebx
mov esp, ebp
pop ebp
ret 0xc