ViDdiDispatchWmiRegInfoEx

NTSTATUS __stdcall ViDdiDispatchWmiRegInfoEx(DEVICE_OBJECT *DeviceObject, IRP *Irp){
  __int64 v2; 
  WMIREGINFOW *v4; 
  unsigned int v5; 
  unsigned int v6; 
  __int64 v7; 
  NTSTATUS result; 
  v2 = *((_QWORD *)Irp + 23);
  if( *(DEVICE_OBJECT **)(v2 + 8) == DeviceObject )
  {
    v4 = *(WMIREGINFOW **)(v2 + 32);
    v5 = *(_DWORD *)(v2 + 24);
    v6 = ViDdiBuildWmiRegInfoData(*(unsigned int *)(v2 + 16), 0i64);
    v7 = v6;
    if( v6 <= v5 )
    {
      ViDdiBuildWmiRegInfoData(*(unsigned int *)(v2 + 16), v4);
      result = 0;
      *((_QWORD *)Irp + 7) = v7;
      return result;
    }
    if( v5 >= 4 )
    {
      v4->BufferSize = v6;
      result = -1073741789;
      *((_QWORD *)Irp + 7) = 4i64;
      return result;
    }
  }
  return -1073741637;
}

Referenced by:

ViDdiDispatchWmi