Function at 0x1015cd79
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xf0
mov eax, dword [0x10305014]
xor eax, ebp
mov dword [esp + 0xe8], eax
pcmpeqd xmm0, xmm0
lea eax, [esp + 0x70]
movdqa xmmword [eax + 0x60], xmm0
movdqa xmmword [eax + 0x50], xmm0
movdqa xmmword [eax + 0x40], xmm0
movdqa xmmword [eax + 0x30], xmm0
movdqa xmmword [eax + 0x20], xmm0
movdqa xmmword [eax + 0x10], xmm0
movdqa xmmword [eax], xmm0
mov dword [eax + 0x70], 0xffffffff
xor esi, esi
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], 5
call fcn.1015e61c
lea edi, [esp + 0xe4]
mov dword [edi], esi
mov dword [esp + 0xc], esi
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], 0x10307764
call dword [sym.imp.KERNEL32.dll_InitOnceBeginInitialize]
sub esp, 0x10
cmp dword [edi], esi
je 0x1015d0ee
xorpd xmm1, xmm1
mov eax, esi
mov ecx, 0xaaaaaaab
mul ecx
shr edx, 1
mov dword [esp + 0x20], edx
lea eax, [edx + edx*2]
mov ecx, esi
sub ecx, eax
mov dword [esp + 0x24], ecx
movapd xmm3, xmm1
movsd xmm0, qword [0x10299160]
addsd xmm3, xmm0
movsd xmm2, qword [0x102a8d48]
mulsd xmm3, xmm2
divsd xmm3, qword [0x102a8d50]
movsd qword [esp + 0x40], xmm3
lea eax, [esi - 6]
xorps xmm4, xmm4
cvtsi2sd xmm4, eax
lea edi, [esi + 2]
mov eax, esi
sub eax, 0x12
addsd xmm4, xmm0
mulsd xmm4, xmm2
movsd xmm3, qword [0x102a8d58]
divsd xmm4, xmm3
movsd qword [esp + 0x38], xmm4
xorps xmm4, xmm4
cvtsi2sd xmm4, eax
addsd xmm4, xmm0
mulsd xmm4, xmm2
divsd xmm4, xmm3
movsd qword [esp + 0x30], xmm4
lea eax, [esi + esi + 0x13]
xorps xmm0, xmm0
cvtsi2sd xmm0, eax
mulsd xmm0, xmm2
divsd xmm0, qword [0x102a8d60]
movsd qword [esp + 0x28], xmm0
cmovb edi, esi
shl edi, 2
xor ebx, ebx
movsd qword [esp + 0x10], xmm1
cmp ebx, 2
jne 0x1015ced2
cmp dword [esp + 0x24], 1
jne 0x1015d019
movsd xmm0, qword [esp + 0x40]
movsd qword [esp], xmm0
call fcn.10146050
fstp qword [esp + 0x68]
movsd xmm1, qword [esp + 0x68]
cmp ebx, 3
je 0x1015cf7b
cmp ebx, 1
je 0x1015cf90
movsd xmm0, qword [esp + 0x28]
movsd qword [esp], xmm0
movsd qword [esp + 0x18], xmm1
call fcn.10143d10
movsd xmm2, qword [esp + 0x18]
fstp qword [esp + 0x48]
movsd xmm0, qword [0x102a8d68]
divsd xmm0, qword [esp + 0x48]
mulsd xmm2, xmm0
cmp ebx, 2
jne 0x1015cfe2
mulsd xmm2, qword [0x102a8d70]
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm2
mov ecx, dword [esp + 0x20]
movss dword [ecx*4 + 0x103be620], xmm0
mulsd xmm2, qword [0x102a8d78]
addsd xmm2, qword [0x10299160]
cvttsd2si eax, xmm2
mov dword [ecx*4 + 0x103bd520], eax
movsd xmm1, qword [esp + 0x10]
jmp 0x1015d019
cmp esi, 6
jb 0x1015cfad
cmp esi, 0xb
jbe 0x1015d02b
cmp esi, 0x11
ja 0x1015cfb0
jmp 0x1015cfa3
cmp esi, 0x1d
ja 0x1015cfad
cmp esi, 0x18
jae 0x1015d04a
cmp esi, 0x12
jb 0x1015cfb0
movsd xmm1, qword [0x102991d0]
jmp 0x1015cfb0
xorps xmm1, xmm1
movsd qword [esp + 0x18], xmm1
movsd xmm0, qword [esp + 0x28]
movsd qword [esp], xmm0
call fcn.10143d10
movsd xmm2, qword [esp + 0x18]
fstp qword [esp + 0x50]
movsd xmm0, qword [0x102a8d68]
divsd xmm0, qword [esp + 0x50]
mulsd xmm2, xmm0
movsd xmm1, qword [esp + 0x10]
mulsd xmm2, qword [0x102a8d70]
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm2
movss dword [edi + 0x103be4e0], xmm0
mulsd xmm2, qword [0x102a8d78]
addsd xmm2, qword [0x10299160]
cvttsd2si eax, xmm2
mov dword [edi + 0x103bd3e0], eax
inc ebx
add edi, 0xa0
cmp ebx, 4
jne 0x1015cec2
jmp 0x1015d069
movsd xmm0, qword [esp + 0x38]
movsd qword [esp], xmm0
call fcn.10146050
fstp qword [esp + 0x60]
movsd xmm1, qword [esp + 0x60]
jmp 0x1015cfb0
movsd xmm0, qword [esp + 0x30]
movsd qword [esp], xmm0
call fcn.10146050
fstp qword [esp + 0x58]
movsd xmm1, qword [esp + 0x58]
jmp 0x1015cfb0
addsd xmm1, qword [0x102991d0]
inc esi
cmp esi, 0x24
jne 0x1015ce0e
xor eax, eax
mov ecx, 0x284
movapd xmm0, xmmword [0x102a8d80]
mov edx, 0xfffffffe
movss xmm1, dword [ecx + edx*4 + 0x103be264]
movss dword [ecx + edx*4 + 0x103be4e4], xmm1
movss xmm1, dword [ecx + edx*4 + 0x103be268]
xorpd xmm1, xmm0
mov esi, dword [ecx + edx*4 + 0x103bd164]
mov dword [ecx + edx*4 + 0x103bd3e4], esi
xor esi, esi
sub esi, dword [ecx + edx*4 + 0x103bd168]
movss dword [ecx + edx*4 + 0x103be4e8], xmm1
mov dword [ecx + edx*4 + 0x103bd3e8], esi
add edx, 2
cmp edx, 0x26
jb 0x1015d08f
inc eax
add ecx, 0xa0
cmp eax, 4
jne 0x1015d08a
call fcn.1024d8d7
xor eax, eax
mov dword [esp + 8], eax
mov dword [esp + 4], eax
mov dword [esp], 0x10307764
call dword [sym.imp.KERNEL32.dll_InitOnceComplete]
sub esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [ecx], 0x101663f0
mov dword [ecx + 4], fcn.10125b90
mov eax, dword [esp + 0xe0]
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], 0x10120060
mov dword [ecx + 0x10], 0x101668d0
mov dword [ecx + 0x14], 0x10126680
mov dword [esp], ecx
call fcn.1024d962
mov ecx, dword [esp + 0xe8]
xor ecx, ebp
call fcn.10130483
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret