Function at 0x40586c
Capabilities:
Encode data using xor
Encrypt data using chaskey
Hash data using murmur3

Disassembly:
mov edx, dword [eax - 4]
test dl, 7
mov ecx, eax
push ebx
mov bl, byte [0x4de059]
jne 0x40576c
test bl, bl
mov ebx, dword [edx]
jne 0x4056f0
sub dword [edx + 0x14], 1
mov eax, dword [edx + 0x10]
je 0x4056c4
test eax, eax
mov dword [edx + 0x10], ecx
lea eax, [eax + 1]
mov dword [ecx - 4], eax
je 0x4056ac
xor eax, eax
mov byte [ebx], al
pop ebx
ret
mov ecx, dword [ebx + 8]
mov dword [edx + 0xc], ebx
mov dword [edx + 8], ecx
mov dword [ecx + 0xc], edx
mov dword [ebx + 8], edx
mov byte [ebx], 0
xor eax, eax
pop ebx
ret
test eax, eax
je 0x4056db
mov eax, dword [edx + 0xc]
mov ecx, dword [edx + 8]
mov dword [eax + 8], ecx
mov dword [ecx + 0xc], eax
xor eax, eax
cmp dword [ebx + 0x18], edx
jne 0x4056de
mov dword [ebx + 0x14], eax
mov byte [ebx], al
mov eax, edx
mov edx, dword [edx - 4]
mov bl, byte [0x4de059]
jmp 0x405775
mov eax, 0x100
lock cmpxchg byte [ebx], ah
je 0x40568f
pause
cmp byte [0x4de909], 0
jne 0x4056f0
push ecx
push edx
push 0
call sub.kernel32.dll_Sleep
pop edx
pop ecx
mov eax, 0x100
lock cmpxchg byte [ebx], ah
je 0x40568f
push ecx
push edx
push 0xa
call sub.kernel32.dll_Sleep
pop edx
pop ecx
jmp 0x4056f0
mov eax, 0x100
lock cmpxchg byte [0x4dea68], ah
je 0x405781
pause
cmp byte [0x4de909], 0
jne 0x405730
push 0
call sub.kernel32.dll_Sleep
mov eax, 0x100
lock cmpxchg byte [0x4dea68], ah
je 0x405781
push 0xa
call sub.kernel32.dll_Sleep
jmp 0x405730
test dl, 5
jne 0x40585c
and edx, 0xfffffff0
test bl, bl
mov ebx, edx
push esi
mov esi, eax
jne 0x405730
test dword [ebx + esi - 4], 1
mov ecx, dword [ebx + esi - 4]
jne 0x4057c4
or ecx, 8
mov dword [ebx + esi - 4], ecx
test byte [esi - 4], 8
jne 0x4057dc
cmp ebx, 0x13ffe0
je 0x4057f4
lea eax, [ebx + 3]
mov dword [esi - 4], eax
mov dword [ebx + esi - 8], ebx
mov eax, esi
mov edx, ebx
call fcn.00404f08
mov byte [0x4dea68], 0
xor eax, eax
pop esi
pop ebx
ret
lea eax, [ebx + esi]
and ecx, 0xfffffff0
add ebx, ecx
cmp ecx, 0xb30
jb 0x405796
call fcn.00404ec8
jmp 0x405796
mov ecx, dword [esi - 8]
sub esi, ecx
add ebx, ecx
cmp ecx, 0xb30
jb 0x40579c
cmp ecx, 0x4b4d2f46
je 0x4057f9
xor ecx, 0xf7d9898
int1
cwde
cwde
jge 0x405808
sub eax, dword [0x43fc12]
add ebx, 0x9a6177b1
sub edx, 0x145741e4
or ecx, 0x5f17e98c
inc ecx
push edi
adc al, 0x81
leave
mov ecx, gs
pop ss
pop edi
dec edx
and esi, 0x5d6942da
call fcn.004a0302
and edi, edi
xchg edi, esi
or edi, 0x8e9fe05c
call fcn.0049ffa4
mov ebx, 0xb6c4f341
not edx
or ebx, ebp
mov esi, edx
add edx, 0x5d66f2c
dec ebx
call fcn.0043d964
cmp eax, 0x4d511917
jae 0x405855
test dword [0x4863a1], 0x424658cf
jns 0x405859
or ebx, ebx
mov ecx, 0x40e57218
in eax, 0x40
ror edx, 0x1d
sub edx, dword [0x44a07e]
xor ebx, dword [0x4744ad]
not esi
dec edx
and edx, edx
shl eax, 0x16
neg edx
add eax, ebp
mov eax, eax
rol edx, 0x1e
mov edx, dword [0x4d4289]
dec ecx
jne 0x40585e
call fcn.004b356c
add ecx, esp
not eax
mov ecx, 0x5f13dcfc
neg esi
or eax, eax
xchg edx, eax
not edi
inc edx
and ebx, esi
inc ebx
neg esi
or esi, 0x70378f2a
not eax
shl eax, 0x10
test dword [0x44c74a], esi
jge 0x4058bd
or edi, dword [0x42a0d8]
shl ebx, 0xc
or edx, edx
and edi, dword [0x41489d]
dec ecx
jne 0x405896
rol ebx, 0xd
dec eax
shl edi, 0xe
mov ecx, 0x365f9dcd
neg edi
and ebx, dword [0x44397d]
or edi, dword [0x48296d]
or eax, dword [0x4a0a3b]
test esi, edi
jnp 0x4058f2
xchg edi, eax
shr edx, 0x1b
xchg edx, eax
inc eax
dec edx
and edx, 0xca79e191
xor ebx, ecx
shr esi, 0x14
xor edx, 0x18435bf0
neg esi
add esi, dword [0x4c703e]
and eax, esi
call fcn.004a5acd
dec ecx
jne 0x4058d8
test dword [0x474083], esp
jno 0x405926
inc ebx
mov edx, 0xbaa6b1c8
xchg edx, esi
rol eax, 0xb
shr esi, 3
xchg edi, edx
mov eax, 0x44e5b30
xchg ebx, esi
call fcn.0044d443
dec edi
neg esi
ror esi, 0x14
not ebx
ror ebx, 6
xchg ecx, esi
call fcn.00404bff
not ebx
xor edi, 0x50740e23
xor edi, ecx
inc eax
rol eax, 0xf
call fcn.004355d0
call fcn.0041bfda
ror eax, 0xf
dec eax
xor edi, ecx
xor edi, 0x50740e23
not ebx
xchg ecx, esi
rol ebx, 6
not ebx
rol esi, 0x14
neg esi
inc edi
call fcn.00477718
xchg ebx, esi
sub eax, 0x19c67cb1
xor edi, ebx
xchg edi, edx
neg edi
xchg ebx, edx
not esi
sub ecx, edx
inc ecx
xor edx, ecx
add esi, 0x49d994a0
call fcn.00425119
sub ebx, 0x283c3098
add edi, 0xce8cfc09
sub ebx, 0xd526152a
dec edx
call fcn.00477718
xchg ecx, eax
xor eax, 0xe5353703
not edx
not ebx
not ebx
not edx
xor eax, 0xe5353703
xchg ecx, eax
call fcn.00426aea
inc edx
add ebx, 0xd526152a
sub edi, 0xce8cfc09
add ebx, 0x283c3098
sub esi, 0x49d994a0
xor edx, ecx
dec ecx
add ecx, edx
not esi
xchg ebx, edx
neg edi
xchg edi, edx
xor edi, ebx
sub eax, 0xea87de7f
xor edx, 0xa3084ee7
sub edx, esp
inc eax
ror eax, 6
call fcn.0049b85c
not esi
call fcn.004a1aed
xchg ebx, edx
dec ebx
neg ebx
dec eax
xchg edx, eax
not ecx
xchg esi, edx
dec eax
call fcn.00477718
xor edx, ebp
dec edi
neg eax
sub eax, 0x3d21ad6f
call fcn.0042005e
add eax, 0x3d21ad6f
neg eax
inc edi
xor edx, ebp
inc eax
xchg esi, edx
not ecx
xchg edx, eax
inc eax
neg ebx
inc ebx
xchg ebx, edx
call fcn.00429b79
not esi
call fcn.0041bfda
rol eax, 6
dec eax
add edx, esp
xor edx, 0xa3084ee7
push eax
sub edi, 0x89291209
dec edx
xor eax, 0x8e2e4cb0
xor eax, esi
sub ecx, edx
xchg edi, eax
dec esi
xor esi, 0x24a358d0
ror edi, 0x11
neg ebx
xor eax, 0xc9f201cd
inc eax
call fcn.004adf3a
dec eax
xor eax, 0xc9f201cd
neg ebx
rol edi, 0x11
xor esi, 0x24a358d0
inc esi
xchg edi, eax
add ecx, edx
xor eax, esi
xor eax, 0x8e2e4cb0
inc edx
add edi, 0x89291209
mov ebx, 0x568e0
ror ecx, 0x13
xchg edi, esi
rol eax, 2
xor edx, esi
call fcn.00424752
xor edx, 0x140bf65c
add esi, ebx
call fcn.00499ce1
not eax
ror eax, 0x1d
sub edx, esi
call fcn.0047fbae
not esi
not esi
add edx, esi
rol eax, 0x1d
not eax
call fcn.004bf841
sub esi, ebx
xor edx, 0x140bf65c
call fcn.00461917
xor edx, esi
ror eax, 2
xchg edi, esi
rol ecx, 0x13
push ebx
call fcn.0046e48a
rol ecx, 0x1a
xor eax, 0x2b6eb241
rol ebx, 2
xor edi, ebp
rol ecx, 0x1e
sub eax, ebx
ror ebx, 1
call fcn.004c3291
sub edx, 0xf934e6f6
dec ebx
not edx
call fcn.0048aa66
dec edi
neg ebx
call fcn.00477718
call fcn.0049251d
neg ebx
inc edi
call fcn.00467491
not edx
inc ebx
add edx, 0xf934e6f6
call fcn.00497525
rol ebx, 1
add eax, ebx
ror ecx, 0x1e
xor edi, ebp
ror ebx, 2
xor eax, 0x2b6eb241
ror ecx, 0x1a
call fcn.0048076d
mov esi, 0x6a9e6b34
xor ecx, edx
call fcn.004631a2
dec ecx
xor esi, 0xfa130bb1
inc edx
add esi, ebx
ror eax, 5
neg edi
sub eax, ecx
call fcn.004a8e5d
xor eax, 0x14828d7a
not edx
xor esi, 0x88809b54
add ecx, ebx
dec esi
xor edx, ecx
call fcn.0049fcc0
sub edx, ecx
xchg ebx, eax
ror ebx, 1
rol ebx, 1
xchg ebx, eax
add edx, ecx
xor edx, ecx
inc esi
sub ecx, ebx
xor esi, 0x88809b54
not edx
xor eax, 0x14828d7a
call fcn.004c25fd
add eax, ecx
neg edi
rol eax, 5
sub esi, ebx
dec edx
xor esi, 0xfa130bb1
inc ecx
xor ecx, edx
and esi, 0x79d682e8
call fcn.00458f36
neg ecx
ror edi, 0xb
xor ebx, 0x8afcb8e8
call fcn.004a8e5d
inc ebx
inc ecx
sub edi, 0x59d31f8b
xor edx, 0x378c95cc
call fcn.00427288
call fcn.0047c371
xor edx, 0x378c95cc
add edi, 0x59d31f8b
dec ecx
dec ebx
call fcn.004aa99b
xor ebx, 0x8afcb8e8
rol edi, 0xb
neg ecx
call fcn.004138a8
xor esi, 0x68920220
and byte [edx], al
xchg edx, eax
push 0x401fcbc1
neg edi
xchg edx, esi
inc ebx
xor ebx, 0xbfbef78e
xchg edi, esi
rol ecx, 0xe
call fcn.0043c2a9
sub edx, ebp
ror ebx, 0x12
add ebx, 0xf28060ff
call fcn.0041bfda
xor esi, 0xc0044fd
ror ebx, 0xf
dec eax
sub edi, esi
add edi, 0x4f22ccb9
xor edx, 0xcdc238d4
add edi, ebp
call fcn.004bf50e
call fcn.004c2100
add byte [ebx], ch
std
xor edx, 0xcdc238d4
sub edi, 0x4f22ccb9
add edi, esi
inc eax
rol ebx, 0xf
invalid
idiv ch