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

Disassembly:
sub esp, 0x20
push ebx
mov ebx, dword [esp + 0x28]
push ebp
push esi
mov ebp, ecx
mov esi, ebx
cmp dword [ebx + 0x14], 8
mov eax, dword [ebx + 0x10]
push edi
mov dword [esp + 0x18], ebp
jb 0x45092e
mov esi, dword [ebx]
lea edi, [eax + eax]
xor ecx, ecx
mov edx, 0x811c9dc5
test edi, edi
je 0x450951
nop dword [eax]
movzx eax, byte [ecx + esi]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, edi
jb 0x450940
and edx, dword [ebp + 0x324]
mov eax, dword [ebp + 0x318]
mov ebp, dword [ebp + 0x310]
mov ecx, dword [eax + edx*8]
lea eax, [eax + edx*8]
add eax, 4
mov dword [esp + 0x20], ecx
mov esi, ecx
mov dword [esp + 0x1c], eax
cmp ecx, ebp
jne 0x45097e
mov eax, ebp
jmp 0x450982
mov eax, dword [eax]
mov eax, dword [eax]
cmp esi, eax
je 0x4509ec
cmp dword [ebx + 0x14], 8
lea edi, [esi + 8]
mov edx, ebx
jb 0x450993
mov edx, dword [ebx]
cmp dword [edi + 0x14], 8
mov ecx, edi
mov eax, dword [edi + 0x10]
mov dword [esp + 0x14], eax
jb 0x4509a4
mov ecx, dword [edi]
cmp eax, dword [ebx + 0x10]
jne 0x4509b6
push eax
call fcn.00406f00
add esp, 4
test eax, eax
je 0x4509c2
mov esi, dword [esi]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
jmp 0x450976
cmp dword [edi + 0x14], 8
jb 0x4509ca
mov edi, dword [edi]
cmp dword [ebx + 0x14], 8
mov ecx, ebx
jb 0x4509d4
mov ecx, dword [ebx]
mov eax, dword [ebx + 0x10]
cmp eax, dword [esp + 0x14]
jne 0x4509ec
push eax
mov edx, edi
call fcn.00406f00
add esp, 4
test eax, eax
je 0x4509ee
mov esi, ebp
cmp esi, ebp
je 0x4509ff
mov eax, dword [esi + 0x20]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
push ebx
call fcn.00451530
cmp dword [eax + 0x10], 0
jne 0x450a3c
cmp dword [ebx + 0x60], 0
je 0x450b4d
cmp dword [ebx + 0x64], 0
je 0x450b4d
push dword [esp + 0x3c]
mov ecx, dword [esp + 0x1c]
push 0xffff0000
push ebx
call fcn.00450c20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
push ebx
call fcn.00451530
mov ebp, eax
mov esi, ebp
cmp dword [ebp + 0x14], 8
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x20], eax
jb 0x450a56
mov esi, dword [ebp]
lea edi, [eax + eax]
xor ecx, ecx
mov edx, 0x811c9dc5
test edi, edi
je 0x450a75
movzx eax, byte [ecx + esi]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, edi
jb 0x450a64
mov ecx, dword [esp + 0x18]
and edx, dword [ecx + 0x324]
mov eax, dword [ecx + 0x318]
mov ecx, dword [ecx + 0x310]
mov dword [esp + 0x14], ecx
mov edi, dword [eax + edx*8]
lea eax, [eax + edx*8]
add eax, 4
mov dword [esp + 0x24], edi
mov esi, edi
mov dword [esp + 0x28], eax
cmp edi, ecx
jne 0x450aaa
mov eax, ecx
jmp 0x450aae
mov eax, dword [eax]
mov eax, dword [eax]
cmp esi, eax
je 0x450b40
cmp dword [ebp + 0x14], 8
lea edi, [esi + 8]
mov edx, ebp
jb 0x450ac4
mov edx, dword [ebp]
cmp dword [edi + 0x14], 8
mov eax, dword [edi + 0x10]
mov ebx, dword [esp + 0x34]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x1c], edi
jb 0x450ae3
mov ebx, dword [edi]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x34]
cmp eax, dword [esp + 0x20]
jne 0x450afe
mov ecx, dword [esp + 0x1c]
push eax
call fcn.00406f00
add esp, 4
test eax, eax
je 0x450b0a
mov ecx, dword [esp + 0x14]
mov esi, dword [esi]
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
jmp 0x450aa2
cmp dword [edi + 0x14], 8
jb 0x450b12
mov edi, dword [edi]
cmp dword [ebp + 0x14], 8
jb 0x450b1b
mov ebp, dword [ebp]
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x2c]
jne 0x450b3c
push eax
mov edx, edi
mov ecx, ebp
call fcn.00406f00
add esp, 4
test eax, eax
jne 0x450b3c
mov ecx, dword [esp + 0x14]
jmp 0x450b42
mov ecx, dword [esp + 0x14]
mov esi, ecx
cmp esi, ecx
jne 0x450b59
mov eax, dword [esp + 0x38]
mov byte [eax], 1
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
mov eax, dword [esi + 0x20]
test eax, eax
je 0x450b4d
cmp dword [ebx + 0x60], 0
je 0x450b4d
cmp dword [ebx + 0x64], 0
je 0x450b4d
push dword [esp + 0x3c]
mov ecx, dword [esp + 0x1c]
push eax
push ebx
call fcn.00450c20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc