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

Disassembly:
mov eax, 0x50008
call fcn.00448800
mov eax, dword [0x45d600]
xor eax, esp
mov dword [esp + 0x50004], eax
mov eax, dword [esp + 0x5000c]
push ebx
push ebp
mov ebp, dword [esp + 0x50018]
push eax
lea edx, [esp + 0x32010]
push 0xa000
push edx
mov dword [esp + 0x14], ecx
call fcn.00435e29
lea eax, [esp + 0x32018]
push eax
lea ecx, [esp + 0x1c]
push 0xa000
push ecx
call fcn.00435e29
lea edx, [esp + 0x24]
push 0x453b3c
xor ebx, ebx
push edx
mov byte [esp + 0x2f], bl
call fcn.00436105
add esp, 0x20
test eax, eax
je 0x4013b6
lea eax, [esp + 0xc]
push 0x453b40
push eax
call fcn.00436105
add esp, 8
test eax, eax
je 0x4013b6
lea ecx, [esp + 0xc]
push 0x453b44
push ecx
call fcn.00436105
add esp, 8
test eax, eax
je 0x4013b6
or eax, 0xffffffff
jmp 0x4015c0
lea edx, [esp + 0x3200f]
push edx
lea eax, [esp + 0x32010]
push 0xa000
push eax
call fcn.00435e29
push 0x9fff
lea ecx, [esp + 0x1401d]
push ebx
push ecx
mov byte [esp + 0x14024], bl
call fcn.0043e3a0
lea eax, [esp + 0x32024]
add esp, 0x18
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4013f7
push esi
sub eax, edx
push edi
mov esi, eax
push esi
lea edi, [esp + 0x14018]
lea ebx, [esp + 0x32018]
call fcn.00401640
xor ebx, ebx
push 0x9fff
lea edx, [esp + 0xa019]
push ebx
push edx
mov byte [esp + 0xa020], bl
call fcn.0043e3a0
add esp, 0xc
lea eax, [esp + 0xa014]
push eax
mov eax, esi
cdq
sub eax, edx
mov ecx, edi
mov esi, eax
push ecx
sar esi, 1
call fcn.00401140
push eax
call fcn.00401140
push eax
mov eax, esi
call fcn.00430c70
lea edx, [esp + 0x24]
push 0x453b3c
push edx
call fcn.00436105
add esp, 0x18
test eax, eax
jne 0x40152b
lea eax, [esp + 0xa01c]
push eax
lea ecx, [esp + 0x1e018]
push 0xa000
push ecx
call fcn.00435e29
lea eax, [esp + 0x1e020]
add esp, 0xc
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4014a0
sub eax, edx
lea ecx, [esp + 0x1e014]
lea eax, [esp + eax + 0x1e014]
mov edx, ecx
mov esi, 0x811c9dc5
cmp edx, eax
jae 0x4014d2
movsx edx, byte [ecx]
xor esi, edx
inc ecx
imul esi, esi, 0x1000193
cmp ecx, eax
jb 0x4014c2
lea eax, [esp + 0xa014]
push eax
lea ecx, [esp + 0x14018]
push 0xa000
push ecx
call fcn.00435e29
push esi
lea edx, [esp + 0x28024]
push str._08x
push edx
mov byte [esp + 0x14034], bl
call dword [sym.imp.USER32.dll_wsprintfA]
lea eax, [esp + 0x2802c]
push eax
lea ecx, [esp + 0x14030]
push ecx
call fcn.00436105
add esp, 0x20
test eax, eax
je 0x401548
or eax, 0xffffffff
jmp 0x4015be
lea edx, [esp + 0xa014]
push edx
lea eax, [esp + 0x1e018]
push 0xa000
push eax
call fcn.00435e29
add esp, 0xc
cmp ebp, ebx
je 0x401562
lea ecx, [esp + 0x1e014]
push ecx
push 0xa000
push ebp
call fcn.00435e29
add esp, 0xc
push 0xa000
lea edx, [esp + 0x3c018]
push edx
push 0xffffffffffffffff
lea eax, [esp + 0x1e020]
push eax
push ebx
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea eax, [esp + 0x3c014]
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x401590
mov ecx, dword [esp + 0x10]
push ebx
push ebx
push 0xa000
sub eax, edx
push ecx
sar eax, 1
push eax
lea edx, [esp + 0x3c028]
push edx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0x5000c]
pop ebp
pop ebx
xor ecx, esp
call fcn.0043581d
add esp, 0x50008
ret 8