Function at 0x100aa9c0
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 0x10]
sub esp, 0x3c
shl eax, 3
push ebx
push ebp
push esi
mov esi, dword [esp + 0x4c]
push edi
test esi, esi
je 0x100aad97
mov ecx, dword [esp + 0x54]
test ecx, ecx
je 0x100aad97
mov bl, byte [esi]
cmp bl, 3
je 0x100aa9f6
cmp byte [ecx], 0
je 0x100aad97
cdq
and edx, 0x7f
lea edi, [edx + eax]
movzx eax, bl
sar edi, 7
mov dword [esp + 0x24], edi
sub eax, 1
je 0x100aad59
sub eax, 1
je 0x100aac9d
sub eax, 1
jne 0x100aad97
mov eax, dword [esi + 1]
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 5]
mov dword [esp + 0x30], eax
mov eax, dword [esi + 9]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 0xd]
mov dword [esp + 0x38], eax
mov dword [esp + 0x28], edi
test edi, edi
jle 0x100aad8a
mov al, byte [esp + 0x3b]
lea ebp, [ecx + 0x30]
mov byte [esp + 0x1f], al
mov al, byte [esp + 0x3a]
mov byte [esp + 0x1e], al
mov al, byte [esp + 0x39]
mov byte [esp + 0x1d], al
mov al, byte [esp + 0x38]
mov byte [esp + 0x1c], al
mov al, byte [esp + 0x37]
mov byte [esp + 0x1b], al
mov al, byte [esp + 0x36]
mov byte [esp + 0x1a], al
mov al, byte [esp + 0x35]
mov byte [esp + 0x19], al
mov al, byte [esp + 0x34]
mov edi, dword [esp + 0x60]
mov byte [esp + 0x18], al
mov al, byte [esp + 0x33]
mov byte [esp + 0x17], al
mov al, byte [esp + 0x32]
mov byte [esp + 0x16], al
mov al, byte [esp + 0x31]
mov byte [esp + 0x15], al
mov al, byte [esp + 0x30]
mov byte [esp + 0x14], al
mov al, byte [esp + 0x2f]
mov byte [esp + 0x13], al
mov al, byte [esp + 0x2e]
mov byte [esp + 0x12], al
mov al, byte [esp + 0x2d]
mov byte [esp + 0x50], al
mov al, byte [esp + 0x2c]
mov byte [esp + 0x5c], al
mov esi, dword [esp + 0x58]
xor ebx, ebx
mov dword [esp + 0x20], ebx
nop dword [eax + eax]
movups xmm0, xmmword [esp + 0x2c]
lea eax, [esp + 0x3c]
push ebp
push eax
push eax
movups xmmword [esp + 0x48], xmm0
call fcn.100a9820
mov cl, byte [esp + 0x5c]
add esp, 0xc
mov dl, byte [esp + 0x5c]
mov al, cl
shr al, 7
add dl, dl
or dl, al
add cl, cl
mov byte [esp + 0x5c], dl
mov byte [esp + 0x2c], dl
mov dl, byte [esp + 0x12]
mov al, dl
add dl, dl
shr al, 7
or cl, al
mov byte [esp + 0x50], cl
mov byte [esp + 0x2d], cl
mov cl, byte [esp + 0x13]
mov al, cl
add cl, cl
shr al, 7
or dl, al
mov byte [esp + 0x12], dl
mov byte [esp + 0x2e], dl
mov dl, byte [esp + 0x14]
mov al, dl
add dl, dl
shr al, 7
or cl, al
mov byte [esp + 0x13], cl
mov byte [esp + 0x2f], cl
mov cl, byte [esp + 0x15]
mov al, cl
add cl, cl
shr al, 7
or dl, al
mov byte [esp + 0x14], dl
mov byte [esp + 0x30], dl
mov dl, byte [esp + 0x16]
mov al, dl
add dl, dl
shr al, 7
or cl, al
mov byte [esp + 0x15], cl
mov byte [esp + 0x31], cl
mov cl, byte [esp + 0x17]
mov al, cl
add cl, cl
shr al, 7
or dl, al
mov byte [esp + 0x16], dl
mov byte [esp + 0x32], dl
mov dl, byte [esp + 0x18]
mov al, dl
add dl, dl
shr al, 7
or cl, al
mov byte [esp + 0x17], cl
mov byte [esp + 0x33], cl
mov cl, byte [esp + 0x19]
mov al, cl
add cl, cl
shr al, 7
or dl, al
mov byte [esp + 0x18], dl
mov byte [esp + 0x34], dl
mov dl, byte [esp + 0x1a]
mov al, dl
shr al, 7
or cl, al
mov byte [esp + 0x19], cl
mov byte [esp + 0x35], cl
mov cl, byte [esp + 0x1b]
mov al, cl
shr al, 7
add dl, dl
or dl, al
mov ch, byte [esp + 0x1e]
mov ah, byte [esp + 0x1f]
add cl, cl
mov byte [esp + 0x1a], dl
and bl, 7
mov byte [esp + 0x36], dl
mov dl, byte [esp + 0x1c]
mov al, dl
add dl, dl
shr al, 7
or cl, al
mov byte [esp + 0x1b], cl
mov byte [esp + 0x37], cl
mov cl, byte [esp + 0x1d]
mov al, cl
add cl, cl
shr al, 7
or dl, al
mov al, ch
shr al, 7
add ch, ch
or cl, al
mov byte [esp + 0x1c], dl
mov byte [esp + 0x38], dl
mov al, ah
mov edx, dword [esp + 0x20]
add ah, ah
shr al, 7
or ch, al
shr edx, 3
mov byte [esp + 0x1d], cl
mov byte [esp + 0x39], cl
mov cl, 7
sub cl, bl
mov byte [esp + 0x1e], ch
mov al, byte [edx + esi]
shr al, cl
mov cl, bl
mov ebx, dword [esp + 0x20]
and al, 1
or ah, al
mov byte [esp + 0x3a], ch
mov al, byte [esp + 0x3c]
inc ebx
and al, 0x80
mov byte [esp + 0x1f], ah
shr al, cl
xor byte [edx + edi], al
mov byte [esp + 0x3b], ah
mov dword [esp + 0x20], ebx
cmp ebx, 0x80
jl 0x100aaae0
mov esi, dword [esp + 0x28]
dec esi
mov dword [esp + 0x28], esi
test esi, esi
jg 0x100aaad1
mov edi, dword [esp + 0x24]
shl edi, 7
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov ebp, dword [esp + 0x58]
lea eax, [ecx + 0x30]
push eax
mov dword [esp + 0x60], eax
lea eax, [esp + 0x40]
push eax
push ebp
call fcn.100aa050
mov eax, dword [esi + 1]
lea ebx, [edi - 1]
xor eax, dword [esp + 0x48]
add esp, 0xc
mov ecx, dword [esp + 0x60]
mov dword [ecx], eax
mov eax, dword [esi + 5]
xor eax, dword [esp + 0x40]
mov dword [ecx + 4], eax
mov eax, dword [esi + 9]
xor eax, dword [esp + 0x44]
mov dword [ecx + 8], eax
mov eax, dword [esi + 0xd]
xor eax, dword [esp + 0x48]
mov dword [ecx + 0xc], eax
test ebx, ebx
jle 0x100aad8a
lea edi, [ebp - 0xc]
sub ebp, ecx
lea esi, [ecx + 0x14]
sub ebp, 0x14
nop dword [eax + eax]
push dword [esp + 0x5c]
lea eax, [esp + 0x40]
push eax
lea eax, [esi + ebp]
push eax
call fcn.100aa050
mov eax, dword [edi - 4]
lea edi, [edi + 0x10]
xor eax, dword [esp + 0x48]
lea esi, [esi + 0x10]
mov dword [esi - 0x14], eax
dec ebx
mov eax, dword [edi - 0x10]
add esp, 0xc
xor eax, dword [esp + 0x40]
mov dword [esi - 0x10], eax
mov eax, dword [edi - 0xc]
xor eax, dword [esp + 0x44]
mov dword [esi - 0xc], eax
mov eax, dword [edi - 8]
xor eax, dword [esp + 0x48]
mov dword [esi - 8], eax
test ebx, ebx
jg 0x100aad00
mov edi, dword [esp + 0x24]
shl edi, 7
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov esi, edi
test edi, edi
jle 0x100aad8a
mov edi, dword [esp + 0x60]
lea ebp, [ecx + 0x30]
mov ebx, dword [esp + 0x58]
nop word [eax + eax]
push ebp
push edi
push ebx
call fcn.100aa050
dec esi
add esp, 0xc
add ebx, 0x10
add edi, 0x10
test esi, esi
jg 0x100aad70
mov edi, dword [esp + 0x24]
shl edi, 7
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
pop edi
pop esi
pop ebp
mov eax, 0xfffffffb
pop ebx
add esp, 0x3c
ret