IoEnumerateEnvironmentVariablesEx

INT64 __stdcall IoEnumerateEnvironmentVariablesEx(
        WCHAR *VariableName,
        GUID *VendorGuid,
        PVOID Value,
        UINT64 *ValueLength,
        UINT64 *Attributes){
  unsigned int v7; 
  int v9; 
  struct _DMA_ADAPTER *v10; 
  PVOID v12; 
  bool v13; 
  PADAPTER_OBJECT DmaAdapter; 
  PDEVICE_OBJECT DeviceObject; 
  void **v16; 
  struct _EVENT_DATA_DESCRIPTOR v17; 
  PADAPTER_OBJECT *p_DmaAdapter; 
  int v19; 
  int v20; 
  PDEVICE_OBJECT *p_DeviceObject; 
  int v22; 
  int v23; 
  void ***v24; 
  int v25; 
  int v26; 
  bool *v27; 
  int v28; 
  int v29; 
  DeviceObject = 0i64;
  DmaAdapter = 0i64;
  v16 = 0i64;
  v7 = (unsigned int)VariableName;
  v9 = IopOpenSystemVariableDevice((PFILE_OBJECT *)&DmaAdapter, &DeviceObject, &v16);
  if( v9 >= 0 )
  {
    v12 = Value;
    v10 = DmaAdapter;
    v9 = ((__int64(__fastcall *)(PADAPTER_OBJECT, PDEVICE_OBJECT, _QWORD, GUID *, PVOID, UINT64 *))v16[2])(
           DmaAdapter,
           DeviceObject,
           v7,
           VendorGuid,
           v12,
           ValueLength);
    if( v10 )
      HalPutDmaAdapter(v10);
  }
  if( (unsigned int)dword_140C044D0 > 5 && tlgKeywordOn((__int64)&dword_140C044D0, 0x200000000000i64) )
  {
    v20 = 0;
    v23 = 0;
    v26 = 0;
    p_DmaAdapter = &DmaAdapter;
    LODWORD(DeviceObject) = *(_DWORD *)ValueLength;
    v13 = VendorGuid != 0i64;
    v29 = 0;
    p_DeviceObject = &DeviceObject;
    v19 = 4;
    v24 = &v16;
    v22 = 4;
    v27 = &v13;
    v25 = 4;
    LODWORD(DmaAdapter) = v7;
    LODWORD(v16) = v9;
    v28 = 1;
    tlgWriteTransfer_EtwWriteTransfer(
      (__int64)&dword_140C044D0,
      (unsigned __int8 *)&dword_140023FD4,
      0i64,
      0i64,
      6u,
      &v17);
  }
  return(unsigned int)v9;
}

Referenced by:

NtEnumerateBootEntries
NtEnumerateDriverEntries
NtEnumerateSystemEnvironmentValuesEx