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

Disassembly:
sub esp, 0xc
push ebx
mov ebx, dword [esp + 0x18]
push ebp
cmp dword [ebx + 0x14], 0x10
mov ebp, dword [ebx + 0x10]
push esi
push edi
mov edi, ecx
mov dword [esp + 0x24], ebp
jb 0x402e3e
mov esi, dword [ebx]
jmp 0x402e40
mov esi, ebx
xor ecx, ecx
mov edx, 0x811c9dc5
test ebp, ebp
je 0x402e61
jmp 0x402e50
movzx eax, byte [esi + ecx]
xor edx, eax
inc ecx
imul edx, edx, 0x1000193
cmp ecx, ebp
jb 0x402e50
mov esi, dword [edi + 0x14]
mov ecx, esi
and ecx, edx
cmp dword [edi + 0x18], ecx
ja 0x402e76
shr esi, 1
or eax, 0xffffffff
sub eax, esi
add ecx, eax
mov eax, dword [edi + 8]
mov edx, dword [edi]
lea esi, [eax + ecx*8]
mov dword [esp + 0x18], esi
mov eax, dword [esi]
mov dword [esp + 0x14], eax
mov ecx, eax
mov dword [esp + 0x10], edx
mov edi, edi
cmp eax, edx
jne 0x402e98
mov eax, edx
jmp 0x402e9d
mov eax, dword [esi + 4]
mov eax, dword [eax]
cmp ecx, eax
je 0x40300c
cmp dword [ebx + 0x14], 0x10
lea edx, [ecx + 8]
jb 0x402eb2
mov edi, dword [ebx]
jmp 0x402eb4
mov edi, ebx
cmp dword [edx + 0x14], 0x10
mov ebp, dword [edx + 0x10]
jb 0x402ebf
mov edx, dword [edx]
mov eax, dword [esp + 0x24]
cmp ebp, eax
mov esi, eax
cmovb esi, ebp
test esi, esi
je 0x402f27
sub esi, 4
jb 0x402ee4
mov eax, dword [edx]
cmp eax, dword [edi]
jne 0x402ee9
add edx, 4
add edi, 4
sub esi, 4
jae 0x402ed3
cmp esi, 0xfffffffc
je 0x402f1d
mov al, byte [edx]
cmp al, byte [edi]
jne 0x402f16
cmp esi, 0xfffffffd
je 0x402f1d
mov al, byte [edx + 1]
cmp al, byte [edi + 1]
jne 0x402f16
cmp esi, 0xfffffffe
je 0x402f1d
mov al, byte [edx + 2]
cmp al, byte [edi + 2]
jne 0x402f16
cmp esi, 0xffffffff
je 0x402f1d
mov al, byte [edx + 3]
cmp al, byte [edi + 3]
je 0x402f1d
sbb eax, eax
or eax, 1
jmp 0x402f1f
xor eax, eax
test eax, eax
jne 0x402f38
mov eax, dword [esp + 0x24]
cmp ebp, eax
jb 0x402f38
xor eax, eax
cmp ebp, dword [esp + 0x24]
setne al
test eax, eax
je 0x402f4b
mov ecx, dword [ecx]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
jmp 0x402e90
cmp dword [ecx + 0x1c], 0x10
mov edi, dword [ecx + 0x18]
lea edx, [ecx + 8]
jb 0x402f59
mov edx, dword [edx]
cmp dword [ebx + 0x14], 0x10
jb 0x402f61
mov ebx, dword [ebx]
mov ebp, dword [esp + 0x24]
cmp ebp, edi
mov esi, edi
cmovb esi, ebp
test esi, esi
je 0x402fc5
sub esi, 4
jb 0x402f86
mov eax, dword [ebx]
cmp eax, dword [edx]
jne 0x402f8b
add ebx, 4
add edx, 4
sub esi, 4
jae 0x402f75
cmp esi, 0xfffffffc
je 0x402fbf
mov al, byte [ebx]
cmp al, byte [edx]
jne 0x402fb8
cmp esi, 0xfffffffd
je 0x402fbf
mov al, byte [ebx + 1]
cmp al, byte [edx + 1]
jne 0x402fb8
cmp esi, 0xfffffffe
je 0x402fbf
mov al, byte [ebx + 2]
cmp al, byte [edx + 2]
jne 0x402fb8
cmp esi, 0xffffffff
je 0x402fbf
mov al, byte [ebx + 3]
cmp al, byte [edx + 3]
je 0x402fbf
sbb eax, eax
or eax, 1
jmp 0x402fc1
xor eax, eax
test eax, eax
jne 0x402fee
cmp ebp, edi
jb 0x402fee
xor eax, eax
cmp ebp, edi
setne al
test eax, eax
jne 0x402fee
mov eax, dword [esp + 0x20]
pop edi
mov dword [esp + 0x20], ecx
lea ecx, [esp + 0x20]
pop esi
mov ecx, dword [ecx]
pop ebp
mov dword [eax], ecx
pop ebx
add esp, 0xc
ret 8
mov eax, dword [esp + 0x10]
pop edi
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0x20]
pop esi
mov ecx, dword [ecx]
pop ebp
mov dword [eax], ecx
pop ebx
add esp, 0xc
ret 8
mov eax, dword [esp + 0x20]
pop edi
pop esi
pop ebp
mov dword [eax], edx
pop ebx
add esp, 0xc
ret 8