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

Disassembly:
sub esp, 0x40
mov eax, dword [0x55ec40]
xor eax, esp
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x10], eax
mov eax, dword [eax + 0x10]
mov dword [esp + 0x24], ecx
mov ebp, dword [edi + 8]
mov esi, dword [edi]
push ebp
push esi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], 0
mov dword [esp + 0x30], eax
mov dword [esp + 0x28], esi
call fcn.0049a4e0
mov ebx, eax
add esp, 8
cmp ebx, 0xffffffff
jne 0x499a4e
mov edx, 0x811c9dc5
xor ecx, ecx
mov dword [esp + 0x1c], edx
test ebp, ebp
je 0x4999f7
movzx eax, byte [esi + ecx]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, ebp
jb 0x4999e2
mov dword [esp + 0x1c], edx
mov edx, edi
test byte [edx + 0x10], 1
jne 0x499a83
mov esi, dword [esp + 0x10]
cmp ebx, 3
je 0x499a77
cmp ebx, 0x14
je 0x499a77
cmp ebx, 0x1b
je 0x499a77
cmp ebx, 0x21
je 0x499a77
cmp ebx, 0x27
je 0x499a77
cmp ebx, 0x28
je 0x499a77
cmp ebx, 0x2d
je 0x499a77
cmp ebx, 0x36
je 0x499a77
mov eax, dword [esi + 0x18]
lea ecx, [eax + eax*2]
mov eax, dword [edx + 0xc]
add eax, 0x20
shr ecx, 2
add eax, ebp
cmp eax, ecx
ja 0x499a77
mov dword [esp + 0x18], 0
jmp 0x499a8f
cmp ebx, 0x3c
jg 0x499a63
shl eax, 4
add eax, ebx
mov eax, dword [eax*4 + 0x51a160]
mov dword [esp + 0x1c], eax
cmp ebx, 0x16
je 0x499a81
cmp ebx, 0x1f
jne 0x4999f7
mov edx, edi
cmp dword [edx + 0xc], 0x14
jb 0x499a83
jmp 0x4999f9
mov dword [esp + 0x18], 1
jmp 0x499a8f
mov edx, edi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x18], 2
mov eax, dword [esp + 0x1c]
or ebp, 0xffffffff
and eax, 0x7f
xor edi, edi
xor ecx, ecx
mov esi, dword [esi + eax*4 + 0x24]
test esi, esi
je 0x499b1c
cmp ebx, dword [esi + 8]
jne 0x499b13
cmp ebx, 0xffffffff
jne 0x499ad6
mov eax, dword [esp + 0x1c]
cmp eax, dword [esi + 0x2c]
jne 0x499b13
mov eax, dword [esi]
mov ecx, dword [edx + 8]
cmp dword [eax + 0xc], ecx
jne 0x499b13
push ecx
push dword [esp + 0x24]
push dword [eax + 8]
call fcn.0049af00
add esp, 0xc
test eax, eax
je 0x499b0f
test edi, edi
jne 0x499ae9
mov eax, dword [esp + 0x18]
mov edi, esi
cmp eax, 2
je 0x499bdb
mov edx, dword [esp + 0x14]
mov eax, dword [esi + 4]
mov ecx, dword [edx + 0xc]
cmp dword [eax + 0xc], ecx
jne 0x499b13
push ecx
push dword [edx + 4]
push dword [eax + 8]
call fcn.0049af00
add esp, 0xc
test eax, eax
jne 0x499bc8
mov edx, dword [esp + 0x14]
mov esi, dword [esi + 0x24]
test esi, esi
jne 0x499aa5
xor ecx, ecx
mov eax, dword [esp + 0x18]
cmp ebx, 0x3c
ja 0x499bcf
cmp eax, 2
je 0x499bb4
mov edi, ebx
mov ebp, ebx
shl edi, 4
add edi, ebx
shl edi, 2
mov eax, 0x51a15c
cmp dword [eax + edi], ebx
jne 0x499bb4
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0xc]
cmp dword [edi + 0x51a140], ecx
jne 0x499ba8
mov edx, dword [edi + 0x51a13c]
mov esi, dword [eax + 4]
sub ecx, 4
jb 0x499b76
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x499b7b
add edx, 4
add esi, 4
sub ecx, 4
jae 0x499b65
cmp ecx, 0xfffffffc
je 0x499be2
mov al, byte [edx]
cmp al, byte [esi]
jne 0x499ba8
cmp ecx, 0xfffffffd
je 0x499be2
mov al, byte [edx + 1]
cmp al, byte [esi + 1]
jne 0x499ba8
cmp ecx, 0xfffffffe
je 0x499be2
mov al, byte [edx + 2]
cmp al, byte [esi + 2]
jne 0x499ba8
cmp ecx, 0xffffffff
je 0x499be2
mov al, byte [edx + 3]
cmp al, byte [esi + 3]
je 0x499be2
add edi, 0x44
inc ebp
cmp edi, 0xff0
jle 0x499b3e
mov edx, dword [esp + 0x10]
mov ebp, ebx
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
jmp 0x499bff
mov edi, esi
mov ecx, 1
mov edx, dword [esp + 0x10]
test edi, edi
jne 0x499bf4
xor eax, eax
jmp 0x499bff
xor ecx, ecx
jmp 0x499b20
mov edx, dword [esp + 0x10]
mov dword [esp + 0x20], 1
mov eax, dword [esp + 0x20]
jmp 0x499bff
mov ebp, dword [edx + 0x1c]
mov eax, ecx
sub ebp, dword [edi + 0x28]
add ebp, 0x3c
test eax, eax
je 0x499ca1
lea eax, [ebp + 1]
cmp eax, 0x7f
jae 0x499c1f
lea eax, [ebp + 1]
mov esi, 1
or al, 0x80
mov byte [esp + 0x3c], al
jmp 0x499c74
sub eax, 0x7f
mov ecx, 1
cmp eax, 0x80
jb 0x499c3b
nop
shr eax, 7
inc ecx
cmp eax, 0x80
jae 0x499c30
lea esi, [ecx + 1]
cmp esi, 0x10
ja 0x499d70
lea ecx, [ebp - 0x7e]
mov byte [esp + 0x3c], 0xff
lea edx, [esp + 0x3d]
cmp ecx, 0x80
jb 0x499c72
nop dword [eax + eax]
mov al, cl
shr ecx, 7
or al, 0x80
mov byte [edx], al
inc edx
cmp ecx, 0x80
jae 0x499c60
mov byte [edx], cl
push esi
lea eax, [esp + 0x40]
push eax
push dword [esp + 0x2c]
call fcn.0049c280
add esp, 0xc
test eax, eax
jne 0x499dc5
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x3c]
xor ecx, esp
call fcn.004cefd7
add esp, 0x40
ret
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x499d88
cmp ebp, 0xffffffff
je 0x499cd7
push ebp
push edx
lea eax, [esp + 0x34]
push eax
call fcn.0049b9d0
mov eax, dword [eax]
push eax
mov dword [esp + 0x4c], eax
call fcn.0049fad0
mov edi, dword [esp + 0x24]
add esp, 0x10
mov esi, dword [esp + 0x28]
jmp 0x499cfa
mov edi, dword [esp + 0x14]
lea eax, [esp + 0x3c]
mov esi, dword [esp + 0x28]
push esi
push dword [edi + 8]
push dword [edi]
push eax
call fcn.0049fb50
add esp, 0x10
test eax, eax
jne 0x499dc5
push esi
push dword [edi + 0xc]
lea eax, [esp + 0x48]
push dword [edi + 4]
push eax
call fcn.0049fb50
mov esi, eax
add esp, 0x10
test esi, esi
je 0x499d35
push dword [esp + 0x3c]
call fcn.0049fa90
add esp, 4
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x3c]
xor ecx, esp
call fcn.004cefd7
add esp, 0x40
ret
mov ecx, dword [esp + 0x10]
push dword [esp + 0x1c]
mov dword [esp + 0x48], ebx
mov byte [esp + 0x4c], 0
lea eax, [ecx + 0x24]
push eax
lea eax, [esp + 0x44]
push eax
push ecx
call fcn.004995d0
push dword [esp + 0x50]
mov esi, eax
call fcn.0049fa90
push dword [esp + 0x50]
call fcn.0049fa90
add esp, 0x18
test esi, esi
je 0x499d8e
pop edi
pop esi
pop ebp
mov eax, 0xfffffdf5
pop ebx
mov ecx, dword [esp + 0x3c]
xor ecx, esp
call fcn.004cefd7
add esp, 0x40
ret
mov edi, dword [esp + 0x14]
jmp 0x499d92
mov eax, dword [esp + 0x18]
push eax
push edi
cmp ebp, 0xffffffff
jne 0x499db8
push dword [esp + 0x2c]
call fcn.00499ee0
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x3c]
xor ecx, esp
call fcn.004cefd7
add esp, 0x40
ret
push ebp
push dword [esp + 0x30]
call fcn.00499de0
add esp, 0x10
mov ecx, dword [esp + 0x4c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004cefd7
add esp, 0x40
ret