GetBootSystemTime

VOID __fastcall GetBootSystemTime(_LOADER_PARAMETER_EXTENSION *Extension, _LARGE_INTEGER *SystemTime){
  bool v3; 
  __int64 v5; 
  __int64 v6; 
  NTSTATUS v7; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  ULONGLONG v10; 
  ULONGLONG v11; 
  TIME_FIELDS TimeFields; 
  ULONGLONG pullResult; 
  unsigned __int64 v14; 
  v14 = 0i64;
  pullResult = 0i64;
  v3 = (*((_BYTE *)Extension + 2624) & 1) == 0;
  v5 = *((_QWORD *)Extension + 325);
  TimeFields = 0i64;
  if( v3 && !ExpRealTimeIsUniversal )
    v5 += *(_QWORD *)(PsGetCurrentServerSiloGlobals()[133] + 440);
  v6 = ((__int64(__fastcall *)(unsigned __int64 *))off_140C007F0)(&v14);
  v7 = RtlULongLongMult(v6 - *((_QWORD *)Extension + 326), 0x989680ui64, &pullResult);
  v10 = pullResult / v14;
  if( v7 < 0 )
  {
    v8 = v9 / v14;
    v10 = 10000000 * (v9 / v14) + 10000000 * (v9 % v14) / v14;
  }
  v11 = v10 + v5;
  v3 = (*((_BYTE *)Extension + 2624) & 2) == 0;
  pullResult = v11;
  if( v3 )
  {
    if( !ExpRealTimeIsUniversal )
      pullResult = v11 - *(_QWORD *)(PsGetCurrentServerSiloGlobals()[133] + 440);
    RtlpTimeToTimeFields((LARGE_INTEGER *)&pullResult, &TimeFields, (LARGE_INTEGER)v8);
    HalSetRealTimeClock(&TimeFields);
  }
  else if( (qword_140C19658 & 4) == 0 && (unsigned __int8)HalQueryRealTimeClock(&TimeFields) )
  {
    if( !RtlpTimeFieldsToTime(&TimeFields.Year, (INT64 *)&pullResult) || ExpRealTimeIsUniversal )
      v11 = pullResult;
    else
      v11 = *(_QWORD *)(PsGetCurrentServerSiloGlobals()[133] + 440) + pullResult;
  }
  SystemTime->QuadPart = v11;
}

Referenced by:

Phase1InitializationDiscard