Function at 0x4070d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
in al, dx
sub esp, 0x254
mov eax, dword [ebp + 0xc]
push ebx
push esi
xor eax, ebx
mov ebp, ebp
mov edx, dword [ecx + 4]
mov dword [ebp - 0x10], eax
mov ebx, eax
inc edi
push edi
sal byte [ebp + 0x1b], 1
rol byte [eax], cl
mov dword [esi - 0x763f7b04], esi
jne 0x4070d9
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x24], edx
je 0x407be1
wait
pop ebp
adc al, 0x3c
daa
je 0x40714b
mov ebx, ebx
hlt
mov edi, dword [ebp + 0x10]
mov ecx, dword [0x40c1a5]
mov eax, 0x2601
invalid
jne 0x407c23
add byte [edx + 0x78], ah
sub al, byte [eax]
push esp
je 0x407c2b
add byte [ebx + 0x78], bh
inc eax
add bh, ch
je 0x407c33
add bl, bh
js 0x407c37
add byte [esi + esi*2], bh
inc eax
add byte [ebx - 0x744ebf8d], al
jp 0x407c43
add byte [eax], al
or al, 0x57
or al, 0xc
or al, 0xc
or al, 0x8a
or al, 0xff
dec edi
or al, 0x5a
or al, 0x86
or al, 0xc
or al, 0xc
or al, 0x90
or al, 0xf4
or al, 0xc
jp 0x407c2c
or al, 0xc
or al, 0xc
or al, 0xe6
or al, 0xc
or al, 1
or al, 0xc
or al, 0xc
out 0xc, al
or al, 0xc
add dword [esp + ecx], ecx
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xec
or al, 0xc
or al, 0xc
or al, 0xc
in al, dx
or al, 0xc
hlt
or al, 0xc
or al, 0xc
or al, 0xc
pop edi
or al, 0xc
or al, 0xc
or al, 0xc
dec ecx
or al, 0x49
or al, 0xc
or al, 0xc
add cl, byte [ebx + eax]
or al, 0xc
cmp cl, byte [esp + ecx]
mov dword [0xc0c0c0c], eax
or al, 0xc
jg 0x407c66
or al, 0xc
add al, 0xc
pop ds
or al, 0xc
or al, 0xc
or al, 0x2e
or al, 0x3f
aas
inc esp
push es
movsb byte es:[edi], byte [esi]
or eax, 0xc06e403
or al, 0xc
or al, 7
or byte [ecx], cl
or dword [eax + esi], ecx
or al, 0xc7
or al, 0xc
lea ecx, cs:[ecx - 0xb]
mov byte [0x6f00407b], al
dec esi
inc eax
inc edx
jp 0x407ccb
add byte [ecx + edi*2 + 0x40], al
add cl, bl
adc al, byte [eax]
mov byte [0x1f944079], al
jns 0x407d11
add ch, dh
jns 0x407cdf
add byte [ebx + 0x7a], dh
mov ebp, fs
xchg dword [eax], ecx
or byte [edi + 8], bh
or byte [eax], cl
xor dword [eax], ecx
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
lcall 0x808, 0x8080808
bound ecx, qword [eax]
cwde
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [edi - 0x2f818ff8], bl
dec esi
or byte [eax], cl
jle 0x407cea
or byte [eax + 0x7e], dh
ror byte [esi + 8], 1
or byte [esi + 0x16], bh
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
lodsd eax, dword [esi]
xchg dword [eax], ecx
or byte [eax], cl
xlatb
or byte [eax], cl
ret 0x201
add ch, byte [edx + 0x808be08]
or byte [eax], cl
pop esp
or byte [eax], cl
or byte [eax], cl
or byte [eax + ecx + 8], bl
out dx, al
fiadd dword [edx]
add al, 8
jge 0x407cef
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
fimul word [eax]
or ch, dl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [0x8600808], al
add eax, 0x8600808
or byte [edi], dl
pop es
nop
nop
nop
nop
nop
nop
nop
push ebp
mov ecx, eax
jmp 0x407d7e
add byte [ebx - 0x7c30d435], cl
stc
add al, 0x1e
pop dword [ebx]
add dl, cl
mov eax, dword [ebp - 0x7fc48025]
cmp byte [eax], dh
je 0x407e05
mov byte [esi], 0x51
inc esi
test ebx, ebx
invalid
mov dh, bl
dec ebp
lcall 0x1455, 0x8b2e06c6
inc esi
mov al, byte [esi + 0x56]
pop ebx
cmp al, 0x2e
punpckhdq mm2, qword [edi - 0x74ffa200]
dec esp
sbb byte [ebp + 0x65c28bc0], al
jmp 0x140d9b5