BapdRecordFirmwareBootStats

NTSTATUS __stdcall BapdRecordFirmwareBootStats(
        PFILE_OBJECT pFileObject,
        UINT32 Level,
        PVOID pBuffer,
        PULONG pBufferSize){
  UINT64 v4; 
  _QWORD *PoolWithTag; 
  WCHAR v6; 
  unsigned __int64 v7; 
  UINT64 v8; 
  NTSTATUS result; 
  SIZE_T NumberOfBytes; 
  REGHANDLE RegHandle; 
  unsigned __int64 Data; 
  unsigned __int64 v13; 
  unsigned __int64 v14; 
  unsigned __int64 v15; 
  unsigned __int64 v16; 
  unsigned __int64 v17; 
  unsigned __int64 v18; 
  unsigned __int64 v19; 
  unsigned __int64 v20; 
  struct _UNICODE_STRING DestinationString; 
  EVENT_DATA_DESCRIPTOR UserData; 
  unsigned __int64 *v23; 
  __int64 v24; 
  unsigned __int64 *p_Data; 
  __int64 v26; 
  unsigned __int64 *v27; 
  __int64 v28; 
  unsigned __int64 *v29; 
  __int64 v30; 
  struct _EVENT_DATA_DESCRIPTOR v31; 
  REGHANDLE *p_RegHandle; 
  __int64 v33; 
  unsigned __int64 *v34; 
  __int64 v35; 
  unsigned __int64 *v36; 
  __int64 v37; 
  unsigned __int64 *v38; 
  __int64 v39; 
  unsigned __int64 *v40; 
  __int64 v41; 
  v15 = 0i64;
  v16 = 0i64;
  v14 = 0i64;
  DestinationString = 0i64;
  v13 = 0i64;
  v4 = 0i64;
  RegHandle = 0i64;
  PoolWithTag = 0i64;
  LODWORD(NumberOfBytes) = 0;
  Data = 0i64;
  TraceLoggingRegisterEx_EtwRegister_EtwSetInformation(&dword_140C02E30);
  if( !(unsigned __int8)ExIsSoftBoot() )
  {
    if( BapdRegisterEtwProvider((GUID *)&BOOTENV_ETW_PROVIDER, 1u, &RegHandle) >= 0
      && ((unsigned int(__fastcall *)(__int64, _QWORD, _QWORD, SIZE_T *))off_140C00A68[0])(
           34i64,
           0i64,
           0i64,
           &NumberOfBytes) == -1073741820
      && (_DWORD)NumberOfBytes
      && (PoolWithTag = ExAllocatePoolWithTag(PagedPool, (unsigned int)NumberOfBytes, 0x73627746ui64)) != 0i64
      && ((int(__fastcall *)(__int64, _QWORD, _QWORD *, SIZE_T *))off_140C00A68[0])(
           34i64,
           (unsigned int)NumberOfBytes,
           PoolWithTag,
           &NumberOfBytes) >= 0 )
    {
      v4 = RegHandle;
      v13 = PoolWithTag[2] / 0xF4240ui64;
      v14 = PoolWithTag[3] / 0xF4240ui64;
      Data = PoolWithTag[4] / 0xF4240ui64;
      v15 = PoolWithTag[5] / 0xF4240ui64;
      v7 = PoolWithTag[6];
      *(_QWORD *)&UserData.Size = 8i64;
      UserData.Ptr = (unsigned __int64)&v13;
      v23 = &v14;
      p_Data = &Data;
      v27 = &v15;
      v29 = &v16;
      v16 = v7 / 0xF4240;
      v24 = 8i64;
      v26 = 8i64;
      v28 = 8i64;
      v30 = 8i64;
      EtwWrite(RegHandle, (EVENT_DESCRIPTOR *)&BOOT_FW_BOOT_PERF_DATA, 0i64, 5ui64, &UserData);
      if( (unsigned int)dword_140C02E30 > 4 && tlgKeywordOn((__int64)&dword_140C02E30, 0x400000000000i64) )
      {
        RegHandle = v13;
        v33 = 8i64;
        p_RegHandle = &RegHandle;
        v17 = v14;
        v34 = &v17;
        v18 = Data;
        v36 = &v18;
        v19 = v15;
        v38 = &v19;
        v20 = v16;
        v40 = &v20;
        v35 = 8i64;
        v37 = 8i64;
        v39 = 8i64;
        v41 = 8i64;
        tlgWriteTransfer_EtwWriteTransfer(
          (__int64)&dword_140C02E30,
          (unsigned __int8 *)word_14002CAAA,
          0i64,
          0i64,
          7u,
          &v31);
      }
    }
    else
    {
      v4 = RegHandle;
    }
  }
  RtlInitUnicodeString(&DestinationString, L"FwPOSTTime", v6);
  BapdpWriteEventDataToRegistry(&Data, v8, &DestinationString);
  if( PoolWithTag )
    ExFreePoolWithTag(PoolWithTag, NumberOfBytes);
  if( v4 )
    return EtwUnregister(v4);
  return result;
}

Referenced by:

IoInitSystemPreDrivers
PopBootLoaderTraceProcess