Function at 0x10023350
Capabilities:
Query environment variable

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x80
mov esi, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov eax, dword [0x1007a00c]
xor eax, ebp
mov dword [esp + 0x78], eax
test ebx, ebx
jne 0x10023579
cmp byte [0x1007b659], 0
jne 0x100233ad
movsd xmm0, qword [0x1007b658]
movsd qword [esi + 0x10], xmm0
movups xmm0, xmmword [0x1007b648]
movups xmmword [esi], xmm0
mov ecx, dword [esp + 0x78]
xor ecx, ebp
call fcn.1002cad0
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
push str.MOZ_APP_RESTART
call dword [sym.imp.api_ms_win_crt_environment_l1_1_0.dll_getenv]
add esp, 4
xorpd xmm0, xmm0
movapd xmmword [esp + 0x50], xmm0
mov word [esp + 0x60], 0x100
mov byte [esp + 0x62], 0
test eax, eax
jne 0x100235a6
lea eax, [esp + 0x38]
push 1
push eax
call sym.mozglue.dll_private:_static_class_mozilla::TimeStamp___cdecl_mozilla::TimeStamp::Now_bool_
add esp, 8
call sym.mozglue.dll_private:_static_unsigned_long_long_unsigned___int64____cdecl_mozilla::TimeStamp::ComputeProcessUptime_void_
mov dword [esp + 0x30], edx
movd xmm0, edx
mov dword [esp + 0x34], eax
movd xmm1, eax
punpckldq xmm1, xmm0
punpckldq xmm1, xmmword [0x1006ae90]
subpd xmm1, xmmword [0x1006aea0]
movapd xmm0, xmm1
unpckhpd xmm0, xmm1
addsd xmm0, xmm1
divsd xmm0, qword [0x1006aed0]
ucomisd xmm0, qword [0x1006aec0]
jae 0x100235b0
sub esp, 8
movsd qword [esp], xmm0
call sym.mozglue.dll_public:_static_long_long___int64____cdecl_mozilla::BaseTimeDurationPlatformUtils::TicksFromMilliseconds_double_
add esp, 8
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x20], ecx
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x4b]
mov dword [esp + 0x1c], edx
sub ecx, eax
mov dword [esp + 0x10], eax
sbb edi, dword [esp + 0xc]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x24]
sub edx, eax
mov eax, dword [esp + 0x20]
sbb eax, dword [esp + 0xc]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], edx
or ecx, edx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x20], eax
or edi, eax
mov edx, ecx
or edx, edi
sete byte [esp + 0xb]
cmp dword [esp + 0x10], 1
mov edx, dword [esp + 0xc]
sbb edx, 0
mov dl, byte [esp + 0x4f]
mov byte [esp + 0x70], dl
mov al, byte [esp + 0x48]
mov byte [esp + 0x17], al
mov dl, byte [esp + 0x49]
mov al, byte [esp + 0x4a]
mov byte [esp + 0x1c], al
jl 0x100234f8
or ecx, edi
jne 0x100234da
test dl, dl
jne 0x100235c0
cmp byte [esp + 0x1c], 0
je 0x100234f8
cmp byte [0x1007b680], 0
jne 0x100234f8
mov ecx, dword [0x1007b68c]
test ecx, ecx
js 0x100235ca
cmp byte [esp + 0x17], 0
lea ecx, [esp + 0x50]
setne byte [ecx + 0x10]
mov eax, dword [esp + 0x24]
mov dword [ecx], eax
mov eax, dword [esp + 0x20]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x28]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
mov dword [ecx + 0xc], eax
cmp byte [esp + 0x1c], 0
mov al, byte [esp + 0xb]
mov byte [ecx + 0x11], al
setne byte [ecx + 0x12]
mov eax, dword [esp + 0x73]
mov dword [ecx + 0x13], eax
mov al, byte [esp + 0x77]
mov byte [ecx + 0x17], al
push 0x1007b630
call sym.mozglue.dll_public:_unsigned_long_long_unsigned___int64____thiscall_mozilla::TimeStampValue::operator__class_mozilla::TimeStampValue_const__const
mov ecx, dword [esp + 0x30]
or dword [esp + 0x34], ecx
je 0x10023581
cmp eax, 1
sbb edx, 0
jge 0x10023581
movsd xmm0, qword [esp + 0x60]
movsd qword [0x1007b658], xmm0
movaps xmm0, xmmword [esp + 0x50]
movups xmmword [0x1007b648], xmm0
jmp 0x10023381
mov byte [ebx], 0
jmp 0x10023378
test ebx, ebx
je 0x10023588
mov byte [ebx], 1
movsd xmm0, qword [0x1007b640]
movsd qword [esp + 0x60], xmm0
movupd xmm0, xmmword [0x1007b630]
movapd xmmword [esp + 0x50], xmm0
jmp 0x1002355a
cmp byte [eax], 0
jne 0x10023588
jmp 0x100233d9
mov dword [esp + 0xc], 0x7fffffff
xor eax, eax
dec eax
jmp 0x10023447
mov byte [esp + 0xb], 1
jmp 0x100234f8
mov edx, dword [0x1007b688]
xor edi, edi
neg edx
sbb edi, ecx
mov ecx, dword [0x1007b694]
cmp dword [0x1007b690], edx
sbb ecx, edi
jge 0x100234f8
mov eax, dword [esp + 0xc]
mov ecx, eax
sar ecx, 0x1f
add dword [esp + 0x10], ecx
adc eax, ecx
mov dl, byte [0x1007a230]
test dl, 1
je 0x100234f8
mov edx, dword [esp + 0x10]
xor edx, ecx
xor eax, ecx
cmp edx, dword [0x1007b698]
sbb eax, dword [0x1007b69c]
jge 0x100234f8
call dword [sym.imp.kernel32.dll_GetTickCount64]
mov edi, eax
mov ecx, edx
mov eax, dword [0x1007a228]
imul ecx, eax
mul edi
mov dword [esp + 0xc], eax
add edx, ecx
imul edi, dword [0x1007a22c]
add edi, edx
push 0x1007b6a0
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov ecx, dword [0x1007b6bc]
mov eax, dword [0x1007b6b8]
cmp dword [esp + 0xc], eax
mov edx, edi
sbb edx, ecx
mov edx, dword [0x1007b6c4]
mov dword [esp + 0x18], edx
mov edx, dword [0x1007b6c0]
mov dword [esp + 0x10], edx
jae 0x100236b0
mov edx, dword [esp + 0xc]
not edx
add eax, edx
mov edx, edi
not edx
adc ecx, edx
add eax, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
adc ecx, edx
push edx
push dword [esp + 0x14]
push ecx
push eax
call fcn.1002d8e0
mov ecx, edx
cmp eax, 5
sbb edx, 0
jb 0x100236d9
mov byte [0x1007a230], 0
jmp 0x100236c9
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x18]
adc ecx, edi
mov dword [0x1007b6b8], eax
mov dword [0x1007b6bc], ecx
push 0x1007b6a0
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
jmp 0x100234f8
add eax, 1
adc ecx, 0
mov edx, dword [esp + 0x18]
imul edx, eax
mov dword [esp + 0x18], edx
mul dword [esp + 0x10]
add edx, dword [esp + 0x18]
imul ecx, dword [esp + 0x10]
add ecx, edx
add eax, dword [esp + 0xc]
jmp 0x100236bc