Function at 0x413070
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
push esi
mov ebx, ecx
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], ecx
push edi
mov edi, dword [eax + 0x10]
mov dword [esp + 0x10], edi
cmp ecx, 8
jb 0x41309c
mov esi, dword [eax]
jmp 0x41309e
mov esi, eax
xor ecx, ecx
mov edx, 0x811c9dc5
add edi, edi
je 0x4130c1
lea esp, [esp]
movzx eax, byte [ecx + esi]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, edi
jb 0x4130b0
mov ecx, dword [ebx + 0x14]
and edx, ecx
cmp dword [ebx + 0x18], edx
ja 0x4130d4
shr ecx, 1
or eax, 0xffffffff
sub eax, ecx
add edx, eax
mov ecx, dword [ebx + 8]
lea edi, [edx*8]
mov esi, dword [ebx]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x24], edi
mov eax, dword [edi + ecx]
cmp esi, eax
je 0x41319d
mov esi, dword [edi + ecx + 4]
mov esi, dword [esi]
cmp esi, eax
je 0x41319d
lea eax, [edx*8]
mov dword [esp + 0x20], eax
lea esp, [esp]
mov esi, dword [esi + 4]
cmp dword [esi + 0x1c], 8
lea ecx, [esi + 8]
mov ebx, dword [ecx + 0x10]
jb 0x413121
mov ecx, dword [ecx]
cmp dword [esp + 0x18], 8
jb 0x41312f
mov eax, dword [ebp + 0xc]
mov edx, dword [eax]
jmp 0x413132
mov edx, dword [ebp + 0xc]
cmp dword [esp + 0x10], ebx
mov edi, ebx
cmovb edi, dword [esp + 0x10]
test edi, edi
jne 0x413154
xor eax, eax
mov edx, dword [esp + 0x10]
test eax, eax
jne 0x41317c
cmp edx, ebx
jae 0x413173
or eax, 0xffffffff
jmp 0x41317a
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x413165
add edx, 2
add ecx, 2
dec edi
jmp 0x41313f
movzx eax, word [edx]
cmp ax, word [ecx]
sbb eax, eax
and eax, 0xfffffffe
inc eax
jmp 0x413143
xor eax, eax
cmp edx, ebx
setne al
test eax, eax
sete al
test al, al
sete al
test al, al
je 0x4131e1
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
cmp esi, dword [ecx + eax]
jne 0x413110
mov ebx, dword [esp + 0x14]
mov edi, dword [ebp + 0x10]
mov eax, dword [edi]
cmp esi, eax
je 0x4131c7
mov ecx, dword [edi + 4]
mov dword [ecx], eax
mov ecx, dword [eax + 4]
mov dword [ecx], esi
mov ecx, dword [esi + 4]
mov dword [ecx], edi
mov ecx, dword [eax + 4]
mov edx, dword [esi + 4]
mov dword [esi + 4], ecx
mov ecx, dword [edi + 4]
mov dword [eax + 4], ecx
mov dword [edi + 4], edx
mov ecx, dword [ebx + 8]
mov edx, dword [esp + 0x24]
add ecx, edx
mov eax, dword [ecx]
cmp eax, dword [ebx]
jne 0x413234
mov dword [ecx], edi
mov eax, dword [ebx + 8]
mov dword [edx + eax + 4], edi
jmp 0x413256
cmp dword [esp + 0x18], 8
lea ecx, [esi + 8]
mov eax, dword [ebp + 0xc]
jb 0x4131f0
mov eax, dword [eax]
push edx
push eax
push dword [ecx + 0x10]
push ecx
call fcn.0040dc10
test eax, eax
je 0x413203
mov esi, dword [esi]
jmp 0x413199
mov edx, dword [ebp + 0x10]
push edx
mov ecx, dword [edx + 4]
mov eax, dword [edx]
mov dword [ecx], eax
mov ecx, dword [edx]
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x18]
dec dword [eax + 4]
call fcn.00412370
mov eax, dword [ebp + 8]
mov dword [eax], esi
mov byte [eax + 4], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp eax, esi
jne 0x41323c
mov dword [ecx], edi
jmp 0x413256
mov eax, dword [ecx + 4]
mov eax, dword [eax]
mov dword [ecx + 4], eax
cmp eax, edi
je 0x413256
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.00413270
mov eax, dword [ebp + 8]
mov dword [eax], edi
pop edi
pop esi
mov byte [eax + 4], 1
pop ebx
mov esp, ebp
pop ebp
ret 0xc