Function at 0x40f100
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [0xa720a2b0]
mov byte [0xb327a50], al
add ah, byte [eax]
and al, 2
add al, 0x2b
add eax, 0xb1042b02
loop 0x40f158
push ebx
stc
invalid
jno 0x40f1c4
add eax, 0x56a2906
and dword [edi], esi
push edx
sbb dword [edx], ecx
or ebp, dword [edx + 2]
and byte [edi], al
push edi
and byte [eax + 0x36], dh
inc esp
jo 0x40f1a7
and al, 0x70
add al, 0x71
imul esi, dword [esi], 0x5371a765
je 0x40f1e6
add eax, 0x57c3906
and dword [edi], esi
push edx
sbb dword [edx], ecx
jp 0x40f1e2
or al, byte [0x5703902]
add ah, byte [edi + 0x43]
or dword [eax + 0x37], esi
jo 0x40f1a0
inc ebx
add al, 0x97
xor dword [eax + esi*2], esp
add al, 0x71
dec ecx
xchg ebp, eax
jb 0x40f21d
aaa
xchg ebp, eax
jo 0x40f1d2
sub cl, byte [ecx]
push ebx
jbe 0x40f206
or dword [ebx + 0x76], edx
pop edx
sbb dword [ebx + 0x74], edx
or eax, dword [0x5193906]
and dword [edi], esi
push edx
sbb dword [edx], ecx
cmp dword [ecx + 0xa], edi
add eax, 0x20570302
jo 0x40f1c8
jno 0x40f20f
add eax, 0x6195906
pop ecx
sbb dword [esi], eax
and dword [edi], esi
push edx
sbb dword [edx], ecx
cmp dword [ecx + 0xa], edi
movsd dword es:[edi], dword [esi]
and al, 0
add al, byte [ebx]
or ah, byte [ebp + 0x3020024]
push edi
and byte [eax + 4], dh
jno 0x40f227
add eax, 0x4690906
and dword [0x30a6092], esi
add al, 0x21
xor eax, 0x30a6092
pushal
or al, byte [ebx]
add al, byte [0x36502055]
and al, 0x50
add al, 0x51
inc ebx
adc byte [0x293b0205], dh
dec ecx
adc byte [edx + 0x62609234], ah
imul edx, dword [edx - 0x4f4f5b60], 0xa1c0923
mov al, 0x23
or dword [edx + ecx], ebx
or edi, dword [ebp + 0x32]
push cs
add ah, byte [eax]
and al, 0x92
and dword [edx], eax
add ecx, dword [edx + 5]
add cl, byte [edx + 4]
mov eax, dword [0xb104694]
inc esi
adc byte [ebx], cl
sub dword [ecx], ebp
adc byte [edx + 0x26d29231], dl
in eax, 0xa4
in eax, 0xa4
push eax
and byte [eax + 0x2d0a6b2d], dl
cmp al, 0xa
sub dword [0x305d50a], ecx
sbb dword [0x91041902], eax
xchg ecx, eax
inc edx
adc byte [ecx], bh
or dword [esi], eax
and dword [0x20220952], esi
xchg ecx, eax
and al, byte [ebx]
add al, byte [ebx]
and byte [ecx + 0x3020322], dl
push ebp
and byte [eax + 4], dl
push ecx
inc ebp
adc byte [edx + 0x1a], ch
sbb dword [eax], edx
xchg edx, eax
xor dword [edx + 0x1f0922e2], edx
add ah, byte [eax]
xchg esi, eax
and ebp, dword [ecx - 0x2f4f5d3e]
movsb byte es:[edi], byte [esi]
push eax
push ds
add byte [0x19020519], al
add al, 0x91
xchg ecx, eax
inc edx
adc byte [ecx], bl
sub al, byte [0x6050d1c6]
test eax, 0x105b02a2
xchg edx, eax
xchg esi, eax
and eax, 0x1b403a7a
mov byte [0x20c207b7], al
sub dword [ecx + 0x24d92926], ecx
sub dword [edx + 0x20fa2922], ebp
movsb byte es:[edi], byte [esi]
das
or ah, byte [ebp - 0x2adfdd81]
and byte [ecx - 0x6e6f5c0f], cl
or byte [edx], cl
xchg ebp, eax
pop eax
jo 0x40f24b
mov dword es:[ecx - 0x36e6f5e4], edx
mov dword [ecx - 0x36e6f5e4], edx
cmpsb byte [esi], byte es:[edi]
push eax
fld dword [ebx]
xchg edi, eax
dec esi
xchg edx, eax
sbb byte [edx + 0x49a190a7], cl
or ah, byte [ebp + 0x22ba701a]
mov dword [ecx - 0x15e6f5a3], esp
mov byte [0x507ea50], al
or dword [ecx + edx*4], eax
pushal
add al, 0xc6
daa
add eax, 0x41891d3
xchg esi, eax
sub byte [esi], bl
add eax, 0x49a09a03
jge 0x40f2fd
mov dl, 0x37
xchg edx, eax
xchg ebp, eax
cmpsd dword [esi], dword es:[edi]
nop
mov eax, dword [0x923b1926]
lds esp, [edi - 0x68d92a70]
xchg edi, eax
imul esp, dword [edx + 0x6c0a7d91], 0xfffffff9
add al, 0x92
pop edi
mov dl, 0xa4
pop eax
mov byte [0xa1a259a1], al
pop edx
push edx
stosb byte es:[edi], al
daa
test eax, 0x290a3ea3
cli
mov eax, dword [0xa706fa50]
jg 0x40f2b3
mov ch, 0x39
or bl, byte [ecx]
stosd dword es:[edi], eax
and cl, byte [edx]
mov ebx, 0xa4cb326
or al, 0xeb
add dword [edx + 0x4fb4b23e], esi
mov byte [0xc1a258c1], al
imul edx, dword [edx - 0x54], 0x4dc3a920
or ch, byte [ecx]
in al, dx
mov dword [0xc700fc50], eax
pop ds
mov byte [0x218d4224], al
sbb ebp, ebp
daa
imul ecx, dword [esi + 0x268e50a1], 0x26e09200
test eax, 0x190a2a90
test eax, 0x4b950a7
xlatb
pop eax
xchg edx, eax
push cs
frstor dword [eax + edx*4 - 0x2af5e12e]
outsb dx, byte [esi]
add byte [edx], bh
mov al, 0x54
and byte [eax + 0x624f1044], dh
push ebx
stc
invalid