Function at 0x1008a310
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x20
mov eax, ecx
mov edi, edx
mov dword [ebp - 0x20], ecx
sub eax, edx
movzx esi, byte [eax + 8]
movzx edx, byte [eax + 6]
sub esi, edx
lea edx, [ecx + edi*8 - 1]
lea ecx, [ecx + edi*8]
mov dword [ebp - 0x14], esi
lea esi, [edi + edi]
movzx ebx, byte [edx]
mov dword [ebp - 0x18], ecx
sub edx, esi
movzx esi, byte [edx]
sub edx, edi
sub ebx, esi
movzx esi, byte [eax + 9]
mov dword [ebp - 0x10], ebx
movzx ebx, byte [eax + 5]
sub esi, ebx
mov ebx, dword [ebp - 0x14]
lea esi, [ebx + esi*2]
movzx ebx, byte [edi + ecx - 1]
movzx ecx, byte [edx]
mov dword [ebp - 0x24], esi
mov esi, edi
movzx edi, byte [eax + 0xa]
mov dword [ebp - 0x1c], esi
sub ebx, ecx
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx + ebx*2]
movzx ebx, byte [eax + 4]
mov dword [ebp - 0x14], ecx
sub edi, ebx
lea ecx, [edi + edi*2]
movzx edi, byte [eax + 3]
add ecx, dword [ebp - 0x24]
mov dword [ebp - 0x10], ecx
mov ecx, esi
mov esi, dword [ebp - 0x18]
sub edx, ecx
lea esi, [ecx + esi - 1]
movzx ebx, byte [ecx + esi]
movzx ecx, byte [edx]
sub ebx, ecx
lea ecx, [ebx + ebx*2]
movzx ebx, byte [eax + 0xb]
add ecx, dword [ebp - 0x14]
sub ebx, edi
mov edi, dword [ebp - 0x10]
lea edi, [edi + ebx*4]
mov dword [ebp - 0x10], edi
mov edi, dword [ebp - 0x1c]
add esi, edi
sub edx, edi
movzx ebx, byte [edi + esi]
movzx edi, byte [edx]
sub ebx, edi
movzx edi, byte [eax + 0xc]
lea ecx, [ecx + ebx*4]
movzx ebx, byte [eax + 2]
mov dword [ebp - 0x14], ecx
sub edi, ebx
lea ecx, [edi + edi*4]
movzx edi, byte [eax + 1]
add ecx, dword [ebp - 0x10]
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x1c]
add esi, ecx
sub edx, ecx
movzx ebx, byte [ecx + esi]
movzx ecx, byte [edx]
sub ebx, ecx
lea ecx, [ebx + ebx*4]
movzx ebx, byte [eax + 0xd]
add ecx, dword [ebp - 0x14]
sub ebx, edi
lea edi, [ebx + ebx*2]
mov ebx, dword [ebp - 0x10]
lea edi, [ebx + edi*2]
mov dword [ebp - 0x10], edi
mov edi, dword [ebp - 0x1c]
add esi, edi
sub edx, edi
movzx ebx, byte [edi + esi]
movzx edi, byte [edx]
sub ebx, edi
lea edi, [ebx + ebx*2]
movzx ebx, byte [eax]
lea ecx, [ecx + edi*2]
movzx edi, byte [eax + 0xe]
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0x1c]
sub edi, ebx
lea ebx, [edi*8]
add esi, ecx
sub edx, ecx
sub ebx, edi
movzx edi, byte [ecx + esi]
movzx ecx, byte [edx]
add ebx, dword [ebp - 0x10]
sub edi, ecx
lea ecx, [edi*8]
sub ecx, edi
movzx edi, byte [eax + 0xf]
movzx eax, byte [eax - 1]
add ecx, dword [ebp - 0x14]
sub edi, eax
lea ebx, [ebx + edi*8]
mov edi, dword [ebp - 0x1c]
sub edx, edi
add esi, edi
movzx eax, byte [edi + esi]
movzx edx, byte [edx]
mov esi, edi
sub eax, edx
cmp dword [ebp + 8], 0
lea edi, [ecx + eax*8]
lea eax, [esi + esi*4]
mov ecx, esi
lea edx, [eax + eax*2]
mov eax, esi
not eax
je 0x1008a4c2
lea ecx, [ebx + 3]
test ebx, ebx
cmovns ecx, ebx
sar ecx, 2
lea esi, [ecx + ecx*4]
lea ecx, [ecx + ecx*4 + 0xf]
test esi, esi
cmovns ecx, esi
sar ecx, 4
test edi, edi
mov dword [ebp - 0x18], ecx
lea ecx, [edi + 3]
cmovns ecx, edi
sar ecx, 2
lea edi, [ecx + ecx*4]
lea esi, [ecx + ecx*4 + 0xf]
test edi, edi
cmovns esi, edi
sar esi, 4
jmp 0x1008a4ef
cmp dword [ebp + 0xc], 0
je 0x1008a4de
mov esi, ebx
mov ecx, edi
sar esi, 2
sar ecx, 2
add esi, ebx
add ecx, edi
sar esi, 4
sar ecx, 4
jmp 0x1008a4ec
lea esi, [ebx + ebx*4 + 0x20]
lea ecx, [edi + edi*4 + 0x20]
sar esi, 6
sar ecx, 6
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x18]
mov dword [ebp - 0x10], 0x11
mov edi, ecx
movzx ecx, byte [ecx + edx - 1]
movzx eax, byte [edi + eax + 0x10]
add eax, ecx
lea ecx, [ebx + esi]
lea edx, [ecx*8]
shl eax, 4
sub ecx, edx
mov edx, ebx
lea edi, [ecx + eax + 0x10]
lea ecx, [esi + esi]
add eax, esi
mov dword [ebp - 0x2c], ecx
lea ecx, [ebx*8]
sub edx, ecx
lea eax, [eax + edx + 0x10]
mov dword [ebp - 0x14], eax
lea eax, [esi + esi*4]
lea eax, [eax + eax*2]
sub ebx, eax
mov dword [ebp - 0x28], ebx
lea eax, [esi + edi]
movd xmm4, edi
lea ebx, [esi + eax]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x2c]
lea ecx, [esi + ebx]
movd xmm1, ebx
lea edx, [esi + ecx]
movd xmm2, ecx
movd xmm3, edx
lea edx, [esi + edx]
punpckldq xmm1, xmm2
movd xmm0, edx
lea edx, [esi + edx]
movd xmm5, edx
lea edx, [esi + edx]
punpckldq xmm3, xmm0
movd xmm7, edx
lea edx, [eax + edx]
mov eax, dword [ebp - 0x20]
lea ebx, [esi + edx]
punpckldq xmm5, xmm7
lea ecx, [esi + ebx]
punpcklqdq xmm3, xmm5
movd xmm2, ebx
mov ebx, dword [ebp - 0x14]
lea edi, [esi + ecx]
movd xmm6, edi
lea edi, [esi + edi]
movd xmm0, edi
lea edi, [esi + edi]
movd xmm5, edi
add edi, esi
punpckldq xmm6, xmm0
movd xmm7, ebx
add ebx, dword [ebp - 0x18]
movd xmm0, edi
add edi, dword [ebp - 0x28]
punpckldq xmm5, xmm0
movd xmm0, dword [ebp - 0x24]
punpcklqdq xmm6, xmm5
mov dword [ebp - 0x14], ebx
punpckldq xmm4, xmm0
movd xmm0, ecx
punpcklqdq xmm4, xmm1
movd xmm1, edx
punpckldq xmm2, xmm0
movdqa xmm0, xmm6
psrad xmm6, 0x1f
mov edx, dword [ebp - 0x10]
punpckldq xmm7, xmm1
movdqa xmm1, xmmword [0x10239000]
psrad xmm0, 5
punpcklqdq xmm7, xmm2
movdqa xmm2, xmmword [0x10210920]
movdqa xmm5, xmm0
dec edx
mov dword [ebp - 0x10], edx
pxor xmm5, xmm2
pcmpgtd xmm5, xmm1
pandn xmm6, xmm5
pandn xmm5, xmm0
movdqa xmm0, xmm3
psrad xmm3, 0x1f
por xmm5, xmm6
movdqa xmm6, xmmword [0x10239000]
psrad xmm0, 5
movdqa xmm1, xmm0
pxor xmm1, xmm2
pcmpgtd xmm1, xmm6
pandn xmm3, xmm1
pandn xmm1, xmm0
movdqa xmm0, xmm7
psrad xmm7, 0x1f
psrad xmm0, 5
por xmm1, xmm3
movdqa xmm2, xmm0
pxor xmm2, xmmword [0x10210920]
pcmpgtd xmm2, xmm6
pandn xmm7, xmm2
pandn xmm2, xmm0
movdqa xmm0, xmm4
psrad xmm4, 0x1f
psrad xmm0, 5
por xmm2, xmm7
movdqa xmm3, xmm0
pxor xmm3, xmmword [0x10210920]
pcmpgtd xmm3, xmm6
pandn xmm4, xmm3
pandn xmm3, xmm0
por xmm3, xmm4
movdqa xmm4, xmmword [0x1021b7a0]
pand xmm1, xmm4
pand xmm3, xmm4
pand xmm5, xmm4
pand xmm2, xmm4
packuswb xmm3, xmm1
packuswb xmm2, xmm5
packuswb xmm3, xmm2
movdqu xmmword [eax], xmm3
add eax, dword [ebp - 0x1c]
cmp edx, 1
mov dword [ebp - 0x20], eax
ja 0x1008a542
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret