IoEnumerateEnvironmentVariablesEx

NTSTATUS __stdcall IoEnumerateEnvironmentVariablesEx(
        WCHAR *VariableName,
        _GUID *VendorGuid,
        PVOID Value,
        UINT64 *ValueLength,
        UINT64 *Attributes){
  unsigned int v7; 
  int v9; 
  _ADAPTER_OBJECT *v10; 
  PVOID v12; 
  bool v13; 
  PFILE_OBJECT FileObject; 
  PDEVICE_OBJECT DeviceObject; 
  VOID **FunctionTable; 
  _EVENT_DATA_DESCRIPTOR v17; 
  PFILE_OBJECT *p_FileObject; 
  int v19; 
  int v20; 
  PDEVICE_OBJECT *p_DeviceObject; 
  int v22; 
  int v23; 
  VOID ***p_FunctionTable; 
  int v25; 
  int v26; 
  bool *v27; 
  int v28; 
  int v29; 

  DeviceObject = 0i64;
  FileObject = 0i64;
  FunctionTable = 0i64;
  v7 = (unsigned int)VariableName;
  v9 = IopOpenSystemVariableDevice(&FileObject, &DeviceObject, &FunctionTable);
  if( v9 >= 0 )
  {
    v12 = Value;
    v10 = (_ADAPTER_OBJECT *)FileObject;
    v9 = ((__int64(__fastcall *)(PFILE_OBJECT, PDEVICE_OBJECT, _QWORD, _GUID *, PVOID, UINT64 *))FunctionTable[2])(
           FileObject,
           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_FileObject = &FileObject;
    LODWORD(DeviceObject) = *(_DWORD *)ValueLength;
    v13 = VendorGuid != 0i64;
    v29 = 0;
    p_DeviceObject = &DeviceObject;
    v19 = 4;
    p_FunctionTable = &FunctionTable;
    v22 = 4;
    v27 = &v13;
    v25 = 4;
    LODWORD(FileObject) = v7;
    LODWORD(FunctionTable) = v9;
    v28 = 1;
    tlgWriteTransfer_EtwWriteTransfer(
      (__int64)&dword_140C044D0,
      (unsigned __int8 *)&dword_140023FD4,
      0i64,
      0i64,
      6u,
      &v17);
  }
  return v9;
}

Referenced by:

NtEnumerateBootEntries
NtEnumerateDriverEntries
NtEnumerateSystemEnvironmentValuesEx