Function at 0x10015162
Capabilities:
Encode data using xor

Disassembly:
push 0x5c
mov eax, 0x1003edb7
call fcn.1003d701
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.1003d180
divss xmm0, dword [0x1004c754]
comiss xmm0, dword [0x1004c704]
jb 0x1001553d
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 0x10015363
mov ecx, dword [esi + 0x24]
test ecx, ecx
jle 0x100151c4
dec ecx
mov dword [esi + 0x24], ecx
test ecx, ecx
js 0x10015358
mov eax, ecx
mov ebx, 0xe10
cdq
idiv ebx
push 0xf
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
pop edi
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], edi
mov byte [ebp - 0x28], al
mov dword [ebp - 4], eax
push edx
push ebx
cmp ebx, 0xa
jae 0x10015258
xor ebx, ebx
mov eax, ebx
cmp edx, 0xa
jae 0x10015234
mov cl, 0x1d
mov dword [ebp - 0x34], 0x79382d1d
mov dword [ebp - 0x30], 0x79382d27
mov byte [ebp - 0x2c], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 7
jae 0x1001522c
mov cl, byte [ebp - 0x34]
jmp 0x1001521d
mov byte [ebp - 0x2c], bl
jmp 0x100152b4
mov cl, 0xd
mov dword [ebp - 0x34], 0x69283d0d
mov dword [ebp - 0x30], 0x692837
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015253
mov cl, byte [ebp - 0x34]
jmp 0x10015244
mov byte [ebp - 0x2d], bl
jmp 0x100152b4
xor ebx, ebx
cmp edx, 0xa
jae 0x1001528e
push 0x54
pop eax
mov cl, 0x71
mov byte [ebp - 0x33], al
mov byte [ebp - 0x2f], al
mov eax, ebx
mov byte [ebp - 0x34], cl
mov word [ebp - 0x32], 0x4b15
mov byte [ebp - 0x30], 0x41
mov word [ebp - 0x2e], 0x15
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015253
mov cl, byte [ebp - 0x34]
jmp 0x1001527f
mov cl, 2
mov dword [ebp - 0x34], 0x38662702
mov word [ebp - 0x30], 0x6627
mov eax, ebx
mov byte [ebp - 0x2e], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x100152b1
mov cl, byte [ebp - 0x34]
jmp 0x100152a2
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], edi
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [0x1004d6f0]
mov ecx, ebx
cmova eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x133d6b15
mov byte [ebp - 0x3c], bl
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x13
jb 0x10015301
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, edi
jbe 0x10015355
mov ecx, dword [ebp - 0x28]
inc edx
call fcn.10003b75
push 0x3c
pop edi
cmp dword [esi + 0x24], ebx
jg 0x10015363
mov byte [esi + 0x20], bl
mov dword [esi + 0x24], ebx
cmp byte [esi + 0x21], 0
je 0x1001553d
movzx eax, word [esi + 0x28]
mov ecx, eax
test ax, ax
jle 0x10015380
dec eax
mov word [esi + 0x28], ax
movzx ecx, ax
test cx, cx
js 0x1001552e
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 0x10015410
cmp cx, di
jae 0x10015410
push ecx
push ebx
push 0x3c
pop eax
xor ebx, ebx
mov byte [ebp - 0x32], al
mov byte [ebp - 0x2e], al
mov cl, 0x19
mov word [ebp - 0x34], 0x2919
mov eax, ebx
mov word [ebp - 0x31], 0x237d
mov byte [ebp - 0x2f], 0x29
mov word [ebp - 0x2d], 0x7d
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 7
jae 0x10015408
mov cl, byte [ebp - 0x34]
jmp 0x100153f9
mov byte [ebp - 0x2c], bl
jmp 0x10015495
mov eax, ecx
mov edx, ebx
push eax
push edx
cmp bx, di
jae 0x10015443
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 0x1001543e
mov cl, byte [ebp - 0x34]
jmp 0x1001542f
mov byte [ebp - 0x2d], bl
jmp 0x10015495
xor ebx, ebx
mov eax, ebx
cmp cx, di
jae 0x10015471
push 0x54
pop ecx
mov byte [ebp - 0x34], cl
mov dword [ebp - 0x33], 0x646e3071
mov word [ebp - 0x2f], 0x3071
mov byte [ebp - 0x2d], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x1001543e
mov cl, byte [ebp - 0x34]
jmp 0x10015462
mov cl, 0x29
mov dword [ebp - 0x34], 0x134d0c29
mov word [ebp - 0x30], 0x4d0c
mov byte [ebp - 0x2e], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x10015492
mov cl, byte [ebp - 0x34]
jmp 0x10015483
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 [0x1004cb00]
mov ecx, ebx
cmova eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x4e18661d
mov word [ebp - 0x3c], 0x60
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x14
jb 0x100154e6
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 0x1001553d
xor eax, eax
mov byte [esi + 0x21], bl
mov word [esi + 0x28], ax
call fcn.1003d6bf
ret