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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
mov eax, dword [ecx + 0xd4]
mov dword [ebp - 0xc], ecx
mov ecx, dword [ecx + 0xd8]
mov dword [ebp - 8], eax
mov dword [ebp - 0x20], ecx
cmp eax, ecx
je 0x4cff7d
push ebx
push esi
push edi
mov edi, dword [eax]
add edi, 0x4c
cmp dword [edi], 0
jne 0x4cfc61
push 0x40
call fcn.004ed767
mov esi, eax
add esp, 4
mov dword [ebp - 0x1c], esi
test esi, esi
je 0x4cfc3e
push 0x40
push 0
push esi
call fcn.0050ce60
fld1
add esp, 0xc
fst dword [esi]
fst dword [esi + 4]
fstp dword [esi + 8]
fldz
mov dword [esi + 0x1c], 0
mov dword [esi + 0x20], 0xf
mov byte [esi + 0xc], 0
mov byte [esi + 0x28], 1
fstp dword [esi + 0x24]
mov dword [esi + 0x2c], 0
mov dword [esi + 0x30], 0
mov dword [esi + 0x34], 0
mov dword [esi + 0x38], 0
mov dword [esi + 0x3c], 0
jmp 0x4cfc40
xor esi, esi
lea eax, [ebp - 0x14]
cmp edi, eax
je 0x4cfc54
mov eax, dword [edi]
mov dword [edi], esi
test eax, eax
je 0x4cfc61
push eax
mov ecx, edi
jmp 0x4cfc5c
test esi, esi
je 0x4cfc61
push esi
lea ecx, [ebp - 0x14]
call fcn.004c71d0
mov ebx, dword [edi]
mov edi, dword [ebx + 0x1c]
add ebx, 0xc
mov dword [ebp - 4], ebx
mov esi, ebx
mov dword [ebp - 0x10], edi
mov eax, dword [ebx + 0x14]
mov dword [ebp - 0x14], eax
cmp eax, 0x10
jb 0x4cfc7e
mov esi, dword [ebx]
xor ecx, ecx
mov edx, 0x811c9dc5
test edi, edi
je 0x4cfca1
lea esp, [esp]
movzx eax, byte [ecx + esi]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, edi
jb 0x4cfc90
mov ecx, dword [ebp - 0xc]
mov edi, dword [ecx + 0xcc]
mov eax, dword [edi + 0x5c]
mov ecx, dword [edi + 0x50]
and eax, edx
mov edi, dword [edi + 0x48]
mov dword [ebp - 0x18], ecx
mov esi, dword [ecx + eax*8]
add eax, eax
mov dword [ebp - 0x1c], eax
cmp dword [ecx + eax*4], edi
jne 0x4cfcc9
mov eax, edi
jmp 0x4cfccf
mov eax, dword [ecx + eax*4 + 4]
mov eax, dword [eax]
cmp esi, eax
je 0x4cfd7e
cmp dword [ebp - 0x14], 0x10
jb 0x4cfce2
mov ebx, dword [ebp - 4]
mov ebx, dword [ebx]
cmp dword [esi + 0x1c], 0x10
lea ecx, [esi + 8]
jb 0x4cfcee
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0x18]
cmp edx, dword [ebp - 0x10]
jne 0x4cfd50
sub edx, 4
jb 0x4cfd11
jmp 0x4cfd00
mov eax, dword [ecx]
cmp eax, dword [ebx]
jne 0x4cfd16
add ecx, 4
add ebx, 4
sub edx, 4
jae 0x4cfd00
cmp edx, 0xfffffffc
je 0x4cfd4a
mov al, byte [ecx]
cmp al, byte [ebx]
jne 0x4cfd43
cmp edx, 0xfffffffd
je 0x4cfd4a
mov al, byte [ecx + 1]
cmp al, byte [ebx + 1]
jne 0x4cfd43
cmp edx, 0xfffffffe
je 0x4cfd4a
mov al, byte [ecx + 2]
cmp al, byte [ebx + 2]
jne 0x4cfd43
cmp edx, 0xffffffff
je 0x4cfd4a
mov al, byte [ecx + 3]
cmp al, byte [ebx + 3]
je 0x4cfd4a
sbb eax, eax
or eax, 1
jmp 0x4cfd4c
xor eax, eax
test eax, eax
je 0x4cfd60
mov esi, dword [esi]
mov ebx, dword [ebp - 4]
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
jmp 0x4cfcc0
mov edx, dword [ebp - 0xc]
lea eax, [esi + 8]
push eax
push dword [ebp - 4]
mov ecx, dword [edx + 0xcc]
lea ecx, [ecx + 0x44]
call fcn.004af9e0
test al, al
jne 0x4cfd7e
mov edi, esi
mov ecx, dword [ebp - 0xc]
mov eax, dword [ecx + 0xcc]
cmp edi, dword [eax + 0x48]
je 0x4cff68
mov ebx, dword [ebp - 8]
mov ebx, dword [ebx]
mov al, byte [ebx + 0x21]
cmp al, 2
jne 0x4cfe56
add ebx, 0x4c
cmp dword [ebx], 0
jne 0x4cfe49
push 0x40
call fcn.004ed767
mov esi, eax
add esp, 4
mov dword [ebp - 0x1c], esi
test esi, esi
je 0x4cfe16
push 0x40
push 0
push esi
call fcn.0050ce60
fld1
add esp, 0xc
fst dword [esi]
fst dword [esi + 4]
fstp dword [esi + 8]
fldz
mov dword [esi + 0x1c], 0
mov dword [esi + 0x20], 0xf
mov byte [esi + 0xc], 0
mov byte [esi + 0x28], 1
fstp dword [esi + 0x24]
mov dword [esi + 0x2c], 0
mov dword [esi + 0x30], 0
mov dword [esi + 0x34], 0
mov dword [esi + 0x38], 0
mov dword [esi + 0x3c], 0
jmp 0x4cfe18
xor esi, esi
lea eax, [ebp - 0x1c]
cmp ebx, eax
je 0x4cfe3c
mov eax, dword [ebx]
mov dword [ebx], esi
test eax, eax
je 0x4cfe49
push eax
mov ecx, ebx
call fcn.004c71d0
mov ecx, dword [ebx]
mov eax, dword [edi + 0x20]
mov dword [ecx + 0x30], eax
jmp 0x4cff68
test esi, esi
je 0x4cfe49
push esi
lea ecx, [ebp - 0x1c]
call fcn.004c71d0
mov ecx, dword [ebx]
mov eax, dword [edi + 0x20]
mov dword [ecx + 0x30], eax
jmp 0x4cff68
test al, al
jne 0x4cff68
mov eax, dword [edi + 0x20]
add ebx, 0x10
add eax, 0x1c
cmp ebx, eax
je 0x4cff44
mov ecx, dword [eax + 4]
mov edx, dword [eax]
mov eax, dword [ebx + 4]
mov dword [ebp - 0x10], ecx
sub ecx, edx
mov esi, ecx
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebx + 8]
mov dword [ebp - 4], edx
mov edx, dword [ebx]
sub eax, edx
sub ecx, edx
sar esi, 2
sar ecx, 2
sar eax, 2
mov dword [ebp - 0x1c], edx
cmp esi, ecx
jbe 0x4cfef4
cmp esi, 0x3fffffff
ja 0x4cff81
mov eax, ecx
shr eax, 1
mov dword [ebp - 0x10], eax
mov eax, 0x3fffffff
sub eax, dword [ebp - 0x10]
cmp ecx, eax
ja 0x4cfec7
mov eax, dword [ebp - 0x10]
add eax, ecx
cmp eax, esi
jb 0x4cfec7
mov esi, eax
test edx, edx
je 0x4cfed4
push ecx
push edx
mov ecx, ebx
call fcn.004051a0
push esi
mov ecx, ebx
call fcn.00415a70
push dword [ebp - 0x14]
mov esi, dword [ebx]
push dword [ebp - 4]
push esi
call fcn.0050d660
mov eax, dword [ebp - 0x14]
add esp, 0xc
add eax, esi
jmp 0x4cff41
cmp esi, eax
jbe 0x4cff2c
lea esi, [eax*4]
push esi
push dword [ebp - 4]
push edx
call fcn.0050d660
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x10]
add eax, esi
mov esi, dword [ebx + 4]
sub ecx, eax
push ecx
push eax
push esi
mov dword [ebp - 0x10], ecx
call fcn.0050d660
mov ecx, dword [ebp - 0x10]
add esp, 0x18
lea eax, [ecx + esi]
jmp 0x4cff41
push dword [ebp - 0x14]
push dword [ebp - 4]
push edx
call fcn.0050d660
mov eax, dword [ebp - 0x1c]
add esp, 0xc
lea eax, [eax + esi*4]
mov dword [ebx + 4], eax
mov eax, dword [ebp - 8]
mov edx, dword [eax]
mov cl, byte [edx + 0xf]
test cl, 1
je 0x4cff5e
mov eax, dword [edi + 0x20]
cmp byte [eax + 1], 0
je 0x4cff5e
mov al, 1
jmp 0x4cff60
xor al, al
and cl, 0xfe
or cl, al
mov byte [edx + 0xf], cl
mov eax, dword [ebp - 8]
add eax, 4
mov dword [ebp - 8], eax
cmp eax, dword [ebp - 0x20]
jne 0x4cfbc6
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.00405010
int3