Function at 0x6faecac8
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
or ecx, eax
mov ecx, dword [esp + 0xc]
jne 0x6faef51b
mov eax, dword [esp + 4]
mul ecx
ret 0x10
add byte [eax], al
add byte [eax], al
add byte [eax], al
xor byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
sar byte [ebp + 0x1ab], 0
dec esi
and dh, byte [ebx]
sldt word [eax]
add byte [eax + 0xf33ddaf], al
add byte [eax], al
add byte [eax + 0x1b2], al
add byte [eax], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax + 0x1db37], al
add byte [eax], al
inc ebx
and dh, byte [ebx]
sldt word [eax]
add byte [eax + 0x2a], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [eax], al
cmpsd dword [esi], dword es:[edi]
fnsave dword [ebx]
sgdt [eax]
add byte [eax + 0xf3301ba], al
add byte [eax], al
add byte [eax + 0x4d], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [eax], al
add al, al
sbb eax, 2
pop ebp
and dh, byte [ebx]
sldt word [eax]
add byte [eax + 0xe3], al
add byte [eax], al
add byte [eax], al
mov edi, 0xf33dd
add byte [eax], al
add dl, 1
add byte [eax], al
add byte [eax], al
add byte [eax], al
add al, dh
push es
push 2
add byte [eax], al
add byte [edx + 0x22], dl
xor ecx, dword [edi]
add byte [eax], al
add byte [eax + 0x43], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax + 1], al
push eax
add al, byte [eax]
add byte [eax], al
mov bh, 0xdd
xor ecx, dword [edi]
add byte [eax], al
add byte [eax + 0x1ca], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], ah
add byte [eax], al
add byte [eax], al
add byte [eax], al
sub byte [edx], 0xe4
add byte [eax], al
add byte [eax], al
lodsb al, byte [esi]
and dh, byte [ebx]
sldt word [eax]
add byte [eax + 0x3e], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
dec edi
fnsave dword [ebx]
sldt word [eax]
add byte [eax + 0x593f01d2], al
add al, byte [eax]
add byte [eax], al
mov eax, dword [0xf3322]
add byte [eax], al
and byte [esi], 0
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
xor byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
lock sub dl, byte [edi + 2]
cmpsb byte [esi], byte es:[edi]
and dh, byte [ebx]
sldt word [eax]
add byte [eax + 0xf33dd47], al
add byte [eax], al
add byte [eax + 0x1da], al
add byte [eax], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax + 0x2b], dl
xchg edi, eax
add al, byte [eax]
add byte [eax], al
mov ebx, 0xf3322
add byte [eax], al
add byte [edx], 0
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [eax], al
pop edi
fnsave dword [ebx]
lar eax, word [eax]
add byte [eax + 0xf3301e2], al
add byte [eax], al
add byte [eax + 0x1b], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax + 0x25887], dh
add byte [eax], al
mov ch, 0x22
xor ecx, dword [edi]
add byte [eax], al
add byte [eax + 1], al
add byte [eax], al
add byte [eax], al
push edi
fnsave dword [ebx]
sldt word [eax]
add byte [eax + 0x1ea], al
add byte [eax], al
add byte [eax], al
add byte [eax + 0x13ded], dl
add byte [eax], al
mov ah, byte [edx]
xor ecx, dword [edi]
add byte [eax], al
add byte [eax + 0xc5], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
pop edi
dec esp
add al, byte [eax]
add byte [eax], al
outsd dx, dword [esi]
fnsave dword [ebx]
sldt word [eax]
add byte [eax + 0x1f2], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax + 0x24e8a], ah
add byte [eax], al
test byte [edx], ah
xor ecx, dword [edi]
add byte [eax], al
add byte [eax + 0xcf], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
fnsave dword [bp + di]
sldt word [eax]
add byte [eax + 0x4183ffff], al
adc byte [eax], al
add byte [eax], al
cdq
and dh, byte [ebx]
sldt word [eax]
add byte [eax + 7], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax + 0xac66], dh
add byte [eax], al
sahf
and dh, byte [ebx]
sldt word [eax]
add byte [eax + 0x89], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
pushal
lodsb al, byte [si]
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
lea eax, [ebp + 0x38]
out 0xea, eax
push edi
add byte [eax - 0x3bfc8d80], ch
add byte [eax], bl
add dword [edi - 0x1a92cebc], ecx
call 0xb5770051
mov ecx, 0xb87be001
add dword [ebx], ecx
add byte [eax], al
add al, al
shl al, 1
invalid