Function at 0x1000ec80
Capabilities:
Allocate thread local storage
Query environment variable
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x98
mov eax, dword [ebp + 8]
xor ecx, ecx
mov edx, 0x7e
cmp edx, eax
sbb ecx, dword [ebp + 0xc]
jl 0x1000ee6e
call dword [sym.imp.KERNEL32.dll_GetACP]
mov dword [esp], 0x42c20000
call fcn.1000f160
movd xmm0, edx
movd xmm1, eax
punpckldq xmm1, xmm0
movq qword [esp + 0x88], xmm1
fild qword [esp + 0x88]
fstp dword [esp + 0x5c]
movss xmm0, dword [esp + 0x5c]
movss dword [esp + 0x48], xmm0
fld dword [esp + 0x48]
fnstcw word [esp + 0x14]
movzx eax, word [esp + 0x14]
or eax, 0xc00
mov word [esp + 0x1e], ax
fldcw word [esp + 0x1e]
fistp qword [esp + 0x48]
fldcw word [esp + 0x14]
mov eax, dword [esp + 0x4c]
cmp dword [esp + 0x48], 0x23
sbb eax, 0
jge 0x1000ee76
mov edx, 9
jmp 0x1000ed2a
call dword [sym.imp.KERNEL32.dll_IsDebuggerPresent]
mov edx, dword [esp + 0x50]
mov edi, dword [sym.imp.USER32.dll_GetDialogBaseUnits]
mov ebx, 0x80
lea eax, [edx + edx]
mov esi, eax
sar esi, 0x1f
mov dword [esp + 0x50], eax
neg eax
mov ecx, 0
sbb ecx, esi
cmp edx, 0xffffffbf
jg 0x1000ee02
mov esi, 0x4d
movsd xmm1, qword [0x1004afd8]
movsd qword [esp + 0x20], xmm1
call edi
mov dword [esp], esi
call fcn.1000efa0
movsd xmm1, qword [esp + 0x20]
fstp qword [esp + 0x30]
fld qword [esp + 0x30]
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
or eax, 0xc00
mov word [esp + 0x1a], ax
fldcw word [esp + 0x1a]
fistp qword [esp + 0x30]
fldcw word [esp + 0x10]
mov esi, dword [esp + 0x30]
movsd xmm0, qword [esp + 0x30]
divsd xmm1, xmm1
movlps qword [esp + 0x68], xmm0
fild qword [esp + 0x68]
fstp qword [esp + 0x60]
movsd xmm0, qword [esp + 0x60]
divsd xmm0, xmm1
movsd qword [esp + 0x28], xmm0
fld qword [esp + 0x28]
fnstcw word [esp + 0xe]
movzx eax, word [esp + 0xe]
or eax, 0xc00
mov word [esp + 0x18], ax
fldcw word [esp + 0x18]
fistp qword [esp + 0x28]
fldcw word [esp + 0xe]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
cmp ebx, eax
mov edx, 0
sbb edx, ecx
jl 0x1000ed60
mov edx, 0x7e
cmp edx, eax
mov eax, 0
sbb eax, ecx
jl 0x1000ed20
xor ebx, ebx
mov esi, 0x6a
nop dword [eax]
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.1000e920
fstp dword [esp + 0x54]
cvttss2si edi, dword [esp + 0x54]
mov eax, esi
mul edi
mov dword [esp + 0x20], eax
mov ecx, edi
sar ecx, 0x1f
imul esi, ecx
add esi, edx
imul ebx, edi
mov eax, dword [esp + 0x20]
mul edi
add ebx, esi
mov esi, dword [esp + 0x20]
imul ecx, esi
add edx, ecx
imul edi, ebx
add edi, edx
cmp eax, 0x7f
sbb edi, 0
jl 0x1000ee20
jmp 0x1000ed20
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, dword [sym.imp.KERNEL32.dll_TlsAlloc]
mov edi, dword [sym.imp.KERNEL32.dll_GetACP]
mov ebx, 0x22
jmp 0x1000ef02
call esi
call esi
call edi
movss xmm0, dword [esp + 0x20]
movss dword [esp], xmm0
call fcn.1000f160
movd xmm0, edx
movd xmm1, eax
punpckldq xmm1, xmm0
movq qword [esp + 0x70], xmm1
fild qword [esp + 0x70]
fstp dword [esp + 0x58]
movss xmm0, dword [esp + 0x58]
movss dword [esp + 0x38], xmm0
fld dword [esp + 0x38]
fnstcw word [esp + 0x12]
movzx eax, word [esp + 0x12]
or eax, 0xc00
mov word [esp + 0x1c], ax
fldcw word [esp + 0x1c]
fistp qword [esp + 0x38]
fldcw word [esp + 0x12]
cmp ebx, dword [esp + 0x38]
mov eax, 0
sbb eax, dword [esp + 0x3c]
jge 0x1000ed17
movss dword [esp + 0x20], xmm0
mov dword [esp], 0x42f80000
call fcn.1000f160
movd xmm0, edx
movd xmm1, eax
punpckldq xmm1, xmm0
movq qword [esp + 0x80], xmm1
fild qword [esp + 0x80]
fstp qword [esp + 0x78]
movsd xmm0, qword [esp + 0x78]
mulsd xmm0, qword [0x1004afd0]
movsd qword [esp + 0x40], xmm0
fld qword [esp + 0x40]
fnstcw word [esp + 0xc]
movzx eax, word [esp + 0xc]
or eax, 0xc00
mov word [esp + 0x16], ax
fldcw word [esp + 0x16]
fistp qword [esp + 0x40]
fldcw word [esp + 0xc]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
cmp ecx, 0x3c
mov edx, eax
sbb edx, 0
jge 0x1000ee90
cmp ecx, 9
sbb eax, 0
jl 0x1000ee94
call dword [sym.imp.KERNEL32.dll_GetEnvironmentStringsW]
jmp 0x1000ee94