Function at 0x1015ce90
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x4c
call fcn.101aa130
mov eax, dword [0x102a1e64]
xor eax, esp
mov dword [esp + 0x48], eax
push ebx
mov ebx, dword [esp + 0x54]
push ebp
push esi
push edi
mov al, byte [ebx]
lea edx, [ebx + 0x10]
mov edi, dword [esp + 0x68]
lea esi, [ebx + 0x20]
mov ecx, dword [ebx + 0x2c]
mov byte [esp + 0x13], al
test byte [esp + 0x13], 0x40
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x14], edx
jne 0x1015cef4
push ecx
push edx
push ebx
call eax
mov eax, dword [esi + 4]
add esp, 0xc
add dword [esi], 1
adc eax, 0
mov dword [esi + 4], eax
jmp 0x1015cef8
mov dword [esp + 0x14], edx
movzx eax, byte [esp + 0x13]
mov edx, 0xf
and eax, 7
xor ecx, ecx
sub edx, eax
mov byte [ebx], al
mov dword [esp + 0x44], edx
cmp edx, 0xf
jae 0x1015cf33
movzx eax, byte [ebx + edx]
or ecx, eax
mov byte [ebx + edx], 0
inc edx
shl ecx, 8
cmp edx, 0xf
jb 0x1015cf14
lea edx, [ebx + 0x10]
lea esi, [ebx + 0x20]
mov dword [esp + 0x14], edx
jmp 0x1015cf37
mov edx, dword [esp + 0x14]
movzx eax, byte [ebx + 0xf]
mov ebp, dword [esp + 0x6c]
or ecx, eax
mov byte [ebx + 0xf], 1
cmp ecx, ebp
je 0x1015cf5f
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.101a966e
add esp, 0x4c
ret
lea eax, [ebp + 0xf]
or eax, 8
shr eax, 3
add dword [esi], eax
adc dword [esi + 4], 0
cmp dword [esi + 4], 0x20000000
jb 0x1015cf96
ja 0x1015cf7e
cmp dword [esi], 0
jbe 0x1015cf96
pop edi
pop esi
pop ebp
mov eax, 0xfffffffe
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.101a966e
add esp, 0x4c
ret
mov esi, dword [esp + 0x64]
cmp ebp, 0x10
jb 0x1015d036
mov eax, ebp
lea ecx, [ebx + 0x18]
shr eax, 4
mov dword [esp + 0x18], eax
nop
mov eax, dword [esi]
xor dword [edx], eax
mov eax, dword [esi + 4]
xor dword [edx + 4], eax
push dword [esp + 0x20]
mov eax, dword [esi + 8]
xor dword [ecx], eax
mov eax, dword [esi + 0xc]
xor dword [ecx + 4], eax
push edx
push edx
call dword [esp + 0x28]
push dword [esp + 0x2c]
lea eax, [esp + 0x58]
push eax
push ebx
call dword [esp + 0x34]
add esp, 0x18
mov eax, 8
dec eax
add byte [eax + ebx + 8], 1
jne 0x1015cff1
test eax, eax
jne 0x1015cfe5
mov eax, dword [esi + 4]
sub ebp, 0x10
mov ecx, dword [esp + 0x48]
xor ecx, dword [esi]
xor eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x14]
mov dword [edi], ecx
mov ecx, dword [esp + 0x50]
mov dword [edi + 4], eax
xor ecx, dword [esi + 8]
mov eax, dword [esi + 0xc]
add esi, 0x10
xor eax, dword [esp + 0x54]
mov dword [edi + 8], ecx
lea ecx, [ebx + 0x18]
mov dword [edi + 0xc], eax
add edi, 0x10
sub dword [esp + 0x18], 1
jne 0x1015cfb0
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], esi
lea eax, [ebx + 0x18]
mov dword [esp + 0x18], eax
test ebp, ebp
je 0x1015d1c8
mov ecx, dword [esp + 0x14]
mov ebx, ebp
mov edx, esi
mov al, byte [edx]
lea edx, [edx + 1]
xor byte [ecx], al
lea ecx, [ecx + 1]
sub ebx, 1
jne 0x1015d051
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
push ebx
push edx
push edx
call dword [esp + 0x28]
push ebx
mov ebx, dword [esp + 0x34]
lea eax, [esp + 0x58]
push eax
push ebx
call dword [esp + 0x34]
add esp, 0x18
xor edx, edx
cmp ebp, 8
jb 0x1015d19a
lea ecx, [ebp - 1]
lea eax, [esp + ebp + 0x47]
add ecx, edi
cmp edi, eax
ja 0x1015d0a5
lea eax, [esp + 0x48]
cmp ecx, eax
jae 0x1015d19a
lea eax, [ebp - 1]
add eax, esi
cmp edi, eax
ja 0x1015d0b6
cmp ecx, esi
jae 0x1015d19a
cmp ebp, 0x40
jb 0x1015d17b
mov ebx, esi
mov ecx, ebp
sub ebx, edi
and ecx, 0x3f
mov dword [esp + 0x18], ebx
mov eax, ebp
mov ebp, dword [esp + 0x18]
lea ebx, [esp + 0x48]
sub ebx, edi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x30], ebx
sub eax, ecx
lea ebx, [esp + 0x58]
mov dword [esp + 0x3c], eax
sub ebx, edi
lea ecx, [esi + 0x30]
mov esi, dword [esp + 0x30]
lea eax, [edi + 0x10]
mov dword [esp + 0x34], ebx
lea ebx, [esp + 0x68]
sub ebx, edi
mov edi, dword [esp + 0x34]
mov dword [esp + 0x38], ebx
nop dword [eax + eax]
movups xmm0, xmmword [ecx - 0x30]
mov ebx, dword [esp + 0x38]
lea ecx, [ecx + 0x40]
movups xmm1, xmmword [esp + edx + 0x48]
add edx, 0x40
lea eax, [eax + 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x50], xmm1
movups xmm0, xmmword [eax + ebp - 0x40]
movups xmm1, xmmword [esi + eax - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [ecx - 0x50]
movups xmm1, xmmword [edi + eax - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
movups xmm1, xmmword [ebx + eax - 0x40]
mov ebx, dword [esp + 0x24]
movups xmm0, xmmword [ecx - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
cmp edx, dword [esp + 0x3c]
jb 0x1015d110
cmp dword [esp + 0x40], 8
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
mov ebp, dword [esp + 0x6c]
jb 0x1015d19a
mov eax, ebp
and eax, 0xfffffff8
movq xmm1, qword [esi + edx]
movq xmm0, qword [esp + edx + 0x48]
xorps xmm1, xmm0
movq qword [edi + edx], xmm1
add edx, 8
cmp edx, eax
jb 0x1015d180
lea eax, [ebx + 0x18]
mov dword [esp + 0x18], eax
cmp edx, ebp
jae 0x1015d1c8
lea eax, [esp + 0x48]
sub esi, eax
sub edi, eax
nop dword [eax]
lea ecx, [esp + 0x48]
add ecx, edx
inc edx
mov al, byte [ecx + esi]
xor al, byte [ecx]
mov byte [ecx + edi], al
cmp edx, ebp
jb 0x1015d1b0
lea esi, [ebx + 0x18]
jmp 0x1015d1cc
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x44]
lea edi, [ebx + 0x18]
mov ebp, dword [esp + 0x14]
cmp ecx, 0x10
jae 0x1015d1f4
mov eax, 0x10
sub eax, ecx
push eax
lea eax, [ecx + ebx]
push 0
push eax
call fcn.101ab280
add esp, 0xc
mov esi, edi
push dword [esp + 0x20]
lea eax, [esp + 0x4c]
push eax
push ebx
call dword [esp + 0x28]
mov eax, dword [esp + 0x54]
add esp, 0xc
xor dword [ebp], eax
mov eax, dword [esp + 0x4c]
xor dword [ebp + 4], eax
mov eax, dword [esp + 0x50]
xor dword [esi], eax
mov eax, dword [esp + 0x54]
xor dword [esi + 4], eax
mov al, byte [esp + 0x13]
mov ecx, dword [esp + 0x58]
pop edi
pop esi
mov byte [ebx], al
xor eax, eax
pop ebp
pop ebx
xor ecx, esp
call fcn.101a966e
add esp, 0x4c
ret