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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x1c
mov edx, ecx
mov ecx, dword [ebp + 8]
mov eax, dword [0x644040]
xor eax, ebp
mov dword [ebp - 0x10], eax
movzx eax, word [ebp + 0xc]
mov esi, dword [edx + 0x18]
test eax, 0x180
je 0x59a725
bt esi, 0xb
mov eax, dword [edx + 0x10]
mov edi, dword [edx + 0x14]
jae 0x59a6d4
mov dword [ebp - 0x14], eax
mov ebx, dword [0x648794]
mov esi, dword [0x648790]
mov eax, dword [0x648788]
or eax, dword [0x64878c]
jne 0x59a6cb
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov ecx, dword [ebp + 8]
xor ebx, edi
xor esi, dword [ebp - 0x14]
push ebx
push esi
jmp 0x59a6d6
push edi
push eax
push 8
call fcn.005563e0
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00566245
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 8
mov eax, 0xb
push ebx
push esi
push eax
call fcn.005563e0
mov eax, dword [edi]
test eax, eax
je 0x59a6dd
mov eax, edi
mov edi, esp
push eax
sub esp, 8
mov esi, esp
mov ecx, esi
push dword [eax]
call fcn.005370e0
mov ecx, dword [ebp + 8]
mov edx, esi
call fcn.0059a910
mov esp, edi
jmp 0x59a6dd
and esi, 0x1802
mov ebx, dword [edx + 0x14]
mov edi, dword [edx]
test edi, edi
setne al
mov dword [ebp - 0x28], esi
cmp esi, 0x1000
setne cl
and cl, al
mov dword [ebp - 0x14], edx
mov esi, dword [edx + 0x10]
cmp cl, 1
mov dword [ebp - 0x20], edi
jne 0x59a8c4
mov edi, esi
mov ecx, esi
mov dword [ebp - 0x1c], esi
and esi, 0xff
xor esi, 0x84222325
mov eax, esi
mov edx, 0x1b3
mul edx
imul esi, esi, 0x100
or esi, edx
mov dword [ebp - 0x24], esi
shr edi, 8
and edi, 0xff
xor edi, eax
mov eax, edi
mov edx, 0x1b3
mul edx
mov dword [ebp - 0x18], eax
mov esi, 0xcbf29ce4
imul esi, esi, 0x1b3
add esi, dword [ebp - 0x24]
imul eax, edi, 0x100
add eax, edx
imul edi, esi, 0x1b3
add edi, eax
shr ecx, 0x10
and ecx, 0xff
xor ecx, dword [ebp - 0x18]
mov eax, ecx
mov edx, 0x1b3
mul edx
mov esi, eax
imul eax, ecx, 0x100
add eax, edx
imul edi, edi, 0x1b3
add edi, eax
mov eax, dword [ebp - 0x1c]
shr eax, 0x18
xor esi, eax
mov eax, esi
mov ecx, 0x1b3
mul ecx
imul ecx, esi, 0x100
add ecx, edx
mov esi, ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x1c], ebx
and ebx, 0xff
xor ebx, eax
mov eax, ebx
mov edx, 0x1b3
mul edx
imul edi, edi, 0x1b3
add ecx, edi
imul ebx, ebx, 0x100
add ebx, edx
imul ecx, ecx, 0x1b3
add ebx, ecx
shr esi, 8
and esi, 0xff
xor esi, eax
mov eax, esi
mov ecx, 0x1b3
mul ecx
imul ecx, esi, 0x100
add ecx, edx
imul edx, ebx, 0x1b3
add ecx, edx
mov edi, dword [ebp - 0x18]
shr edi, 0x10
and edi, 0xff
xor edi, eax
mov eax, edi
mov edx, 0x1b3
mul edx
mov ebx, 0x1b3
mov esi, eax
imul edi, edi, 0x100
add edi, edx
mov edx, dword [ebp - 0x1c]
shr edx, 0x18
imul eax, ecx, 0x1b3
add edi, eax
xor esi, edx
mov eax, esi
mul ebx
imul ebx, esi, 0x100
add ebx, edx
imul ecx, edi, 0x1b3
add ebx, ecx
mov edx, dword [ebp - 0x20]
mov cl, byte [edx]
mov esi, eax
test cl, cl
je 0x59a8c4
lea edi, [edx + 1]
movzx ecx, cl
xor ecx, esi
mov eax, ecx
mov esi, 0x1b3
mul esi
imul ebx, esi
add ebx, edx
mov edx, 0x100
imul ecx, edx
add ebx, ecx
mov cl, byte [edi]
inc edi
mov esi, eax
test cl, cl
jne 0x59a89e
mov eax, dword [ebp - 0x28]
cmp eax, 2
je 0x59a8f5
cmp eax, 0x1000
mov ecx, dword [ebp + 8]
mov edi, dword [ebp - 0x14]
je 0x59a6f1
cmp eax, 0x800
mov eax, dword [ebp - 0x20]
jne 0x59a700
mov eax, 0xa
jmp 0x59a6f6
mov eax, 6
mov ecx, dword [ebp + 8]
mov edi, dword [ebp - 0x14]
jmp 0x59a6f6