Function at 0x100f3010
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1031dc95
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0xb8
mov eax, dword [0x1043900c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [0x1060b5e0]
mov edi, dword [ebx + 8]
mov dword [ebp - 0x8c], edi
mov ecx, dword [eax + 0xaa8]
test ecx, ecx
je 0x100f3a69
test edi, edi
je 0x100f3a69
cmp dword [eax + 0x6e34], 0
je 0x100f3a69
cmp byte [0x1060ec68], 0
je 0x100f3a69
cmp byte [ecx + 0x25f], 0
jne 0x100f3a69
call fcn.100be5c0
cmp byte [eax], 0
jne 0x100f3a69
mov ecx, dword [0x1060b5e0]
mov ecx, dword [ecx + 0xaa8]
call fcn.100be880
cmp byte [eax], 0
jne 0x100f3a69
mov ecx, dword [0x1060b5e0]
mov ecx, dword [ecx + 0xaa8]
call fcn.100cc130
push 0
mov ecx, eax
call fcn.100c6fe0
test eax, eax
je 0x100f3a69
mov ecx, dword [0x1060b5e0]
mov eax, dword [ecx + 0x6e34]
test eax, eax
je 0x100f312b
lea ecx, [eax + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 8]
call eax
test eax, eax
je 0x100f3125
mov ecx, dword [0x1060b30c]
mov eax, dword [eax + 0x14]
cmp eax, dword [ecx + 0x1a8]
je 0x100f3a69
cmp eax, dword [ecx + 0x1ac]
je 0x100f3a69
mov ecx, dword [0x1060b5e0]
mov ecx, dword [ecx + 0x6e34]
call fcn.100ce5c0
test al, al
jne 0x100f3a69
mov eax, dword [0x1060b5e0]
mov ecx, dword [eax + 0x6e34]
call fcn.100ce1f0
cmp eax, 0x31
je 0x100f3a69
mov ecx, dword [0x1060b5e0]
mov ecx, dword [ecx + 0x6e34]
call fcn.1001d3d0
test al, al
jne 0x100f3a69
movups xmm0, xmmword [0x1060ec90]
mov ecx, dword [0x1060b5e0]
movups xmmword [ebp - 0xa0], xmm0
mov ecx, dword [ecx + 0x6e34]
movups xmmword [ebp - 0xc0], xmm0
movups xmm0, xmmword [0x1060eca0]
movups xmmword [ebp - 0x60], xmm0
movups xmmword [ebp - 0xb0], xmm0
call fcn.100f1550
test al, al
je 0x100f31e1
cmp byte [0x1060ecb0], 0
je 0x100f31e1
movups xmm1, xmmword [0x1060ecb0]
movups xmm0, xmmword [0x1060ecc0]
movups xmmword [ebp - 0xa0], xmm1
movups xmmword [ebp - 0xc0], xmm1
movups xmmword [ebp - 0x60], xmm0
movups xmmword [ebp - 0xb0], xmm0
jmp 0x100f3335
mov ecx, dword [0x1060b5e0]
mov ecx, dword [ecx + 0x6e34]
call fcn.100f1590
test al, al
je 0x100f322b
cmp byte [0x1060ecd0], 0
je 0x100f322b
movups xmm1, xmmword [0x1060ecd0]
movups xmm0, xmmword [0x1060ece0]
movups xmmword [ebp - 0xa0], xmm1
movups xmmword [ebp - 0xc0], xmm1
movups xmmword [ebp - 0x60], xmm0
movups xmmword [ebp - 0xb0], xmm0
jmp 0x100f3335
mov ecx, dword [0x1060b5e0]
mov ecx, dword [ecx + 0x6e34]
call fcn.100ce1f0
cmp eax, 0x28
jne 0x100f3276
cmp byte [0x1060ecf0], 0
je 0x100f3276
movups xmm1, xmmword [0x1060ecf0]
movups xmm0, xmmword [0x1060ed00]
movups xmmword [ebp - 0xa0], xmm1
movups xmmword [ebp - 0xc0], xmm1
movups xmmword [ebp - 0x60], xmm0
movups xmmword [ebp - 0xb0], xmm0
jmp 0x100f3335
mov eax, dword [0x1060b5e0]
mov ecx, dword [eax + 0x6e34]
test ecx, ecx
je 0x100f32c1
call fcn.100ce1f0
cmp eax, 9
jne 0x100f32c1
cmp byte [0x1060ed10], 0
je 0x100f32c1
movups xmm1, xmmword [0x1060ed10]
movups xmm0, xmmword [0x1060ed20]
movups xmmword [ebp - 0xa0], xmm1
movups xmmword [ebp - 0xc0], xmm1
movups xmmword [ebp - 0x60], xmm0
movups xmmword [ebp - 0xb0], xmm0
jmp 0x100f3335
mov eax, dword [0x1060b5e0]
mov ecx, dword [eax + 0x6e34]
test ecx, ecx
je 0x100f332a
call fcn.100ce1f0
cmp eax, 0x1a
je 0x100f32f8
cmp eax, 0x11
je 0x100f32f8
cmp eax, 0x17
je 0x100f32f8
cmp eax, 0x21
je 0x100f32f8
cmp eax, 0x22
je 0x100f32f8
cmp eax, 0x13
je 0x100f32f8
cmp eax, 0x18
jne 0x100f332a
cmp byte [0x1060ed30], 0
je 0x100f332a
movups xmm1, xmmword [0x1060ed30]
movups xmm0, xmmword [0x1060ed40]
movups xmmword [ebp - 0xa0], xmm1
movups xmmword [ebp - 0xc0], xmm1
movups xmmword [ebp - 0x60], xmm0
movups xmmword [ebp - 0xb0], xmm0
jmp 0x100f3335
movups xmm0, xmmword [ebp - 0x60]
movups xmm1, xmmword [ebp - 0xa0]
movd eax, xmm1
test al, al
je 0x100f3a69
psrldq xmm0, 4
movd eax, xmm0
mov dword [ebp - 0x88], eax
shr eax, 8
test al, al
je 0x100f3385
mov ecx, dword [0x1060b5e0]
mov ecx, dword [ecx + 0xaa8]
call fcn.100caa80
test al, al
jne 0x100f3385
mov ecx, dword [0x1060b5e0]
mov ecx, dword [ecx + 0x6e34]
call fcn.10033410
test al, al
jne 0x100f3a69
movups xmm1, xmmword [ebp - 0x60]
movaps xmm0, xmm1
psrldq xmm0, 6
movd eax, xmm0
xorps xmm0, xmm0
movss dword [ebp - 0x40], xmm0
test al, al
je 0x100f33b9
mov eax, dword [0x1060b5e0]
mov eax, dword [eax + 0xaa8]
comiss xmm0, dword [eax + 0x10470]
jb 0x100f3a69
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0
movaps xmm0, xmm1
mov dword [ebp - 4], 0
psrldq xmm0, 8
movd eax, xmm0
test al, al
je 0x100f33fc
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 0
push eax
lea ecx, [ebp - 0x3c]
call fcn.1006e940
movups xmm1, xmmword [ebp - 0x60]
movaps xmm0, xmm1
psrldq xmm0, 9
movd eax, xmm0
test al, al
je 0x100f3449
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 4
push eax
lea ecx, [ebp - 0x3c]
call fcn.1006e940
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 5
push eax
lea ecx, [ebp - 0x3c]
call fcn.1006e940
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 6
push eax
lea ecx, [ebp - 0x3c]
call fcn.1006e940
movups xmm1, xmmword [ebp - 0x60]
movaps xmm0, xmm1
psrldq xmm0, 0xa
movd eax, xmm0
test al, al
je 0x100f3483
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 2
push eax
lea ecx, [ebp - 0x3c]
call fcn.1006e940
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 3
push eax
lea ecx, [ebp - 0x3c]
call fcn.1006e940
movups xmm1, xmmword [ebp - 0x60]
movaps xmm0, xmm1
psrldq xmm0, 0xb
movd eax, xmm0
test al, al
je 0x100f34e3
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 0xf
push eax
lea ecx, [ebp - 0x3c]
call fcn.1006e940
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 0x10
push eax
lea ecx, [ebp - 0x3c]
call fcn.1006e940
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 0x11
push eax
lea ecx, [ebp - 0x3c]
call fcn.1006e940
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 0x12
push eax
lea ecx, [ebp - 0x3c]
call fcn.1006e940
movups xmm1, xmmword [ebp - 0x60]
movaps xmm0, xmm1
psrldq xmm0, 0xc
movd eax, xmm0
test al, al
je 0x100f353f
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 9
push eax
lea ecx, [ebp - 0x3c]
call fcn.1006e940
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 7
push eax
lea ecx, [ebp - 0x3c]
call fcn.1006e940
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 0xa
push eax
lea ecx, [ebp - 0x3c]
call fcn.1006e940
lea eax, [ebp - 0x30]
mov dword [ebp - 0x30], 8
push eax
lea ecx, [ebp - 0x3c]
call fcn.1006e940
mov eax, dword [ebp - 0x3c]
cmp eax, dword [ebp - 0x38]
je 0x100f3a30
mov eax, dword fs:[0x2c]
xorps xmm0, xmm0
mov ecx, dword [0x104c14e0]
movss dword [ebp - 0x48], xmm0
movss dword [ebp - 0x30], xmm0
movss dword [ebp - 0x44], xmm0
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x10611adc]
mov dword [ebp - 0x4c], ecx
cmp eax, dword [ecx + 4]
jg 0x100f3a89
movups xmm0, xmmword [ebp - 0xa0]
xorps xmm1, xmm1
movaps xmm2, xmm0
shufps xmm2, xmm0, 0xff
comiss xmm2, xmm1
movaps xmmword [ebp - 0x70], xmm2
ja 0x100f35ab
movss xmm2, dword [ebp - 0xb0]
comiss xmm2, xmm1
jbe 0x100f36be
cmp byte [0x104ac4e0], 0
jne 0x100f3624
mov byte [0x104ac4e0], 1
xor edi, edi
nop dword [eax]
xor edx, edx
mov eax, edi
xor eax, dword [0x104ac4f8]
xor edx, dword [0x104ac4fc]
xor eax, 0x1de26cd5
xor edx, 0xd28f2c5
mov dword [ebp - 0x40], eax
mov esi, dword [ebp - 0x40]
mov ecx, edx
shld ecx, eax, 0xd
xor edx, ecx
shl eax, 0xd
xor esi, eax
mov ecx, edx
mov eax, esi
shrd eax, ecx, 7
shr ecx, 7
xor esi, eax
xor edx, ecx
mov dword [ebp - 0x40], esi
mov ecx, esi
shld edx, ecx, 0x11
shl ecx, 0x11
xor cl, byte [edi + 0x104ac4e1]
xor cl, byte [ebp - 0x40]
mov byte [edi + 0x104ac4e1], cl
inc edi
cmp edi, 0x14
jb 0x100f35c0
mov edi, dword [ebp - 0x8c]
push ecx
push 0x104ac4f4
push 0x104ac4e1
lea ecx, [ebp - 0x2c]
call fcn.1001a620
mov byte [ebp - 4], 1
lea edx, [ebp - 0x2c]
mov ecx, dword [0x1060b27c]
cmp dword [ebp - 0x18], 0x10
cmovae edx, dword [ebp - 0x2c]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x40]
call eax
mov ecx, dword [eax]
mov ecx, dword [ecx + 0x30]
mov dword [ebp - 0x30], ecx
mov ecx, eax
call dword [ebp - 0x30]
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 0
fstp dword [ebp - 0x30]
call fcn.10019dd0
mov eax, dword [0x1060b5e0]
lea ecx, [ebp - 0x80]
push ecx
mov ecx, dword [eax + 0xaa8]
call fcn.100cc7d0
movss xmm1, dword [ebp - 0x30]
movaps xmm0, xmm1
mulss xmm1, dword [ebp - 0xb0]
mulss xmm0, dword [ebp - 0x70]
mulss xmm1, dword [ebp - 0x7c]
mulss xmm0, dword [ebp - 0x80]
movss dword [ebp - 0x30], xmm1
movss dword [ebp - 0x44], xmm1
movss dword [ebp - 0x40], xmm0
movss dword [ebp - 0x48], xmm0
movups xmm0, xmmword [ebp - 0xa0]
sub esp, 0x20
mov dword [ebp - 0x84], 0xffffffff
mov eax, esp
lea edx, [ebp - 0x3c]
lea ecx, [ebp - 0x80]
push dword [ebp - 0x44]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ebp - 0x60]
push dword [ebp - 0x48]
movups xmmword [eax + 0x10], xmm0
lea eax, [ebp - 0x84]
push edi
push eax
call fcn.100f2400
add esp, 0x30
lea ecx, [ebp - 0x6c]
movss xmm0, dword [eax]
movss xmm1, dword [eax + 8]
movups xmmword [ebp - 0x60], xmm0
movss dword [ebp - 0x6c], xmm0
movss xmm0, dword [eax + 4]
lea eax, [ebp - 0x80]
push eax
movss dword [ebp - 0x44], xmm0
movss dword [ebp - 0x68], xmm0
movss dword [ebp - 0x64], xmm1
mov dword [ebp - 0x80], 0x43b40000
mov dword [ebp - 0x7c], 0x43b40000
mov dword [ebp - 0x78], 0x43b40000
call fcn.1001d260
test al, al
jne 0x100f3a30
cmp dword [ebp - 0x84], 0xffffffff
je 0x100f3a30
mov ecx, dword [0x1060b5e0]
lea eax, [ebp - 0x9c]
push 0
push eax
movss dword [ebp - 0x78], xmm1
mov esi, dword [ecx + 0x7ec0]
mov ecx, dword [ecx + 0xaa8]
call fcn.100beed0
movups xmm0, xmmword [ebp - 0x60]
mov ecx, dword [ebp - 0x78]
movss xmm1, dword [ebp - 0x44]
push 1
sub esp, 0xc
unpcklps xmm0, xmm1
mov edx, esp
sub esp, 0xc
movq qword [edx], xmm0
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
mov dword [edx + 8], ecx
mov ecx, esp
movq qword [ecx], xmm0
mov dword [ecx + 8], eax
call esi
add esp, 0x1c
test al, al
je 0x100f37bb
cmp byte [ebp - 0xa9], 0
jne 0x100f3a30
mov eax, dword [edi + 4]
dec eax
cmp dword [0x10611154], eax
jne 0x100f3835
movss xmm2, dword [0x10611ad0]
movss xmm0, dword [0x1041f168]
comiss xmm2, xmm0
jbe 0x100f380d
movss xmm1, dword [0x1041ec80]
comiss xmm1, xmm2
jbe 0x100f380d
movss xmm3, dword [0x10611ad4]
comiss xmm3, xmm0
jbe 0x100f380d
comiss xmm1, xmm3
jbe 0x100f380d
movss xmm3, dword [0x10611ad8]
comiss xmm3, xmm0
jbe 0x100f380d
comiss xmm1, xmm3
ja 0x100f3835
cmp byte [ebp - 0x88], 0
je 0x100f3835
movss dword [edi + 0xc], xmm2
movss xmm0, dword [0x10611ad4]
movss dword [edi + 0x10], xmm0
movss xmm0, dword [0x10611ad8]
movss dword [edi + 0x14], xmm0
mov ecx, dword [ebp - 0x4c]
add edi, 0xc
mov eax, dword [0x10610bf0]
cmp eax, dword [ecx + 4]
jg 0x100f3aca
mov eax, dword [0x1060b5e0]
lea ecx, [ebp - 0x80]
push 0
push ecx
mov ecx, dword [eax + 0xaa8]
call fcn.100beed0
push edi
lea ecx, [ebp - 0x6c]
push ecx
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.100f2330
movss xmm3, dword [edi]
mov esi, eax
movss xmm4, dword [edi + 4]
movss xmm2, dword [ebp - 0xb8]
movaps xmm1, xmm4
comiss xmm2, dword [0x1041edc4]
movss xmm0, dword [esi + 8]
addss xmm0, dword [edi + 8]
addss xmm1, dword [esi + 4]
movss dword [ebp - 0x64], xmm0
movaps xmm0, xmm3
addss xmm0, dword [esi]
subss xmm1, dword [ebp - 0x30]
subss xmm0, dword [ebp - 0x40]
movss dword [ebp - 0x68], xmm1
movss dword [ebp - 0x6c], xmm0
jbe 0x100f3977
subss xmm0, xmm3
subss xmm1, xmm4
movss dword [ebp - 0x44], xmm0
movaps xmm0, xmm2
mulss xmm0, dword [0x1041ec98]
movss dword [ebp - 0x4c], xmm1
movss xmm1, dword [0x1041ed44]
call sub.api_ms_win_crt_math_l1_1_0.dll___libm_sse2_powf
minss xmm0, dword [0x1041edb8]
movss xmm2, dword [0x1041edc4]
movss xmm4, dword [ebp - 0x4c]
movss xmm3, dword [ebp - 0x44]
movaps xmm1, xmm4
movss xmm6, dword [esi + 8]
subss xmm2, xmm0
mulss xmm1, xmm4
movaps xmm0, xmm3
mulss xmm0, xmm3
addss xmm1, xmm0
movaps xmm0, xmm6
mulss xmm0, xmm6
addss xmm1, xmm0
xorps xmm0, xmm0
sqrtss xmm0, xmm1
divss xmm2, xmm0
mulss xmm2, dword [0x1041eef0]
minss xmm2, dword [0x1041edc4]
movaps xmm1, xmm2
movaps xmm0, xmm2
mulss xmm1, xmm3
mulss xmm0, xmm4
addss xmm1, dword [edi]
mulss xmm2, xmm6
addss xmm0, dword [edi + 4]
addss xmm2, dword [edi + 8]
movss dword [ebp - 0x6c], xmm1
movss dword [ebp - 0x68], xmm0
movss dword [ebp - 0x64], xmm2
lea eax, [ebp - 0x5c]
push eax
lea ecx, [ebp - 0x6c]
call fcn.1001da10
cmp byte [0x1060ec69], 0
je 0x100f3999
cmp byte [0x1060ec8c], 0
je 0x100f3a30
cmp byte [ebp - 0x88], 0
movss xmm0, dword [ebp - 0x6c]
movss dword [edi], xmm0
movss xmm0, dword [ebp - 0x68]
movss dword [edi + 4], xmm0
movss xmm0, dword [ebp - 0x64]
movss dword [edi + 8], xmm0
jne 0x100f39cb
mov ecx, dword [0x1060b288]
push edi
mov eax, dword [ecx]
call dword [eax + 0x4c]
movss xmm0, dword [ebp - 0xb8]
comiss xmm0, dword [0x1041edc4]
jbe 0x100f3a04
movss xmm0, dword [edi]
movss dword [0x10611ad0], xmm0
movss xmm0, dword [edi + 4]
movss dword [0x10611ad4], xmm0
movss xmm0, dword [edi + 8]
movss dword [0x10611ad8], xmm0
jmp 0x100f3a22
mov dword [0x10611ad0], 0
mov dword [0x10611ad4], 0
mov dword [0x10611ad8], 0
mov eax, dword [ebp - 0x8c]
mov eax, dword [eax + 4]
mov dword [0x10611154], eax
mov edx, dword [ebp - 0x3c]
test edx, edx
je 0x100f3a69
mov ecx, dword [ebp - 0x34]
mov eax, edx
sub ecx, edx
and ecx, 0xfffffffc
cmp ecx, 0x1000
jb 0x100f3a5f
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x100f3a5f
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.102bb95a
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.102bb91c
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 4
push 0x10611adc
call fcn.102bba07
add esp, 4
cmp dword [0x10611adc], 0xffffffff
jne 0x100f3580
movq xmm0, qword [edi + 0xc]
movq qword [0x10611ad0], xmm0
mov eax, dword [edi + 0x14]
push 0x10611adc
mov dword [0x10611ad8], eax
call fcn.102bb9b6
add esp, 4
jmp 0x100f3580
push 0x10610bf0
call fcn.102bba07
add esp, 4
cmp dword [0x10610bf0], 0xffffffff
jne 0x100f384c
push 0x103305f0
mov byte [0x10610b3c], 0
call fcn.102bbda4
add esp, 4
push 0x10610bf0
call fcn.102bb9b6
add esp, 4
jmp 0x100f384c