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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x38
mov eax, dword [0x567b10]
xor eax, esp
mov dword [esp + 0x34], eax
mov eax, dword [ecx + 0x14]
mov bl, byte [eax + 0x2c]
mov edx, 0xffffcfff
and edx, dword [eax + 0x28]
or edx, 0x1000
mov dword [eax + 0x28], edx
mov edx, dword [ecx + 0x1bc]
test edx, edx
mov dword [esp + 4], ecx
mov byte [esp + 3], bl
je 0x4a5b65
mov eax, dword [ecx + 0x1b8]
lea ecx, [eax + edx*8]
xor ebp, ebp
nop word [eax + eax]
mov ebx, dword [eax]
mov edx, ebx
movzx edi, bl
movzx esi, bh
shr ebx, 0x10
shr edx, 0x18
xor edi, 0x811c9dc5
imul edi, edi, 0x1000193
xor esi, edi
imul esi, esi, 0x1000193
movzx edi, bl
xor edi, esi
imul esi, edi, 0x1000193
xor esi, edx
imul edx, esi, 0x1000193
mov esi, ebp
shl esi, 6
mov edi, ebp
shr edi, 2
add edi, esi
add edx, edi
add edx, 0x9e3779b9
xor edx, ebp
movzx esi, byte [eax + 4]
xor esi, 0x811c9dc5
imul esi, esi, 0x1000193
movzx edi, byte [eax + 5]
xor edi, esi
imul esi, edi, 0x1000193
movzx edi, byte [eax + 6]
xor edi, esi
imul esi, edi, 0x1000193
movzx edi, byte [eax + 7]
xor edi, esi
imul esi, edi, 0x1000193
mov edi, edx
shl edi, 6
mov ebx, edx
shr ebx, 2
add edi, esi
lea ebp, [ebx + edi]
add ebp, 0x9e3779b9
xor ebp, edx
add eax, 8
cmp eax, ecx
jne 0x4a5ac0
jmp 0x4a5b67
xor ebp, ebp
mov esi, dword [esp + 4]
mov eax, dword [esi]
mov eax, dword [eax + 8]
mov dword [esp + 8], eax
movzx eax, byte [esp + 0x50]
mov ecx, esi
mov dword [esp + 0x1c], eax
push eax
call fcn.004a5a00
mov bh, byte [esp + 3]
cmp bh, 0x33
jne 0x4a5b9f
mov eax, dword [esi + 0x14]
cmp word [eax + 0xc], 0x15
jne 0x4a5b9f
mov ecx, esi
call fcn.004a7120
mov bl, byte [esp + 0x4c]
lea eax, [esi + 0x1c]
mov ecx, 0xffffffff
cmp dword [esi + 0x184], eax
jne 0x4a5bbb
mov ecx, dword [esi + 0x10c]
not ecx
mov dword [esp + 0x18], ecx
mov ecx, esi
call fcn.004a5240
mov ecx, dword [esi]
mov eax, dword [esi + 0x184]
mov edx, dword [eax + 4]
xor eax, eax
mov dword [esp + 0x10], edx
cmp edx, 1
sbb eax, eax
mov dword [esp + 0x14], eax
mov byte [esp + 0x2b], bl
mov dword [esp + 0xc], ecx
mov byte [ecx + 0xd], bl
mov eax, dword [esi + 0x194]
mov ecx, eax
shr ecx, 5
lea edx, [ecx + 0x38000000]
test eax, eax
cmovns edx, ecx
lea ecx, [esi + 0x188]
shl edx, 2
add edx, dword [esi + 0x188]
and eax, 0x1f
lea esi, [esp + 0x2b]
lea edi, [esp + 0x2c]
mov dword [esp + 0x20], ecx
push esi
mov esi, dword [esp + 8]
push 1
push eax
push edx
push edi
call fcn.004aaec0
cmp byte [esp + 0x50], 0
je 0x4a5c3b
mov eax, dword [esi]
add dword [eax + 8], 1
mov ecx, esi
push 1
call fcn.004a56b0
mov eax, dword [esi + 0x14]
movzx ecx, word [eax + 0xc]
cmp cx, 1
je 0x4a5dfa
cmp bh, 0x33
jne 0x4a5c82
cmp byte [eax + 0x2c], 0x34
je 0x4a5c88
mov eax, dword [esi]
mov ecx, dword [esp + 8]
mov dword [eax + 8], ecx
mov eax, dword [esi + 0x14]
mov ecx, 0xffffcfff
and ecx, dword [eax + 0x28]
or ecx, 0x1000
mov dword [eax + 0x28], ecx
jmp 0x4a5dfa
cmp cx, 0x18
jne 0x4a5c60
mov ecx, dword [esi + 0x1bc]
test ecx, ecx
je 0x4a5d56
mov eax, dword [esi + 0x1b8]
lea ecx, [eax + ecx*8]
mov dword [esp + 0x24], ecx
xor edi, edi
nop word cs:[eax + eax]
nop
mov ebx, dword [eax]
mov edx, ebx
movzx esi, bl
movzx ecx, bh
shr ebx, 0x10
shr edx, 0x18
xor esi, 0x811c9dc5
imul esi, esi, 0x1000193
xor ecx, esi
imul ecx, ecx, 0x1000193
movzx esi, bl
xor esi, ecx
imul ecx, esi, 0x1000193
xor ecx, edx
imul ecx, ecx, 0x1000193
mov edx, edi
shl edx, 6
mov esi, edi
shr esi, 2
add esi, edx
add ecx, esi
add ecx, 0x9e3779b9
xor ecx, edi
movzx edx, byte [eax + 4]
xor edx, 0x811c9dc5
imul edx, edx, 0x1000193
movzx esi, byte [eax + 5]
xor esi, edx
imul edx, esi, 0x1000193
movzx esi, byte [eax + 6]
xor esi, edx
imul edx, esi, 0x1000193
movzx esi, byte [eax + 7]
xor esi, edx
imul edx, esi, 0x1000193
mov esi, ecx
shl esi, 6
mov edi, ecx
shr edi, 2
add esi, edx
add edi, esi
add edi, 0x9e3779b9
xor edi, ecx
add eax, 8
cmp eax, dword [esp + 0x24]
jne 0x4a5cb0
jmp 0x4a5d58
xor edi, edi
mov eax, dword [esp + 0x1c]
neg eax
mov esi, dword [esp + 4]
mov ecx, esi
push eax
call fcn.004a5a00
cmp byte [esp + 3], 0x33
jne 0x4a5d82
mov eax, dword [esi + 0x14]
cmp word [eax + 0xc], 0x15
jne 0x4a5d82
mov ecx, esi
call fcn.004a7120
mov bl, byte [esp + 0x54]
mov eax, dword [esi + 0x14]
cmp word [eax + 0xc], 0x24
jne 0x4a5da0
mov ecx, esi
push 0
call fcn.004a5a00
mov ecx, esi
call fcn.004a5eb0
test bl, bl
je 0x4a5db7
mov eax, dword [esi + 0x14]
cmp word [eax + 0xc], 0x3e
jne 0x4a5db7
mov ecx, esi
push 0
call fcn.004a5a00
mov eax, dword [esi]
mov ecx, dword [esp + 8]
mov dword [eax + 8], ecx
cmp ebp, edi
jne 0x4a5dfa
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
or ecx, eax
mov eax, dword [esi]
mov dword [eax + 0x10], ecx
cmp ecx, 0xffffffff
je 0x4a5dfa
mov edx, ecx
mov eax, dword [esi + 0x184]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
add eax, 0xffffffff
mov edi, edx
lea edx, [edx + edx*8]
lea edx, [edx + edx*2]
add edx, edi
mov dword [ecx + edx + 0x14], eax
mov eax, dword [esi + 0x194]
mov ecx, eax
shr ecx, 5
mov edx, eax
and edx, 0x1f
sub edx, 1
mov ebx, esi
mov esi, 0x1f
cmovae esi, edx
sbb edx, edx
lea edi, [ecx + 0x38000000]
test eax, eax
cmovns edi, ecx
shl edi, 2
add edi, dword [ebx + 0x188]
lea eax, [edi + edx*4]
mov ebp, dword [esp + 0x20]
mov ecx, ebp
push esi
push eax
lea eax, [esp + 0x34]
push eax
call fcn.004ab630
mov eax, dword [ebx + 0x194]
test eax, eax
je 0x4a5e88
mov edx, eax
and edx, 0x1f
mov ecx, edx
sub ecx, 1
sbb esi, esi
mov edi, 1
shl edi, cl
cmp edx, 1
mov ecx, 0x80000000
cmovae ecx, edi
mov edx, eax
shr edx, 5
lea edi, [edx + 0x38000000]
test eax, eax
cmovns edi, edx
shl edi, 2
add edi, dword [ebp]
test dword [edi + esi*4], ecx
setne al
jmp 0x4a5e8a
mov al, 1
mov ecx, dword [esp + 0xc]
mov byte [ecx + 0xd], al
mov ecx, dword [esp + 0x34]
xor ecx, esp
call fcn.00533ace
add esp, 0x38
pop esi
pop edi
pop ebx
pop ebp
ret 0xc