DmrConvertDeviceScope

NTSTATUS __stdcall DmrConvertDeviceScope(INT64 a1, _BYTE *a2){
  _WORD *v2; 
  __int16 v4; 
  unsigned __int16 v5; 
  VOID *v7; 

  LODWORD(v2) = 0;
  v4 = a1;
  if( *a2 == 1 )
  {
    v5 = (unsigned __int8)a2[1] - 6;
    if( (v5 & 1) == 0 )
    {
      v7 = 0i64;
      ExtEnvAllocateMemory(a1, (unsigned int)v5 + 24, (INT64 *)&v7);
      v2 = v7;
      if( v7 )
      {
        memset(v7, 0i64, v5 + 24);
        *(_DWORD *)v2 = 1;
        v2[4] = v4;
        *((_BYTE *)v2 + 11) = a2[5];
        v2[7] = v5 >> 1;
        *((_QWORD *)v2 + 2) = v2 + 12;
        memmove(v2 + 12, a2 + 6, v5);
      }
    }
  }
  return(int)v2;
}

Referenced by:

HalpIvtCreateReservedDevice