/*
 * Created by Microsoft VCBU Internal YACC from "asmparse.y"
 */

#line 2 "asmparse.y"

// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

//
// File asmparse.y
//
#include "ilasmpch.h"

#include "grammar_before.cpp"


#line 15 "asmparse.y"

#define UNION 1
typedef union  {
        CorRegTypeAttr classAttr;
        CorMethodAttr methAttr;
        CorFieldAttr fieldAttr;
        CorMethodImpl implAttr;
        CorEventAttr  eventAttr;
        CorPropertyAttr propAttr;
        CorPinvokeMap pinvAttr;
        CorDeclSecurity secAct;
        CorFileFlags fileAttr;
        CorAssemblyFlags asmAttr;
        CorAssemblyFlags asmRefAttr;
        CorTypeAttr exptAttr;
        CorManifestResourceFlags manresAttr;
        double*  float64;
        __int64* int64;
        __int32  int32;
        char*    string;
        BinStr*  binstr;
        Labels*  labels;
        Instr*   instr;         // instruction opcode
        NVPair*  pair;
        pTyParList typarlist;
        mdToken token;
        TypeDefDescr* tdd;
        CustomDescr*  cad;
        unsigned short opcode;
} YYSTYPE;
# define ERROR_ 257
# define BAD_COMMENT_ 258
# define BAD_LITERAL_ 259
# define ID 260
# define DOTTEDNAME 261
# define QSTRING 262
# define SQSTRING 263
# define INT32 264
# define INT64 265
# define FLOAT64 266
# define HEXBYTE 267
# define TYPEDEF_T 268
# define TYPEDEF_M 269
# define TYPEDEF_F 270
# define TYPEDEF_TS 271
# define TYPEDEF_MR 272
# define TYPEDEF_CA 273
# define DCOLON 274
# define ELLIPSIS 275
# define VOID_ 276
# define BOOL_ 277
# define CHAR_ 278
# define UNSIGNED_ 279
# define INT_ 280
# define INT8_ 281
# define INT16_ 282
# define INT32_ 283
# define INT64_ 284
# define FLOAT_ 285
# define FLOAT32_ 286
# define FLOAT64_ 287
# define BYTEARRAY_ 288
# define UINT_ 289
# define UINT8_ 290
# define UINT16_ 291
# define UINT32_ 292
# define UINT64_ 293
# define FLAGS_ 294
# define CALLCONV_ 295
# define MDTOKEN_ 296
# define OBJECT_ 297
# define STRING_ 298
# define NULLREF_ 299
# define DEFAULT_ 300
# define CDECL_ 301
# define VARARG_ 302
# define STDCALL_ 303
# define THISCALL_ 304
# define FASTCALL_ 305
# define CLASS_ 306
# define BYREFLIKE_ 307
# define GENCONSTRAINT_ 308
# define TYPEDREF_ 309
# define UNMANAGED_ 310
# define FINALLY_ 311
# define HANDLER_ 312
# define CATCH_ 313
# define FILTER_ 314
# define FAULT_ 315
# define EXTENDS_ 316
# define IMPLEMENTS_ 317
# define TO_ 318
# define AT_ 319
# define TLS_ 320
# define TRUE_ 321
# define FALSE_ 322
# define _INTERFACEIMPL 323
# define VALUE_ 324
# define VALUETYPE_ 325
# define NATIVE_ 326
# define INSTANCE_ 327
# define SPECIALNAME_ 328
# define FORWARDER_ 329
# define STATIC_ 330
# define PUBLIC_ 331
# define PRIVATE_ 332
# define FAMILY_ 333
# define FINAL_ 334
# define SYNCHRONIZED_ 335
# define INTERFACE_ 336
# define SEALED_ 337
# define NESTED_ 338
# define ABSTRACT_ 339
# define AUTO_ 340
# define SEQUENTIAL_ 341
# define EXPLICIT_ 342
# define ANSI_ 343
# define UNICODE_ 344
# define AUTOCHAR_ 345
# define IMPORT_ 346
# define ENUM_ 347
# define VIRTUAL_ 348
# define NOINLINING_ 349
# define AGGRESSIVEINLINING_ 350
# define NOOPTIMIZATION_ 351
# define AGGRESSIVEOPTIMIZATION_ 352
# define UNMANAGEDEXP_ 353
# define BEFOREFIELDINIT_ 354
# define STRICT_ 355
# define RETARGETABLE_ 356
# define WINDOWSRUNTIME_ 357
# define NOPLATFORM_ 358
# define METHOD_ 359
# define FIELD_ 360
# define PINNED_ 361
# define MODREQ_ 362
# define MODOPT_ 363
# define SERIALIZABLE_ 364
# define PROPERTY_ 365
# define TYPE_ 366
# define ASSEMBLY_ 367
# define FAMANDASSEM_ 368
# define FAMORASSEM_ 369
# define PRIVATESCOPE_ 370
# define HIDEBYSIG_ 371
# define NEWSLOT_ 372
# define RTSPECIALNAME_ 373
# define PINVOKEIMPL_ 374
# define _CTOR 375
# define _CCTOR 376
# define LITERAL_ 377
# define NOTSERIALIZED_ 378
# define INITONLY_ 379
# define REQSECOBJ_ 380
# define CIL_ 381
# define OPTIL_ 382
# define MANAGED_ 383
# define FORWARDREF_ 384
# define PRESERVESIG_ 385
# define RUNTIME_ 386
# define INTERNALCALL_ 387
# define _IMPORT 388
# define NOMANGLE_ 389
# define LASTERR_ 390
# define WINAPI_ 391
# define AS_ 392
# define BESTFIT_ 393
# define ON_ 394
# define OFF_ 395
# define CHARMAPERROR_ 396
# define INSTR_NONE 397
# define INSTR_VAR 398
# define INSTR_I 399
# define INSTR_I8 400
# define INSTR_R 401
# define INSTR_BRTARGET 402
# define INSTR_METHOD 403
# define INSTR_FIELD 404
# define INSTR_TYPE 405
# define INSTR_STRING 406
# define INSTR_SIG 407
# define INSTR_TOK 408
# define INSTR_SWITCH 409
# define _CLASS 410
# define _NAMESPACE 411
# define _METHOD 412
# define _FIELD 413
# define _DATA 414
# define _THIS 415
# define _BASE 416
# define _NESTER 417
# define _EMITBYTE 418
# define _TRY 419
# define _MAXSTACK 420
# define _LOCALS 421
# define _ENTRYPOINT 422
# define _ZEROINIT 423
# define _EVENT 424
# define _ADDON 425
# define _REMOVEON 426
# define _FIRE 427
# define _OTHER 428
# define _PROPERTY 429
# define _SET 430
# define _GET 431
# define _PERMISSION 432
# define _PERMISSIONSET 433
# define REQUEST_ 434
# define DEMAND_ 435
# define ASSERT_ 436
# define DENY_ 437
# define PERMITONLY_ 438
# define LINKCHECK_ 439
# define INHERITCHECK_ 440
# define REQMIN_ 441
# define REQOPT_ 442
# define REQREFUSE_ 443
# define PREJITGRANT_ 444
# define PREJITDENY_ 445
# define NONCASDEMAND_ 446
# define NONCASLINKDEMAND_ 447
# define NONCASINHERITANCE_ 448
# define _LINE 449
# define P_LINE 450
# define _LANGUAGE 451
# define _CUSTOM 452
# define INIT_ 453
# define _SIZE 454
# define _PACK 455
# define _VTABLE 456
# define _VTFIXUP 457
# define FROMUNMANAGED_ 458
# define CALLMOSTDERIVED_ 459
# define _VTENTRY 460
# define RETAINAPPDOMAIN_ 461
# define _FILE 462
# define NOMETADATA_ 463
# define _HASH 464
# define _ASSEMBLY 465
# define _PUBLICKEY 466
# define _PUBLICKEYTOKEN 467
# define ALGORITHM_ 468
# define _VER 469
# define _LOCALE 470
# define EXTERN_ 471
# define _MRESOURCE 472
# define _MODULE 473
# define _EXPORT 474
# define LEGACY_ 475
# define LIBRARY_ 476
# define X86_ 477
# define AMD64_ 478
# define ARM_ 479
# define ARM64_ 480
# define MARSHAL_ 481
# define CUSTOM_ 482
# define SYSSTRING_ 483
# define FIXED_ 484
# define VARIANT_ 485
# define CURRENCY_ 486
# define SYSCHAR_ 487
# define DECIMAL_ 488
# define DATE_ 489
# define BSTR_ 490
# define TBSTR_ 491
# define LPSTR_ 492
# define LPWSTR_ 493
# define LPTSTR_ 494
# define OBJECTREF_ 495
# define IUNKNOWN_ 496
# define IDISPATCH_ 497
# define STRUCT_ 498
# define SAFEARRAY_ 499
# define BYVALSTR_ 500
# define LPVOID_ 501
# define ANY_ 502
# define ARRAY_ 503
# define LPSTRUCT_ 504
# define IIDPARAM_ 505
# define IN_ 506
# define OUT_ 507
# define OPT_ 508
# define _PARAM 509
# define _OVERRIDE 510
# define WITH_ 511
# define NULL_ 512
# define HRESULT_ 513
# define CARRAY_ 514
# define USERDEFINED_ 515
# define RECORD_ 516
# define FILETIME_ 517
# define BLOB_ 518
# define STREAM_ 519
# define STORAGE_ 520
# define STREAMED_OBJECT_ 521
# define STORED_OBJECT_ 522
# define BLOB_OBJECT_ 523
# define CF_ 524
# define CLSID_ 525
# define VECTOR_ 526
# define _SUBSYSTEM 527
# define _CORFLAGS 528
# define ALIGNMENT_ 529
# define _IMAGEBASE 530
# define _STACKRESERVE 531
# define _TYPEDEF 532
# define _TEMPLATE 533
# define _TYPELIST 534
# define _MSCORLIB 535
# define P_DEFINE 536
# define P_UNDEF 537
# define P_IFDEF 538
# define P_IFNDEF 539
# define P_ELSE 540
# define P_ENDIF 541
# define P_INCLUDE 542
# define CONSTRAINT_ 543
#define yyclearin yychar = -1
#define yyerrok yyerrflag = 0
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 150
#endif
YYSTYPE yylval, yyval;
#ifndef YYFARDATA
#define	YYFARDATA	/*nothing*/
#endif
#if ! defined YYSTATIC
#define	YYSTATIC	/*nothing*/
#endif
#if ! defined YYCONST
#define	YYCONST	/*nothing*/
#endif
#ifndef	YYACT
#define	YYACT	yyact
#endif
#ifndef	YYPACT
#define	YYPACT	yypact
#endif
#ifndef	YYPGO
#define	YYPGO	yypgo
#endif
#ifndef	YYR1
#define	YYR1	yyr1
#endif
#ifndef	YYR2
#define	YYR2	yyr2
#endif
#ifndef	YYCHK
#define	YYCHK	yychk
#endif
#ifndef	YYDEF
#define	YYDEF	yydef
#endif
#ifndef	YYV
#define	YYV	yyv
#endif
#ifndef	YYS
#define	YYS	yys
#endif
#ifndef	YYLOCAL
#define	YYLOCAL
#endif
#ifndef YYR_T
#define	YYR_T	int
#endif
typedef	YYR_T	yyr_t;
#ifndef YYEXIND_T
#define	YYEXIND_T	unsigned int
#endif
typedef	YYEXIND_T	yyexind_t;
#ifndef YYOPTTIME
#define	YYOPTTIME	0
#endif
# define YYERRCODE 256

#line 2063 "asmparse.y"


#include "grammar_after.cpp"
YYSTATIC YYCONST short yyexca[] = {
#if !(YYOPTTIME)
-1, 1,
#endif
	0, -1,
	-2, 0,
#if !(YYOPTTIME)
-1, 452,
#endif
	41, 540,
	-2, 313,
#if !(YYOPTTIME)
-1, 622,
#endif
	274, 557,
	47, 557,
	-2, 232,
#if !(YYOPTTIME)
-1, 643,
#endif
	40, 312,
	60, 312,
	-2, 557,
#if !(YYOPTTIME)
-1, 665,
#endif
	41, 540,
	-2, 313,
#if !(YYOPTTIME)
-1, 690,
#endif
	274, 557,
	47, 557,
	-2, 518,
#if !(YYOPTTIME)
-1, 811,
#endif
	123, 237,
	-2, 557,
#if !(YYOPTTIME)
-1, 838,
#endif
	41, 540,
	-2, 313,
#if !(YYOPTTIME)
-1, 963,
#endif
	41, 540,
	-2, 313,
#if !(YYOPTTIME)
-1, 997,
#endif
	41, 540,
	-2, 313,
#if !(YYOPTTIME)
-1, 998,
#endif
	41, 540,
	-2, 313,
#if !(YYOPTTIME)
-1, 1328,
#endif
	41, 540,
	-2, 313,
#if !(YYOPTTIME)
-1, 1329,
#endif
	41, 540,
	-2, 313,
#if !(YYOPTTIME)
-1, 1336,
#endif
	41, 540,
	-2, 313,
#if !(YYOPTTIME)
-1, 1344,
#endif
	41, 540,
	-2, 313,
#if !(YYOPTTIME)
-1, 1470,
#endif
	41, 540,
	-2, 313,
#if !(YYOPTTIME)
-1, 1502,
#endif
	41, 540,
	-2, 313,
#if !(YYOPTTIME)
-1, 1569,
#endif
	41, 540,
	-2, 313,
#if !(YYOPTTIME)
-1, 1586,
#endif
	41, 540,
	-2, 313,

};

# define YYNPROD 846
#if YYOPTTIME
YYSTATIC YYCONST yyexind_t yyexcaind[] = {
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    4,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    8,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   14,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,   20,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   24,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,   30,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   34,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,   38,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,   42,   46,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,   50,   54,
    0,    0,    0,    0,    0,    0,   58,    0,    0,    0,
    0,    0,    0,    0,   62,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
   66,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,   70,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   74,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,   78
};
#endif
# define YYLAST 3872

YYSTATIC YYCONST short YYFARDATA YYACT[] = {
  703, 1421, 1136,  640,  660, 1490,  191, 1039,  888,  974,
 1489,  790, 1488,  702, 1487, 1149,  625,  779,  887,  729,
   73,   75,  150,  414,  536,  977, 1422, 1526,  975,  190,
  478,  757,  794,  176,  760,  755, 1080,  110,  106,  107,
  694,  275,  862,  604,  662,   44,  273,  219,  780,   24,
   78,   81,  217,   86,   17,  599,  262,  153,  204,  214,
  301,    7,    6,  654,   85,    5,   76,    3,  188, 1574,
  218, 1210,   10, 1257,  115, 1128, 1072,  264,  461,   74,
  516,  133, 1261,  178,  179,  180,  181,  221, 1258,   26,
  136,  677, 1126,  300,  139,  137, 1073,  278, 1127,  581,
   74,  719,  716,  202,  203,  113,  112,  700,  272,  376,
  322,  265,  520, 1028,  220,  452,   18,  994,   88,   87,
  462,   89,  216,  338,   56,  941,  942,  277,  676,  268,
   68,   56,  537, 1247, 1248, 1259,  352,  305, 1245, 1246,
  353,  343,  591,   88,   87,  327,   89,  368,  339,  277,
  342,   98,  366,  277, 1034,  361,  360,  359,  357,  358,
  225,  940,  656,  352, 1346,  185,  345,  353, 1578, 1042,
  348,   56,  198, 1542,  277,  365,  271,  199, 1041,  200,
  369,   88,   87,  699,   89,  357,  374,  201,  362,  351,
  514,  364,  698,  373, 1141, 1142,  105, 1437,  277,  258,
   84,  379,  417,  418,  195,  816,  748,  749,  750,  450,
  387,  451,   98,  363,  480,  615,  351,  388,  782,  196,
  783, 1510,  664, 1284,  456,  470,  186,  468,  472,  471,
  376,  473,  475,  416,  481,  482,  484,  502,  410, 1074,
  655,  663,  751,  752,  753,  501,  767,  495,  457, 1583,
  815,  493,  441,   24, 1501,  376,  346,  434,   17, 1283,
  476,  479,  491,  597,  433,    7,  486,  432,  269,   74,
  428,  492,  429,  483, 1334,  435,   10, 1218,  307,  487,
  600,  597,  835,  544,  474, 1342, 1341, 1340, 1339,  485,
  803,  793,  442,   26,  777,  541,  641,  642,  500,  668,
  943,  944,  420,  945,  421,  422,  423,  714,  542,  572,
  108,  545,  321,  505,  575,  268,  576,  154,  577,  436,
   18,  864,  865,  866, 1568,  579,  580,   88,   87,  116,
   89, 1567,  192,   80,   79,  480,  499,  571,   46,  574,
  573,  549,   74, 1253,   88,   87,  266,   89,  512,  512,
  529,  535,  601,  459, 1564,  481,  482,  494,  569, 1440,
  627,  628,  629,  177,   88,   87,  267,   89,  613,   80,
   79,  582,  583,  477,  498,  511,  511,  528,  534,  310,
  312,  314,  316,  318,  596,   46,   88,  624,  678,   89,
  371,  370,  607,  608,  609,  610,  630,  631,  632,  606,
  372,  614, 1373,  621, 1357,  519, 1566,   74,  612,  480,
  611,  619,  620,  622,  192,  340,  341,  884, 1131,  352,
  644,  375,  957,  353,  878,  704,  879,  880,  881,  481,
  482,  706, 1157,  586,   74,  585,  584, 1158,  649,  650,
  639,  357,  587, 1512,  635,  600, 1541,  886,   88,   87,
  643,   89,   74, 1141, 1142, 1536,  666,  348,  154,  354,
  355,  356,  674,  600,  652,  669,  873,  874,  875,  788,
  685,  857,  351,   88,   87, 1535,   89,  595,  277, 1511,
 1565,  784,  786,  347,  177,  321,  354,  355,  356, 1522,
  135,  869,  682,  671,  673,  747, 1534,  348,  696,  588,
  785,  546, 1533,  537,  759,  192,  488, 1525,  182,  177,
  154,  689,  872,  876,  877, 1252,  882,   63, 1413,  883,
  506,  690, 1143,  684,  973,  953,  715,   56,  453,  520,
  460,  513,  521,  692,  508,  509, 1133,  693, 1196, 1271,
  543,  705,  566,  375,   41,   43,  701,   74,  727,  707,
  787,  695,  216,  538,   74,  709,  413,  710,  713,  645,
 1531,  683,  999, 1529,   63, 1250,  718, 1527,  745,   88,
 1260,  659,   89,   74,   56,   97,  504,  723,  513,  863,
  728,  508,  509,  730,  675, 1145,  724,  758,  725, 1473,
  225, 1256,  651, 1021,  679,  680,  681,   80,   79,  480,
  734,   49,   50,   51,   52,   53,   54,   55,   49,   50,
   51,   52,   53,   54,   55, 1416,  762,  720,  648,  481,
  482, 1195,  754,  152,  601,  258,  768,  769,  733,   74,
   56,  647,  348,  646,  789,  539,  639,  352,  593,  838,
 1012,  353, 1188, 1187, 1186, 1185,  643,   74,   49,   50,
   51,   52,   53,   54,   55,   88,   87,  542,   89,  357,
  804,  543,   82,   72,   71,  814,   70,  795,  823,   74,
  821,  827,  824,  828,  773,  774,  775,  198,   74,  832,
  809,  810,  199,   69,  200,   98,  377,  833,  806,  808,
  351,  811,  201,  817,  348,  367, 1363,   67,   74,  216,
  843,  844,  825,   80,   79,  799,  820,  792,  802,  195,
   66,  826,   80,   79,  480,  834,  352, 1462,  856,   74,
  353,  592, 1460,  836,  196,   80,   79,  867, 1519, 1349,
   80,   79,  831,  932,  481,  482,   74,  225,  357, 1367,
  325,   46,  354,  355,  356,  860,  946,  947,  870,  277,
  855, 1458,  842,  858,  324, 1132,  969,   56,  193,  859,
  348,  194,   88, 1456,  527,   89,   74,  601,  959,  351,
  952,  111,  854,  350, 1266, 1262, 1263, 1264, 1265, 1348,
  773,  948,  517,   74,  198,  177,   74,  744,   46,  199,
   74,  200,   88,   87,  637,  956,  861,  996,  496,  201,
  155, 1079, 1075, 1076, 1077, 1078, 1024, 1022, 1025, 1255,
  362,  965,  807,  962,  968,   96,  195, 1439,  104,  103,
  102,  101,  958,   99,  100,  105, 1430,  825,  177, 1429,
  970,  196,   88,   87,  964,   89,   74,  825,  606, 1427,
 1000,  696,  696, 1047, 1029, 1412, 1023,  441, 1010, 1019,
 1035,  277,  434, 1038, 1410, 1027, 1030, 1400, 1052,  433,
 1050,  766,  432, 1032, 1031,  428, 1054,  429, 1398, 1045,
  435, 1008, 1018,  382,  383,  384,  385,  636,  525,  976,
 1396, 1048, 1049, 1394,  337, 1392,   74,  442, 1011, 1020,
  529, 1390,  375, 1065,  695,  695,  825,  277,  776,   56,
 1388, 1060,  352, 1359, 1360, 1361,  772,  192,   88,   87,
  765,   89,  805, 1386,  436, 1009, 1017,  528, 1384,  964,
   63,   56,   88,   87,  357,   89,   74,  672,  277, 1070,
  524, 1157,  670,  526,  308, 1381, 1158, 1378,   88,   87,
 1066,   89, 1376, 1016,  722, 1014, 1015,  156,  157,  158,
 1372,   74, 1137,  480, 1082,  351, 1083,  455,  326,  323,
  354,  355,  356, 1356,   61,   62,   47,   63, 1147, 1332,
 1213, 1212, 1154,  481,  482,  616,   88,   87,  762,   89,
 1059,   88,   87, 1139,   89, 1058, 1134,  522, 1057, 1144,
 1056, 1037, 1036, 1153, 1130,  830,  822,  737, 1140,  618,
 1201, 1148, 1199, 1200,   49,   50,   51,   52,   53,   54,
   55,  617,  578,  565,  109,  934,  348,  935,  936,  937,
  938,  939,   92, 1198,  276, 1320, 1068, 1194, 1318, 1197,
 1202,  966, 1316, 1193, 1203, 1204, 1205, 1206, 1314,  354,
  355,  356,  591, 1238, 1207, 1208, 1209, 1211,    1, 1191,
 1214,   49,   50,   51,   52,   53,   54,   55, 1157,  770,
  951, 1040, 1156, 1158, 1215, 1249, 1221, 1354, 1146, 1189,
 1251, 1242, 1222,  145, 1243, 1069, 1321,  995, 1241, 1319,
 1244,   88,   87, 1317,   89, 1183, 1216,  955, 1217, 1315,
   88,   87, 1181,   89,  589, 1237,   88,   87, 1179,   89,
 1192,   88,   87, 1254,   89, 1177, 1175,   49,   50,   51,
   52,   53,   54,   55,  277,  590,  205,  993,  992,  991,
 1190,  986,  985,  984,  983,  712,  981,  982,  105, 1438,
  990,  989,  988,  987, 1267,   46, 1184,  980,  978,  711,
  708,  634,  412, 1182,  187,   97,  277, 1423, 1173, 1180,
  626, 1171,   56, 1169,  796, 1270, 1178, 1176,  527, 1167,
  626, 1285, 1165, 1289, 1273, 1291, 1293, 1294, 1274, 1297,
 1163, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1279, 1307,
 1308, 1309, 1310, 1311, 1312, 1313,  328,  329,  330, 1435,
 1322, 1323, 1290, 1325, 1324, 1296, 1292, 1298, 1295, 1174,
 1161,   56, 1172, 1434, 1170, 1306,  979, 1327, 1287, 1159,
 1168,  332,  317, 1166,  145, 1433, 1424, 1333, 1002, 1240,
  315, 1164, 1337, 1063, 1062,  354,  355,  356,  313,  311,
   94,  309,  846,  746,   49,   50,   51,   52,   53,   54,
   55,  152,  306, 1338,  667,  454,   45,  415, 1150, 1336,
  277, 1162,  825, 1350, 1343,  277, 1352, 1353,  378, 1026,
 1160,  277,  829,  308,  277,  277,  145,  530, 1335, 1358,
 1362,  308,  525,  192,  192,  192,  192,  591, 1563,  308,
  308, 1364,  308,  192,  192,  192, 1475, 1276,  591, 1474,
 1355,  591, 1351,  308, 1219,  140,  138,  192,   56, 1576,
 1365,  591, 1046,  954,  591,  331,  950,  333,  334,  335,
  336,  933, 1366,  591,   63,  841, 1402, 1403, 1404, 1405,
 1406, 1407, 1408,  840,  524,  819,  771,  526,  764, 1369,
  721,  567,  349, 1414, 1415,  591,  303, 1588, 1418, 1579,
 1577, 1420, 1401,  117, 1570, 1546, 1509, 1508, 1507, 1425,
 1426, 1477, 1472, 1469, 1466, 1431, 1465, 1461, 1156, 1419,
 1459, 1457,  258, 1455,  798, 1442,   46, 1436,  825, 1432,
 1411, 1409, 1399, 1397, 1586, 1417,   49,   50,   51,   52,
   53,   54,   55, 1428,  152,   96, 1395,  134,  104,  103,
  102,  101,   56,   99,  100,  105, 1393, 1391,   49,   50,
   51,   52,   53,   54,   55, 1389, 1387, 1385, 1383, 1382,
   88,   87,  348,   89,   74,   46, 1380, 1379,  155, 1377,
 1468, 1375, 1374, 1371, 1370, 1347, 1345, 1331, 1330, 1326,
 1277, 1275, 1272, 1138, 1478, 1479, 1480, 1239, 1471, 1476,
 1129, 1467, 1067, 1053, 1051, 1571,  177, 1513, 1044, 1043,
 1033,  972, 1156,  961,  960,  949,  258,  868,  697,  851,
 1494,  850,  848,   56, 1493, 1492, 1491, 1481,  845,  839,
  837, 1141, 1142, 1569, 1499, 1504,  818, 1503,  797,  778,
  742,  741,  740,  739,  738,  736, 1521,  735,  688, 1528,
 1530, 1532,  638, 1528, 1530, 1532,  570,  152,  425,   88,
 1530,  424,   89, 1543, 1540, 1544, 1506, 1545, 1539, 1538,
 1537,  344,   46, 1518, 1524,  320, 1520, 1523, 1004, 1005,
 1006, 1007, 1502,  152, 1498, 1497, 1496, 1495, 1470, 1001,
 1516, 1464, 1463, 1454, 1453,  825, 1452, 1451,  531, 1528,
 1530, 1532,   61,   62,   47,   63, 1450, 1449, 1448, 1447,
 1446, 1445, 1444,   88,   87, 1443,   89,   56, 1441, 1320,
 1318,  155, 1316, 1314,  523,  156,  157,  158, 1344, 1191,
 1189, 1183, 1575, 1181, 1573, 1179, 1177, 1175, 1173, 1171,
 1169, 1167, 1165,   56, 1329, 1580, 1585, 1584, 1328,  177,
 1269, 1587, 1288,   88,   63, 1572,   89, 1268, 1081, 1286,
 1071, 1064, 1055,  998,  532, 1582,   46,  533,  997,  971,
  963,  853,  852,  849,  847,  732,  731,  825,  717,  691,
  687,  258, 1581,  206,  686,  665,  633,  603,  602,   49,
   50,   51,   52,   53,   54,   55,  245,  246,  247,  248,
  249,  250,  251,  252,  253,  254,  255,  256,  257,  449,
  594,  568,  548,   59,  547,  497,  419,  208,  259,  210,
  228,  212,  213,  411,  386,  319,   88,   87,  304,   89,
  302,   41,   43,  515,  155,  518,  510,   46,   49,   50,
   51,   52,   53,   54,   55,  507,  503,   36,   61,   62,
   47,   63,   88,   87,   56,   89,  184,   93,   33,  223,
  155,  469,  177,  467,   95, 1514,  466,  465,  156,  157,
  158,  464, 1515,  222,  244,  463,  227,  243,  215,  209,
  207,  211,  889,   31, 1013, 1003,  439,  444,  177,  801,
  245,  246,  247,  248,  249,  250,  251,  252,  253,  254,
  255,  256,  257,  431,  800,  430,  427,   59,  226,  224,
  540,  208,  259,  210,  228,  212,  213,  270,   88,   83,
   29,   89,   57,   56,   34,   41,   43,   25,   16,  263,
   15,   46,   14,  261,   13,   49,   50,   51,   52,   53,
   54,   55,   61,   62,   47,   63,  260,   12,   11,    9,
    8,    4,    2,  223,  234,  242,  241,   46,  240,  239,
  238,  237,  236,  235,  233,  232,  231,  222,  230,  229,
  114,   77,   42,  756,  448,  152,   58,   32,   59,  658,
  657,  156,  157,  158, 1505,  299,   90,  183,  445,  426,
 1155,  761,  791,  446, 1278,  967,   41,   43, 1152, 1151,
  605, 1484,  226,  224, 1483, 1482, 1500,  156,  157,  158,
 1486, 1485, 1220,   61,   62,   47,   63, 1135,  437,  438,
  598,  661,  781,   91, 1084,  743,   65,   64,  197,   49,
   50,   51,   52,   53,   54,   55,  885,    0,  447,  118,
  119,  120,  121,  122,  123,  124,  125,  126,  127,  128,
  129,  130,  131,  132,    0,  245,  246,  247,  248,  249,
  250,  251,  252,  253,  254,  255,  256,  257,   46,    0,
    0,    0,   59,  443,  440,    0,  208,  259,  210,  228,
  212,  213, 1547,    0,    0,    0,    0,    0,    0,    0,
   41,   43,    0,    0,   38,   30,   58,   32,   59,    0,
   49,   50,   51,   52,   53,   54,   55,   61,   62,   47,
   63,    0,    0, 1101,    0,    0,   41,   43,  223,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  222,   61,   62,   47,   63,   46,    0,    0,
   60,   35,    0,    0,   88,   87,   21,   89,    0,   37,
    0,    0,  155,    0,    0,    0,   39,   40,    0,    0,
    0,    0,    0,    0,    0,    0,    0,  226,  224,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  177,    0,    0,    0,    0,    0,    0,  444,    0,    0,
 1368,    0,    0,    0,   49,   50,   51,   52,   53,   54,
   55,    0,    0,    0,    0,   38,   30,   58,   32,   59,
    0,   19,   20,    0,   22,   23,   48,    0,   27,   28,
   49,   50,   51,   52,   53,   54,   55,   41,   43,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,   61,   62,   47,   63,    0,    0,
 1061,   60,   35, 1562,    0,    0,    0,   21,    0,  931,
   37,    0,    0,    0,    0,    0,    0,   39,   40, 1552,
    0,    0,    0,    0,  448,    0,   58,   32,   59,    0,
    0,    0,    0,    0, 1517, 1548,    0,    0,  445,    0,
    0,    0,    0,  446, 1557,    0,   41,   43,    0,  156,
  157,  158,    0,    0,    0,    0,    0,    0, 1558, 1559,
 1560, 1561,    0,   61,   62,   47,   63,    0,  437,  438,
    0,    0,   19,   20,    0,   22,   23,   48, 1112,   27,
   28,   49,   50,   51,   52,   53,   54,   55,  447,    0,
 1549, 1550, 1551, 1553, 1554, 1555, 1556, 1088, 1089,    0,
 1096, 1110, 1090, 1091, 1092, 1093,    0, 1094, 1095,    0,
 1111, 1097, 1098, 1099, 1100,    0,    0,    0,    0,    0,
    0,    0,    0,  443,  440,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  903,    0,    0,    0,    0,    0,    0,
   49,   50,   51,   52,   53,   54,   55,  930,    0,    0,
    0,    0,  895,  896,    0,  904,  921,  897,  898,  899,
  900,    0,  901,  902,    0,  922,  905,  906,  907,  908,
  903,    0,    0,    0,    0,    0,  146,    0,    0,    0,
    0,    0,    0,    0,  930,    0,    0,    0,    0,  895,
  896,    0,  904,  921,  897,  898,  899,  900,    0,  901,
  902,  348,  922,  905,  906,  907,  908,    0,    0,    0,
    0,    0,  919,    0,  923,    0, 1236, 1235, 1230,  925,
 1229, 1228, 1227, 1226,    0, 1224, 1225,  105,  189, 1234,
 1233, 1232, 1231,    0,    0,  927,    0,    0, 1223,    0,
    0,  871,    0,  884,    0,    0,    0,    0,    0,  919,
  878,  923,  879,  880,  881,    0,  925,    0,    0,    0,
  993,  992,  991,    0,  986,  985,  984,  983,  928,  981,
  982,  105,  927,  990,  989,  988,  987,    0,    0,    0,
  980,  978,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  873,  874,  875,    0, 1086, 1087,    0, 1102,
 1103, 1104,    0, 1105, 1106,  928,    0, 1107, 1108,    0,
 1109,    0,    0,    0,    0,    0,    0,    0,    0,  146,
    0,    0,    0, 1085, 1113, 1114, 1115, 1116, 1117, 1118,
 1119, 1120, 1121, 1122, 1123, 1124, 1125,    0,  872,  876,
  877,    0,  882,    0,    0,  883,    0,    0,    0,  979,
    0,    0,    0,    0,    0,    0,    0,    0,  890,    0,
  891,  892,  893,  894,  909,  910,  911,  926,  912,  913,
  914,  915,  916,  917,  918,  920,  924,  152,    0,    0,
  929,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  890,    0,  891,  892,  893,
  894,  909,  910,  911,  926,  912,  913,  914,  915,  916,
  917,  918,  920,  924,  175,    0,    0,  929,  151,  148,
  163,  161,  170,  146,  164,  165,  166,  167,  352,  168,
  169,    0,  772,  171,  172,  173,  174,  564,    0,    0,
  142,  162,    0,    0,    0,    0,    0,    0,    0,  141,
  357,    0,  147,    0,    0,    0,    0,  193,    0,    0,
  194,    0,    0,    0,    0,    0,    0,  143,  144,  149,
    0,  556,    0,  550,  551,  552,  553,    0,    0,    0,
    0,  623,  146,  198,  177,    0,    0,  352,  199,    0,
  200,  353,    0,    0,  884,    0,    0,    0,  201,    0,
    0,  878,  160,  879,  880,  881,    0,    0,    0,  357,
  558,  559,  560,  561,    0,  195,  555,    0,    0,    0,
  562,  563,  554,    0,    0,    0,    0,    0,    0,    0,
  196,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  623,    0,    0,  873,  874,  875,   88,   87,    0,   89,
    0,    0,    0,    0,  155,    0,    0,  175,    0,    0,
    0,  151,  148,  163,  161,  170,    0,  164,  165,  166,
  167,    0,  168,  169,    0,    0,  171,  172,  173,  174,
    0,    0,  177,  142,  162,    0,    0,    0,    0,  872,
  876,  877,  141,  882,    0,  147,  883,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  143,  144,  149,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,  557,    0,    0,    0,    0,    0,
    0,    0,  146,    0,    0,    0,    0,  352,    0,    0,
    0,  353,    0,    0,    0,  160,  159,    0,    0,    0,
   88,   87,    0,   89,    0,    0,    0,    0,  155,  357,
    0,  175,    0,    0,    0,  151,  148,  163,  161,  170,
    0,  164,  165,  166,  167,    0,  168,  169,    0,    0,
  171,  172,  173,  174,    0,    0,  177,  142,  162,    0,
  623,    0,  146,    0,    0,    0,  141,    0,    0,  147,
    0,  156,  157,  158,    0,    0,    0,    0,    0,   88,
   87,    0,   89,    0,  143,  144,  149,  155,    0,    0,
  175,    0,    0,    0,  151,  148,  163,  161,  170,    0,
  164,  165,  166,  167,    0,  168,  169,    0,   63,  171,
  172,  173,  174,    0,    0,  177,  142,  162,    0,  160,
  274,  354,  355,  356,    0,  141,    0,    0,  147,   88,
   87,    0,   89,    0,    0,  641,  642,    0,    0,    0,
    0,    0,    0,  143,  144,  149,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  146,  409,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  156,  157,  158,  160,    0,
  354,  355,  356,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  391,  641,  642,    0,  407,    0,    0,
  389,  390,    0,    0,    0,  393,  394,  405,  395,  396,
  397,  398,  399,  400,  401,  402,  392,    0,    0,    0,
  274,  146,    0,  406,    0,    0,  404,    0,    0,   88,
   87,    0,   89,  403,  156,  157,  158,  155,    0,    0,
  175,    0,  408,    0,  151,  148,  163,  161,  170,    0,
  164,  165,  166,  167,    0,  168,  169,    0,    0,  171,
  172,  173,  174,    0,    0,  177,  142,  162,    0,    0,
    0,    0,    0,    0,    0,  141,    0,    0,  147,  274,
    0,    0,    0,    0,    0,    0,    0,    0,    0,   88,
   87,    0,   89,  143,  144,  149,    0,  155,    0,    0,
  175,    0,    0,    0,  151,  148,  163,  161,  170,    0,
  164,  165,  166,  167,    0,  168,  169,    0,    0,  171,
  172,  173,  174,  146,    0,  177,  142,  162,  160,    0,
  354,  355,  356,    0,    0,  141,    0,    0,  147,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  175,  143,  144,  149,    0,  813,  163,  161,
  170,    0,  164,  165,  166,  167,    0,  168,  169,    0,
    0,  171,  172,  173,  174,    0,    0,    0, 1281,  162,
    0,  274,  146,    0,  156,  157,  158,    0,  160,   88,
   87,    0,   89,    0,    0,    0,    0,  155,    0,    0,
  175,    0,  812,    0,  151,  148,  163,  161,  170,    0,
  164,  165,  166,  167,    0,  168,  169,    0,    0,  171,
  172,  173,  174,    0,    0,  177,  142,  162, 1282,    0,
    0,    0,    0,    0,    0,  141,    0,    0,  147,    0,
  274,    0,    0,    0,  156,  157,  158, 1280,   88,   87,
    0,   89,    0,  143,  144,  149,  155,    0,    0,  175,
    0,    0,    0,  151,  148,  163,  161,  170,    0,  164,
  165,  166,  167,    0,  168,  169,    0,    0,  171,  172,
  173,  174,  146,    0,  177,  142,  162,    0,  160,  159,
    0,    0,    0,    0,  141,    0,    0,  147,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,  143,  144,  149,    0,    0,  993,  992,  991,
    0,  986,  985,  984,  983,    0,  981,  982,  105,    0,
  990,  989,  988,  987,    0,    0,    0,  980,  978,    0,
  274,    0,    0,    0,  156,  157,  158,  160,    0,    0,
   88,   87,    0,   89,    0,    0,    0,    0,  155,    0,
    0,  175,    0,    0,    0,  151,  148,  163,  161,  170,
    0,  164,  165,  166,  167,    0,  168,  169,    0,    0,
  171,  172,  173,  174,    0,    0,  177,  142,  162,    0,
    0,    0,    0,    0,    0,    0,  763,  146,    0,  147,
    0,    0,    0,  156,  157,  158,  979,    0,    0,   88,
   87,    0,   89,    0,  143,  144,  149,  155,    0,    0,
  175,    0,    0,    0,  151,  148,  163,  161,  170,    0,
  164,  165,  166,  167,    0,  168,  169,    0,    0,  171,
  172,  173,  174,    0,    0,  177,  142,  162,    0,  160,
    0,    0,    0,    0,  146,  141,    0,    0,  147,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  143,  144,  149,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  156,  157,  158,  653,   88,
   87,  146,   89,    0,    0,    0,    0,  155,    0,    0,
  175,    0,    0,    0,  151,  148,  163,  161,  170,    0,
  164,  165,  166,  167,    0,  168,  169,    0,    0,  171,
  172,  173,  174,    0,    0,  177,  142,  162,    0,    0,
    0,  297,  198,    0,    0,  141,    0,  199,  147,  200,
    0,    0,    0,  146,  156,  157,  158,  201,    0,  999,
    0,    0,    0,  143,  144,  149,    0,    0,    0,    0,
    0,    0,    0,    0,  195,  284,    0,  279,  280,  281,
  282,  283,    0,    0,    0,    0,  287,    0,    0,  196,
    0,    0,    0,    0,    0,  285,    0,    0,  458,    0,
  295,    0,  286,    0,    0,  146,    0,    0,    0,    0,
    0,  726,    0,    0,  288,  289,  290,  291,  292,  293,
  294,  298,    0,    0,  489,  175,  490,  296,    0,  151,
  148,  163,  161,  170,    0,  164,  165,  166,  167,    0,
  168,  169,    0,    0,  171,  172,  173,  174,    0,    0,
  177,  142,  162,    0,  156,  157,  158,    0,    0,    0,
  141,    0,    0,  147,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,  143,  144,
  149,  380,  175,  381,    0,    0,  151,  148,  163,  161,
  170,    0,  164,  165,  166,  167,    0,  168,  169,    0,
    0,  171,  172,  173,  174,    0,    0,    0,  142,  162,
    0,    0,    0,  160,    0,    0,    0,  141,    0,    0,
  147,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,  143,  144,  149,    0,  175,
    0,    0,    0,  151,  148,  163,  161,  170,    0,  164,
  165,  166,  167,    0,  168,  169,    0,    0,  171,  172,
  173,  174,    0,    0,    0,  142,  162,    0,    0,    0,
  160,    0,    0,    0,  141,    0,    0,  147,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  175,  143,  144,  149,  151,  148,  163,  161,  170,
    0,  164,  165,  166,  167,    0,  168,  169,    0,    0,
  171,  172,  173,  174,    0,    0,    0,  142,  162,    0,
    0,    0,    0,    0,    0,    0,  141,  160,    0,  147,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,  175,  143,  144,  149,  151,  148,  163,
  161,  170,    0,  164,  165,  166,  167,    0,  168,  169,
    0,    0,  171,  172,  173,  174,    0,    0,    0,  142,
  162,    0,    0,    0,    0,    0,    0,    0,  141,  160,
    0,  147,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,  143,  144,  149,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    0,  160
};

YYSTATIC YYCONST short YYFARDATA YYPACT[] = {
-1000, 1635,-1000,  587,  574,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,  560,  543,  541,  540,-1000,-1000,-1000,   78,
   78, -463,  105,  105,-1000,-1000,-1000,  539,-1000, -116,
  395,-1000,  931, 1107,   43,  923,   78, -365, -366,-1000,
 -142, 1445,   43, 1445,-1000,-1000,-1000,  227, 2386,  395,
  395,  395,  395,-1000,-1000,  246,-1000,-1000,-1000, -155,
 1083,-1000,-1000, 2288,   43,   43,-1000,-1000, 1498,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,   78, -117,-1000,-1000,
-1000,-1000, 1432, -141, 2918, 1219,-1000,-1000,-1000,-1000,
 3187,-1000,   78,-1000,  537,-1000, 1294, 1628,   43, 1202,
 1191, 1189, 1188, 1180, 1172, 1625, 1474,   45,-1000,   78,
  696,  830,-1000,-1000,   84, 1219,  395, 2918,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000, 1470,  195, 1288,  381, -233, -235, -236,
 -237, 1432,-1000,  -93, 1432,  489,  662,-1000,-1000,  111,
-1000, 3512,  213, 1211,-1000,-1000,-1000,-1000,-1000, 3351,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
  592,-1000,-1000,-1000,-1000,-1000, 1219, 1624,  432, 1219,
 1219, 1219,-1000, 2599,  126,-1000,-1000, 1623, 1081, 2859,
-1000, 3512,-1000,-1000,-1000,  382,  382,-1000, 1616,-1000,
-1000,    1, 1460, 1457, 1704, 1524,-1000,-1000,   78,-1000,
   78,   75,-1000,-1000,-1000,-1000, 1187,-1000,-1000,-1000,
-1000,-1000,  866,   78, 3179,-1000,  -13,  -86,-1000,-1000,
  309,   78,  105,  333,   43,  309,  489, 3294, 2918,  -92,
  382, 2859, 1615,-1000,  502,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
  112,   65,  862, 1142,-1000,   81,-1000,  428, 1432,-1000,
-1000, 2918,-1000,-1000,   67,  125,  382,  395,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000, 1614, 1612, 2243,
  920,  417, 1287, 1611,  126, 1455,  -52,-1000,   78,  -52,
-1000,  105,-1000,   78,-1000,   78,-1000,   78,-1000,-1000,
-1000,-1000,  919,-1000,   78,   78,-1000, 1219,-1000,-1000,
-1000, -377,-1000,-1000,-1000,-1000,-1000,  830,  104,  107,
-1000,-1000, 1219, 1054,-1000, 1292,  598, 1610,-1000,  214,
  395,  170,-1000,-1000,-1000, 1588, 1587, 3512,  395,  395,
  395,  395,-1000, 1432,-1000,-1000, 3512,  572,-1000, 1219,
-1000,  -65,-1000,  125,  882,  918,  906,  395,  395, 2699,
-1000,-1000,-1000,-1000,-1000,-1000,   78, 1292, 1100,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,   29,-1000,-1000,-1000, 1586,
 1080,-1000,  754, 1451,-1000,-1000, 2549,-1000,-1000,   78,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,  510,
  508,  495,-1000,-1000,-1000,-1000,-1000,   78,   78,  469,
 3079,-1000,-1000, -303, -204,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,  -34, 1585,-1000,   78, 1186,   25,  382,  841,
  836,   78,-1000,  -86,   76,   76,   76,   76, 2918,  502,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000, 1584, 1580, 1447,-1000,-1000,-1000, 2699,-1000,-1000,
-1000,-1000, 1292, 1579,   43, 3512,-1000,  309, 1333,-1000,
 -126, -135,-1000,-1000, -361,-1000,-1000,   43,  383,  370,
   43,-1000,-1000, 1079,-1000,-1000,   43,-1000,   43,-1000,
 1078, 1064,-1000,-1000,  395, -164, -369, 1578,-1000,-1000,
-1000,-1000,  395, -370,-1000,-1000, -352,-1000,-1000,-1000,
 1286,-1000,  851,  395, 3512, 1219, 3460,   78,  235,  678,
-1000,-1000,-1000,-1000,-1000,-1000,-1000, 1576,-1000,-1000,
-1000,-1000,-1000,-1000, 1575,-1000,-1000,  537,  235, 1446,
-1000, 1444,  904, 1443, 1442, 1441, 1440, 1439,-1000,  524,
 1175,-1000,  103, 1219,-1000,-1000,-1000, -125,  395,  235,
  464,  242, 3020,-1000,-1000, 1284, 1219,-1000,  817,-1000,
-1000,  -29, 2918, 2918,  997, 1282,  125, 1219, 1219, 1219,
 1219,-1000, 2490,-1000, 1219,-1000,  395,  395,  395,  805,
 1219,   20, 1219,  188, 1438,-1000,  175,-1000,-1000,-1000,
-1000,-1000,-1000,   78,-1000, 1292,-1000,-1000,  489,   17,
 1094,-1000,-1000, 1219, 1437, 1239,-1000,-1000,-1000,-1000,
-1000,-1000,   16,  382,  821,  721, 2918, 2759, -123,  104,
 1435, 1281,-1000,-1000, 3460,  -34,  903,   78,  -79, 3512,
   78, 1219,   78, 1218,  902,-1000,-1000,-1000,  309,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,   78,  105,-1000,    8,
 1219,  235, 1429,  599, 1428, 1279, 1271,-1000,  126,   78,
   78, 1427, 1174,-1000,-1000, 1292, 1574, 1421, 1573, 1420,
 1418, 1572, 1571, 1219,  395,-1000,  395,   78,  152,  395,
   43, 2918,  395,  703,  864,   98, -185, 1416,   99, 2300,
  128, 1976,   78,-1000, 1270,-1000,  843,-1000,  843,  843,
  843,  843,  843, -158,-1000,   78,   78,  395,-1000,-1000,
-1000,-1000,-1000,-1000, 1219, 1414, 1262,  999,-1000,-1000,
  400, 1259, 1026,  532,  159,-1000,    5,   78, 1413, 1412,
-1000, 3512, 1570, 1211, 1211, 1211,  395,  395,-1000,  969,
  716,  175,-1000,-1000,-1000,-1000,-1000,-1000, 1569, 1410,
  399,  840, 1016,  -79, 1568, 1563, 3408,-1000,-1000, 1404,
 1093,  515,  468,  -79, 3512,   78, 1219,   78, 1215, -339,
  395, 1219,-1000,-1000, 3512,-1000,-1000, 1219,-1000,  -34,
   98, 1409, -238,-1000,-1000, 1219, 2699,  899,  898, 2918,
 1000, -140, -149, 1408, 1407,  395, 1261,-1000,  -34,-1000,
  309,  309,-1000,-1000,-1000,-1000,  383,-1000,-1000,-1000,
-1000,-1000,-1000,-1000, 1211, 1219, 1403,   78, 1219, 1402,
-1000,  395,  -79, 1562,  897,  895,  892,  887,-1000,  235,
 2049,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000, 1166, 1165, 1561, 1000,  126, 1401,  984,   43,
 1560, -407,  -38,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,  521,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000, 1558, 1558,-1000, 1558,
 1911,-1000,-1000, -406,-1000, -392,-1000,-1000, -427,-1000,
-1000,-1000, 1399,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
  126,-1000,-1000,-1000,-1000,-1000,  155,  492, 1219,-1000,
  235, 1150,  397,-1000, 3020,  462, 1007,-1000,-1000,-1000,
-1000,-1000,  125,  -34, 1211, 1219,-1000,  395, 1204, 2918,
-1000,   78,-1000,-1000,  698,-1000,-1000,-1000, 1169, 1160,
 1130, 1122, 1119, 1113, 1111, 1108, 1066, 1065, 1058, 1052,
 1045,  361, 1029, 1009,   43,  498, 1094,  -34,  -34,   78,
  968,-1000,-1000,-1000,  489,  489,  489,  489,-1000,-1000,
-1000,-1000,-1000,-1000,  489,  489,  489,-1000,-1000,-1000,
-1000,-1000, -440, 2699,  878,  877, 2918,-1000,  489, 1219,
  678,-1000,  126,-1000,  126,    3,-1000, 1250,-1000,-1000,
 2039,  126,   78,-1000,-1000, 1219,-1000, 1396,-1000,-1000,
 1161,-1000,-1000, -290, 1090, 1976,-1000,-1000,-1000,-1000,
 1292,-1000, -256, -261,   78,-1000,-1000,-1000,-1000,  472,
  218,  235,  718,  500,-1000,-1000,-1000,-1000,-1000,-1000,
-1000, -432,-1000,-1000,   44,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,  494,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,   78,-1000,-1000,-1000,-1000, 1557, 1292,
 1550,-1000,-1000,-1000,-1000,-1000,  416, 1391, 1204,-1000,
  175, 1390, 1243,-1000, 1389, 2811,-1000,-1000,-1000,  -40,
   78, 1293,   78, 2970,   78,  143,   78,   69,   78,  105,
   78,   78,   78,   78,   78,   78,   78,  105,   78,   78,
   78,   78,   78,   78,   78,  998,  992,  988,  985,   78,
   78, -127,   78, 1388, 1292,-1000,-1000, 1548, 1544, 1387,
 1386,  876,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
  382,    0,-1000, 1224,-1000, 1209,-1000,-1000,  -79, 2918,
-1000,-1000, 1292,-1000, 1542, 1541, 1540, 1539, 1538, 1537,
    4, 1536, 1535, 1533, 1531, 1530, 1529,-1000,-1000,-1000,
  383,-1000, 1528, 1385,  123,-1000,-1000,-1000,-1000, 1384,
-1000,  686,   78,-1000, 1248,   78,   78, 1006,  235,  870,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,  141,   78,  622,
  571,-1000,-1000,-1000,-1000,-1000, 2918,-1000,  648,-1000,
-1000,-1000, 1724, 1383, 1382,  857,  139, 1381, 1380,  849,
 1378,  844, 1376, 1375,  842, 1368, 1367,  825, 1366,  820,
 1365,  807, 1364,  798, 1356,  792, 1355,  790, 1345,  787,
 1332,  775, 1331,  764,  105,   78,   78,   78,   78,   78,
   78,   78, 1330,  761, 1329,  752,-1000,  393,  -34,  -34,
-1000,-1000,  553, 3512,  -79, 2918,  -34, 1087,-1000, 1523,
 1522, 1520, 1519, 1158,  -34,-1000,-1000,-1000,-1000,   78,
  746,  235,  736,  733,   78, 1292,-1000,-1000, 1328, 1157,
 1145, 1131, 1326,-1000,   72,-1000, 1068,  724,   96,-1000,
-1000,-1000, 1518, 1324,-1000,-1000, 1515,-1000, 1512,-1000,
-1000, 1511,-1000,-1000, 1510,-1000, 1509,-1000, 1508,-1000,
 1507,-1000, 1506,-1000, 1497,-1000, 1496,-1000, 1494,-1000,
 1493, 1322,  670, 1320,  658, 1319,  629, 1316,  624,-1000,
 1492,-1000, 1491,-1000, 1315, 1313,-1000, 2699, 1087,-1000,
 1312, 1488,-1000,  471,  383, 1311,  496,-1000, 1245,-1000,
 2013, 1310,-1000,   78,   78,   78,-1000,-1000, 2970,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000, 1487,-1000, 1486,-1000,
 1485,-1000, 1484,-1000,-1000,-1000,-1000,  -20, 1482, 1000,
  -34,-1000,-1000,-1000,  235,-1000,  984,-1000, 1307, 1306,
 1305,-1000,  180, 1406, 2083,  687,  448,  466,  526,  522,
  519,  461,  455,  434,  414,-1000,-1000,-1000,-1000,  405,
  132,  -79,  -34,-1000, 1304, 1799, 1234,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,   91,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,  439,  365,  290,
  283,-1000,-1000,-1000, 1433, 1303,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000, 1405,  235,-1000,-1000,-1000,-1000,-1000,  -34,
 -442,   78, 1258, 1299, -191, 1298,-1000,-1000,  382,-1000,
 3512, 2699,  -25,  -79, 1087, 1334,  -34, 1296,-1000
};

YYSTATIC YYCONST short YYFARDATA YYPGO[] = {
    0,   33,   53,    3, 1876,   57,   40,    6, 1868,    0,
 1867, 1866, 1865,  222,  278, 1864, 1863,    2, 1862,   48,
   36,    1,   26,   30,   27,    4, 1861,   44,   41,   55,
 1860,   38,   39,    8,   18,    7,   31, 1857,   42, 1852,
   28,   25, 1851, 1850,    5,   10,   12,   14, 1846, 1845,
 1844, 1841,   22,   32,   43, 1840, 1839, 1838, 1835,   11,
 1834, 1832,    9, 1831,   34, 1830,   13,   15,   17,   16,
   46,   23,  556,   68, 1247,   29,  268, 1827, 1826, 1825,
 1824, 1820, 1819,   19,   35, 1813, 1343, 1812, 1811,   24,
  771,  123, 1810,   45, 1246, 1809, 1808, 1806, 1805, 1804,
 1803, 1802, 1801, 1800, 1799, 1798, 1796, 1795, 1794, 1048,
 1792,   67,   58, 1791,   65,  130,   62,   59, 1790, 1789,
   70, 1788, 1787, 1786, 1774, 1773, 1772,   56, 1770, 1769,
 1768,   52,  114,   47, 1767,   87,  366, 1764, 1762, 1760,
 1759, 1757, 1750, 1746, 1745, 1744, 1743, 1729, 1726, 1024,
 1725, 1724, 1723, 1722, 1721, 1720, 1719, 1718,   91, 1717,
 1716,  120, 1715, 1714, 1711,  128, 1707, 1706, 1703, 1701,
 1698, 1697, 1696,   60, 1670,  117, 1687,   80, 1686,  520,
 1685, 1676, 1675, 1673, 1564, 1538
};
YYSTATIC YYCONST yyr_t YYFARDATA YYR1[]={

   0, 109, 109, 110, 110, 110, 110, 110, 110, 110,
 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
 110, 110, 110, 110, 110, 110, 110, 110, 110, 136,
 136,  36,  36, 133, 133, 133,   2,   2,   1,   1,
   1,   9,  24,  24,  23,  23,  23, 134, 134, 134,
 134, 134, 135, 135, 135, 135, 135, 135, 135, 135,
 135,  93,  93,  93,  93,  94,  94,  94,  94,  10,
  11,  73,  72,  72,  59,  61,  61,  61,  62,  62,
  62,  65,  65, 132, 132, 132,  60,  60,  60,  60,
  60,  60, 130, 130, 130, 119,  12,  12,  12,  12,
  12,  12, 118, 137, 113, 138, 139, 111,  77,  77,
  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
  77,  77,  77,  77,  77,  77,  77,  77,  77,  77,
  77,  77,  77,  77,  77, 140, 140, 141, 141, 112,
 112, 142, 142,  56,  56,  57,  57,  69,  69,  18,
  18,  18,  18,  18,  18,  18,  19,  19,  68,  68,
  67,  67,  58,  21,  21,  22, 143, 143, 143, 143,
 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
 143, 143, 143, 143, 143, 143, 143, 116,  79,  79,
  79,  79,  79,  79,  79,  79,  79,  79,  79,  79,
  79,  79,  79,  79,   4,   4,  35,  35,  16,  16,
  75,  75,  75,  75,  75,  75,  75,   7,   7,   7,
   7,   8,   8,   8,   8,   8,   8,   8,   8,  76,
  74,  74,  74,  74,  74,  74, 144, 144,  81,  81,
  81, 145, 145, 150, 150, 150, 150, 150, 150, 150,
 150, 146,  82,  82,  82, 147, 147, 151, 151, 151,
 151, 151, 151, 151, 152,  38,  38,  34,  34, 153,
 114,  78,  78,  78,  78,  78,  78,  78,  78,  78,
  78,  78,  78,  78,  78,  78,  78,  78,  78,  78,
  78,  78,  78,  78,  83,  83,  83,  83,  83,  83,
  83,  83,  83,  83,  83,  83,  83,  83,  83,  83,
   3,   3,   3,  13,  13,  13,  13,  13,  80,  80,
  80,  80,  80,  80,  80,  80,  80,  80,  80,  80,
  80,  80,  80,  80, 154, 115, 115, 155, 155, 155,
 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
 155, 155, 155, 158, 159, 156, 161, 161, 160, 160,
 160, 163, 162, 162, 162, 162, 166, 166, 166, 169,
 164, 167, 168, 165, 165, 165, 117, 170, 170, 172,
 172, 172, 171, 171, 173, 173,  14,  14, 174, 174,
 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
 174, 174, 174,  41,  41,  41,  41,  41,  41,  41,
  41,  41,  41,  41,  41,  41,  41,  41,  41,  41,
  41,  41, 175,  31,  31,  32,  32,  39,  39,  39,
  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,
  40,  40,  40,  40,  40,  40,  42,  42,  42,  43,
  43,  43,  47,  47,  46,  46,  45,  45,  44,  44,
  48,  48,  49,  49,  49,  50,  50,  50,  50,  51,
  51, 149,  95,  96,  97,  98,  99, 100, 101, 102,
 103, 104, 105, 106, 107, 108, 157, 157, 157, 157,
 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 157, 157, 157, 157, 157, 157, 157, 157, 157,   6,
   6,   6,   6,   6,  53,  53,  54,  54,  55,  55,
  25,  25,  26,  26,  27,  27,  27,  70,  70,  70,
  70,  70,  70,  70,  70,  70,  70,   5,   5,  71,
  71,  71,  71,  33,  33,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  33,  33,  33,  33,  33,
  33,  33,  33,  33,  33,  33,  33,  33,  20,  20,
  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
  15,  15,  15,  15,  15,  15,  15,  15,  15,  15,
  15,  15,  15,  15,  15,  15,  15,  15,  15,  28,
  28,  28,  28,  28,  28,  28,  28,  28,  28,  28,
  28,  28,  28,  28,  28,  28,  28,  28,  28,  28,
  28,  28,  28,  52,  52,  52,  52,  52,  52,  52,
  52,  52,  52,  52,  52,  52,  52,  52,  52,  52,
  52,  30,  30,  29,  29,  29,  29,  29, 131, 131,
 131, 131, 131, 131,  64,  64,  64,  63,  63,  87,
  87,  84,  84,  85,  17,  17,  37,  37,  37,  37,
  37,  37,  37,  37,  86,  86,  86,  86,  86,  86,
  86,  86,  86,  86,  86,  86,  86,  86,  86, 176,
 176, 120, 120, 120, 120, 120, 120, 120, 120, 120,
 120, 120, 121, 121,  88,  88,  89,  89, 177, 122,
  90,  90,  90,  90,  90,  90,  90,  90,  90,  90,
 123, 123, 178, 178, 178,  66,  66, 179, 179, 179,
 179, 179, 179, 180, 182, 181, 124, 124, 125, 125,
 183, 183, 183, 183, 126, 148,  91,  91,  91,  91,
  91,  91,  91,  91,  91,  91, 127, 127, 184, 184,
 184, 184, 184, 184, 184, 128, 128,  92,  92,  92,
 129, 129, 185, 185, 185, 185 };
YYSTATIC YYCONST yyr_t YYFARDATA YYR2[]={

   0,   0,   2,   4,   4,   3,   1,   1,   1,   1,
   1,   1,   4,   4,   4,   4,   1,   1,   1,   2,
   2,   3,   2,   2,   1,   1,   1,   4,   1,   0,
   2,   1,   3,   2,   4,   6,   1,   1,   1,   1,
   3,   1,   1,   1,   1,   4,   4,   4,   4,   4,
   4,   4,   2,   3,   2,   2,   2,   1,   1,   2,
   1,   2,   4,   6,   3,   5,   7,   9,   3,   4,
   7,   1,   1,   1,   2,   0,   2,   2,   0,   6,
   2,   1,   1,   1,   1,   1,   1,   1,   1,   3,
   2,   3,   1,   2,   3,   7,   0,   2,   2,   2,
   2,   2,   3,   3,   2,   1,   4,   3,   0,   2,
   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
   2,   2,   2,   2,   2,   3,   3,   3,   3,   3,
   3,   2,   2,   2,   5,   0,   2,   0,   2,   0,
   2,   3,   1,   0,   1,   1,   3,   0,   3,   1,
   1,   1,   1,   1,   1,   4,   0,   2,   4,   3,
   0,   2,   3,   0,   1,   5,   3,   4,   4,   4,
   1,   1,   1,   1,   1,   2,   2,   4,  13,  22,
   1,   1,   5,   3,   7,   5,   4,   7,   0,   2,
   2,   2,   2,   2,   2,   2,   5,   2,   2,   2,
   2,   2,   2,   5,   0,   2,   0,   2,   0,   3,
   9,   9,   7,   7,   1,   1,   1,   2,   2,   1,
   4,   0,   1,   1,   2,   2,   2,   2,   1,   4,
   2,   5,   3,   2,   2,   1,   4,   3,   0,   2,
   2,   0,   2,   2,   2,   2,   2,   1,   1,   1,
   1,   9,   0,   2,   2,   0,   2,   2,   2,   2,
   1,   1,   1,   1,   1,   0,   4,   1,   3,   1,
  13,   0,   2,   2,   2,   2,   2,   2,   2,   2,
   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
   5,   8,   6,   5,   0,   2,   2,   2,   2,   2,
   2,   2,   2,   2,   2,   4,   4,   4,   4,   5,
   1,   1,   1,   0,   4,   4,   4,   4,   0,   2,
   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
   2,   2,   2,   5,   1,   0,   2,   2,   1,   2,
   4,   5,   1,   1,   1,   1,   2,   1,   1,   1,
   1,   1,   4,   6,   4,   4,  11,   1,   5,   3,
   7,   5,   5,   3,   1,   2,   2,   1,   2,   4,
   4,   1,   2,   2,   2,   2,   2,   2,   2,   1,
   2,   1,   1,   1,   4,   4,   2,   4,   2,   0,
   1,   1,   3,   1,   3,   1,   0,   3,   5,   4,
   3,   5,   5,   5,   5,   5,   5,   2,   2,   2,
   2,   2,   2,   4,   4,   4,   4,   4,   4,   4,
   4,   5,   5,   5,   5,   4,   4,   4,   4,   4,
   4,   3,   2,   0,   1,   1,   2,   1,   1,   1,
   1,   4,   4,   5,   4,   4,   4,   7,   7,   7,
   7,   7,   7,   7,   7,   7,   7,   8,   8,   8,
   8,   7,   7,   7,   7,   7,   0,   2,   2,   0,
   2,   2,   0,   2,   0,   2,   0,   2,   0,   2,
   0,   2,   0,   2,   2,   0,   2,   3,   2,   0,
   2,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   2,   1,   2,   2,   2,
   2,   2,   2,   3,   2,   2,   2,   5,   3,   2,
   2,   2,   2,   2,   5,   4,   6,   2,   4,   0,
   3,   3,   1,   1,   0,   3,   0,   1,   1,   3,
   0,   1,   1,   3,   1,   3,   4,   4,   4,   4,
   5,   1,   1,   1,   1,   1,   1,   1,   3,   1,
   3,   4,   1,   0,  10,   6,   5,   6,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   2,   2,   2,   2,   1,   1,   1,   1,   2,   3,
   4,   6,   5,   1,   1,   1,   1,   1,   1,   1,
   2,   2,   1,   2,   2,   4,   1,   2,   1,   2,
   1,   2,   1,   2,   1,   2,   1,   1,   0,   5,
   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   2,   2,   2,   2,   1,   1,   1,   1,
   1,   3,   2,   2,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   2,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   2,
   1,   3,   2,   3,   4,   2,   2,   2,   5,   5,
   7,   4,   3,   2,   3,   2,   1,   1,   2,   3,
   2,   1,   2,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   2,   2,   2,   2,   1,   1,   1,   1,
   1,   1,   3,   0,   1,   1,   3,   2,   6,   7,
   3,   3,   3,   6,   0,   1,   3,   5,   6,   4,
   4,   1,   3,   3,   1,   1,   1,   1,   4,   1,
   6,   6,   6,   4,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   3,   2,   5,   4,   7,   6,   7,   6,   9,
   8,   3,   8,   4,   0,   2,   0,   1,   3,   3,
   0,   2,   2,   2,   3,   2,   2,   2,   2,   2,
   0,   2,   3,   1,   1,   1,   1,   3,   8,   2,
   3,   1,   1,   3,   3,   3,   4,   6,   0,   2,
   3,   1,   3,   1,   4,   3,   0,   2,   2,   2,
   3,   3,   3,   3,   3,   3,   0,   2,   2,   3,
   3,   4,   2,   1,   1,   3,   5,   0,   2,   2,
   0,   2,   4,   3,   1,   1 };
YYSTATIC YYCONST short YYFARDATA YYCHK[]={

-1000,-109,-110,-111,-113,-114,-116,-117,-118,-119,
-120,-121,-122,-124,-126,-128,-130,-131,-132, 527,
 528, 462, 530, 531,-133,-134,-135, 534, 535,-139,
 411,-152, 413,-170,-137, 457,-176, 465, 410, 472,
 473, 432, -87, 433, -93, -94, 273, 451, 532, 536,
 537, 538, 539, 540, 541, 542,  59,-138, 412, 414,
 456, 449, 450, 452, -10, -11, 123, 123,-115, 123,
 123, 123, 123,  -9, 264,  -9, 529, -88, -24, 265,
 264, -24, 123,-140, 316,  -1,  -2, 261, 260, 263,
 -78, -16,  91,-171, 123,-174, 278,  38,-175, 286,
 287, 284, 283, 282, 281, 288, -31, -32, 267,  91,
  -9, -90, 471, 471, -92,  -1, 471, -86, 434, 435,
 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
 446, 447, 448, -31, -86, 263, -28, -70, -74, -93,
 -94, 306, 297, 324, 325,-149,  33, 309, 276, 326,
 -52, 275,  91,  -5, -76, 268, 415, 416, 417, 360,
 359, 278, 298, 277, 281, 282, 283, 284, 286, 287,
 279, 290, 291, 292, 293, 271,  -1, 296,  -1,  -1,
  -1,  -1, 262, -77,-172, 320, 381,  61, -73,  40,
 -75,  -7, -76, 269, 272, 327, 342,  -8, 295, 300,
 302, 310, -31, -31,-112,-109, 125,-155, 418,-156,
 420,-154, 422, 423,-117,-157,  -2,-131,-120,-133,
-132,-135, 474, 460, 510,-158, 509,-160, 421, -95,
 -96, -97, -98, -99,-108,-100,-101,-102,-103,-104,
-105,-106,-107,-159,-163, 397, 398, 399, 400, 401,
 402, 403, 404, 405, 406, 407, 408, 409, 123, 419,
-123,-125,-127,-129,  -9,  -1, 463,-136, -70, -76,
-141, 317, -71, -70,  91, -28,-149,  46,  -7, 330,
 331, 332, 333, 334, 328, 348, 355, 339, 367, 368,
 369, 370, 371, 372, 373, 353, 380, 294, 374, -79,
  -9,-173,-174,  42,  40, -31,  40, -14,  91,  40,
 -14,  40, -14,  40, -14,  40, -14,  40, -14,  40,
  41, 267,  -9, 263,  58,  44, 262,  -1, 356, 357,
 358, 475, 381, 477, 478, 479, 480, -90, -91,  -1,
 331, 332,  -1, -71,  41, -36,  61, 288, 262,  44,
 392,  91,  38,  42, 361, 362, 363,  60, 392, 392,
 392, 392, -70, 306, -70, -75,  -7,  33,  -9,  -1,
 280, 279, 289, -28,  -1, -76,  42, 473,  47, -28,
 270, 272, 281, 282, 283, 284,  40, -36,  -1, 331,
 332, 324, 347, 336, 337, 339, 340, 341, 342, 343,
 344, 345, 346, 364, 357, 338, 354, 328, 373, 294,
  -2,  40,  61, -72, -71, -74, -28,  -7,  -7,  40,
 301, 303, 304, 305,  41,  41, 125,-143,-114,-111,
-144,-146,-116,-117,-131,-120,-132, 454, 455,-148,
 510,-133,-135, 509, 323, 424, 429, 474, 410, 125,
  -9,  -9,  40, 453,  58,  91,  -9, -71, 359, 366,
 543,  91,-161,-162,-164,-166,-167,-168, 313,-169,
 311, 315, 314,  -9,  -2,  -9, -24,  40, -23, -24,
 266, 286, 287, -31,  -9,  -2, -75, -28, -76, 270,
 272, -71, -36, 343,-175,  -7, -72,  40,-115,-158,
  -2,  -9, 125,-178, 464,-131,-179,-180, 469, 470,
-181,-132,-135, 466, 125,-183,-177,-179,-182, 340,
 464, 467, 125,-184, 462, 410, 465, 296,-132,-135,
 125,-185, 462, 465,-132,-135, -89, 422, 125,-136,
-142, -71,  -1, 473,  -7,  -1, -13,  40,  40, -28,
 330, 331, 332, 333, 379, 373, 328, 481, 367, 368,
 369, 370, 377, 378, 294,  93, 125,  44,  40,  -2,
  41, -23,  -9, -23, -24,  -9,  -9,  -9,  93,  -9,
  -9, 476,  -1,  -1, 332, 331, 329, 338, 392,  40,
  61,  43, 123,  40,  40, 263,  -1,  93, -30, -29,
 275,  -9,  40,  40, -54, -55, -28,  -1,  -1,  -1,
  -1, -70, -28,  -9,  -1, 280,  93,  93,  93,  -1,
  -1, -71,  -1,  91,  -9, -69,  60, 331, 332, 333,
 367, 368, 369,  40,  61, -36, 123,  40,  41, -71,
  -3, 375, 376,  -1,  -9,-115, 123, 123, 123,  -9,
  -9, 123, -71, 359, 366, 543, 366, -81, -82, -91,
 -25, -26, -27, 275, -13,  40,  -9,  58, 274,  -7,
  91,  -1,  91,  -1,  -9,-161,-165,-158, 312,-165,
-165,-165, -71,-158,  -2,  -9,  40,  40,  41, -71,
  -1,  40, -31, -28,  -6,  -2,  -9, 125, 318, 318,
 468, -31, -66,  -9,  42, -36,  61, -31,  61, -31,
 -31,  61,  61,  -1, 471,  -9, 471,  40,  -1, 471,
-177,  44,  93,  -1, -28, -28,  91,  -9, -36, -83,
  -1,  40,  40,-173, -36,  41,  41,  93,  41,  41,
  41,  41,  41, -12, 263,  44,  58, 392, 331, 332,
 333, 367, 368, 369,  -1, -84, -85, -36, 123, 262,
 -64, -63, -71, 306,  44,  93,  44, 275, -71, -71,
  62,  44,  42,  -5,  -5,  -5,  93, 274,  41, -68,
 -19, -18,  43,  45, 306, 325, 307, 375, 294,  -9,
 -59, -61, -73, 274, -53, -22,  60,  41, 125,-112,
-145,-147,-127, 274,  -7,  91,  -1,  91,  -1, -71,
 -71,  -1, 373, 328,  -7, 373, 328,  -1,  41,  44,
 -28, -25,  93,  -9,  -3,  -1, -28,  -9,  -9,  44,
  93,  -2,  -9,  -9, -24, 274, -36,  41,  40,  41,
  44,  44,  -2,  -9,  -9,  41,  58,  40,  41,  40,
  41,  41,  40,  40,  -5,  -1,  -9, 319,  -1, -31,
 -71,  93, -38, 481, 506, 507, 508,  -9,  41, 392,
 -83,  41, 389, 343, 344, 345, 390, 391, 301, 303,
 304, 305, 393, 396, 294,  -4, 319, -34, -33,-153,
 482, 484, 485, 486, 487, 276, 277, 281, 282, 283,
 284, 286, 287, 257, 279, 290, 291, 292, 293, 488,
 489, 490, 492, 493, 494, 495, 496, 497, 498, 336,
 499, 280, 289, 338, 500, 343, 491, 359, 392, 504,
 271, 123,  -9,  41, -14, -14, -14, -14, -14, -14,
 319, 283, 284, 458, 459, 461,  -9,  -9,  -1,  41,
  44,  61, -59, 125,  44,  61, 263, 263, -29,  -9,
  41,  41, -28,  40,  -5,  -1,  62, -58,  -1,  40,
 -19,  40,  41, 125, -62, -40,-135, -41, 298, 366,
 297, 286, 287, 284, 283, 282, 281, 293, 292, 291,
 290, 279, 278, 277,-175,  61,  -3,  40,  40,  91,
 -54, 125, 125,-150, 425, 426, 427, 428,-120,-132,
-133,-135, 125,-151, 430, 431, 428,-132,-120,-133,
-135, 125,  -3, -28,  -9,  -9,  44, -93, 452,  -1,
 -28, -27, -38,  41, 392, -71,  93,  93, -71, -35,
  61, 318, 318,  41,  41,  -1,  41, -25,  -6,  -6,
 -66,  41,  -9,  41,  -3,  40,  93,  93,  93,  93,
 -36,  41,  58,  58,  40, -35,  -2,  41,  42,  91,
 -32,  40, 483, 503, 277, 281, 282, 283, 284, 280,
 -20,  40, -20, -20, -15, 512, 485, 486, 276, 277,
 281, 282, 283, 284, 286, 287, 279, 290, 291, 292,
 293,  42, 488, 489, 490, 492, 493, 496, 497, 499,
 280, 289, 257, 513, 514, 515, 516, 517, 518, 519,
 520, 521, 522, 523, 524, 525, 498, 490, 502,  41,
  -2, 263, 263,  44, -84, -37, -17,  -9, 283, -36,
 -70, 321, 322, 125, -64, 123,  61, -25,  -1, -67,
  44, -56, -57, -71,  -9, -65,-135, 360, 365,  40,
  91,  40,  91,  40,  91,  40,  91,  40,  91,  40,
  91,  40,  91,  40,  91,  40,  91,  40,  91,  40,
  91,  40,  91,  40,  91, 284, 283, 282, 281,  40,
  91,  40,  91, -31, -36, 123,  40, -53, -22, -25,
 -25,  -9,  62, -75, -75, -75, -75, -75, -75, -75,
 511, -71,  93,  93, -71,  -1,  -2,  -2, 274,  44,
 -39, -41, -36, 299, 286, 287, 284, 283, 282, 281,
 279, 293, 292, 291, 290, 278, 277,  -2,  -9,  41,
  58, -89, -69, -34, -83, 394, 395, 394, 395,  -9,
  93,  -9,  43, 125, -36,  91,  91, 505,  44,  91,
 526,  38, 281, 282, 283, 284, 280,  -9,  40,  40,
 -62, 123,  41, -67, -68,  41,  44,  41, -60, -52,
 366, 297, 347, 299, 263,  -9, 306, -70, 299,  -9,
 -40,  -9, -23,  -9,  -9, -23, -24,  -9, -24,  -9,
  -9,  -9,  -9,  -9,  -9,  -9, -24,  -9,  -9,  -9,
  -9,  -9,  -9,  -9,  40,  91,  40,  91,  40,  91,
  40,  91,  -9,  -9, -17,  -9,  41, -59,  40,  40,
  41,  41,  93,  -7, 274,  44,  40,  -3, -71, 284,
 283, 282, 281, -66,  40,  41,  41,  41,  93,  43,
  -9,  44,  -9,  -9,  61, -36,  93, 263,  -9, 281,
 282, 283,  -9, 125, -62, -71,  -1,  91, 306, -70,
  41,  41,  93, 263,  41,  41,  93,  41,  93,  41,
  41,  93,  41,  41,  93,  41,  93,  41,  93,  41,
  93,  41,  93,  41,  93,  41,  93,  41,  93,  41,
  93, -24,  -9,  -9,  -9,  -9,  -9,  -9,  -9,  41,
  93,  41,  93, 125, -25, -25,  62, -28,  -3, -71,
 -25, -21, -22,  60,  58, -25,  -9,  93, -36,  93,
  93,  -9,  41,  58,  58,  58,  41, 125,  61,  93,
 263,  40,  41,  40,  40,  40,  40,  40,  40,  40,
  40,  40,  40,  40,  40,  41,  93,  41,  93,  41,
  93,  41,  93,  40,  40,  41,  41, -71, -21,  41,
  40, -66,  41,  93,  44,  41, -33,  41,  -9,  -9,
  -9, -40, -49, -50, -51, -42, -43, -47, -46, -45,
 -44, -47, -46, -45, -44,  40,  40,  40,  40, -45,
 -48, 274,  40, -35, -25, -80, -36,  41,  41,  41,
  41, 299, 263,  41, 299, 306, -70,  41, -40,  41,
 -23,  -9,  41, -23, -24,  41, -24,  41,  -9,  41,
  -9,  41,  -9,  41,  41,  41,  41, -47, -46, -45,
 -44,  41,  41, -17,  -3, -25,  41, 123, 326, 381,
 382, 383, 310, 384, 385, 386, 387, 335, 349, 350,
 351, 352, 294,  44, 263,  41,  41,  41,  41,  40,
  41,  40, -36, -25, 511,  -9,  41,  41, 359,  41,
  -7, -28, -71, 274,  -3, -21,  40, -25,  41 };
YYSTATIC YYCONST short YYFARDATA YYDEF[]={

   1,  -2,   2,   0,   0, 335,   6,   7,   8,   9,
  10,  11,   0,   0,   0,   0,  16,  17,  18,   0,
   0, 774,   0,   0,  24,  25,  26,   0,  28, 135,
   0, 271, 208,   0, 433,   0,   0, 780, 105, 837,
  92,   0, 433,   0,  83,  84,  85,   0,   0,   0,
   0,   0,   0,  57,  58,   0,  60, 108, 264, 389,
   0, 759, 760, 221, 433, 433, 139,   1,   0, 790,
 808, 826, 840,  19,  41,  20,   0,   0,  22,  42,
  43,  23,  29, 137,   0, 104,  38,  39,  36,  37,
 221, 188,   0, 386,   0, 393,   0,   0, 433, 396,
 396, 396, 396, 396, 396,   0,   0, 434, 435,   0,
 762,   0, 780, 816,   0,  93,   0,   0, 744, 745,
 746, 747, 748, 749, 750, 751, 752, 753, 754, 755,
 756, 757, 758,   0,   0,  33,   0,   0,   0,   0,
   0,   0, 670,   0,   0, 221,   0, 686, 687,   0,
 691,   0,   0, 551, 235, 553, 554, 555, 556,   0,
 491, 693, 694, 695, 696, 697, 698, 699, 700, 701,
   0, 706, 707, 708, 709, 710, 557,   0,  52,  54,
  55,  56,  59,   0, 388, 390, 391,   0,  61,   0,
  71,   0, 214, 215, 216, 221, 221, 219,   0, 222,
 223, 228,   0,   0,   0,   0,   5, 336,   0, 338,
   0,   0, 342, 343, 344, 345,   0, 347, 348, 349,
 350, 351,   0,   0,   0, 357,   0,   0, 334, 506,
   0,   0,   0,   0, 433,   0, 221,   0,   0,   0,
 221,   0,   0, 335,   0, 492, 493, 494, 495, 496,
 497, 498, 499, 500, 501, 502, 503, 504, 364, 371,
   0,   0,   0,   0,  21, 776, 775,   0,  29, 552,
 107,   0, 136, 559,   0, 562, 221,   0, 313, 272,
 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
 283, 284, 285, 286, 287, 288, 289,   0,   0,   0,
   0,   0, 395,   0,   0,   0,   0, 407,   0,   0,
 408,   0, 409,   0, 410,   0, 411,   0, 412, 432,
 102, 436,   0, 761,   0,   0, 771, 779, 781, 782,
 783,   0, 785, 786, 787, 788, 789,   0,   0, 835,
 838, 839,  94, 720, 721, 722,   0,   0,  31,   0,
   0, 713, 675, 676, 677,   0,   0, 536,   0,   0,
   0,   0, 669,   0, 672, 230,   0,   0, 683, 685,
 688,   0, 690, 692,   0,   0,   0,   0,   0,   0,
 233, 234, 702, 703, 704, 705,   0,  53, 147, 109,
 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
 120, 121, 122, 123, 124,   0, 131, 132, 133,   0,
   0, 103,   0,   0,  72,  73,   0, 217, 218,   0,
 224, 225, 226, 227,  64,  68,   3, 140, 335,   0,
   0,   0, 170, 171, 172, 173, 174,   0,   0,   0,
   0, 180, 181,   0,   0, 238, 252, 816, 105,   4,
 337, 339,  -2,   0, 346,   0,   0,   0, 221,   0,
   0,   0, 365, 367,   0,   0,   0,   0,   0,   0,
 381, 382, 379, 507, 508, 509, 510, 505, 511, 512,
  44,   0,   0,   0, 514, 515, 516,   0, 519, 520,
 521, 522, 523,   0, 433,   0, 527, 529,   0, 368,
   0,   0,  12, 791,   0, 793, 794, 433,   0,   0,
 433, 801, 802,   0,  13, 809, 433, 811, 433, 813,
   0,   0,  14, 827,   0,   0,   0,   0, 833, 834,
  15, 841,   0,   0, 844, 845, 773, 777,  27,  30,
 138, 142,   0,   0,   0,  40,   0,   0, 294,   0,
 189, 190, 191, 192, 193, 194, 195,   0, 197, 198,
 199, 200, 201, 202,   0, 209, 392,   0,   0,   0,
 400,   0,   0,   0,   0,   0,   0,   0,  96, 764,
   0, 784, 806, 814, 817, 818, 819,   0,   0,   0,
   0,   0, 724, 729, 730,  34,  47, 673,   0, 711,
 714, 715,   0,   0,   0, 537, 538,  48,  49,  50,
  51, 671,   0, 682, 684, 689,   0,   0,   0,   0,
 558,   0,  -2, 713,   0, 106, 156, 125, 126, 127,
 128, 129, 130,   0, 387,  62,  75,  69, 221,   0,
 534, 310, 311,  -2,   0,   0, 139, 241, 255, 175,
 176, 826,   0, 221,   0,   0,   0,   0, 221,   0,
   0, 541, 542, 544,   0,  -2,   0,   0,   0,   0,
   0, 359,   0,   0,   0, 366, 372, 383,   0, 373,
 374, 375, 380, 376, 377, 378,   0,   0, 513,   0,
  -2,   0,   0,   0,   0, 532, 533, 363,   0,   0,
   0,   0,   0, 795, 796, 799,   0,   0,   0,   0,
   0,   0,   0, 828,   0, 832,   0,   0,   0,   0,
 433,   0, 560,   0,   0, 265,   0,   0, 294,   0,
 204, 563,   0, 394,   0, 399, 396, 397, 396, 396,
 396, 396, 396,   0, 763,   0,   0,   0, 820, 821,
 822, 823, 824, 825, 836,   0, 731,   0,  75,  32,
   0, 725,   0,   0,   0, 674, 713, 717,   0,   0,
 681,   0, 676, 547, 548, 549,   0,   0, 229,   0,
   0, 156, 149, 150, 151, 152, 153, 154,   0,   0,
   0,  78,  65,   0,   0,   0, 536, 220, 166,   0,
   0,   0,   0,   0,   0,   0, 183,   0,   0,   0,
   0,  -2, 239, 240,   0, 253, 254, 815, 340, 313,
 265,   0, 352, 354, 355, 312,   0,   0,   0,   0,
 206,   0,   0,   0,   0,   0,   0, 525,  -2, 528,
 529, 529, 369, 370, 792, 797,   0, 805, 800, 803,
 810, 812, 778, 804, 829, 830,   0,   0, 843,   0,
 141, 561,   0,   0,   0,   0,   0,   0, 290,   0,
   0, 293, 295, 296, 297, 298, 299, 300, 301, 302,
 303, 304,   0,   0,   0, 206,   0,   0, 267,   0,
   0,   0, 568, 569, 570, 571, 572, 573, 574, 575,
 576, 577, 578, 579,   0, 584, 585, 586, 587, 593,
 594, 595, 596, 597, 598, 599, 618, 618, 602, 618,
 620, 606, 608,   0, 610,   0, 612, 614,   0, 616,
 617, 269,   0, 398, 401, 402, 403, 404, 405, 406,
   0,  97,  98,  99, 100, 101, 766, 768, 807, 718,
   0,   0,   0, 723, 724,   0,  37,  35, 712, 716,
 678, 679, 539,  -2, 550, 231, 148,   0, 160, 143,
 157,   0, 134,  63,  74,  76,  77, 440,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0, 433,   0, 534,  -2,  -2,   0,
   0, 167, 168, 242, 221, 221, 221, 221, 247, 248,
 249, 250, 169, 256, 221, 221, 221, 260, 261, 262,
 263, 177,   0,   0,   0,   0,   0, 186, 221, 236,
   0, 543, 545, 341,   0,   0, 358,   0, 361, 362,
   0,   0,   0,  45,  46, 517, 524,   0, 530, 531,
   0, 831, 842, 776, 147, 563, 314, 315, 316, 317,
 294, 292,   0,   0,   0, 187, 205, 196, 588,   0,
   0,   0,   0,   0, 613, 580, 581, 582, 583, 607,
 600,   0, 601, 603, 604, 621, 622, 623, 624, 625,
 626, 627, 628, 629, 630, 631,   0, 636, 637, 638,
 639, 640, 644, 645, 646, 647, 648, 649, 650, 651,
 652, 654, 655, 656, 657, 658, 659, 660, 661, 662,
 663, 664, 665, 666, 667, 668, 609, 611, 615, 203,
  95, 765, 767,   0, 732, 733, 736, 737,   0, 739,
   0, 734, 735, 719, 726,  78,   0,   0, 160, 159,
 156,   0, 144, 145,   0,   0,  80,  81,  82,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,  66,  75,  70,   0,   0,   0,
   0,   0, 535, 243, 244, 245, 246, 257, 258, 259,
 221,   0, 182,   0, 185,   0, 546, 353,   0,   0,
 207, 437, 438, 439,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0, 384, 385, 526,
   0, 772,   0,   0,   0, 305, 306, 307, 308,   0,
 589,   0,   0, 268,   0,   0,   0,   0,   0,   0,
 642, 643, 632, 633, 634, 635, 653, 770,   0,   0,
   0,  78, 680, 158, 161, 162,   0, 155,   0,  86,
  87,  88,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0, 431,   0,  -2,  -2,
 212, 213,   0,   0,   0,   0,  -2, 163, 360,   0,
   0,   0,   0,   0,  -2, 266, 291, 309, 590,   0,
   0,   0,   0,   0,   0, 605, 641, 769,   0,   0,
   0,   0,   0, 727,   0, 146,   0,   0,   0,  90,
 441, 442,   0,   0, 444, 445,   0, 446,   0, 413,
 415,   0, 414, 416,   0, 417,   0, 418,   0, 419,
   0, 420,   0, 425,   0, 426,   0, 427,   0, 428,
   0,   0,   0,   0,   0,   0,   0,   0,   0, 429,
   0, 430,   0,  67,   0,   0, 165,   0, 163, 184,
   0,   0, 164,   0,   0,   0,   0, 592,   0, 566,
 563,   0, 738,   0,   0,   0, 743, 728,   0,  91,
  89, 482, 443, 485, 489, 466, 469, 472, 474, 476,
 478, 472, 474, 476, 478, 421,   0, 422,   0, 423,
   0, 424,   0, 476, 480, 210, 211,   0,   0, 206,
  -2, 798, 318, 591,   0, 565, 567, 619,   0,   0,
   0,  79,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0, 472, 474, 476, 478,   0,
   0,   0,  -2, 251,   0,   0,   0, 740, 741, 742,
 463, 483, 484, 464, 486,   0, 488, 465, 490, 447,
 467, 468, 448, 470, 471, 449, 473, 450, 475, 451,
 477, 452, 479, 453, 454, 455, 456,   0,   0,   0,
   0, 461, 462, 481,   0,   0, 356, 270, 319, 320,
 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
 331, 332,   0,   0, 487, 457, 458, 459, 460,  -2,
   0,   0,   0,   0,   0,   0, 564, 178, 221, 333,
   0,   0,   0,   0, 163,   0,  -2,   0, 179 };
#ifdef YYRECOVER
YYSTATIC YYCONST short yyrecover[] = {
-1000
};
#endif

/* SCCSWHAT( "@(#)yypars.c	3.1 88/11/16 22:00:49	" ) */
#line 3 "F:\\NetFXDev1\\src\\tools\\devdiv\\amd64\\yypars.c"
#if ! defined(YYAPI_PACKAGE)
/*
**  YYAPI_TOKENNAME		: name used for return value of yylex
**	YYAPI_TOKENTYPE		: type of the token
**	YYAPI_TOKENEME(t)	: the value of the token that the parser should see
**	YYAPI_TOKENNONE		: the representation when there is no token
**	YYAPI_VALUENAME		: the name of the value of the token
**	YYAPI_VALUETYPE		: the type of the value of the token (if null, then the value is derivable from the token itself)
**	YYAPI_VALUEOF(v)	: how to get the value of the token.
*/
#define	YYAPI_TOKENNAME		yychar
#define	YYAPI_TOKENTYPE		int
#define	YYAPI_TOKENEME(t)	(t)
#define	YYAPI_TOKENNONE		-1
#define	YYAPI_TOKENSTR(t)	(sprintf_s(yytokbuf, ARRAY_SIZE(yytokbuf), "%d", t), yytokbuf)
#define	YYAPI_VALUENAME		yylval
#define	YYAPI_VALUETYPE		YYSTYPE
#define	YYAPI_VALUEOF(v)	(v)
#endif
#if ! defined(YYAPI_CALLAFTERYYLEX)
#define	YYAPI_CALLAFTERYYLEX
#endif

# define YYFLAG -1000
# define YYERROR goto yyerrlab
# define YYACCEPT return(0)
# define YYABORT return(1)

#ifdef YYDEBUG				/* RRR - 10/9/85 */
char yytokbuf[20];
# ifndef YYDBFLG
#  define YYDBFLG (yydebug)
# endif
# define yyprintf(a, b, c, d) if (YYDBFLG) YYPRINT(a, b, c, d)
#else
# define yyprintf(a, b, c, d)
#endif

#ifndef YYPRINT
#define	YYPRINT	printf
#endif

/*	parser for yacc output	*/

#ifdef YYDUMP
int yydump = 1; /* 1 for dumping */
void yydumpinfo(void);
#endif
#ifdef YYDEBUG
YYSTATIC int yydebug = 0; /* 1 for debugging */
#endif
YYSTATIC YYSTYPE yyv[YYMAXDEPTH];	/* where the values are stored */
YYSTATIC short	yys[YYMAXDEPTH];	/* the parse stack */

#if ! defined(YYRECURSIVE)
YYSTATIC YYAPI_TOKENTYPE	YYAPI_TOKENNAME = YYAPI_TOKENNONE;
#if defined(YYAPI_VALUETYPE)
// YYSTATIC YYAPI_VALUETYPE	YYAPI_VALUENAME;	 FIX
#endif
YYSTATIC int yynerrs = 0;			/* number of errors */
YYSTATIC short yyerrflag = 0;		/* error recovery flag */
#endif

#ifdef YYRECOVER
/*
**  yyscpy : copy f onto t and return a ptr to the null terminator at the
**  end of t.
*/
YYSTATIC	char	*yyscpy(register char*t, register char*f)
	{
	while(*t = *f++)
		t++;
	return(t);	/*  ptr to the null char  */
	}
#endif

#ifndef YYNEAR
#define YYNEAR
#endif
#ifndef YYPASCAL
#define YYPASCAL
#endif
#ifndef YYLOCAL
#define YYLOCAL
#endif
#if ! defined YYPARSER
#define YYPARSER yyparse
#endif
#if ! defined YYLEX
#define YYLEX yylex
#endif

#if defined(YYRECURSIVE)

	YYSTATIC YYAPI_TOKENTYPE	YYAPI_TOKENNAME = YYAPI_TOKENNONE;
  #if defined(YYAPI_VALUETYPE)
	YYSTATIC YYAPI_VALUETYPE	YYAPI_VALUENAME;
  #endif
	YYSTATIC int yynerrs = 0;			/* number of errors */
	YYSTATIC short yyerrflag = 0;		/* error recovery flag */

	YYSTATIC short	yyn;
	YYSTATIC short	yystate = 0;
	YYSTATIC short	*yyps= &yys[-1];
	YYSTATIC YYSTYPE	*yypv= &yyv[-1];
	YYSTATIC short	yyj;
	YYSTATIC short	yym;

#endif

#pragma warning(disable:102)
YYLOCAL YYNEAR YYPASCAL YYPARSER()
{
#if ! defined(YYRECURSIVE)

	register	short	yyn;
	short		yystate, *yyps;
	YYSTYPE		*yypv;
	short		yyj, yym;

	YYAPI_TOKENNAME = YYAPI_TOKENNONE;
	yystate = 0;

#ifdef _PREFAST_
#pragma warning(push)
#pragma warning(disable:6200) // Index '-1' is out of valid index range...for non-stack buffer...
#endif
    yyps= &yys[-1];
    yypv= &yyv[-1];
#ifdef _PREFAST_
#pragma warning(pop)
#endif

#endif

#ifdef YYDUMP
	yydumpinfo();
#endif
 yystack:	 /* put a state and value onto the stack */

#ifdef YYDEBUG
	if(YYAPI_TOKENNAME == YYAPI_TOKENNONE) {
		yyprintf( "state %d, token # '%d'\n", yystate, -1, 0 );
		}
	else {
		yyprintf( "state %d, token # '%s'\n", yystate, YYAPI_TOKENSTR(YYAPI_TOKENNAME), 0 );
		}
#endif
	if( ++yyps > &yys[YYMAXDEPTH] ) {
		yyerror( "yacc stack overflow" );
		return(1);
	}
	*yyps = yystate;
	++yypv;

	*yypv = yyval;

yynewstate:

	yyn = YYPACT[yystate];

	if( yyn <= YYFLAG ) {	/*  simple state, no lookahead  */
		goto yydefault;
	}
	if( YYAPI_TOKENNAME == YYAPI_TOKENNONE ) {	/*  need a lookahead */
		YYAPI_TOKENNAME = YYLEX();
		YYAPI_CALLAFTERYYLEX(YYAPI_TOKENNAME);
	}
	if( ((yyn += (short)YYAPI_TOKENEME(YYAPI_TOKENNAME)) < 0) || (yyn >= YYLAST) ) {
		goto yydefault;
	}
	if( YYCHK[ yyn = YYACT[ yyn ] ] == YYAPI_TOKENEME(YYAPI_TOKENNAME) ) {		/* valid shift */
		yyval = YYAPI_VALUEOF(YYAPI_VALUENAME);
		yystate = yyn;
 		yyprintf( "SHIFT: saw token '%s', now in state %4d\n", YYAPI_TOKENSTR(YYAPI_TOKENNAME), yystate, 0 );
		YYAPI_TOKENNAME = YYAPI_TOKENNONE;
		if( yyerrflag > 0 ) {
			--yyerrflag;
		}
		goto yystack;
	}

 yydefault:
	/* default state action */

	if( (yyn = YYDEF[yystate]) == -2 ) {
		register	YYCONST short	*yyxi;

		if( YYAPI_TOKENNAME == YYAPI_TOKENNONE ) {
			YYAPI_TOKENNAME = YYLEX();
			YYAPI_CALLAFTERYYLEX(YYAPI_TOKENNAME);
 			yyprintf("LOOKAHEAD: token '%s'\n", YYAPI_TOKENSTR(YYAPI_TOKENNAME), 0, 0);
		}
/*
**  search exception table, we find a -1 followed by the current state.
**  if we find one, we'll look through terminal,state pairs. if we find
**  a terminal which matches the current one, we have a match.
**  the exception table is when we have a reduce on a terminal.
*/

#if YYOPTTIME
		yyxi = yyexca + yyexcaind[yystate];
		while(( *yyxi != YYAPI_TOKENEME(YYAPI_TOKENNAME) ) && ( *yyxi >= 0 )){
			yyxi += 2;
		}
#else
		for(yyxi = yyexca;
			(*yyxi != (-1)) || (yyxi[1] != yystate);
			yyxi += 2
		) {
			; /* VOID */
			}

		while( *(yyxi += 2) >= 0 ){
			if( *yyxi == YYAPI_TOKENEME(YYAPI_TOKENNAME) ) {
				break;
				}
		}
#endif
		if( (yyn = yyxi[1]) < 0 ) {
			return(0);   /* accept */
			}
		}

	if( yyn == 0 ){ /* error */
		/* error ... attempt to resume parsing */

		switch( yyerrflag ){

		case 0:		/* brand new error */
#ifdef YYRECOVER
			{
			register	int		i,j;

			for(i = 0;
				(yyrecover[i] != -1000) && (yystate > yyrecover[i]);
				i += 3
			) {
				;
			}
			if(yystate == yyrecover[i]) {
				yyprintf("recovered, from state %d to state %d on token # %d\n",
						yystate,yyrecover[i+2],yyrecover[i+1]
						);
				j = yyrecover[i + 1];
				if(j < 0) {
				/*
				**  here we have one of the injection set, so we're not quite
				**  sure that the next valid thing will be a shift. so we'll
				**  count it as an error and continue.
				**  actually we're not absolutely sure that the next token
				**  we were supposed to get is the one when j > 0. for example,
				**  for(+) {;} error recovery with yyerrflag always set, stops
				**  after inserting one ; before the +. at the point of the +,
				**  we're pretty sure the guy wants a 'for' loop. without
				**  setting the flag, when we're almost absolutely sure, we'll
				**  give him one, since the only thing we can shift on this
				**  error is after finding an expression followed by a +
				*/
					yyerrflag++;
					j = -j;
					}
				if(yyerrflag <= 1) {	/*  only on first insertion  */
					yyrecerr(YYAPI_TOKENNAME, j);	/*  what was, what should be first */
				}
				yyval = yyeval(j);
				yystate = yyrecover[i + 2];
				goto yystack;
				}
			}
#endif
		yyerror("syntax error");

		yyerrlab:
			++yynerrs;
			FALLTHROUGH;
		case 1:
		case 2: /* incompletely recovered error ... try again */

			yyerrflag = 3;

			/* find a state where "error" is a legal shift action */

			while ( yyps >= yys ) {
			   yyn = YYPACT[*yyps] + YYERRCODE;
			   if( yyn>= 0 && yyn < YYLAST && YYCHK[YYACT[yyn]] == YYERRCODE ){
			      yystate = YYACT[yyn];  /* simulate a shift of "error" */
 				  yyprintf( "SHIFT 'error': now in state %4d\n", yystate, 0, 0 );
			      goto yystack;
			      }
			   yyn = YYPACT[*yyps];

			   /* the current yyps has no shift onn "error", pop stack */

 			   yyprintf( "error recovery pops state %4d, uncovers %4d\n", *yyps, yyps[-1], 0 );
			   --yyps;
			   --yypv;
			   }

			/* there is no state on the stack with an error shift ... abort */

	yyabort:
			return(1);


		case 3:  /* no shift yet; clobber input char */

 			yyprintf( "error recovery discards token '%s'\n", YYAPI_TOKENSTR(YYAPI_TOKENNAME), 0, 0 );

			if( YYAPI_TOKENEME(YYAPI_TOKENNAME) == 0 ) goto yyabort; /* don't discard EOF, quit */
			YYAPI_TOKENNAME = YYAPI_TOKENNONE;
			goto yynewstate;   /* try again in the same state */
			}
		}

	/* reduction by production yyn */
yyreduce:
		{
		register	YYSTYPE	*yypvt;
		yypvt = yypv;
		yyps -= YYR2[yyn];
		yypv -= YYR2[yyn];
		yyval = yypv[1];
 		yyprintf("REDUCE: rule %4d, popped %2d tokens, uncovered state %4d, ",yyn, YYR2[yyn], *yyps);
		yym = yyn;
		yyn = (short)YYR1[yyn];		/* consult goto table to find next state */
		yyj = YYPGO[yyn] + *yyps + 1;
		if( (yyj >= YYLAST) || (YYCHK[ yystate = YYACT[yyj] ] != -yyn) ) {
			yystate = YYACT[YYPGO[yyn]];
			}
 		yyprintf("goto state %4d\n", yystate, 0, 0);
#ifdef YYDUMP
		yydumpinfo();
#endif
		switch(yym){

case 3:
#line 193 "asmparse.y"
{ PASM->EndClass(); } break;
case 4:
#line 194 "asmparse.y"
{ PASM->EndNameSpace(); } break;
case 5:
#line 195 "asmparse.y"
{ if(PASM->m_pCurMethod->m_ulLines[1] ==0)
                                                                                  {  PASM->m_pCurMethod->m_ulLines[1] = PASM->m_ulCurLine;
                                                                                     PASM->m_pCurMethod->m_ulColumns[1]=PASM->m_ulCurColumn;}
                                                                                  PASM->EndMethod(); } break;
case 12:
#line 205 "asmparse.y"
{ PASMM->EndAssembly(); } break;
case 13:
#line 206 "asmparse.y"
{ PASMM->EndAssembly(); } break;
case 14:
#line 207 "asmparse.y"
{ PASMM->EndComType(); } break;
case 15:
#line 208 "asmparse.y"
{ PASMM->EndManifestRes(); } break;
case 19:
#line 212 "asmparse.y"
{
#ifdef _PREFAST_
#pragma warning(push)
#pragma warning(disable:22011) // Suppress PREFast warning about integer overflow/underflow
#endif
                                                                                  PASM->m_dwSubsystem = yypvt[-0].int32;
#ifdef _PREFAST_
#pragma warning(pop)
#endif
                                                                                } break;
case 20:
#line 222 "asmparse.y"
{ PASM->m_dwComImageFlags = yypvt[-0].int32; } break;
case 21:
#line 223 "asmparse.y"
{ PASM->m_dwFileAlignment = yypvt[-0].int32;
                                                                                  if((yypvt[-0].int32 & (yypvt[-0].int32 - 1))||(yypvt[-0].int32 < 0x200)||(yypvt[-0].int32 > 0x10000))
                                                                                    PASM->report->error("Invalid file alignment, must be power of 2 from 0x200 to 0x10000\n");} break;
case 22:
#line 226 "asmparse.y"
{ PASM->m_stBaseAddress = (ULONGLONG)(*(yypvt[-0].int64)); delete yypvt[-0].int64;
                                                                                  if(PASM->m_stBaseAddress & 0xFFFF)
                                                                                    PASM->report->error("Invalid image base, must be 0x10000-aligned\n");} break;
case 23:
#line 229 "asmparse.y"
{ PASM->m_stSizeOfStackReserve = (size_t)(*(yypvt[-0].int64)); delete yypvt[-0].int64; } break;
case 28:
#line 234 "asmparse.y"
{ PASM->m_fIsMscorlib = TRUE; } break;
case 31:
#line 241 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 32:
#line 242 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 33:
#line 245 "asmparse.y"
{ LPCSTRToGuid(yypvt[-0].string,&(PASM->m_guidLang)); } break;
case 34:
#line 246 "asmparse.y"
{ LPCSTRToGuid(yypvt[-2].string,&(PASM->m_guidLang));
                                                                                  LPCSTRToGuid(yypvt[-0].string,&(PASM->m_guidLangVendor));} break;
case 35:
#line 248 "asmparse.y"
{ LPCSTRToGuid(yypvt[-4].string,&(PASM->m_guidLang));
                                                                                  LPCSTRToGuid(yypvt[-2].string,&(PASM->m_guidLangVendor));
                                                                                  LPCSTRToGuid(yypvt[-2].string,&(PASM->m_guidDoc));} break;
case 36:
#line 253 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 37:
#line 254 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 38:
#line 257 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 39:
#line 258 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 40:
#line 259 "asmparse.y"
{ yyval.string = newStringWDel(yypvt[-2].string, '.', yypvt[-0].string); } break;
case 41:
#line 262 "asmparse.y"
{ yyval.int32 = yypvt[-0].int32; } break;
case 42:
#line 265 "asmparse.y"
{ yyval.int64 = yypvt[-0].int64; } break;
case 43:
#line 266 "asmparse.y"
{ yyval.int64 = neg ? new __int64(yypvt[-0].int32) : new __int64((unsigned)yypvt[-0].int32); } break;
case 44:
#line 269 "asmparse.y"
{ yyval.float64 = yypvt[-0].float64; } break;
case 45:
#line 270 "asmparse.y"
{ float f; *((__int32*) (&f)) = yypvt[-1].int32; yyval.float64 = new double(f); } break;
case 46:
#line 271 "asmparse.y"
{ yyval.float64 = (double*) yypvt[-1].int64; } break;
case 47:
#line 275 "asmparse.y"
{ PASM->AddTypeDef(yypvt[-2].binstr,yypvt[-0].string); } break;
case 48:
#line 276 "asmparse.y"
{ PASM->AddTypeDef(yypvt[-2].token,yypvt[-0].string); } break;
case 49:
#line 277 "asmparse.y"
{ PASM->AddTypeDef(yypvt[-2].token,yypvt[-0].string); } break;
case 50:
#line 278 "asmparse.y"
{ yypvt[-2].cad->tkOwner = 0; PASM->AddTypeDef(yypvt[-2].cad,yypvt[-0].string); } break;
case 51:
#line 279 "asmparse.y"
{ PASM->AddTypeDef(yypvt[-2].cad,yypvt[-0].string); } break;
case 52:
#line 284 "asmparse.y"
{ DefineVar(yypvt[-0].string, NULL); } break;
case 53:
#line 285 "asmparse.y"
{ DefineVar(yypvt[-1].string, yypvt[-0].binstr); } break;
case 54:
#line 286 "asmparse.y"
{ UndefVar(yypvt[-0].string); } break;
case 55:
#line 287 "asmparse.y"
{ SkipToken = !IsVarDefined(yypvt[-0].string);
                                                                                  IfEndif++;
                                                                                } break;
case 56:
#line 290 "asmparse.y"
{ SkipToken = IsVarDefined(yypvt[-0].string);
                                                                                  IfEndif++;
                                                                                } break;
case 57:
#line 293 "asmparse.y"
{ if(IfEndif == 1) SkipToken = !SkipToken;} break;
case 58:
#line 294 "asmparse.y"
{ if(IfEndif == 0)
                                                                                    PASM->report->error("Unmatched #endif\n");
                                                                                  else IfEndif--;
                                                                                } break;
case 59:
#line 298 "asmparse.y"
{ _ASSERTE(!"yylex should have dealt with this"); } break;
case 60:
#line 299 "asmparse.y"
{ } break;
case 61:
#line 303 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-0].token, NULL); } break;
case 62:
#line 304 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].token, yypvt[-0].binstr); } break;
case 63:
#line 305 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-4].token, yypvt[-1].binstr); } break;
case 64:
#line 306 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].int32, yypvt[-1].binstr); } break;
case 65:
#line 309 "asmparse.y"
{ yyval.cad = new CustomDescr(yypvt[-2].token, yypvt[-0].token, NULL); } break;
case 66:
#line 310 "asmparse.y"
{ yyval.cad = new CustomDescr(yypvt[-4].token, yypvt[-2].token, yypvt[-0].binstr); } break;
case 67:
#line 312 "asmparse.y"
{ yyval.cad = new CustomDescr(yypvt[-6].token, yypvt[-4].token, yypvt[-1].binstr); } break;
case 68:
#line 313 "asmparse.y"
{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].int32, yypvt[-1].binstr); } break;
case 69:
#line 316 "asmparse.y"
{ yyval.int32 = yypvt[-2].token; bParsingByteArray = TRUE; } break;
case 70:
#line 320 "asmparse.y"
{ PASM->m_pCustomDescrList = NULL;
                                                                                  PASM->m_tkCurrentCVOwner = yypvt[-4].token;
                                                                                  yyval.int32 = yypvt[-2].token; bParsingByteArray = TRUE; } break;
case 71:
#line 325 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 72:
#line 328 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 73:
#line 329 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 74:
#line 333 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                                                  yyval.binstr->appendInt16(VAL16(nCustomBlobNVPairs));
                                                                                  yyval.binstr->append(yypvt[-0].binstr);
                                                                                  nCustomBlobNVPairs = 0; } break;
case 75:
#line 339 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt16(VAL16(0x0001)); } break;
case 76:
#line 340 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                                                  AppendFieldToCustomBlob(yyval.binstr,yypvt[-0].binstr); } break;
case 77:
#line 342 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 78:
#line 345 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 79:
#line 347 "asmparse.y"
{ yyval.binstr = yypvt[-5].binstr; yyval.binstr->appendInt8(yypvt[-4].int32);
                                                                                  yyval.binstr->append(yypvt[-3].binstr);
                                                                                  AppendStringWithLength(yyval.binstr,yypvt[-2].string);
                                                                                  AppendFieldToCustomBlob(yyval.binstr,yypvt[-0].binstr);
                                                                                  nCustomBlobNVPairs++; } break;
case 80:
#line 352 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 81:
#line 355 "asmparse.y"
{ yyval.int32 = SERIALIZATION_TYPE_FIELD; } break;
case 82:
#line 356 "asmparse.y"
{ yyval.int32 = SERIALIZATION_TYPE_PROPERTY; } break;
case 83:
#line 359 "asmparse.y"
{ if(yypvt[-0].cad->tkOwner && !yypvt[-0].cad->tkInterfacePair)
                                                                                    PASM->DefineCV(yypvt[-0].cad);
                                                                                  else if(PASM->m_pCustomDescrList)
                                                                                    PASM->m_pCustomDescrList->PUSH(yypvt[-0].cad); } break;
case 84:
#line 363 "asmparse.y"
{ PASM->DefineCV(yypvt[-0].cad); } break;
case 85:
#line 364 "asmparse.y"
{ CustomDescr* pNew = new CustomDescr(yypvt[-0].tdd->m_pCA);
                                                                                  if(pNew->tkOwner == 0) pNew->tkOwner = PASM->m_tkCurrentCVOwner;
                                                                                  if(pNew->tkOwner)
                                                                                    PASM->DefineCV(pNew);
                                                                                  else if(PASM->m_pCustomDescrList)
                                                                                    PASM->m_pCustomDescrList->PUSH(pNew); } break;
case 86:
#line 372 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 87:
#line 373 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE); } break;
case 88:
#line 374 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TAGGED_OBJECT); } break;
case 89:
#line 375 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                AppendStringWithLength(yyval.binstr,yypvt[-0].string); } break;
case 90:
#line 377 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-0].token)); } break;
case 91:
#line 379 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 92:
#line 384 "asmparse.y"
{ PASMM->SetModuleName(NULL); PASM->m_tkCurrentCVOwner=1; } break;
case 93:
#line 385 "asmparse.y"
{ PASMM->SetModuleName(yypvt[-0].string); PASM->m_tkCurrentCVOwner=1; } break;
case 94:
#line 386 "asmparse.y"
{ BinStr* pbs = new BinStr();
                                                                                  unsigned L = (unsigned)strlen(yypvt[-0].string);
                                                                                  memcpy((char*)(pbs->getBuff(L)),yypvt[-0].string,L);
                                                                                  PASM->EmitImport(pbs); delete pbs;} break;
case 95:
#line 393 "asmparse.y"
{ /*PASM->SetDataSection(); PASM->EmitDataLabel($7);*/
                                                                                  PASM->m_VTFList.PUSH(new VTFEntry((USHORT)yypvt[-4].int32, (USHORT)yypvt[-2].int32, yypvt[-0].string)); } break;
case 96:
#line 397 "asmparse.y"
{ yyval.int32 = 0; } break;
case 97:
#line 398 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_32BIT; } break;
case 98:
#line 399 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_64BIT; } break;
case 99:
#line 400 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_FROM_UNMANAGED; } break;
case 100:
#line 401 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_CALL_MOST_DERIVED; } break;
case 101:
#line 402 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN; } break;
case 102:
#line 405 "asmparse.y"
{ PASM->m_pVTable = yypvt[-1].binstr; } break;
case 103:
#line 408 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 104:
#line 412 "asmparse.y"
{ PASM->StartNameSpace(yypvt[-0].string); } break;
case 105:
#line 415 "asmparse.y"
{ newclass = TRUE; } break;
case 106:
#line 418 "asmparse.y"
{ if(yypvt[-0].typarlist) FixupConstraints();
                                                                                  PASM->StartClass(yypvt[-1].string, yypvt[-2].classAttr, yypvt[-0].typarlist);
                                                                                  TyParFixupList.RESET(false);
                                                                                  newclass = FALSE;
                                                                                } break;
case 107:
#line 424 "asmparse.y"
{ PASM->AddClass(); } break;
case 108:
#line 427 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) 0; } break;
case 109:
#line 428 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdVisibilityMask) | tdPublic); } break;
case 110:
#line 429 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdVisibilityMask) | tdNotPublic); } break;
case 111:
#line 430 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | 0x80000000 | tdSealed); } break;
case 112:
#line 431 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | 0x40000000); } break;
case 113:
#line 432 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdInterface | tdAbstract); } break;
case 114:
#line 433 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSealed); } break;
case 115:
#line 434 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdAbstract); } break;
case 116:
#line 435 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdAutoLayout); } break;
case 117:
#line 436 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdSequentialLayout); } break;
case 118:
#line 437 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdExplicitLayout); } break;
case 119:
#line 438 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdAnsiClass); } break;
case 120:
#line 439 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdUnicodeClass); } break;
case 121:
#line 440 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdAutoClass); } break;
case 122:
#line 441 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdImport); } break;
case 123:
#line 442 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSerializable); } break;
case 124:
#line 443 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdWindowsRuntime); } break;
case 125:
#line 444 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedPublic); } break;
case 126:
#line 445 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedPrivate); } break;
case 127:
#line 446 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamily); } break;
case 128:
#line 447 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedAssembly); } break;
case 129:
#line 448 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamANDAssem); } break;
case 130:
#line 449 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamORAssem); } break;
case 131:
#line 450 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdBeforeFieldInit); } break;
case 132:
#line 451 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSpecialName); } break;
case 133:
#line 452 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr); } break;
case 134:
#line 453 "asmparse.y"
{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].int32); } break;
case 136:
#line 457 "asmparse.y"
{ PASM->m_crExtends = yypvt[-0].token; } break;
case 141:
#line 468 "asmparse.y"
{ PASM->AddToImplList(yypvt[-0].token); } break;
case 142:
#line 469 "asmparse.y"
{ PASM->AddToImplList(yypvt[-0].token); } break;
case 143:
#line 473 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 144:
#line 474 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 145:
#line 477 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(yypvt[-0].token); } break;
case 146:
#line 478 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->appendInt32(yypvt[-0].token); } break;
case 147:
#line 481 "asmparse.y"
{ yyval.typarlist = NULL; PASM->m_TyParList = NULL;} break;
case 148:
#line 482 "asmparse.y"
{ yyval.typarlist = yypvt[-1].typarlist;   PASM->m_TyParList = yypvt[-1].typarlist;} break;
case 149:
#line 485 "asmparse.y"
{ yyval.int32 = gpCovariant; } break;
case 150:
#line 486 "asmparse.y"
{ yyval.int32 = gpContravariant; } break;
case 151:
#line 487 "asmparse.y"
{ yyval.int32 = gpReferenceTypeConstraint; } break;
case 152:
#line 488 "asmparse.y"
{ yyval.int32 = gpNotNullableValueTypeConstraint; } break;
case 153:
#line 489 "asmparse.y"
{ yyval.int32 = gpAcceptByRefLike; } break;
case 154:
#line 490 "asmparse.y"
{ yyval.int32 = gpDefaultConstructorConstraint; } break;
case 155:
#line 491 "asmparse.y"
{ yyval.int32 = (CorGenericParamAttr)yypvt[-1].int32; } break;
case 156:
#line 494 "asmparse.y"
{ yyval.int32 = 0; } break;
case 157:
#line 495 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | yypvt[-0].int32; } break;
case 158:
#line 498 "asmparse.y"
{yyval.typarlist = new TyParList(yypvt[-3].int32, yypvt[-2].binstr, yypvt[-1].string, yypvt[-0].typarlist);} break;
case 159:
#line 499 "asmparse.y"
{yyval.typarlist = new TyParList(yypvt[-2].int32, NULL, yypvt[-1].string, yypvt[-0].typarlist);} break;
case 160:
#line 502 "asmparse.y"
{ yyval.typarlist = NULL; } break;
case 161:
#line 503 "asmparse.y"
{ yyval.typarlist = yypvt[-0].typarlist; } break;
case 162:
#line 506 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 163:
#line 509 "asmparse.y"
{ yyval.int32= 0; } break;
case 164:
#line 510 "asmparse.y"
{ yyval.int32 = yypvt[-0].int32; } break;
case 165:
#line 513 "asmparse.y"
{ yyval.int32 = yypvt[-2].int32; } break;
case 166:
#line 517 "asmparse.y"
{ if(PASM->m_pCurMethod->m_ulLines[1] ==0)
                                                              {  PASM->m_pCurMethod->m_ulLines[1] = PASM->m_ulCurLine;
                                                                 PASM->m_pCurMethod->m_ulColumns[1]=PASM->m_ulCurColumn;}
                                                              PASM->EndMethod(); } break;
case 167:
#line 521 "asmparse.y"
{ PASM->EndClass(); } break;
case 168:
#line 522 "asmparse.y"
{ PASM->EndEvent(); } break;
case 169:
#line 523 "asmparse.y"
{ PASM->EndProp(); } break;
case 175:
#line 529 "asmparse.y"
{ PASM->m_pCurClass->m_ulSize = yypvt[-0].int32; } break;
case 176:
#line 530 "asmparse.y"
{ PASM->m_pCurClass->m_ulPack = yypvt[-0].int32; } break;
case 177:
#line 531 "asmparse.y"
{ PASMM->EndComType(); } break;
case 178:
#line 533 "asmparse.y"
{ BinStr *sig1 = parser->MakeSig(yypvt[-7].int32, yypvt[-6].binstr, yypvt[-1].binstr);
                                                                  BinStr *sig2 = new BinStr(); sig2->append(sig1);
                                                                  PASM->AddMethodImpl(yypvt[-11].token,yypvt[-9].string,sig1,yypvt[-5].token,yypvt[-3].string,sig2);
                                                                  PASM->ResetArgNameList();
                                                                } break;
case 179:
#line 539 "asmparse.y"
{ PASM->AddMethodImpl(yypvt[-17].token,yypvt[-15].string,
                                                                      (yypvt[-14].int32==0 ? parser->MakeSig(yypvt[-19].int32,yypvt[-18].binstr,yypvt[-12].binstr) :
                                                                      parser->MakeSig(yypvt[-19].int32| IMAGE_CEE_CS_CALLCONV_GENERIC,yypvt[-18].binstr,yypvt[-12].binstr,yypvt[-14].int32)),
                                                                      yypvt[-6].token,yypvt[-4].string,
                                                                      (yypvt[-3].int32==0 ? parser->MakeSig(yypvt[-8].int32,yypvt[-7].binstr,yypvt[-1].binstr) :
                                                                      parser->MakeSig(yypvt[-8].int32| IMAGE_CEE_CS_CALLCONV_GENERIC,yypvt[-7].binstr,yypvt[-1].binstr,yypvt[-3].int32)));
                                                                   PASM->ResetArgNameList();
                                                                 } break;
case 182:
#line 549 "asmparse.y"
{ if((yypvt[-1].int32 > 0) && (yypvt[-1].int32 <= (int)PASM->m_pCurClass->m_NumTyPars))
                                                                PASM->m_pCustomDescrList = PASM->m_pCurClass->m_TyPars[yypvt[-1].int32-1].CAList();
                                                              else
                                                                PASM->report->error("Type parameter index out of range\n");
                                                            } break;
case 183:
#line 554 "asmparse.y"
{ int n = PASM->m_pCurClass->FindTyPar(yypvt[-0].string);
                                                              if(n >= 0)
                                                                PASM->m_pCustomDescrList = PASM->m_pCurClass->m_TyPars[n].CAList();
                                                              else
                                                                PASM->report->error("Type parameter '%s' undefined\n",yypvt[-0].string);
                                                            } break;
case 184:
#line 560 "asmparse.y"
{ PASM->AddGenericParamConstraint(yypvt[-3].int32, 0, yypvt[-0].token); } break;
case 185:
#line 561 "asmparse.y"
{ PASM->AddGenericParamConstraint(0, yypvt[-2].string, yypvt[-0].token); } break;
case 186:
#line 562 "asmparse.y"
{ yypvt[-0].cad->tkInterfacePair = yypvt[-1].token;
                                                                        if(PASM->m_pCustomDescrList)
                                                                            PASM->m_pCustomDescrList->PUSH(yypvt[-0].cad);
                                                                      } break;
case 187:
#line 570 "asmparse.y"
{ yypvt[-3].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
                                                              PASM->AddField(yypvt[-2].string, yypvt[-3].binstr, yypvt[-4].fieldAttr, yypvt[-1].string, yypvt[-0].binstr, yypvt[-5].int32); } break;
case 188:
#line 574 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) 0; } break;
case 189:
#line 575 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdStatic); } break;
case 190:
#line 576 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPublic); } break;
case 191:
#line 577 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPrivate); } break;
case 192:
#line 578 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamily); } break;
case 193:
#line 579 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdInitOnly); } break;
case 194:
#line 580 "asmparse.y"
{ yyval.fieldAttr = yypvt[-1].fieldAttr; } break;
case 195:
#line 581 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdSpecialName); } break;
case 196:
#line 594 "asmparse.y"
{ PASM->m_pMarshal = yypvt[-1].binstr; } break;
case 197:
#line 595 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdAssembly); } break;
case 198:
#line 596 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamANDAssem); } break;
case 199:
#line 597 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamORAssem); } break;
case 200:
#line 598 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPrivateScope); } break;
case 201:
#line 599 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdLiteral); } break;
case 202:
#line 600 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdNotSerialized); } break;
case 203:
#line 601 "asmparse.y"
{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].int32); } break;
case 204:
#line 604 "asmparse.y"
{ yyval.string = 0; } break;
case 205:
#line 605 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 206:
#line 608 "asmparse.y"
{ yyval.binstr = NULL; } break;
case 207:
#line 609 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 208:
#line 612 "asmparse.y"
{ yyval.int32 = 0xFFFFFFFF; } break;
case 209:
#line 613 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32; } break;
case 210:
#line 618 "asmparse.y"
{ PASM->ResetArgNameList();
                                                               if (yypvt[-3].binstr == NULL)
                                                               {
                                                                 if((iCallConv)&&((yypvt[-8].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
                                                                 yyval.token = PASM->MakeMemberRef(yypvt[-6].token, yypvt[-4].string, parser->MakeSig(yypvt[-8].int32|iCallConv, yypvt[-7].binstr, yypvt[-1].binstr));
                                                               }
                                                               else
                                                               {
                                                                 mdToken mr;
                                                                 if((iCallConv)&&((yypvt[-8].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
                                                                 mr = PASM->MakeMemberRef(yypvt[-6].token, yypvt[-4].string,
                                                                   parser->MakeSig(yypvt[-8].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-7].binstr, yypvt[-1].binstr, corCountArgs(yypvt[-3].binstr)));
                                                                 yyval.token = PASM->MakeMethodSpec(mr,
                                                                   parser->MakeSig(IMAGE_CEE_CS_CALLCONV_INSTANTIATION, 0, yypvt[-3].binstr));
                                                               }
                                                             } break;
case 211:
#line 635 "asmparse.y"
{ PASM->ResetArgNameList();
                                                               if((iCallConv)&&((yypvt[-8].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
                                                               yyval.token = PASM->MakeMemberRef(yypvt[-6].token, yypvt[-4].string,
                                                                 parser->MakeSig(yypvt[-8].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-7].binstr, yypvt[-1].binstr, yypvt[-3].int32));
                                                             } break;
case 212:
#line 641 "asmparse.y"
{ PASM->ResetArgNameList();
                                                               if (yypvt[-3].binstr == NULL)
                                                               {
                                                                 if((iCallConv)&&((yypvt[-6].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
                                                                 yyval.token = PASM->MakeMemberRef(mdTokenNil, yypvt[-4].string, parser->MakeSig(yypvt[-6].int32|iCallConv, yypvt[-5].binstr, yypvt[-1].binstr));
                                                               }
                                                               else
                                                               {
                                                                 mdToken mr;
                                                                 if((iCallConv)&&((yypvt[-6].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
                                                                 mr = PASM->MakeMemberRef(mdTokenNil, yypvt[-4].string, parser->MakeSig(yypvt[-6].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-5].binstr, yypvt[-1].binstr, corCountArgs(yypvt[-3].binstr)));
                                                                 yyval.token = PASM->MakeMethodSpec(mr,
                                                                   parser->MakeSig(IMAGE_CEE_CS_CALLCONV_INSTANTIATION, 0, yypvt[-3].binstr));
                                                               }
                                                             } break;
case 213:
#line 657 "asmparse.y"
{ PASM->ResetArgNameList();
                                                               if((iCallConv)&&((yypvt[-6].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
                                                               yyval.token = PASM->MakeMemberRef(mdTokenNil, yypvt[-4].string, parser->MakeSig(yypvt[-6].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-5].binstr, yypvt[-1].binstr, yypvt[-3].int32));
                                                             } break;
case 214:
#line 661 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 215:
#line 662 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
case 216:
#line 663 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
case 217:
#line 666 "asmparse.y"
{ yyval.int32 = (yypvt[-0].int32 | IMAGE_CEE_CS_CALLCONV_HASTHIS); } break;
case 218:
#line 667 "asmparse.y"
{ yyval.int32 = (yypvt[-0].int32 | IMAGE_CEE_CS_CALLCONV_EXPLICITTHIS); } break;
case 219:
#line 668 "asmparse.y"
{ yyval.int32 = yypvt[-0].int32; } break;
case 220:
#line 669 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32; } break;
case 221:
#line 672 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_DEFAULT; } break;
case 222:
#line 673 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_DEFAULT; } break;
case 223:
#line 674 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_VARARG; } break;
case 224:
#line 675 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_C; } break;
case 225:
#line 676 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_STDCALL; } break;
case 226:
#line 677 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_THISCALL; } break;
case 227:
#line 678 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_FASTCALL; } break;
case 228:
#line 679 "asmparse.y"
{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_UNMANAGED; } break;
case 229:
#line 682 "asmparse.y"
{ yyval.token = yypvt[-1].int32; } break;
case 230:
#line 685 "asmparse.y"
{ yyval.token = yypvt[-0].token;
                                                               PASM->delArgNameList(PASM->m_firstArgName);
                                                               PASM->m_firstArgName = parser->m_ANSFirst.POP();
                                                               PASM->m_lastArgName = parser->m_ANSLast.POP();
                                                               PASM->SetMemberRefFixup(yypvt[-0].token,iOpcodeLen); } break;
case 231:
#line 691 "asmparse.y"
{ yypvt[-3].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
                                                               yyval.token = PASM->MakeMemberRef(yypvt[-2].token, yypvt[-0].string, yypvt[-3].binstr);
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 232:
#line 695 "asmparse.y"
{ yypvt[-1].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
                                                               yyval.token = PASM->MakeMemberRef(NULL, yypvt[-0].string, yypvt[-1].binstr);
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 233:
#line 698 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec;
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 234:
#line 700 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec;
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 235:
#line 702 "asmparse.y"
{ yyval.token = yypvt[-0].token;
                                                               PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
case 236:
#line 707 "asmparse.y"
{ PASM->ResetEvent(yypvt[-0].string, yypvt[-1].token, yypvt[-2].eventAttr); } break;
case 237:
#line 708 "asmparse.y"
{ PASM->ResetEvent(yypvt[-0].string, mdTypeRefNil, yypvt[-1].eventAttr); } break;
case 238:
#line 712 "asmparse.y"
{ yyval.eventAttr = (CorEventAttr) 0; } break;
case 239:
#line 713 "asmparse.y"
{ yyval.eventAttr = yypvt[-1].eventAttr; } break;
case 240:
#line 714 "asmparse.y"
{ yyval.eventAttr = (CorEventAttr) (yypvt[-1].eventAttr | evSpecialName); } break;
case 243:
#line 721 "asmparse.y"
{ PASM->SetEventMethod(0, yypvt[-0].token); } break;
case 244:
#line 722 "asmparse.y"
{ PASM->SetEventMethod(1, yypvt[-0].token); } break;
case 245:
#line 723 "asmparse.y"
{ PASM->SetEventMethod(2, yypvt[-0].token); } break;
case 246:
#line 724 "asmparse.y"
{ PASM->SetEventMethod(3, yypvt[-0].token); } break;
case 251:
#line 733 "asmparse.y"
{ PASM->ResetProp(yypvt[-4].string,
                                                              parser->MakeSig((IMAGE_CEE_CS_CALLCONV_PROPERTY |
                                                              (yypvt[-6].int32 & IMAGE_CEE_CS_CALLCONV_HASTHIS)),yypvt[-5].binstr,yypvt[-2].binstr), yypvt[-7].propAttr, yypvt[-0].binstr);} break;
case 252:
#line 738 "asmparse.y"
{ yyval.propAttr = (CorPropertyAttr) 0; } break;
case 253:
#line 739 "asmparse.y"
{ yyval.propAttr = yypvt[-1].propAttr; } break;
case 254:
#line 740 "asmparse.y"
{ yyval.propAttr = (CorPropertyAttr) (yypvt[-1].propAttr | prSpecialName); } break;
case 257:
#line 748 "asmparse.y"
{ PASM->SetPropMethod(0, yypvt[-0].token); } break;
case 258:
#line 749 "asmparse.y"
{ PASM->SetPropMethod(1, yypvt[-0].token); } break;
case 259:
#line 750 "asmparse.y"
{ PASM->SetPropMethod(2, yypvt[-0].token); } break;
case 264:
#line 758 "asmparse.y"
{ PASM->ResetForNextMethod();
                                                              uMethodBeginLine = PASM->m_ulCurLine;
                                                              uMethodBeginColumn=PASM->m_ulCurColumn;
                                                            } break;
case 265:
#line 764 "asmparse.y"
{ yyval.binstr = NULL; } break;
case 266:
#line 765 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 267:
#line 768 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 268:
#line 769 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 269:
#line 772 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 270:
#line 776 "asmparse.y"
{ BinStr* sig;
                                                              if (yypvt[-5].typarlist == NULL) sig = parser->MakeSig(yypvt[-10].int32, yypvt[-8].binstr, yypvt[-3].binstr);
                                                              else {
                                                               FixupTyPars(yypvt[-8].binstr);
                                                               sig = parser->MakeSig(yypvt[-10].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC, yypvt[-8].binstr, yypvt[-3].binstr, yypvt[-5].typarlist->Count());
                                                               FixupConstraints();
                                                              }
                                                              PASM->StartMethod(yypvt[-6].string, sig, yypvt[-11].methAttr, yypvt[-7].binstr, yypvt[-9].int32, yypvt[-5].typarlist);
                                                              TyParFixupList.RESET(false);
                                                              PASM->SetImplAttr((USHORT)yypvt[-1].implAttr);
                                                              PASM->m_pCurMethod->m_ulLines[0] = uMethodBeginLine;
                                                              PASM->m_pCurMethod->m_ulColumns[0]=uMethodBeginColumn;
                                                            } break;
case 271:
#line 791 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) 0; } break;
case 272:
#line 792 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdStatic); } break;
case 273:
#line 793 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPublic); } break;
case 274:
#line 794 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPrivate); } break;
case 275:
#line 795 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamily); } break;
case 276:
#line 796 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdFinal); } break;
case 277:
#line 797 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdSpecialName); } break;
case 278:
#line 798 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdVirtual); } break;
case 279:
#line 799 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdCheckAccessOnOverride); } break;
case 280:
#line 800 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdAbstract); } break;
case 281:
#line 801 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdAssem); } break;
case 282:
#line 802 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamANDAssem); } break;
case 283:
#line 803 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamORAssem); } break;
case 284:
#line 804 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPrivateScope); } break;
case 285:
#line 805 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdHideBySig); } break;
case 286:
#line 806 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdNewSlot); } break;
case 287:
#line 807 "asmparse.y"
{ yyval.methAttr = yypvt[-1].methAttr; } break;
case 288:
#line 808 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdUnmanagedExport); } break;
case 289:
#line 809 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdRequireSecObject); } break;
case 290:
#line 810 "asmparse.y"
{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].int32); } break;
case 291:
#line 812 "asmparse.y"
{ PASM->SetPinvoke(yypvt[-4].binstr,0,yypvt[-2].binstr,yypvt[-1].pinvAttr);
                                                              yyval.methAttr = (CorMethodAttr) (yypvt[-7].methAttr | mdPinvokeImpl); } break;
case 292:
#line 815 "asmparse.y"
{ PASM->SetPinvoke(yypvt[-2].binstr,0,NULL,yypvt[-1].pinvAttr);
                                                              yyval.methAttr = (CorMethodAttr) (yypvt[-5].methAttr | mdPinvokeImpl); } break;
case 293:
#line 818 "asmparse.y"
{ PASM->SetPinvoke(new BinStr(),0,NULL,yypvt[-1].pinvAttr);
                                                              yyval.methAttr = (CorMethodAttr) (yypvt[-4].methAttr | mdPinvokeImpl); } break;
case 294:
#line 822 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) 0; } break;
case 295:
#line 823 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmNoMangle); } break;
case 296:
#line 824 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetAnsi); } break;
case 297:
#line 825 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetUnicode); } break;
case 298:
#line 826 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetAuto); } break;
case 299:
#line 827 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmSupportsLastError); } break;
case 300:
#line 828 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvWinapi); } break;
case 301:
#line 829 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvCdecl); } break;
case 302:
#line 830 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvStdcall); } break;
case 303:
#line 831 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvThiscall); } break;
case 304:
#line 832 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvFastcall); } break;
case 305:
#line 833 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmBestFitEnabled); } break;
case 306:
#line 834 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmBestFitDisabled); } break;
case 307:
#line 835 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmThrowOnUnmappableCharEnabled); } break;
case 308:
#line 836 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmThrowOnUnmappableCharDisabled); } break;
case 309:
#line 837 "asmparse.y"
{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].int32); } break;
case 310:
#line 840 "asmparse.y"
{ yyval.string = newString(COR_CTOR_METHOD_NAME); } break;
case 311:
#line 841 "asmparse.y"
{ yyval.string = newString(COR_CCTOR_METHOD_NAME); } break;
case 312:
#line 842 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 313:
#line 845 "asmparse.y"
{ yyval.int32 = 0; } break;
case 314:
#line 846 "asmparse.y"
{ yyval.int32 = yypvt[-3].int32 | pdIn; } break;
case 315:
#line 847 "asmparse.y"
{ yyval.int32 = yypvt[-3].int32 | pdOut; } break;
case 316:
#line 848 "asmparse.y"
{ yyval.int32 = yypvt[-3].int32 | pdOptional; } break;
case 317:
#line 849 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 + 1; } break;
case 318:
#line 852 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (miIL | miManaged); } break;
case 319:
#line 853 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miNative); } break;
case 320:
#line 854 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miIL); } break;
case 321:
#line 855 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miOPTIL); } break;
case 322:
#line 856 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFFB) | miManaged); } break;
case 323:
#line 857 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFFB) | miUnmanaged); } break;
case 324:
#line 858 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miForwardRef); } break;
case 325:
#line 859 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miPreserveSig); } break;
case 326:
#line 860 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miRuntime); } break;
case 327:
#line 861 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miInternalCall); } break;
case 328:
#line 862 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miSynchronized); } break;
case 329:
#line 863 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miNoInlining); } break;
case 330:
#line 864 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miAggressiveInlining); } break;
case 331:
#line 865 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miNoOptimization); } break;
case 332:
#line 866 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miAggressiveOptimization); } break;
case 333:
#line 867 "asmparse.y"
{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].int32); } break;
case 334:
#line 870 "asmparse.y"
{ PASM->delArgNameList(PASM->m_firstArgName); PASM->m_firstArgName = NULL;PASM->m_lastArgName = NULL;
                                                            } break;
case 337:
#line 878 "asmparse.y"
{ PASM->EmitByte(yypvt[-0].int32); } break;
case 338:
#line 879 "asmparse.y"
{ delete PASM->m_SEHD; PASM->m_SEHD = PASM->m_SEHDstack.POP(); } break;
case 339:
#line 880 "asmparse.y"
{ PASM->EmitMaxStack(yypvt[-0].int32); } break;
case 340:
#line 881 "asmparse.y"
{ PASM->EmitLocals(parser->MakeSig(IMAGE_CEE_CS_CALLCONV_LOCAL_SIG, 0, yypvt[-1].binstr));
                                                            } break;
case 341:
#line 883 "asmparse.y"
{ PASM->EmitZeroInit();
                                                              PASM->EmitLocals(parser->MakeSig(IMAGE_CEE_CS_CALLCONV_LOCAL_SIG, 0, yypvt[-1].binstr));
                                                            } break;
case 342:
#line 886 "asmparse.y"
{ PASM->EmitEntryPoint(); } break;
case 343:
#line 887 "asmparse.y"
{ PASM->EmitZeroInit(); } break;
case 346:
#line 890 "asmparse.y"
{ PASM->AddLabel(PASM->m_CurPC,yypvt[-1].string); /*PASM->EmitLabel($1);*/ } break;
case 352:
#line 896 "asmparse.y"
{ if(PASM->m_pCurMethod->m_dwExportOrdinal == 0xFFFFFFFF)
                                                              {
                                                                PASM->m_pCurMethod->m_dwExportOrdinal = yypvt[-1].int32;
                                                                PASM->m_pCurMethod->m_szExportAlias = NULL;
                                                                if(PASM->m_pCurMethod->m_wVTEntry == 0) PASM->m_pCurMethod->m_wVTEntry = 1;
                                                                if(PASM->m_pCurMethod->m_wVTSlot  == 0) PASM->m_pCurMethod->m_wVTSlot = (WORD)(yypvt[-1].int32 + 0x8000);
                                                              }
                                                              else
                                                                PASM->report->warn("Duplicate .export directive, ignored\n");
                                                            } break;
case 353:
#line 906 "asmparse.y"
{ if(PASM->m_pCurMethod->m_dwExportOrdinal == 0xFFFFFFFF)
                                                              {
                                                                PASM->m_pCurMethod->m_dwExportOrdinal = yypvt[-3].int32;
                                                                PASM->m_pCurMethod->m_szExportAlias = yypvt[-0].string;
                                                                if(PASM->m_pCurMethod->m_wVTEntry == 0) PASM->m_pCurMethod->m_wVTEntry = 1;
                                                                if(PASM->m_pCurMethod->m_wVTSlot  == 0) PASM->m_pCurMethod->m_wVTSlot = (WORD)(yypvt[-3].int32 + 0x8000);
                                                              }
                                                              else
                                                                PASM->report->warn("Duplicate .export directive, ignored\n");
                                                            } break;
case 354:
#line 916 "asmparse.y"
{ PASM->m_pCurMethod->m_wVTEntry = (WORD)yypvt[-2].int32;
                                                              PASM->m_pCurMethod->m_wVTSlot = (WORD)yypvt[-0].int32; } break;
case 355:
#line 919 "asmparse.y"
{ PASM->AddMethodImpl(yypvt[-2].token,yypvt[-0].string,NULL,NULL,NULL,NULL); } break;
case 356:
#line 922 "asmparse.y"
{ PASM->AddMethodImpl(yypvt[-6].token,yypvt[-4].string,
                                                              (yypvt[-3].int32==0 ? parser->MakeSig(yypvt[-8].int32,yypvt[-7].binstr,yypvt[-1].binstr) :
                                                              parser->MakeSig(yypvt[-8].int32| IMAGE_CEE_CS_CALLCONV_GENERIC,yypvt[-7].binstr,yypvt[-1].binstr,yypvt[-3].int32))
                                                              ,NULL,NULL,NULL);
                                                              PASM->ResetArgNameList();
                                                            } break;
case 358:
#line 929 "asmparse.y"
{ if((yypvt[-1].int32 > 0) && (yypvt[-1].int32 <= (int)PASM->m_pCurMethod->m_NumTyPars))
                                                                PASM->m_pCustomDescrList = PASM->m_pCurMethod->m_TyPars[yypvt[-1].int32-1].CAList();
                                                              else
                                                                PASM->report->error("Type parameter index out of range\n");
                                                            } break;
case 359:
#line 934 "asmparse.y"
{ int n = PASM->m_pCurMethod->FindTyPar(yypvt[-0].string);
                                                              if(n >= 0)
                                                                PASM->m_pCustomDescrList = PASM->m_pCurMethod->m_TyPars[n].CAList();
                                                              else
                                                                PASM->report->error("Type parameter '%s' undefined\n",yypvt[-0].string);
                                                            } break;
case 360:
#line 940 "asmparse.y"
{ PASM->m_pCurMethod->AddGenericParamConstraint(yypvt[-3].int32, 0, yypvt[-0].token); } break;
case 361:
#line 941 "asmparse.y"
{ PASM->m_pCurMethod->AddGenericParamConstraint(0, yypvt[-2].string, yypvt[-0].token); } break;
case 362:
#line 944 "asmparse.y"
{ if( yypvt[-2].int32 ) {
                                                                ARG_NAME_LIST* pAN=PASM->findArg(PASM->m_pCurMethod->m_firstArgName, yypvt[-2].int32 - 1);
                                                                if(pAN)
                                                                {
                                                                    PASM->m_pCustomDescrList = &(pAN->CustDList);
                                                                    pAN->pValue = yypvt[-0].binstr;
                                                                }
                                                                else
                                                                {
                                                                    PASM->m_pCustomDescrList = NULL;
                                                                    if(yypvt[-0].binstr) delete yypvt[-0].binstr;
                                                                }
                                                              } else {
                                                                PASM->m_pCustomDescrList = &(PASM->m_pCurMethod->m_RetCustDList);
                                                                PASM->m_pCurMethod->m_pRetValue = yypvt[-0].binstr;
                                                              }
                                                              PASM->m_tkCurrentCVOwner = 0;
                                                            } break;
case 363:
#line 964 "asmparse.y"
{ PASM->m_pCurMethod->CloseScope(); } break;
case 364:
#line 967 "asmparse.y"
{ PASM->m_pCurMethod->OpenScope(); } break;
case 368:
#line 978 "asmparse.y"
{ PASM->m_SEHD->tryTo = PASM->m_CurPC; } break;
case 369:
#line 979 "asmparse.y"
{ PASM->SetTryLabels(yypvt[-2].string, yypvt[-0].string); } break;
case 370:
#line 980 "asmparse.y"
{ if(PASM->m_SEHD) {PASM->m_SEHD->tryFrom = yypvt[-2].int32;
                                                              PASM->m_SEHD->tryTo = yypvt[-0].int32;} } break;
case 371:
#line 984 "asmparse.y"
{ PASM->NewSEHDescriptor();
                                                              PASM->m_SEHD->tryFrom = PASM->m_CurPC; } break;
case 372:
#line 989 "asmparse.y"
{ PASM->EmitTry(); } break;
case 373:
#line 990 "asmparse.y"
{ PASM->EmitTry(); } break;
case 374:
#line 991 "asmparse.y"
{ PASM->EmitTry(); } break;
case 375:
#line 992 "asmparse.y"
{ PASM->EmitTry(); } break;
case 376:
#line 996 "asmparse.y"
{ PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 377:
#line 997 "asmparse.y"
{ PASM->SetFilterLabel(yypvt[-0].string);
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 378:
#line 999 "asmparse.y"
{ PASM->m_SEHD->sehFilter = yypvt[-0].int32;
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 379:
#line 1003 "asmparse.y"
{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FILTER;
                                                               PASM->m_SEHD->sehFilter = PASM->m_CurPC; } break;
case 380:
#line 1007 "asmparse.y"
{  PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_NONE;
                                                               PASM->SetCatchClass(yypvt[-0].token);
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 381:
#line 1012 "asmparse.y"
{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FINALLY;
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 382:
#line 1016 "asmparse.y"
{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FAULT;
                                                               PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
case 383:
#line 1020 "asmparse.y"
{ PASM->m_SEHD->sehHandlerTo = PASM->m_CurPC; } break;
case 384:
#line 1021 "asmparse.y"
{ PASM->SetHandlerLabels(yypvt[-2].string, yypvt[-0].string); } break;
case 385:
#line 1022 "asmparse.y"
{ PASM->m_SEHD->sehHandler = yypvt[-2].int32;
                                                               PASM->m_SEHD->sehHandlerTo = yypvt[-0].int32; } break;
case 387:
#line 1030 "asmparse.y"
{ PASM->EmitDataLabel(yypvt[-1].string); } break;
case 389:
#line 1034 "asmparse.y"
{ PASM->SetDataSection(); } break;
case 390:
#line 1035 "asmparse.y"
{ PASM->SetTLSSection(); } break;
case 391:
#line 1036 "asmparse.y"
{ PASM->SetILSection(); } break;
case 396:
#line 1047 "asmparse.y"
{ yyval.int32 = 1; } break;
case 397:
#line 1048 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32;
                                                               if(yypvt[-1].int32 <= 0) { PASM->report->error("Illegal item count: %d\n",yypvt[-1].int32);
                                                                  if(!PASM->OnErrGo) yyval.int32 = 1; }} break;
case 398:
#line 1053 "asmparse.y"
{ PASM->EmitDataString(yypvt[-1].binstr); } break;
case 399:
#line 1054 "asmparse.y"
{ PASM->EmitDD(yypvt[-1].string); } break;
case 400:
#line 1055 "asmparse.y"
{ PASM->EmitData(yypvt[-1].binstr->ptr(),yypvt[-1].binstr->length()); } break;
case 401:
#line 1057 "asmparse.y"
{ float f = (float) (*yypvt[-2].float64); float* p = new (nothrow) float[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int i=0; i < yypvt[-0].int32; i++) p[i] = f;
                                                                 PASM->EmitData(p, sizeof(float)*yypvt[-0].int32); delete yypvt[-2].float64; delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(float)*yypvt[-0].int32); } break;
case 402:
#line 1064 "asmparse.y"
{ double* p = new (nothrow) double[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int i=0; i<yypvt[-0].int32; i++) p[i] = *(yypvt[-2].float64);
                                                                 PASM->EmitData(p, sizeof(double)*yypvt[-0].int32); delete yypvt[-2].float64; delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(double)*yypvt[-0].int32); } break;
case 403:
#line 1071 "asmparse.y"
{ __int64* p = new (nothrow) __int64[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int i=0; i<yypvt[-0].int32; i++) p[i] = *(yypvt[-2].int64);
                                                                 PASM->EmitData(p, sizeof(__int64)*yypvt[-0].int32); delete yypvt[-2].int64; delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(__int64)*yypvt[-0].int32); } break;
case 404:
#line 1078 "asmparse.y"
{ __int32* p = new (nothrow) __int32[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int i=0; i<yypvt[-0].int32; i++) p[i] = yypvt[-2].int32;
                                                                 PASM->EmitData(p, sizeof(__int32)*yypvt[-0].int32); delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(__int32)*yypvt[-0].int32); } break;
case 405:
#line 1085 "asmparse.y"
{ __int16 i = (__int16) yypvt[-2].int32; FAIL_UNLESS(i == yypvt[-2].int32, ("Value %d too big\n", yypvt[-2].int32));
                                                               __int16* p = new (nothrow) __int16[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int j=0; j<yypvt[-0].int32; j++) p[j] = i;
                                                                 PASM->EmitData(p, sizeof(__int16)*yypvt[-0].int32); delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(__int16)*yypvt[-0].int32); } break;
case 406:
#line 1093 "asmparse.y"
{ __int8 i = (__int8) yypvt[-2].int32; FAIL_UNLESS(i == yypvt[-2].int32, ("Value %d too big\n", yypvt[-2].int32));
                                                               __int8* p = new (nothrow) __int8[yypvt[-0].int32];
                                                               if(p != NULL) {
                                                                 for(int j=0; j<yypvt[-0].int32; j++) p[j] = i;
                                                                 PASM->EmitData(p, sizeof(__int8)*yypvt[-0].int32); delete [] p;
                                                               } else PASM->report->error("Out of memory emitting data block %d bytes\n",
                                                                     sizeof(__int8)*yypvt[-0].int32); } break;
case 407:
#line 1100 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(float)*yypvt[-0].int32); } break;
case 408:
#line 1101 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(double)*yypvt[-0].int32); } break;
case 409:
#line 1102 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(__int64)*yypvt[-0].int32); } break;
case 410:
#line 1103 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(__int32)*yypvt[-0].int32); } break;
case 411:
#line 1104 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(__int16)*yypvt[-0].int32); } break;
case 412:
#line 1105 "asmparse.y"
{ PASM->EmitData(NULL, sizeof(__int8)*yypvt[-0].int32); } break;
case 413:
#line 1109 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R4);
                                                               float f = (float)(*yypvt[-1].float64);
                                                               yyval.binstr->appendInt32(*((__int32*)&f)); delete yypvt[-1].float64; } break;
case 414:
#line 1112 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R8);
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].float64); delete yypvt[-1].float64; } break;
case 415:
#line 1114 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R4);
                                                               yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 416:
#line 1116 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R8);
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
case 417:
#line 1118 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I8);
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
case 418:
#line 1120 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I4);
                                                               yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 419:
#line 1122 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I2);
                                                               yyval.binstr->appendInt16(yypvt[-1].int32); } break;
case 420:
#line 1124 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I1);
                                                               yyval.binstr->appendInt8(yypvt[-1].int32); } break;
case 421:
#line 1126 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8);
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
case 422:
#line 1128 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4);
                                                               yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 423:
#line 1130 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2);
                                                               yyval.binstr->appendInt16(yypvt[-1].int32); } break;
case 424:
#line 1132 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1);
                                                               yyval.binstr->appendInt8(yypvt[-1].int32); } break;
case 425:
#line 1134 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8);
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
case 426:
#line 1136 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4);
                                                               yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 427:
#line 1138 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2);
                                                               yyval.binstr->appendInt16(yypvt[-1].int32); } break;
case 428:
#line 1140 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1);
                                                               yyval.binstr->appendInt8(yypvt[-1].int32); } break;
case 429:
#line 1142 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CHAR);
                                                               yyval.binstr->appendInt16(yypvt[-1].int32); } break;
case 430:
#line 1144 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_BOOLEAN);
                                                               yyval.binstr->appendInt8(yypvt[-1].int32);} break;
case 431:
#line 1146 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING);
                                                               yyval.binstr->append(yypvt[-1].binstr); delete yypvt[-1].binstr;} break;
case 432:
#line 1150 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 433:
#line 1153 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 434:
#line 1154 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 435:
#line 1157 "asmparse.y"
{ __int8 i = (__int8) yypvt[-0].int32; yyval.binstr = new BinStr(); yyval.binstr->appendInt8(i); } break;
case 436:
#line 1158 "asmparse.y"
{ __int8 i = (__int8) yypvt[-0].int32; yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(i); } break;
case 437:
#line 1162 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 438:
#line 1163 "asmparse.y"
{ yyval.binstr = BinStrToUnicode(yypvt[-0].binstr,true); yyval.binstr->insertInt8(ELEMENT_TYPE_STRING);} break;
case 439:
#line 1164 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CLASS);
                                                               yyval.binstr->appendInt32(0); } break;
case 440:
#line 1169 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 441:
#line 1170 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); yyval.binstr->appendInt8(0xFF); } break;
case 442:
#line 1171 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING);
                                                               AppendStringWithLength(yyval.binstr,yypvt[-1].string); delete [] yypvt[-1].string;} break;
case 443:
#line 1173 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE);
                                                               AppendStringWithLength(yyval.binstr,yypvt[-1].string); delete [] yypvt[-1].string;} break;
case 444:
#line 1175 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE);
                                                               AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-1].token));} break;
case 445:
#line 1177 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE); yyval.binstr->appendInt8(0xFF); } break;
case 446:
#line 1178 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(SERIALIZATION_TYPE_TAGGED_OBJECT);} break;
case 447:
#line 1180 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_R4);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 448:
#line 1184 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_R8);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 449:
#line 1188 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_I8);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 450:
#line 1192 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_I4);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 451:
#line 1196 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_I2);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 452:
#line 1200 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_I1);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 453:
#line 1204 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U8);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 454:
#line 1208 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U4);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 455:
#line 1212 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U2);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 456:
#line 1216 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U1);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 457:
#line 1220 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U8);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 458:
#line 1224 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U4);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 459:
#line 1228 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U2);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 460:
#line 1232 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_U1);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 461:
#line 1236 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_CHAR);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 462:
#line 1240 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_BOOLEAN);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 463:
#line 1244 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_STRING);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 464:
#line 1248 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(SERIALIZATION_TYPE_TYPE);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 465:
#line 1252 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
                                                               yyval.binstr->insertInt8(SERIALIZATION_TYPE_TAGGED_OBJECT);
                                                               yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 466:
#line 1258 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 467:
#line 1259 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               float f = (float) (*yypvt[-0].float64); yyval.binstr->appendInt32(*((__int32*)&f)); delete yypvt[-0].float64; } break;
case 468:
#line 1261 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               yyval.binstr->appendInt32(yypvt[-0].int32); } break;
case 469:
#line 1265 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 470:
#line 1266 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-0].float64); delete yypvt[-0].float64; } break;
case 471:
#line 1268 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-0].int64); delete yypvt[-0].int64; } break;
case 472:
#line 1272 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 473:
#line 1273 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               yyval.binstr->appendInt64((__int64 *)yypvt[-0].int64); delete yypvt[-0].int64; } break;
case 474:
#line 1277 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 475:
#line 1278 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt32(yypvt[-0].int32);} break;
case 476:
#line 1281 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 477:
#line 1282 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt16(yypvt[-0].int32);} break;
case 478:
#line 1285 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 479:
#line 1286 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(yypvt[-0].int32); } break;
case 480:
#line 1289 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 481:
#line 1290 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               yyval.binstr->appendInt8(yypvt[-0].int32);} break;
case 482:
#line 1294 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 483:
#line 1295 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(0xFF); } break;
case 484:
#line 1296 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               AppendStringWithLength(yyval.binstr,yypvt[-0].string); delete [] yypvt[-0].string;} break;
case 485:
#line 1300 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 486:
#line 1301 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(0xFF); } break;
case 487:
#line 1302 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr;
                                                               AppendStringWithLength(yyval.binstr,yypvt[-0].string); delete [] yypvt[-0].string;} break;
case 488:
#line 1304 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr;
                                                               AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-0].token));} break;
case 489:
#line 1308 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 490:
#line 1309 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 491:
#line 1313 "asmparse.y"
{ parser->m_ANSFirst.PUSH(PASM->m_firstArgName);
                                                               parser->m_ANSLast.PUSH(PASM->m_lastArgName);
                                                               PASM->m_firstArgName = NULL;
                                                               PASM->m_lastArgName = NULL; } break;
case 492:
#line 1319 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 493:
#line 1322 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 494:
#line 1325 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 495:
#line 1328 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 496:
#line 1331 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 497:
#line 1334 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 498:
#line 1337 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode);
                                                               if((!PASM->OnErrGo)&&
                                                               ((yypvt[-0].opcode == CEE_NEWOBJ)||
                                                                (yypvt[-0].opcode == CEE_CALLVIRT)))
                                                                  iCallConv = IMAGE_CEE_CS_CALLCONV_HASTHIS;
                                                             } break;
case 499:
#line 1345 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 500:
#line 1348 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 501:
#line 1351 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 502:
#line 1354 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 503:
#line 1357 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); iOpcodeLen = PASM->OpcodeLen(yyval.instr); } break;
case 504:
#line 1360 "asmparse.y"
{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
case 505:
#line 1363 "asmparse.y"
{ yyval.instr = yypvt[-1].instr; bParsingByteArray = TRUE; } break;
case 506:
#line 1367 "asmparse.y"
{ PASM->EmitOpcode(yypvt[-0].instr); } break;
case 507:
#line 1368 "asmparse.y"
{ PASM->EmitInstrVar(yypvt[-1].instr, yypvt[-0].int32); } break;
case 508:
#line 1369 "asmparse.y"
{ PASM->EmitInstrVarByName(yypvt[-1].instr, yypvt[-0].string); } break;
case 509:
#line 1370 "asmparse.y"
{ PASM->EmitInstrI(yypvt[-1].instr, yypvt[-0].int32); } break;
case 510:
#line 1371 "asmparse.y"
{ PASM->EmitInstrI8(yypvt[-1].instr, yypvt[-0].int64); } break;
case 511:
#line 1372 "asmparse.y"
{ PASM->EmitInstrR(yypvt[-1].instr, yypvt[-0].float64); delete (yypvt[-0].float64);} break;
case 512:
#line 1373 "asmparse.y"
{ double f = (double) (*yypvt[-0].int64); PASM->EmitInstrR(yypvt[-1].instr, &f); } break;
case 513:
#line 1374 "asmparse.y"
{ unsigned L = yypvt[-1].binstr->length();
                                                               FAIL_UNLESS(L >= sizeof(float), ("%d hexbytes, must be at least %d\n",
                                                                           L,sizeof(float)));
                                                               if(L < sizeof(float)) {YYERROR; }
                                                               else {
                                                                   double f = (L >= sizeof(double)) ? *((double *)(yypvt[-1].binstr->ptr()))
                                                                                    : (double)(*(float *)(yypvt[-1].binstr->ptr()));
                                                                   PASM->EmitInstrR(yypvt[-2].instr,&f); }
                                                               delete yypvt[-1].binstr; } break;
case 514:
#line 1383 "asmparse.y"
{ PASM->EmitInstrBrOffset(yypvt[-1].instr, yypvt[-0].int32); } break;
case 515:
#line 1384 "asmparse.y"
{ PASM->EmitInstrBrTarget(yypvt[-1].instr, yypvt[-0].string); } break;
case 516:
#line 1386 "asmparse.y"
{ PASM->SetMemberRefFixup(yypvt[-0].token,PASM->OpcodeLen(yypvt[-1].instr));
                                                               PASM->EmitInstrI(yypvt[-1].instr,yypvt[-0].token);
                                                               PASM->m_tkCurrentCVOwner = yypvt[-0].token;
                                                               PASM->m_pCustomDescrList = NULL;
                                                               iCallConv = 0;
                                                             } break;
case 517:
#line 1393 "asmparse.y"
{ yypvt[-3].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
                                                               mdToken mr = PASM->MakeMemberRef(yypvt[-2].token, yypvt[-0].string, yypvt[-3].binstr);
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-4].instr));
                                                               PASM->EmitInstrI(yypvt[-4].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 518:
#line 1401 "asmparse.y"
{ yypvt[-1].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
                                                               mdToken mr = PASM->MakeMemberRef(mdTokenNil, yypvt[-0].string, yypvt[-1].binstr);
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-2].instr));
                                                               PASM->EmitInstrI(yypvt[-2].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 519:
#line 1408 "asmparse.y"
{ mdToken mr = yypvt[-0].token;
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-1].instr));
                                                               PASM->EmitInstrI(yypvt[-1].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 520:
#line 1414 "asmparse.y"
{ mdToken mr = yypvt[-0].tdd->m_tkTypeSpec;
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-1].instr));
                                                               PASM->EmitInstrI(yypvt[-1].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 521:
#line 1420 "asmparse.y"
{ mdToken mr = yypvt[-0].tdd->m_tkTypeSpec;
                                                               PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-1].instr));
                                                               PASM->EmitInstrI(yypvt[-1].instr,mr);
                                                               PASM->m_tkCurrentCVOwner = mr;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 522:
#line 1426 "asmparse.y"
{ PASM->EmitInstrI(yypvt[-1].instr, yypvt[-0].token);
                                                               PASM->m_tkCurrentCVOwner = yypvt[-0].token;
                                                               PASM->m_pCustomDescrList = NULL;
                                                             } break;
case 523:
#line 1430 "asmparse.y"
{ PASM->EmitInstrStringLiteral(yypvt[-1].instr, yypvt[-0].binstr,TRUE); } break;
case 524:
#line 1432 "asmparse.y"
{ PASM->EmitInstrStringLiteral(yypvt[-4].instr, yypvt[-1].binstr,FALSE); } break;
case 525:
#line 1434 "asmparse.y"
{ PASM->EmitInstrStringLiteral(yypvt[-3].instr, yypvt[-1].binstr,FALSE,TRUE); } break;
case 526:
#line 1436 "asmparse.y"
{ PASM->EmitInstrSig(yypvt[-5].instr, parser->MakeSig(yypvt[-4].int32, yypvt[-3].binstr, yypvt[-1].binstr));
                                                               PASM->ResetArgNameList();
                                                             } break;
case 527:
#line 1440 "asmparse.y"
{ PASM->EmitInstrI(yypvt[-1].instr,yypvt[-0].token);
                                                               PASM->m_tkCurrentCVOwner = yypvt[-0].token;
                                                               PASM->m_pCustomDescrList = NULL;
                                                               iOpcodeLen = 0;
                                                             } break;
case 528:
#line 1445 "asmparse.y"
{ PASM->EmitInstrSwitch(yypvt[-3].instr, yypvt[-1].labels); } break;
case 529:
#line 1448 "asmparse.y"
{ yyval.labels = 0; } break;
case 530:
#line 1449 "asmparse.y"
{ yyval.labels = new Labels(yypvt[-2].string, yypvt[-0].labels, TRUE); } break;
case 531:
#line 1450 "asmparse.y"
{ yyval.labels = new Labels((char *)(UINT_PTR)yypvt[-2].int32, yypvt[-0].labels, FALSE); } break;
case 532:
#line 1451 "asmparse.y"
{ yyval.labels = new Labels(yypvt[-0].string, NULL, TRUE); } break;
case 533:
#line 1452 "asmparse.y"
{ yyval.labels = new Labels((char *)(UINT_PTR)yypvt[-0].int32, NULL, FALSE); } break;
case 534:
#line 1456 "asmparse.y"
{ yyval.binstr = NULL; } break;
case 535:
#line 1457 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; } break;
case 536:
#line 1460 "asmparse.y"
{ yyval.binstr = NULL; } break;
case 537:
#line 1461 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 538:
#line 1464 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 539:
#line 1465 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 540:
#line 1469 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 541:
#line 1470 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr;} break;
case 542:
#line 1473 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 543:
#line 1474 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 544:
#line 1477 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_SENTINEL); } break;
case 545:
#line 1478 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-1].binstr); PASM->addArgName(NULL, yypvt[-1].binstr, yypvt[-0].binstr, yypvt[-2].int32); } break;
case 546:
#line 1479 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-2].binstr); PASM->addArgName(yypvt[-0].string, yypvt[-2].binstr, yypvt[-1].binstr, yypvt[-3].int32);} break;
case 547:
#line 1483 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(PASM->GetAsmRef(yypvt[-2].string), yypvt[-0].string, NULL); delete[] yypvt[-2].string;} break;
case 548:
#line 1484 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(yypvt[-2].token, yypvt[-0].string, NULL); } break;
case 549:
#line 1485 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(mdTokenNil, yypvt[-0].string, NULL); } break;
case 550:
#line 1486 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(PASM->GetModRef(yypvt[-2].string),yypvt[-0].string, NULL); delete[] yypvt[-2].string;} break;
case 551:
#line 1487 "asmparse.y"
{ yyval.token = PASM->ResolveClassRef(1,yypvt[-0].string,NULL); } break;
case 552:
#line 1488 "asmparse.y"
{ yyval.token = yypvt[-0].token; } break;
case 553:
#line 1489 "asmparse.y"
{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
case 554:
#line 1490 "asmparse.y"
{ if(PASM->m_pCurClass != NULL) yyval.token = PASM->m_pCurClass->m_cl;
                                                                else { yyval.token = 0; PASM->report->error(".this outside class scope\n"); }
                                                              } break;
case 555:
#line 1493 "asmparse.y"
{ if(PASM->m_pCurClass != NULL) {
                                                                  yyval.token = PASM->m_pCurClass->m_crExtends;
                                                                  if(RidFromToken(yyval.token) == 0)
                                                                    PASM->report->error(".base undefined\n");
                                                                } else { yyval.token = 0; PASM->report->error(".base outside class scope\n"); }
                                                              } break;
case 556:
#line 1499 "asmparse.y"
{ if(PASM->m_pCurClass != NULL) {
                                                                  if(PASM->m_pCurClass->m_pEncloser != NULL) yyval.token = PASM->m_pCurClass->m_pEncloser->m_cl;
                                                                  else { yyval.token = 0; PASM->report->error(".nester undefined\n"); }
                                                                } else { yyval.token = 0; PASM->report->error(".nester outside class scope\n"); }
                                                              } break;
case 557:
#line 1506 "asmparse.y"
{ yyval.string = yypvt[-0].string; } break;
case 558:
#line 1507 "asmparse.y"
{ yyval.string = newStringWDel(yypvt[-2].string, NESTING_SEP, yypvt[-0].string); } break;
case 559:
#line 1510 "asmparse.y"
{ yyval.token = yypvt[-0].token;} break;
case 560:
#line 1511 "asmparse.y"
{ yyval.token = PASM->GetAsmRef(yypvt[-1].string); delete[] yypvt[-1].string;} break;
case 561:
#line 1512 "asmparse.y"
{ yyval.token = PASM->GetModRef(yypvt[-1].string); delete[] yypvt[-1].string;} break;
case 562:
#line 1513 "asmparse.y"
{ yyval.token = PASM->ResolveTypeSpec(yypvt[-0].binstr); } break;
case 563:
#line 1517 "asmparse.y"
{ yyval.binstr = new BinStr(); } break;
case 564:
#line 1519 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_CUSTOMMARSHALER);
                                                                corEmitInt(yyval.binstr,yypvt[-7].binstr->length()); yyval.binstr->append(yypvt[-7].binstr);
                                                                corEmitInt(yyval.binstr,yypvt[-5].binstr->length()); yyval.binstr->append(yypvt[-5].binstr);
                                                                corEmitInt(yyval.binstr,yypvt[-3].binstr->length()); yyval.binstr->append(yypvt[-3].binstr);
                                                                corEmitInt(yyval.binstr,yypvt[-1].binstr->length()); yyval.binstr->append(yypvt[-1].binstr);
                                                                PASM->report->warn("Deprecated 4-string form of custom marshaler, first two strings ignored\n");} break;
case 565:
#line 1526 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_CUSTOMMARSHALER);
                                                                corEmitInt(yyval.binstr,0);
                                                                corEmitInt(yyval.binstr,0);
                                                                corEmitInt(yyval.binstr,yypvt[-3].binstr->length()); yyval.binstr->append(yypvt[-3].binstr);
                                                                corEmitInt(yyval.binstr,yypvt[-1].binstr->length()); yyval.binstr->append(yypvt[-1].binstr); } break;
case 566:
#line 1531 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_FIXEDSYSSTRING);
                                                                corEmitInt(yyval.binstr,yypvt[-1].int32); } break;
case 567:
#line 1534 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_FIXEDARRAY);
                                                                corEmitInt(yyval.binstr,yypvt[-2].int32); yyval.binstr->append(yypvt[-0].binstr); } break;
case 568:
#line 1536 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VARIANT);
                                                                PASM->report->warn("Deprecated native type 'variant'\n"); } break;
case 569:
#line 1538 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_CURRENCY); } break;
case 570:
#line 1539 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_SYSCHAR);
                                                                PASM->report->warn("Deprecated native type 'syschar'\n"); } break;
case 571:
#line 1541 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VOID);
                                                                PASM->report->warn("Deprecated native type 'void'\n"); } break;
case 572:
#line 1543 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BOOLEAN); } break;
case 573:
#line 1544 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I1); } break;
case 574:
#line 1545 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I2); } break;
case 575:
#line 1546 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I4); } break;
case 576:
#line 1547 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I8); } break;
case 577:
#line 1548 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_R4); } break;
case 578:
#line 1549 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_R8); } break;
case 579:
#line 1550 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ERROR); } break;
case 580:
#line 1551 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U1); } break;
case 581:
#line 1552 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U2); } break;
case 582:
#line 1553 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U4); } break;
case 583:
#line 1554 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U8); } break;
case 584:
#line 1555 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U1); } break;
case 585:
#line 1556 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U2); } break;
case 586:
#line 1557 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U4); } break;
case 587:
#line 1558 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U8); } break;
case 588:
#line 1559 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(NATIVE_TYPE_PTR);
                                                                PASM->report->warn("Deprecated native type '*'\n"); } break;
case 589:
#line 1561 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX);
                                                                yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY); } break;
case 590:
#line 1563 "asmparse.y"
{ yyval.binstr = yypvt[-3].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX);
                                                                yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY);
                                                                corEmitInt(yyval.binstr,0);
                                                                corEmitInt(yyval.binstr,yypvt[-1].int32);
                                                                corEmitInt(yyval.binstr,0); } break;
case 591:
#line 1568 "asmparse.y"
{ yyval.binstr = yypvt[-5].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX);
                                                                yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY);
                                                                corEmitInt(yyval.binstr,yypvt[-1].int32);
                                                                corEmitInt(yyval.binstr,yypvt[-3].int32);
                                                                corEmitInt(yyval.binstr,ntaSizeParamIndexSpecified); } break;
case 592:
#line 1573 "asmparse.y"
{ yyval.binstr = yypvt[-4].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX);
                                                                yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY);
                                                                corEmitInt(yyval.binstr,yypvt[-1].int32); } break;
case 593:
#line 1576 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_DECIMAL);
                                                                PASM->report->warn("Deprecated native type 'decimal'\n"); } break;
case 594:
#line 1578 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_DATE);
                                                                PASM->report->warn("Deprecated native type 'date'\n"); } break;
case 595:
#line 1580 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BSTR); } break;
case 596:
#line 1581 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPSTR); } break;
case 597:
#line 1582 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPWSTR); } break;
case 598:
#line 1583 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPTSTR); } break;
case 599:
#line 1584 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_OBJECTREF);
                                                                PASM->report->warn("Deprecated native type 'objectref'\n"); } break;
case 600:
#line 1586 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_IUNKNOWN);
                                                                if(yypvt[-0].int32 != -1) corEmitInt(yyval.binstr,yypvt[-0].int32); } break;
case 601:
#line 1588 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_IDISPATCH);
                                                                if(yypvt[-0].int32 != -1) corEmitInt(yyval.binstr,yypvt[-0].int32); } break;
case 602:
#line 1590 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_STRUCT); } break;
case 603:
#line 1591 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_INTF);
                                                                if(yypvt[-0].int32 != -1) corEmitInt(yyval.binstr,yypvt[-0].int32); } break;
case 604:
#line 1593 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_SAFEARRAY);
                                                                corEmitInt(yyval.binstr,yypvt[-0].int32);
                                                                corEmitInt(yyval.binstr,0);} break;
case 605:
#line 1596 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_SAFEARRAY);
                                                                corEmitInt(yyval.binstr,yypvt[-2].int32);
                                                                corEmitInt(yyval.binstr,yypvt[-0].binstr->length()); yyval.binstr->append(yypvt[-0].binstr); } break;
case 606:
#line 1600 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_INT); } break;
case 607:
#line 1601 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_UINT); } break;
case 608:
#line 1602 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_UINT); } break;
case 609:
#line 1603 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_NESTEDSTRUCT);
                                                                PASM->report->warn("Deprecated native type 'nested struct'\n"); } break;
case 610:
#line 1605 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BYVALSTR); } break;
case 611:
#line 1606 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ANSIBSTR); } break;
case 612:
#line 1607 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_TBSTR); } break;
case 613:
#line 1608 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VARIANTBOOL); } break;
case 614:
#line 1609 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_FUNC); } break;
case 615:
#line 1610 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ASANY); } break;
case 616:
#line 1611 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPSTRUCT); } break;
case 617:
#line 1612 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-0].tdd->m_pbsTypeSpec); } break;
case 618:
#line 1615 "asmparse.y"
{ yyval.int32 = -1; } break;
case 619:
#line 1616 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32; } break;
case 620:
#line 1619 "asmparse.y"
{ yyval.int32 = VT_EMPTY; } break;
case 621:
#line 1620 "asmparse.y"
{ yyval.int32 = VT_NULL; } break;
case 622:
#line 1621 "asmparse.y"
{ yyval.int32 = VT_VARIANT; } break;
case 623:
#line 1622 "asmparse.y"
{ yyval.int32 = VT_CY; } break;
case 624:
#line 1623 "asmparse.y"
{ yyval.int32 = VT_VOID; } break;
case 625:
#line 1624 "asmparse.y"
{ yyval.int32 = VT_BOOL; } break;
case 626:
#line 1625 "asmparse.y"
{ yyval.int32 = VT_I1; } break;
case 627:
#line 1626 "asmparse.y"
{ yyval.int32 = VT_I2; } break;
case 628:
#line 1627 "asmparse.y"
{ yyval.int32 = VT_I4; } break;
case 629:
#line 1628 "asmparse.y"
{ yyval.int32 = VT_I8; } break;
case 630:
#line 1629 "asmparse.y"
{ yyval.int32 = VT_R4; } break;
case 631:
#line 1630 "asmparse.y"
{ yyval.int32 = VT_R8; } break;
case 632:
#line 1631 "asmparse.y"
{ yyval.int32 = VT_UI1; } break;
case 633:
#line 1632 "asmparse.y"
{ yyval.int32 = VT_UI2; } break;
case 634:
#line 1633 "asmparse.y"
{ yyval.int32 = VT_UI4; } break;
case 635:
#line 1634 "asmparse.y"
{ yyval.int32 = VT_UI8; } break;
case 636:
#line 1635 "asmparse.y"
{ yyval.int32 = VT_UI1; } break;
case 637:
#line 1636 "asmparse.y"
{ yyval.int32 = VT_UI2; } break;
case 638:
#line 1637 "asmparse.y"
{ yyval.int32 = VT_UI4; } break;
case 639:
#line 1638 "asmparse.y"
{ yyval.int32 = VT_UI8; } break;
case 640:
#line 1639 "asmparse.y"
{ yyval.int32 = VT_PTR; } break;
case 641:
#line 1640 "asmparse.y"
{ yyval.int32 = yypvt[-2].int32 | VT_ARRAY; } break;
case 642:
#line 1641 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | VT_VECTOR; } break;
case 643:
#line 1642 "asmparse.y"
{ yyval.int32 = yypvt[-1].int32 | VT_BYREF; } break;
case 644:
#line 1643 "asmparse.y"
{ yyval.int32 = VT_DECIMAL; } break;
case 645:
#line 1644 "asmparse.y"
{ yyval.int32 = VT_DATE; } break;
case 646:
#line 1645 "asmparse.y"
{ yyval.int32 = VT_BSTR; } break;
case 647:
#line 1646 "asmparse.y"
{ yyval.int32 = VT_LPSTR; } break;
case 648:
#line 1647 "asmparse.y"
{ yyval.int32 = VT_LPWSTR; } break;
case 649:
#line 1648 "asmparse.y"
{ yyval.int32 = VT_UNKNOWN; } break;
case 650:
#line 1649 "asmparse.y"
{ yyval.int32 = VT_DISPATCH; } break;
case 651:
#line 1650 "asmparse.y"
{ yyval.int32 = VT_SAFEARRAY; } break;
case 652:
#line 1651 "asmparse.y"
{ yyval.int32 = VT_INT; } break;
case 653:
#line 1652 "asmparse.y"
{ yyval.int32 = VT_UINT; } break;
case 654:
#line 1653 "asmparse.y"
{ yyval.int32 = VT_UINT; } break;
case 655:
#line 1654 "asmparse.y"
{ yyval.int32 = VT_ERROR; } break;
case 656:
#line 1655 "asmparse.y"
{ yyval.int32 = VT_HRESULT; } break;
case 657:
#line 1656 "asmparse.y"
{ yyval.int32 = VT_CARRAY; } break;
case 658:
#line 1657 "asmparse.y"
{ yyval.int32 = VT_USERDEFINED; } break;
case 659:
#line 1658 "asmparse.y"
{ yyval.int32 = VT_RECORD; } break;
case 660:
#line 1659 "asmparse.y"
{ yyval.int32 = VT_FILETIME; } break;
case 661:
#line 1660 "asmparse.y"
{ yyval.int32 = VT_BLOB; } break;
case 662:
#line 1661 "asmparse.y"
{ yyval.int32 = VT_STREAM; } break;
case 663:
#line 1662 "asmparse.y"
{ yyval.int32 = VT_STORAGE; } break;
case 664:
#line 1663 "asmparse.y"
{ yyval.int32 = VT_STREAMED_OBJECT; } break;
case 665:
#line 1664 "asmparse.y"
{ yyval.int32 = VT_STORED_OBJECT; } break;
case 666:
#line 1665 "asmparse.y"
{ yyval.int32 = VT_BLOB_OBJECT; } break;
case 667:
#line 1666 "asmparse.y"
{ yyval.int32 = VT_CF; } break;
case 668:
#line 1667 "asmparse.y"
{ yyval.int32 = VT_CLSID; } break;
case 669:
#line 1671 "asmparse.y"
{ if(yypvt[-0].token == PASM->m_tkSysString)
                                                                {     yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); }
                                                                else if(yypvt[-0].token == PASM->m_tkSysObject)
                                                                {     yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_OBJECT); }
                                                                else
                                                                 yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_CLASS, yypvt[-0].token); } break;
case 670:
#line 1677 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_OBJECT); } break;
case 671:
#line 1678 "asmparse.y"
{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_VALUETYPE, yypvt[-0].token); } break;
case 672:
#line 1679 "asmparse.y"
{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_VALUETYPE, yypvt[-0].token); } break;
case 673:
#line 1680 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
case 674:
#line 1681 "asmparse.y"
{ yyval.binstr = parser->MakeTypeArray(ELEMENT_TYPE_ARRAY, yypvt[-3].binstr, yypvt[-1].binstr); } break;
case 675:
#line 1682 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_BYREF); } break;
case 676:
#line 1683 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_PTR); } break;
case 677:
#line 1684 "asmparse.y"
{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_PINNED); } break;
case 678:
#line 1685 "asmparse.y"
{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_CMOD_REQD, yypvt[-1].token);
                                                                yyval.binstr->append(yypvt[-4].binstr); } break;
case 679:
#line 1687 "asmparse.y"
{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_CMOD_OPT, yypvt[-1].token);
                                                                yyval.binstr->append(yypvt[-4].binstr); } break;
case 680:
#line 1690 "asmparse.y"
{ yyval.binstr = parser->MakeSig(yypvt[-5].int32, yypvt[-4].binstr, yypvt[-1].binstr);
                                                                yyval.binstr->insertInt8(ELEMENT_TYPE_FNPTR);
                                                                PASM->delArgNameList(PASM->m_firstArgName);
                                                                PASM->m_firstArgName = parser->m_ANSFirst.POP();
                                                                PASM->m_lastArgName = parser->m_ANSLast.POP();
                                                              } break;
case 681:
#line 1696 "asmparse.y"
{ if(yypvt[-1].binstr == NULL) yyval.binstr = yypvt[-3].binstr;
                                                                else {
                                                                  yyval.binstr = new BinStr();
                                                                  yyval.binstr->appendInt8(ELEMENT_TYPE_GENERICINST);
                                                                  yyval.binstr->append(yypvt[-3].binstr);
                                                                  corEmitInt(yyval.binstr, corCountArgs(yypvt[-1].binstr));
                                                                  yyval.binstr->append(yypvt[-1].binstr); delete yypvt[-3].binstr; delete yypvt[-1].binstr; }} break;
case 682:
#line 1703 "asmparse.y"
{ //if(PASM->m_pCurMethod)  {
                                                                //  if(($3 < 0)||((DWORD)$3 >= PASM->m_pCurMethod->m_NumTyPars))
                                                                //    PASM->report->error("Invalid method type parameter '%d'\n",$3);
                                                                  yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_MVAR); corEmitInt(yyval.binstr, yypvt[-0].int32);
                                                                //} else PASM->report->error("Method type parameter '%d' outside method scope\n",$3);
                                                              } break;
case 683:
#line 1709 "asmparse.y"
{ //if(PASM->m_pCurClass)  {
                                                                //  if(($2 < 0)||((DWORD)$2 >= PASM->m_pCurClass->m_NumTyPars))
                                                                //    PASM->report->error("Invalid type parameter '%d'\n",$2);
                                                                  yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_VAR); corEmitInt(yyval.binstr, yypvt[-0].int32);
                                                                //} else PASM->report->error("Type parameter '%d' outside class scope\n",$2);
                                                              } break;
case 684:
#line 1715 "asmparse.y"
{ int eltype = ELEMENT_TYPE_MVAR;
                                                                int n=-1;
                                                                if(PASM->m_pCurMethod) n = PASM->m_pCurMethod->FindTyPar(yypvt[-0].string);
                                                                else {
                                                                  if(PASM->m_TyParList) n = PASM->m_TyParList->IndexOf(yypvt[-0].string);
                                                                  if(n == -1)
                                                                  { n = TyParFixupList.COUNT();
                                                                    TyParFixupList.PUSH(yypvt[-0].string);
                                                                    eltype = ELEMENT_TYPE_MVARFIXUP;
                                                                  }
                                                                }
                                                                if(n == -1) { PASM->report->error("Invalid method type parameter '%s'\n",yypvt[-0].string);
                                                                n = 0x1FFFFFFF; }
                                                                yyval.binstr = new BinStr(); yyval.binstr->appendInt8(eltype); corEmitInt(yyval.binstr,n);
                                                              } break;
case 685:
#line 1730 "asmparse.y"
{ int eltype = ELEMENT_TYPE_VAR;
                                                                int n=-1;
                                                                if(PASM->m_pCurClass && !newclass) n = PASM->m_pCurClass->FindTyPar(yypvt[-0].string);
                                                                else {
                                                                  if(PASM->m_TyParList) n = PASM->m_TyParList->IndexOf(yypvt[-0].string);
                                                                  if(n == -1)
                                                                  { n = TyParFixupList.COUNT();
                                                                    TyParFixupList.PUSH(yypvt[-0].string);
                                                                    eltype = ELEMENT_TYPE_VARFIXUP;
                                                                  }
                                                                }
                                                                if(n == -1) { PASM->report->error("Invalid type parameter '%s'\n",yypvt[-0].string);
                                                                n = 0x1FFFFFFF; }
                                                                yyval.binstr = new BinStr(); yyval.binstr->appendInt8(eltype); corEmitInt(yyval.binstr,n);
                                                              } break;
case 686:
#line 1745 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_TYPEDBYREF); } break;
case 687:
#line 1746 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_VOID); } break;
case 688:
#line 1747 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I); } break;
case 689:
#line 1748 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U); } break;
case 690:
#line 1749 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U); } break;
case 691:
#line 1750 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 692:
#line 1751 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SENTINEL); } break;
case 693:
#line 1754 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CHAR); } break;
case 694:
#line 1755 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); } break;
case 695:
#line 1756 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_BOOLEAN); } break;
case 696:
#line 1757 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I1); } break;
case 697:
#line 1758 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I2); } break;
case 698:
#line 1759 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I4); } break;
case 699:
#line 1760 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I8); } break;
case 700:
#line 1761 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R4); } break;
case 701:
#line 1762 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R8); } break;
case 702:
#line 1763 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1); } break;
case 703:
#line 1764 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2); } break;
case 704:
#line 1765 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4); } break;
case 705:
#line 1766 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8); } break;
case 706:
#line 1767 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1); } break;
case 707:
#line 1768 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2); } break;
case 708:
#line 1769 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4); } break;
case 709:
#line 1770 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8); } break;
case 710:
#line 1771 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-0].tdd->m_pbsTypeSpec); } break;
case 711:
#line 1774 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; } break;
case 712:
#line 1775 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yypvt[-2].binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
case 713:
#line 1778 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0x7FFFFFFF); yyval.binstr->appendInt32(0x7FFFFFFF);  } break;
case 714:
#line 1779 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0x7FFFFFFF); yyval.binstr->appendInt32(0x7FFFFFFF);  } break;
case 715:
#line 1780 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0); yyval.binstr->appendInt32(yypvt[-0].int32); } break;
case 716:
#line 1781 "asmparse.y"
{ FAIL_UNLESS(yypvt[-2].int32 <= yypvt[-0].int32, ("lower bound %d must be <= upper bound %d\n", yypvt[-2].int32, yypvt[-0].int32));
                                                                if (yypvt[-2].int32 > yypvt[-0].int32) { YYERROR; };
                                                                yyval.binstr = new BinStr(); yyval.binstr->appendInt32(yypvt[-2].int32); yyval.binstr->appendInt32(yypvt[-0].int32-yypvt[-2].int32+1); } break;
case 717:
#line 1784 "asmparse.y"
{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(yypvt[-1].int32); yyval.binstr->appendInt32(0x7FFFFFFF); } break;
case 718:
#line 1789 "asmparse.y"
{ PASM->AddPermissionDecl(yypvt[-4].secAct, yypvt[-3].token, yypvt[-1].pair); } break;
case 719:
#line 1791 "asmparse.y"
{ PASM->AddPermissionDecl(yypvt[-5].secAct, yypvt[-4].token, yypvt[-1].binstr); } break;
case 720:
#line 1792 "asmparse.y"
{ PASM->AddPermissionDecl(yypvt[-1].secAct, yypvt[-0].token, (NVPair *)NULL); } break;
case 721:
#line 1793 "asmparse.y"
{ PASM->AddPermissionSetDecl(yypvt[-2].secAct, yypvt[-1].binstr); } break;
case 722:
#line 1795 "asmparse.y"
{ PASM->AddPermissionSetDecl(yypvt[-1].secAct,BinStrToUnicode(yypvt[-0].binstr,true));} break;
case 723:
#line 1797 "asmparse.y"
{ BinStr* ret = new BinStr();
                                                                ret->insertInt8('.');
                                                                corEmitInt(ret, nSecAttrBlobs);
                                                                ret->append(yypvt[-1].binstr);
                                                                PASM->AddPermissionSetDecl(yypvt[-4].secAct,ret);
                                                                nSecAttrBlobs = 0; } break;
case 724:
#line 1805 "asmparse.y"
{ yyval.binstr = new BinStr(); nSecAttrBlobs = 0;} break;
case 725:
#line 1806 "asmparse.y"
{ yyval.binstr = yypvt[-0].binstr; nSecAttrBlobs = 1; } break;
case 726:
#line 1807 "asmparse.y"
{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); nSecAttrBlobs++; } break;
case 727:
#line 1811 "asmparse.y"
{ yyval.binstr = PASM->EncodeSecAttr(PASM->ReflectionNotation(yypvt[-4].token),yypvt[-1].binstr,nCustomBlobNVPairs);
                                                                nCustomBlobNVPairs = 0; } break;
case 728:
#line 1814 "asmparse.y"
{ yyval.binstr = PASM->EncodeSecAttr(yypvt[-4].string,yypvt[-1].binstr,nCustomBlobNVPairs);
                                                                nCustomBlobNVPairs = 0; } break;
case 729:
#line 1818 "asmparse.y"
{ yyval.secAct = yypvt[-2].secAct; bParsingByteArray = TRUE; } break;
case 730:
#line 1820 "asmparse.y"
{ yyval.secAct = yypvt[-2].secAct; bParsingByteArray = TRUE; } break;
case 731:
#line 1823 "asmparse.y"
{ yyval.pair = yypvt[-0].pair; } break;
case 732:
#line 1824 "asmparse.y"
{ yyval.pair = yypvt[-2].pair->Concat(yypvt[-0].pair); } break;
case 733:
#line 1827 "asmparse.y"
{ yypvt[-2].binstr->appendInt8(0); yyval.pair = new NVPair(yypvt[-2].binstr, yypvt[-0].binstr); } break;
case 734:
#line 1830 "asmparse.y"
{ yyval.int32 = 1; } break;
case 735:
#line 1831 "asmparse.y"
{ yyval.int32 = 0; } break;
case 736:
#line 1834 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_BOOLEAN);
                                                                yyval.binstr->appendInt8(yypvt[-0].int32); } break;
case 737:
#line 1837 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_I4);
                                                                yyval.binstr->appendInt32(yypvt[-0].int32); } break;
case 738:
#line 1840 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_I4);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 739:
#line 1843 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_STRING);
                                                                yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr;
                                                                yyval.binstr->appendInt8(0); } break;
case 740:
#line 1847 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                char* sz = PASM->ReflectionNotation(yypvt[-5].token);
                                                                strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
                                                                yyval.binstr->appendInt8(1);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 741:
#line 1853 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                char* sz = PASM->ReflectionNotation(yypvt[-5].token);
                                                                strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
                                                                yyval.binstr->appendInt8(2);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 742:
#line 1859 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                char* sz = PASM->ReflectionNotation(yypvt[-5].token);
                                                                strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
                                                                yyval.binstr->appendInt8(4);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 743:
#line 1865 "asmparse.y"
{ yyval.binstr = new BinStr();
                                                                yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
                                                                char* sz = PASM->ReflectionNotation(yypvt[-3].token);
                                                                strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
                                                                yyval.binstr->appendInt8(4);
                                                                yyval.binstr->appendInt32(yypvt[-1].int32); } break;
case 744:
#line 1873 "asmparse.y"
{ yyval.secAct = dclRequest; } break;
case 745:
#line 1874 "asmparse.y"
{ yyval.secAct = dclDemand; } break;
case 746:
#line 1875 "asmparse.y"
{ yyval.secAct = dclAssert; } break;
case 747:
#line 1876 "asmparse.y"
{ yyval.secAct = dclDeny; } break;
case 748:
#line 1877 "asmparse.y"
{ yyval.secAct = dclPermitOnly; } break;
case 749:
#line 1878 "asmparse.y"
{ yyval.secAct = dclLinktimeCheck; } break;
case 750:
#line 1879 "asmparse.y"
{ yyval.secAct = dclInheritanceCheck; } break;
case 751:
#line 1880 "asmparse.y"
{ yyval.secAct = dclRequestMinimum; } break;
case 752:
#line 1881 "asmparse.y"
{ yyval.secAct = dclRequestOptional; } break;
case 753:
#line 1882 "asmparse.y"
{ yyval.secAct = dclRequestRefuse; } break;
case 754:
#line 1883 "asmparse.y"
{ yyval.secAct = dclPrejitGrant; } break;
case 755:
#line 1884 "asmparse.y"
{ yyval.secAct = dclPrejitDenied; } break;
case 756:
#line 1885 "asmparse.y"
{ yyval.secAct = dclNonCasDemand; } break;
case 757:
#line 1886 "asmparse.y"
{ yyval.secAct = dclNonCasLinkDemand; } break;
case 758:
#line 1887 "asmparse.y"
{ yyval.secAct = dclNonCasInheritance; } break;
case 759:
#line 1891 "asmparse.y"
{ PASM->ResetLineNumbers(); nCurrPC = PASM->m_CurPC; PENV->bExternSource = TRUE; PENV->bExternSourceAutoincrement = FALSE; } break;
case 760:
#line 1892 "asmparse.y"
{ PASM->ResetLineNumbers(); nCurrPC = PASM->m_CurPC; PENV->bExternSource = TRUE; PENV->bExternSourceAutoincrement = TRUE; } break;
case 761:
#line 1895 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-1].int32;
                                                                PENV->nExtCol = 0; PENV->nExtColEnd  = static_cast<unsigned>(-1);
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 762:
#line 1898 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-0].int32;
                                                                PENV->nExtCol = 0; PENV->nExtColEnd  = static_cast<unsigned>(-1); } break;
case 763:
#line 1900 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-3].int32;
                                                                PENV->nExtCol=yypvt[-1].int32; PENV->nExtColEnd = static_cast<unsigned>(-1);
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 764:
#line 1903 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-2].int32;
                                                                PENV->nExtCol=yypvt[-0].int32; PENV->nExtColEnd = static_cast<unsigned>(-1);} break;
case 765:
#line 1906 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-5].int32;
                                                                PENV->nExtCol=yypvt[-3].int32; PENV->nExtColEnd = yypvt[-1].int32;
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 766:
#line 1910 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-4].int32;
                                                                PENV->nExtCol=yypvt[-2].int32; PENV->nExtColEnd = yypvt[-0].int32; } break;
case 767:
#line 1913 "asmparse.y"
{ PENV->nExtLine = yypvt[-5].int32; PENV->nExtLineEnd = yypvt[-3].int32;
                                                                PENV->nExtCol=yypvt[-1].int32; PENV->nExtColEnd = static_cast<unsigned>(-1);
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 768:
#line 1917 "asmparse.y"
{ PENV->nExtLine = yypvt[-4].int32; PENV->nExtLineEnd = yypvt[-2].int32;
                                                                PENV->nExtCol=yypvt[-0].int32; PENV->nExtColEnd = static_cast<unsigned>(-1); } break;
case 769:
#line 1920 "asmparse.y"
{ PENV->nExtLine = yypvt[-7].int32; PENV->nExtLineEnd = yypvt[-5].int32;
                                                                PENV->nExtCol=yypvt[-3].int32; PENV->nExtColEnd = yypvt[-1].int32;
                                                                PASM->SetSourceFileName(yypvt[-0].string);} break;
case 770:
#line 1924 "asmparse.y"
{ PENV->nExtLine = yypvt[-6].int32; PENV->nExtLineEnd = yypvt[-4].int32;
                                                                PENV->nExtCol=yypvt[-2].int32; PENV->nExtColEnd = yypvt[-0].int32; } break;
case 771:
#line 1926 "asmparse.y"
{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-1].int32 - 1;
                                                                PENV->nExtCol = 0; PENV->nExtColEnd = static_cast<unsigned>(-1);
                                                                PASM->SetSourceFileName(yypvt[-0].binstr);} break;
case 772:
#line 1933 "asmparse.y"
{ PASMM->AddFile(yypvt[-5].string, yypvt[-6].fileAttr|yypvt[-4].fileAttr|yypvt[-0].fileAttr, yypvt[-2].binstr); } break;
case 773:
#line 1934 "asmparse.y"
{ PASMM->AddFile(yypvt[-1].string, yypvt[-2].fileAttr|yypvt[-0].fileAttr, NULL); } break;
case 774:
#line 1937 "asmparse.y"
{ yyval.fileAttr = (CorFileFlags) 0; } break;
case 775:
#line 1938 "asmparse.y"
{ yyval.fileAttr = (CorFileFlags) (yypvt[-1].fileAttr | ffContainsNoMetaData); } break;
case 776:
#line 1941 "asmparse.y"
{ yyval.fileAttr = (CorFileFlags) 0; } break;
case 777:
#line 1942 "asmparse.y"
{ yyval.fileAttr = (CorFileFlags) 0x80000000; } break;
case 778:
#line 1945 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 779:
#line 1948 "asmparse.y"
{ PASMM->StartAssembly(yypvt[-0].string, NULL, (DWORD)yypvt[-1].asmAttr, FALSE); } break;
case 780:
#line 1951 "asmparse.y"
{ yyval.asmAttr = (CorAssemblyFlags) 0; } break;
case 781:
#line 1952 "asmparse.y"
{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afRetargetable); } break;
case 782:
#line 1953 "asmparse.y"
{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afContentType_WindowsRuntime); } break;
case 783:
#line 1954 "asmparse.y"
{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afPA_NoPlatform); } break;
case 784:
#line 1955 "asmparse.y"
{ yyval.asmAttr = yypvt[-2].asmAttr; } break;
case 785:
#line 1956 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_MSIL); } break;
case 786:
#line 1957 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_x86); } break;
case 787:
#line 1958 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_AMD64); } break;
case 788:
#line 1959 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_ARM); } break;
case 789:
#line 1960 "asmparse.y"
{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_ARM64); } break;
case 792:
#line 1967 "asmparse.y"
{ PASMM->SetAssemblyHashAlg(yypvt[-0].int32); } break;
case 795:
#line 1972 "asmparse.y"
{ yyval.int32 = yypvt[-0].int32; } break;
case 796:
#line 1973 "asmparse.y"
{ yyval.int32 = 0xFFFF; } break;
case 797:
#line 1976 "asmparse.y"
{ PASMM->SetAssemblyPublicKey(yypvt[-1].binstr); } break;
case 798:
#line 1978 "asmparse.y"
{ PASMM->SetAssemblyVer((USHORT)yypvt[-6].int32, (USHORT)yypvt[-4].int32, (USHORT)yypvt[-2].int32, (USHORT)yypvt[-0].int32); } break;
case 799:
#line 1979 "asmparse.y"
{ yypvt[-0].binstr->appendInt8(0); PASMM->SetAssemblyLocale(yypvt[-0].binstr,TRUE); } break;
case 800:
#line 1980 "asmparse.y"
{ PASMM->SetAssemblyLocale(yypvt[-1].binstr,FALSE); } break;
case 803:
#line 1985 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 804:
#line 1988 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 805:
#line 1991 "asmparse.y"
{ bParsingByteArray = TRUE; } break;
case 806:
#line 1995 "asmparse.y"
{ PASMM->StartAssembly(yypvt[-0].string, NULL, yypvt[-1].asmAttr, TRUE); } break;
case 807:
#line 1997 "asmparse.y"
{ PASMM->StartAssembly(yypvt[-2].string, yypvt[-0].string, yypvt[-3].asmAttr, TRUE); } break;
case 810:
#line 2004 "asmparse.y"
{ PASMM->SetAssemblyHashBlob(yypvt[-1].binstr); } break;
case 812:
#line 2006 "asmparse.y"
{ PASMM->SetAssemblyPublicKeyToken(yypvt[-1].binstr); } break;
case 813:
#line 2007 "asmparse.y"
{ PASMM->SetAssemblyAutodetect(); } break;
case 814:
#line 2010 "asmparse.y"
{ PASMM->StartComType(yypvt[-0].string, yypvt[-1].exptAttr);} break;
case 815:
#line 2013 "asmparse.y"
{ PASMM->StartComType(yypvt[-0].string, yypvt[-1].exptAttr); } break;
case 816:
#line 2016 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) 0; } break;
case 817:
#line 2017 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdNotPublic); } break;
case 818:
#line 2018 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdPublic); } break;
case 819:
#line 2019 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdForwarder); } break;
case 820:
#line 2020 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedPublic); } break;
case 821:
#line 2021 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedPrivate); } break;
case 822:
#line 2022 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamily); } break;
case 823:
#line 2023 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedAssembly); } break;
case 824:
#line 2024 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamANDAssem); } break;
case 825:
#line 2025 "asmparse.y"
{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamORAssem); } break;
case 828:
#line 2032 "asmparse.y"
{ PASMM->SetComTypeFile(yypvt[-0].string); } break;
case 829:
#line 2033 "asmparse.y"
{ PASMM->SetComTypeComType(yypvt[-0].string); } break;
case 830:
#line 2034 "asmparse.y"
{ PASMM->SetComTypeAsmRef(yypvt[-0].string); } break;
case 831:
#line 2035 "asmparse.y"
{ if(!PASMM->SetComTypeImplementationTok(yypvt[-1].int32))
                                                                  PASM->report->error("Invalid implementation of exported type\n"); } break;
case 832:
#line 2037 "asmparse.y"
{ if(!PASMM->SetComTypeClassTok(yypvt[-0].int32))
                                                                  PASM->report->error("Invalid TypeDefID of exported type\n"); } break;
case 835:
#line 2043 "asmparse.y"
{ PASMM->StartManifestRes(yypvt[-0].string, yypvt[-0].string, yypvt[-1].manresAttr); } break;
case 836:
#line 2045 "asmparse.y"
{ PASMM->StartManifestRes(yypvt[-2].string, yypvt[-0].string, yypvt[-3].manresAttr); } break;
case 837:
#line 2048 "asmparse.y"
{ yyval.manresAttr = (CorManifestResourceFlags) 0; } break;
case 838:
#line 2049 "asmparse.y"
{ yyval.manresAttr = (CorManifestResourceFlags) (yypvt[-1].manresAttr | mrPublic); } break;
case 839:
#line 2050 "asmparse.y"
{ yyval.manresAttr = (CorManifestResourceFlags) (yypvt[-1].manresAttr | mrPrivate); } break;
case 842:
#line 2057 "asmparse.y"
{ PASMM->SetManifestResFile(yypvt[-2].string, (ULONG)yypvt[-0].int32); } break;
case 843:
#line 2058 "asmparse.y"
{ PASMM->SetManifestResAsmRef(yypvt[-0].string); } break;/* End of actions */
#line 329 "F:\\NetFXDev1\\src\\tools\\devdiv\\amd64\\yypars.c"
			}
		}
		goto yystack;  /* stack new state and value */
	}
#pragma warning(default:102)


#ifdef YYDUMP
YYLOCAL void YYNEAR YYPASCAL yydumpinfo(void)
{
	short stackindex;
	short valindex;

	//dump yys
	printf("short yys[%d] {\n", YYMAXDEPTH);
	for (stackindex = 0; stackindex < YYMAXDEPTH; stackindex++){
		if (stackindex)
			printf(", %s", stackindex % 10 ? "\0" : "\n");
		printf("%6d", yys[stackindex]);
		}
	printf("\n};\n");

	//dump yyv
	printf("YYSTYPE yyv[%d] {\n", YYMAXDEPTH);
	for (valindex = 0; valindex < YYMAXDEPTH; valindex++){
		if (valindex)
			printf(", %s", valindex % 5 ? "\0" : "\n");
		printf("%#*x", 3+sizeof(YYSTYPE), yyv[valindex]);
		}
	printf("\n};\n");
	}
#endif
