Function at 0x10015a8d
Capabilities:
Encode data using xor

Disassembly:
push 0x5c
mov eax, 0x1003edb7
call fcn.1003d701
mov esi, ecx
xor ebx, ebx
push 0x3c
pop edi
cmp byte [esi + 0x20], bl
je 0x10015c4c
mov ecx, dword [esi + 0x24]
test ecx, ecx
jle 0x10015ab6
dec ecx
mov dword [esi + 0x24], ecx
test ecx, ecx
js 0x10015c41
mov eax, ecx
mov ebx, 0xe10
cdq
idiv ebx
mov eax, edx
cdq
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 0x10015b49
xor ebx, ebx
cmp edx, eax
mov eax, ebx
jae 0x10015b25
mov cl, 0x2c
mov dword [ebp - 0x34], 0x48091c2c
mov dword [ebp - 0x30], 0x48091c16
mov byte [ebp - 0x2c], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 7
jae 0x10015b20
mov cl, byte [ebp - 0x34]
jmp 0x10015b11
mov byte [ebp - 0x2c], bl
jmp 0x10015b9b
mov cl, 0x53
mov dword [ebp - 0x34], 0x37766353
mov dword [ebp - 0x30], 0x377669
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015b44
mov cl, byte [ebp - 0x34]
jmp 0x10015b35
mov byte [ebp - 0x2d], bl
jmp 0x10015b9b
xor ebx, ebx
cmp edx, eax
jae 0x10015b75
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 0x10015b44
mov cl, byte [ebp - 0x34]
jmp 0x10015b66
mov cl, 0x4b
mov dword [ebp - 0x34], 0x712f6e4b
mov word [ebp - 0x30], 0x2f6e
mov eax, ebx
mov byte [ebp - 0x2e], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x10015b98
mov cl, byte [ebp - 0x34]
jmp 0x10015b89
mov byte [ebp - 0x2e], bl
sub esp, 0x18
lea eax, [ebp - 0x33]
mov ecx, esp
push eax
call fcn.10003da4
lea eax, [ebp - 0x50]
push eax
call fcn.100039ed
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.10008b2b
lea ecx, [ebp - 0x50]
call fcn.10003ba2
cmp dword [ebp - 0x14], 0xf
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [0x1004d110]
mov ecx, ebx
cmova eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x436d3b45
mov byte [ebp - 0x3c], bl
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x13
jb 0x10015be9
sub esp, 0x18
mov byte [ebp - 0x3c], bl
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10003da4
lea eax, [ebp - 0x68]
push eax
call fcn.100039ed
add esp, 0x20
mov byte [ebp - 4], 1
mov edx, eax
mov ecx, dword [esi + 8]
call fcn.1000d180
lea ecx, [ebp - 0x68]
call fcn.10003ba2
or dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x14]
cmp edx, 0xf
jbe 0x10015c3e
mov ecx, dword [ebp - 0x28]
inc edx
call fcn.10003b75
push 0x3c
pop edi
cmp dword [esi + 0x24], ebx
jg 0x10015c4c
mov byte [esi + 0x20], bl
mov dword [esi + 0x24], ebx
cmp byte [esi + 0x21], 0
je 0x10015e10
movzx eax, word [esi + 0x28]
mov ecx, eax
test ax, ax
jle 0x10015c69
dec eax
mov word [esi + 0x28], ax
movzx ecx, ax
test cx, cx
js 0x10015e01
movsx ecx, cx
mov ebx, 0xe10
mov eax, ecx
cdq
idiv ebx
mov eax, edx
cdq
idiv edi
movzx ebx, ax
mov eax, ecx
cdq
idiv edi
xor eax, eax
lea edi, [ebp - 0x28]
stosd dword es:[edi], eax
movzx edx, 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 0x10015ce9
cmp dx, di
jae 0x10015ce9
push edx
push ebx
push 0x6d
pop ecx
xor ebx, ebx
mov byte [ebp - 0x34], cl
mov dword [ebp - 0x33], 0x5709485d
mov eax, ebx
mov dword [ebp - 0x2f], 0x9485d
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 7
jae 0x10015ce4
mov cl, byte [ebp - 0x34]
jmp 0x10015cd5
mov byte [ebp - 0x2c], bl
jmp 0x10015d68
mov eax, edx
mov ecx, ebx
push eax
push ecx
cmp bx, di
jae 0x10015d1c
xor ebx, ebx
mov dword [ebp - 0x34], 0x34756050
mov cl, 0x50
mov dword [ebp - 0x30], 0x34756a
mov eax, ebx
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015d17
mov cl, byte [ebp - 0x34]
jmp 0x10015d08
mov byte [ebp - 0x2d], bl
jmp 0x10015d68
xor ebx, ebx
mov eax, ebx
cmp dx, di
jae 0x10015d44
mov cl, 0x15
mov dword [ebp - 0x34], 0x2f713015
mov dword [ebp - 0x30], 0x713025
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015d17
mov cl, byte [ebp - 0x34]
jmp 0x10015d35
mov cl, 0x72
mov dword [ebp - 0x34], 0x48165772
mov word [ebp - 0x30], 0x1657
mov byte [ebp - 0x2e], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x10015d65
mov cl, byte [ebp - 0x34]
jmp 0x10015d56
mov byte [ebp - 0x2e], bl
sub esp, 0x18
lea eax, [ebp - 0x33]
mov ecx, esp
push eax
call fcn.10003da4
lea eax, [ebp - 0x68]
push eax
call fcn.100039ed
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.10008b2b
lea ecx, [ebp - 0x68]
call fcn.10003ba2
cmp dword [ebp - 0x14], 0xf
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [0x1004ce90]
mov ecx, ebx
cmova eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x60364833
mov word [ebp - 0x3c], 0x4e
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x14
jb 0x10015db9
sub esp, 0x18
mov byte [ebp - 0x3b], bl
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10003da4
lea eax, [ebp - 0x68]
push eax
call fcn.100039ed
add esp, 0x20
mov byte [ebp - 4], 3
mov edx, eax
mov ecx, dword [esi + 0xc]
call fcn.1000d180
lea ecx, [ebp - 0x68]
call fcn.10003ba2
lea ecx, [ebp - 0x28]
call fcn.10003ba2
cmp word [esi + 0x28], bx
jg 0x10015e10
xor eax, eax
mov byte [esi + 0x21], bl
mov word [esi + 0x28], ax
call fcn.1003d6bf
ret