Function at 0x10015137
Capabilities:
Encode data using xor

Disassembly:
push 0x5c
mov eax, 0x1003ee77
call fcn.1003d7b1
mov esi, ecx
mov eax, dword [esi]
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount64]
mov dword [0x10057a20], eax
call edi
sub eax, dword [esi + 0x30]
mov ecx, eax
sbb edx, dword [esi + 0x34]
call fcn.1003d230
divss xmm0, dword [0x1004c754]
comiss xmm0, dword [0x1004c704]
jb 0x100154f4
call edi
xor ebx, ebx
mov dword [esi + 0x30], eax
push 0x3c
mov dword [esi + 0x34], edx
pop edi
cmp byte [esi + 0x20], bl
je 0x10015328
mov ecx, dword [esi + 0x24]
test ecx, ecx
jle 0x10015199
dec ecx
mov dword [esi + 0x24], ecx
test ecx, ecx
js 0x1001531d
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
mov dword [ebp - 4], eax
push edx
push ebx
cmp ebx, 0xa
jae 0x1001522b
xor ebx, ebx
mov eax, ebx
cmp edx, 0xa
jae 0x10015207
mov cl, 0x3e
mov dword [ebp - 0x34], 0x5a1b0e3e
mov dword [ebp - 0x30], 0x5a1b0e04
mov byte [ebp - 0x2c], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 7
jae 0x10015202
mov cl, byte [ebp - 0x34]
jmp 0x100151f3
mov byte [ebp - 0x2c], bl
jmp 0x10015277
mov cl, 0x13
mov dword [ebp - 0x34], 0x77362313
mov dword [ebp - 0x30], 0x773629
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015226
mov cl, byte [ebp - 0x34]
jmp 0x10015217
mov byte [ebp - 0x2d], bl
jmp 0x10015277
xor ebx, ebx
mov eax, ebx
cmp edx, 0xa
jae 0x10015253
mov cl, 0x45
mov dword [ebp - 0x34], 0x7f216045
mov dword [ebp - 0x30], 0x216075
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015226
mov cl, byte [ebp - 0x34]
jmp 0x10015244
mov cl, 0x6a
mov dword [ebp - 0x34], 0x500e4f6a
mov word [ebp - 0x30], 0xe4f
mov byte [ebp - 0x2e], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x10015274
mov cl, byte [ebp - 0x34]
jmp 0x10015265
mov byte [ebp - 0x2e], bl
sub esp, 0x18
lea eax, [ebp - 0x33]
mov ecx, esp
push eax
call fcn.10003d99
lea eax, [ebp - 0x50]
push eax
call fcn.100039e2
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.10008b15
lea ecx, [ebp - 0x50]
call fcn.10003b97
cmp dword [ebp - 0x14], 0xf
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [str._wPEJ_MJC]
mov ecx, ebx
cmova eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x7957017f
mov byte [ebp - 0x3c], bl
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x13
jb 0x100152c5
sub esp, 0x18
mov byte [ebp - 0x3c], bl
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10003d99
lea eax, [ebp - 0x68]
push eax
call fcn.100039e2
add esp, 0x20
mov byte [ebp - 4], 1
mov edx, eax
mov ecx, dword [esi + 8]
call fcn.1000d114
lea ecx, [ebp - 0x68]
call fcn.10003b97
or dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x14]
cmp edx, 0xf
jbe 0x1001531a
mov ecx, dword [ebp - 0x28]
inc edx
call fcn.10003b6a
push 0x3c
pop edi
cmp dword [esi + 0x24], ebx
jg 0x10015328
mov byte [esi + 0x20], bl
mov dword [esi + 0x24], ebx
cmp byte [esi + 0x21], 0
je 0x100154f4
movzx eax, word [esi + 0x28]
mov ecx, eax
test ax, ax
jle 0x10015345
dec eax
mov word [esi + 0x28], ax
movzx ecx, ax
test cx, cx
js 0x100154e5
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 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 0x100153c7
cmp cx, di
jae 0x100153c7
push ecx
push ebx
xor ebx, ebx
mov dword [ebp - 0x34], 0x16574272
mov cl, 0x72
mov dword [ebp - 0x30], 0x16574248
mov byte [ebp - 0x2c], bl
mov eax, ebx
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 7
jae 0x100153bf
mov cl, byte [ebp - 0x34]
jmp 0x100153b0
mov byte [ebp - 0x2c], bl
jmp 0x1001544c
mov eax, ecx
mov edx, ebx
push eax
push edx
cmp bx, di
jae 0x100153fa
xor ebx, ebx
mov dword [ebp - 0x34], 0x70312414
mov cl, 0x14
mov dword [ebp - 0x30], 0x70312e
mov eax, ebx
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x100153f5
mov cl, byte [ebp - 0x34]
jmp 0x100153e6
mov byte [ebp - 0x2d], bl
jmp 0x1001544c
xor ebx, ebx
mov eax, ebx
cmp cx, di
jae 0x10015428
push 0x79
pop ecx
mov byte [ebp - 0x34], cl
mov dword [ebp - 0x33], 0x49431d5c
mov word [ebp - 0x2f], 0x1d5c
mov byte [ebp - 0x2d], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x100153f5
mov cl, byte [ebp - 0x34]
jmp 0x10015419
mov cl, 0x63
mov dword [ebp - 0x34], 0x59074663
mov word [ebp - 0x30], 0x746
mov byte [ebp - 0x2e], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x10015449
mov cl, byte [ebp - 0x34]
jmp 0x1001543a
mov byte [ebp - 0x2e], bl
sub esp, 0x18
lea eax, [ebp - 0x33]
mov ecx, esp
push eax
call fcn.10003d99
lea eax, [ebp - 0x68]
push eax
call fcn.100039e2
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.10008b15
lea ecx, [ebp - 0x68]
call fcn.10003b97
cmp dword [ebp - 0x14], 0xf
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [0x1004cea0]
mov ecx, ebx
cmova eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x683e403b
mov word [ebp - 0x3c], 0x46
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x14
jb 0x1001549d
sub esp, 0x18
mov byte [ebp - 0x3b], bl
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10003d99
lea eax, [ebp - 0x68]
push eax
call fcn.100039e2
add esp, 0x20
mov byte [ebp - 4], 3
mov edx, eax
mov ecx, dword [esi + 0xc]
call fcn.1000d114
lea ecx, [ebp - 0x68]
call fcn.10003b97
lea ecx, [ebp - 0x28]
call fcn.10003b97
cmp word [esi + 0x28], bx
jg 0x100154f4
xor eax, eax
mov byte [esi + 0x21], bl
mov word [esi + 0x28], ax
call fcn.1003d76f
ret