Function at 0x40f3eb
Capabilities:
Encode data using xor

Disassembly:
pop esp
pop esp
pop esp
sub eax, 0x5c5ca226
jecxz 0x40f24b
sub eax, 0x5c5c32cd
int 0x32
pop esp
pop esp
das
mov byte [ecx + 0x5b], bl
pop ebx
push es
jae 0x40f25f
inc byte [edx]
jae 0x40f214
je 0x40f293
fnsave dword [edi + ebp*2 - 0x1a]
push ebp
and al, 0x73
xchg esi, eax
pop esp
pop esp
pop esp
pop esp
jae 0x40f2a0
and al, 0xa3
pop esp
pop esp
pop esp
pop esp
jae 0x40f22c
insb byte es:[edi], dx
jae 0x40f25f
je 0x40f2be
push ebp
jae 0x40f271
push ebp
pop ebx
sbb eax, 0x6ce1ef12
pop esp
or al, 0xe
push cs
imul esp, dword [esp + 0x5b], 0x1d
push es
jae 0x40f296
invalid
invalid
push ebp
jmp 0x40f258
out 0x4d, al
imul eax, dword [ecx - 0x24], 0x5c
xor byte [ebx + ebx*2 + 0x46], bl
je 0x40f2d8
inc esi
dec ebp
pop ebx
inc esi
insb byte es:[edi], dx
sub eax, 0x5c5e924e
jae 0x40f26f
out 0x74, al
jae 0x40f268
je 0x40f2fe
fsub qword [ebx + 0x1d]
push edi
jae 0x40f288
arpl word fs:[0x74f67357], bx
je 0x40f303
outsd dx, dword [esi]
fisub word [esp + 0x73]
and al, 0x73
salc
pop esp
pop esp
pop esp
pop esp
jae 0x40f2b5
push ebp
outsd dx, dword [esi]
shl byte [edi + ebp*2], cl
xchg esi, eax
pop esp
pop esp
pop esp
pop esp
sbb bl, byte [eax]
adc ch, bh
loope 0x40f31b
pop esp
push es
jae 0x40f2e8
arpl word [0xa08026c], si
push ebp
outsd dx, dword [esi]
insb byte es:[edi], dx
add cl, byte [eax]
or dl, byte [ebp + 0x6f]
out 0x55, al
ret 0xfcdd
invalid
pushfd
outsd dx, dword [esi]
out 0x4d, al
sbb bl, byte [eax]
adc dh, byte [ebx - 0x1a]
dec ebp
jae 0x40f30b
push ss
jecxz 0x40f2ef
push ebp
jae 0x40f32e
movsb byte es:[edi], byte [esi]
je 0x40f360
clc
insb byte es:[edi], dx
ret 0x2df9
je 0x40f330
pop esp
pop ebx
inc esp
movsb byte es:[edi], byte [esi]
movsb byte es:[edi], byte [esi]
pop ebx
dec eax
jl 0x40f364
inc esp
movsb byte es:[edi], byte [esi]
movsb byte es:[edi], byte [esi]
sub eax, 0x5c5c4a62
arpl bp, sp
pushfd
sbb bl, ah
push es
jae 0x40f34e
arpl word [0x565f02cc], si
insb byte es:[edi], dx
mov byte [0x465c5c5e], al
or ch, 0xdb
inc ebx
fcomp qword [ebx + esi*2 - 0xa]
je 0x40f39e
int3
outsd dx, dword [esi]
pop esi
ret 0xdcdd
arpl word [esi], sp
or eax, 0x15e6eb5c
xor eax, dword [ebx - 0x24]
pop esp
adc eax, 0x5cdc4333
inc ebx
fcomp qword [edi + ebx*4 + 0x4d]
lahf
dec ebp
adc esp, eax
pop esp
ja 0x40f340
or eax, 0xe66fdfc2
sbb eax, 0x6f8ce673
out 0x25, al
jae 0x40f33e
out 0x1d, al
jae 0x40f338
mov word [edi - 0x1a], gs
and eax, 0x6f74e673
je 0x40f3c9
out 0x2d, al
jae 0x40f344
xchg esp, eax
outsd dx, dword [esi]
out 0x35, al
jae 0x40f34a
pushfd
outsd dx, dword [esi]
out 0x3d, al
arpl word [esi], sp
inc ebp
pop esp
arpl word [esi], sp
dec ebp
pop esp
arpl word [esi], sp
push ebp
pop esp
outsd dx, dword [esi]
inc ebp
outsd dx, dword [esi]
dec ebp
and al, 0x9f
pop esp
pop esp
pop esp
pop esp
outsd dx, dword [esi]
out 0xd, al
ja 0x40f36b
or eax, 0x5c5ca324
pop esp
pop esp
jmp 0x40f374
insb byte es:[edi], dx
outsd dx, dword [esi]
out 0xf5, al
jae 0x40f381
jl 0x40f40c
out 0xfd, al
std
sub eax, 0x5c5cc05c
jae 0x40f403
pop ebp
pop esp
pop esp
pop esp
outsd dx, dword [esi]
out 5, al
ja 0x40f395
cmc
cld
jae 0x40f399
insb byte es:[edi], dx
pop ebx
mov esp, 0xe05065b
push cs
arpl word [esi], sp
in eax, dx
pop esp
arpl word [esi + 0x55], dx
pop esp
inc esp
mov ah, byte [ebx + esi*2]
xchg esi, eax
pop esp
pop esp
pop esp
pop esp
jae 0x40f430
bound esi, qword [ebx + 0x16]
jae 0x40f3e6
or eax, 0x6f24626f
xchg esi, eax
pop esp
pop esp
pop esp
pop esp
xor ebp, dword [esi + 0x73]
out 0xd, al
and al, 0xa3
pop esp
mov dword [0x5c5c5c5c], eax
pop esp
pop esp
pop esp
jae 0x40f3cd
out 0xed, al
in eax, dx
adc ch, bh
jecxz 0x40f3f2
push es
jae 0x40f423
inc byte [edx]
push ebp
jae 0x40f3d9
out 0x74, al
jae 0x40f3e2
je 0x40f468
in al, dx
insb byte es:[edi], dx
ret 0x74f6
je 0x40f428
push es
cmp eax, 0xe6735b5b
insb byte es:[edi], dx
jae 0x40f3e0
fsub qword [ebx + 0x1d]
sub byte [esi + edi*2 + 0x73], al
arpl word fs:[0x737e4428], bx
arpl word [0x737e4428], bx
out 0x74, al
jmp 0x40f3eb
je 0x40f3f9
fsub qword [esi + ebx*2 - 0x3da3a3a4]
fstp st(4)
xor esi, dword [ebx + esi]
xor byte [eax], dh
pop esi
jae 0x40f405
pop esp
pop esp
pop esp
ret 0xdcdd
je 0x40f47c
cmp al, 0x8c
jae 0x40f40b
je 0x40f482
cmp al, 0x84
jae 0x40f411
test byte [ebx - 0x1a], dh
je 0x40f488
cmp al, 0x74
xor byte [ebx + ebx*2 + 0x46], bl
pop esp
pop ebx
inc esi
jl 0x40f4a8
out 0x74, al
pop ebx
cmp al, 0x7c
pop ebx
inc esi
insb byte es:[edi], dx
sub eax, 0x5c5c4601
arpl bp, sp
pushfd
jae 0x40f42d
je 0x40f4ac
dec esp
movsb byte es:[edi], byte [esi]
pop esp
inc esi
jb 0x40f4aa
inc esi
insb byte es:[edi], dx
pop ebx
inc esi
je 0x40f482
pop cx
pop ebx
pop ebx
xor byte [eax + esi + 0x5c], bl
pop esp
xor byte [eax + esi + 0x5c], bl
xor byte [edi + esi*2 - 0x1a], bl
push ebp
cld
sub al, 0xa2
pop esi
pop esp
pop esp
sub eax, 0x5b5b59a7
mov byte [0x2d5c5c5e], al
cmpsd dword [esi], dword es:[edi]
pop ecx
pop ebx
pop ebx
arpl bp, sp
xchg esp, eax
jae 0x40f45c
push ebp
jae 0x40f48f
je 0x40f4ee
and dl, byte [ebx + esi*2 + 0x1d5b9c32]
xchg esp, eax
jae 0x40f4b1
xor bl, byte [ebx + ebx*2 - 0x23223de3]
adc ch, bh
pushfd
pop ebx
sbb eax, 0x12dcddc2
ret 0xdcdd
out dx, eax
jecxz 0x40f48f
push es
jae 0x40f4c0
inc byte [edx]
or byte [edx], cl
jae 0x40f4e7
insb byte es:[edi], dx
jae 0x40f47e
jl 0x40f509
dec edx
je 0x40f508
outsd dx, dword [esi]
out 0x55, al
jae 0x40f4b6
xor esi, dword [esi + 0x465b5963]
pop ebx
inc esi
sub ax, 0x4893
pop esp
pop esp
jae 0x40f4a1
not byte [ebp - 8]
push ebp
clc
jae 0x40f498
xor bl, ch
test byte [edx - 0x21], ah
jae 0x40f4ac
jl 0x40f486
in al, dx
push esi
shr ah, cl
in al, dx
insb byte es:[edi], dx
pop eax
arpl word [ecx + 0x5b], bx
inc esi
outsb dx, byte [esi]
pop ebx
div byte [ebx + esi*2 + 0x16]
insb byte es:[edi], dx
outsd dx, dword [esi]
inc esi
insb byte es:[edi], dx
arpl word [esi + 0x74], dx
pop esp
push esi
int1
jae 0x40f4bd
test al, ch
outsd dx, dword [esi]
mov esp, 0x6f8ce673
mov edx, ss
sbb dh, byte [edx + ecx*2 + 0x64]
rol byte [ebx + 0x48], cl
dec eax
sub ax, 0x4808
pop esp
pop esp
jae 0x40f4d9
xor bl, ch
test byte [edx - 0x1a], ah
push ebp
sbb bl, byte [eax]
adc ch, bh
jecxz 0x40f56f
in al, 0xa4
insb byte es:[edi], dx
or byte [ebx + 0x44], dh
movsb byte es:[edi], byte [esi]
insb byte es:[edi], dx
outsd dx, dword [esi]
push 0x5cbc8f2d
mov esp, 0x5d735c5c
pop esp
pop esp
jae 0x40f56a
lea ebx, [esp + ebx*2 + 0x5c]
outsd dx, dword [esi]
call 0xbcb4227b
pop esp
pop esp
outsd dx, dword [esi]
mov ebp, 0x5c5c5c8d
mov esp, 0xbd6f5c5c
lea ebx, [esp + ebx*2 + 0x5c]
jae 0x40f50a
sbb bl, ah
sub eax, 0x5c5cbc54
jae 0x40f587
lea ebx, [esp + ebx*2 + 0x5c]
xor esi, dword [edx + 0x73]
insb byte es:[edi], dx
sal ah, cl
movsb byte es:[edi], byte [esi]
inc esp
outsb dx, byte [esi]
jae 0x40f516
fld qword fs:[bp + 0x3f]
fsubr st(3), st(0)
ret 0xe3dd
pop esp
jae 0x40f5ca
lea ebx, [esp + ebx*2 + 0x5c]
pop esp
pop esp
xor ebp, dword [esi + 0x73]
in al, dx
sar byte fs:[edi], cl
inc esp
js 0x40f5ee
fbld tbyte [ebx + 0x4c]
pop esp
inc esi
aas
sbb byte [edi], ch
aad 0x46
pop esp
pop esp
jae 0x40f582
outsd dx, dword fs:[esi]
in al, dx
sbb bl, ah
push es
jae 0x40f5c8
arpl word [0x134d9f8c], si
loopne 0x40f5f7
adc esp, eax
pop esp
arpl word [esi], sp
sub eax, 0x2df6775c
sub eax, 0x2df6775c
ret 0x73df
outsd dx, dword [esi]
out 0x45, al
jae 0x40f598
test ah, bl
jmp 0x40f59c
out 0x2d, al
ja 0x40f5b2
sub eax, 0x5c5ca324
pop esp
pop esp
pop ebx
inc esi
invalid
cld
and al, 0x5b
invalid
in al, 0xa4
je 0x40f5ad
and al, 0xa4
je 0x40f601
or byte [edx], cl
outsd dx, dword [esi]
lodsb al, byte [esi]
jae 0x40f632
lahf
dec ebp
adc esp, eax
pop esp
ret 0xfce7
or byte [edx], cl
outsd dx, dword [esi]
lodsb al, byte [esi]
jae 0x40f665
lahf
dec ebp
adc esp, eax
pop esp
ret 0xfce7
movsb byte es:[edi], byte [esi]
je 0x40f66a
or byte [edx], cl
outsd dx, dword [esi]
lodsb al, byte [esi]
jae 0x40f69b
lahf
dec ebp
adc esp, eax
pop esp
ret 0xfce7
adc dh, byte [ebx + 0x27]
push ss
invalid
pushal
mov ecx, 0x2319c
mov dl, byte [ecx + 0x400fff]
sub dl, 0x5c
ror dl, 7
ror dl, 0xa2
mov byte [ecx + 0x400fff], dl
loop 0x4241a1
popal
jmp 0x40f21d