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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
mov ebx, ecx
cmp dword [edi + 0x14], 0x10
mov eax, dword [edi + 0x10]
mov dword [ebp - 4], eax
jb 0x43157e
mov esi, dword [edi]
jmp 0x431580
mov esi, edi
xor ecx, ecx
mov edx, 0x811c9dc5
test eax, eax
je 0x4315a4
mov edi, eax
nop dword [eax]
movzx eax, byte [esi + ecx]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, edi
jb 0x431590
mov edi, dword [ebp + 0xc]
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0xc]
and eax, edx
mov ebx, dword [ebx + 4]
mov dword [ebp - 8], ebx
mov edx, dword [ecx + eax*8]
add eax, eax
mov esi, dword [ecx + eax*4]
inc eax
mov dword [ebp - 0xc], esi
lea eax, [ecx + eax*4]
mov dword [ebp - 0x10], eax
mov dword [ebp + 0xc], edx
cmp esi, ebx
jne 0x4315cf
mov eax, ebx
jmp 0x4315d3
mov eax, dword [eax]
mov eax, dword [eax]
cmp edx, eax
je 0x431726
cmp dword [edi + 0x14], 0x10
lea ecx, [edx + 8]
jb 0x4315e8
mov esi, dword [edi]
jmp 0x4315ea
mov esi, edi
cmp dword [ecx + 0x14], 0x10
mov ebx, dword [ecx + 0x10]
jb 0x4315f5
mov ecx, dword [ecx]
mov eax, dword [ebp - 4]
cmp ebx, eax
mov edx, eax
cmovb edx, ebx
test edx, edx
je 0x43165b
sub edx, 4
jb 0x431619
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x43161e
add ecx, 4
add esi, 4
sub edx, 4
jae 0x431608
cmp edx, 0xfffffffc
je 0x431652
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x43164b
cmp edx, 0xfffffffd
je 0x431652
mov al, byte [ecx + 1]
cmp al, byte [esi + 1]
jne 0x43164b
cmp edx, 0xfffffffe
je 0x431652
mov al, byte [ecx + 2]
cmp al, byte [esi + 2]
jne 0x43164b
cmp edx, 0xffffffff
je 0x431652
mov al, byte [ecx + 3]
cmp al, byte [esi + 3]
je 0x431652
sbb eax, eax
or eax, 1
jmp 0x431654
xor eax, eax
test eax, eax
jne 0x43166b
mov eax, dword [ebp - 4]
cmp ebx, eax
jb 0x43166b
xor eax, eax
cmp ebx, dword [ebp - 4]
setne al
test eax, eax
je 0x43167e
mov edx, dword [ebp + 0xc]
mov ebx, dword [ebp - 8]
mov esi, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov edx, dword [edx]
jmp 0x4315c4
mov ecx, dword [ebp + 0xc]
add ecx, 8
cmp dword [ecx + 0x14], 0x10
mov esi, dword [ecx + 0x10]
jb 0x43168f
mov ecx, dword [ecx]
cmp dword [edi + 0x14], 0x10
jb 0x431697
mov edi, dword [edi]
mov ebx, dword [ebp - 4]
mov edx, esi
cmp ebx, esi
cmovb edx, ebx
test edx, edx
je 0x431700
sub edx, 4
jb 0x4316c1
nop word [eax + eax]
mov eax, dword [edi]
cmp eax, dword [ecx]
jne 0x4316c6
add edi, 4
add ecx, 4
sub edx, 4
jae 0x4316b0
cmp edx, 0xfffffffc
je 0x4316fa
mov al, byte [edi]
cmp al, byte [ecx]
jne 0x4316f3
cmp edx, 0xfffffffd
je 0x4316fa
mov al, byte [edi + 1]
cmp al, byte [ecx + 1]
jne 0x4316f3
cmp edx, 0xfffffffe
je 0x4316fa
mov al, byte [edi + 2]
cmp al, byte [ecx + 2]
jne 0x4316f3
cmp edx, 0xffffffff
je 0x4316fa
mov al, byte [edi + 3]
cmp al, byte [ecx + 3]
je 0x4316fa
sbb eax, eax
or eax, 1
jmp 0x4316fc
xor eax, eax
test eax, eax
jne 0x43170f
cmp ebx, esi
jb 0x43170f
xor eax, eax
cmp ebx, esi
setne al
test eax, eax
je 0x431715
mov eax, dword [ebp - 8]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
pop edi
pop esi
mov dword [eax], ecx
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [ebp + 8]
pop edi
pop esi
mov dword [eax], ebx
pop ebx
mov esp, ebp
pop ebp
ret 8