Function at 0x402e70
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 0x402e8e
mov esi, dword [ebx]
jmp 0x402e90
mov esi, ebx
xor ecx, ecx
mov edx, 0x811c9dc5
test ebp, ebp
je 0x402eb1
jmp 0x402ea0
movzx eax, byte [esi + ecx]
xor edx, eax
inc ecx
imul edx, edx, 0x1000193
cmp ecx, ebp
jb 0x402ea0
mov esi, dword [edi + 0x14]
mov ecx, esi
and ecx, edx
cmp dword [edi + 0x18], ecx
ja 0x402ec6
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 0x402ee8
mov eax, edx
jmp 0x402eed
mov eax, dword [esi + 4]
mov eax, dword [eax]
cmp ecx, eax
je 0x40305c
cmp dword [ebx + 0x14], 0x10
lea edx, [ecx + 8]
jb 0x402f02
mov edi, dword [ebx]
jmp 0x402f04
mov edi, ebx
cmp dword [edx + 0x14], 0x10
mov ebp, dword [edx + 0x10]
jb 0x402f0f
mov edx, dword [edx]
mov eax, dword [esp + 0x24]
cmp ebp, eax
mov esi, eax
cmovb esi, ebp
test esi, esi
je 0x402f77
sub esi, 4
jb 0x402f34
mov eax, dword [edx]
cmp eax, dword [edi]
jne 0x402f39
add edx, 4
add edi, 4
sub esi, 4
jae 0x402f23
cmp esi, 0xfffffffc
je 0x402f6d
mov al, byte [edx]
cmp al, byte [edi]
jne 0x402f66
cmp esi, 0xfffffffd
je 0x402f6d
mov al, byte [edx + 1]
cmp al, byte [edi + 1]
jne 0x402f66
cmp esi, 0xfffffffe
je 0x402f6d
mov al, byte [edx + 2]
cmp al, byte [edi + 2]
jne 0x402f66
cmp esi, 0xffffffff
je 0x402f6d
mov al, byte [edx + 3]
cmp al, byte [edi + 3]
je 0x402f6d
sbb eax, eax
or eax, 1
jmp 0x402f6f
xor eax, eax
test eax, eax
jne 0x402f88
mov eax, dword [esp + 0x24]
cmp ebp, eax
jb 0x402f88
xor eax, eax
cmp ebp, dword [esp + 0x24]
setne al
test eax, eax
je 0x402f9b
mov ecx, dword [ecx]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
jmp 0x402ee0
cmp dword [ecx + 0x1c], 0x10
mov edi, dword [ecx + 0x18]
lea edx, [ecx + 8]
jb 0x402fa9
mov edx, dword [edx]
cmp dword [ebx + 0x14], 0x10
jb 0x402fb1
mov ebx, dword [ebx]
mov ebp, dword [esp + 0x24]
cmp ebp, edi
mov esi, edi
cmovb esi, ebp
test esi, esi
je 0x403015
sub esi, 4
jb 0x402fd6
mov eax, dword [ebx]
cmp eax, dword [edx]
jne 0x402fdb
add ebx, 4
add edx, 4
sub esi, 4
jae 0x402fc5
cmp esi, 0xfffffffc
je 0x40300f
mov al, byte [ebx]
cmp al, byte [edx]
jne 0x403008
cmp esi, 0xfffffffd
je 0x40300f
mov al, byte [ebx + 1]
cmp al, byte [edx + 1]
jne 0x403008
cmp esi, 0xfffffffe
je 0x40300f
mov al, byte [ebx + 2]
cmp al, byte [edx + 2]
jne 0x403008
cmp esi, 0xffffffff
je 0x40300f
mov al, byte [ebx + 3]
cmp al, byte [edx + 3]
je 0x40300f
sbb eax, eax
or eax, 1
jmp 0x403011
xor eax, eax
test eax, eax
jne 0x40303e
cmp ebp, edi
jb 0x40303e
xor eax, eax
cmp ebp, edi
setne al
test eax, eax
jne 0x40303e
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