Function at 0x408220
Capabilities:
Encode data using xor

Disassembly:
je 0x408287
pushal
jle 0x408227
add byte [eax], al
add dword [eax], edi
xchg esi, eax
bound edx, qword [eax + eax]
add byte [eax], al
or al, byte [eax]
add byte [eax], al
adc byte [eax], al
add byte [eax], al
add al, 0x75
push es
inc edi
add al, 0x95
push es
inc edi
add al, 0x41
add al, byte [ebx - 0x6d]
xchg esp, eax
add eax, 0x2706208
inc ebx
add dword [eax], ebx
push edx
push ss
push ebx
cmp cl, byte [ecx]
add byte [eax], al
add byte [ebx + 0x70], dh
popal
arpl word [ebp + 0x52], sp
jae 0x4082d4
add byte [eax], al
add byte [ecx], al
cmp byte [esi + 0x1462], dl
add byte [edx], cl
add byte [eax], al
add byte [eax], dl
add byte [eax], al
add byte [ecx], al
sbb byte [edx + 0x64], dl
stc
dec ecx
out 0xc, eax
add byte [eax], al
add byte [ecx + 0x73], ch
push esp
js 0x4082f9
inc edx
jne 0x4082fc
je 0x4082fd
je 0x4082f9
outsd dx, dword [esi]
outsb dx, byte [esi]
inc edi
xchg edx, eax
inc ebx
add al, 0x11
push es
inc ebx
add al, 0x15
push es
inc ebx
add dword [edx + edx*2], esp
adc al, byte [di + 0x77]
pushal
sbb byte [eax], al
add byte [eax], al
jae 0x40830c
outsd dx, dword [esi]
jne 0x408313
inc ecx
insb byte es:[edi], dx
ja 0x40830d
jns 0x408321
dec edi
jo 0x408316
outsb dx, byte [esi]
dec ecx
outsb dx, byte [esi]
dec esp
popal
arpl word [ecx + 0x43], di
add dword [eax], esp
push edx
mov dh, 0xb8
or ch, byte [edi + 0x11]
insd dword es:[edi], dx
popal
je 0x40832e
popal
insb byte es:[edi], dx
insb byte es:[edi], dx
dec ecx
je 0x408337
insd dword es:[edi], dx
push edx
jae 0x40833c
je 0x4082d9
add byte [eax], al
pop es
or eax, 0x8250403
add al, 0x41
add dword [eax - 0x6c], esp
add al, byte [eax]
add byte [ecx], al
push eax
pop es
mov al, 0x62
and byte [eax], al
add byte [eax], al
adc byte [eax], al
add byte [eax], al
adc byte [eax], al
add byte [eax], al
add al, 0x75
add byte [esi*2 - 0x6afbb8fa], al
push es
inc edi
add al, 0x95
push es
inc edi
add al, 0xf1
push es
inc ebx
add al, 0x41
add al, byte [ebx + 4]
add al, byte gs:[ebx + 4]
add al, byte [ebx + 4]
inc ebx
add al, 0x35
push es
add al, 0x39
xor eax, 0x6390406
push es
add al, 0x11
pop es
inc ebx
add eax, 0x2706208
inc ebx
add dword [eax], ebx
push edx
mov edx, 0xa647eb3
add byte [eax], al
add byte [ebp + 0x6c], al
je 0x408395
je 0x408395
push eax
outsd dx, dword [esi]
jae 0x4083a8
add byte [eax], al
add al, 0x89
pop es
mov dword [edi], eax
add dword [edx + edx*2], esp
lcall 0, 0x1821a689
add byte [edi + ebp*2 + 0x67], dh
insb byte es:[di], dx
dec ecx
jae 0x40839d
jo 0x4083b5
outsb dx, byte [esi]
inc esp
insb byte es:[edi], dx
je 0x4083bc
inc esp
imul esp, dword [ecx + 0x6c], 0x5676f
add dword [eax - 0x4ff8d7ff], ebp
bound ecx, qword [eax + eax]
add byte [eax], al
push es
add byte [eax], al
add byte [eax], dl
add byte [eax], al
add byte [ecx + esi*8], al
add dword [ebx + 4], eax
cmc
add dword [ebx + 5], eax
or byte [edx + 0x70], ah
add al, byte [ebx - 0x6d]
xchg esp, eax
add dword [edx + edx*2], ebp
imul ebx, esi, 0x1f28efd3
add byte [eax], al
add byte [ecx + ebp*2 + 0x6e], cl
imul esp, dword [eax], 0x74
js 0x40840b
js 0x40840b
and byte [edi + ebp*2 + 0x20], dh
outsd dx, dword [esi]
jo 0x408403
outsb dx, byte gs:[esi]
outsb dx, byte [esi]
and byte [ebp + 0x6c], ah
je 0x40840b
and byte [ecx + ebp*2 + 0x61], ah
insb byte es:[edi], dx
outsd dx, dword [esi]
add byte [bx + di], al
imul esp, dword [ecx + 0x6c], 0x100676f
adc al, 0x52
arpl dx, si
sub esp, dword [ebx + 0x45]
inc ebp
push es
add byte [eax], al
add byte [ebp + 0x6c], al
insb byte es:[edi], dx
je 0x408425
add byte [eax], al
add eax, 0x9469200
pushal
mov esp, 0x1000002
xor byte [edx + 0x1062], dl
add byte [eax], cl
add byte [eax], al
add byte [eax], dl
add byte [eax], al
add byte [ecx + esi], al
push es
add dword [eax], esp
push edx
dec bh
invalid
add byte [eax], al
add al, 0x41
add al, byte [ebx + 4]
xor eax, 0x6390406
add al, 0x35
push es
add al, 0x39
push es
add eax, 0x2706208
bound esi, qword [eax + 2]
inc ebx
add dword [eax], edi
push edx
insb byte es:[edi], dx
jb 0x4083fd
rol byte [eax + 0x29], 1
add byte [eax], al
add byte [ebp + 0x65], cl
outsb dx, byte [esi]
jne 0x408440
imul esi, dword [ebp + 0x6d], 0x206f7420
jb 0x40848f
je 0x408496
and byte [edx + 0x65], dh
imul esi, dword fs:[edx + 0x65], 0x74207463
outsd dx, dword [esi]
and byte [ebx + 0x6f], ah
outsb dx, byte [esi]
je 0x40849e
outsb dx, byte [esi]
je 0x40845c
jae 0x4084a3
je 0x4084b4
imul ebp, dword [esi + 0x67], 0x73
add dword [edx + edx*2], ebx
push cs
pushfd
jl 0x408461
adc byte [eax], al
add byte [eax], al
inc ebx
outsd dx, dword [esi]
outsb dx, byte [esi]
je 0x4084bd
outsb dx, byte [esi]
je 0x40847b
jae 0x4084c2
je 0x4084d3
je 0x4084d3
imul ebp, dword [esi + 0x67], 0x521c0173
jae 0x408465
sbb al, 0x52
push edx
bound esi, qword gs:[edx + 0x54]
jmp 0x40847f
imul ebp, dword [esi + 0x67], 0x70c0173
add dword [edi + eax], ecx
add al, 5
add byte [edx - 0x36], dh
inc esp
imul esi, dword [ebx + 0x61], 0x64656c62
add byte [eax], al
or byte [edx + 0x70], ah
add al, byte [ebx + 4]
or byte gs:[ecx], al