Function at 0x5a1760
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
cmp byte [0x88a1d4], 0
jne 0x5a1893
movdqa xmm6, xmmword [0x750930]
mov edx, 0xfffffc00
movdqa xmm1, xmmword [0x7d8690]
movdqa xmm7, xmmword [0x7d86f0]
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 [0x7d86a0]
movdqa xmm4, xmm6
pslld xmm4, 0x1c
psrad xmm4, 0x1f
pand xmm4, xmmword [0x7d86b0]
pxor xmm4, xmm3
movdqa xmm5, xmm6
pslld xmm5, 0x1b
psrad xmm5, 0x1f
pand xmm5, xmmword [0x7d86c0]
movdqa xmm3, xmm6
pslld xmm3, 0x1a
psrad xmm3, 0x1f
pand xmm3, xmmword [0x7d86d0]
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 [0x7d86e0]
pxor xmm2, xmm0
movdqu xmmword [edx + 0x88a5d8], xmm2
paddd xmm6, xmm7
add edx, 0x10
jne 0x5a17a0
mov byte [0x88a1d4], 1
test esi, esi
sete al
test ebp, ebp
sete cl
or cl, al
jne 0x5a1a11
mov edx, dword [esp + 0x1c]
mov ebx, dword [esi]
test edx, edx
je 0x5a1a0d
mov eax, ebx
jmp 0x5a19e6
mov ebx, eax
xor al, byte [ebp + 1]
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x88a1d8]
mov eax, ebx
xor bl, byte [ebp + 2]
shr eax, 8
movzx ecx, bl
xor eax, dword [ecx*4 + 0x88a1d8]
mov ebx, eax
xor al, byte [ebp + 3]
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x88a1d8]
mov eax, ebx
xor bl, byte [ebp + 4]
shr eax, 8
movzx ecx, bl
xor eax, dword [ecx*4 + 0x88a1d8]
mov ebx, eax
xor al, byte [ebp + 5]
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x88a1d8]
mov eax, ebx
xor bl, byte [ebp + 6]
shr eax, 8
movzx ecx, bl
xor eax, dword [ecx*4 + 0x88a1d8]
mov ebx, eax
xor al, byte [ebp + 7]
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x88a1d8]
mov eax, ebx
xor bl, byte [ebp + 8]
shr eax, 8
movzx ecx, bl
xor eax, dword [ecx*4 + 0x88a1d8]
mov ebx, eax
xor al, byte [ebp + 9]
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x88a1d8]
mov eax, ebx
xor bl, byte [ebp + 0xa]
shr eax, 8
movzx ecx, bl
xor eax, dword [ecx*4 + 0x88a1d8]
mov ebx, eax
xor al, byte [ebp + 0xb]
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x88a1d8]
mov ecx, ebx
shr ecx, 8
xor bl, byte [ebp + 0xc]
mov dword [0x85667c], 0x87bbe885
movzx eax, bl
xor ecx, dword [eax*4 + 0x88a1d8]
mov eax, ecx
xor cl, byte [ebp + 0xd]
shr eax, 8
movzx ecx, cl
xor eax, dword [ecx*4 + 0x88a1d8]
mov ebx, eax
shr ebx, 8
xor al, byte [ebp + 0xe]
movzx eax, al
xor ebx, dword [eax*4 + 0x88a1d8]
mov eax, ebx
shr eax, 8
xor bl, byte [ebp + 0xf]
add ebp, 0x10
movzx ecx, bl
xor eax, dword [ecx*4 + 0x88a1d8]
mov edi, 0xfffffff0
mov ebx, eax
add edx, edi
je 0x5a1a0f
shr eax, 8
xor bl, byte [ebp]
movzx ecx, bl
xor eax, dword [ecx*4 + 0x88a1d8]
cmp edx, 0x10
jae 0x5a18c0
inc ebp
mov edi, 0xffffffff
mov ebx, eax
add edx, edi
jne 0x5a19e6
jmp 0x5a1a0f
mov eax, ebx
mov dword [esi], eax
pop esi
pop edi
pop ebx
pop ebp
ret