Function at 0x407d20
Capabilities:
Encode data using xor

Disassembly:
xor al, 0x3b
in eax, dx
adc dword [edx + 0x7b], esi
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0xc]
push eax
mov dword [eax], ecx
call dword [ebp - 0x3f]
add esp, 0xffffffa1
test eax, eax
jne 0x407bc3
mov eax, dword [ebp + 0xc]
mov eax, dword [edx - 0x75]
inc eax
add al, 0x89
inc ebp
fmul qword [ecx - 0x3d740bab]
inc ecx
push cs
mov byte [eax], cl
jae 0x407b0f
inc ebp
hlt
test eax, eax
je 0x407b8a
cmp ebx, dword [ecx]
fdiv qword [edx + 0x20]
mov edi, dword [ebp + 0xc]
mov esi, dword [eax - 0xc]
push edi
mov dword [edi], eax
call dword [ebp + 8]
add esp, 4
jne 0x407bcd
leave
jg 0x407b00
jnp 0x4dc97fd2
cmp eax, 0x21cb5589
ror dword [edx + 0x8880a4d], 0x40
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0x14]
cwde
push ebp
cld
inc ecx
mov esp, esp
wait
mov esp, esp
loopne 0x407be1
cmp ecx, edx
mov dword [ebp - 0x20], ecx
ja 0x407b58
inc ecx
inc ebp
adc byte [ebx + 0x28a1255], cl
test al, al
dec ebp
test dword [ebx + ebp*2 - 1], ebx
xchg edi, eax
mov byte [ebp + 0x49], cl
in eax, 0x45
hlt
pop edi
retf
adc byte [eax], al
mov dl, 0xa2
jnp 0x407c13
add byte [ebp + 0x78], bh
mov eax, dword [0x8376c900]
add byte [esi - 0x7271bf89], bl
jne 0x407bd3
add byte [edx - 0x52], ah
inc eax
lds edx, [esi + ecx - 0x67]
xchg esp, eax
js 0x407c2f
add bh, ch
je 0x407c70
add cl, bl
inc eax
nop
cmp al, 0x76
inc eax
add byte [ebp - 0x74ffae8d], bh
push edi
inc eax
add byte [eax], al
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
int1
or al, 0xba
xor ecx, dword [esi + eax]
or al, 6
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0x4f
and cl, byte [esp + ecx]
loope 0x407c2e
or al, 0xb9
or al, 0xc
or al, 0xc
or al, 1
or al, 0xc
or al, 0x87
or al, 0x65
test eax, 0xc0cf20c
test eax, 0xc0cf20c
or al, 0x1e
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0x51
or al, 0xc
or al, 0xc
or al, 0xc
ret
or al, 0xc
or al, 0xc
or al, 0xc
mov byte [0x206f30c], al
aam 3
or al, 0xbf
or al, 0xc
or al, 0x10
adc eax, 0xc0c7f08
or cl, byte [ebx + ecx]
or al, 0xc
add al, 0x8d
dec ecx
add byte [edx - 0x76ffbf85], ah
jns 0x407cc7
add byte [esi], ah
jp 0x407c5f
add byte [ecx + edi*2 + 0x40], al
add cl, bl
jns 0x407c17
add byte [edx + 0x1f004079], ah
jns 0x407cdb
add ch, dh
jns 0x407cdf
add byte [ebx + 0x7a], dh
inc eax
pushfd
cli
or byte [ebp + 8], ch
outsd dx, dword [esi]
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [ecx + 0x8080808], ah
or byte [edi + 8], ah
or byte [eax], cl
test byte [eax], cl
or byte [eax], cl
or byte [ebp + 0x80819fa], bl
or byte [eax], cl
or byte [edx + 8], ch
or byte [eax], cl
push 8
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
ja 0x407cdd
or byte [eax], cl
mov ch, 8
or byte [ebx], cl
or byte [eax], cl
or ecx, dword [eax]
or byte [eax], cl
or byte [eax], cl
or byte [eax + ecx], ah
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
and al, 8
or byte [eax], cl
add dword [edx], eax
or byte [eax], cl
or byte [edx], al
or byte [eax], cl
add ecx, dword [eax]
or byte [eax], cl
or byte [eax], cl
mov ecx, dword [eax]
or byte [eax], cl
add bh, byte [eax + 0x8087808]
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or cl, cl
or byte [eax], cl
or byte [eax], cl
mov cs, word [eax]
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
add eax, 0x88d0808
or bl, ch
pop es
inc ecx
nop
nop
nop
out 0x90, al
nop
push ebp
mov ebp, esp
sub esp, 0x58
push esi
lea edx, [edx]
xor byte [edi - 0x75], dl
inc esp
adc byte [0x8b50fc4d], ch
inc ebp
or al, 0x8d
push ebp
or al, 0x51
mov ecx, dword [ebp + 8]
push edx
push edi
push eax
push ecx
call 0x9c407ee0
mov ecx, dword [ebp - 4]
cmp eax, 0xc1831455
jecxz 0x407cd8
pop eax
clc
test ecx, ecx
mov esi, ecx
je 0x407d18
invalid