Function at 0x407d20
Capabilities:
Encode data using xor

Disassembly:
int1
dec eax
inc dword [ebp - 0x14]
jmp 0x407ba8
jmp 0x407bb9
inc ebp
xchg edx, eax
pop esi
sub byte [ebx + 0x10c25de5], cl
add byte [edi + 0x5e], bl
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
xor edx, dword [eax]
add byte [eax + 0x407ba2], dl
jge 0x407c4e
inc eax
add byte [edx + 0x76], cl
inc eax
add byte [edi], al
mov es, word [eax + 0x14]
lea edi, [edx + 0x78620040]
inc eax
add byte [esp + esi*2 + 0x40], dl
add byte [eax + edi*2 + 0x74ef0040], dl
inc eax
pop ss
mov eax, 0x3c004078
jbe 0x407c3b
add byte [ecx + 0x73], ah
out 0, al
mov edi, dword [edx - 0x26]
add byte [eax], al
or al, 0xc
ror dword [ecx + esi*8], 1
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
mov dword [0xc0ca30c], eax
push es
or al, 0xc
or al, 0xc
in al, dx
or al, 0xc
mov ecx, 0xc200c94
das
test eax, 0xc0cfe0c
or al, 0xc
push eax
or al, 0xc
or al, 0xc
or al, 0xc
mov byte [0xc9a0c0c], al
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 2
or al, 3
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
add cl, byte [ebx + eax]
or al, 0xc
or al, 0xc
or al, 0xc
in eax, dx
or al, 0xc
or al, 0xc
or al, 0xc
mov edi, 0x60b4d409
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
push es
add al, byte [edx]
add edx, esi
push es
or al, 0xc
or al, 0xc
pop es
or al, 0xc
or al, 7
or byte [ecx], cl
push ds
or al, 0x3a
pop ebx
push cs
or al, 0xc
add al, 0x8d
dec ecx
cli
mov byte [0x8900b22c], al
jns 0x407c6f
add byte [esi], ah
jp 0x407ccb
add byte [ecx + edi*2 + 0x40], al
cmc
fnstcw word [ecx - 0x69]
add byte [edx + 0x1f004079], ah
jns 0x407cdb
dec ebp
jns 0x407cdf
add byte [edi + 0x4500847a], al
or byte [eax], cl
or dword [eax], ecx
int3
or byte [edi + 8], dh
or byte [eax], cl
push 8
or byte [eax], cl
or byte [eax], cl
movsd dword es:[edi], dword [esi]
or byte [eax], cl
push ecx
or byte [ebx + 0x8a00808], bh
or byte [eax], cl
or byte [eax], cl
cmp al, 8
or byte [eax], cl
or byte [eax + ecx], bh
or byte [eax], cl
or byte [eax], cl
or byte [ebp + 0x8086a08], dh
or byte [eax], cl
or byte [eax + ecx], dl
or byte [eax], cl
adc al, 8
or byte [edx + 0x8080808], al
add dword [edx + 8], eax
or byte [eax], cl
add cl, byte [eax]
or byte [eax + ecx + 0x808699c], ah
or byte [ebp + 0x4e6cd08], bl
or byte [eax], cl
or byte [eax + 8], dh
or byte [eax], cl
or byte [edx + 0x808082d], dh
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [0x8060808], al
or byte [ecx + 7], cl
or byte [esi], al
or byte [eax], cl
dec ecx
pop es
nop
pop esp
nop
nop
nop
nop
nop
push ebp
mov ebp, esp
pop ebp
in al, dx
pop eax
jno 0x407cb5
inc ebp
jnp 0x407d13
mov edi, dword [ebp + 0x10]
lea ecx, [ebp + 0x78]
push eax
mov eax, dword [ebp + 0xc]
lea edx, [ebp + 0xc]
push ecx
mov ecx, dword [ebp + 8]
push edx
or al, 0x50
push ecx
call 0xac7ec0
mov ecx, dword [ebp - 4]
mov edx, dword [ebp + 0x14]
add esp, 0xffffff96
mov eax, edi
clc
test ecx, ecx
mov esi, edx
je 0x407d5d
mov byte [edx], 0x2d
lea esi, [edx + 1]
lea edi, [edi]
inc dword [edx - 0x7b]
leave
jle 0x407dc5
add byte [ecx + eax + 0x4f067530], 0x49
test ecx, ecx
push es
popal
jge 0x407d84
mov ebx, dword [ebp + 0xc]
test ebx, ebx
jl 0x407e33
mov esi, ebp
sub ecx, edi
outsd dx, dword [esi]
stc
add al, 0x4d
invalid
mov esp, dword [edi + 0x385d89f8]
mov ecx, 0xee
cmp edi, ecx
jl 0x407dea
mov dl, byte [eax]
mov byte [edx + 0x46], ah
inc eax
cmp ecx, ebx
xor al, byte [esi + eax*8]
mov ah, 0x2e
inc esi
inc ecx
cmp ecx, edi
jle 0x407dd4
mov edx, dword [ebp + 0x14]
cmp edx, dword [ebp + edi*2 - 0x471ed414]
xor byte [eax], dh
xor ch, ah
mov ecx, eax
mov edi, esi
mov edx, ecx
fldl2t
add dh, bl
pop ebx
mov ecx, edx
sub edx, 3
add ebx, esi
rep stosb byte es:[edi], al
int1
push es
mov edx, dword cs:[ebp + 0x14]
inc esi
ret 0xff46
ret 0xfd93