PiDevCfgGetMigrationDeviceIdScore

VOID __stdcall PiDevCfgGetMigrationDeviceIdScore(const WCHAR *SourceDeviceIds, const WCHAR *TargetDeviceIds){
  const wchar_t *v2; 
  const WCHAR *v3; 
  __int16 v4; 
  char v5; 
  unsigned __int16 v6; 
  const wchar_t *v7; 
  wchar_t v8; 
  const wchar_t *v9; 
  __int64 v10; 
  __int16 v11; 
  __int64 v12; 
  const wchar_t *v13; 
  unsigned __int16 v14; 
  __int64 v15; 
  __int64 v16; 
  const WCHAR *v17; 
  bool v18; 
  __int64 v19; 
  const wchar_t *v20; 

  v2 = TargetDeviceIds;
  v3 = SourceDeviceIds;
  v4 = 0;
  v5 = 0;
  if( SourceDeviceIds )
  {
    if( TargetDeviceIds )
    {
      v6 = 0x4000;
      v7 = TargetDeviceIds;
      if( *TargetDeviceIds )
      {
        do
        {
          v8 = *v3;
          v9 = v3;
          if( *v3 )
          {
            while( wcsicmp(v9, v7) )
            {
              v10 = -1i64;
              do
                ++v10;
              while( v9[v10] );
              v9 += v10 + 1;
              if( !*v9 )
              {
                v8 = 0;
                goto LABEL_11;
              }
            }
            v8 = *v9;
            v5 = 1;
          }
LABEL_11:
          v11 = v4 | v6;
          if( v8 )
            v11 = v4;
          v4 = v11;
          v12 = -1i64;
          do
            ++v12;
          while( v7[v12] );
          v13 = &v7[v12];
          v14 = v6 >> 1;
          v7 = v13 + 1;
          if( v6 <= 2u )
            v14 = v6;
          v6 = v14;
        }
        while( *v7 );
        if( v5 )
        {
          wcsicmp(v3, v2);
          v15 = -1i64;
          do
            ++v15;
          while( v3[v15] );
          while( 1 )
          {
            v18 = v3[v15 + 1] == 0;
            v16 = -1i64;
            if( v18 )
              break;
            do
              ++v16;
            while( v3[v16] );
            v17 = &v3[v16];
            v15 = -1i64;
            v3 = v17 + 1;
            do
              ++v15;
            while( v3[v15] );
          }
          do
            ++v16;
          while( v2[v16] );
          while( v2[v16 + 1] )
          {
            v19 = -1i64;
            do
              ++v19;
            while( v2[v19] );
            v20 = &v2[v19];
            v16 = -1i64;
            v2 = v20 + 1;
            do
              ++v16;
            while( v2[v16] );
          }
          wcsicmp(v3, v2);
        }
      }
    }
  }
}

Referenced by:

PiDevCfgFindDeviceMigrationNode