Function at 0x586500
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov esi, ecx
mov ecx, 0x2df45158
mov ebx, edx
xor esi, 0x38d01376
xor ebx, 0x452821e6
mov eax, esi
imul ebp, ebx, 0x2df45158
bswap ebx
mul ecx
mov ecx, eax
imul eax, esi, 0x2d7f954c
bswap esi
add eax, edx
mov edx, 0xb36a80d2
imul esi, esi, 0xb36a80d2
add ebp, eax
mov eax, ebx
mul edx
mov edi, eax
imul eax, ebx, 0xa7ae0bd2
mov ebx, dword [esp + 0x2c]
add eax, edx
bswap edi
add esi, eax
xor edi, ebp
bswap esi
xor esi, ecx
mov ecx, 0x4c957f2d
add esi, ebx
mov eax, esi
adc edi, 0
mul ecx
imul ecx, edi, 0x4c957f2d
mov dword [esp + 8], eax
imul eax, esi, 0x5851f42d
add eax, edx
add ecx, eax
mov eax, dword [esp + 0x28]
cmp ebx, 8
mov dword [esp + 4], ecx
jbe 0x586701
cmp ebx, 0x10
jbe 0x586720
mov esi, dword [ebx + eax - 4]
mov ecx, dword [ebx + eax - 0x10]
mov edi, dword [ebx + eax - 0xc]
mov edx, 0xc97c50de
mov ebp, ebx
mov dword [esp + 0xc], ebp
mov eax, esi
xor ecx, edx
mov edx, 0xc0ac29b7
xor esi, 0xc07b2a4a
xor eax, 0x3f84d5b5
xor edi, edx
bswap eax
mov ebx, eax
mul ecx
mov dword [esp], eax
mov eax, dword [esp + 0x28]
imul ebx, edi
bswap edi
add edx, ebx
imul esi, edi
mov ebx, dword [ebp + eax - 8]
mov eax, edi
mov ebp, ebx
xor ebx, 0x4ab8f6ec
xor ebp, 0xb5470913
bswap ebp
imul ebp, ecx
bswap ecx
add ebp, edx
mul ebx
imul ebx, ecx
mov ecx, dword [esp + 8]
add edx, esi
mov esi, dword [esp + 4]
bswap eax
add ebx, edx
bswap ebx
add ecx, 0x34e90c6e
adc esi, 0xbe5466cf
xor ecx, dword [esp]
xor esi, eax
mov eax, dword [esp + 0x28]
xor esi, ebp
mov edi, esi
xor ecx, ebx
shld edi, ecx, 0x17
shld ecx, esi, 0x17
mov ebp, ecx
nop word cs:[eax + eax]
nop
mov esi, dword [eax + 0xc]
mov edx, dword [eax]
mov ecx, 0xc97c50de
mov dword [esp], eax
mov ebx, dword [eax + 4]
mov dword [esp + 4], esi
xor esi, 0x3f84d5b5
xor edx, ecx
mov ecx, 0xc0ac29b7
bswap esi
mov dword [esp + 8], edx
xor ebx, ecx
mov eax, esi
mov ecx, esi
mul dword [esp + 8]
imul ecx, ebx
bswap ebx
mov dword [esp + 0x10], eax
mov eax, dword [esp]
add edx, ecx
mov ecx, dword [eax + 8]
mov eax, dword [esp + 4]
mov esi, ecx
xor eax, 0xc07b2a4a
xor ecx, 0x4ab8f6ec
xor esi, 0xb5470913
imul eax, ebx
bswap esi
mov dword [esp + 4], eax
mov eax, ebx
mov ebx, dword [esp + 8]
imul esi, dword [esp + 8]
bswap ebx
add esi, edx
mul ecx
imul ecx, ebx
mov ebx, dword [esp + 0xc]
add edx, dword [esp + 4]
bswap eax
add ebx, 0xfffffff0
add ecx, edx
add ebp, 0x34e90c6e
mov dword [esp + 0xc], ebx
adc edi, 0xbe5466cf
xor ebp, dword [esp + 0x10]
bswap ecx
xor edi, eax
mov eax, dword [esp]
xor edi, esi
xor ebp, ecx
mov ecx, edi
shld ecx, ebp, 0x17
shld ebp, edi, 0x17
add eax, 0x10
cmp ebx, 0x10
mov edi, ecx
ja 0x586640
jmp 0x58684e
cmp ebx, 1
jbe 0x5867a9
cmp ebx, 3
jbe 0x5867b7
mov edx, dword [eax]
mov edi, dword [ebx + eax - 4]
xor ecx, ecx
jmp 0x5867c7
mov esi, dword [ebx + eax - 8]
mov ebx, dword [ebx + eax - 4]
mov ebp, 0xc97c50de
mov edi, 0xc0ac29b7
xor ebp, dword [eax]
xor edi, dword [eax + 4]
mov eax, ebx
xor ebx, 0xc07b2a4a
xor eax, 0x3f84d5b5
bswap eax
mov ecx, eax
mul ebp
imul ecx, edi
bswap edi
mov dword [esp], eax
add edx, ecx
mov ecx, esi
xor esi, 0x4ab8f6ec
mov eax, edi
imul ebx, edi
mov edi, dword [esp + 4]
xor ecx, 0xb5470913
bswap ecx
imul ecx, ebp
bswap ebp
add ecx, edx
mul esi
imul esi, ebp
mov ebp, dword [esp + 8]
add edx, ebx
bswap eax
add esi, edx
bswap esi
add ebp, 0x34e90c6e
adc edi, 0xbe5466cf
xor ebp, dword [esp]
xor edi, eax
xor edi, ecx
mov ecx, edi
xor ebp, esi
shld ecx, ebp, 0x17
shld ebp, edi, 0x17
jmp 0x58684e
xor ecx, ecx
cmp ebx, 1
jne 0x5867c3
movzx edi, byte [eax]
mov edx, edi
jmp 0x5867c7
movzx edx, word [eax]
movzx edi, byte [ebx + eax - 1]
xor ecx, ecx
jmp 0x5867c7
xor edi, edi
xor edx, edx
mov eax, ecx
mov esi, ecx
xor edx, 0xc97c50de
xor ecx, 0xc07b2a4a
xor eax, 0x3f84d5b5
xor esi, 0xc0ac29b7
mov ebp, edx
mov dword [esp + 0xc], edx
bswap eax
mov ebx, eax
mul edx
imul ebx, esi
bswap esi
mov dword [esp], eax
add edx, ebx
mov ebx, edi
xor edi, 0x4ab8f6ec
mov eax, esi
imul ecx, esi
xor ebx, 0xb5470913
bswap ebx
imul ebx, ebp
add ebx, edx
mul edi
add edx, ecx
mov ecx, dword [esp + 0xc]
mov ebp, eax
bswap ebp
bswap ecx
imul edi, ecx
mov ecx, dword [esp + 4]
add edi, edx
mov edx, dword [esp + 8]
bswap edi
add edx, 0x34e90c6e
adc ecx, 0xbe5466cf
xor edi, dword [esp]
xor ebp, ebx
xor ebp, ecx
mov ecx, ebp
xor edi, edx
shld ecx, edi, 0x17
shrd ebp, edi, 9
xor ebp, 0xff
mov edx, 0x2df45158
imul edi, ecx, 0x2df45158
bswap ecx
mov eax, ebp
mul edx
mov esi, eax
imul eax, ebp, 0x2d7f954c
bswap ebp
add eax, edx
mov edx, 0xb36a80d2
add edi, eax
mov eax, ecx
mul edx
mov ebx, eax
imul eax, ecx, 0xa7ae0bd2
imul ecx, ebp, 0xb36a80d2
add eax, edx
mov edx, 0xcf6654be
bswap ebx
add ecx, eax
xor ebx, edi
bswap ecx
imul ebp, ebx, 0xcf6654be
bswap ebx
xor ecx, esi
mov eax, ecx
mul edx
mov esi, eax
imul eax, ecx, 0x6e0ce934
add eax, edx
mov edx, 0xcb16f391
add ebp, eax
mov eax, ecx
bswap eax
mov edi, eax
mov eax, ebx
imul ebx, ebx, 0x41ab9930
mul edx
imul edi, edi, 0xcb16f391
add ebx, edx
bswap eax
add edi, ebx
xor eax, ebp
bswap edi
mov edx, eax
xor edi, esi
test cl, 0x20
cmovne edx, edi
cmovne edi, eax
mov eax, edi
shld eax, edx, cl
shld edx, edi, cl
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret