Function at 0x45ff00
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
mov dword [esp + 8], ecx
push esi
mov ecx, dword [eax + 0x14]
mov ebx, dword [eax + 0x10]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], ecx
push edi
cmp ecx, 0x10
jb 0x45ff2a
mov esi, dword [eax]
jmp 0x45ff2c
mov esi, eax
xor ecx, ecx
mov edx, 0x811c9dc5
test ebx, ebx
je 0x45ff48
movzx eax, byte [ecx + esi]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, ebx
jb 0x45ff37
mov ebx, dword [esp + 0x10]
mov esi, dword [ebx + 0x14]
mov ecx, esi
and ecx, edx
cmp dword [ebx + 0x18], ecx
ja 0x45ff61
shr esi, 1
or eax, 0xffffffff
sub eax, esi
add ecx, eax
mov edx, dword [ebx + 8]
lea esi, [ecx*8]
mov edi, dword [ebx]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x24], esi
mov eax, dword [esi + edx]
cmp edi, eax
je 0x460063
mov edi, dword [esi + edx + 4]
mov edi, dword [edi]
cmp edi, eax
je 0x460063
lea eax, [ecx*8]
mov dword [esp + 0x20], eax
lea esp, [esp]
mov edi, dword [edi + 4]
cmp dword [edi + 0x1c], 0x10
lea ecx, [edi + 8]
mov ebx, dword [ecx + 0x10]
jb 0x45ffb1
mov ecx, dword [ecx]
cmp dword [esp + 0x18], 0x10
jb 0x45ffbf
mov eax, dword [ebp + 0xc]
mov esi, dword [eax]
jmp 0x45ffc2
mov esi, dword [ebp + 0xc]
cmp dword [esp + 0x14], ebx
mov edx, ebx
cmovb edx, dword [esp + 0x14]
test edx, edx
je 0x46002c
sub edx, 4
jb 0x45ffe7
mov eax, dword [esi]
cmp eax, dword [ecx]
jne 0x45ffec
add esi, 4
add ecx, 4
sub edx, 4
jae 0x45ffd6
cmp edx, 0xfffffffc
je 0x460020
mov al, byte [esi]
cmp al, byte [ecx]
jne 0x460019
cmp edx, 0xfffffffd
je 0x460020
mov al, byte [esi + 1]
cmp al, byte [ecx + 1]
jne 0x460019
cmp edx, 0xfffffffe
je 0x460020
mov al, byte [esi + 2]
cmp al, byte [ecx + 2]
jne 0x460019
cmp edx, 0xffffffff
je 0x460020
mov al, byte [esi + 3]
cmp al, byte [ecx + 3]
je 0x460020
sbb eax, eax
or eax, 1
jmp 0x460022
xor eax, eax
test eax, eax
je 0x46002c
mov edx, dword [esp + 0x14]
jmp 0x460040
mov edx, dword [esp + 0x14]
cmp edx, ebx
jae 0x460039
or eax, 0xffffffff
jmp 0x460040
xor eax, eax
cmp edx, ebx
setne al
test eax, eax
sete al
test al, al
sete al
test al, al
je 0x4600a7
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
cmp edi, dword [ecx + eax]
jne 0x45ffa0
mov ebx, dword [esp + 0x10]
mov esi, dword [ebp + 0x10]
mov eax, dword [esi]
cmp edi, eax
je 0x46008d
mov ecx, dword [esi + 4]
mov dword [ecx], eax
mov ecx, dword [eax + 4]
mov dword [ecx], edi
mov ecx, dword [edi + 4]
mov dword [ecx], esi
mov ecx, dword [eax + 4]
mov edx, dword [edi + 4]
mov dword [edi + 4], ecx
mov ecx, dword [esi + 4]
mov dword [eax + 4], ecx
mov dword [esi + 4], edx
mov ecx, dword [ebx + 8]
mov edx, dword [esp + 0x24]
add ecx, edx
mov eax, dword [ecx]
cmp eax, dword [ebx]
jne 0x4600e8
mov dword [ecx], esi
mov eax, dword [ebx + 8]
mov dword [eax + edx + 4], esi
jmp 0x46010a
cmp dword [esp + 0x18], 0x10
lea ecx, [edi + 8]
mov eax, dword [ebp + 0xc]
jb 0x4600b6
mov eax, dword [eax]
push edx
push eax
push dword [ecx + 0x10]
push 0
call fcn.004970e0
test eax, eax
je 0x4600ca
mov edi, dword [edi]
jmp 0x46005f
push dword [ebp + 0x10]
mov ecx, dword [esp + 0x14]
call fcn.00461500
mov eax, dword [ebp + 8]
mov dword [eax], edi
mov byte [eax + 4], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp eax, edi
jne 0x4600f0
mov dword [ecx], esi
jmp 0x46010a
mov eax, dword [ecx + 4]
mov eax, dword [eax]
mov dword [ecx + 4], eax
cmp eax, esi
je 0x46010a
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.00461550
mov eax, dword [ebp + 8]
pop edi
mov dword [eax], esi
pop esi
mov byte [eax + 4], 1
pop ebx
mov esp, ebp
pop ebp
ret 0xc