Function at 0x1008aca0
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x108
mov eax, dword [0x100f529c]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [ebx + 0x14]
mov eax, dword [ebx + 0x10]
push esi
mov esi, dword [ebx + 8]
mov dword [ebp - 0x90], eax
mov eax, dword [ebx + 0x18]
movd xmm0, ecx
cmp dword [esi + 0x24], 0
push edi
mov edi, dword [ebx + 0xc]
lea edx, [eax*8]
pshufd xmm3, xmm0, 0
mov dword [ebp - 0x88], esi
movups xmmword [ebp - 0xd0], xmm3
mov dword [ebp - 0xac], edi
jne 0x1008b258
mov eax, edx
shr eax, 3
cmp eax, dword [ebx + 0x18]
jne 0x1008b258
mov eax, dword [esi + 0x20]
add eax, edx
cmp eax, edx
jb 0x1008b258
mov eax, dword [esi + 0x68]
lea edx, [ecx + 0x48]
add edx, eax
shr edx, 6
dec edx
mov dword [ebp - 0x98], edx
mov edx, dword [ebx + 0x18]
add edx, 0x48
add eax, edx
shr eax, 6
mov dword [ebp - 0x8c], eax
mov eax, dword [esi + 0x20]
push 0x40
push 0
lea eax, [eax + ecx*8]
mov ecx, eax
mov dword [ebp - 0xa8], eax
shr ecx, 0x18
mov dword [ebp - 0x9c], ecx
mov ecx, eax
shr eax, 8
mov dword [ebp - 0xa4], eax
lea eax, [ebp - 0x48]
shr ecx, 0x10
push eax
mov dword [ebp - 0xa0], ecx
call fcn.100a7e90
xor eax, eax
xorps xmm0, xmm0
xor ecx, ecx
mov dword [ebp - 0x78], eax
add esp, 0xc
mov dword [ebp - 0x70], ecx
movups xmmword [ebp - 0x68], xmm0
movups xmmword [ebp - 0x58], xmm0
cmp dword [ebp - 0x8c], eax
jbe 0x1008b228
movd xmm0, ecx
xor edi, edi
pshufd xmm0, xmm0, 0
mov dword [ebp - 0x84], edi
movups xmmword [ebp - 0xe0], xmm0
test eax, eax
jne 0x1008ade1
mov edi, dword [esi + 0x68]
mov dword [ebp - 0x84], edi
test edi, edi
je 0x1008ade1
push edi
lea eax, [esi + 0x28]
push eax
lea eax, [ebp - 0x48]
push eax
call fcn.100a7910
mov ecx, dword [ebp - 0x70]
add esp, 0xc
mov edx, dword [ebx + 0x18]
movd xmm0, edi
pshufd xmm2, xmm0, 0
movups xmmword [ebp - 0xc0], xmm2
cmp ecx, edx
jae 0x1008ae31
mov ecx, edx
mov eax, 0x40
mov edx, dword [ebp - 0x70]
sub eax, edi
sub ecx, edx
cmp eax, ecx
cmovbe ecx, eax
test ecx, ecx
je 0x1008ae2e
mov eax, dword [ebp - 0x90]
add eax, edx
push ecx
push eax
lea eax, [ebp - 0x48]
add eax, edi
push eax
call fcn.100a7910
movups xmm2, xmmword [ebp - 0xc0]
add esp, 0xc
mov ecx, dword [ebp - 0x70]
mov eax, 0x40
mov edx, edi
sub eax, edi
cmp edi, 0x40
jae 0x1008b16c
cmp eax, 8
jb 0x1008b0e1
movups xmm3, xmmword [ebp - 0xd0]
and eax, 7
mov esi, 0x40
movaps xmm6, xmmword [0x100d4b30]
sub esi, eax
movaps xmm7, xmmword [0x100cf090]
mov eax, 0x1f
movaps xmm0, xmm3
movd xmm5, eax
psrld xmm0, xmm5
pshuflw xmm0, xmm0, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
pand xmm0, xmmword [0x100cf0a0]
packuswb xmm0, xmm0
movaps xmmword [ebp - 0xf0], xmm0
movaps xmm0, xmmword [0x100d4b50]
movaps xmmword [ebp - 0x100], xmm0
nop dword [eax + eax]
movd xmm0, edx
lea eax, [edx + 4]
pshufd xmm1, xmm0, 0
paddd xmm1, xmm6
psubd xmm1, xmm2
paddd xmm1, xmmword [ebp - 0xe0]
movaps xmm0, xmm1
movaps xmm4, xmm1
psrld xmm0, xmm5
psubd xmm1, xmm3
pxor xmm4, xmm3
pshuflw xmm0, xmm0, 0xd8
xorps xmm3, xmm3
pshufhw xmm0, xmm0, 0xd8
pshufd xmm2, xmm0, 0xd8
pand xmm2, xmmword [0x100cf0a0]
psrld xmm1, xmm5
packuswb xmm2, xmm2
pshuflw xmm0, xmm1, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x100cf0a0]
movd xmm0, dword [ebp - 0xf0]
pxor xmm0, xmm2
packuswb xmm1, xmm1
pxor xmm1, xmm2
por xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x48]
pxor xmm1, xmm2
psubb xmm3, xmm1
xorps xmm1, xmm1
pand xmm3, xmm0
movaps xmm0, xmm4
pandn xmm4, xmmword [0x100c8740]
psubd xmm0, xmm7
psrld xmm0, xmm5
psrld xmm4, xmm5
pshuflw xmm0, xmm0, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm2, xmm0, 0xd8
pand xmm2, xmmword [0x100cf0a0]
pshuflw xmm0, xmm4, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
pand xmm0, xmmword [0x100cf0a0]
packuswb xmm0, xmm0
packuswb xmm2, xmm2
pand xmm2, xmm0
movd xmm0, dword [ebp - 0x100]
psubb xmm1, xmm2
pand xmm1, xmm0
movd xmm0, eax
por xmm3, xmm1
pshufd xmm1, xmm0, 0
paddd xmm1, xmm6
movd dword [ebp + edx - 0x48], xmm3
psubd xmm1, xmmword [ebp - 0xc0]
xorps xmm3, xmm3
paddd xmm1, xmmword [ebp - 0xe0]
movaps xmm0, xmm1
movaps xmm4, xmm1
psubd xmm1, xmmword [ebp - 0xd0]
pxor xmm4, xmmword [ebp - 0xd0]
psrld xmm0, xmm5
psrld xmm1, xmm5
pshuflw xmm0, xmm0, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm2, xmm0, 0xd8
pand xmm2, xmmword [0x100cf0a0]
pshuflw xmm0, xmm1, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x100cf0a0]
movd xmm0, dword [ebp - 0xf0]
packuswb xmm2, xmm2
packuswb xmm1, xmm1
pxor xmm0, xmm2
pxor xmm1, xmm2
por xmm1, xmm0
pxor xmm1, xmm2
psubb xmm3, xmm1
movd xmm0, dword [ebp + edx - 0x44]
xorps xmm1, xmm1
pand xmm3, xmm0
movaps xmm0, xmm4
pandn xmm4, xmmword [0x100c8740]
psubd xmm0, xmm7
psrld xmm0, xmm5
psrld xmm4, xmm5
pshuflw xmm0, xmm0, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm2, xmm0, 0xd8
pand xmm2, xmmword [0x100cf0a0]
pshuflw xmm0, xmm4, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
pand xmm0, xmmword [0x100cf0a0]
packuswb xmm2, xmm2
packuswb xmm0, xmm0
pand xmm2, xmm0
movd xmm0, dword [ebp - 0x100]
psubb xmm1, xmm2
movups xmm2, xmmword [ebp - 0xc0]
pand xmm1, xmm0
por xmm3, xmm1
movd dword [ebp + edx - 0x44], xmm3
add edx, 8
mov eax, edx
movups xmm3, xmmword [ebp - 0xd0]
cmp edx, esi
jb 0x1008aeb0
mov esi, dword [ebp - 0x88]
cmp eax, 0x40
jae 0x1008b16c
mov eax, dword [ebx + 0x14]
lea esi, [ebp - 0x48]
shr eax, 0x1f
add esi, edx
mov dword [ebp - 0x94], eax
mov eax, edx
sub eax, edi
lea edi, [eax + ecx]
sub eax, dword [ebx + 0x14]
add eax, ecx
mov ecx, 0x40
sub ecx, edx
mov dword [ebp - 0x80], ecx
mov ecx, edi
lea esi, [esi + 1]
xor ecx, dword [ebx + 0x14]
mov edx, edi
mov dword [ebp - 0x6c], ecx
inc edi
not dword [ebp - 0x6c]
dec ecx
shr dword [ebp - 0x6c], 0x1f
mov dword [ebp - 0x7c], ecx
mov ecx, eax
shr ecx, 0x1f
inc eax
shr edx, 0x1f
xor cl, dl
mov dword [ebp - 0x74], ecx
mov cl, dl
xor cl, byte [ebp - 0x94]
or byte [ebp - 0x74], cl
mov ecx, dword [ebp - 0x74]
xor cl, dl
mov edx, dword [ebp - 0x7c]
shr edx, 0x1f
neg cl
and byte [ebp - 0x6c], dl
mov edx, dword [ebp - 0x6c]
and cl, byte [esi - 1]
neg dl
and dl, 0x80
or cl, dl
sub dword [ebp - 0x80], 1
mov byte [esi - 1], cl
jne 0x1008b108
mov edi, dword [ebp - 0x84]
mov esi, dword [ebp - 0x88]
mov eax, 0x40
sub eax, edi
add dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x78]
xor eax, dword [ebp - 0x98]
lea ecx, [eax - 1]
not eax
shr eax, 0x1f
shr ecx, 0x1f
and ecx, eax
neg ecx
mov al, cl
mov dword [ebp - 0x7c], ecx
and al, byte [ebp - 0x9c]
or byte [ebp - 0xc], al
mov al, cl
and al, byte [ebp - 0xa0]
or byte [ebp - 0xb], al
mov al, cl
and al, byte [ebp - 0xa4]
or byte [ebp - 0xa], al
mov al, cl
and al, byte [ebp - 0xa8]
or byte [ebp - 9], al
lea eax, [ebp - 0x48]
push eax
push esi
call fcn.10053aa0
mov ecx, dword [ebp - 0x7c]
add esp, 8
mov eax, ecx
and eax, dword [esi]
or dword [ebp - 0x68], eax
mov eax, dword [esi + 4]
and eax, ecx
or dword [ebp - 0x64], eax
mov eax, ecx
and eax, dword [esi + 8]
or dword [ebp - 0x60], eax
mov eax, dword [esi + 0xc]
and eax, ecx
or dword [ebp - 0x5c], eax
mov eax, ecx
and eax, dword [esi + 0x10]
or dword [ebp - 0x58], eax
mov eax, dword [esi + 0x14]
and eax, ecx
or dword [ebp - 0x54], eax
mov eax, ecx
and eax, dword [esi + 0x18]
or dword [ebp - 0x50], eax
mov eax, dword [esi + 0x1c]
and eax, ecx
mov ecx, dword [ebp - 0x70]
or dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x78]
inc eax
mov dword [ebp - 0x78], eax
cmp eax, dword [ebp - 0x8c]
jb 0x1008ada4
mov edi, dword [ebp - 0xac]
lea edx, [ebp - 0x68]
mov ecx, 8
sub edx, edi
mov eax, dword [edx + edi]
lea edi, [edi + 4]
bswap eax
mov dword [edi - 4], eax
sub ecx, 1
jne 0x1008b232
lea eax, [ecx + 1]
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100a69cd
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
xor ecx, ebp
pop esi
call fcn.100a69cd
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret