Function at 0x509000
Capabilities:
Encode data using xor

Disassembly:
mov ebx, 0x55163
mov edx, 0x509016
mov edi, 0x6c4
xor dword [edx + edi], ebx
sub edi, 4
jne 0x50900f
nop
nop
nop
mov ebp, dword [esp + eax]
add byte [ebx + 0x51], ah
add eax, 0x45516300
add byte [ebx + 0x41], ah
add eax, 0x15016300
add byte [edi + 0x63001507], bl
loope 0x50903c
add byte [esi + ebp*4 - 0x3e280006], bl
inc esp
add byte [0x31004488], ah
mov byte [eax + eax - 0x3d], al
add byte [eax + eax], 0x27
mov byte [eax + eax], al
xor ecx, dword [eax - 0x3e28fffc]
add al, 0
daa
mov byte [eax + eax], al
xor ecx, dword [eax + 0x51630004]
add eax, 0x5516300
add byte [ebx + 0x51], ah
add eax, 0x5516300
add byte [ebx + 0x51], ah
add eax, 0x5516300
add byte [ebx + 0x51], ah
add eax, 0x5516300
add byte [ebx + 0x51], ah
add eax, 0x5516300
add byte [ebx + 0x51], ah
add eax, 0x5516300
add byte [ebx + 0x51], ah
add eax, 0x5516300
add byte [ebx + 0x51], ah
add eax, 0
add byte [eax], ch
xor al, 0x77
outsb dx, byte [esi]
push es
cmp eax, 0x354d3236
imul ebp, dword [ebx + 0x16], 0x34377460
push 0x71303370
push 0x65425122
pop ss
add eax, 0x17136d60
insb byte es:[edi], dx
insb byte es:[edi], dx
push es
pop ds
insd dword es:[edi], dx
push es
adc byte [0x64341143], al
je 0x5090d5
pop ss
insb byte es:[edi], dx
insb byte es:[edi], dx
push es
adc byte [0x61300652], al
inc esi
push edx
push es
xor byte [ecx + 0x46], ah
or bh, byte [0x23340060]
insb byte es:[edi], dx
je 0x5090e9
pop ss
insb byte es:[edi], dx
insb byte es:[edi], dx
push es
push ecx
push esi
pop ss
pop ss
insb byte es:[edi], dx
insb byte es:[edi], dx
push es
add dword [edx + 0x69], ebp
or eax, 0x63726025
adc ch, byte [ecx + 0x6f]
adc byte [ecx*2 + 0x69350d61], dh
arpl word gs:[esi], dx
pushal
je 0x50913e
cmp byte [esi + 0x6b], ah
and byte [esi], bh
jo 0x50917c
pop ss
push ecx
inc edx
pop ss
sbb al, 0x6a
push ss
cmp eax, 0x3d0a4660
pushal
dec esi
add bh, byte [eax]
inc ecx
arpl word [eax], dx
inc ecx
push esi
and al, byte [ecx]
dec esp
xor edx, dword [ecx + 0x7f]
popal
insb byte es:[edi], dx
sqrtps xmm2, xmmword [edi + 0x65]
add al, 0x1e
jne 0x50919b
or eax, 0x2679601a
sub dword [eax + eax + 0x31], eax
xor al, 0x62
xor dword [edx], esi
push ecx
push ss
xor al, 0x77
jns 0x50917c
xor byte [ecx + 0x75], ch
push es
adc al, 0x7d
inc ecx
arpl word [ebx], ax
pushal
and byte [di], bh
push 0x73
push es
sbb ah, byte [eax + 0x79]
arpl word [edx], ax
push 0x66
pop ss
jb 0x509169
or eax, 0x23006948
push 0x73
or al, 0x37
jae 0x509177
aaa
jno 0x5091ca
xor al, 0x38
imul esp, dword [esp + ecx + 0x26], 0x76
pop esp
and byte [edi + esi*2], ah
and al, 0x77
jb 0x509181
push es
aas
jno 0x5091d4
push es
and esi, dword [esi + 0x69]
or al, 0x3f
pop ecx
inc ebp
imul ecx, dword [edi + edi], 0x211b4559
sbb esp, dword [ecx]
imul ebp, dword [edi + 0x11], 0x33007734
sbb byte [ebx + 0x46], cl
arpl word [eax], bx
imul ebp, dword [ecx + 0x17], 0x38
je 0x5091a1
push ecx
push eax
mov ecx, dword [edi - 0x624b3e30]
mov ah, 0x9d
scasb al, byte es:[edi]
cli
invalid
lahf
push edx
push esp
or al, ch
xchg esp, eax
xchg al, al
fcom dword [di]
call dword [esi]
test eax, 0xdc9f75fa
push eax
mov esp, 0x7db931
arpl word [ecx - 0x7f], dx
rcl byte [edi], 0x3c
cli
jne 0x509186
adc eax, 0xfaa916ff
jne 0x50917a
fcom qword [eax - 0x44]
xor dword [ecx + 0x5163007d], edi
add eax, 0x75fa3c17
wait
fmul qword [eax - 0x44]
xor bl, ah
xor byte [ebp + ebx*4 - 0x74af0552], 0x54
pop es
add byte [ebx - 0x2b], ah
lds esi, [eax + eax*2 + 0x37]
xchg byte [ebp - 0x55029], bh
and ebx, dword gs:[edi + edi*8]
push ss
test eax, 0xdc9f75fa
push eax
mov esp, 0xb688dc31
popfd
scasb al, byte es:[edi]
cli
push ecx
mov eax, dword [eax]
pop es
add byte [ebx - 0x27], ah
inc eax
mul ebx
sub al, 0xf2
add byte [esi], dl
jl 0x509223
jne 0x5091ca
fadd qword [eax - 0x44]
xor ebx, esp
nop
mov dh, 0x9d
scasb al, byte es:[edi]
cli
push edx
mov edx, eax
pop es
add byte [ebx - 0x2b], ah
arpl bp, dx
lds esi, [ebp + esi*2 - 0x52]
jo 0x50923a
pushfd
and al, 0xf9
lea ebp, [esi]
in eax, dx
push esp
invalid