Function at 0x109bf688
Capabilities:
Encode data using xor

Disassembly:
cld
sub ebx, dword [esi + eax*4]
das
js 0x109bf63e
mov dh, cl
sets ah
shr ebp, 1
in eax, dx
inc ebp
sbb bl, ch
out dx, al
invalid
push 0x7d
dec ebp
sub byte [eax - 0x24], al
jns 0x109bf631
retf 0x5a73
jmp 0x109bf692
pushal
call 0x109bf698
pop ebp
sub ebp, 0x10
sub ebp, 0x9bf688
mov al, byte [esp + 0x28]
cmp al, 1
je 0x109bf6bc
add dword [edi], ecx
test byte [edi], al
add byte [eax], al
add byte [ecx + 0x33], ah
rol byte [eax - 0x3e], 0xc
add cl, ch
add al, 0
add byte [eax], al
jle 0x109bf66b
popal
xor eax, eax
inc eax
ret 0xc
jmp 0x109bf6c5
outsd dx, dword [esi]
sar dword [eax + 0x9bf688], 1
mov eax, 0x9bf688
add eax, ebp
add eax, 0x63
mov ecx, 0x5c0
mov edx, 0x945ed06c
xor byte [eax], dl
inc eax
dec ecx
jne 0x109bf6dc
jmp 0x109bf6ef
out 0xa1, eax
out 0xe5, eax
push eax
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
in eax, dx
lodsd eax, dword [esi]
xchg esp, eax
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
outsd dx, dword [esi]
mov eax, dword [0x6c6c6ad4]
insb byte es:[edi], dx
salc
inc esp
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
wait
mov gs, word [edi - 0x5c]
out 0xed, eax
pushal
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
outsd dx, dword [esi]
test eax, 0x7c043c3c
test dword [ebp + 0x6c], 0x16371a04
insb byte es:[edi], dx
insd dword es:[edi], dx
inc eax
dec eax
add al, 0xbd
dec edi
dec ecx
jl 0x109bf6ae
imul ebp, dword [esp + ebp*2 + 0x6c], 0x6c6c5c85
insb byte es:[edi], dx
cmp ecx, esp
add byte [eax + 0x6c], cl
out 0xe9, eax
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0xf9, eax
pushal
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0xe1, eax
jl 0x109bf7b4
insb byte es:[edi], dx
insb byte es:[edi], dx
lodsd eax, dword [esi]
test dword [esi + 0x5d], ebp
outsb dx, byte [esi]
out dx, eax
scasb al, byte es:[edi]
push 0x98e96325
xchg ebx, eax
xchg ebx, eax
xchg ebx, eax
out 0x40, eax
dec eax
loope 0x109bf766
dec eax
push 0xe76c60ae
loopne 0x109bf7ae
push 0x46c6c6c
jl 0x109bf764
dec ebp
insb byte es:[edi], dx
add al, 0x1a
aaa
push ss
insb byte es:[edi], dx
insd dword es:[edi], dx
inc eax
dec eax
cmp eax, 0x6c6c6984
insb byte es:[edi], dx
test dword [ebp + 0x6e], edx
insb byte es:[edi], dx
insb byte es:[edi], dx
cmp edi, esp
adc byte [ebx + 0x19936019], 0x64
test byte [eax], al
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0xd1, eax
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
pop edi
movsd dword es:[edi], dword [esi]
pop edi
mov esi, 0x246984ef
arpl ax, bp
and ch, byte [esp + ebp*2 + 0x6c]
arpl sp, sp
and al, 0x6c
insb byte es:[edi], dx
insb byte es:[edi], dx
or ah, bh
jo 0x109bf803
in al, dx
xchg edi, eax
test byte [ebx - 0x18], ah
jbe 0x109bf821
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
in al, dx
xchg edi, eax
test dword [ebx - 0x18], esp
jge 0x109bf82a
insb byte es:[edi], dx
insb byte es:[edi], dx
or ch, ch
xchg edi, eax
xchg ebx, eax
dec ecx
arpl ax, bp
jns 0x109bf835
insb byte es:[edi], dx
insb byte es:[edi], dx
sub eax, 0x9393a085
xchg ebx, eax
inc ebp
and byte [ebp + 0x6d], dl
out dx, eax
lodsd eax, dword [esi]
imul ebp, edi, 0xd1856884
xchg ebx, eax
xchg ebx, eax
xchg ebx, eax
inc ebp
cmp byte [ebp + 0x6e], dl
out dx, eax
lodsd eax, dword [esi]
push 0xffffffffffffffef
xchg byte [eax - 0x11], ch
test byte [ecx - 0x7b], ch
invalid
sbb dword [eax - 0x19], esp
adc dword [eax + edx*4 - 0x22], esp
in al, dx
out 0x6a, al
in eax, dx
stosb byte es:[edi], al
insd dword es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
in al, 0x6b
in eax, dx
stosd dword es:[edi], eax
insd dword es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
xlatb
outsb dx, byte [esi]
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
outsb dx, byte [esi]
mov esi, 0x6c69e963
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0x7a, al
sub bh, byte [esi - 0x42]
arpl di, bp
mov ah, 0x93
xchg ebx, eax
xchg ebx, eax
outsb dx, byte [esi]
mov esi, 0x6c69e963
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0x7a, al
sub bh, byte [esi - 0x42]
arpl di, bp
push es
arpl cx, bp
imul ebp, dword [esp + ebp*2 + 0x6c], 0x7e2a7ae6
mov esi, 0x6c06ef63
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
pop edi
lodsb al, byte [esi]
outsb dx, byte [esi]
mov esi, 0x6c69e963
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0x7a, al
sub bh, byte [esi - 0x42]
arpl di, bp
inc esi
insd dword es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
outsb dx, byte [esi]
mov esi, 0x6c69e963
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0x7a, al
sub bh, byte [esi - 0x42]
jg 0x109bf816
outsb dx, byte [esi]
mov esi, 0x6c69e963
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0x7a, al
sub bh, byte [esi - 0x42]
jg 0x109bf825
outsb dx, byte [esi]
mov esi, 0x6c69e963
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0x7a, al
sub bh, byte [esi - 0x42]
jg 0x109bf834
outsb dx, byte [esi]
mov esi, 0x6c69e963
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0x7a, al
sub bh, byte [esi - 0x42]
jg 0x109bf843
arpl ax, bp
push 0x6c
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0xb3, eax
inc edi
mov ah, 0xe6
outsd dx, dword [esi]
in al, 0x6b
sub edx, edi
outsb dx, byte [esi]
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
test dword [ebx + edx*4], ebx
xchg ebx, eax
xchg ebx, eax
aam 0x6d
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
outsb dx, byte [esi]
mov esi, 0x6c69e963
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0x7a, al
sub bh, byte [esi - 0x42]
jg 0x109bf870
outsb dx, byte [esi]
mov esi, 0x6c69e963
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0x7a, al
sub bh, byte [esi - 0x42]
arpl si, bp
mov dl, 0x93
xchg ebx, eax
xchg ebx, eax
inc edi
scasd eax, dword es:[edi]
xlatb
insd dword es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
arpl cx, bp
pop eax
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
aad 0x6d
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
outsb dx, byte [esi]
mov esi, 0x6c69e963
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0x7a, al
sub bh, byte [esi - 0x42]
jg 0x109bf89d
outsb dx, byte [esi]
mov esi, 0x6c69e963
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0x7a, al
sub bh, byte [esi - 0x42]
arpl si, bp
mov dl, 0x93
xchg ebx, eax
xchg ebx, eax
cmp ah, bh
wait
inc edi
cdq
lahf
enter 0xffffffffffff8532, 0x64
xchg ebx, eax
xchg ebx, eax
xchg ebx, eax
and al, 0xad
mov word [esi + 0x6a], fs
sub ah, bh
test ch, dl
insd dword es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
outsb dx, byte [esi]
mov esi, 0x6c69e963
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0x7a, al
sub bh, byte [esi - 0x42]
jg 0x109bf8da
outsb dx, byte [esi]
mov esi, 0x6c69e963
insb byte es:[edi], dx
insb byte es:[edi], dx
out 0x7a, al
sub bh, byte [esi - 0x42]
arpl si, bp
mov dl, 0x93
xchg ebx, eax
xchg ebx, eax
in eax, dx
xchg esp, eax
insb byte es:[edi], dx
adc dword [esp + ebp*2 - 0x13], ebp
mov ch, 0x93
xchg ebx, eax
xchg ebx, eax
xchg ebx, eax
in eax, dx
xchg esp, eax
insb byte es:[edi], dx
imul ebp, dword [esp + ebp*2 - 0x13], 0x939393b5
xchg ebx, eax
in eax, dx
xchg esp, eax
in al, dx
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
in eax, dx
mov ebp, 0x6c6c6c6c
in eax, dx
xchg esp, eax
in al, dx
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
in eax, dx
mov ebp, 0x6c6c6c6c
cmp ah, bh
wait
inc edi
pushfd
lahf
enter 0xffffffffffff8532, 0xfffffffffffffff7
xchg edx, eax
xchg ebx, eax
xchg ebx, eax
out 0x6a, al
sub bl, byte [edi - 0x5b]
lodsb al, byte [esi]
test byte [ebp + 0x63], ch
call 0x7d086609
in eax, dx
mov ebp, 0x6c6c6c6e
out 0x84, eax
cmp ah, bh
wait
inc edi
pushfd
lahf
enter 0xffffffffffffd732, 0x6d
insb byte es:[edi], dx
insb byte es:[edi], dx
insb byte es:[edi], dx
test dword [edi], ebx
xchg edx, eax
xchg ebx, eax
xchg ebx, eax
xor dword [edi + 0x11], eax
out 0xab, eax
xor esi, dword [edx]
out 0x89, eax
xor dword [esi + 0x50e76c64], ebp
dec eax
loope 0x109bf9c8
dec eax
push 0xe14858e7
or byte [eax + 0x68], cl
test dword [eax + 0x6c], ebp
insb byte es:[edi], dx
push 0x6c6c6885
insb byte es:[edi], dx
mov bl, 0x17
or ebx, dword [ecx - 0x2c]
in al, 0x9a
imul dword [edi + ebp*2 - 0x57]
in eax, dx
lodsb al, byte [esi]
sbb al, 0x6f
insb byte es:[edi], dx
insb byte es:[edi], dx
aad 0xdf
outsb dx, byte [esi]
insb byte es:[edi], dx
insb byte es:[edi], dx
salc
mov eax, esi
mov dl, 0xa5
pop esp
jl 0x109bfa18
and eax, 0x939ae963
xchg ebx, eax
xchg ebx, eax
test dword [eax + 0x6c], ebp
insb byte es:[edi], dx
insb byte es:[edi], dx
jmp 0x1f68675f
add bl, dh
mov dword [edx], eax
invalid