Function at 0x10015a44
Capabilities:
Encode data using xor

Disassembly:
push 0x5c
mov eax, 0x1003ee77
call fcn.1003d7b1
mov esi, ecx
xor ebx, ebx
push 0x3c
pop edi
cmp byte [esi + 0x20], bl
je 0x10015c0f
mov ecx, dword [esi + 0x24]
test ecx, ecx
jle 0x10015a6d
dec ecx
mov dword [esi + 0x24], ecx
test ecx, ecx
js 0x10015c04
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 0x10015b02
xor ebx, ebx
mov eax, ebx
cmp edx, 0xa
jae 0x10015ade
mov cl, 0x27
mov dword [ebp - 0x34], 0x43021727
mov dword [ebp - 0x30], 0x4302171d
mov byte [ebp - 0x2c], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 7
jae 0x10015ad6
mov cl, byte [ebp - 0x34]
jmp 0x10015ac7
mov byte [ebp - 0x2c], bl
jmp 0x10015b5e
mov cl, 0x14
mov dword [ebp - 0x34], 0x70312414
mov dword [ebp - 0x30], 0x70312e
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015afd
mov cl, byte [ebp - 0x34]
jmp 0x10015aee
mov byte [ebp - 0x2d], bl
jmp 0x10015b5e
xor ebx, ebx
cmp edx, 0xa
jae 0x10015b38
push 0x19
pop eax
mov byte [ebp - 0x32], al
mov cl, 0x7d
mov byte [ebp - 0x2e], al
mov eax, ebx
mov word [ebp - 0x34], 0x587d
mov word [ebp - 0x31], 0x4d47
mov byte [ebp - 0x2f], 0x58
mov byte [ebp - 0x2d], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015afd
mov cl, byte [ebp - 0x34]
jmp 0x10015b29
mov cl, 0x2a
mov dword [ebp - 0x34], 0x104e0f2a
mov word [ebp - 0x30], 0x4e0f
mov eax, ebx
mov byte [ebp - 0x2e], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x10015b5b
mov cl, byte [ebp - 0x34]
jmp 0x10015b4c
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 [0x1004d670]
mov ecx, ebx
cmova eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x17396f11
mov byte [ebp - 0x3c], bl
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x13
jb 0x10015bac
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 0x10015c01
mov ecx, dword [ebp - 0x28]
inc edx
call fcn.10003b6a
push 0x3c
pop edi
cmp dword [esi + 0x24], ebx
jg 0x10015c0f
mov byte [esi + 0x20], bl
mov dword [esi + 0x24], ebx
cmp byte [esi + 0x21], 0
je 0x10015de5
movzx eax, word [esi + 0x28]
mov ecx, eax
test ax, ax
jle 0x10015c2c
dec eax
mov word [esi + 0x28], ax
movzx ecx, ax
test cx, cx
js 0x10015dd6
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 0x10015caf
cmp dx, di
jae 0x10015caf
push edx
push ebx
push 0x4d
pop ecx
xor ebx, ebx
mov byte [ebp - 0x34], cl
mov dword [ebp - 0x33], 0x7729687d
mov eax, ebx
mov dword [ebp - 0x2f], 0x29687d
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 7
jae 0x10015ca7
mov cl, byte [ebp - 0x34]
jmp 0x10015c98
mov byte [ebp - 0x2c], bl
jmp 0x10015d3d
mov eax, edx
mov ecx, ebx
push eax
push ecx
cmp bx, di
jae 0x10015cf1
push 0x19
pop ecx
push 0x3c
pop eax
xor ebx, ebx
mov byte [ebp - 0x32], al
mov byte [ebp - 0x2f], al
mov eax, ebx
mov byte [ebp - 0x34], cl
mov byte [ebp - 0x33], 0x29
mov word [ebp - 0x31], 0x237d
mov word [ebp - 0x2e], 0x7d
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015cec
mov cl, byte [ebp - 0x34]
jmp 0x10015cdd
mov byte [ebp - 0x2d], bl
jmp 0x10015d3d
xor ebx, ebx
mov eax, ebx
cmp dx, di
jae 0x10015d19
mov cl, 0x4b
mov dword [ebp - 0x34], 0x712f6e4b
mov dword [ebp - 0x30], 0x2f6e7b
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015cec
mov cl, byte [ebp - 0x34]
jmp 0x10015d0a
mov cl, 0x65
mov dword [ebp - 0x34], 0x5f014065
mov word [ebp - 0x30], 0x140
mov byte [ebp - 0x2e], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x10015d3a
mov cl, byte [ebp - 0x34]
jmp 0x10015d2b
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 [0x1004d290]
mov ecx, ebx
cmova eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x2542a51
mov word [ebp - 0x3c], 0x2c
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x14
jb 0x10015d8e
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 0x10015de5
xor eax, eax
mov byte [esi + 0x21], bl
mov word [esi + 0x28], ax
call fcn.1003d76f
ret