Function at 0x59c520
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 edi, dword [edx + 0x18]
test eax, 0x180
je 0x59c5e1
bt edi, 0xb
mov eax, dword [edx + 0x10]
mov edi, dword [edx + 0x14]
jae 0x59c584
mov dword [ebp - 0x14], eax
mov ebx, dword [0x648784]
mov esi, dword [0x648780]
mov eax, dword [0x648778]
or eax, dword [0x64877c]
jne 0x59c57b
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 0x59c586
push edi
push eax
push 8
call fcn.00554750
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00568175
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 8
mov eax, 0xb
mov edi, ecx
push ebx
push esi
push eax
call fcn.00554750
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
test ecx, ecx
je 0x59c58d
mov ebx, esp
push eax
sub esp, 8
mov esi, esp
mov ecx, esi
push dword [eax]
call fcn.00530530
mov ecx, edi
mov edx, esi
call fcn.0059c7c0
mov esp, ebx
jmp 0x59c58d
mov eax, 6
mov ecx, dword [ebp + 8]
jmp 0x59c5a6
and edi, 0x1802
mov ebx, dword [edx + 0x14]
mov eax, dword [edx]
mov esi, dword [edx + 0x10]
mov dword [ebp - 0x20], eax
test eax, eax
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x28], edi
je 0x59c77b
cmp edi, 0x1000
je 0x59c77b
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 0x59c77b
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 0x59c755
mov eax, dword [ebp - 0x28]
cmp eax, 2
je 0x59c5d7
cmp eax, 0x1000
mov ecx, dword [ebp + 8]
je 0x59c5a1
mov edi, ecx
cmp eax, 0x800
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x20]
jne 0x59c5b5
mov eax, 0xa
mov ecx, edi
jmp 0x59c5a6