Function at 0x66eac0
Capabilities:
Encode data using xor

Disassembly:
push ebx
push edi
push esi
mov esi, dword [esp + 0x10]
cmp byte [0xb53988], 0
jne 0x66ebf3
movdqa xmm6, xmmword [0x799600]
mov ecx, 0xfffffc00
movdqa xmm1, xmmword [0xab08d0]
movdqa xmm7, xmmword [0xab0930]
nop word cs:[eax + eax]
movdqa xmm2, xmm6
psrld xmm2, 1
movdqa xmm0, xmm6
pslld xmm0, 0x1f
psrad xmm0, 0x1f
pand xmm0, xmm1
pxor xmm0, xmm2
movdqa xmm3, xmm0
psrld xmm3, 1
movdqa xmm2, xmm6
pslld xmm2, 0x1e
psrad xmm2, 0x1f
pand xmm2, xmm1
pxor xmm2, xmm3
movdqa xmm3, xmm6
pslld xmm3, 0x1d
psrad xmm3, 0x1f
pand xmm3, xmmword [0xab08e0]
movdqa xmm4, xmm6
pslld xmm4, 0x1c
psrad xmm4, 0x1f
pand xmm4, xmmword [0xab08f0]
pxor xmm4, xmm3
movdqa xmm5, xmm6
pslld xmm5, 0x1b
psrad xmm5, 0x1f
pand xmm5, xmmword [0xab0900]
movdqa xmm3, xmm6
pslld xmm3, 0x1a
psrad xmm3, 0x1f
pand xmm3, xmmword [0xab0910]
pxor xmm3, xmm5
pxor xmm3, xmm4
movdqa xmm4, xmm2
psrld xmm4, 6
pxor xmm3, xmm4
pslld xmm2, 0x1a
psrad xmm2, 0x1f
pand xmm2, xmm1
pxor xmm2, xmm3
pslld xmm0, 0x1a
psrad xmm0, 0x1f
pand xmm0, xmmword [0xab0920]
pxor xmm2, xmm0
movdqu xmmword [ecx + 0xb53d8c], xmm2
paddd xmm6, xmm7
add ecx, 0x10
jne 0x66eb00
mov byte [0xb53988], 1
test esi, esi
je 0x66ed7b
mov edx, dword [esp + 0x14]
test edx, edx
je 0x66ed7b
mov ecx, dword [esp + 0x18]
mov eax, dword [esi]
test ecx, ecx
je 0x66ed77
mov ebx, eax
jmp 0x66ec3e
xor al, byte [edx]
movzx eax, al
mov eax, dword [eax*4 + 0xb5398c]
mov edi, 0xffffffff
xor ebx, eax
inc edx
mov eax, ebx
add ecx, edi
je 0x66ed79
shr ebx, 8
cmp ecx, 0x10
jb 0x66ec20
xor al, byte [edx]
movzx eax, al
xor ebx, dword [eax*4 + 0xb5398c]
mov eax, ebx
xor bl, byte [edx + 1]
shr eax, 8
movzx edi, bl
xor eax, dword [edi*4 + 0xb5398c]
mov ebx, eax
xor al, byte [edx + 2]
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0xb5398c]
mov eax, ebx
xor bl, byte [edx + 3]
shr eax, 8
movzx edi, bl
xor eax, dword [edi*4 + 0xb5398c]
mov ebx, eax
xor al, byte [edx + 4]
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0xb5398c]
mov eax, ebx
shr eax, 8
xor bl, byte [edx + 5]
movzx edi, bl
mov dword [0xb2d310], 0xadffffae
xor eax, dword [edi*4 + 0xb5398c]
mov ebx, eax
xor al, byte [edx + 6]
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0xb5398c]
mov eax, ebx
xor bl, byte [edx + 7]
shr eax, 8
movzx edi, bl
xor eax, dword [edi*4 + 0xb5398c]
mov ebx, eax
xor al, byte [edx + 8]
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0xb5398c]
mov eax, ebx
xor bl, byte [edx + 9]
shr eax, 8
movzx edi, bl
xor eax, dword [edi*4 + 0xb5398c]
mov ebx, eax
xor al, byte [edx + 0xa]
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0xb5398c]
mov eax, ebx
xor bl, byte [edx + 0xb]
shr eax, 8
movzx edi, bl
xor eax, dword [edi*4 + 0xb5398c]
mov ebx, eax
xor al, byte [edx + 0xc]
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0xb5398c]
mov eax, ebx
xor bl, byte [edx + 0xd]
shr eax, 8
movzx edi, bl
xor eax, dword [edi*4 + 0xb5398c]
mov ebx, eax
shr ebx, 8
xor al, byte [edx + 0xe]
movzx eax, al
xor ebx, dword [eax*4 + 0xb5398c]
mov eax, ebx
xor bl, byte [edx + 0xf]
add edx, 0xf
shr eax, 8
movzx edi, bl
mov ebx, dword [edi*4 + 0xb5398c]
mov edi, 0xfffffff0
jmp 0x66ec31
mov ebx, eax
mov dword [esi], ebx
pop esi
pop edi
pop ebx
ret