Function at 0x5158c0
Capabilities:
Encode data using xor

Disassembly:
or edi, dword [ebx]
dec edi
aaa
imul edi, dword [edx], 0x5f2dc385
pop es
fcmovnbe st(0), st(0)
mov dl, 0xe
out 0xdc, al
rol ecx, cl
popal
fist word [ebx - 8]
test dword [ecx], esp
jle 0x51593f
and bl, cl
xor edi, dword [ecx]
mov ch, 0x1e
rcl dword [eax]
test dword [edi], edx
mov al, 0x30
xchg esp, eax
adc ch, byte [edi]
sti
dec edx
jo 0x515910
xor al, byte [ebx - 0x4232282d]
push ebp
adc al, byte [ecx + 0x2d]
movsd dword es:[edi], dword [esi]
add dword [ebx - 0x6c7e0c71], edx
mov fs, word [esi + 0x73e61b9e]
mov edx, 0xfbcb931b
mov eax, 0x9b59f303
int 0xd3
mov dword [0x91a581af], eax
lodsb al, byte [esi]
adc ch, byte [ebx + 0x13a8183e]
wait
loopne 0x51591f
invalid
wait
dec eax
movsd dword es:[edi], dword [esi]
jmp 0x5159b4
and esp, dword [eax - 0x15]
clc
inc esi
out 0x1f, al
jmp dword [esi]
ja 0x515a29
fisub word [ebx]
movsb byte es:[edi], byte [esi]
push ss
push cs
jecxz 0x5159be
dec dword [esi + 0x46313528]
xor dword [edx + edx*4], esp
mov gs, word [eax]
xor eax, 0x24314631
xchg edx, eax
push ebx
jle 0x5159ac
wait
salc
lodsb al, byte [esi]
imul esi, dword [ebx], 0xffffffe2
dec ebx
or dword [edi + 0x32e40324], 0xffffffa1
insd dword es:[edi], dx
jmp 0x63c48eb4
jae 0x515a41
call [eax + 0x319592d3]
inc esi
jno 0x5159d9
sti
invalid
xchg edx, eax
insd dword es:[edi], dx
jb 0x515a75
mov cl, 0xd
jge 0x5159dc
mov edi, dword [ebx - 0x6448f460]
enter 0xffffffffffff9647, 0xffffffffffffffc2
cmpsd dword [esi], dword es:[edi]
mov al, byte [0xd5911c8f]
xchg esi, eax
aam 0x63
mov dword [0xc339be7b], eax
inc edx
out 0x53, al
push ebx
or ebp, edi
imul ebx, dword [eax + 0x50fbd313], 0x4d
sbb al, 0x5e
pop ebx
mov al, 0xc1
cdq
iretd
xchg ebp, eax
xor edx, eax
xor eax, dword ds:[ecx + 0x33]
xchg ecx, eax
inc eax
mov bh, 0x4c
lodsb al, byte [esi]
inc edi
invalid
mov dl, 0xd2
push edx
mov word [esi + 0x3030ab23], es
xor edx, dword [eax]
push ecx
and al, byte [esi + 0x24]
jge 0x515a63
insd dword es:[edi], dx
popfd
loope 0x515a92
dec edi
adc dl, byte [edi]
lodsd eax, dword [esi]
dec esp
add eax, dword [ecx]
bound esi, qword [esi - 0xf]
add edx, esi
bound esi, qword [esi - 0xf]
jbe 0x515a9a
jb 0x515a4b
mov al, 0x12
sub eax, 0xb18a3409
adc ch, byte [0xb18a3409]
add al, 0xd4
dec ecx
jne 0x515ae1
repne stosb byte es:[edi], al
fisttp word [edx]
sbb eax, 0x6041bda3
fsub qword [ecx + 0x59f787e3]
dec edx
je 0x515b33
inc esi
adc eax, dword [edx]
add dl, bh
inc ebp
lodsd eax, dword [esi]
xchg esi, eax
push ebp
aam 0x83
pop edi
mov cl, 0xaf
mov esi, 0x534e84e6
imul esi, dword [ebx], 0x10
daa
adc eax, edx
pop edx
and edx, 0x53
fsub qword [ebx + 0x39e915b3]
pxor mm4, mm4
rol dword [eax], 1
mov dl, 0xa2
push ebx
xor eax, 0x72d2f56c
push edx
lea ebx, [ebx - 0x5f]
inc esp
dec ebp
adc dword [ecx], eax
shr byte [ebp + 0x2a4fd3d6], cl
pop ebx
cmp edx, dword [ebx + esi*2]
lcall 0x3291, 0xc06e68f7
sbb eax, 0xcccb0014
or eax, 0xb728e083
invalid
wait
insd dword es:[edi], dx
movsb byte es:[edi], byte [esi]
lodsd eax, dword [esi]
fst qword [ebx + 8]
add esp, dword [eax]
shl byte [edx], cl
cmp ecx, edi
cmpsb byte [esi], byte es:[edi]
push ecx
adc esp, esi
fist word [ebx + esi*4]
sub ecx, dword [edx + eax*8 + 0x36c94764]
mov bl, 0x22
ljmp 0xc035