RtlpTimeFieldsToTime

CHAR __stdcall RtlpTimeFieldsToTime(INT16 *a1, INT64 *a2){
  __int64 v3; 
  unsigned int v4; 
  INT64 v5; 
  unsigned int v6; 
  __int64 *v8; 
  __int64 v9; 
  __int64 v10; 
  int v11[10]; 
  INT64 v12; 

  v12 = 0i64;
  v3 = *(&ExBootDevicesRemovedEvent + 103);
  if( !*(&ExBootDevicesRemovedEvent + 103) || !**(&ExBootDevicesRemovedEvent + 103) )
    return RtlpTimeFieldsToTimeNoLeapSeconds(a1, a2);
  v4 = *(_DWORD *)(*(&ExBootDevicesRemovedEvent + 103) + 4i64);
  _InterlockedOr(v11, 0);
  if( !RtlpTimeFieldsToTimeNoLeapSeconds(a1, &v12) )
    return 0;
  v5 = v12;
  v6 = 0;
  if( !v4 )
    goto LABEL_5;
  v8 = (__int64 *)(v3 + 8);
  while( 1 )
  {
    v9 = *v8;
    if( *v8 >= 0 )
    {
      if( v5 < v9 + 10000000 )
      {
        if( v5 < v9 )
          goto LABEL_5;
        v5 = 2 * v5 - v9;
      }
      else
      {
        v5 += 10000000i64;
      }
      goto LABEL_16;
    }
    v10 = v9 & 0x7FFFFFFFFFFFFFFFi64;
    if( v5 < v10 + 10000000 )
      break;
    v5 -= 10000000i64;
LABEL_16:
    ++v6;
    ++v8;
    if( v6 >= v4 )
      goto LABEL_5;
  }
  if( v5 < v10 )
  {
LABEL_5:
    *a2 = v5;
    return 1;
  }
  return 0;
}

Referenced by:

GetBootSystemTime