CmGetDeviceInstanceKeyPath

NTSTATUS __stdcall CmGetDeviceInstanceKeyPath(
        HPNPCTX *hPnpCtx,
        const WCHAR *DeviceInstanceId,
        _CM_KEY_TYPE CmKeyTypeFlags,
        UINT64 HardwareProfileId,
        UINT8 Create,
        WCHAR *BaseKeyPath,
        UINT64 BaseKeyLength,
        UINT64 *RequiredLength){
  __int64 v8; 
  unsigned __int64 v9; 
  __int64 v11; 
  unsigned __int64 v12; 
  __int64 v13; 
  unsigned __int64 v14; 
  UINT64 dwFlags; 

  if( (CmKeyTypeFlags & 0x200) == 0 )
  {
    v8 = -1i64;
    do
      ++v8;
    while( DeviceInstanceId[v8] );
    v9 = v8 + 31;
    if( v9 <= 0xFFFFFFFF )
    {
      if( RequiredLength )
        *(_DWORD *)RequiredLength = v9;
      if( (unsigned int)v9 <= (unsigned int)BaseKeyLength )
      {
        LODWORD(dwFlags) = 2048;
        return RtlStringCchPrintfExW(BaseKeyPath, (unsigned int)BaseKeyLength, 0i64, 0i64, dwFlags, (WCHAR *)L"%s\\%s");
      }
      return -1073741789;
    }
    return -1073741675;
  }
  if( !(_DWORD)HardwareProfileId )
  {
    v11 = -1i64;
    do
      ++v11;
    while( DeviceInstanceId[v11] );
    v12 = v11 + 82;
    if( v12 <= 0xFFFFFFFF )
    {
      if( RequiredLength )
        *(_DWORD *)RequiredLength = v12;
      if( (unsigned int)v12 <= (unsigned int)BaseKeyLength )
      {
        LODWORD(dwFlags) = 2048;
        return RtlStringCchPrintfExW(
                 BaseKeyPath,
                 (unsigned int)BaseKeyLength,
                 0i64,
                 0i64,
                 dwFlags,
                 (WCHAR *)L"%s\\%s\\%s");
      }
      return -1073741789;
    }
    return -1073741675;
  }
  if( (_DWORD)HardwareProfileId == -1 )
    return -1073741811;
  v13 = -1i64;
  do
    ++v13;
  while( DeviceInstanceId[v13] );
  v14 = v13 + 79;
  if( v14 > 0xFFFFFFFF )
    return -1073741675;
  if( RequiredLength )
    *(_DWORD *)RequiredLength = v14;
  if( (unsigned int)v14 > (unsigned int)BaseKeyLength )
    return -1073741789;
  LODWORD(dwFlags) = 2048;
  return RtlStringCchPrintfExW(
           BaseKeyPath,
           (unsigned int)BaseKeyLength,
           0i64,
           0i64,
           dwFlags,
           (WCHAR *)L"%s\\%04u\\%s\\%s");
}

Referenced by:

CmGetDeviceRegKeyPath