HalEfiSetTime

NTSTATUS __stdcall HalEfiSetTime(_LARGE_INTEGER *a1){
  NTSTATUS result; 
  UINT64 v3; 
  _LARGE_INTEGER v4; 
  UINT64 v5; 
  _WORD v6[8]; 
  _LARGE_INTEGER v7; 
  __int128 v8; 

  v8 = 0i64;
  *(_OWORD *)v6 = 0i64;
  if( !HalEfiRuntimeServicesTable || !*HalEfiRuntimeServicesTable || !HalEfiRuntimeServicesTable[1] )
    return -1073741822;
  if( !a1 )
    return -1073741811;
  _InterlockedIncrement(&dword_140C49EC8);
  HalpEfiStartRuntimeCode(1ui64);
  v3 = ((__int64(__fastcall *)(__int128 *, _QWORD))*HalEfiRuntimeServicesTable)(&v8, 0i64);
  _InterlockedAnd((volatile signed __int32 *)&KeGetPcr()->HalReserved[8], 0xFFFFFFFE);
  _InterlockedDecrement(&dword_140C49EC8);
  result = HalpConvertEfiToNtStatus(v3);
  if( result >= 0 )
  {
    if( (unsigned __int64)(SWORD6(v8) + 1440i64) > 0xB40 )
    {
      if( *(&stru_140CF2E80 + 1829) )
      {
        v7 = *a1;
        WORD6(v8) = 0;
      }
      else
      {
        WORD6(v8) = *(_QWORD *)&KUSER_SHARED_DATA.TimeZoneBias.LowPart / 0x23C34600ui64;
        v7.QuadPart = a1->QuadPart
                    - PsGetCurrentServerSiloGlobals(*(_KSPIN_LOCK **)&KUSER_SHARED_DATA.TimeZoneBias.LowPart)->ExTimeZoneState->TimeZoneBias.QuadPart;
        if( KUSER_SHARED_DATA.TimeZoneId )
        {
          if( KUSER_SHARED_DATA.TimeZoneId == 1 )
          {
            BYTE14(v8) = 1;
          }
          else if( KUSER_SHARED_DATA.TimeZoneId == 2 )
          {
            BYTE14(v8) = 3;
          }
          goto LABEL_12;
        }
      }
      BYTE14(v8) = 0;
    }
    else
    {
      v7.QuadPart = a1->QuadPart - 600000000i64 * SWORD6(v8);
    }
LABEL_12:
    RtlpTimeToTimeFields(&v7, v6, v4);
    LOWORD(v8) = v6[0];
    BYTE2(v8) = v6[1];
    BYTE3(v8) = v6[2];
    BYTE4(v8) = v6[3];
    BYTE5(v8) = v6[4];
    BYTE6(v8) = v6[5];
    DWORD2(v8) = 1000000 * v6[6];
    _InterlockedIncrement(&dword_140C49EC8);
    _InterlockedIncrement(&dword_140C49ED8);
    HalpEfiStartRuntimeCode(2ui64);
    v5 = ((__int64(__fastcall *)(__int128 *))HalEfiRuntimeServicesTable[1])(&v8);
    _InterlockedAnd((volatile signed __int32 *)&KeGetPcr()->HalReserved[8], 0xFFFFFFFD);
    _InterlockedDecrement(&dword_140C49ED8);
    _InterlockedDecrement(&dword_140C49EC8);
    return HalpConvertEfiToNtStatus(v5);
  }
  return result;
}

Referenced by:

HalSetRealTimeClock