Function at 0x1015fa20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0x10]
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
mov dword [esi + 0xc], 0
mov dword [esi + 0x40], 0
mov dword [esi + 0x44], 0
mov dword [esi + 0x48], 0
mov dword [esi + 0x4c], 0
mov dword [esi + 0x30], 0
mov dword [esi + 0x34], 0
mov dword [esi + 0x38], 0
mov dword [esi + 0x3c], 0
mov dword [esi + 0x16c], 0
mov dword [esi + 0x168], 0
cmp edi, 0xc
jne 0x1015fab8
mov eax, dword [ebp + 0xc]
lea ebx, [edi - 0xb]
movq xmm0, qword [eax]
movq qword [esi], xmm0
mov eax, dword [eax + 8]
mov dword [esi + 8], eax
mov byte [esi + 0xf], 1
jmp 0x1015fc57
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 8], edi
cmp edi, 0x10
jb 0x1015fb34
mov ebx, ecx
mov dword [ebp + 0x10], ecx
mov eax, edi
lea edx, [esi + 0xf]
sub ebx, esi
shr eax, 4
mov dword [ebp - 4], eax
lea eax, [ebx + edx]
cmp esi, eax
ja 0x1015fb00
cmp edx, ecx
jb 0x1015fb00
mov eax, esi
mov edx, 0x10
mov cl, byte [ebx + eax]
lea eax, [eax + 1]
xor byte [eax - 1], cl
dec edx
jne 0x1015fae7
jmp 0x1015fb10
movdqu xmm1, xmmword [esi]
movdqu xmm0, xmmword [ecx]
pxor xmm1, xmm0
movdqu xmmword [esi], xmm1
lea eax, [esi + 0x60]
push eax
push esi
call fcn.1015fef0
mov ecx, dword [ebp + 0x10]
lea edx, [esi + 0xf]
add ecx, 0x10
add esp, 8
add ebx, 0x10
mov dword [ebp + 0x10], ecx
sub edi, 0x10
dec dword [ebp - 4]
jne 0x1015fad5
test edi, edi
je 0x1015fbd9
xor ebx, ebx
test edi, edi
je 0x1015fbcc
cmp edi, 0x20
jb 0x1015fbb4
lea eax, [ecx - 1]
lea edx, [esi - 1]
add eax, edi
add edx, edi
cmp esi, eax
ja 0x1015fb5d
cmp edx, ecx
jae 0x1015fbb4
mov eax, edi
mov edx, edi
and eax, 0x1f
sub edx, eax
mov eax, esi
mov dword [ebp + 0x10], edx
mov edx, ecx
sub edx, esi
mov dword [ebp - 4], edx
mov edx, dword [ebp + 0x10]
mov esi, dword [ebp - 4]
jmp 0x1015fb80
movdqu xmm0, xmmword [eax]
lea eax, [eax + 0x20]
movdqu xmm1, xmmword [eax + esi - 0x20]
pxor xmm1, xmm0
movdqu xmmword [eax - 0x20], xmm1
movdqu xmm1, xmmword [ecx + ebx + 0x10]
add ebx, 0x20
movdqu xmm0, xmmword [eax - 0x10]
pxor xmm1, xmm0
movdqu xmmword [eax - 0x10], xmm1
cmp ebx, edx
jb 0x1015fb80
mov esi, dword [ebp + 8]
cmp ebx, edi
jae 0x1015fbcc
sub ecx, esi
lea edx, [ebx + esi]
sub edi, ebx
nop
mov al, byte [edx + ecx]
lea edx, [edx + 1]
xor byte [edx - 1], al
dec edi
jne 0x1015fbc0
lea eax, [esi + 0x60]
push eax
push esi
call fcn.1015fef0
add esp, 8
mov ebx, dword [ebp - 8]
xor edx, edx
shld edx, ebx, 3
xor byte [esi + 0xb], dl
mov eax, edx
shr eax, 0x18
xor byte [esi + 8], al
mov eax, edx
shr eax, 0x10
xor byte [esi + 9], al
mov eax, edx
shr eax, 8
xor byte [esi + 0xa], al
mov eax, edx
shl ebx, 3
xor byte [esi + 0xf], bl
mov ecx, ebx
shrd ecx, eax, 0x18
xor byte [esi + 0xc], cl
mov ecx, ebx
shr eax, 0x18
mov eax, edx
shrd ecx, eax, 0x10
xor byte [esi + 0xd], cl
shr eax, 0x10
mov eax, ebx
shrd eax, edx, 8
xor byte [esi + 0xe], al
lea eax, [esi + 0x60]
push eax
shr edx, 8
push esi
call fcn.1015fef0
movzx ebx, byte [esi + 0xc]
add esp, 8
movzx eax, byte [esi + 0xd]
shl ebx, 8
or ebx, eax
movzx eax, byte [esi + 0xe]
shl ebx, 8
or ebx, eax
movzx eax, byte [esi + 0xf]
shl ebx, 8
or ebx, eax
push dword [esi + 0x174]
lea eax, [esi + 0x20]
push eax
mov eax, dword [esi + 0x170]
push esi
call eax
inc ebx
add esp, 0xc
mov eax, ebx
mov byte [esi + 0xf], bl
shr eax, 0x18
mov byte [esi + 0xc], al
mov eax, ebx
shr eax, 0x10
mov byte [esi + 0xd], al
mov eax, ebx
shr eax, 8
pop edi
mov byte [esi + 0xe], al
pop esi
pop ebx
mov esp, ebp
pop ebp
ret