// This code was generated by the Gardens Point Parser Generator
// Copyright (c) Wayne Kelly, QUT 2005-2010
// (see accompanying GPPGcopyright.rtf)

// GPPG version 1.5.0
// Machine:  DESKTOP-JOHN
// DateTime: 16/04/2014 22:17:50
// UserName: jncronin
// Input file <d:\tysos\tirc\tir.y - 16/04/2014 22:17:47>

// options: lines gplex

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using QUT.Gppg;
using libtysila;
using libtysila.timple;

namespace TIRParse
{
internal enum Tokens {
    error=1,EOF=2,EQUALS=3,COLON=4,MUL=5,LPAREN=6,
    RPAREN=7,AMP=8,PLUS=9,MINUS=10,DOLLARS=11,COMMA=12,
    NEWLINE=13,FUNC=14,EXTERN=15,LBRACK=16,RBRACK=17,DOT=18,
    LT=19,GT=20,WITH=21,DEF=22,AS=23,INT=24,
    INTLABEL=25,STRING=26,INVALID=27,LDCONST_I4=28,LDCONST_I8=29,LDCONST_R4=30,
    LDCONST_R8=31,LDCONST_I=32,ADD_I4=33,ADD_I8=34,ADD_R8=35,ADD_R4=36,
    ADD_I=37,ADD_OVF_I4=38,ADD_OVF_I8=39,ADD_OVF_I=40,ADD_OVF_UN_I4=41,ADD_OVF_UN_I8=42,
    ADD_OVF_UN_I=43,AND_I4=44,AND_I8=45,AND_I=46,ARGLIST=47,CMP_I4=48,
    CMP_I8=49,CMP_I=50,CMP_R8=51,CMP_R4=52,CMP_R8_UN=53,CMP_R4_UN=54,
    BR=55,BEQ=56,BNE=57,BG=58,BGE=59,BL=60,
    BLE=61,BA=62,BAE=63,BB=64,BBE=65,BR_EHCLAUSE=66,
    THROWEQ=67,THROWNE=68,THROW_OVF=69,THROW_OVF_UN=70,THROWGE_UN=71,THROWG_UN=72,
    BREAK_=73,THROW_=74,LDFTN=75,CALL_I4=76,CALL_I8=77,CALL_I=78,
    CALL_R4=79,CALL_R8=80,CALL_VOID=81,CALL_VT=82,SETEQ=83,SETNE=84,
    SETG=85,SETGE=86,SETL=87,SETLE=88,SETA=89,SETAE=90,
    SETB=91,SETBE=92,EXAMINEF=93,BRFINITE=94,CONV_I4_U1ZX=95,CONV_I4_I1SX=96,
    CONV_I4_U2ZX=97,CONV_I4_I2SX=98,CONV_I4_I8SX=99,CONV_I4_U8ZX=100,CONV_I4_ISX=101,CONV_I4_UZX=102,
    CONV_I8_U1ZX=103,CONV_I8_I1SX=104,CONV_I8_U2ZX=105,CONV_I8_I2SX=106,CONV_I8_I4SX=107,CONV_I8_U4ZX=108,
    CONV_I8_ISX=109,CONV_I8_UZX=110,CONV_I_U1ZX=111,CONV_I_I1SX=112,CONV_I_U2ZX=113,CONV_I_I2SX=114,
    CONV_I_I8SX=115,CONV_I_U8ZX=116,CONV_I_ISX=117,CONV_I_UZX=118,CONV_I_I4SX=119,CONV_I_U4ZX=120,
    CONV_R8_I8=121,CONV_R8_I4=122,CONV_R8_I=123,CONV_I4_R8=124,CONV_I8_R8=125,CONV_I_R8=126,
    CONV_R4_I8=127,CONV_R4_I4=128,CONV_R4_I=129,CONV_I4_R4=130,CONV_I8_R4=131,CONV_I_R4=132,
    CONV_R8_R4=133,CONV_R4_R8=134,CONV_U4_R8=135,CONV_U8_R8=136,CONV_U_R8=137,MOVSTRING=138,
    DIV_I4=139,DIV_I8=140,DIV_I=141,DIV_R8=142,DIV_R4=143,DIV_U4=144,
    DIV_U8=145,DIV_U=146,SETSTRING_VALUE=147,GETSTRING_VALUE=148,STORESTRING=149,JMPMETHOD=150,
    LDOBJ_I4=151,LDOBJ_I8=152,LDOBJ_R4=153,LDOBJ_R8=154,LDOBJ_I=155,LDOBJ_VT=156,
    LDOBJA_EX_I=157,STOBJ_I4=158,STOBJ_I8=159,STOBJ_R4=160,STOBJ_R8=161,STOBJ_I=162,
    STOBJ_VT=163,LDARGA=164,LDLOCA=165,LDSTRA=166,LDDATAA=167,MUL_I4=168,
    MUL_I8=169,MUL_I=170,MUL_R8=171,MUL_R4=172,MUL_OVF_I4=173,MUL_OVF_I8=174,
    MUL_OVF_I=175,MUL_OVF_UN_I4=176,MUL_OVF_UN_I8=177,MUL_OVF_UN_I=178,MUL_UN_I4=179,MUL_UN_I8=180,
    MUL_UN_I=181,NEG_I4=182,NEG_I8=183,NEG_I=184,NEG_R8=185,NEG_R4=186,
    NOT_I4=187,NOT_I8=188,NOT_I=189,OR_I4=190,OR_I8=191,OR_I=192,
    REM_I4=193,REM_I8=194,REM_I=195,REM_R8=196,REM_R4=197,REM_UN_I4=198,
    REM_UN_I8=199,REM_UN_I=200,RET_VOID=201,RET_I4=202,RET_I8=203,RET_I=204,
    RET_R8=205,RET_VT=206,SHL_I4=207,SHL_I8=208,SHL_I=209,SHR_I4=210,
    SHR_I8=211,SHR_I=212,SHR_UN_I4=213,SHR_UN_I8=214,SHR_UN_I=215,SUB_I4=216,
    SUB_I8=217,SUB_I=218,SUB_R8=219,SUB_R4=220,SUB_OVF_I=221,SUB_OVF_UN_I=222,
    SWITCH_=223,XOR_I4=224,XOR_I8=225,XOR_I=226,SIZEOF_=227,MALLOC=228,
    ASSIGN_I4=229,ASSIGN_I8=230,ASSIGN_R4=231,ASSIGN_R8=232,ASSIGN_I=233,ASSIGN_VT=234,
    ASSIGN_V_I4=235,ASSIGN_V_I8=236,ASSIGN_V_I=237,ASSIGN_TO_VIRTFTNPTR=238,ASSIGN_FROM_VIRTFTNPTR_PTR=239,ASSIGN_FROM_VIRTFTNPTR_THISADJUST=240,
    ASSIGN_VIRTFTNPTR=241,LDOBJ_VIRTFTNPTR=242,LABEL=243,LOC_LABEL=244,INSTRUCTION_LABEL=245,ENTER=246,
    NOP=247,PHI_I=248,PHI_I4=249,PHI_I8=250,PHI_R4=251,PHI_R8=252,
    PHI_VT=253,PEEK_U1=254,PEEK_U2=255,PEEK_U4=256,PEEK_U8=257,PEEK_U=258,
    PEEK_I1=259,PEEK_I2=260,PEEK_R4=261,PEEK_R8=262,POKE_U1=263,POKE_U2=264,
    POKE_U4=265,POKE_U8=266,POKE_U=267,POKE_R4=268,POKE_R8=269,PORTOUT_U2_U1=270,
    PORTOUT_U2_U2=271,PORTOUT_U2_U4=272,PORTOUT_U2_U8=273,PORTOUT_U2_U=274,PORTIN_U2_U1=275,PORTIN_U2_U2=276,
    PORTIN_U2_U4=277,PORTIN_U2_U8=278,PORTIN_U2_U=279,TRY_ACQUIRE_I8=280,RELEASE_I8=281,SQRT_R8=282,
    ALLOCA_I4=283,ALLOCA_I=284,ZEROMEM=285,LDCATCHOBJ=286,LDMETHINFO=287,ENDFINALLY=288,
    LOCALARG=289,BEQ_I4=290,BEQ_I8=291,BEQ_I=292,BEQ_R8=293,BEQ_R4=294,
    BEQ_R8_UN=295,BEQ_R4_UN=296,BNE_I4=297,BNE_I8=298,BNE_I=299,BNE_R8=300,
    BNE_R4=301,BNE_R8_UN=302,BNE_R4_UN=303,BG_I4=304,BG_I8=305,BG_I=306,
    BG_R8=307,BG_R4=308,BG_R8_UN=309,BG_R4_UN=310,BGE_I4=311,BGE_I8=312,
    BGE_I=313,BGE_R8=314,BGE_R4=315,BGE_R8_UN=316,BGE_R4_UN=317,BL_I4=318,
    BL_I8=319,BL_I=320,BL_R8=321,BL_R4=322,BL_R8_UN=323,BL_R4_UN=324,
    BLE_I4=325,BLE_I8=326,BLE_I=327,BLE_R8=328,BLE_R4=329,BLE_R8_UN=330,
    BLE_R4_UN=331,BA_I4=332,BA_I8=333,BA_I=334,BA_R8=335,BA_R4=336,
    BA_R8_UN=337,BA_R4_UN=338,BAE_I4=339,BAE_I8=340,BAE_I=341,BAE_R8=342,
    BAE_R4=343,BAE_R8_UN=344,BAE_R4_UN=345,BB_I4=346,BB_I8=347,BB_I=348,
    BB_R8=349,BB_R4=350,BB_R8_UN=351,BB_R4_UN=352,BBE_I4=353,BBE_I8=354,
    BBE_I=355,BBE_R8=356,BBE_R4=357,BBE_R8_UN=358,BBE_R4_UN=359,MISC=360};

internal partial struct ValueType
#line 11 "d:\tysos\tirc\tir.y"
{
#line 12 "d:\tysos\tirc\tir.y"
		public int intval;
#line 13 "d:\tysos\tirc\tir.y"
		public string strval;
#line 14 "d:\tysos\tirc\tir.y"
		public libtysila.vara varval;
#line 15 "d:\tysos\tirc\tir.y"
		public libtysila.timple.TreeNode tacval;
#line 16 "d:\tysos\tirc\tir.y"
		public libtysila.ThreeAddressCode.Op opval;
#line 17 "d:\tysos\tirc\tir.y"
		public Parser.partial_inst pival;
#line 18 "d:\tysos\tirc\tir.y"
		public List<vara> arglist;
#line 19 "d:\tysos\tirc\tir.y"
		public List<string> stringlist;
#line 20 "d:\tysos\tirc\tir.y"
		public libtysila.Assembler.TypeToCompile ttc;
#line 21 "d:\tysos\tirc\tir.y"
		public List<libtysila.Assembler.TypeToCompile> ttclist;
#line 22 "d:\tysos\tirc\tir.y"
		public List<int> intlist;
#line 23 "d:\tysos\tirc\tir.y"
	}
// Abstract base class for GPLEX scanners
internal abstract class ScanBase : AbstractScanner<ValueType,LexLocation> {
  private LexLocation __yylloc = new LexLocation();
  public override LexLocation yylloc { get { return __yylloc; } set { __yylloc = value; } }
  protected virtual bool yywrap() { return true; }
}

// Utility class for encapsulating token information
internal class ScanObj {
  public int token;
  public ValueType yylval;
  public LexLocation yylloc;
  public ScanObj( int t, ValueType val, LexLocation loc ) {
    this.token = t; this.yylval = val; this.yylloc = loc;
  }
}

internal partial class Parser: ShiftReduceParser<ValueType, LexLocation>
{
#pragma warning disable 649
  private static Dictionary<int, string> aliasses;
#pragma warning restore 649
  private static Rule[] rules = new Rule[381];
  private static State[] states = new State[433];
  private static string[] nonTerms = new string[] {
      "list", "var", "const", "offset", "stat", "label", "funcdef", "op", "call_op", 
      "br_op", "cmpbr_op", "inst", "call_inst", "br_inst", "carglist", "cmpbr_inst", 
      "arglist", "arglist2", "ttclist", "ttclist2", "gen_args", "type", "module", 
      "varlist", "$accept", "endline", "externdef", "vardef", };

  static Parser() {
    states[0] = new State(-2,new int[]{-1,1});
    states[1] = new State(new int[]{2,2,13,3,25,12,24,18,5,19,11,32,26,36,8,37,27,49,28,50,29,51,30,52,31,53,32,54,33,55,34,56,35,57,36,58,37,59,38,60,39,61,40,62,41,63,42,64,43,65,44,66,45,67,46,68,47,69,48,70,49,71,50,72,51,73,52,74,53,75,54,76,67,77,68,78,69,79,70,80,71,81,72,82,73,83,74,84,75,85,83,86,84,87,85,88,86,89,87,90,88,91,89,92,90,93,91,94,92,95,93,96,95,97,96,98,97,99,98,100,99,101,100,102,101,103,102,104,103,105,104,106,105,107,106,108,107,109,108,110,109,111,110,112,111,113,112,114,113,115,114,116,115,117,116,118,117,119,118,120,119,121,120,122,121,123,122,124,123,125,124,126,125,127,126,128,127,129,128,130,129,131,130,132,131,133,132,134,133,135,134,136,135,137,136,138,137,139,138,140,139,141,140,142,141,143,142,144,143,145,144,146,145,147,146,148,147,149,148,150,149,151,150,152,151,153,152,154,153,155,154,156,155,157,156,158,157,159,158,160,159,161,160,162,161,163,162,164,163,165,164,166,165,167,166,168,167,169,168,170,169,171,170,172,171,173,172,174,173,175,174,176,175,177,176,178,177,179,178,180,179,181,180,182,181,183,182,184,183,185,184,186,185,187,186,188,187,189,188,190,189,191,190,192,191,193,192,194,193,195,194,196,195,197,196,198,197,199,198,200,199,201,200,202,201,203,202,204,203,205,204,206,205,207,206,208,207,209,208,210,209,211,210,212,211,213,212,214,213,215,214,216,215,217,216,218,217,219,218,220,219,221,220,222,221,223,222,224,223,225,224,226,225,227,226,228,227,229,228,230,229,231,230,232,231,233,232,234,233,235,234,236,235,237,236,238,237,239,238,240,239,241,240,242,241,243,242,244,243,245,244,246,245,247,246,248,247,249,248,250,249,251,250,252,251,253,252,254,253,255,254,256,255,257,256,258,257,259,258,260,259,261,260,262,261,263,262,264,263,265,264,266,265,267,266,268,267,269,268,270,269,271,270,272,271,273,272,274,273,275,274,276,275,277,276,278,277,279,278,280,279,281,280,282,281,283,282,284,283,285,284,286,285,287,286,288,287,289,288,290,289,291,360,292,76,301,77,302,78,303,79,304,80,305,81,306,82,307,55,315,66,316,94,317,290,324,291,325,292,326,293,327,294,328,295,329,296,330,297,331,298,332,299,333,300,334,301,335,302,336,303,337,304,338,305,339,306,340,307,341,308,342,309,343,310,344,311,345,312,346,313,347,314,348,315,349,316,350,317,351,318,352,319,353,320,354,321,355,322,356,323,357,324,358,325,359,326,360,327,361,328,362,329,363,330,364,331,365,332,366,333,367,334,368,335,369,336,370,337,371,338,372,339,373,340,374,341,375,342,376,343,377,344,378,345,379,346,380,347,381,348,382,349,383,350,384,351,385,352,386,353,387,354,388,355,389,356,390,357,391,358,392,359,393,14,395,15,401,22,426},new int[]{-5,4,-6,8,-27,397,-28,399,-2,13,-3,31,-12,308,-8,40,-13,309,-9,293,-14,310,-10,311,-16,318,-11,319,-7,394});
    states[2] = new State(-1);
    states[3] = new State(-3);
    states[4] = new State(new int[]{13,6,2,7},new int[]{-26,5});
    states[5] = new State(-4);
    states[6] = new State(-23);
    states[7] = new State(-24);
    states[8] = new State(new int[]{25,12,24,18,5,19,11,32,26,36,8,37,27,49,28,50,29,51,30,52,31,53,32,54,33,55,34,56,35,57,36,58,37,59,38,60,39,61,40,62,41,63,42,64,43,65,44,66,45,67,46,68,47,69,48,70,49,71,50,72,51,73,52,74,53,75,54,76,67,77,68,78,69,79,70,80,71,81,72,82,73,83,74,84,75,85,83,86,84,87,85,88,86,89,87,90,88,91,89,92,90,93,91,94,92,95,93,96,95,97,96,98,97,99,98,100,99,101,100,102,101,103,102,104,103,105,104,106,105,107,106,108,107,109,108,110,109,111,110,112,111,113,112,114,113,115,114,116,115,117,116,118,117,119,118,120,119,121,120,122,121,123,122,124,123,125,124,126,125,127,126,128,127,129,128,130,129,131,130,132,131,133,132,134,133,135,134,136,135,137,136,138,137,139,138,140,139,141,140,142,141,143,142,144,143,145,144,146,145,147,146,148,147,149,148,150,149,151,150,152,151,153,152,154,153,155,154,156,155,157,156,158,157,159,158,160,159,161,160,162,161,163,162,164,163,165,164,166,165,167,166,168,167,169,168,170,169,171,170,172,171,173,172,174,173,175,174,176,175,177,176,178,177,179,178,180,179,181,180,182,181,183,182,184,183,185,184,186,185,187,186,188,187,189,188,190,189,191,190,192,191,193,192,194,193,195,194,196,195,197,196,198,197,199,198,200,199,201,200,202,201,203,202,204,203,205,204,206,205,207,206,208,207,209,208,210,209,211,210,212,211,213,212,214,213,215,214,216,215,217,216,218,217,219,218,220,219,221,220,222,221,223,222,224,223,225,224,226,225,227,226,228,227,229,228,230,229,231,230,232,231,233,232,234,233,235,234,236,235,237,236,238,237,239,238,240,239,241,240,242,241,243,242,244,243,245,244,246,245,247,246,248,247,249,248,250,249,251,250,252,251,253,252,254,253,255,254,256,255,257,256,258,257,259,258,260,259,261,260,262,261,263,262,264,263,265,264,266,265,267,266,268,267,269,268,270,269,271,270,272,271,273,272,274,273,275,274,276,275,277,276,278,277,279,278,280,279,281,280,282,281,283,282,284,283,285,284,286,285,287,286,288,287,289,288,290,289,291,360,292,76,301,77,302,78,303,79,304,80,305,81,306,82,307,55,315,66,316,94,317,290,324,291,325,292,326,293,327,294,328,295,329,296,330,297,331,298,332,299,333,300,334,301,335,302,336,303,337,304,338,305,339,306,340,307,341,308,342,309,343,310,344,311,345,312,346,313,347,314,348,315,349,316,350,317,351,318,352,319,353,320,354,321,355,322,356,323,357,324,358,325,359,326,360,327,361,328,362,329,363,330,364,331,365,332,366,333,367,334,368,335,369,336,370,337,371,338,372,339,373,340,374,341,375,342,376,343,377,344,378,345,379,346,380,347,381,348,382,349,383,350,384,351,385,352,386,353,387,354,388,355,389,356,390,357,391,358,392,359,393,14,395,13,-25,2,-25},new int[]{-5,9,-6,11,-2,13,-3,31,-12,308,-8,40,-13,309,-9,293,-14,310,-10,311,-16,318,-11,319,-7,394});
    states[9] = new State(new int[]{13,6,2,7},new int[]{-26,10});
    states[10] = new State(-5);
    states[11] = new State(-25);
    states[12] = new State(-34);
    states[13] = new State(new int[]{3,14});
    states[14] = new State(new int[]{24,18,5,19,11,32,26,36,8,37,27,49,28,50,29,51,30,52,31,53,32,54,33,55,34,56,35,57,36,58,37,59,38,60,39,61,40,62,41,63,42,64,43,65,44,66,45,67,46,68,47,69,48,70,49,71,50,72,51,73,52,74,53,75,54,76,67,77,68,78,69,79,70,80,71,81,72,82,73,83,74,84,75,85,83,86,84,87,85,88,86,89,87,90,88,91,89,92,90,93,91,94,92,95,93,96,95,97,96,98,97,99,98,100,99,101,100,102,101,103,102,104,103,105,104,106,105,107,106,108,107,109,108,110,109,111,110,112,111,113,112,114,113,115,114,116,115,117,116,118,117,119,118,120,119,121,120,122,121,123,122,124,123,125,124,126,125,127,126,128,127,129,128,130,129,131,130,132,131,133,132,134,133,135,134,136,135,137,136,138,137,139,138,140,139,141,140,142,141,143,142,144,143,145,144,146,145,147,146,148,147,149,148,150,149,151,150,152,151,153,152,154,153,155,154,156,155,157,156,158,157,159,158,160,159,161,160,162,161,163,162,164,163,165,164,166,165,167,166,168,167,169,168,170,169,171,170,172,171,173,172,174,173,175,174,176,175,177,176,178,177,179,178,180,179,181,180,182,181,183,182,184,183,185,184,186,185,187,186,188,187,189,188,190,189,191,190,192,191,193,192,194,193,195,194,196,195,197,196,198,197,199,198,200,199,201,200,202,201,203,202,204,203,205,204,206,205,207,206,208,207,209,208,210,209,211,210,212,211,213,212,214,213,215,214,216,215,217,216,218,217,219,218,220,219,221,220,222,221,223,222,224,223,225,224,226,225,227,226,228,227,229,228,230,229,231,230,232,231,233,232,234,233,235,234,236,235,237,236,238,237,239,238,240,239,241,240,242,241,243,242,244,243,245,244,246,245,247,246,248,247,249,248,250,249,251,250,252,251,253,252,254,253,255,254,256,255,257,256,258,257,259,258,260,259,261,260,262,261,263,262,264,263,265,264,266,265,267,266,268,267,269,268,270,269,271,270,272,271,273,272,274,273,275,274,276,275,277,276,278,277,279,278,280,279,281,280,282,281,283,282,284,283,285,284,286,285,287,286,288,287,289,288,290,289,291,360,292,76,301,77,302,78,303,79,304,80,305,81,306,82,307},new int[]{-2,15,-12,16,-13,17,-3,31,-8,40,-9,293});
    states[15] = new State(-26);
    states[16] = new State(-27);
    states[17] = new State(-28);
    states[18] = new State(-35);
    states[19] = new State(new int[]{24,20,6,21});
    states[20] = new State(-36);
    states[21] = new State(new int[]{24,22});
    states[22] = new State(new int[]{9,25,10,28},new int[]{-4,23});
    states[23] = new State(new int[]{7,24});
    states[24] = new State(-37);
    states[25] = new State(new int[]{11,26});
    states[26] = new State(new int[]{24,27});
    states[27] = new State(-42);
    states[28] = new State(new int[]{11,29});
    states[29] = new State(new int[]{24,30});
    states[30] = new State(-43);
    states[31] = new State(-38);
    states[32] = new State(new int[]{24,33,10,34});
    states[33] = new State(-44);
    states[34] = new State(new int[]{24,35});
    states[35] = new State(-45);
    states[36] = new State(-39);
    states[37] = new State(new int[]{24,38,26,39});
    states[38] = new State(-40);
    states[39] = new State(-41);
    states[40] = new State(new int[]{6,42,13,-46,2,-46},new int[]{-17,41});
    states[41] = new State(-53);
    states[42] = new State(new int[]{7,43,24,18,5,19,11,32,26,36,8,37},new int[]{-18,44,-2,48,-3,31});
    states[43] = new State(-47);
    states[44] = new State(new int[]{7,45,12,46});
    states[45] = new State(-48);
    states[46] = new State(new int[]{24,18,5,19,11,32,26,36,8,37},new int[]{-2,47,-3,31});
    states[47] = new State(-50);
    states[48] = new State(-49);
    states[49] = new State(-57);
    states[50] = new State(-58);
    states[51] = new State(-59);
    states[52] = new State(-60);
    states[53] = new State(-61);
    states[54] = new State(-62);
    states[55] = new State(-63);
    states[56] = new State(-64);
    states[57] = new State(-65);
    states[58] = new State(-66);
    states[59] = new State(-67);
    states[60] = new State(-68);
    states[61] = new State(-69);
    states[62] = new State(-70);
    states[63] = new State(-71);
    states[64] = new State(-72);
    states[65] = new State(-73);
    states[66] = new State(-74);
    states[67] = new State(-75);
    states[68] = new State(-76);
    states[69] = new State(-77);
    states[70] = new State(-78);
    states[71] = new State(-79);
    states[72] = new State(-80);
    states[73] = new State(-81);
    states[74] = new State(-82);
    states[75] = new State(-83);
    states[76] = new State(-84);
    states[77] = new State(-85);
    states[78] = new State(-86);
    states[79] = new State(-87);
    states[80] = new State(-88);
    states[81] = new State(-89);
    states[82] = new State(-90);
    states[83] = new State(-91);
    states[84] = new State(-92);
    states[85] = new State(-93);
    states[86] = new State(-94);
    states[87] = new State(-95);
    states[88] = new State(-96);
    states[89] = new State(-97);
    states[90] = new State(-98);
    states[91] = new State(-99);
    states[92] = new State(-100);
    states[93] = new State(-101);
    states[94] = new State(-102);
    states[95] = new State(-103);
    states[96] = new State(-104);
    states[97] = new State(-105);
    states[98] = new State(-106);
    states[99] = new State(-107);
    states[100] = new State(-108);
    states[101] = new State(-109);
    states[102] = new State(-110);
    states[103] = new State(-111);
    states[104] = new State(-112);
    states[105] = new State(-113);
    states[106] = new State(-114);
    states[107] = new State(-115);
    states[108] = new State(-116);
    states[109] = new State(-117);
    states[110] = new State(-118);
    states[111] = new State(-119);
    states[112] = new State(-120);
    states[113] = new State(-121);
    states[114] = new State(-122);
    states[115] = new State(-123);
    states[116] = new State(-124);
    states[117] = new State(-125);
    states[118] = new State(-126);
    states[119] = new State(-127);
    states[120] = new State(-128);
    states[121] = new State(-129);
    states[122] = new State(-130);
    states[123] = new State(-131);
    states[124] = new State(-132);
    states[125] = new State(-133);
    states[126] = new State(-134);
    states[127] = new State(-135);
    states[128] = new State(-136);
    states[129] = new State(-137);
    states[130] = new State(-138);
    states[131] = new State(-139);
    states[132] = new State(-140);
    states[133] = new State(-141);
    states[134] = new State(-142);
    states[135] = new State(-143);
    states[136] = new State(-144);
    states[137] = new State(-145);
    states[138] = new State(-146);
    states[139] = new State(-147);
    states[140] = new State(-148);
    states[141] = new State(-149);
    states[142] = new State(-150);
    states[143] = new State(-151);
    states[144] = new State(-152);
    states[145] = new State(-153);
    states[146] = new State(-154);
    states[147] = new State(-155);
    states[148] = new State(-156);
    states[149] = new State(-157);
    states[150] = new State(-158);
    states[151] = new State(-159);
    states[152] = new State(-160);
    states[153] = new State(-161);
    states[154] = new State(-162);
    states[155] = new State(-163);
    states[156] = new State(-164);
    states[157] = new State(-165);
    states[158] = new State(-166);
    states[159] = new State(-167);
    states[160] = new State(-168);
    states[161] = new State(-169);
    states[162] = new State(-170);
    states[163] = new State(-171);
    states[164] = new State(-172);
    states[165] = new State(-173);
    states[166] = new State(-174);
    states[167] = new State(-175);
    states[168] = new State(-176);
    states[169] = new State(-177);
    states[170] = new State(-178);
    states[171] = new State(-179);
    states[172] = new State(-180);
    states[173] = new State(-181);
    states[174] = new State(-182);
    states[175] = new State(-183);
    states[176] = new State(-184);
    states[177] = new State(-185);
    states[178] = new State(-186);
    states[179] = new State(-187);
    states[180] = new State(-188);
    states[181] = new State(-189);
    states[182] = new State(-190);
    states[183] = new State(-191);
    states[184] = new State(-192);
    states[185] = new State(-193);
    states[186] = new State(-194);
    states[187] = new State(-195);
    states[188] = new State(-196);
    states[189] = new State(-197);
    states[190] = new State(-198);
    states[191] = new State(-199);
    states[192] = new State(-200);
    states[193] = new State(-201);
    states[194] = new State(-202);
    states[195] = new State(-203);
    states[196] = new State(-204);
    states[197] = new State(-205);
    states[198] = new State(-206);
    states[199] = new State(-207);
    states[200] = new State(-208);
    states[201] = new State(-209);
    states[202] = new State(-210);
    states[203] = new State(-211);
    states[204] = new State(-212);
    states[205] = new State(-213);
    states[206] = new State(-214);
    states[207] = new State(-215);
    states[208] = new State(-216);
    states[209] = new State(-217);
    states[210] = new State(-218);
    states[211] = new State(-219);
    states[212] = new State(-220);
    states[213] = new State(-221);
    states[214] = new State(-222);
    states[215] = new State(-223);
    states[216] = new State(-224);
    states[217] = new State(-225);
    states[218] = new State(-226);
    states[219] = new State(-227);
    states[220] = new State(-228);
    states[221] = new State(-229);
    states[222] = new State(-230);
    states[223] = new State(-231);
    states[224] = new State(-232);
    states[225] = new State(-233);
    states[226] = new State(-234);
    states[227] = new State(-235);
    states[228] = new State(-236);
    states[229] = new State(-237);
    states[230] = new State(-238);
    states[231] = new State(-239);
    states[232] = new State(-240);
    states[233] = new State(-241);
    states[234] = new State(-242);
    states[235] = new State(-243);
    states[236] = new State(-244);
    states[237] = new State(-245);
    states[238] = new State(-246);
    states[239] = new State(-247);
    states[240] = new State(-248);
    states[241] = new State(-249);
    states[242] = new State(-250);
    states[243] = new State(-251);
    states[244] = new State(-252);
    states[245] = new State(-253);
    states[246] = new State(-254);
    states[247] = new State(-255);
    states[248] = new State(-256);
    states[249] = new State(-257);
    states[250] = new State(-258);
    states[251] = new State(-259);
    states[252] = new State(-260);
    states[253] = new State(-261);
    states[254] = new State(-262);
    states[255] = new State(-263);
    states[256] = new State(-264);
    states[257] = new State(-265);
    states[258] = new State(-266);
    states[259] = new State(-267);
    states[260] = new State(-268);
    states[261] = new State(-269);
    states[262] = new State(-270);
    states[263] = new State(-271);
    states[264] = new State(-272);
    states[265] = new State(-273);
    states[266] = new State(-274);
    states[267] = new State(-275);
    states[268] = new State(-276);
    states[269] = new State(-277);
    states[270] = new State(-278);
    states[271] = new State(-279);
    states[272] = new State(-280);
    states[273] = new State(-281);
    states[274] = new State(-282);
    states[275] = new State(-283);
    states[276] = new State(-284);
    states[277] = new State(-285);
    states[278] = new State(-286);
    states[279] = new State(-287);
    states[280] = new State(-288);
    states[281] = new State(-289);
    states[282] = new State(-290);
    states[283] = new State(-291);
    states[284] = new State(-292);
    states[285] = new State(-293);
    states[286] = new State(-294);
    states[287] = new State(-295);
    states[288] = new State(-296);
    states[289] = new State(-297);
    states[290] = new State(-298);
    states[291] = new State(-299);
    states[292] = new State(-300);
    states[293] = new State(new int[]{6,295},new int[]{-15,294});
    states[294] = new State(-54);
    states[295] = new State(new int[]{24,18,5,19,11,32,26,36,8,37},new int[]{-2,296,-3,31});
    states[296] = new State(new int[]{4,297});
    states[297] = new State(new int[]{7,298,24,18,5,19,11,32,26,36,8,37},new int[]{-18,299,-2,48,-3,31});
    states[298] = new State(-51);
    states[299] = new State(new int[]{7,300,12,46});
    states[300] = new State(-52);
    states[301] = new State(-301);
    states[302] = new State(-302);
    states[303] = new State(-303);
    states[304] = new State(-304);
    states[305] = new State(-305);
    states[306] = new State(-306);
    states[307] = new State(-307);
    states[308] = new State(-29);
    states[309] = new State(-30);
    states[310] = new State(-31);
    states[311] = new State(new int[]{6,312});
    states[312] = new State(new int[]{26,313});
    states[313] = new State(new int[]{7,314});
    states[314] = new State(-55);
    states[315] = new State(-308);
    states[316] = new State(-309);
    states[317] = new State(-310);
    states[318] = new State(-32);
    states[319] = new State(new int[]{6,320});
    states[320] = new State(new int[]{25,321});
    states[321] = new State(new int[]{24,18,5,19,11,32,26,36,8,37},new int[]{-18,322,-2,48,-3,31});
    states[322] = new State(new int[]{7,323,12,46});
    states[323] = new State(-56);
    states[324] = new State(-311);
    states[325] = new State(-312);
    states[326] = new State(-313);
    states[327] = new State(-314);
    states[328] = new State(-315);
    states[329] = new State(-316);
    states[330] = new State(-317);
    states[331] = new State(-318);
    states[332] = new State(-319);
    states[333] = new State(-320);
    states[334] = new State(-321);
    states[335] = new State(-322);
    states[336] = new State(-323);
    states[337] = new State(-324);
    states[338] = new State(-325);
    states[339] = new State(-326);
    states[340] = new State(-327);
    states[341] = new State(-328);
    states[342] = new State(-329);
    states[343] = new State(-330);
    states[344] = new State(-331);
    states[345] = new State(-332);
    states[346] = new State(-333);
    states[347] = new State(-334);
    states[348] = new State(-335);
    states[349] = new State(-336);
    states[350] = new State(-337);
    states[351] = new State(-338);
    states[352] = new State(-339);
    states[353] = new State(-340);
    states[354] = new State(-341);
    states[355] = new State(-342);
    states[356] = new State(-343);
    states[357] = new State(-344);
    states[358] = new State(-345);
    states[359] = new State(-346);
    states[360] = new State(-347);
    states[361] = new State(-348);
    states[362] = new State(-349);
    states[363] = new State(-350);
    states[364] = new State(-351);
    states[365] = new State(-352);
    states[366] = new State(-353);
    states[367] = new State(-354);
    states[368] = new State(-355);
    states[369] = new State(-356);
    states[370] = new State(-357);
    states[371] = new State(-358);
    states[372] = new State(-359);
    states[373] = new State(-360);
    states[374] = new State(-361);
    states[375] = new State(-362);
    states[376] = new State(-363);
    states[377] = new State(-364);
    states[378] = new State(-365);
    states[379] = new State(-366);
    states[380] = new State(-367);
    states[381] = new State(-368);
    states[382] = new State(-369);
    states[383] = new State(-370);
    states[384] = new State(-371);
    states[385] = new State(-372);
    states[386] = new State(-373);
    states[387] = new State(-374);
    states[388] = new State(-375);
    states[389] = new State(-376);
    states[390] = new State(-377);
    states[391] = new State(-378);
    states[392] = new State(-379);
    states[393] = new State(-380);
    states[394] = new State(-33);
    states[395] = new State(new int[]{26,396});
    states[396] = new State(-8);
    states[397] = new State(new int[]{13,6,2,7},new int[]{-26,398});
    states[398] = new State(-6);
    states[399] = new State(new int[]{13,6,2,7},new int[]{-26,400});
    states[400] = new State(-7);
    states[401] = new State(new int[]{16,417,26,420},new int[]{-22,402,-23,412});
    states[402] = new State(new int[]{26,403});
    states[403] = new State(new int[]{6,404});
    states[404] = new State(new int[]{16,417,26,420,7,-19},new int[]{-19,405,-20,409,-22,425,-23,412});
    states[405] = new State(new int[]{7,406});
    states[406] = new State(new int[]{21,407,13,-9,2,-9});
    states[407] = new State(new int[]{26,408});
    states[408] = new State(-10);
    states[409] = new State(new int[]{12,410,7,-20});
    states[410] = new State(new int[]{16,417,26,420},new int[]{-22,411,-23,412});
    states[411] = new State(-22);
    states[412] = new State(new int[]{26,413});
    states[413] = new State(new int[]{18,414});
    states[414] = new State(new int[]{26,415});
    states[415] = new State(-18,new int[]{-21,416});
    states[416] = new State(-14);
    states[417] = new State(new int[]{26,418});
    states[418] = new State(new int[]{17,419});
    states[419] = new State(-17);
    states[420] = new State(new int[]{18,421,26,-18,12,-18,7,-18,13,-18,2,-18},new int[]{-21,424});
    states[421] = new State(new int[]{26,422});
    states[422] = new State(-18,new int[]{-21,423});
    states[423] = new State(-15);
    states[424] = new State(-16);
    states[425] = new State(-21);
    states[426] = new State(new int[]{24,432},new int[]{-24,427});
    states[427] = new State(new int[]{23,428,12,430});
    states[428] = new State(new int[]{16,417,26,420},new int[]{-22,429,-23,412});
    states[429] = new State(-11);
    states[430] = new State(new int[]{24,431});
    states[431] = new State(-13);
    states[432] = new State(-12);

    for (int sNo = 0; sNo < states.Length; sNo++) states[sNo].number = sNo;

    rules[1] = new Rule(-25, new int[]{-1,2});
    rules[2] = new Rule(-1, new int[]{});
    rules[3] = new Rule(-1, new int[]{-1,13});
    rules[4] = new Rule(-1, new int[]{-1,-5,-26});
    rules[5] = new Rule(-1, new int[]{-1,-6,-5,-26});
    rules[6] = new Rule(-1, new int[]{-1,-27,-26});
    rules[7] = new Rule(-1, new int[]{-1,-28,-26});
    rules[8] = new Rule(-7, new int[]{14,26});
    rules[9] = new Rule(-27, new int[]{15,-22,26,6,-19,7});
    rules[10] = new Rule(-27, new int[]{15,-22,26,6,-19,7,21,26});
    rules[11] = new Rule(-28, new int[]{22,-24,23,-22});
    rules[12] = new Rule(-24, new int[]{24});
    rules[13] = new Rule(-24, new int[]{-24,12,24});
    rules[14] = new Rule(-22, new int[]{-23,26,18,26,-21});
    rules[15] = new Rule(-22, new int[]{26,18,26,-21});
    rules[16] = new Rule(-22, new int[]{26,-21});
    rules[17] = new Rule(-23, new int[]{16,26,17});
    rules[18] = new Rule(-21, new int[]{});
    rules[19] = new Rule(-19, new int[]{});
    rules[20] = new Rule(-19, new int[]{-20});
    rules[21] = new Rule(-20, new int[]{-22});
    rules[22] = new Rule(-20, new int[]{-20,12,-22});
    rules[23] = new Rule(-26, new int[]{13});
    rules[24] = new Rule(-26, new int[]{2});
    rules[25] = new Rule(-5, new int[]{-6});
    rules[26] = new Rule(-5, new int[]{-2,3,-2});
    rules[27] = new Rule(-5, new int[]{-2,3,-12});
    rules[28] = new Rule(-5, new int[]{-2,3,-13});
    rules[29] = new Rule(-5, new int[]{-12});
    rules[30] = new Rule(-5, new int[]{-13});
    rules[31] = new Rule(-5, new int[]{-14});
    rules[32] = new Rule(-5, new int[]{-16});
    rules[33] = new Rule(-5, new int[]{-7});
    rules[34] = new Rule(-6, new int[]{25});
    rules[35] = new Rule(-2, new int[]{24});
    rules[36] = new Rule(-2, new int[]{5,24});
    rules[37] = new Rule(-2, new int[]{5,6,24,-4,7});
    rules[38] = new Rule(-2, new int[]{-3});
    rules[39] = new Rule(-2, new int[]{26});
    rules[40] = new Rule(-2, new int[]{8,24});
    rules[41] = new Rule(-2, new int[]{8,26});
    rules[42] = new Rule(-4, new int[]{9,11,24});
    rules[43] = new Rule(-4, new int[]{10,11,24});
    rules[44] = new Rule(-3, new int[]{11,24});
    rules[45] = new Rule(-3, new int[]{11,10,24});
    rules[46] = new Rule(-17, new int[]{});
    rules[47] = new Rule(-17, new int[]{6,7});
    rules[48] = new Rule(-17, new int[]{6,-18,7});
    rules[49] = new Rule(-18, new int[]{-2});
    rules[50] = new Rule(-18, new int[]{-18,12,-2});
    rules[51] = new Rule(-15, new int[]{6,-2,4,7});
    rules[52] = new Rule(-15, new int[]{6,-2,4,-18,7});
    rules[53] = new Rule(-12, new int[]{-8,-17});
    rules[54] = new Rule(-13, new int[]{-9,-15});
    rules[55] = new Rule(-14, new int[]{-10,6,26,7});
    rules[56] = new Rule(-16, new int[]{-11,6,25,-18,7});
    rules[57] = new Rule(-8, new int[]{27});
    rules[58] = new Rule(-8, new int[]{28});
    rules[59] = new Rule(-8, new int[]{29});
    rules[60] = new Rule(-8, new int[]{30});
    rules[61] = new Rule(-8, new int[]{31});
    rules[62] = new Rule(-8, new int[]{32});
    rules[63] = new Rule(-8, new int[]{33});
    rules[64] = new Rule(-8, new int[]{34});
    rules[65] = new Rule(-8, new int[]{35});
    rules[66] = new Rule(-8, new int[]{36});
    rules[67] = new Rule(-8, new int[]{37});
    rules[68] = new Rule(-8, new int[]{38});
    rules[69] = new Rule(-8, new int[]{39});
    rules[70] = new Rule(-8, new int[]{40});
    rules[71] = new Rule(-8, new int[]{41});
    rules[72] = new Rule(-8, new int[]{42});
    rules[73] = new Rule(-8, new int[]{43});
    rules[74] = new Rule(-8, new int[]{44});
    rules[75] = new Rule(-8, new int[]{45});
    rules[76] = new Rule(-8, new int[]{46});
    rules[77] = new Rule(-8, new int[]{47});
    rules[78] = new Rule(-8, new int[]{48});
    rules[79] = new Rule(-8, new int[]{49});
    rules[80] = new Rule(-8, new int[]{50});
    rules[81] = new Rule(-8, new int[]{51});
    rules[82] = new Rule(-8, new int[]{52});
    rules[83] = new Rule(-8, new int[]{53});
    rules[84] = new Rule(-8, new int[]{54});
    rules[85] = new Rule(-8, new int[]{67});
    rules[86] = new Rule(-8, new int[]{68});
    rules[87] = new Rule(-8, new int[]{69});
    rules[88] = new Rule(-8, new int[]{70});
    rules[89] = new Rule(-8, new int[]{71});
    rules[90] = new Rule(-8, new int[]{72});
    rules[91] = new Rule(-8, new int[]{73});
    rules[92] = new Rule(-8, new int[]{74});
    rules[93] = new Rule(-8, new int[]{75});
    rules[94] = new Rule(-8, new int[]{83});
    rules[95] = new Rule(-8, new int[]{84});
    rules[96] = new Rule(-8, new int[]{85});
    rules[97] = new Rule(-8, new int[]{86});
    rules[98] = new Rule(-8, new int[]{87});
    rules[99] = new Rule(-8, new int[]{88});
    rules[100] = new Rule(-8, new int[]{89});
    rules[101] = new Rule(-8, new int[]{90});
    rules[102] = new Rule(-8, new int[]{91});
    rules[103] = new Rule(-8, new int[]{92});
    rules[104] = new Rule(-8, new int[]{93});
    rules[105] = new Rule(-8, new int[]{95});
    rules[106] = new Rule(-8, new int[]{96});
    rules[107] = new Rule(-8, new int[]{97});
    rules[108] = new Rule(-8, new int[]{98});
    rules[109] = new Rule(-8, new int[]{99});
    rules[110] = new Rule(-8, new int[]{100});
    rules[111] = new Rule(-8, new int[]{101});
    rules[112] = new Rule(-8, new int[]{102});
    rules[113] = new Rule(-8, new int[]{103});
    rules[114] = new Rule(-8, new int[]{104});
    rules[115] = new Rule(-8, new int[]{105});
    rules[116] = new Rule(-8, new int[]{106});
    rules[117] = new Rule(-8, new int[]{107});
    rules[118] = new Rule(-8, new int[]{108});
    rules[119] = new Rule(-8, new int[]{109});
    rules[120] = new Rule(-8, new int[]{110});
    rules[121] = new Rule(-8, new int[]{111});
    rules[122] = new Rule(-8, new int[]{112});
    rules[123] = new Rule(-8, new int[]{113});
    rules[124] = new Rule(-8, new int[]{114});
    rules[125] = new Rule(-8, new int[]{115});
    rules[126] = new Rule(-8, new int[]{116});
    rules[127] = new Rule(-8, new int[]{117});
    rules[128] = new Rule(-8, new int[]{118});
    rules[129] = new Rule(-8, new int[]{119});
    rules[130] = new Rule(-8, new int[]{120});
    rules[131] = new Rule(-8, new int[]{121});
    rules[132] = new Rule(-8, new int[]{122});
    rules[133] = new Rule(-8, new int[]{123});
    rules[134] = new Rule(-8, new int[]{124});
    rules[135] = new Rule(-8, new int[]{125});
    rules[136] = new Rule(-8, new int[]{126});
    rules[137] = new Rule(-8, new int[]{127});
    rules[138] = new Rule(-8, new int[]{128});
    rules[139] = new Rule(-8, new int[]{129});
    rules[140] = new Rule(-8, new int[]{130});
    rules[141] = new Rule(-8, new int[]{131});
    rules[142] = new Rule(-8, new int[]{132});
    rules[143] = new Rule(-8, new int[]{133});
    rules[144] = new Rule(-8, new int[]{134});
    rules[145] = new Rule(-8, new int[]{135});
    rules[146] = new Rule(-8, new int[]{136});
    rules[147] = new Rule(-8, new int[]{137});
    rules[148] = new Rule(-8, new int[]{138});
    rules[149] = new Rule(-8, new int[]{139});
    rules[150] = new Rule(-8, new int[]{140});
    rules[151] = new Rule(-8, new int[]{141});
    rules[152] = new Rule(-8, new int[]{142});
    rules[153] = new Rule(-8, new int[]{143});
    rules[154] = new Rule(-8, new int[]{144});
    rules[155] = new Rule(-8, new int[]{145});
    rules[156] = new Rule(-8, new int[]{146});
    rules[157] = new Rule(-8, new int[]{147});
    rules[158] = new Rule(-8, new int[]{148});
    rules[159] = new Rule(-8, new int[]{149});
    rules[160] = new Rule(-8, new int[]{150});
    rules[161] = new Rule(-8, new int[]{151});
    rules[162] = new Rule(-8, new int[]{152});
    rules[163] = new Rule(-8, new int[]{153});
    rules[164] = new Rule(-8, new int[]{154});
    rules[165] = new Rule(-8, new int[]{155});
    rules[166] = new Rule(-8, new int[]{156});
    rules[167] = new Rule(-8, new int[]{157});
    rules[168] = new Rule(-8, new int[]{158});
    rules[169] = new Rule(-8, new int[]{159});
    rules[170] = new Rule(-8, new int[]{160});
    rules[171] = new Rule(-8, new int[]{161});
    rules[172] = new Rule(-8, new int[]{162});
    rules[173] = new Rule(-8, new int[]{163});
    rules[174] = new Rule(-8, new int[]{164});
    rules[175] = new Rule(-8, new int[]{165});
    rules[176] = new Rule(-8, new int[]{166});
    rules[177] = new Rule(-8, new int[]{167});
    rules[178] = new Rule(-8, new int[]{168});
    rules[179] = new Rule(-8, new int[]{169});
    rules[180] = new Rule(-8, new int[]{170});
    rules[181] = new Rule(-8, new int[]{171});
    rules[182] = new Rule(-8, new int[]{172});
    rules[183] = new Rule(-8, new int[]{173});
    rules[184] = new Rule(-8, new int[]{174});
    rules[185] = new Rule(-8, new int[]{175});
    rules[186] = new Rule(-8, new int[]{176});
    rules[187] = new Rule(-8, new int[]{177});
    rules[188] = new Rule(-8, new int[]{178});
    rules[189] = new Rule(-8, new int[]{179});
    rules[190] = new Rule(-8, new int[]{180});
    rules[191] = new Rule(-8, new int[]{181});
    rules[192] = new Rule(-8, new int[]{182});
    rules[193] = new Rule(-8, new int[]{183});
    rules[194] = new Rule(-8, new int[]{184});
    rules[195] = new Rule(-8, new int[]{185});
    rules[196] = new Rule(-8, new int[]{186});
    rules[197] = new Rule(-8, new int[]{187});
    rules[198] = new Rule(-8, new int[]{188});
    rules[199] = new Rule(-8, new int[]{189});
    rules[200] = new Rule(-8, new int[]{190});
    rules[201] = new Rule(-8, new int[]{191});
    rules[202] = new Rule(-8, new int[]{192});
    rules[203] = new Rule(-8, new int[]{193});
    rules[204] = new Rule(-8, new int[]{194});
    rules[205] = new Rule(-8, new int[]{195});
    rules[206] = new Rule(-8, new int[]{196});
    rules[207] = new Rule(-8, new int[]{197});
    rules[208] = new Rule(-8, new int[]{198});
    rules[209] = new Rule(-8, new int[]{199});
    rules[210] = new Rule(-8, new int[]{200});
    rules[211] = new Rule(-8, new int[]{201});
    rules[212] = new Rule(-8, new int[]{202});
    rules[213] = new Rule(-8, new int[]{203});
    rules[214] = new Rule(-8, new int[]{204});
    rules[215] = new Rule(-8, new int[]{205});
    rules[216] = new Rule(-8, new int[]{206});
    rules[217] = new Rule(-8, new int[]{207});
    rules[218] = new Rule(-8, new int[]{208});
    rules[219] = new Rule(-8, new int[]{209});
    rules[220] = new Rule(-8, new int[]{210});
    rules[221] = new Rule(-8, new int[]{211});
    rules[222] = new Rule(-8, new int[]{212});
    rules[223] = new Rule(-8, new int[]{213});
    rules[224] = new Rule(-8, new int[]{214});
    rules[225] = new Rule(-8, new int[]{215});
    rules[226] = new Rule(-8, new int[]{216});
    rules[227] = new Rule(-8, new int[]{217});
    rules[228] = new Rule(-8, new int[]{218});
    rules[229] = new Rule(-8, new int[]{219});
    rules[230] = new Rule(-8, new int[]{220});
    rules[231] = new Rule(-8, new int[]{221});
    rules[232] = new Rule(-8, new int[]{222});
    rules[233] = new Rule(-8, new int[]{223});
    rules[234] = new Rule(-8, new int[]{224});
    rules[235] = new Rule(-8, new int[]{225});
    rules[236] = new Rule(-8, new int[]{226});
    rules[237] = new Rule(-8, new int[]{227});
    rules[238] = new Rule(-8, new int[]{228});
    rules[239] = new Rule(-8, new int[]{229});
    rules[240] = new Rule(-8, new int[]{230});
    rules[241] = new Rule(-8, new int[]{231});
    rules[242] = new Rule(-8, new int[]{232});
    rules[243] = new Rule(-8, new int[]{233});
    rules[244] = new Rule(-8, new int[]{234});
    rules[245] = new Rule(-8, new int[]{235});
    rules[246] = new Rule(-8, new int[]{236});
    rules[247] = new Rule(-8, new int[]{237});
    rules[248] = new Rule(-8, new int[]{238});
    rules[249] = new Rule(-8, new int[]{239});
    rules[250] = new Rule(-8, new int[]{240});
    rules[251] = new Rule(-8, new int[]{241});
    rules[252] = new Rule(-8, new int[]{242});
    rules[253] = new Rule(-8, new int[]{243});
    rules[254] = new Rule(-8, new int[]{244});
    rules[255] = new Rule(-8, new int[]{245});
    rules[256] = new Rule(-8, new int[]{246});
    rules[257] = new Rule(-8, new int[]{247});
    rules[258] = new Rule(-8, new int[]{248});
    rules[259] = new Rule(-8, new int[]{249});
    rules[260] = new Rule(-8, new int[]{250});
    rules[261] = new Rule(-8, new int[]{251});
    rules[262] = new Rule(-8, new int[]{252});
    rules[263] = new Rule(-8, new int[]{253});
    rules[264] = new Rule(-8, new int[]{254});
    rules[265] = new Rule(-8, new int[]{255});
    rules[266] = new Rule(-8, new int[]{256});
    rules[267] = new Rule(-8, new int[]{257});
    rules[268] = new Rule(-8, new int[]{258});
    rules[269] = new Rule(-8, new int[]{259});
    rules[270] = new Rule(-8, new int[]{260});
    rules[271] = new Rule(-8, new int[]{261});
    rules[272] = new Rule(-8, new int[]{262});
    rules[273] = new Rule(-8, new int[]{263});
    rules[274] = new Rule(-8, new int[]{264});
    rules[275] = new Rule(-8, new int[]{265});
    rules[276] = new Rule(-8, new int[]{266});
    rules[277] = new Rule(-8, new int[]{267});
    rules[278] = new Rule(-8, new int[]{268});
    rules[279] = new Rule(-8, new int[]{269});
    rules[280] = new Rule(-8, new int[]{270});
    rules[281] = new Rule(-8, new int[]{271});
    rules[282] = new Rule(-8, new int[]{272});
    rules[283] = new Rule(-8, new int[]{273});
    rules[284] = new Rule(-8, new int[]{274});
    rules[285] = new Rule(-8, new int[]{275});
    rules[286] = new Rule(-8, new int[]{276});
    rules[287] = new Rule(-8, new int[]{277});
    rules[288] = new Rule(-8, new int[]{278});
    rules[289] = new Rule(-8, new int[]{279});
    rules[290] = new Rule(-8, new int[]{280});
    rules[291] = new Rule(-8, new int[]{281});
    rules[292] = new Rule(-8, new int[]{282});
    rules[293] = new Rule(-8, new int[]{283});
    rules[294] = new Rule(-8, new int[]{284});
    rules[295] = new Rule(-8, new int[]{285});
    rules[296] = new Rule(-8, new int[]{286});
    rules[297] = new Rule(-8, new int[]{287});
    rules[298] = new Rule(-8, new int[]{288});
    rules[299] = new Rule(-8, new int[]{289});
    rules[300] = new Rule(-8, new int[]{360});
    rules[301] = new Rule(-9, new int[]{76});
    rules[302] = new Rule(-9, new int[]{77});
    rules[303] = new Rule(-9, new int[]{78});
    rules[304] = new Rule(-9, new int[]{79});
    rules[305] = new Rule(-9, new int[]{80});
    rules[306] = new Rule(-9, new int[]{81});
    rules[307] = new Rule(-9, new int[]{82});
    rules[308] = new Rule(-10, new int[]{55});
    rules[309] = new Rule(-10, new int[]{66});
    rules[310] = new Rule(-10, new int[]{94});
    rules[311] = new Rule(-11, new int[]{290});
    rules[312] = new Rule(-11, new int[]{291});
    rules[313] = new Rule(-11, new int[]{292});
    rules[314] = new Rule(-11, new int[]{293});
    rules[315] = new Rule(-11, new int[]{294});
    rules[316] = new Rule(-11, new int[]{295});
    rules[317] = new Rule(-11, new int[]{296});
    rules[318] = new Rule(-11, new int[]{297});
    rules[319] = new Rule(-11, new int[]{298});
    rules[320] = new Rule(-11, new int[]{299});
    rules[321] = new Rule(-11, new int[]{300});
    rules[322] = new Rule(-11, new int[]{301});
    rules[323] = new Rule(-11, new int[]{302});
    rules[324] = new Rule(-11, new int[]{303});
    rules[325] = new Rule(-11, new int[]{304});
    rules[326] = new Rule(-11, new int[]{305});
    rules[327] = new Rule(-11, new int[]{306});
    rules[328] = new Rule(-11, new int[]{307});
    rules[329] = new Rule(-11, new int[]{308});
    rules[330] = new Rule(-11, new int[]{309});
    rules[331] = new Rule(-11, new int[]{310});
    rules[332] = new Rule(-11, new int[]{311});
    rules[333] = new Rule(-11, new int[]{312});
    rules[334] = new Rule(-11, new int[]{313});
    rules[335] = new Rule(-11, new int[]{314});
    rules[336] = new Rule(-11, new int[]{315});
    rules[337] = new Rule(-11, new int[]{316});
    rules[338] = new Rule(-11, new int[]{317});
    rules[339] = new Rule(-11, new int[]{318});
    rules[340] = new Rule(-11, new int[]{319});
    rules[341] = new Rule(-11, new int[]{320});
    rules[342] = new Rule(-11, new int[]{321});
    rules[343] = new Rule(-11, new int[]{322});
    rules[344] = new Rule(-11, new int[]{323});
    rules[345] = new Rule(-11, new int[]{324});
    rules[346] = new Rule(-11, new int[]{325});
    rules[347] = new Rule(-11, new int[]{326});
    rules[348] = new Rule(-11, new int[]{327});
    rules[349] = new Rule(-11, new int[]{328});
    rules[350] = new Rule(-11, new int[]{329});
    rules[351] = new Rule(-11, new int[]{330});
    rules[352] = new Rule(-11, new int[]{331});
    rules[353] = new Rule(-11, new int[]{332});
    rules[354] = new Rule(-11, new int[]{333});
    rules[355] = new Rule(-11, new int[]{334});
    rules[356] = new Rule(-11, new int[]{335});
    rules[357] = new Rule(-11, new int[]{336});
    rules[358] = new Rule(-11, new int[]{337});
    rules[359] = new Rule(-11, new int[]{338});
    rules[360] = new Rule(-11, new int[]{339});
    rules[361] = new Rule(-11, new int[]{340});
    rules[362] = new Rule(-11, new int[]{341});
    rules[363] = new Rule(-11, new int[]{342});
    rules[364] = new Rule(-11, new int[]{343});
    rules[365] = new Rule(-11, new int[]{344});
    rules[366] = new Rule(-11, new int[]{345});
    rules[367] = new Rule(-11, new int[]{346});
    rules[368] = new Rule(-11, new int[]{347});
    rules[369] = new Rule(-11, new int[]{348});
    rules[370] = new Rule(-11, new int[]{349});
    rules[371] = new Rule(-11, new int[]{350});
    rules[372] = new Rule(-11, new int[]{351});
    rules[373] = new Rule(-11, new int[]{352});
    rules[374] = new Rule(-11, new int[]{353});
    rules[375] = new Rule(-11, new int[]{354});
    rules[376] = new Rule(-11, new int[]{355});
    rules[377] = new Rule(-11, new int[]{356});
    rules[378] = new Rule(-11, new int[]{357});
    rules[379] = new Rule(-11, new int[]{358});
    rules[380] = new Rule(-11, new int[]{359});
  }

  protected override void Initialize() {
    this.InitSpecialTokens((int)Tokens.error, (int)Tokens.EOF);
    this.InitStates(states);
    this.InitRules(rules);
    this.InitNonTerminals(nonTerms);
  }

  protected override void DoAction(int action)
  {
#pragma warning disable 162, 1522
    switch (action)
    {
      case 4: // list -> list, stat, endline
#line 378 "d:\tysos\tirc\tir.y"
{ if(!tacs.ContainsKey(cur_func)) tacs[cur_func] = new List<TreeNode>(); tacs[cur_func].Add(ValueStack[ValueStack.Depth-2].tacval); }
        break;
      case 5: // list -> list, label, stat, endline
#line 379 "d:\tysos\tirc\tir.y"
{ if(!tacs.ContainsKey(cur_func)) tacs[cur_func] = new List<TreeNode>(); tacs[cur_func].Add(ValueStack[ValueStack.Depth-3].tacval); tacs[cur_func].Add(ValueStack[ValueStack.Depth-2].tacval); }
        break;
      case 8: // funcdef -> FUNC, STRING
#line 384 "d:\tysos\tirc\tir.y"
{ cur_func = ValueStack[ValueStack.Depth-1].strval; CurrentSemanticValue.tacval = new TimpleLabelNode(ValueStack[ValueStack.Depth-1].strval); }
        break;
      case 9: // externdef -> EXTERN, type, STRING, LPAREN, ttclist, RPAREN
#line 387 "d:\tysos\tirc\tir.y"
{ AddExternDef(ValueStack[ValueStack.Depth-4].strval, ValueStack[ValueStack.Depth-5].ttc, ValueStack[ValueStack.Depth-2].ttclist, "default"); }
        break;
      case 10: // externdef -> EXTERN, type, STRING, LPAREN, ttclist, RPAREN, WITH, STRING
#line 388 "d:\tysos\tirc\tir.y"
{ AddExternDef(ValueStack[ValueStack.Depth-6].strval, ValueStack[ValueStack.Depth-7].ttc, ValueStack[ValueStack.Depth-4].ttclist, ValueStack[ValueStack.Depth-1].strval); }
        break;
      case 11: // vardef -> DEF, varlist, AS, type
#line 391 "d:\tysos\tirc\tir.y"
{ AddVarDef(ValueStack[ValueStack.Depth-3].intlist, ValueStack[ValueStack.Depth-1].ttc); }
        break;
      case 12: // varlist -> INT
#line 394 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.intlist = new List<int> { ValueStack[ValueStack.Depth-1].intval }; }
        break;
      case 13: // varlist -> varlist, COMMA, INT
#line 395 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.intlist = new List<int>(ValueStack[ValueStack.Depth-3].intlist); CurrentSemanticValue.intlist.Add(ValueStack[ValueStack.Depth-1].intval); }
        break;
      case 14: // type -> module, STRING, DOT, STRING, gen_args
#line 398 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.ttc = InterpretType(ValueStack[ValueStack.Depth-5].strval, ValueStack[ValueStack.Depth-4].strval, ValueStack[ValueStack.Depth-2].strval, ValueStack[ValueStack.Depth-1].ttclist); }
        break;
      case 15: // type -> STRING, DOT, STRING, gen_args
#line 399 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.ttc = InterpretType(cur_module, ValueStack[ValueStack.Depth-4].strval, ValueStack[ValueStack.Depth-2].strval, ValueStack[ValueStack.Depth-1].ttclist); }
        break;
      case 16: // type -> STRING, gen_args
#line 400 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.ttc = InterpretSimpleType(cur_module, cur_nspace, ValueStack[ValueStack.Depth-2].strval, ValueStack[ValueStack.Depth-1].ttclist); }
        break;
      case 17: // module -> LBRACK, STRING, RBRACK
#line 403 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.strval = ValueStack[ValueStack.Depth-2].strval; }
        break;
      case 18: // gen_args -> /* empty */
#line 406 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.ttclist = new List<Assembler.TypeToCompile>(); }
        break;
      case 19: // ttclist -> /* empty */
#line 409 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.ttclist = new List<Assembler.TypeToCompile>(); }
        break;
      case 21: // ttclist2 -> type
#line 413 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.ttclist = new List<Assembler.TypeToCompile>(); CurrentSemanticValue.ttclist.Add(ValueStack[ValueStack.Depth-1].ttc); }
        break;
      case 22: // ttclist2 -> ttclist2, COMMA, type
#line 414 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.ttclist = new List<Assembler.TypeToCompile>(ValueStack[ValueStack.Depth-3].ttclist); CurrentSemanticValue.ttclist.Add(ValueStack[ValueStack.Depth-1].ttc); }
        break;
      case 25: // stat -> label
#line 421 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.tacval = ValueStack[ValueStack.Depth-1].tacval; }
        break;
      case 26: // stat -> var, EQUALS, var
#line 422 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.tacval = new TimpleNode(libtysila.Assembler.GetAssignTac(ValueStack[ValueStack.Depth-3].varval.DataType), ValueStack[ValueStack.Depth-3].varval, ValueStack[ValueStack.Depth-1].varval, libtysila.vara.Void()); }
        break;
      case 27: // stat -> var, EQUALS, inst
#line 423 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.tacval = new TimpleNode(ValueStack[ValueStack.Depth-1].pival.op, ValueStack[ValueStack.Depth-3].varval, var_if_exist(1, ValueStack[ValueStack.Depth-1].pival.args), var_if_exist(2, ValueStack[ValueStack.Depth-1].pival.args)); }
        break;
      case 28: // stat -> var, EQUALS, call_inst
#line 424 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.tacval = new TimpleCallNode(ValueStack[ValueStack.Depth-1].pival.op, ValueStack[ValueStack.Depth-3].varval, ValueStack[ValueStack.Depth-1].pival.call_target, ValueStack[ValueStack.Depth-1].pival.args, GetMethSig(ValueStack[ValueStack.Depth-1].pival), GetCallConv(ValueStack[ValueStack.Depth-1].pival)); }
        break;
      case 29: // stat -> inst
#line 425 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.tacval = new TimpleNode(ValueStack[ValueStack.Depth-1].pival.op, libtysila.vara.Void(), var_if_exist(1, ValueStack[ValueStack.Depth-1].pival.args), var_if_exist(2, ValueStack[ValueStack.Depth-1].pival.args)); }
        break;
      case 30: // stat -> call_inst
#line 426 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.tacval = new TimpleCallNode(ValueStack[ValueStack.Depth-1].pival.op, libtysila.vara.Void(), ValueStack[ValueStack.Depth-1].pival.call_target, ValueStack[ValueStack.Depth-1].pival.args, GetMethSig(ValueStack[ValueStack.Depth-1].pival), GetCallConv(ValueStack[ValueStack.Depth-1].pival)); }
        break;
      case 31: // stat -> br_inst
#line 427 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.tacval = new TimpleBrNode(ValueStack[ValueStack.Depth-1].pival.op, ValueStack[ValueStack.Depth-1].pival.block_target); }
        break;
      case 32: // stat -> cmpbr_inst
#line 428 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.tacval = new TimpleBrNode(ValueStack[ValueStack.Depth-1].pival.op, ValueStack[ValueStack.Depth-1].pival.block_target, var_if_exist(1, ValueStack[ValueStack.Depth-1].pival.args), var_if_exist(2, ValueStack[ValueStack.Depth-1].pival.args)); }
        break;
      case 33: // stat -> funcdef
#line 429 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.tacval = ValueStack[ValueStack.Depth-1].tacval; }
        break;
      case 34: // label -> INTLABEL
#line 432 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.tacval = new TimpleLabelNode(ValueStack[ValueStack.Depth-1].intval); }
        break;
      case 35: // var -> INT
#line 435 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.varval = libtysila.vara.Logical(ValueStack[ValueStack.Depth-1].intval, GetDataTypeOf(ValueStack[ValueStack.Depth-1].intval)); }
        break;
      case 36: // var -> MUL, INT
#line 436 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.varval = libtysila.vara.ContentsOf(ValueStack[ValueStack.Depth-1].intval, libtysila.Assembler.CliType.void_); }
        break;
      case 37: // var -> MUL, LPAREN, INT, offset, RPAREN
#line 437 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.varval = libtysila.vara.ContentsOf(ValueStack[ValueStack.Depth-3].intval, ValueStack[ValueStack.Depth-2].intval, libtysila.Assembler.CliType.void_); }
        break;
      case 38: // var -> const
#line 438 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.varval = ValueStack[ValueStack.Depth-1].varval; }
        break;
      case 39: // var -> STRING
#line 439 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.varval = libtysila.vara.Label(ValueStack[ValueStack.Depth-1].strval); }
        break;
      case 40: // var -> AMP, INT
#line 440 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.varval = libtysila.vara.AddrOf(ValueStack[ValueStack.Depth-1].intval); }
        break;
      case 41: // var -> AMP, STRING
#line 441 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.varval = libtysila.vara.Label(ValueStack[ValueStack.Depth-1].strval); }
        break;
      case 42: // offset -> PLUS, DOLLARS, INT
#line 444 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.intval = ValueStack[ValueStack.Depth-1].intval; }
        break;
      case 43: // offset -> MINUS, DOLLARS, INT
#line 445 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.intval = 0 - ValueStack[ValueStack.Depth-1].intval; }
        break;
      case 44: // const -> DOLLARS, INT
#line 448 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.varval = libtysila.vara.Const(ValueStack[ValueStack.Depth-1].intval, libtysila.Assembler.CliType.void_); }
        break;
      case 45: // const -> DOLLARS, MINUS, INT
#line 449 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.varval = libtysila.vara.Const(- ValueStack[ValueStack.Depth-1].intval, libtysila.Assembler.CliType.void_); }
        break;
      case 46: // arglist -> /* empty */
#line 452 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.arglist = new List<libtysila.vara>(); }
        break;
      case 47: // arglist -> LPAREN, RPAREN
#line 453 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.arglist = new List<libtysila.vara>(); }
        break;
      case 48: // arglist -> LPAREN, arglist2, RPAREN
#line 454 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.arglist = ValueStack[ValueStack.Depth-2].arglist; }
        break;
      case 49: // arglist2 -> var
#line 457 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.arglist = new List<libtysila.vara>(); CurrentSemanticValue.arglist.Add(ValueStack[ValueStack.Depth-1].varval); }
        break;
      case 50: // arglist2 -> arglist2, COMMA, var
#line 458 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.arglist = new List<libtysila.vara>(ValueStack[ValueStack.Depth-3].arglist); CurrentSemanticValue.arglist.Add(ValueStack[ValueStack.Depth-1].varval); }
        break;
      case 51: // carglist -> LPAREN, var, COLON, RPAREN
#line 461 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.pival = new partial_inst { call_target = ValueStack[ValueStack.Depth-3].varval, args = new List<libtysila.vara>() }; }
        break;
      case 52: // carglist -> LPAREN, var, COLON, arglist2, RPAREN
#line 462 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.pival = new partial_inst { call_target = ValueStack[ValueStack.Depth-4].varval, args = ValueStack[ValueStack.Depth-2].arglist }; }
        break;
      case 53: // inst -> op, arglist
#line 465 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.pival = new partial_inst { op = ValueStack[ValueStack.Depth-2].opval, args = ValueStack[ValueStack.Depth-1].arglist }; }
        break;
      case 54: // call_inst -> call_op, carglist
#line 468 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.pival = new partial_inst { op = ValueStack[ValueStack.Depth-2].opval, args = ValueStack[ValueStack.Depth-1].pival.args, call_target = ValueStack[ValueStack.Depth-1].pival.call_target }; }
        break;
      case 55: // br_inst -> br_op, LPAREN, STRING, RPAREN
#line 471 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.pival = new partial_inst { op = ValueStack[ValueStack.Depth-4].opval, block_target = Int32.Parse(ValueStack[ValueStack.Depth-2].strval.Substring(1)) }; }
        break;
      case 56: // cmpbr_inst -> cmpbr_op, LPAREN, INTLABEL, arglist2, RPAREN
#line 474 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.pival = new partial_inst { op = ValueStack[ValueStack.Depth-5].opval, block_target = ValueStack[ValueStack.Depth-3].intval, args = ValueStack[ValueStack.Depth-2].arglist }; }
        break;
      case 57: // op -> INVALID
#line 477 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.invalid; }
        break;
      case 58: // op -> LDCONST_I4
#line 478 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldconst_i4; }
        break;
      case 59: // op -> LDCONST_I8
#line 479 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldconst_i8; }
        break;
      case 60: // op -> LDCONST_R4
#line 480 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldconst_r4; }
        break;
      case 61: // op -> LDCONST_R8
#line 481 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldconst_r8; }
        break;
      case 62: // op -> LDCONST_I
#line 482 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldconst_i; }
        break;
      case 63: // op -> ADD_I4
#line 483 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.add_i4; }
        break;
      case 64: // op -> ADD_I8
#line 484 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.add_i8; }
        break;
      case 65: // op -> ADD_R8
#line 485 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.add_r8; }
        break;
      case 66: // op -> ADD_R4
#line 486 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.add_r4; }
        break;
      case 67: // op -> ADD_I
#line 487 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.add_i; }
        break;
      case 68: // op -> ADD_OVF_I4
#line 488 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.add_ovf_i4; }
        break;
      case 69: // op -> ADD_OVF_I8
#line 489 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.add_ovf_i8; }
        break;
      case 70: // op -> ADD_OVF_I
#line 490 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.add_ovf_i; }
        break;
      case 71: // op -> ADD_OVF_UN_I4
#line 491 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.add_ovf_un_i4; }
        break;
      case 72: // op -> ADD_OVF_UN_I8
#line 492 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.add_ovf_un_i8; }
        break;
      case 73: // op -> ADD_OVF_UN_I
#line 493 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.add_ovf_un_i; }
        break;
      case 74: // op -> AND_I4
#line 494 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.and_i4; }
        break;
      case 75: // op -> AND_I8
#line 495 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.and_i8; }
        break;
      case 76: // op -> AND_I
#line 496 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.and_i; }
        break;
      case 77: // op -> ARGLIST
#line 497 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.arglist; }
        break;
      case 78: // op -> CMP_I4
#line 498 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.cmp_i4; }
        break;
      case 79: // op -> CMP_I8
#line 499 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.cmp_i8; }
        break;
      case 80: // op -> CMP_I
#line 500 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.cmp_i; }
        break;
      case 81: // op -> CMP_R8
#line 501 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.cmp_r8; }
        break;
      case 82: // op -> CMP_R4
#line 502 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.cmp_r4; }
        break;
      case 83: // op -> CMP_R8_UN
#line 503 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.cmp_r8_un; }
        break;
      case 84: // op -> CMP_R4_UN
#line 504 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.cmp_r4_un; }
        break;
      case 85: // op -> THROWEQ
#line 505 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.throweq; }
        break;
      case 86: // op -> THROWNE
#line 506 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.throwne; }
        break;
      case 87: // op -> THROW_OVF
#line 507 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.throw_ovf; }
        break;
      case 88: // op -> THROW_OVF_UN
#line 508 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.throw_ovf_un; }
        break;
      case 89: // op -> THROWGE_UN
#line 509 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.throwge_un; }
        break;
      case 90: // op -> THROWG_UN
#line 510 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.throwg_un; }
        break;
      case 91: // op -> BREAK_
#line 511 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.break_; }
        break;
      case 92: // op -> THROW_
#line 512 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.throw_; }
        break;
      case 93: // op -> LDFTN
#line 513 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldftn; }
        break;
      case 94: // op -> SETEQ
#line 514 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.seteq; }
        break;
      case 95: // op -> SETNE
#line 515 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.setne; }
        break;
      case 96: // op -> SETG
#line 516 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.setg; }
        break;
      case 97: // op -> SETGE
#line 517 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.setge; }
        break;
      case 98: // op -> SETL
#line 518 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.setl; }
        break;
      case 99: // op -> SETLE
#line 519 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.setle; }
        break;
      case 100: // op -> SETA
#line 520 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.seta; }
        break;
      case 101: // op -> SETAE
#line 521 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.setae; }
        break;
      case 102: // op -> SETB
#line 522 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.setb; }
        break;
      case 103: // op -> SETBE
#line 523 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.setbe; }
        break;
      case 104: // op -> EXAMINEF
#line 524 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.examinef; }
        break;
      case 105: // op -> CONV_I4_U1ZX
#line 525 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i4_u1zx; }
        break;
      case 106: // op -> CONV_I4_I1SX
#line 526 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i4_i1sx; }
        break;
      case 107: // op -> CONV_I4_U2ZX
#line 527 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i4_u2zx; }
        break;
      case 108: // op -> CONV_I4_I2SX
#line 528 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i4_i2sx; }
        break;
      case 109: // op -> CONV_I4_I8SX
#line 529 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i4_i8sx; }
        break;
      case 110: // op -> CONV_I4_U8ZX
#line 530 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i4_u8zx; }
        break;
      case 111: // op -> CONV_I4_ISX
#line 531 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i4_isx; }
        break;
      case 112: // op -> CONV_I4_UZX
#line 532 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i4_uzx; }
        break;
      case 113: // op -> CONV_I8_U1ZX
#line 533 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i8_u1zx; }
        break;
      case 114: // op -> CONV_I8_I1SX
#line 534 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i8_i1sx; }
        break;
      case 115: // op -> CONV_I8_U2ZX
#line 535 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i8_u2zx; }
        break;
      case 116: // op -> CONV_I8_I2SX
#line 536 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i8_i2sx; }
        break;
      case 117: // op -> CONV_I8_I4SX
#line 537 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i8_i4sx; }
        break;
      case 118: // op -> CONV_I8_U4ZX
#line 538 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i8_u4zx; }
        break;
      case 119: // op -> CONV_I8_ISX
#line 539 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i8_isx; }
        break;
      case 120: // op -> CONV_I8_UZX
#line 540 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i8_uzx; }
        break;
      case 121: // op -> CONV_I_U1ZX
#line 541 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i_u1zx; }
        break;
      case 122: // op -> CONV_I_I1SX
#line 542 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i_i1sx; }
        break;
      case 123: // op -> CONV_I_U2ZX
#line 543 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i_u2zx; }
        break;
      case 124: // op -> CONV_I_I2SX
#line 544 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i_i2sx; }
        break;
      case 125: // op -> CONV_I_I8SX
#line 545 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i_i8sx; }
        break;
      case 126: // op -> CONV_I_U8ZX
#line 546 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i_u8zx; }
        break;
      case 127: // op -> CONV_I_ISX
#line 547 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i_isx; }
        break;
      case 128: // op -> CONV_I_UZX
#line 548 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i_uzx; }
        break;
      case 129: // op -> CONV_I_I4SX
#line 549 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i_i4sx; }
        break;
      case 130: // op -> CONV_I_U4ZX
#line 550 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i_u4zx; }
        break;
      case 131: // op -> CONV_R8_I8
#line 551 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_r8_i8; }
        break;
      case 132: // op -> CONV_R8_I4
#line 552 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_r8_i4; }
        break;
      case 133: // op -> CONV_R8_I
#line 553 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_r8_i; }
        break;
      case 134: // op -> CONV_I4_R8
#line 554 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i4_r8; }
        break;
      case 135: // op -> CONV_I8_R8
#line 555 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i8_r8; }
        break;
      case 136: // op -> CONV_I_R8
#line 556 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i_r8; }
        break;
      case 137: // op -> CONV_R4_I8
#line 557 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_r4_i8; }
        break;
      case 138: // op -> CONV_R4_I4
#line 558 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_r4_i4; }
        break;
      case 139: // op -> CONV_R4_I
#line 559 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_r4_i; }
        break;
      case 140: // op -> CONV_I4_R4
#line 560 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i4_r4; }
        break;
      case 141: // op -> CONV_I8_R4
#line 561 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i8_r4; }
        break;
      case 142: // op -> CONV_I_R4
#line 562 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_i_r4; }
        break;
      case 143: // op -> CONV_R8_R4
#line 563 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_r8_r4; }
        break;
      case 144: // op -> CONV_R4_R8
#line 564 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_r4_r8; }
        break;
      case 145: // op -> CONV_U4_R8
#line 565 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_u4_r8; }
        break;
      case 146: // op -> CONV_U8_R8
#line 566 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_u8_r8; }
        break;
      case 147: // op -> CONV_U_R8
#line 567 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.conv_u_r8; }
        break;
      case 148: // op -> MOVSTRING
#line 568 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.movstring; }
        break;
      case 149: // op -> DIV_I4
#line 569 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.div_i4; }
        break;
      case 150: // op -> DIV_I8
#line 570 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.div_i8; }
        break;
      case 151: // op -> DIV_I
#line 571 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.div_i; }
        break;
      case 152: // op -> DIV_R8
#line 572 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.div_r8; }
        break;
      case 153: // op -> DIV_R4
#line 573 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.div_r4; }
        break;
      case 154: // op -> DIV_U4
#line 574 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.div_u4; }
        break;
      case 155: // op -> DIV_U8
#line 575 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.div_u8; }
        break;
      case 156: // op -> DIV_U
#line 576 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.div_u; }
        break;
      case 157: // op -> SETSTRING_VALUE
#line 577 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.setstring_value; }
        break;
      case 158: // op -> GETSTRING_VALUE
#line 578 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.getstring_value; }
        break;
      case 159: // op -> STORESTRING
#line 579 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.storestring; }
        break;
      case 160: // op -> JMPMETHOD
#line 580 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.jmpmethod; }
        break;
      case 161: // op -> LDOBJ_I4
#line 581 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldobj_i4; }
        break;
      case 162: // op -> LDOBJ_I8
#line 582 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldobj_i8; }
        break;
      case 163: // op -> LDOBJ_R4
#line 583 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldobj_r4; }
        break;
      case 164: // op -> LDOBJ_R8
#line 584 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldobj_r8; }
        break;
      case 165: // op -> LDOBJ_I
#line 585 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldobj_i; }
        break;
      case 166: // op -> LDOBJ_VT
#line 586 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldobj_vt; }
        break;
      case 167: // op -> LDOBJA_EX_I
#line 587 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldobja_ex_i; }
        break;
      case 168: // op -> STOBJ_I4
#line 588 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.stobj_i4; }
        break;
      case 169: // op -> STOBJ_I8
#line 589 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.stobj_i8; }
        break;
      case 170: // op -> STOBJ_R4
#line 590 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.stobj_r4; }
        break;
      case 171: // op -> STOBJ_R8
#line 591 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.stobj_r8; }
        break;
      case 172: // op -> STOBJ_I
#line 592 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.stobj_i; }
        break;
      case 173: // op -> STOBJ_VT
#line 593 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.stobj_vt; }
        break;
      case 174: // op -> LDARGA
#line 594 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldarga; }
        break;
      case 175: // op -> LDLOCA
#line 595 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldloca; }
        break;
      case 176: // op -> LDSTRA
#line 596 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldstra; }
        break;
      case 177: // op -> LDDATAA
#line 597 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.lddataa; }
        break;
      case 178: // op -> MUL_I4
#line 598 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.mul_i4; }
        break;
      case 179: // op -> MUL_I8
#line 599 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.mul_i8; }
        break;
      case 180: // op -> MUL_I
#line 600 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.mul_i; }
        break;
      case 181: // op -> MUL_R8
#line 601 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.mul_r8; }
        break;
      case 182: // op -> MUL_R4
#line 602 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.mul_r4; }
        break;
      case 183: // op -> MUL_OVF_I4
#line 603 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.mul_ovf_i4; }
        break;
      case 184: // op -> MUL_OVF_I8
#line 604 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.mul_ovf_i8; }
        break;
      case 185: // op -> MUL_OVF_I
#line 605 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.mul_ovf_i; }
        break;
      case 186: // op -> MUL_OVF_UN_I4
#line 606 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.mul_ovf_un_i4; }
        break;
      case 187: // op -> MUL_OVF_UN_I8
#line 607 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.mul_ovf_un_i8; }
        break;
      case 188: // op -> MUL_OVF_UN_I
#line 608 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.mul_ovf_un_i; }
        break;
      case 189: // op -> MUL_UN_I4
#line 609 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.mul_un_i4; }
        break;
      case 190: // op -> MUL_UN_I8
#line 610 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.mul_un_i8; }
        break;
      case 191: // op -> MUL_UN_I
#line 611 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.mul_un_i; }
        break;
      case 192: // op -> NEG_I4
#line 612 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.neg_i4; }
        break;
      case 193: // op -> NEG_I8
#line 613 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.neg_i8; }
        break;
      case 194: // op -> NEG_I
#line 614 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.neg_i; }
        break;
      case 195: // op -> NEG_R8
#line 615 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.neg_r8; }
        break;
      case 196: // op -> NEG_R4
#line 616 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.neg_r4; }
        break;
      case 197: // op -> NOT_I4
#line 617 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.not_i4; }
        break;
      case 198: // op -> NOT_I8
#line 618 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.not_i8; }
        break;
      case 199: // op -> NOT_I
#line 619 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.not_i; }
        break;
      case 200: // op -> OR_I4
#line 620 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.or_i4; }
        break;
      case 201: // op -> OR_I8
#line 621 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.or_i8; }
        break;
      case 202: // op -> OR_I
#line 622 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.or_i; }
        break;
      case 203: // op -> REM_I4
#line 623 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.rem_i4; }
        break;
      case 204: // op -> REM_I8
#line 624 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.rem_i8; }
        break;
      case 205: // op -> REM_I
#line 625 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.rem_i; }
        break;
      case 206: // op -> REM_R8
#line 626 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.rem_r8; }
        break;
      case 207: // op -> REM_R4
#line 627 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.rem_r4; }
        break;
      case 208: // op -> REM_UN_I4
#line 628 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.rem_un_i4; }
        break;
      case 209: // op -> REM_UN_I8
#line 629 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.rem_un_i8; }
        break;
      case 210: // op -> REM_UN_I
#line 630 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.rem_un_i; }
        break;
      case 211: // op -> RET_VOID
#line 631 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ret_void; }
        break;
      case 212: // op -> RET_I4
#line 632 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ret_i4; }
        break;
      case 213: // op -> RET_I8
#line 633 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ret_i8; }
        break;
      case 214: // op -> RET_I
#line 634 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ret_i; }
        break;
      case 215: // op -> RET_R8
#line 635 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ret_r8; }
        break;
      case 216: // op -> RET_VT
#line 636 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ret_vt; }
        break;
      case 217: // op -> SHL_I4
#line 637 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.shl_i4; }
        break;
      case 218: // op -> SHL_I8
#line 638 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.shl_i8; }
        break;
      case 219: // op -> SHL_I
#line 639 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.shl_i; }
        break;
      case 220: // op -> SHR_I4
#line 640 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.shr_i4; }
        break;
      case 221: // op -> SHR_I8
#line 641 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.shr_i8; }
        break;
      case 222: // op -> SHR_I
#line 642 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.shr_i; }
        break;
      case 223: // op -> SHR_UN_I4
#line 643 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.shr_un_i4; }
        break;
      case 224: // op -> SHR_UN_I8
#line 644 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.shr_un_i8; }
        break;
      case 225: // op -> SHR_UN_I
#line 645 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.shr_un_i; }
        break;
      case 226: // op -> SUB_I4
#line 646 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.sub_i4; }
        break;
      case 227: // op -> SUB_I8
#line 647 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.sub_i8; }
        break;
      case 228: // op -> SUB_I
#line 648 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.sub_i; }
        break;
      case 229: // op -> SUB_R8
#line 649 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.sub_r8; }
        break;
      case 230: // op -> SUB_R4
#line 650 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.sub_r4; }
        break;
      case 231: // op -> SUB_OVF_I
#line 651 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.sub_ovf_i; }
        break;
      case 232: // op -> SUB_OVF_UN_I
#line 652 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.sub_ovf_un_i; }
        break;
      case 233: // op -> SWITCH_
#line 653 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.switch_; }
        break;
      case 234: // op -> XOR_I4
#line 654 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.xor_i4; }
        break;
      case 235: // op -> XOR_I8
#line 655 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.xor_i8; }
        break;
      case 236: // op -> XOR_I
#line 656 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.xor_i; }
        break;
      case 237: // op -> SIZEOF_
#line 657 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.sizeof_; }
        break;
      case 238: // op -> MALLOC
#line 658 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.malloc; }
        break;
      case 239: // op -> ASSIGN_I4
#line 659 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.assign_i4; }
        break;
      case 240: // op -> ASSIGN_I8
#line 660 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.assign_i8; }
        break;
      case 241: // op -> ASSIGN_R4
#line 661 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.assign_r4; }
        break;
      case 242: // op -> ASSIGN_R8
#line 662 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.assign_r8; }
        break;
      case 243: // op -> ASSIGN_I
#line 663 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.assign_i; }
        break;
      case 244: // op -> ASSIGN_VT
#line 664 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.assign_vt; }
        break;
      case 245: // op -> ASSIGN_V_I4
#line 665 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.assign_v_i4; }
        break;
      case 246: // op -> ASSIGN_V_I8
#line 666 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.assign_v_i8; }
        break;
      case 247: // op -> ASSIGN_V_I
#line 667 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.assign_v_i; }
        break;
      case 248: // op -> ASSIGN_TO_VIRTFTNPTR
#line 668 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.assign_to_virtftnptr; }
        break;
      case 249: // op -> ASSIGN_FROM_VIRTFTNPTR_PTR
#line 669 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.assign_from_virtftnptr_ptr; }
        break;
      case 250: // op -> ASSIGN_FROM_VIRTFTNPTR_THISADJUST
#line 670 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.assign_from_virtftnptr_thisadjust; }
        break;
      case 251: // op -> ASSIGN_VIRTFTNPTR
#line 671 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.assign_virtftnptr; }
        break;
      case 252: // op -> LDOBJ_VIRTFTNPTR
#line 672 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldobj_virtftnptr; }
        break;
      case 253: // op -> LABEL
#line 673 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.label; }
        break;
      case 254: // op -> LOC_LABEL
#line 674 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.loc_label; }
        break;
      case 255: // op -> INSTRUCTION_LABEL
#line 675 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.instruction_label; }
        break;
      case 256: // op -> ENTER
#line 676 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.enter; }
        break;
      case 257: // op -> NOP
#line 677 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.nop; }
        break;
      case 258: // op -> PHI_I
#line 678 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.phi_i; }
        break;
      case 259: // op -> PHI_I4
#line 679 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.phi_i4; }
        break;
      case 260: // op -> PHI_I8
#line 680 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.phi_i8; }
        break;
      case 261: // op -> PHI_R4
#line 681 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.phi_r4; }
        break;
      case 262: // op -> PHI_R8
#line 682 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.phi_r8; }
        break;
      case 263: // op -> PHI_VT
#line 683 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.phi_vt; }
        break;
      case 264: // op -> PEEK_U1
#line 684 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.peek_u1; }
        break;
      case 265: // op -> PEEK_U2
#line 685 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.peek_u2; }
        break;
      case 266: // op -> PEEK_U4
#line 686 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.peek_u4; }
        break;
      case 267: // op -> PEEK_U8
#line 687 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.peek_u8; }
        break;
      case 268: // op -> PEEK_U
#line 688 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.peek_u; }
        break;
      case 269: // op -> PEEK_I1
#line 689 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.peek_i1; }
        break;
      case 270: // op -> PEEK_I2
#line 690 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.peek_i2; }
        break;
      case 271: // op -> PEEK_R4
#line 691 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.peek_r4; }
        break;
      case 272: // op -> PEEK_R8
#line 692 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.peek_r8; }
        break;
      case 273: // op -> POKE_U1
#line 693 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.poke_u1; }
        break;
      case 274: // op -> POKE_U2
#line 694 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.poke_u2; }
        break;
      case 275: // op -> POKE_U4
#line 695 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.poke_u4; }
        break;
      case 276: // op -> POKE_U8
#line 696 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.poke_u8; }
        break;
      case 277: // op -> POKE_U
#line 697 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.poke_u; }
        break;
      case 278: // op -> POKE_R4
#line 698 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.poke_r4; }
        break;
      case 279: // op -> POKE_R8
#line 699 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.poke_r8; }
        break;
      case 280: // op -> PORTOUT_U2_U1
#line 700 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.portout_u2_u1; }
        break;
      case 281: // op -> PORTOUT_U2_U2
#line 701 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.portout_u2_u2; }
        break;
      case 282: // op -> PORTOUT_U2_U4
#line 702 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.portout_u2_u4; }
        break;
      case 283: // op -> PORTOUT_U2_U8
#line 703 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.portout_u2_u8; }
        break;
      case 284: // op -> PORTOUT_U2_U
#line 704 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.portout_u2_u; }
        break;
      case 285: // op -> PORTIN_U2_U1
#line 705 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.portin_u2_u1; }
        break;
      case 286: // op -> PORTIN_U2_U2
#line 706 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.portin_u2_u2; }
        break;
      case 287: // op -> PORTIN_U2_U4
#line 707 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.portin_u2_u4; }
        break;
      case 288: // op -> PORTIN_U2_U8
#line 708 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.portin_u2_u8; }
        break;
      case 289: // op -> PORTIN_U2_U
#line 709 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.portin_u2_u; }
        break;
      case 290: // op -> TRY_ACQUIRE_I8
#line 710 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.try_acquire_i8; }
        break;
      case 291: // op -> RELEASE_I8
#line 711 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.release_i8; }
        break;
      case 292: // op -> SQRT_R8
#line 712 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.sqrt_r8; }
        break;
      case 293: // op -> ALLOCA_I4
#line 713 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.alloca_i4; }
        break;
      case 294: // op -> ALLOCA_I
#line 714 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.alloca_i; }
        break;
      case 295: // op -> ZEROMEM
#line 715 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.zeromem; }
        break;
      case 296: // op -> LDCATCHOBJ
#line 716 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldcatchobj; }
        break;
      case 297: // op -> LDMETHINFO
#line 717 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ldmethinfo; }
        break;
      case 298: // op -> ENDFINALLY
#line 718 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.endfinally; }
        break;
      case 299: // op -> LOCALARG
#line 719 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.localarg; }
        break;
      case 300: // op -> MISC
#line 720 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.misc; }
        break;
      case 301: // call_op -> CALL_I4
#line 723 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.call_i4; }
        break;
      case 302: // call_op -> CALL_I8
#line 724 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.call_i8; }
        break;
      case 303: // call_op -> CALL_I
#line 725 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.call_i; }
        break;
      case 304: // call_op -> CALL_R4
#line 726 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.call_r4; }
        break;
      case 305: // call_op -> CALL_R8
#line 727 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.call_r8; }
        break;
      case 306: // call_op -> CALL_VOID
#line 728 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.call_void; }
        break;
      case 307: // call_op -> CALL_VT
#line 729 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.call_vt; }
        break;
      case 308: // br_op -> BR
#line 732 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.br; }
        break;
      case 309: // br_op -> BR_EHCLAUSE
#line 733 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.br_ehclause; }
        break;
      case 310: // br_op -> BRFINITE
#line 734 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.brfinite; }
        break;
      case 311: // cmpbr_op -> BEQ_I4
#line 737 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.beq_i4; }
        break;
      case 312: // cmpbr_op -> BEQ_I8
#line 738 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.beq_i8; }
        break;
      case 313: // cmpbr_op -> BEQ_I
#line 739 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.beq_i; }
        break;
      case 314: // cmpbr_op -> BEQ_R8
#line 740 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.beq_r8; }
        break;
      case 315: // cmpbr_op -> BEQ_R4
#line 741 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.beq_r4; }
        break;
      case 316: // cmpbr_op -> BEQ_R8_UN
#line 742 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.beq_r8_un; }
        break;
      case 317: // cmpbr_op -> BEQ_R4_UN
#line 743 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.beq_r4_un; }
        break;
      case 318: // cmpbr_op -> BNE_I4
#line 744 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bne_i4; }
        break;
      case 319: // cmpbr_op -> BNE_I8
#line 745 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bne_i8; }
        break;
      case 320: // cmpbr_op -> BNE_I
#line 746 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bne_i; }
        break;
      case 321: // cmpbr_op -> BNE_R8
#line 747 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bne_r8; }
        break;
      case 322: // cmpbr_op -> BNE_R4
#line 748 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bne_r4; }
        break;
      case 323: // cmpbr_op -> BNE_R8_UN
#line 749 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bne_r8_un; }
        break;
      case 324: // cmpbr_op -> BNE_R4_UN
#line 750 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bne_r4_un; }
        break;
      case 325: // cmpbr_op -> BG_I4
#line 751 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bg_i4; }
        break;
      case 326: // cmpbr_op -> BG_I8
#line 752 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bg_i8; }
        break;
      case 327: // cmpbr_op -> BG_I
#line 753 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bg_i; }
        break;
      case 328: // cmpbr_op -> BG_R8
#line 754 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bg_r8; }
        break;
      case 329: // cmpbr_op -> BG_R4
#line 755 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bg_r4; }
        break;
      case 330: // cmpbr_op -> BG_R8_UN
#line 756 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bg_r8_un; }
        break;
      case 331: // cmpbr_op -> BG_R4_UN
#line 757 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bg_r4_un; }
        break;
      case 332: // cmpbr_op -> BGE_I4
#line 758 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bge_i4; }
        break;
      case 333: // cmpbr_op -> BGE_I8
#line 759 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bge_i8; }
        break;
      case 334: // cmpbr_op -> BGE_I
#line 760 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bge_i; }
        break;
      case 335: // cmpbr_op -> BGE_R8
#line 761 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bge_r8; }
        break;
      case 336: // cmpbr_op -> BGE_R4
#line 762 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bge_r4; }
        break;
      case 337: // cmpbr_op -> BGE_R8_UN
#line 763 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bge_r8_un; }
        break;
      case 338: // cmpbr_op -> BGE_R4_UN
#line 764 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bge_r4_un; }
        break;
      case 339: // cmpbr_op -> BL_I4
#line 765 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bl_i4; }
        break;
      case 340: // cmpbr_op -> BL_I8
#line 766 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bl_i8; }
        break;
      case 341: // cmpbr_op -> BL_I
#line 767 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bl_i; }
        break;
      case 342: // cmpbr_op -> BL_R8
#line 768 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bl_r8; }
        break;
      case 343: // cmpbr_op -> BL_R4
#line 769 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bl_r4; }
        break;
      case 344: // cmpbr_op -> BL_R8_UN
#line 770 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bl_r8_un; }
        break;
      case 345: // cmpbr_op -> BL_R4_UN
#line 771 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bl_r4_un; }
        break;
      case 346: // cmpbr_op -> BLE_I4
#line 772 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ble_i4; }
        break;
      case 347: // cmpbr_op -> BLE_I8
#line 773 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ble_i8; }
        break;
      case 348: // cmpbr_op -> BLE_I
#line 774 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ble_i; }
        break;
      case 349: // cmpbr_op -> BLE_R8
#line 775 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ble_r8; }
        break;
      case 350: // cmpbr_op -> BLE_R4
#line 776 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ble_r4; }
        break;
      case 351: // cmpbr_op -> BLE_R8_UN
#line 777 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ble_r8_un; }
        break;
      case 352: // cmpbr_op -> BLE_R4_UN
#line 778 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ble_r4_un; }
        break;
      case 353: // cmpbr_op -> BA_I4
#line 779 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ba_i4; }
        break;
      case 354: // cmpbr_op -> BA_I8
#line 780 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ba_i8; }
        break;
      case 355: // cmpbr_op -> BA_I
#line 781 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ba_i; }
        break;
      case 356: // cmpbr_op -> BA_R8
#line 782 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ba_r8; }
        break;
      case 357: // cmpbr_op -> BA_R4
#line 783 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ba_r4; }
        break;
      case 358: // cmpbr_op -> BA_R8_UN
#line 784 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ba_r8_un; }
        break;
      case 359: // cmpbr_op -> BA_R4_UN
#line 785 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.ba_r4_un; }
        break;
      case 360: // cmpbr_op -> BAE_I4
#line 786 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bae_i4; }
        break;
      case 361: // cmpbr_op -> BAE_I8
#line 787 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bae_i8; }
        break;
      case 362: // cmpbr_op -> BAE_I
#line 788 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bae_i; }
        break;
      case 363: // cmpbr_op -> BAE_R8
#line 789 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bae_r8; }
        break;
      case 364: // cmpbr_op -> BAE_R4
#line 790 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bae_r4; }
        break;
      case 365: // cmpbr_op -> BAE_R8_UN
#line 791 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bae_r8_un; }
        break;
      case 366: // cmpbr_op -> BAE_R4_UN
#line 792 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bae_r4_un; }
        break;
      case 367: // cmpbr_op -> BB_I4
#line 793 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bb_i4; }
        break;
      case 368: // cmpbr_op -> BB_I8
#line 794 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bb_i8; }
        break;
      case 369: // cmpbr_op -> BB_I
#line 795 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bb_i; }
        break;
      case 370: // cmpbr_op -> BB_R8
#line 796 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bb_r8; }
        break;
      case 371: // cmpbr_op -> BB_R4
#line 797 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bb_r4; }
        break;
      case 372: // cmpbr_op -> BB_R8_UN
#line 798 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bb_r8_un; }
        break;
      case 373: // cmpbr_op -> BB_R4_UN
#line 799 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bb_r4_un; }
        break;
      case 374: // cmpbr_op -> BBE_I4
#line 800 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bbe_i4; }
        break;
      case 375: // cmpbr_op -> BBE_I8
#line 801 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bbe_i8; }
        break;
      case 376: // cmpbr_op -> BBE_I
#line 802 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bbe_i; }
        break;
      case 377: // cmpbr_op -> BBE_R8
#line 803 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bbe_r8; }
        break;
      case 378: // cmpbr_op -> BBE_R4
#line 804 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bbe_r4; }
        break;
      case 379: // cmpbr_op -> BBE_R8_UN
#line 805 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bbe_r8_un; }
        break;
      case 380: // cmpbr_op -> BBE_R4_UN
#line 806 "d:\tysos\tirc\tir.y"
{ CurrentSemanticValue.opval = libtysila.ThreeAddressCode.Op.bbe_r4_un; }
        break;
    }
#pragma warning restore 162, 1522
  }

  protected override string TerminalToString(int terminal)
  {
    if (aliasses != null && aliasses.ContainsKey(terminal))
        return aliasses[terminal];
    else if (((Tokens)terminal).ToString() != terminal.ToString(CultureInfo.InvariantCulture))
        return ((Tokens)terminal).ToString();
    else
        return CharToString((char)terminal);
  }

#line 810 "d:\tysos\tirc\tir.y"

#line 811 "d:\tysos\tirc\tir.y"
string cur_func = "unnamed_func";
#line 812 "d:\tysos\tirc\tir.y"
public Dictionary<string, List<libtysila.timple.TreeNode>> tacs = new Dictionary<string, List<libtysila.timple.TreeNode>>();
#line 813 "d:\tysos\tirc\tir.y"
Dictionary<string, string> callconvs = new Dictionary<string, string>();
#line 814 "d:\tysos\tirc\tir.y"
Dictionary<string, Signature.Method> msigs = new Dictionary<string, Signature.Method>();
#line 815 "d:\tysos\tirc\tir.y"
Dictionary<int, libtysila.Assembler.CliType> dts = new Dictionary<int, libtysila.Assembler.CliType>();
#line 816 "d:\tysos\tirc\tir.y"
string cur_module = "mscorlib";
#line 817 "d:\tysos\tirc\tir.y"
string cur_nspace = "System";
#line 818 "d:\tysos\tirc\tir.y"

#line 819 "d:\tysos\tirc\tir.y"
vara var_if_exist(int arg_no, List<vara> args)
#line 820 "d:\tysos\tirc\tir.y"
{
#line 821 "d:\tysos\tirc\tir.y"
	arg_no--;
#line 822 "d:\tysos\tirc\tir.y"
	if((arg_no >= 0) && (arg_no < args.Count))
#line 823 "d:\tysos\tirc\tir.y"
		return args[arg_no];
#line 824 "d:\tysos\tirc\tir.y"
	return vara.Void();
#line 825 "d:\tysos\tirc\tir.y"
}
}
}
