CmFindFilterListInflectionPoint

wchar_t *__fastcall CmFindFilterListInflectionPoint(wchar_t *Str1, wchar_t *a2, wchar_t *Str2){
  wchar_t *v3; 
  wchar_t *v6; 
  wchar_t *v7; 
  __int64 v8; 
  wchar_t *v9; 
  __int64 v10; 
  __int64 v11; 
  v3 = Str1;
  v6 = 0i64;
  v7 = 0i64;
  if( a2 && *a2 && *Str1 )
  {
    while( 1 )
    {
      v6 = 0i64;
      v8 = -1i64;
      do
        ++v8;
      while( v3[v8] );
      v9 = a2;
      if( *a2 )
      {
        while( 1 )
        {
          v10 = -1i64;
          do
            ++v10;
          while( v9[v10] );
          if( (_DWORD)v10 == (_DWORD)v8 && !wcsicmp(v9, v3) )
            break;
          v9 += (unsigned int)(v10 + 1);
          if( !*v9 )
            goto LABEL_14;
        }
        v6 = v9;
      }
LABEL_14:
      if( v6 )
        break;
      if( !wcsicmp(v3, Str2) )
        v7 = v3;
      v11 = -1i64;
      do
        ++v11;
      while( v3[v11] );
      v3 += v11 + 1;
      if( !*v3 )
      {
        if( v7 )
          return v7;
        return v6;
      }
    }
  }
  return v6;
}

Referenced by:

CmMergeFilterLists