Function at 0x4070d0
Capabilities:
Encode data using xor

Disassembly:
cmc
mov ebp, esp
sub esp, 0x67007f54
mov ecx, dword [ebp + 0xc]
push ebx
push esi
xor esi, esi
mov eax, dword [ecx]
mov ebp, dword [eax - 0xb6476fc]
mov eax, dword [ebp + 0x10]
push edi
mov dword [ebp - 0x14], esi
mov al, byte [eax]
mov dword [eax - 4], ebp
test al, al
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x28], esi
mov dword [ebp + 0x4d], edx
psllw mm0, qword [edi]
or al, byte [eax]
add byte [ebx - 0x159deba3], cl
je 0x40714b
mov eax, dword [ecx - 0xc]
test eax, eax
je 0x407143
sal byte [ebp + ebp - 0x19], 0x45
out 0x45, eax
fdiv qword [edx + 0x1c]
mov edi, dword [ebp + 0xc]
push edi
mov eax, eax
call dword [ebp + 8]
add esp, 4
mov al, al
jne 0x972c1b
mov ecx, dword [edi + 0x46]
mov eax, dword [0x8bdc4d89]
push ebp
in al, 0x40
mov dword [ebp - 0xc], eax
mov cl, byte [edx]
mov byte [eax - 1], cl
pop ss
inc ebp
in al, dx
jmp 0x407c01
mov eax, dword [ebx]
adc byte [ebx + 0x40c1740d], cl
je 0x407113
inc eax
add byte [ecx + eax], bl
scasb al, byte es:[edi]
daa
add byte [ebx], dh
rol byte [edi + 0x39], cl
add dword [ecx + 0x4589bc45], ecx
ror byte [ecx + 0x5589c855], 0xc4
add eax, 0x454ad455
pop ss
and byte [edi], bh
push ebp
sti
mov dword [esi - 0x750b813d], esp
pushfd
push 2
push edx
call dword [0xcbad68]
add esp, 8
xor ebp, dword [0x6e8b12eb]
js 0x407150
inc eax
add byte [ebx], dh
shr byte [esi - 0x33f685f9], 4
inc ecx
salc
cmp eax, dword [edx]
cmp eax, edx
jne 0x40736e
mov ecx, 0xed0000c1
mov dword [edi], eax
mov dh, 0x2d
jne 0x4071f9
mov dword [ebp - 0x40], edx
inc edi
jmp 0x4071aa
cmp al, 0x23
jne 0x4071ca
push es
mov dword [edi], edx
aam 0x47
xor esp, eax
mov ebp, 0x650675b0
dec ebp
cmc
out dx, al
jmp 0x4071aa
or byte [ebx - 0x74ed142e], ah
js 0x4071c3
inc eax
add byte [ebx], dh
ror byte [edx + 0x61090e07], 4
inc ecx
and eax, 0x42
cmp edi, dword [esi - 0x63]
pop ebp
movsx ecx, byte [edi]
sbb dword [esi + 0x7d8947b1], 0x10
mov edi, dword [edi + 0x74]
ror dword [edi - 0x1fb27615], 0xe1
sbb byte [esi], cl
jle 0x407241
xor eax, eax
push 0x22
mov dh, byte [0x6864ff50]
rol dword [eax], 0x8b
dec ebp
loopne 0x4071c0
push cs
or bl, ch
adc dword [ecx + sym.imp.MSVCRT.dll__pctype], esp
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
xor edx, edx
mov dl, byte [edi]
mov eax, dword [eax]
mov al, byte [ecx]
and dword [ebp + 0x3bd23354], 0xffffffc2
je 0x407265
movsx ebx, ch
lea ecx, [ecx + ecx*4]
inc edi
lea ecx, [eax - 0x30]
jmp 0x40721e
push esp
jge 0x407278
invalid
add ebx, 4
cld
cmp eax, edx
mov dword [edx + 0x10], edi
mov dword [ebp - 0x34], 0x4d
jge 0x40728f
mov eax, esp
sal bh, 0x63
pop ebx
inc ebp
loopne 0x40727e
add ebx, dword [ebp + edx*2 + 0x2e3f80cc]
comiss xmm2, dword [edi]
add byte [ebx - 0x333e8b5f], dh
add byte [edi - 0x39], al
inc ebp
in al, 1
add byte [eax], al
add byte [ecx + 0x3883107d], cl
jle 0x4072c9
xor ecx, ecx
push 4
mov cl, byte [edi]
push ecx
call dword [0x62c168]
add esp, 8
cmc
shr bl, cl
adc cl, byte [ebx + 0x4014780d]
add byte [ecx], ah
xor al, 0x8a
mov ecx, dword [0x401478]
and dword [edx + ecx*4], esi
pop es
mov ecx, dword [ecx]
pop es
add al, 0x41
and eax, 4
cmp eax, edx
enter 0xffffffffffffa64f, 0x50
jae 0x898782d0
jge 0x4072f9
mov edx, dword [0x3b400303]
mov dword [ebp - 0x10], ecx
cmp dword [edx], 1
jle 0x4072bc
xor eax, ecx
salc
add al, 0xc9
pop es
push eax
call dword [sym.imp.MSVCRT.dll__isctype]
fmul dword [ebp + 0x7f]
add esp, 8
jmp 0x407348
add al, 0x50
sub edx, 0x1a
fst qword [edi + 0x74]
and eax, 0x8d17be0f
mov byte [edi - 0x73], 0x4c
dec edx
shr bl, 1
mov ebx, 0x752a3f80
mov eax, dword ss:[ebx]
add dword [eax - 0x36aa7db0], 0x3b
ret 0x9c0f
adc byte [edx + 3], ch
push 0x1bf454
push edi
xchg ebx, eax
adc eax, 0x403434
add esp, 0xc
test eax, eax
je 0x407395
mov al, byte [edi]
cmp al, 0x71
mov edx, dword [edx]
xor eax, dword [ecx + 0x47]
jmp 0x407318
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], edx
mov byte [0x756c3cd3], al
or byte [eax + 0x21], bh
inc edi
jmp 0x40739a
xor eax, eax
add edi, 3
mov esp, eax
adc byte [ebx - 0x6675efab], cl
invalid
jp 0x407c43
add byte [eax], al
or al, 0xc
or al, 0xbd
mov dword [0xcaa0c0c], eax
or al, 0xeb
or al, 0xc
push edx
or al, 0x50
or al, 0xc
cld
or al, 0xc
mov ah, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xc
or al, 1
or al, 0x87
or al, 0xc
jg 0x407c05
or al, 0xc
or al, 0xc
or al, 0xc
or al, 0xae
jno 0x407c89
or al, 0xc
or al, 0xc
mov cl, 0xc
or al, 0xc
or al, 0xc
or al, 0x3c
or al, 0x12
or al, 2
or al, 0xc
cmp al, 0xc
adc cl, byte [edx + eax]
pop eax
add ebp, dword [esp + ecx + 0x3d0c0c0c]
or al, 0xc
or al, 0xc
or al, 0x93
or al, 0xc
stosd dword es:[edi], eax
or al, 4
or al, 0xc
or al, 0xc
insb byte es:[edi], dx
or al, 0xc
or al, 0xc
or al, 0x18
push es
add al, byte [edx]
movsd dword es:[edi], dword [esi]
or al, 6
or al, 0xc
or al, 0xc
insb byte es:[edi], dx
or dword cs:[esp + ecx], ecx
cdq
or al, 0xb
or al, 0xc
add al, 0x8d
dec ecx
add byte [edx - 0x76ffbf85], ah
jns 0x407cc7
add al, ah
jp 0x407ccb
imul eax, dword [ecx + edi*2 + 0x40], 0x7f799862
cmp dword [edx + 0x1f00d279], esp
jns 0x407cdb
add ch, dh
jns 0x407cdf
xchg ebp, eax
jae 0x407d1c
inc eax
and al, 0
or byte [eax], cl
fisttp qword [eax]
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [ecx + 8], bl
or byte [eax], cl
int3
or byte [eax], cl
or cl, dl
or byte [eax], cl
or byte [eax + ecx + 8], bl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
lahf
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte es:[ebx], bl
or byte [eax], cl
or byte [eax], cl
or byte [esi], ah
or byte [ebx], bl
jns 0x407ced
add dword [edx], eax
aaa
or byte [eax], cl
add cl, byte [eax]
or byte [eax], dh
xchg ebp, eax
or byte [ebx + 8], al
or byte [eax], cl
or ah, bl
or byte [edx], al
add al, 8
xor byte [ebp + 0x8084308], dl
or byte [eax], cl
fmul qword [eax]
add al, byte [eax + ecx]
or byte [ebp + 8], ch
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or al, dh
or byte [eax], cl
or byte [eax], cl
in eax, dx
or byte [eax], cl
or byte [eax], cl
add byte ss:[eax], cl
add eax, 0x8060808
or byte [eax], cl
pop es
nop
nop
mov edx, dword [eax + 0x55909090]
nop
nop
nop
nop
push ebp
mov ebp, esp
sub esp, 0x58
push esi
lea eax, [ebp - 0x58]
sbb byte [ebx + 0x7d], 0x10
lds ecx, [ebp - 4]
push eax
mov eax, dword [ebp + 6]
lea edx, [ebp + 0xc]
scasb al, byte es:[edi]
mov esp, dword [eax + ecx]
push edx
push edi
sbb eax, 0x847be851
cld
add byte [ebx + 0x558bfc4d], cl
adc al, 0x98
les ebx, [eax]
jns 0x407dae
clc
add edi, dword [edx + 0x674f28b]
invalid
jmp 0xe7ec7139