Function at 0x100159d3
Capabilities:
Encode data using xor

Disassembly:
push 0x5c
mov eax, 0x1003eaca
call fcn.1003d3d1
mov esi, ecx
xor ebx, ebx
push 0x3c
pop edi
cmp byte [esi + 0x20], bl
je 0x10015b8b
mov ecx, dword [esi + 0x24]
test ecx, ecx
jle 0x100159fc
dec ecx
mov dword [esi + 0x24], ecx
test ecx, ecx
js 0x10015b80
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 0x10015a8e
xor ebx, ebx
mov eax, ebx
cmp edx, 0xa
jae 0x10015a6a
mov cl, 0x6f
mov dword [ebp - 0x34], 0xb4a5f6f
mov dword [ebp - 0x30], 0xb4a5f55
mov byte [ebp - 0x2c], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 7
jae 0x10015a65
mov cl, byte [ebp - 0x34]
jmp 0x10015a56
mov byte [ebp - 0x2c], bl
jmp 0x10015ada
mov cl, 8
mov dword [ebp - 0x34], 0x6c2d3808
mov dword [ebp - 0x30], 0x6c2d32
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015a89
mov cl, byte [ebp - 0x34]
jmp 0x10015a7a
mov byte [ebp - 0x2d], bl
jmp 0x10015ada
xor ebx, ebx
mov eax, ebx
cmp edx, 0xa
jae 0x10015ab6
mov cl, 0x5d
mov dword [ebp - 0x34], 0x6739785d
mov dword [ebp - 0x30], 0x39786d
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015a89
mov cl, byte [ebp - 0x34]
jmp 0x10015aa7
mov cl, 0x5f
mov dword [ebp - 0x34], 0x653b7a5f
mov word [ebp - 0x30], 0x3b7a
mov byte [ebp - 0x2e], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x10015ad7
mov cl, byte [ebp - 0x34]
jmp 0x10015ac8
mov byte [ebp - 0x2e], bl
sub esp, 0x18
lea eax, [ebp - 0x33]
mov ecx, esp
push eax
call fcn.10003da0
lea eax, [ebp - 0x50]
push eax
call fcn.100039e5
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.10008af4
lea ecx, [ebp - 0x50]
call fcn.10003b9e
cmp dword [ebp - 0x14], 0xf
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [0x1004c510]
mov ecx, ebx
cmova eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x250b5d23
mov byte [ebp - 0x3c], bl
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x13
jb 0x10015b28
sub esp, 0x18
mov byte [ebp - 0x3c], bl
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10003da0
lea eax, [ebp - 0x68]
push eax
call fcn.100039e5
add esp, 0x20
mov byte [ebp - 4], 1
mov edx, eax
mov ecx, dword [esi + 8]
call fcn.1000d0e0
lea ecx, [ebp - 0x68]
call fcn.10003b9e
or dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x14]
cmp edx, 0xf
jbe 0x10015b7d
mov ecx, dword [ebp - 0x28]
inc edx
call fcn.10003b71
push 0x3c
pop edi
cmp dword [esi + 0x24], ebx
jg 0x10015b8b
mov byte [esi + 0x20], bl
mov dword [esi + 0x24], ebx
cmp byte [esi + 0x21], 0
je 0x10015d4e
movzx eax, word [esi + 0x28]
mov ecx, eax
test ax, ax
jle 0x10015ba8
dec eax
mov word [esi + 0x28], ax
movzx ecx, ax
test cx, cx
js 0x10015d3f
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 0x10015c27
cmp cx, di
jae 0x10015c27
push ecx
push ebx
xor ebx, ebx
mov dword [ebp - 0x34], 0x57160333
mov cl, 0x33
mov dword [ebp - 0x30], 0x57160309
mov byte [ebp - 0x2c], bl
mov eax, ebx
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 7
jae 0x10015c22
mov cl, byte [ebp - 0x34]
jmp 0x10015c13
mov byte [ebp - 0x2c], bl
jmp 0x10015ca6
mov eax, ecx
mov edx, ebx
push eax
push edx
cmp bx, di
jae 0x10015c5a
xor ebx, ebx
mov dword [ebp - 0x34], 0x29687d4d
mov cl, 0x4d
mov dword [ebp - 0x30], 0x296877
mov eax, ebx
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015c55
mov cl, byte [ebp - 0x34]
jmp 0x10015c46
mov byte [ebp - 0x2d], bl
jmp 0x10015ca6
xor ebx, ebx
mov eax, ebx
cmp cx, di
jae 0x10015c82
mov cl, 0x7d
mov dword [ebp - 0x34], 0x4719587d
mov dword [ebp - 0x30], 0x19584d
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10015c55
mov cl, byte [ebp - 0x34]
jmp 0x10015c73
mov cl, 0x53
mov dword [ebp - 0x34], 0x69377653
mov word [ebp - 0x30], 0x3776
mov byte [ebp - 0x2e], bl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x10015ca3
mov cl, byte [ebp - 0x34]
jmp 0x10015c94
mov byte [ebp - 0x2e], bl
sub esp, 0x18
lea eax, [ebp - 0x33]
mov ecx, esp
push eax
call fcn.10003da0
lea eax, [ebp - 0x68]
push eax
call fcn.100039e5
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.10008af4
lea ecx, [ebp - 0x68]
call fcn.10003b9e
cmp dword [ebp - 0x14], 0xf
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [0x1004c920]
mov ecx, ebx
cmova eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x34621c67
mov word [ebp - 0x3c], 0x1a
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x14
jb 0x10015cf7
sub esp, 0x18
mov byte [ebp - 0x3b], bl
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10003da0
lea eax, [ebp - 0x68]
push eax
call fcn.100039e5
add esp, 0x20
mov byte [ebp - 4], 3
mov edx, eax
mov ecx, dword [esi + 0xc]
call fcn.1000d0e0
lea ecx, [ebp - 0x68]
call fcn.10003b9e
lea ecx, [ebp - 0x28]
call fcn.10003b9e
cmp word [esi + 0x28], bx
jg 0x10015d4e
xor eax, eax
mov byte [esi + 0x21], bl
mov word [esi + 0x28], ax
call fcn.1003d38f
ret