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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10
mov dword [esp + 4], ecx
nop
mov eax, dword [esp + 0x24]
cmp eax, 0x10000000
ja 0x845a67
nop
test byte [0xa570c8], 1
jne 0x845a67
dec eax
or eax, 1
bsr ecx, eax
xor ecx, 0x1f
neg cl
mov esi, 1
shl esi, cl
mov edi, dword [esp + 4]
lea eax, [edi + 0xc]
mov ebx, dword [edi + 4]
mov edx, 2
shl edx, cl
mov ecx, eax
push ebx
push edx
call fcn.00842a70
lea eax, [esi - 1]
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], esi
mov eax, dword [edi + 4]
mov esi, dword [eax]
cmp esi, ebx
je 0x845a5d
mov dword [esp + 0xc], ebx
jmp 0x845966
nop
mov dword [edx + eax*4], ecx
mov dword [edx + ebp*4], ecx
mov esi, dword [esp]
mov ebx, dword [esp + 0xc]
cmp esi, ebx
je 0x845a5d
mov ecx, esi
mov eax, dword [esi]
mov dword [esp], eax
movzx edx, byte [esi + 8]
xor edx, 0x811c9dc5
imul edx, edx, 0x1000193
movzx esi, byte [esi + 9]
xor esi, edx
imul edx, esi, 0x1000193
movzx esi, byte [ecx + 0xa]
xor esi, edx
imul edx, esi, 0x1000193
movzx esi, byte [ecx + 0xb]
xor esi, edx
imul esi, esi, 0x1000193
mov edx, dword [esp + 4]
and esi, dword [edx + 0x18]
mov edx, dword [edx + 0xc]
lea eax, [esi + esi]
lea ebp, [esi*2 + 1]
mov edi, dword [edx + esi*8]
cmp edi, ebx
je 0x845950
nop
mov dword [esp + 8], eax
mov esi, dword [edx + ebp*4]
mov ebx, dword [ecx + 8]
cmp ebx, dword [esi + 8]
jne 0x845a00
nop
mov esi, dword [esi]
cmp esi, ecx
je 0x8459f7
nop
mov edi, dword [ecx + 4]
mov dword [esp + 8], edi
mov eax, dword [esp]
mov dword [edi], eax
mov ebx, dword [eax + 4]
mov dword [ebx], esi
mov edi, dword [esi + 4]
mov dword [edi], ecx
mov dword [esi + 4], ebx
mov esi, dword [esp + 8]
mov dword [eax + 4], esi
mov dword [ecx + 4], edi
nop
mov dword [edx + ebp*4], ecx
jmp 0x845957
cmp edi, esi
je 0x845a32
nop
mov esi, dword [esi + 4]
cmp ebx, dword [esi + 8]
jne 0x845a00
nop
mov edx, dword [esi]
mov esi, dword [ecx + 4]
mov eax, dword [esp]
mov dword [esi], eax
mov edi, dword [eax + 4]
mov dword [edi], edx
mov ebx, dword [edx + 4]
mov dword [ebx], ecx
mov dword [edx + 4], edi
mov dword [eax + 4], esi
mov esi, eax
mov dword [ecx + 4], ebx
jmp 0x84595a
nop
mov edi, dword [ecx + 4]
mov eax, dword [esp]
mov dword [edi], eax
mov ebx, dword [eax + 4]
mov dword [ebx], esi
mov ebp, dword [esi + 4]
mov dword [ebp], ecx
mov dword [esi + 4], ebx
mov esi, eax
mov dword [eax + 4], edi
mov dword [ecx + 4], ebp
mov eax, dword [esp + 8]
mov dword [edx + eax*4], ecx
jmp 0x84595a
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret 4
nop
movzx eax, byte [0xa36b1a]
cmp al, 0x54
je 0x845b43
mov cl, 0xb9
nop dword [eax]
mov al, 0x98
lock cmpxchg byte [0xa36b1a], cl
je 0x845a95
cmp al, 0x54
jne 0x845a80
jmp 0x845b43
mov ebx, 0xffffffe6
lea eax, [0xd08da4be]
mov dword [esp], eax
mov ebp, 0x300dd0fc
lea eax, [0xd08da4bf]
mov dword [esp + 4], eax
mov esi, 0x300dd0fb
nop word [eax + eax]
mov eax, ebp
mov ecx, 0x2f684bdb
mul ecx
mov edi, edx
mov ecx, ebp
sub ecx, edx
shr ecx, 1
mov eax, esi
mov edx, 0x2f684bdb
mul edx
add ecx, edi
mov eax, esi
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
lea eax, [eax + eax*8]
lea eax, [eax + eax*2]
movzx edx, byte [ebx + 0xa36b1a]
mov edi, dword [esp + 4]
xor dl, byte [edi + eax]
shr ecx, 4
lea eax, [ecx + ecx*8]
lea eax, [eax + eax*2]
xor dl, 0xae
mov byte [ebx + 0xa36b1a], dl
movzx ecx, byte [ebx + 0xa36b1b]
mov edx, dword [esp]
xor cl, byte [edx + eax]
xor cl, 0xae
mov byte [ebx + 0xa36b1b], cl
add edx, 0xfffffffe
mov dword [esp], edx
add ebp, 2
add edi, 0xfffffffe
mov dword [esp + 4], edi
add esi, 2
add ebx, 2
jne 0x845ac0
mov al, 0x54
xchg byte [0xa36b1a], al
nop
push 0xa36b00
call fcn.008ebdaa
int3