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

Disassembly:
sub esp, 0x1bc
mov eax, dword fs:[0x2c]
push ebx
push ebp
push esi
mov esi, dword [eax]
mov eax, dword [0x509b88]
push edi
mov edi, ecx
mov dword [esp + 0x14], edi
cmp eax, dword [esi + 4]
jle 0x408ef5
push 0x509b88
call fcn.0040fcde
add esp, 4
cmp dword [0x509b88], 0xffffffff
jne 0x408ef5
push 0x410d50
call fcn.00410033
add esp, 4
push 0x509b88
call fcn.0040fc94
add esp, 4
mov eax, dword [0x509b90]
cmp eax, dword [esi + 4]
jle 0x408f32
push 0x509b90
call fcn.0040fcde
add esp, 4
cmp dword [0x509b90], 0xffffffff
jne 0x408f32
push 0x410d40
call fcn.00410033
add esp, 4
push 0x509b90
call fcn.0040fc94
add esp, 4
mov eax, dword [0x509b94]
cmp eax, dword [0x509b98]
jne 0x40921a
call fcn.00408800
mov ecx, dword [0x509b70]
cmp ecx, dword [0x509b74]
jne 0x408fab
push edx
push eax
lea ecx, [esp + 0x7c]
call fcn.00408860
mov esi, eax
cmp esi, 0x509b70
je 0x408fa2
mov ecx, 0x509b70
call fcn.00406c10
mov ecx, dword [esi]
mov dword [0x509b70], ecx
mov ecx, dword [esi + 4]
mov dword [0x509b74], ecx
mov eax, dword [esi + 8]
mov dword [0x509b78], eax
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
lea ecx, [esp + 0x74]
call fcn.00406c10
push 4
push 0x3000
push 0x1000
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov ebp, dword [0x509b70]
mov ebx, eax
mov eax, dword [0x509b74]
mov dword [esp + 0x10], eax
cmp ebp, eax
je 0x409209
nop dword [eax + eax]
mov ecx, 0x42
lea edi, [esp + 0xc0]
mov esi, ebp
mov edx, ebx
rep movsd dword es:[edi], dword [esi]
push ecx
push 0x30
push dword [esp + 0x1cc]
or ecx, 0xffffffff
push dword [esp + 0x1cc]
call fcn.0040ca50
xor eax, eax
mov edx, 0x50f
movzx ecx, word [eax + ebx]
cmp cx, dx
jne 0x40902c
mov ecx, 0x2ecd
cmp word [eax + ebx + 3], cx
jne 0x409036
lea ecx, [eax + 5]
jmp 0x409049
cmp cl, 0xc3
je 0x409046
cmp cl, 0xc2
je 0x409041
inc eax
cmp eax, 0x18
jb 0x409012
jmp 0x4091f5
lea ecx, [eax + 3]
jmp 0x409049
lea ecx, [eax + 1]
test ecx, ecx
je 0x4091f5
mov al, byte [ebx]
cmp al, 0x4c
jne 0x40908f
cmp byte [ebx + 1], 0x8b
jne 0x4091f5
cmp byte [ebx + 2], 0xd1
jne 0x4091f5
lea eax, [ecx - 1]
cmp eax, 0x1e
ja 0x4091f5
test ecx, ecx
je 0x40908b
xor eax, eax
nop dword [eax]
cmp byte [eax + ebx], 0xb8
je 0x4090c7
inc eax
cmp eax, ecx
jb 0x409080
xor edi, edi
jmp 0x4090cb
cmp al, 0xb8
jne 0x4091f5
xor eax, eax
test ecx, ecx
je 0x4091f5
mov edx, 0xd2ff
cmp word [eax + ebx], dx
je 0x4090b6
inc eax
cmp eax, ecx
jb 0x4090a6
jmp 0x4091f5
xor eax, eax
cmp word [eax + ebx], dx
je 0x40907b
inc eax
cmp eax, ecx
jb 0x4090b8
xor edi, edi
jmp 0x4090cb
mov edi, dword [eax + ebx + 1]
push 0x40
lea eax, [esp + 0x1c]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
mov eax, dword [esp + 0x1cc]
add esp, 0xc
mov ecx, dword [esp + 0x1c4]
mov dword [esp + 0x60], eax
lea eax, [esp + 0x80]
mov dword [esp + 0x64], ecx
push 0x40
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea eax, [esp + 0xc0]
push eax
lea eax, [esp + 0x84]
push 0x40
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strcpy_s]
movups xmm0, xmmword [esp + 0x9c]
xor ecx, ecx
add esp, 0xc
movups xmm1, xmmword [esp + 0x80]
movups xmmword [esp + 0x28], xmm0
movups xmm0, xmmword [esp + 0xa0]
movups xmmword [esp + 0x18], xmm1
movups xmmword [esp + 0x38], xmm0
movups xmm0, xmmword [esp + 0xb0]
movups xmmword [esp + 0x48], xmm0
cmp byte [esp + 0xc0], cl
je 0x40916b
inc ecx
cmp byte [esp + ecx + 0xc0], 0
jne 0x409160
xor edx, edx
mov esi, 0x811c9dc5
test ecx, ecx
je 0x409195
nop word [eax + eax]
movzx eax, byte [esp + edx + 0xc0]
inc edx
xor eax, esi
imul esi, eax, 0x1000193
cmp edx, ecx
jb 0x409180
mov eax, dword [0x509b98]
mov dword [esp + 0x58], esi
mov dword [esp + 0x68], edi
cmp eax, dword [0x509b9c]
je 0x4091e5
movups xmmword [eax], xmm1
movups xmm0, xmmword [esp + 0x28]
movups xmmword [eax + 0x10], xmm0
movups xmm0, xmmword [esp + 0x38]
movups xmmword [eax + 0x20], xmm0
movups xmm0, xmmword [esp + 0x48]
movups xmmword [eax + 0x30], xmm0
movups xmm0, xmmword [esp + 0x58]
movups xmmword [eax + 0x40], xmm0
movq xmm0, qword [esp + 0x68]
movq qword [eax + 0x50], xmm0
add dword [0x509b98], 0x58
jmp 0x4091f5
lea ecx, [esp + 0x18]
push ecx
push eax
mov ecx, 0x509b94
call fcn.00407320
add ebp, 0x108
cmp ebp, dword [esp + 0x10]
jne 0x408fe0
mov edi, dword [esp + 0x14]
push 0x10000
push 0x1000
push ebx
call dword [sym.imp.KERNEL32.dll_VirtualFree]
push 0x509b94
mov ecx, edi
call fcn.0040c180
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1bc
ret