// Rusian

     case 382:   // cyr_to_lat_html 376 
      t=0;
      goto E14r;
   //case 382:   // cyr_to_lat_noqu
   // t=1;
   // goto E14r;
     case 383:    // cyr_to_lat
      t=2;
E14r: {
        char *map[] = {"Jo","jo",
        "A","B","V","G","D","E","X","Z","I","J","K","L","M","N","O","P","R","S","T","U","F","H","C","Q","W","Wq","^\"","Y","^'","^E","Ju","Ja",
        "a","b","v","g","d","e","x","z","i","j","k","l","m","n","o","p","r","s","t","u","f","h","c","q","w","wq","\"","y","'","^e","ju","ja"
                      };

        BYTE *Str = StringStore+Buda2[Arguments];
        DWORD br, open_qu;
        static DWORD save_st=0;   // 0  - not a html
                                  // 1  - html text
                                  // 2  - * have to be add
                                  // 3  - &something;
                                  // 4  - <tag>
                                  // 4< - *<tag>
        if (t)
        {
          open_qu= 0-t;
          save_st=0;
        }
        else if (save_st<3)
        {
          open_qu=(save_st==2)?(sv_StStore-1):M2;
          save_st=1;
        }
        else
          open_qu=M1;

        i = sv_StStore;
        for(br = 0; Str[br] != 0; br++)
        {
          if (save_st && save_st<4)
          {
            if (Str[br]=='<')
            {
              save_st=4;
              goto e22r;
            }
            else if (Str[br]=='&')
            {
              if (Str[br+1]=='#')
              {
                int char_num=0, br2;
                if (Str[br+2]=='x' || Str[br+2]=='X')
                {
                  for( br2=br+3; 1; br2++)
                    if (Str[br2]>='0' && Str[br2]<='9')
                      char_num=16*char_num+(Str[br2]-'0');
                    else if (Str[br2]>='A' && Str[br2]<='F')
                      char_num=16*char_num+(Str[br2]-'A'+10);
                    else if (Str[br2]>='a' && Str[br2]<='f')
                      char_num=16*char_num+(Str[br2]-'a'+10);
                    else
                      break;
                }
                else
                {
                  for( br2=br+2; Str[br2]>='0' && Str[br2]<='9'; br2++)
                    char_num=10*char_num+(Str[br2]-'0');
                }
                if (Str[br2]==';' && ((char_num>=0x410 && char_num<=0x44f)
                                                || char_num==0x451 || char_num==0x401))
                {
                  if (char_num==0x0451)
                    char_num=1;
                  else if (char_num==0x401)
                    char_num=0;
                  else
                    char_num-=0x410-2;
                  br=br2;
                  if (open_qu<M2)
                  {
                    for( open_qu++; open_qu<i && StringStore[open_qu]<='9' && StringStore[open_qu]>='.'; open_qu++); // . / 0-9
                    for(j=i; j>open_qu; StringStore[j]=StringStore[j-1], j--);
                    StringStore[open_qu] ='*';
                    i++;
                    open_qu=M2;
                  }
                  StringStore[i++] = map[char_num][0];
                  if (map[char_num][1])
                    StringStore[i++] = map[char_num][1];
                  goto e23r;
                }
              }  
              save_st=3;
e22r:         if (open_qu<M2)
              {
                for( open_qu++; open_qu<i && StringStore[open_qu]<='9' && StringStore[open_qu]>='.'; open_qu++); // . / 0-9
                if (i==open_qu && save_st==4)
                  save_st=i; // we know that this is >4
                for(j=i; j>open_qu; StringStore[j]=StringStore[j-1], j--);
                StringStore[open_qu] ='*';
                i++;
              }
              open_qu=M1;
            }
          }
          if (Str[br] >= 192 || Str[br]==168 || Str[br]==184) //  && Str[br] <= 255
          {
            int my_char= (Str[br] >= 192?Str[br]-190: (Str[br]==184)) ;
            if (open_qu<M2)
            {
              for( open_qu++; open_qu<i && StringStore[open_qu]<='9' && StringStore[open_qu]>='.'; open_qu++); // . / 0-9
              for(j=i; j>open_qu; StringStore[j]=StringStore[j-1], j--);
              StringStore[open_qu] ='*';
              i++;
              open_qu=M2;
            }
            StringStore[i++] = map[my_char][0];
            if (map[my_char][1])
              StringStore[i++] = map[my_char][1];
            switch(Str[br])
            {
             case 0xf8: // 'ø' w
             case 0xd8: // 'Ø' W
              if (Str[br+1] == 0xf7 || Str[br+1] == 0xd7)  // q Q
                StringStore[i++] ='|'; 
              else if (Str[br+1]=='|' && open_qu==M2 && (Str[br+2]==0xf7 || Str[br+2]==0xd7))  // q Q
              {
                StringStore[i++] ='*'; 
                StringStore[i++] ='|'; 
                StringStore[i++] ='*';
                br++; 
              }
              break;
             case 0xe9: // j
             case 0xc9: // J
              if (Str[br+1]==0xe0 || Str[br+1]==0xf3 || Str[br+1]==0xee
                   || Str[br+1]==0xc0 || Str[br+1]==0xd3 || Str[br+1]==0xce) // a, u, o, A, U, O
                StringStore[i++] ='|'; 
              else if (Str[br+1]=='|' && open_qu==M2 && (Str[br+2]==0xe0 || Str[br+2]==0xf3 || Str[br+2]==0xee
                   || Str[br+2]==0xc0 || Str[br+2]==0xd3 || Str[br+2]==0xce)) // a, u, o, A, U, O
              {
                StringStore[i++] ='*'; 
                StringStore[i++] ='|'; 
                StringStore[i++] ='*';
                br++; 
              }
              break;
            }
          }
          else
          {
            if (open_qu<M1)
            {
              if ((Str[br]>=65 && Str[br]<=122 && (Str[br]<=90 || Str[br]>=97))
                 || Str[br]=='\'' || Str[br]=='"' || Str[br]=='^' || (Str[br]>=145 && Str[br]<=148))
              {
                if (open_qu==M2)
                  StringStore[i++] ='*';
                open_qu=i;
              }
              else if (Str[br]=='*')
                StringStore[i++] = '*';
            }
            else if (save_st>2)
            {
              if (save_st>3)
              {
                if (Str[br]=='>')
                {
                  if (Str[br+1]=='<')
                  {
                    StringStore[i++] ='>';
                    br++; 
                  }
                  else if (save_st>4 && (Str[br+1]>=65 && Str[br+1]<=122 && (Str[br+1]<=90 || Str[br+1]>=97)))
                  {
                    StringStore[i] ='>';
                    for(j=save_st; j<i; StringStore[j]=StringStore[j+1], j++);
                    br++; 
                    open_qu=i;
                    save_st=1;
                  }
                  else
                  {
                    open_qu=M2;
                    save_st=1;
                  }
                }
              }
              else if (!(Str[br]>=48 && Str[br]<=122
                          && !(Str[br]>90 && Str[br]<97) && !(Str[br]>57 && Str[br]<65))
                           && Str[br]!='&' && Str[br]!='#')
              {
                open_qu=M2;
                save_st=1;
              }
            }
            StringStore[i++] = Str[br];
          }

e23r:     if (i>=STRING_STORE)
          {
            if (correct_STR_ST() )
              goto FULL;
            Str = StringStore+Buda2[Arguments];
          }
        }
        if (open_qu<M2)
        {
          for( open_qu++; open_qu<i && StringStore[open_qu]<='9' && StringStore[open_qu]>='.'; open_qu++); // . / 0-9
          if (i>open_qu || save_st==0)
          {
            for(j=i; j>open_qu; StringStore[j]=StringStore[j-1], j--);
            StringStore[open_qu] ='*';
            i++;
          }
          else
            save_st=2;
        }
        if (save_st>4)
          save_st=4;
        StringStore[i++] = 0;
        Buda2[Return] = sv_StStore;
        sv_StStore = i;
        Buda1[Return]=TT_STR;
        return(1);
      }
     case 384:    // lat_to_cyr, Russian
      {
        char map[] = {'À','Á','Ö','Ä','Å','Ô','Ã','Õ','È','É','Ê','Ë','Ì','Í','Î','Ï','×','Ð','Ñ','Ò','Ó','Â','Ø','Æ','Û','Ç',0,0,0,0,0,0,
                      'à','á','ö','ä','å','ô','ã','õ','è','é','ê','ë','ì','í','î','ï','÷','ð','ñ','ò','ó','â','ø','æ','û','ç'
                     };
        BYTE *Str = StringStore+Buda2[Arguments];
        int br, open_qu=0;

        i = sv_StStore;
        for(br = 0; Str[br] != 0; br++) {
          if (open_qu==0 && ((Str[br] >= 65 && Str[br] <= 148
           && (Str[br]<=90 || Str[br]>=97) && (Str[br]<=122 || Str[br]>=145))
            || Str[br]=='\'' || Str[br]=='"' || Str[br]=='^'))
          {
            switch(Str[br])
            {
             case '\'':
             case 145:
             case 146:
              StringStore[i++] = 'ü'; // er malyk
              break;
             case '"':
             case 147:
             case 148:
              StringStore[i++] = 'ú'; // er goljam
              break;
             case '^':
              if (Str[br+1]=='e')
              {
                StringStore[i++] = 'ý'; br++; // ^e oborotnoe
              }
              else if (Str[br+1]=='E')
              {
                StringStore[i++] = 'Ý'; br++; // ^E oborotnoe
              }
              else if (Str[br+1]=='\'' || Str[br+1]==145 || Str[br+1]==146)
              {
                StringStore[i++] = 'Ü'; br++; // big er malyk
              }
              else if (Str[br+1]=='"' || Str[br+1]==147 || Str[br+1]==148)
              {
                StringStore[i++] = 'Ú'; br++; // big er goljam
              }
              else
                StringStore[i++] = Str[br];
              break;
             case 'w':
              StringStore[i] = 'ù'; // wq
e17r:         if (Str[br+1]=='q' || Str[br+1]=='Q')
              {
                i++; br++; goto e14r;
              }
              else if (Str[br+1]=='|' && (Str[br+2]=='q' || Str[br+2]=='Q'))
              {
                StringStore[i++] = map[Str[br++]-65]; // w, W
                goto e14r;
              }
              StringStore[i++] = map[Str[br]-65];
              break;
             case 'W':
              StringStore[i] = 'Ù';  // Wq
              goto e17r;
             case 'j':
              if (Str[br+1]=='|' && (Str[br+2]=='a' || Str[br+2]=='u' || Str[br+2]=='o'
                                  || Str[br+2]=='A' || Str[br+2]=='U' || Str[br+2]=='O'))
              {
                br++;
                StringStore[i++] = 0xe9; // j
                goto e14r;
              }
              if (Str[br+1] == 'a' || Str[br+1] == 'A')
              {
                StringStore[i++] = 'ÿ';
                br++; goto e14r;
              }
              else if (Str[br+1] == 'u' || Str[br+1] == 'U')
              {
                StringStore[i++] = 'þ';
                br++; goto e14r;
              }
              else if (Str[br+1] == 'o' || Str[br+1] == 'O')
              {
                StringStore[i++] = '¸'; // jo
                br++; goto e14r;
              }
              StringStore[i++] = map[Str[br]-65];
              break;
             case 'J':
              if (Str[br+1]=='|' && (Str[br+2]=='a' || Str[br+2]=='u' || Str[br+2]=='o'
                                  || Str[br+2]=='A' || Str[br+2]=='U' || Str[br+2]=='O'))
              {
                br++;
                StringStore[i++] = 0xc9; // J
                goto e14r;
              }
              if (Str[br+1] == 'a' || Str[br+1] == 'A')
              {
                StringStore[i++] = 'ß';
                br++; goto e14r;
              }
              else if (Str[br+1] == 'u' || Str[br+1] == 'U')
              {
                StringStore[i++] = 'Þ';
                br++; goto e14r;
              }
              else if (Str[br+1] == 'o' || Str[br+1] == 'O')
              {
                StringStore[i++] = '¨'; // Jo
                br++; goto e14r;
              }
              StringStore[i++] = map[Str[br]-65];
              break;
             default:
              StringStore[i++] = map[Str[br]-65];
            }
          }
          else if (Str[br]=='*')
          {
            if (Str[br+1]=='*')
            {
              StringStore[i++] = '*';
              br++;
            }
            else
              open_qu=1-open_qu;
          }
          else
            StringStore[i++] = Str[br];

e14r:     if (i>=STRING_STORE)
          {
            if (correct_STR_ST() )
              goto FULL;
            Str = StringStore+Buda2[Arguments];
          }
        }
        StringStore[i++] = 0;
        Buda2[Return] = sv_StStore;
        sv_StStore = i;
        Buda1[Return]=TT_STR;
        return(1);
      }

// Bulgarian

     case 206:   // cyr_to_lat_html
      t=0;
      goto E14b;
   //case 206:   // cyr_to_lat_noqu
   // t=1;
   // goto E14b;
     case 361:    // cyr_to_lat
      t=2;
E14b: {
        char *map[] = {"A","B","V","G","D","E","X","Z","I","J","K","L","M","N","O","P","R","S","T","U","F","H","C","Q","W","Wt","Y","Û","J","Ý","Ju","Ja",
                       "a","b","v","g","d","e","x","z","i","j","k","l","m","n","o","p","r","s","t","u","f","h","c","q","w","wt","y","û","j","ý","ju","ja"
                      };

        BYTE *Str = StringStore+Buda2[Arguments];
        DWORD br, open_qu;
        static DWORD save_st=0;   // 0  - not a html
                                  // 1  - html text
                                  // 2  - ' have to be add
                                  // 3  - &something;
                                  // 4  - <tag>
                                  // 4< - '<tag>
        if (t)
        {
          open_qu= 0-t;
          save_st=0;
        }
        else if (save_st<3)
        {
          open_qu=(save_st==2)?(sv_StStore-1):M2;
          save_st=1;
        }
        else
          open_qu=M1;

        i = sv_StStore;
        for(br = 0; Str[br] != 0; br++)
        {
          if (save_st && save_st<4)
          {
            if (Str[br]=='<')
            {
              save_st=4;
              goto e22b;
            }
            else if (Str[br]=='&')
            {
              if (Str[br+1]=='#')
              {
                int char_num=0, br2;
                if (Str[br+2]=='x' || Str[br+2]=='X')
                {
                  for( br2=br+3; 1; br2++)
                    if (Str[br2]>='0' && Str[br2]<='9')
                      char_num=16*char_num+(Str[br2]-'0');
                    else if (Str[br2]>='A' && Str[br2]<='F')
                      char_num=16*char_num+(Str[br2]-'A'+10);
                    else if (Str[br2]>='a' && Str[br2]<='f')
                      char_num=16*char_num+(Str[br2]-'a'+10);
                    else
                      break;
                }
                else
                {
                  for( br2=br+2; Str[br2]>='0' && Str[br2]<='9'; br2++)
                    char_num=10*char_num+(Str[br2]-'0');
                }
                if (Str[br2]==';' && ((char_num>=0x410 && char_num<=0x44f)
                                                || char_num==0x45D || char_num==0x40D))
                {
                  if (char_num==0x45D)
                    char_num=0x29;
                  else if (char_num==0x40D)
                    char_num=0x9;
                  else
                    char_num-=0x410;
                  br=br2;
                  if (open_qu<M2)
                  {
                    for( open_qu++; open_qu<i && StringStore[open_qu]<='9' && StringStore[open_qu]>='.'; open_qu++); // . / 0-9
                    for(j=i; j>open_qu; StringStore[j]=StringStore[j-1], j--);
                    StringStore[open_qu] ='\'';
                    i++;
                    open_qu=M2;
                  }
                  StringStore[i++] = map[char_num][0];
                  if (map[char_num][1])
                    StringStore[i++] = map[char_num][1];
                  goto e23b;
                }
              }  
              save_st=3;
e22b:         if (open_qu<M2)
              {
                for( open_qu++; open_qu<i && StringStore[open_qu]<='9' && StringStore[open_qu]>='.'; open_qu++); // . / 0-9
                if (i==open_qu && save_st==4)
                  save_st=i; // we know that this is >4
                for(j=i; j>open_qu; StringStore[j]=StringStore[j-1], j--);
                StringStore[open_qu] ='\'';
                i++;
              }
              open_qu=M1;
            }
          }
          if (Str[br] >= 192) //  && Str[br] <= 255
          {
            if (open_qu<M2)
            {
              for( open_qu++; open_qu<i && StringStore[open_qu]<='9' && StringStore[open_qu]>='.'; open_qu++); // . / 0-9
              for(j=i; j>open_qu; StringStore[j]=StringStore[j-1], j--);
              StringStore[open_qu] ='\'';
              i++;
              open_qu=M2;
            }
            StringStore[i++] = map[Str[br]-192][0];
            if (map[Str[br]-192][1])
              StringStore[i++] = map[Str[br]-192][1];
            switch(Str[br])
            {
             case 0xf8: // 'ø' w
             case 0xd8: // 'Ø' W
              if (Str[br+1] == 0xf2 || Str[br+1] == 0xd2)  // 'ò't 'Ò'T
              {
                if (!(Str[br+3]<192
                && (Str[br+2]==0xe0 || Str[br+2]==0xee || Str[br+2]==0xc0 || Str[br+2]==0xce) // a, o, A, O
                && ((Str[br-3]<192 && (Str[br-1]==0xe0 || Str[br-1]==0xc0) // a, A
                 && (Str[br-2]==0xed || Str[br-2]==0xe2 || Str[br-2]==0xcd || Str[br-2]==0xc2)) // n, v, N, V
                   || ((Str[br-1]==0xee || Str[br-1]==0xce) && (Str[br-2]==0xf2 || Str[br-2]==0xd2)
                    && (Str[br-3]==0xf1 || Str[br-3]==0xd1) && (Str[br-4]==0xf3 || Str[br-4]==0xd3)
                    && (Str[br-5]==0xef || Str[br-5]==0xcf) && (Str[br+2]==0xe0 || Str[br+2]==0xc0)))))
                // nawta, vawta, pustowta
                  StringStore[i++] ='|'; 
              }
              else if ((Str[br+1]=='|' || Str[br+1]=='^') && open_qu==M2 && (Str[br+2]==0xf2 || Str[br+2]==0xd2))  // t T
              {
                StringStore[i++] ='\''; 
                StringStore[i++] =Str[br+1]; 
                StringStore[i++] ='\'';
                br++; 
              }
              break;
             case 0xf9: // wt
             case 0xd9: // Wt
              if (Str[br+2]<192
               && (Str[br+1]==0xe0 || Str[br+1]==0xee || Str[br+1]==0xc0 || Str[br+1]==0xce) // a, o, A, O
                && ((Str[br-3]<192 && (Str[br-1]==0xe0 || Str[br-1]==0xc0) // a, A
                 && (Str[br-2]==0xed || Str[br-2]==0xe2 || Str[br-2]==0xcd || Str[br-2]==0xc2)) // n, v, N, V
                   || ((Str[br-1]==0xee || Str[br-1]==0xce) && (Str[br-2]==0xf2 || Str[br-2]==0xd2)
                    && (Str[br-3]==0xf1 || Str[br-3]==0xd1) && (Str[br-4]==0xf3 || Str[br-4]==0xd3)
                    && (Str[br-5]==0xef || Str[br-5]==0xcf) && (Str[br+1]==0xe0 || Str[br+1]==0xc0))))
              { // nawta, vawta, pustowta
                StringStore[i-1] ='^';
                StringStore[i++] ='t';
              }  
              break;
             case 0xfc: // j&
             case 0xdc: // J&
              if (save_st<3 && !((Str[br+1]==0xee || Str[br+1]==0xce) // o, O
              && (Str[br-1]>0xc0
              && ((Str[br-1]<0xda && Str[br-1]!=0xc5 && Str[br-1]!=0xc8 && Str[br-1]!=0xce && Str[br-1]!=0xd3)
              || (Str[br-1]>0xe0
               &&  Str[br-1]<0xfa && Str[br-1]!=0xe5 && Str[br-1]!=0xe8 && Str[br-1]!=0xee && Str[br-1]!=0xf3)))))
              {
                StringStore[i++] ='&'; // not OK
                if (save_st)
                {
                  StringStore[i++]='a'; StringStore[i++]='m';
                  StringStore[i++]='p'; StringStore[i++]=';';
                }
              }
              break;
             case 0xe9: // j#
             case 0xc9: // J#
              if (Str[br+1]==0xee || Str[br+1]==0xce) // o, O
              {
                if (Str[br-1]>0xc0
                && ((Str[br-1]<0xda && Str[br-1]!=0xc5 && Str[br-1]!=0xc8 && Str[br-1]!=0xce && Str[br-1]!=0xd3)
                || (Str[br-1]>0xe0
                 &&  Str[br-1]<0xfa && Str[br-1]!=0xe5 && Str[br-1]!=0xe8 && Str[br-1]!=0xee && Str[br-1]!=0xf3)))
                  StringStore[i++] ='#'; // not OK
              }
              else if (Str[br+1]==0xe0 || Str[br+1]==0xf3 || Str[br+1]==0xc0 || Str[br+1]==0xd3) // a, u, A, U
                StringStore[i++] ='|'; 
              else if (open_qu==M2
                && (Str[br+1]=='#' || Str[br+1]=='*' || (Str[br+1]=='&' && save_st==0)
               || ((Str[br+1]=='|' || Str[br+1]=='^')
               && (Str[br+2]==0xe0 || Str[br+2]==0xf3 || Str[br+2]==0xc0 || Str[br+2]==0xd3)))) // a, u, A, U
              {
                StringStore[i++] ='\''; 
                open_qu=i;
                StringStore[i++] =Str[++br]; 
              }
              break;
            }
          }
          else
          {
            if (open_qu<M1)
            {
              if (Str[br]>=65 && Str[br]<=122 && (Str[br]<=90 || Str[br]>=97))
              {
                if (open_qu==M2)
                  StringStore[i++] ='\'';
                open_qu=i;
              }
              else if (Str[br]=='\'' || Str[br]==145 || Str[br]==146) // ' '
                StringStore[i++] = Str[br];
            }
            else if (save_st>2)
            {
              if (save_st>3)
              {
                if (Str[br]=='>')
                {
                  if (Str[br+1]=='<')
                  {
                    StringStore[i++] ='>';
                    br++; 
                  }
                  else if (save_st>4 && (Str[br+1]>=65 && Str[br+1]<=122 && (Str[br+1]<=90 || Str[br+1]>=97)))
                  {
                    StringStore[i] ='>';
                    for(j=save_st; j<i; StringStore[j]=StringStore[j+1], j++);
                    br++; 
                    open_qu=i;
                    save_st=1;
                  }
                  else
                  {
                    open_qu=M2;
                    save_st=1;
                  }
                }
              }
              else if (!(Str[br]>=48 && Str[br]<=122
                          && !(Str[br]>90 && Str[br]<97) && !(Str[br]>57 && Str[br]<65))
                           && Str[br]!='&' && Str[br]!='#')
              {
                open_qu=M2;
                save_st=1;
              }
            }
            StringStore[i++] = Str[br];
          }

e23b:     if (i>=STRING_STORE)
          {
            if (correct_STR_ST() )
              goto FULL;
            Str = StringStore+Buda2[Arguments];
          }
        }
        if (open_qu<M2)
        {
          for( open_qu++; open_qu<i && StringStore[open_qu]<='9' && StringStore[open_qu]>='.'; open_qu++); // . / 0-9
          if (i>open_qu || save_st==0)
          {
            for(j=i; j>open_qu; StringStore[j]=StringStore[j-1], j--);
            StringStore[open_qu] ='\'';
            i++;
          }
          else
            save_st=2;
        }
        if (save_st>4)
          save_st=4;
        StringStore[i++] = 0;
        Buda2[Return] = sv_StStore;
        sv_StStore = i;
        Buda1[Return]=TT_STR;
        return(1);
      }
     case 362:    // lat_to_cyr
      {
        char map[] = {'À','Á','Ö','Ä','Å','Ô','Ã','Õ','È','É','Ê','Ë','Ì','Í','Î','Ï','×','Ð','Ñ','Ò','Ó','Â','Ø','Æ','Ú','Ç',0,0,0,0,0,0,
                      'à','á','ö','ä','å','ô','ã','õ','è','é','ê','ë','ì','í','î','ï','÷','ð','ñ','ò','ó','â','ø','æ','ú','ç'
                     };
        BYTE *Str = StringStore+Buda2[Arguments];
        int br, open_qu=0;

        i = sv_StStore;
        for(br = 0; Str[br] != 0; br++) {
          if (open_qu==0 && Str[br] >= 65 && Str[br] <= 122 && (Str[br]<=90 || Str[br]>=97))
          {
            switch(Str[br])
            {
             case 'w':
              StringStore[i] = 'ù'; // wt
e17b:         if ((Str[br+1]=='t' || Str[br+1]=='T')
                && !((Str[br+2]=='a' || Str[br+2]=='o' || Str[br+2]=='A' || Str[br+2]=='O')
                 && !(Str[br+3]>=65 && Str[br+3]<=122 && (Str[br+3]<=90 || Str[br+3]>=97))
                 && ((Str[br-1]=='a' || Str[br-1]=='A')
                  && !(Str[br-3]>=65 && Str[br-3]<=122 && (Str[br-3]<=90 || Str[br-3]>=97))
                  && (Str[br-2]=='v' || Str[br-2]=='n' || Str[br-2]=='V' || Str[br-2]=='N')
                 || ((Str[br-1]=='o' || Str[br-1]=='O') && (Str[br-2]=='t' || Str[br-2]=='T')
                  && (Str[br-3]=='s' || Str[br-3]=='S') && (Str[br-4]=='u' || Str[br-4]=='U')
                  && (Str[br-5]=='p' || Str[br-5]=='P') && (Str[br+2]=='a' || Str[br+2]=='A')))))
              {// nawta, vawta, pustowta
                i++; br++; goto e14b;
              }
              else if ((Str[br+1]=='^' || Str[br+1]=='|') && (Str[br+2]=='t' || Str[br+2]=='T'))
              {
                if (Str[br+1]=='^')
                {
                  i++; br+=2;
                }
                else
                  StringStore[i++] = map[Str[br++]-65]; // w, W
                goto e14b;
              }
              break;
             case 'W':
              StringStore[i] = 'Ù';  // Wt
              goto e17b;
             case 'j':
              if ((Str[br+1]=='^' || Str[br+1]=='|')
                && (Str[br+2]=='a' || Str[br+2]=='u' || Str[br+2]=='A' || Str[br+2]=='U'))
              {
                if (Str[++br]=='|')
                {
                  StringStore[i++] = 0xe9; // j
                  goto e14b;
                }
              }
              if (Str[br+1] == 'a' || Str[br+1] == 'A')
              {
                StringStore[i++] = 'ÿ';
                br++; goto e14b;
              }
              else if (Str[br+1] == 'u' || Str[br+1] == 'U')
              {
                StringStore[i++] = 'þ';
                br++; goto e14b;
              }
              else if (Str[br+1] == '#' || Str[br+1] == '*')
              {
                StringStore[i++] = 0xe9; // j
                br++; goto e14b;
              }
              else if (Str[br+1] == '&')
              {
                StringStore[i++] = 'ü'; // j&
                br++; goto e14b;
              }
              else if (Str[br+1] == 'o' || Str[br+1] == 'O')
              {
                StringStore[i] = 'ü';
e15b:           if (br  && Str[br-1] > 65)
                {
                  if (Str[br-1]<=90)
                    j=Str[br-1];
                  else if (Str[br-1] <= 122 && Str[br-1]>97)
                    j=Str[br-1]-32;
                  else
                    break;
                  if (j==69 || j==73 || j==79 || j==85 || j==88)
                    break;
                  i++;
                  goto e14b;
                }
              }
              break;
             case 'J':
              if ((Str[br+1]=='^' || Str[br+1]=='|')
                && (Str[br+2]=='a' || Str[br+2]=='u' || Str[br+2]=='A' || Str[br+2]=='U'))
              {
                if (Str[++br]=='|')
                {
                  StringStore[i++] = 0xc9; // J
                  goto e14b;
                }
              }
              if (Str[br+1] == 'a' || Str[br+1] == 'A')
              {
                StringStore[i++] = 'ß';
                br++; goto e14b;
              }
              else if (Str[br+1] == 'u' || Str[br+1] == 'U')
              {
                StringStore[i++] = 'Þ';
                br++; goto e14b;
              }
              else if (Str[br+1] == '#' || Str[br+1] == '*')
              {
                StringStore[i++] = 0xc9; // J
                br++; goto e14b;
              }
              else if (Str[br+1] == '&')
              {
                StringStore[i++] = 'Ü'; // J&
                br++; goto e14b;
              }
              else if (Str[br+1] == 'O' || Str[br+1] == 'o')
              {
                StringStore[i] = 'Ü';
                goto e15b;
              }
              break;
            }
            StringStore[i++] = map[Str[br]-65];
          }
          else if (Str[br]=='\'' || Str[br]==145 || Str[br]==146) // ' '
          {
            if (Str[br+1]=='\'' || Str[br+1]==145 || Str[br+1]==146) // ' '
            {
              StringStore[i++] = Str[br];
              br++;
            }
            else
              open_qu=1-open_qu;
          }
          else
            StringStore[i++] = Str[br];

e14b:     if (i>=STRING_STORE)
          {
            if (correct_STR_ST() )
              goto FULL;
            Str = StringStore+Buda2[Arguments];
          }
        }
        StringStore[i++] = 0;
        Buda2[Return] = sv_StStore;
        sv_StStore = i;
        Buda1[Return]=TT_STR;
        return(1);
      }
