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

Disassembly:
sub esp, 0x4c
mov eax, dword [0x67f3c0]
xor eax, esp
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x54]
push ebx
push ebp
mov ebp, dword [esp + 0x60]
push esi
push edi
mov dword [esp + 0x24], eax
xor eax, eax
mov esi, dword [ebp + 8]
mov edi, dword [ebp]
mov dword [esp + 0x10], eax
mov eax, dword [ecx + 0x10]
push esi
push edi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], edi
call fcn.00507310
mov ebx, eax
add esp, 8
cmp ebx, 0xffffffff
jne 0x5067ec
mov edx, 0x811c9dc5
xor ecx, ecx
mov dword [esp + 0x10], edx
test esi, esi
je 0x506811
movzx eax, byte [edi + ecx]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, esi
jb 0x5067d5
mov dword [esp + 0x10], edx
jmp 0x506811
cmp ebx, 0x3c
jg 0x506801
shl eax, 4
add eax, ebx
mov eax, dword [eax*4 + 0x55a948]
mov dword [esp + 0x10], eax
cmp ebx, 0x16
je 0x50686c
cmp ebx, 0x1f
jne 0x506811
cmp dword [ebp + 0xc], 0x14
jb 0x50686c
test byte [ebp + 0x10], 1
jne 0x50686c
cmp ebx, 3
je 0x506862
cmp ebx, 0x14
je 0x506862
cmp ebx, 0x1b
je 0x506862
cmp ebx, 0x21
je 0x506862
cmp ebx, 0x27
je 0x506862
cmp ebx, 0x28
je 0x506862
cmp ebx, 0x2d
je 0x506862
cmp ebx, 0x36
je 0x506862
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x18]
lea ecx, [eax + eax*2]
mov eax, dword [ebp + 0xc]
add eax, 0x20
shr ecx, 2
add eax, esi
cmp eax, ecx
ja 0x506862
mov dword [esp + 0x14], 0
jmp 0x506874
mov dword [esp + 0x14], 1
jmp 0x506874
mov dword [esp + 0x14], 2
mov edx, dword [esp + 0x10]
or ebp, 0xffffffff
mov esi, dword [esp + 0x18]
mov eax, edx
and eax, 0x7f
xor edi, edi
xor ecx, ecx
mov esi, dword [esi + eax*4 + 0x24]
test esi, esi
je 0x50691d
mov eax, edi
mov ebp, edi
mov dword [esp + 0x20], eax
cmp ebx, dword [esi + 8]
jne 0x506910
cmp ebx, 0xffffffff
jne 0x5068cc
cmp edx, dword [esi + 0x2c]
jne 0x506910
mov eax, dword [esi]
mov ecx, dword [esp + 0x30]
cmp dword [eax + 0xc], ecx
jne 0x506910
push ecx
push dword [esp + 0x38]
push dword [eax + 8]
call fcn.00507d30
add esp, 0xc
test eax, eax
je 0x50690c
mov eax, edi
test edi, edi
jne 0x5068df
mov edx, dword [esp + 0x14]
mov edi, esi
cmp edx, 2
je 0x5069f3
test eax, eax
mov edi, esi
mov eax, dword [esi + 4]
cmovne edi, ebp
mov ebp, dword [esp + 0x1c]
mov ecx, dword [ebp + 0xc]
cmp dword [eax + 0xc], ecx
jne 0x50690c
push ecx
push dword [ebp + 4]
push dword [eax + 8]
call fcn.00507d30
add esp, 0xc
test eax, eax
jne 0x5069dd
mov edx, dword [esp + 0x10]
mov esi, dword [esi + 0x24]
test esi, esi
jne 0x506894
xor ecx, ecx
mov edx, dword [esp + 0x14]
cmp ebx, 0x3c
ja 0x5069e4
mov dword [esp + 0x28], ebx
mov dword [esp + 0x20], 0
cmp edx, 2
je 0x506a06
mov edi, ebx
mov ebp, ebx
shl edi, 4
add edi, ebx
shl edi, 2
nop dword [eax + eax]
cmp dword [edi + 0x55a944], ebx
jne 0x506a06
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0xc]
cmp dword [edi + 0x55a928], ecx
jne 0x5069c3
mov edx, dword [edi + 0x55a924]
mov esi, dword [eax + 4]
sub ecx, 4
jb 0x506991
nop dword [eax]
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x506996
add edx, 4
add esi, 4
sub ecx, 4
jae 0x506980
cmp ecx, 0xfffffffc
je 0x5069fa
mov al, byte [edx]
cmp al, byte [esi]
jne 0x5069c3
cmp ecx, 0xfffffffd
je 0x5069fa
mov al, byte [edx + 1]
cmp al, byte [esi + 1]
jne 0x5069c3
cmp ecx, 0xfffffffe
je 0x5069fa
mov al, byte [edx + 2]
cmp al, byte [esi + 2]
jne 0x5069c3
cmp ecx, 0xffffffff
je 0x5069fa
mov al, byte [edx + 3]
cmp al, byte [esi + 3]
je 0x5069fa
add edi, 0x44
inc ebp
cmp edi, 0xff0
jle 0x506950
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
jmp 0x506a1d
mov edi, esi
mov ecx, 1
mov edx, dword [esp + 0x18]
test edi, edi
jne 0x506a14
or ebp, 0xffffffff
xor ecx, ecx
jmp 0x506a1d
xor ecx, ecx
jmp 0x506921
mov dword [esp + 0x28], ebp
mov dword [esp + 0x20], 1
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
jmp 0x506a1d
mov ebp, dword [edx + 0x1c]
sub ebp, dword [edi + 0x28]
add ebp, 0x3c
test ecx, ecx
je 0x506ac1
lea ecx, [ebp + 1]
mov eax, ecx
cmp eax, 0x7f
jae 0x506a3d
or cl, 0x80
mov esi, 1
mov byte [esp + 0x48], cl
jmp 0x506a94
sub eax, 0x7f
mov edx, 1
cmp eax, 0x80
jb 0x506a5b
nop dword [eax]
shr eax, 7
inc edx
cmp eax, 0x80
jae 0x506a50
lea esi, [edx + 1]
cmp esi, 0x10
ja 0x506b90
sub ecx, 0x7f
mov byte [esp + 0x48], 0xff
lea edx, [esp + 0x49]
cmp ecx, 0x80
jb 0x506a92
nop dword [eax + eax]
mov al, cl
shr ecx, 7
or al, 0x80
mov byte [edx], al
inc edx
cmp ecx, 0x80
jae 0x506a80
mov byte [edx], cl
push esi
lea eax, [esp + 0x4c]
push eax
push dword [esp + 0x2c]
call fcn.00508fb0
add esp, 0xc
test eax, eax
jne 0x506be5
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.00511a59
add esp, 0x4c
ret
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x506ba8
cmp ebp, 0xffffffff
je 0x506af3
push ebp
push edx
lea eax, [esp + 0x40]
push eax
call fcn.00508800
mov eax, dword [eax]
push eax
mov dword [esp + 0x58], eax
call fcn.0050cbf0
mov esi, dword [esp + 0x3c]
add esp, 0x10
jmp 0x506b15
mov esi, dword [esp + 0x2c]
lea eax, [esp + 0x48]
push esi
push dword [esp + 0x34]
push dword [esp + 0x3c]
push eax
call fcn.0050cc70
add esp, 0x10
test eax, eax
jne 0x506be5
mov edi, dword [esp + 0x1c]
lea eax, [esp + 0x4c]
push esi
push dword [edi + 0xc]
push dword [edi + 4]
push eax
call fcn.0050cc70
mov esi, eax
add esp, 0x10
test esi, esi
je 0x506b54
push dword [esp + 0x48]
call fcn.0050cbb0
add esp, 4
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.00511a59
add esp, 0x4c
ret
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
push eax
mov dword [esp + 0x54], ebx
lea eax, [ecx + 0x24]
mov byte [esp + 0x58], 0
push eax
lea eax, [esp + 0x50]
push eax
push ecx
call fcn.005063f0
push dword [esp + 0x5c]
mov esi, eax
call fcn.0050cbb0
push dword [esp + 0x5c]
call fcn.0050cbb0
add esp, 0x18
test esi, esi
je 0x506bae
pop edi
pop esi
pop ebp
mov eax, 0xfffffdf5
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.00511a59
add esp, 0x4c
ret
mov edi, dword [esp + 0x1c]
jmp 0x506bb2
mov eax, dword [esp + 0x14]
push eax
push edi
cmp ebp, 0xffffffff
jne 0x506bd8
push dword [esp + 0x2c]
call fcn.00506d00
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.00511a59
add esp, 0x4c
ret
push ebp
push dword [esp + 0x30]
call fcn.00506c00
add esp, 0x10
mov ecx, dword [esp + 0x58]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00511a59
add esp, 0x4c
ret