Function at 0x10015aad
Capabilities:
Encode data using xor

Disassembly:
push 0x5c
mov eax, 0x1003ee97
call fcn.1003d7e1
mov esi, ecx
xor ebx, ebx
mov edi, 0xe10
cmp byte [esi + 0x20], bl
je 0x10015c7b
mov ecx, dword [esi + 0x24]
test ecx, ecx
jle 0x10015ad8
dec ecx
mov dword [esi + 0x24], ecx
test ecx, ecx
js 0x10015c70
mov eax, ecx
cdq
idiv edi
push 0x3c
mov eax, edx
cdq
pop edi
idiv edi
mov ebx, eax
mov eax, ecx
cdq
idiv edi
xor eax, eax
lea edi, [ebp - 0x28]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
xor eax, eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], al
push 0xa
mov dword [ebp - 4], eax
pop eax
push edx
push ebx
cmp ebx, eax
jae 0x10015b76
xor ebx, ebx
cmp edx, eax
jae 0x10015b48
mov cl, 0x74
mov dword [ebp - 0x34], 0x10514474
mov dword [ebp - 0x30], 0x1051444e
mov eax, ebx
mov byte [ebp - 0x2c], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 7
jae 0x10015b40
mov cl, byte [ebp - 0x34]
jmp 0x10015b31
mov byte [ebp - 0x2c], bl
jmp 0x10015bc8
push 0x3c
pop eax
mov byte [ebp - 0x30], al
mov cl, 6
mov dword [ebp - 0x34], 0x62233606
mov eax, ebx
mov word [ebp - 0x2f], 0x6223
mov byte [ebp - 0x2d], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015b71
mov cl, byte [ebp - 0x34]
jmp 0x10015b62
mov byte [ebp - 0x2d], bl
jmp 0x10015bc8
xor ebx, ebx
cmp edx, eax
jae 0x10015ba2
mov byte [ebp - 0x30], al
mov cl, 0x3a
mov dword [ebp - 0x34], 0x5e1f3a
mov eax, ebx
mov word [ebp - 0x2f], 0x5e1f
mov byte [ebp - 0x2d], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015b71
mov cl, byte [ebp - 0x34]
jmp 0x10015b93
mov cl, 0x42
mov dword [ebp - 0x34], 0x78266742
mov word [ebp - 0x30], 0x2667
mov eax, ebx
mov byte [ebp - 0x2e], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x10015bc5
mov cl, byte [ebp - 0x34]
jmp 0x10015bb6
mov byte [ebp - 0x2e], bl
sub esp, 0x18
lea eax, [ebp - 0x33]
mov ecx, esp
push eax
call fcn.10003d9a
lea eax, [ebp - 0x50]
push eax
call fcn.100039e3
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.10008b15
lea ecx, [ebp - 0x50]
call fcn.10003b98
cmp dword [ebp - 0x14], 0xf
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [0x1004d580]
mov ecx, ebx
cmova eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x1e306618
mov byte [ebp - 0x3c], bl
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x13
jb 0x10015c16
sub esp, 0x18
mov byte [ebp - 0x3c], bl
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10003d9a
lea eax, [ebp - 0x68]
push eax
call fcn.100039e3
add esp, 0x20
mov byte [ebp - 4], 1
mov edx, eax
mov ecx, dword [esi + 8]
call fcn.1000d186
lea ecx, [ebp - 0x68]
call fcn.10003b98
or dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x14]
cmp edx, 0xf
jbe 0x10015c6b
mov ecx, dword [ebp - 0x28]
inc edx
call fcn.10003b6b
mov edi, 0xe10
cmp dword [esi + 0x24], ebx
jg 0x10015c7b
mov byte [esi + 0x20], bl
mov dword [esi + 0x24], ebx
cmp byte [esi + 0x21], 0
je 0x10015e3c
movzx eax, word [esi + 0x28]
mov ecx, eax
test ax, ax
jle 0x10015c98
dec eax
mov word [esi + 0x28], ax
movzx ecx, ax
test cx, cx
js 0x10015e2d
movsx ecx, cx
mov eax, ecx
cdq
idiv edi
push 0x3c
mov eax, edx
cdq
pop edi
idiv edi
movzx ebx, ax
mov eax, ecx
cdq
idiv edi
xor eax, eax
lea edi, [ebp - 0x28]
stosd dword es:[edi], eax
movzx ecx, dx
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
xor eax, eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], al
push 0xa
pop edi
mov dword [ebp - 4], 2
cmp bx, di
jae 0x10015d15
cmp cx, di
jae 0x10015d15
push ecx
push ebx
xor ebx, ebx
mov dword [ebp - 0x34], 0x56170232
mov cl, 0x32
mov dword [ebp - 0x30], 0x56170208
mov byte [ebp - 0x2c], bl
mov eax, ebx
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 7
jae 0x10015d10
mov cl, byte [ebp - 0x34]
jmp 0x10015d01
mov byte [ebp - 0x2c], bl
jmp 0x10015d94
mov eax, ecx
mov edx, ebx
push eax
push edx
cmp bx, di
jae 0x10015d48
xor ebx, ebx
mov dword [ebp - 0x34], 0x75342111
mov cl, 0x11
mov dword [ebp - 0x30], 0x75342b
mov eax, ebx
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015d43
mov cl, byte [ebp - 0x34]
jmp 0x10015d34
mov byte [ebp - 0x2d], bl
jmp 0x10015d94
xor ebx, ebx
mov eax, ebx
cmp cx, di
jae 0x10015d70
mov cl, 0x5b
mov dword [ebp - 0x34], 0x613f7e5b
mov dword [ebp - 0x30], 0x3f7e6b
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015d43
mov cl, byte [ebp - 0x34]
jmp 0x10015d61
mov cl, 0x4a
mov dword [ebp - 0x34], 0x702e6f4a
mov word [ebp - 0x30], 0x2e6f
mov byte [ebp - 0x2e], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x10015d91
mov cl, byte [ebp - 0x34]
jmp 0x10015d82
mov byte [ebp - 0x2e], bl
sub esp, 0x18
lea eax, [ebp - 0x33]
mov ecx, esp
push eax
call fcn.10003d9a
lea eax, [ebp - 0x68]
push eax
call fcn.100039e3
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.10008b15
lea ecx, [ebp - 0x68]
call fcn.10003b98
cmp dword [ebp - 0x14], 0xf
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [0x1004cf50]
mov ecx, ebx
cmova eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x7a2c5229
mov word [ebp - 0x3c], 0x54
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x14
jb 0x10015de5
sub esp, 0x18
mov byte [ebp - 0x3b], bl
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10003d9a
lea eax, [ebp - 0x68]
push eax
call fcn.100039e3
add esp, 0x20
mov byte [ebp - 4], 3
mov edx, eax
mov ecx, dword [esi + 0xc]
call fcn.1000d186
lea ecx, [ebp - 0x68]
call fcn.10003b98
lea ecx, [ebp - 0x28]
call fcn.10003b98
cmp word [esi + 0x28], bx
jg 0x10015e3c
xor eax, eax
mov byte [esi + 0x21], bl
mov word [esi + 0x28], ax
call fcn.1003d79f
ret