Function at 0x172f1b3
Capabilities:
Encode data using xor

Disassembly:
shl ecx, cl
mov edx, dword [esi + ecx - 0x49400000]
call fcn.0176e2aa
mov esp, dword [ebx - 0x55]
mov bl, 0xd6
movsb byte es:[edi], byte [esi]
push eax
wait
xor al, 0x28
fmul dword [esp + ebp*2 - 0x27d7cb55]
mov word [edi + eax*4 + 0x34], es
sub al, bl
pushal
mov byte [edi - 0x7727d7cc], ch
test byte [edi - 0x1527d7cc], ah
add ebx, esi
push 0x96e23646
jl 0x1246bfd
pop ss
sub eax, 0x3077fb0d
inc edx
mov dword [0x97cc7645], eax
add eax, 0xe7827cae
sbb ecx, eax
test dword [esi + edx], eax
sub ebp, esp
insd dword es:[edi], dx
test eax, 0xbd291604
cld
cdq
add al, 0x16
sub dword [ecx + 0x1604b125], eax
sub dword [ecx], ecx
add byte [edi + ebp*2 + 0x1b], cl
idiv byte [esi]
add dl, byte [ebx]
adc byte [ebx + 0xd], al
stc
inc ebx
mov ecx, dword [ebp + 0x21]
adc dword [edx], ebp
inc ebx
mov ecx, dword [ebp - 0x23]
sub dword [esi], ecx
inc ebx
mov ecx, dword [ebp + 0x19]
sbb dword [edx], edi
inc ebx
mov ecx, dword [ebp + 0x1d]
and eax, 0x4d8b4316
pop ebx
je 0x1246cd8
inc ebx
or eax, 0x8b4336f9
dec ebp
and dword [ecx], edx
sub al, byte [ebx - 0x75]
dec ebp
invalid
std
push edi
cmpsd dword [esi], dword es:[edi]
xchg ebp, eax
xor eax, 0x8e6069e9
cwde
cmpsd dword [esi], dword es:[edi]
stosb byte es:[edi], al
pop eax
daa
ja 0x1246c5c
jbe 0x1246c39
xchg edi, eax
leave
add bh, byte [edx + eax*4 - 0x19]
rcl ecx, 0x35
add al, 0x16
sub dword [ecx + 0x16041145], eax
sub ecx, edi
push 0x2916040d
and dword [ebp + 0x29160421], esi
pop ebp
movsb byte es:[edi], byte [esi]
add al, 0x16
sub dword [ebp - 0x5c], ebx
dec esp
outsd dx, dword [esi]
sbb ebp, dword [edi]
pop es
sbb esi, dword [ecx + 0x1cf01424]
dec eax
cmp ecx, dword [esi + 0x35]
add eax, 0x400db63e
mov esi, 0xa94e6901
jb 0x1246c88
pushal
mov bl, 0x6b
lodsb al, byte [esi]
inc esi
or eax, 0x28b84aee
xchg esp, eax
fnstenv [eax]
pop ebp
inc ebp
adc dl, bl
setne byte [esi + edx*2 - 0x2a595856]
xchg ecx, eax
test eax, 0xc750de4c
ret 0xfea3
xchg edi, eax
xor ah, byte [edi - 0x55457965]
dec edi
outsb dx, byte [esi]
pushal
ror byte [esi - 0x57], cl
test al, 0x50
cwde
dec esp
cmp edi, dword [ebp + 0x4f]
add al, 0xcf
add ah, byte [esi + 0x20]
jmp 0x1246d39
pop eax
jle 0x1246da1
lodsb al, byte [esi]
sub al, 0x25
pop ecx
sal dword [ebx - 0x1ac9a188], cl
mov bl, 4
retf
dec eax
outsb dx, byte gs:[esi]
sbb eax, 0x7d64bc4c
mov esi, 0x8216406c
stosb byte es:[edi], al
mov al, 0xed
pop ds
dec esi
xchg sp, ax
mov esi, 0xcd77a6ae
test byte [edx + 0x745d2b95], ah
lodsd eax, dword [esi]
inc ecx
fld dword [ecx + 0x2f]
call 0x60cbf262
mov cl, 0xe6
mov al, 0x64
scasd eax, dword es:[edi]
pop edi
mov cl, 0xe6
loop 0x1246e3c
inc edi
push esi
jbe 0x1246e35
mov bh, 0xbd
je 0x1246df4
cmp dword [eax], edi
mov byte [ecx + 6], al
das
wait
sbb byte [ecx + 0x659bf91e], bl
mov ebp, 0xc0df9232
div byte [eax + ecx*2 - 0x19]
lcall 0xc6f0, 0x32600482
or ah, cl
out 0xd4, eax
stosd dword es:[edi], eax
push ds
stosd dword es:[edi], eax
out 0xae, eax
lcall 0x6fcc, 0x2d233c4d
cmp dword [ebx + 0x50], edi
les ebx, [ecx - 3]
xchg ebx, eax
mov byte [edx - 0x4f], al
salc
push 0x16
lea eax, [0xd5ce983e]
add byte [eax], 0x32
invalid
or eax, 0x57a68895
in al, dx
sbb ebp, dword [esi]
and bh, byte [0x6d70cdb0]
arpl word [edx + 0x1bf0780], di
push ecx
dec esi
adc eax, 0xf0b4973d
sub edx, dword [ebp - 0x5833456a]
and cl, byte [ebp + 0x6b]
or edx, esi
cmp eax, 0x2bf0b497
xchg ebp, eax
xchg esi, eax
mov edx, 0x4d22a7cc
imul ecx, dword [ebx], 0xffffffd6
popfd
out dx, eax
add al, 0xf1
adc bh, dl
jns 0x1246e1e
mov dword [ebx + 0x3e], esi
das
fst st(0)
invalid
dec ecx
not esi
call fcn.0123fe4e
mov eax, dword [ebp]
add ebp, 4
mov ecx, 0xb4bb7494
push eax
lea edx, [ecx*2 - 0x485f74d7]
inc edx
popfd
lea esi, [edx + esi - 0x21177456]
jmp 0x1246bca