CmGetInstallerClassMappedPropertyLocales

NTSTATUS __stdcall CmGetInstallerClassMappedPropertyLocales(
        _DEVPROPKEY *PropertyKey,
        WCHAR *Buffer,
        UINT64 BufferLength,
        UINT64 *RequiredLength){
  DEVPROPKEY **v4; 
  NTSTATUS v5; 
  unsigned int v6; 
  DEVPROPKEY *v7; 
  UINT64 v8; 
  unsigned int v9; 
  const UINT8 *v10; 
  __int64 v11; 
  UINT64 v12; 
  int v13; 
  DEVPROPKEY **v14; 
  unsigned int v15; 
  DEVPROPKEY *v16; 
  UINT64 v17; 
  UINT64 v18; 
  _WORD *v20; 
  int v21; 
  _DWORD *v22; 

  v4 = &CmClassRegPropMap;
  v5 = -1073741802;
  v6 = 0;
  *v22 = 0;
  while( 1 )
  {
    v7 = *v4;
    if( *v4 && *((_DWORD *)RequiredLength + 4) == v7->pid )
    {
      v8 = *RequiredLength - *(_QWORD *)&v7->fmtid.Data1;
      if( *RequiredLength == *(_QWORD *)&v7->fmtid.Data1 )
        v8 = RequiredLength[1] - *(_QWORD *)v7->fmtid.Data4;
      if( !v8 )
        break;
    }
    ++v6;
    v4 += 3;
    if( v6 >= 9 )
    {
      v9 = 0;
      v10 = &Create;
      while( 1 )
      {
        v11 = *(_QWORD *)v10;
        if( *(_QWORD *)v10 && *((_DWORD *)RequiredLength + 4) == *(_DWORD *)(v11 + 16) )
        {
          v12 = *RequiredLength - *(_QWORD *)v11;
          if( *RequiredLength == *(_QWORD *)v11 )
            v12 = RequiredLength[1] - *(_QWORD *)(v11 + 8);
          if( !v12 )
            goto LABEL_25;
        }
        ++v9;
        v10 += 32;
        if( v9 >= 0xD )
        {
          v13 = *((_DWORD *)RequiredLength + 4);
          v14 = &off_140983F60;
          v15 = 0;
          while( 1 )
          {
            v16 = *v14;
            if( v13 == (*v14)->pid )
            {
              v17 = *RequiredLength - *(_QWORD *)&v16->fmtid.Data1;
              if( *RequiredLength == *(_QWORD *)&v16->fmtid.Data1 )
                v17 = RequiredLength[1] - *(_QWORD *)v16->fmtid.Data4;
              if( !v17 )
                goto LABEL_25;
            }
            ++v15;
            v14 += 2;
            if( v15 >= 4 )
            {
              if( v13 != 2 )
                return v5;
              v18 = *RequiredLength - *(_QWORD *)&DEVPKEY_DeviceClass_ClassCoInstallers.fmtid.Data1;
              if( *RequiredLength == *(_QWORD *)&DEVPKEY_DeviceClass_ClassCoInstallers.fmtid.Data1 )
                v18 = RequiredLength[1] - *(_QWORD *)DEVPKEY_DeviceClass_ClassCoInstallers.fmtid.Data4;
              if( v18 )
                return v5;
              goto LABEL_25;
            }
          }
        }
      }
    }
  }
LABEL_25:
  *v22 = 1;
  if( !v21 )
    return -1073741789;
  v5 = 0;
  *v20 = 0;
  return v5;
}

Referenced by:

PnpDispatchInstallerClass