IoGetEnvironmentVariableEx

INT64 __stdcall IoGetEnvironmentVariableEx(
        WCHAR *VariableName,
        GUID *VendorGuid,
        PVOID Value,
        UINT64 *ValueLength,
        UINT64 *Attributes){
  int v9; 
  struct _DMA_ADAPTER *v10; 
  int v11; 
  PVOID v13; 
  int v14; 
  PADAPTER_OBJECT DmaAdapter; 
  PDEVICE_OBJECT DeviceObject; 
  __int64(__fastcall **v17)(PADAPTER_OBJECT, PDEVICE_OBJECT, WCHAR *, GUID *, PVOID, UINT64 *, int *); 
  struct _EVENT_DATA_DESCRIPTOR v18; 
  char v19[16]; 
  GUID *v20; 
  int v21; 
  int v22; 
  PADAPTER_OBJECT *p_DmaAdapter; 
  int v24; 
  int v25; 
  PDEVICE_OBJECT *p_DeviceObject; 
  int v27; 
  int v28; 
  void ***v29; 
  int v30; 
  int v31; 
  DeviceObject = 0i64;
  DmaAdapter = 0i64;
  v17 = 0i64;
  v14 = -559038737;
  v9 = IopOpenSystemVariableDevice((PFILE_OBJECT *)&DmaAdapter, &DeviceObject, (void ***)&v17);
  if( v9 >= 0 )
  {
    v13 = Value;
    v10 = DmaAdapter;
    v9 = (*v17)(DmaAdapter, DeviceObject, VariableName, VendorGuid, v13, ValueLength, &v14);
    if( Attributes )
      *(_DWORD *)Attributes = v14;
    if( v10 )
      HalPutDmaAdapter(v10);
  }
  if( (unsigned int)dword_140C044D0 > 5 && tlgKeywordOn((__int64)&dword_140C044D0, 0x200000000000i64) )
  {
    tlgCreate1Sz_wchar_t((__int64)v19, VariableName);
    v11 = *(_DWORD *)ValueLength;
    v22 = 0;
    v25 = 0;
    v28 = 0;
    v31 = 0;
    LODWORD(DmaAdapter) = v11;
    p_DmaAdapter = &DmaAdapter;
    LODWORD(DeviceObject) = v14;
    p_DeviceObject = &DeviceObject;
    v29 = (void ***)&v17;
    v24 = 4;
    v27 = 4;
    v30 = 4;
    v20 = VendorGuid;
    v21 = 16;
    LODWORD(v17) = v9;
    tlgWriteTransfer_EtwWriteTransfer(
      (__int64)&dword_140C044D0,
      (unsigned __int8 *)&dword_140023F7C,
      0i64,
      0i64,
      7u,
      &v18);
  }
  return(unsigned int)v9;
}

Referenced by:

ExpGetFirmwareEnvironmentVariable
ExpSetBootEntry
ExpSetDriverEntry
IopCachePreviousBootData
IopInitializeOfflineCrashDump
NtDeleteBootEntry
NtDeleteDriverEntry
NtGetEnvironmentVariableEx
NtQueryBootEntryOrder
NtQueryBootOptions