Function at 0x47fcb0
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 0x47fcdc
mov esi, dword [eax]
jmp 0x47fcde
mov esi, eax
xor ecx, ecx
mov edx, 0x811c9dc5
add edi, edi
je 0x47fd01
lea esp, [esp]
movzx eax, byte [ecx + esi]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, edi
jb 0x47fcf0
mov ecx, dword [ebx + 0x14]
and edx, ecx
cmp dword [ebx + 0x18], edx
ja 0x47fd14
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 0x47fddd
mov esi, dword [edi + ecx + 4]
mov esi, dword [esi]
cmp esi, eax
je 0x47fddd
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 0x47fd61
mov ecx, dword [ecx]
cmp dword [esp + 0x18], 8
jb 0x47fd6f
mov eax, dword [ebp + 0xc]
mov edx, dword [eax]
jmp 0x47fd72
mov edx, dword [ebp + 0xc]
cmp dword [esp + 0x10], ebx
mov edi, ebx
cmovb edi, dword [esp + 0x10]
test edi, edi
jne 0x47fd94
xor eax, eax
mov edx, dword [esp + 0x10]
test eax, eax
jne 0x47fdbc
cmp edx, ebx
jae 0x47fdb3
or eax, 0xffffffff
jmp 0x47fdba
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x47fda5
add edx, 2
add ecx, 2
dec edi
jmp 0x47fd7f
movzx eax, word [edx]
cmp ax, word [ecx]
sbb eax, eax
and eax, 0xfffffffe
inc eax
jmp 0x47fd83
xor eax, eax
cmp edx, ebx
setne al
test eax, eax
sete al
test al, al
sete al
test al, al
je 0x47fe21
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
cmp esi, dword [ecx + eax]
jne 0x47fd50
mov ebx, dword [esp + 0x14]
mov edi, dword [ebp + 0x10]
mov eax, dword [edi]
cmp esi, eax
je 0x47fe07
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 0x47fe74
mov dword [ecx], edi
mov eax, dword [ebx + 8]
mov dword [edx + eax + 4], edi
jmp 0x47fe96
cmp dword [esp + 0x18], 8
lea ecx, [esi + 8]
mov eax, dword [ebp + 0xc]
jb 0x47fe30
mov eax, dword [eax]
push edx
push eax
push dword [ecx + 0x10]
push ecx
call fcn.00473600
test eax, eax
je 0x47fe43
mov esi, dword [esi]
jmp 0x47fdd9
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.0047f390
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 0x47fe7c
mov dword [ecx], edi
jmp 0x47fe96
mov eax, dword [ecx + 4]
mov eax, dword [eax]
mov dword [ecx + 4], eax
cmp eax, edi
je 0x47fe96
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.0047feb0
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