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

Disassembly:
sub esp, 0x40
mov eax, dword [0x5bfd00]
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.00513f60
mov ebx, eax
add esp, 8
cmp ebx, 0xffffffff
jne 0x512dce
mov edx, 0x811c9dc5
xor ecx, ecx
mov dword [esp + 0x1c], edx
test ebp, ebp
je 0x512d77
movzx eax, byte [esi + ecx]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, ebp
jb 0x512d62
mov dword [esp + 0x1c], edx
mov edx, edi
test byte [edx + 0x10], 1
jne 0x512e03
mov esi, dword [esp + 0x10]
cmp ebx, 3
je 0x512df7
cmp ebx, 0x14
je 0x512df7
cmp ebx, 0x1b
je 0x512df7
cmp ebx, 0x21
je 0x512df7
cmp ebx, 0x27
je 0x512df7
cmp ebx, 0x28
je 0x512df7
cmp ebx, 0x2d
je 0x512df7
cmp ebx, 0x36
je 0x512df7
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 0x512df7
mov dword [esp + 0x18], 0
jmp 0x512e0f
cmp ebx, 0x3c
jg 0x512de3
shl eax, 4
add eax, ebx
mov eax, dword [eax*4 + 0x58f798]
mov dword [esp + 0x1c], eax
cmp ebx, 0x16
je 0x512e01
cmp ebx, 0x1f
jne 0x512d77
mov edx, edi
cmp dword [edx + 0xc], 0x14
jb 0x512e03
jmp 0x512d79
mov dword [esp + 0x18], 1
jmp 0x512e0f
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 0x512e9c
cmp ebx, dword [esi + 8]
jne 0x512e93
cmp ebx, 0xffffffff
jne 0x512e56
mov eax, dword [esp + 0x1c]
cmp eax, dword [esi + 0x2c]
jne 0x512e93
mov eax, dword [esi]
mov ecx, dword [edx + 8]
cmp dword [eax + 0xc], ecx
jne 0x512e93
push ecx
push dword [esp + 0x24]
push dword [eax + 8]
call fcn.00514980
add esp, 0xc
test eax, eax
je 0x512e8f
test edi, edi
jne 0x512e69
mov eax, dword [esp + 0x18]
mov edi, esi
cmp eax, 2
je 0x512f5b
mov edx, dword [esp + 0x14]
mov eax, dword [esi + 4]
mov ecx, dword [edx + 0xc]
cmp dword [eax + 0xc], ecx
jne 0x512e93
push ecx
push dword [edx + 4]
push dword [eax + 8]
call fcn.00514980
add esp, 0xc
test eax, eax
jne 0x512f48
mov edx, dword [esp + 0x14]
mov esi, dword [esi + 0x24]
test esi, esi
jne 0x512e25
xor ecx, ecx
mov eax, dword [esp + 0x18]
cmp ebx, 0x3c
ja 0x512f4f
cmp eax, 2
je 0x512f34
mov edi, ebx
mov ebp, ebx
shl edi, 4
add edi, ebx
shl edi, 2
mov eax, 0x58f794
cmp dword [eax + edi], ebx
jne 0x512f34
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0xc]
cmp dword [edi + 0x58f778], ecx
jne 0x512f28
mov edx, dword [edi + 0x58f774]
mov esi, dword [eax + 4]
sub ecx, 4
jb 0x512ef6
mov eax, dword [edx]
cmp eax, dword [esi]
jne 0x512efb
add edx, 4
add esi, 4
sub ecx, 4
jae 0x512ee5
cmp ecx, 0xfffffffc
je 0x512f62
mov al, byte [edx]
cmp al, byte [esi]
jne 0x512f28
cmp ecx, 0xfffffffd
je 0x512f62
mov al, byte [edx + 1]
cmp al, byte [esi + 1]
jne 0x512f28
cmp ecx, 0xfffffffe
je 0x512f62
mov al, byte [edx + 2]
cmp al, byte [esi + 2]
jne 0x512f28
cmp ecx, 0xffffffff
je 0x512f62
mov al, byte [edx + 3]
cmp al, byte [esi + 3]
je 0x512f62
add edi, 0x44
inc ebp
cmp edi, 0xff0
jle 0x512ebe
mov edx, dword [esp + 0x10]
mov ebp, ebx
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
jmp 0x512f7f
mov edi, esi
mov ecx, 1
mov edx, dword [esp + 0x10]
test edi, edi
jne 0x512f74
xor eax, eax
jmp 0x512f7f
xor ecx, ecx
jmp 0x512ea0
mov edx, dword [esp + 0x10]
mov dword [esp + 0x20], 1
mov eax, dword [esp + 0x20]
jmp 0x512f7f
mov ebp, dword [edx + 0x1c]
mov eax, ecx
sub ebp, dword [edi + 0x28]
add ebp, 0x3c
test eax, eax
je 0x513021
lea eax, [ebp + 1]
cmp eax, 0x7f
jae 0x512f9f
lea eax, [ebp + 1]
mov esi, 1
or al, 0x80
mov byte [esp + 0x3c], al
jmp 0x512ff4
sub eax, 0x7f
mov ecx, 1
cmp eax, 0x80
jb 0x512fbb
nop
shr eax, 7
inc ecx
cmp eax, 0x80
jae 0x512fb0
lea esi, [ecx + 1]
cmp esi, 0x10
ja 0x5130f0
lea ecx, [ebp - 0x7e]
mov byte [esp + 0x3c], 0xff
lea edx, [esp + 0x3d]
cmp ecx, 0x80
jb 0x512ff2
nop dword [eax + eax]
mov al, cl
shr ecx, 7
or al, 0x80
mov byte [edx], al
inc edx
cmp ecx, 0x80
jae 0x512fe0
mov byte [edx], cl
push esi
lea eax, [esp + 0x40]
push eax
push dword [esp + 0x2c]
call fcn.00516880
add esp, 0xc
test eax, eax
jne 0x513145
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x3c]
xor ecx, esp
call fcn.00563360
add esp, 0x40
ret
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x513108
cmp ebp, 0xffffffff
je 0x513057
push ebp
push edx
lea eax, [esp + 0x34]
push eax
call fcn.00515a80
mov eax, dword [eax]
push eax
mov dword [esp + 0x4c], eax
call fcn.0051c2e0
mov edi, dword [esp + 0x24]
add esp, 0x10
mov esi, dword [esp + 0x28]
jmp 0x51307a
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.0051c370
add esp, 0x10
test eax, eax
jne 0x513145
push esi
push dword [edi + 0xc]
lea eax, [esp + 0x48]
push dword [edi + 4]
push eax
call fcn.0051c370
mov esi, eax
add esp, 0x10
test esi, esi
je 0x5130b5
push dword [esp + 0x3c]
call fcn.0051c270
add esp, 4
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x3c]
xor ecx, esp
call fcn.00563360
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.00512910
push dword [esp + 0x50]
mov esi, eax
call fcn.0051c270
push dword [esp + 0x50]
call fcn.0051c270
add esp, 0x18
test esi, esi
je 0x51310e
pop edi
pop esi
pop ebp
mov eax, 0xfffffdf5
pop ebx
mov ecx, dword [esp + 0x3c]
xor ecx, esp
call fcn.00563360
add esp, 0x40
ret
mov edi, dword [esp + 0x14]
jmp 0x513112
mov eax, dword [esp + 0x18]
push eax
push edi
cmp ebp, 0xffffffff
jne 0x513138
push dword [esp + 0x2c]
call fcn.00513330
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x3c]
xor ecx, esp
call fcn.00563360
add esp, 0x40
ret
push ebp
push dword [esp + 0x30]
call fcn.00513230
add esp, 0x10
mov ecx, dword [esp + 0x4c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00563360
add esp, 0x40
ret