Function at 0x407ec0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x76]
mov edx, dword [ebp + 1]
push eax
mov eax, dword [ebp + 0x10]
push 1
push ecx
mov ecx, dword [ebp - 0x58]
pushal
mov edx, dword [ebp + 8]
nop
push ecx
push edx
xor al, 0xe
xchg byte [eax], al
add byte [ebx - 0x3ca2e385], al
cmp esp, esp
nop
nop
nop
salc
nop
nop
nop
push ebp
mov ebp, esp
and dword [eax + 0x107d8314], 0x4f
jl 0x407f03
mov bl, 0x45
adc byte [esi - 0x3e], cl
add byte [ebp + 0x1da30845], bh
mov ebp, 0x1da30845
xor dl, al
inc eax
dec ebp
mov ecx, dword [ebp + 0x18]
push ebx
mov ebx, dword [ebp + 0x20]
push esi
xor esi, esi
push edi
fnstsw ax
mov dword [edi - 0x9d37604], edi
les eax, [0xd7afb78]
fld qword [ebp + 8]
fsubr st(0), st(0)
fstp qword [ebp + 8]
mov dword [ecx], 1
mov ebp, dword [edx + 0xc]
mov edx, dword [ebp + 8]
aas
inc ebp
in al, dx
dec ecx
add edx, dword [edx - 1]
adc eax, 0x2bad18
fstp qword [ebp + 5]
push ebx
inc ebp
in al, dx
fcomp qword [0x2c40c230]
add esp, 0xc
mov byte [esi + esi*8 + 0x45], 0x69
jnp 0x407fcd
xor dl, al
inc eax
sub al, 0x83
les ecx, [esi + eax*8]
inc esp
test byte [ebp + 0x69], 0x7b
jb 0x407ee9
lea esi, [ebx + 0x50]
jae 0x407fae
cmp esi, ebx
salc
pop eax
fld qword [ebp + 0x66]
fcomp qword [0x40c230]
jecxz 0x407f4d
test ah, 0x44
aaa
cwde
fld qword [eax + 0x100ddc61]
jg 0x407fba
add byte [ebx - 0x7cad13bb], bl
jge 0x407f8a
fstp qword [esp]
wait
adc eax, 0xfd40c118
std
fstp qword [ebp - 0xc]
fld qword [ebp - 0xc]
fadd qword [0x405d08]
adc dword [edx + 0xc], 0x24
fmul qword [0xa42600]
loop 0x407f70
xor eax, 0x9d8b0000
and byte [ecx + 0x33c82a30], dh
push cs
loop 0x407fbd
cld
push 0x3b
mov dword [ebp - 4], ecx
or dword [eax + 0x3b50438d], ebp
mov bl, 0xef
pop esp
test al, 0x8d
inc ebx
push eax
lea eax, [ebx + 0x50]
cmp esi, dword [ebx + 0x16ba5cef]
mov ah, ah
inc edi
mov edx, 0x47e48816
inc esi
jbe 0x407fb9
jb 0x407fc1
push 0xffffffffffffff88
fld qword [ebp + 8]
fcomp qword [0xb948c230]
fnstsw ax
xchg byte [eax], al
add byte fs:[eax], al
jne 0x408034
fld qword [ebp + 8]
fmul qword [0x40c2f8]
fst qword [ebp - 0xc]
rcr byte cs:[edx], 0x1d
sub byte [eax], bh
inc eax
add bh, bl
mov byte [0x7a05c4f6], al
and ebp, ebx
push ebp
or ah, bl
or eax, 0x40c2f8
dec esi
fld st(0)
fcomp qword [0xd940c228]
fnstsw ax
mul byte [edx + 5]
jnp 0x40807b
fstp qword [ebp - 0xc]
mov dword [edx - 4], esi
jmp 0x40801d
mov eax, dword [ebp + 0x10]
lea esi, [eax + esi]
mov eax, dword [ebp - 0x74]
test eax, eax
jne 0x408047
add esi, dword [ebp - 4]
mov ecx, dword [ebp + 0x55]
cmp esi, ebx
jae 0x408038
mov eax, dword [ebp + 0x10]
pop edi
neg eax
mov ecx, ebx
invalid
mov edx, dword [ebp - 0x52]
outsb dx, byte [esi]
dec byte [ecx - 0x22c388ef]
inc ebp
or byte [ebp - 0x7c4afbd], cl
jae 0x40808a
fmul qword [0x1c40c245]
inc eax
inc ebp
hlt
mov ecx, dword [ebp + 0x14]
mov ebp, eax
and byte [ebp + 0x30], dh
mov byte [edi], al
inc edi
cmp ebp, dword [ecx + 0x76]
leave
sahf
fmul dword [ebp - 0xdc419ad]
jb 0x4080be
pop edi
rcl dword [edi], cl
pop ss
dec edi
add byte [ebx - 0x74a4a1a3], cl
in eax, 0x5d
ret
cmp esi, ebx
mov byte [esi], 0x30
jbe 0x4080bd
dec esi
mov al, 0xf1
jmp 0x4080d1
mov byte [esi], 0x31
in eax, 0x39
push cs
push es
xor ebp, esp
cmp dword [esi], ecx
add edx, esp
mov dword [ecx], edi
jne 0x408095
and eax, ebx
jbe 0x4080d0
mov byte [eax], 0x48
inc eax
cmp byte [esi], 0x39
jg 0x4080b1
invalid