summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kotas <jkotas@microsoft.com>2015-12-10 07:11:57 -0800
committerJan Kotas <jkotas@microsoft.com>2015-12-10 07:11:57 -0800
commitcb25307b3022b67cf240ff534f05778845090921 (patch)
treebd59deeb0331bb80e08f9dc986bae820f06ef93f
parent15706ebfda035867c3435343d08c33dec579d5dc (diff)
parentc09a2320ed6184f2ad0f0c59cdd6884c76c9e038 (diff)
downloadcoreclr-cb25307b3022b67cf240ff534f05778845090921.tar.gz
coreclr-cb25307b3022b67cf240ff534f05778845090921.tar.bz2
coreclr-cb25307b3022b67cf240ff534f05778845090921.zip
Merge pull request #2281 from kyulee1/ilasm
Enable ILASM for Windows
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/dlls/CMakeLists.txt1
-rw-r--r--src/dlls/mscorpe/CMakeLists.txt21
-rw-r--r--src/dlls/mscorpe/ceefilegenwriter.cpp105
-rw-r--r--src/dlls/mscorpe/ceefilegenwritertokens.cpp2
-rw-r--r--src/ilasm/Assembler.h9
-rw-r--r--src/ilasm/CMakeLists.txt52
-rw-r--r--src/ilasm/asmman.cpp17
-rw-r--r--src/ilasm/asmman.hpp9
-rw-r--r--src/ilasm/assem.cpp14
-rw-r--r--src/ilasm/main.cpp2
-rw-r--r--src/ilasm/prebuilt/asmparse.c4908
-rw-r--r--src/ilasm/writer.cpp14
-rw-r--r--src/inc/iceefilegen.h5
14 files changed, 5113 insertions, 47 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7949679f8e..64d7d63f80 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -88,6 +88,7 @@ add_subdirectory(unwinder)
add_subdirectory(ildasm)
if(WIN32)
+ add_subdirectory(ilasm)
add_subdirectory(ipcman)
endif(WIN32)
diff --git a/src/dlls/CMakeLists.txt b/src/dlls/CMakeLists.txt
index 7dcb01f3eb..e0bdd37a6f 100644
--- a/src/dlls/CMakeLists.txt
+++ b/src/dlls/CMakeLists.txt
@@ -1,5 +1,6 @@
if(WIN32)
add_subdirectory(clretwrc)
+ add_subdirectory(mscorpe)
endif(WIN32)
add_subdirectory(dbgshim)
add_subdirectory(mscordbi)
diff --git a/src/dlls/mscorpe/CMakeLists.txt b/src/dlls/mscorpe/CMakeLists.txt
new file mode 100644
index 0000000000..b41848f2e6
--- /dev/null
+++ b/src/dlls/mscorpe/CMakeLists.txt
@@ -0,0 +1,21 @@
+project(mscorpe)
+
+add_definitions(-DFEATURE_CORECLR)
+
+set(MSCORPE_SOURCES
+ ICeeFileGen.cpp
+ CeeFileGenWriter.cpp
+ PEWriter.cpp
+ CeeFileGenWriterTokens.cpp
+ utilcodeinit.cpp
+)
+
+if(WIN32)
+ list(APPEND MSCORPE_SOURCES
+ Native.rc
+ )
+endif(WIN32)
+
+add_library(mscorpe STATIC
+ ${MSCORPE_SOURCES}
+)
diff --git a/src/dlls/mscorpe/ceefilegenwriter.cpp b/src/dlls/mscorpe/ceefilegenwriter.cpp
index 867512d068..555dde2621 100644
--- a/src/dlls/mscorpe/ceefilegenwriter.cpp
+++ b/src/dlls/mscorpe/ceefilegenwriter.cpp
@@ -1178,84 +1178,100 @@ HRESULT CeeFileGenWriter::emitResourceSection()
HANDLE hFile = INVALID_HANDLE_VALUE;
HANDLE hMap = NULL;
IMAGE_FILE_HEADER *hMod = NULL;
- SIZE_T cbFileSize;
- const BYTE *pbStartOfMappedMem;
- IMAGE_SECTION_HEADER *rsrc[2] = { NULL, NULL };
-
- S_SIZE_T cbTotalSizeOfRawData;
hr = S_OK;
- WIN_PAL_TRY
+ struct Param
+ {
+ HANDLE hFile;
+ HANDLE hMap;
+ IMAGE_FILE_HEADER *hMod;
+ const WCHAR* szResFileName;
+ CeeFileGenWriter *genWriter;
+ HRESULT hr;
+ } param;
+
+ param.hFile = hFile;
+ param.hMap = hMap;
+ param.hMod = hMod;
+ param.szResFileName = szResFileName;
+ param.genWriter = this;
+ param.hr = S_OK;
+
+ PAL_TRY(Param *, pParam, &param)
{
+ SIZE_T cbFileSize;
+ const BYTE *pbStartOfMappedMem;
+ IMAGE_SECTION_HEADER *rsrc[2] = { NULL, NULL };
+ S_SIZE_T cbTotalSizeOfRawData;
// create a mapped view of the .res file
- hFile = WszCreateFile(szResFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- if (hFile == INVALID_HANDLE_VALUE)
+ pParam->hFile = WszCreateFile(pParam->szResFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+ if (pParam->hFile == INVALID_HANDLE_VALUE)
{
//dbprintf("Resource file %S not found\n", szResFileName);
- hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
+ pParam->hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
goto lDone;
}
// Grab the file size for verification checks.
{
DWORD dwFileSizeHigh;
- DWORD dwFileSize = SafeGetFileSize(hFile, &dwFileSizeHigh);
+ DWORD dwFileSize = SafeGetFileSize(pParam->hFile, &dwFileSizeHigh);
if (dwFileSize == (DWORD)(-1))
{
- hr = HRESULT_FROM_GetLastError();
+ pParam->hr = HRESULT_FROM_GetLastError();
goto lDone;
}
// Since we intend to memory map this file, the size of the file can not need 64 bits to represent!
if (dwFileSizeHigh != 0)
{
- hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
+ pParam->hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
goto lDone;
}
cbFileSize = static_cast<SIZE_T>(dwFileSize);
}
- hMap = WszCreateFileMapping(hFile, 0, PAGE_READONLY, 0, 0, NULL);
+ pParam->hMap = WszCreateFileMapping(pParam->hFile, 0, PAGE_READONLY, 0, 0, NULL);
- if (hMap == NULL)
+ if (pParam->hMap == NULL)
{
//dbprintf("Invalid .res file: %S\n", szResFileName);
- hr = HRESULT_FROM_GetLastError();
+ pParam->hr = HRESULT_FROM_GetLastError();
goto lDone;
}
- pbStartOfMappedMem = reinterpret_cast<const BYTE *>(MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0));
+ pbStartOfMappedMem = reinterpret_cast<const BYTE *>(MapViewOfFile(pParam->hMap, FILE_MAP_READ, 0, 0, 0));
// test failure conditions
if (pbStartOfMappedMem == NULL)
{
//dbprintf("Invalid .res file: %S:Can't get header\n", szResFileName);
- hr = HRESULT_FROM_GetLastError();
+ pParam->hr = HRESULT_FROM_GetLastError();
goto lDone;
}
// Check that the file contains an IMAGE_FILE_HEADER structure.
if (IMAGE_SIZEOF_FILE_HEADER > cbFileSize)
{
- hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
+ pParam->hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
goto lDone;
}
- hMod = (IMAGE_FILE_HEADER*) pbStartOfMappedMem;
+ pParam->hMod = (IMAGE_FILE_HEADER*)pbStartOfMappedMem;
- if (VAL16(hMod->SizeOfOptionalHeader) != 0)
+ if (VAL16(pParam->hMod->SizeOfOptionalHeader) != 0)
{
//dbprintf("Invalid .res file: %S:Illegal optional header\n", szResFileName);
- hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND); // GetLastError() = 0 since API worked.
+ pParam->hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND); // GetLastError() = 0 since API worked.
goto lDone;
}
// Scan all section headers and grab .rsrc$01 and .rsrc$02
{
// First section is directly after header
- SIZE_T cSections = static_cast<SIZE_T>(VAL16(hMod->NumberOfSections));
+ SIZE_T cSections = static_cast<SIZE_T>(VAL16(pParam->hMod->NumberOfSections));
SIZE_T cbStartOfSections = IMAGE_SIZEOF_FILE_HEADER;
S_SIZE_T cbEndOfSections(S_SIZE_T(cbStartOfSections) +
(S_SIZE_T(cSections) * S_SIZE_T(IMAGE_SIZEOF_SECTION_HEADER)));
@@ -1264,7 +1280,7 @@ HRESULT CeeFileGenWriter::emitResourceSection()
if (cbEndOfSections.IsOverflow() ||
cbEndOfSections.Value() > cbFileSize)
{
- hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
+ pParam->hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
goto lDone;
}
@@ -1291,7 +1307,7 @@ HRESULT CeeFileGenWriter::emitResourceSection()
if (!rsrc[0] || !rsrc[1])
{
//dbprintf("Invalid .res file: %S: Missing sections .rsrc$01 or .rsrc$02\n", szResFileName);
- hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
+ pParam->hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
goto lDone;
}
@@ -1308,7 +1324,7 @@ HRESULT CeeFileGenWriter::emitResourceSection()
if (cbEndOfResourceData.IsOverflow() ||
cbEndOfResourceData.Value() > cbFileSize)
{
- hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
+ pParam->hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
goto lDone;
}
@@ -1319,25 +1335,25 @@ HRESULT CeeFileGenWriter::emitResourceSection()
if (cbTotalSizeOfRawData.IsOverflow() ||
cbTotalSizeOfRawData.Value() > cbFileSize)
{
- hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
+ pParam->hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
goto lDone;
}
}
PESection *rsrcSection;
- hr = getPEWriter().getSectionCreate(".rsrc", sdReadOnly, &rsrcSection);
- if (FAILED(hr)) goto lDone;
+ pParam->hr = pParam->genWriter->getPEWriter().getSectionCreate(".rsrc", sdReadOnly, &rsrcSection);
+ if (FAILED(pParam->hr)) goto lDone;
rsrcSection->directoryEntry(IMAGE_DIRECTORY_ENTRY_RESOURCE);
char *data = rsrcSection->getBlock(static_cast<unsigned>(cbTotalSizeOfRawData.Value()), 8);
if(data == NULL)
{
- hr = E_OUTOFMEMORY;
+ pParam->hr = E_OUTOFMEMORY;
goto lDone;
}
// Copy resource header
- memcpy(data, (char *)hMod + VAL32(rsrc[0]->PointerToRawData), VAL32(rsrc[0]->SizeOfRawData));
+ memcpy(data, (char *)pParam->hMod + VAL32(rsrc[0]->PointerToRawData), VAL32(rsrc[0]->SizeOfRawData));
// Map all the relocs in .rsrc$01 using the reloc and symbol tables in the COFF object.,
SIZE_T cReloc = 0; // Total number of relocs
@@ -1355,8 +1371,8 @@ HRESULT CeeFileGenWriter::emitResourceSection()
// Verify the number of symbols fit into the resource.
- cSymbol = static_cast<SIZE_T>(VAL32(hMod->NumberOfSymbols));
- SIZE_T cbStartOfSymbolTable = static_cast<SIZE_T>(VAL32(hMod->PointerToSymbolTable));
+ cSymbol = static_cast<SIZE_T>(VAL32(pParam->hMod->NumberOfSymbols));
+ SIZE_T cbStartOfSymbolTable = static_cast<SIZE_T>(VAL32(pParam->hMod->PointerToSymbolTable));
S_SIZE_T cbEndOfSymbolTable(S_SIZE_T(cbStartOfSymbolTable) +
(S_SIZE_T(cSymbol) * S_SIZE_T(IMAGE_SIZEOF_SYMBOL)));
@@ -1365,7 +1381,7 @@ HRESULT CeeFileGenWriter::emitResourceSection()
cbEndOfSymbolTable.IsOverflow() ||
cbEndOfSymbolTable.Value() > cbFileSize)
{
- hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
+ pParam->hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
goto lDone;
}
@@ -1383,7 +1399,7 @@ HRESULT CeeFileGenWriter::emitResourceSection()
if (cbRelocEnd.IsOverflow() ||
cbRelocEnd.Value() > static_cast<SIZE_T>(VAL32(rsrc[0]->SizeOfRawData)))
{
- hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
+ pParam->hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
goto lDone;
}
}
@@ -1394,7 +1410,7 @@ HRESULT CeeFileGenWriter::emitResourceSection()
// Make sure the index is in range
if (iSymbol >= cSymbol)
{
- hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
+ pParam->hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
goto lDone;
}
@@ -1406,7 +1422,7 @@ HRESULT CeeFileGenWriter::emitResourceSection()
(VAL16(pSymbolEntry->SectionNumber) != 3)) // 3rd section is .rsrc$02
{
//dbprintf("Invalid .res file: %S:Illegal symbol entry\n", szResFileName);
- hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
+ pParam->hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
goto lDone;
}
@@ -1414,7 +1430,7 @@ HRESULT CeeFileGenWriter::emitResourceSection()
if (VAL32(pSymbolEntry->Value) >= VAL32(rsrc[1]->SizeOfRawData))
{
//dbprintf("Invalid .res file: %S:Illegal rva into .rsrc$02\n", szResFileName);
- hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
+ pParam->hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
goto lDone;
}
@@ -1426,18 +1442,23 @@ HRESULT CeeFileGenWriter::emitResourceSection()
}
// Copy $02 (resource raw) data
- memcpy(data+VAL32(rsrc[0]->SizeOfRawData),
- (char *)hMod + VAL32(rsrc[1]->PointerToRawData),
+ memcpy(data+VAL32(rsrc[0]->SizeOfRawData),
+ (char *)pParam->hMod + VAL32(rsrc[1]->PointerToRawData),
VAL32(rsrc[1]->SizeOfRawData));
lDone: ;
}
- WIN_PAL_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ PAL_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
//dbprintf("Exception occured manipulating .res file %S\n", szResFileName);
- hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
+ param.hr = HRESULT_FROM_WIN32(ERROR_RESOURCE_DATA_NOT_FOUND);
}
- WIN_PAL_ENDTRY
+ PAL_ENDTRY
+
+ hMod = param.hMod;
+ hFile = param.hFile;
+ szResFileName = param.szResFileName;
+ hr = param.hr;
if (hMod != NULL)
UnmapViewOfFile(hMod);
diff --git a/src/dlls/mscorpe/ceefilegenwritertokens.cpp b/src/dlls/mscorpe/ceefilegenwritertokens.cpp
index b8d5ac0d83..65d83afbe8 100644
--- a/src/dlls/mscorpe/ceefilegenwritertokens.cpp
+++ b/src/dlls/mscorpe/ceefilegenwritertokens.cpp
@@ -11,7 +11,9 @@
//*****************************************************************************
#include "stdafx.h"
#include "ceegen.h"
+#ifndef FEATURE_CORECLR
#define DECLARE_DATA
+#endif
#include "../../ildasm/dasmenum.hpp"
#define MAX_CLASSNAME_LENGTH 1024
diff --git a/src/ilasm/Assembler.h b/src/ilasm/Assembler.h
index f3e49148e0..8b9b414e8c 100644
--- a/src/ilasm/Assembler.h
+++ b/src/ilasm/Assembler.h
@@ -23,7 +23,9 @@
#pragma warning(disable : 4640)
#endif
-
+#ifdef ResetEvent
+#undef ResetEvent
+#endif
#define OUTPUT_BUFFER_SIZE 8192 // initial size of asm code for a single method
#define OUTPUT_BUFFER_INCREMENT 1024 // size of code buffer increment when it's full
@@ -1035,9 +1037,10 @@ public:
void EmitSecurityInfo(mdToken token,
PermissionDecl* pPermissions,
PermissionSetDecl*pPermissionSets);
-
+#ifndef FEATURE_CORECLR
HRESULT AllocateStrongNameSignature();
HRESULT StrongNameSign();
+#endif
BinStr* EncodeSecAttr(__in __nullterminated char* szReflName, BinStr* pbsSecAttrBlob, unsigned nProps);
// Custom values paraphernalia:
@@ -1174,7 +1177,9 @@ public:
unsigned NumTypeDefs() {return m_TypeDefDList.COUNT();};
private:
HRESULT GetCAName(mdToken tkCA, __out LPWSTR *ppszName);
+#ifndef FEATURE_CORECLR
HRESULT GetSignatureKey();
+#endif
};
#endif // Assember_h
diff --git a/src/ilasm/CMakeLists.txt b/src/ilasm/CMakeLists.txt
new file mode 100644
index 0000000000..3481eb4a7a
--- /dev/null
+++ b/src/ilasm/CMakeLists.txt
@@ -0,0 +1,52 @@
+project(ilasm)
+
+add_definitions(-DUNICODE)
+add_definitions(-D_UNICODE)
+add_definitions(-D_FEATURE_NO_HOST)
+add_definitions(-D__ILASM__)
+
+add_definitions(-DFEATURE_CORECLR)
+
+include_directories(.)
+
+set(ILASM_SOURCES
+ assem.cpp
+ writer.cpp
+ writer_enc.cpp
+ method.cpp
+ asmman.cpp
+ main.cpp
+ assembler.cpp
+ prebuilt/asmparse.c
+)
+if(WIN32)
+ set_source_files_properties(prebuilt/asmparse.c PROPERTIES COMPILE_FLAGS "/TP")
+endif(WIN32)
+
+add_executable(ilasm
+ ${ILASM_SOURCES}
+)
+
+set(ILASM_LINK_LIBRARIES
+ mscorpe
+ utilcodestaticnohost
+ mdhotdata_full
+ corguids
+)
+
+if(CLR_CMAKE_PLATFORM_UNIX)
+ #TODO
+else()
+ target_link_libraries(ilasm
+ ${ILASM_LINK_LIBRARIES}
+ coreclr
+ msvcrt
+ ole32
+ oleaut32
+ shell32
+ )
+
+ install (FILES ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/ilasm.pdb DESTINATION PDB)
+endif(CLR_CMAKE_PLATFORM_UNIX)
+
+install (TARGETS ilasm DESTINATION .)
diff --git a/src/ilasm/asmman.cpp b/src/ilasm/asmman.cpp
index c4aa0e51ed..4933cf1f5c 100644
--- a/src/ilasm/asmman.cpp
+++ b/src/ilasm/asmman.cpp
@@ -11,7 +11,9 @@
#include "assembler.h"
#include "strongname.h"
+#ifndef FEATURE_CORECLR
#include "LegacyActivationShim.h"
+#endif
#include <limits.h>
#include <fusion.h>
@@ -445,6 +447,7 @@ void AsmMan::EndAssembly()
m_pCurAsmRef = NULL;
return;
}
+#ifndef FEATURE_CORECLR
if(m_pCurAsmRef->isAutodetect)
{
IAssemblyName* pIAsmName;
@@ -582,6 +585,7 @@ void AsmMan::EndAssembly()
else
report->error("Failed to create assembly name object for %S, hr=0x%08X\n",wzUniBuf,hr);
} // end if isAutodetect
+#endif // !FEATURE_CORECLR
m_AsmRefLst.PUSH(m_pCurAsmRef);
m_pCurAsmRef->tkTok = TokenFromRid(m_AsmRefLst.COUNT(),mdtAssemblyRef);
}
@@ -589,6 +593,7 @@ void AsmMan::EndAssembly()
{
HRESULT hr = S_OK;
m_pCurAsmRef->tkTok = TokenFromRid(1,mdtAssembly);
+
// Determine the strong name public key. This may have been set
// via a directive in the source or from the command line (which
// overrides the directive). From the command line we may have
@@ -601,6 +606,11 @@ void AsmMan::EndAssembly()
// character of the source ('@' for container).
if (*(((Assembler*)m_pAssembler)->m_wzKeySourceName) == L'@')
{
+#ifdef FEATURE_CORECLR
+ report->error("Error: ilasm on CoreCLR does not support getting public key from container.\n");
+ m_pCurAsmRef = NULL;
+ return;
+#else
// Extract public key from container (works whether
// container has just a public key or an entire key
// pair).
@@ -618,6 +628,7 @@ void AsmMan::EndAssembly()
}
m_sStrongName.m_fFullSign = TRUE;
m_sStrongName.m_dwPublicKeyAllocated = AsmManStrongName::AllocatedBySNApi;
+#endif // FEATURE_CORECLR
}
else
{
@@ -683,6 +694,11 @@ void AsmMan::EndAssembly()
// from a consistent place.
if (m_sStrongName.m_fFullSign)
{
+#ifdef FEATURE_CORECLR
+ report->error("Error: ilasm on CoreCLR does not support full sign.\n");
+ m_pCurAsmRef = NULL;
+ return;
+#else
m_sStrongName.m_pbPrivateKey = m_sStrongName.m_pbPublicKey;
m_sStrongName.m_cbPrivateKey = m_sStrongName.m_cbPublicKey;
@@ -704,6 +720,7 @@ void AsmMan::EndAssembly()
}
m_sStrongName.m_dwPublicKeyAllocated = AsmManStrongName::AllocatedBySNApi;
+#endif // FEATURE_CORECLR
}
}
}
diff --git a/src/ilasm/asmman.hpp b/src/ilasm/asmman.hpp
index 3db7ae2b2d..bf1a3fe0c7 100644
--- a/src/ilasm/asmman.hpp
+++ b/src/ilasm/asmman.hpp
@@ -10,7 +10,9 @@
#define ASMMAN_HPP
#include "strongname.h"
+#ifndef FEATURE_CORECLR
#include "LegacyActivationShim.h"
+#endif
#include "specstrings.h"
struct AsmManFile
@@ -172,13 +174,16 @@ struct AsmManStrongName
AsmManStrongName() { ZeroMemory(this, sizeof(*this)); }
~AsmManStrongName()
{
+#ifndef FEATURE_CORECLR
if (m_dwPublicKeyAllocated == AllocatedBySNApi)
{
LegacyActivationShim::StrongNameFreeBuffer(m_pbPublicKey);
}
- else if (m_dwPublicKeyAllocated == AllocatedByNew)
+ else
+#endif
+ if (m_dwPublicKeyAllocated == AllocatedByNew)
delete [] m_pbPublicKey;
-
+
if (m_pbPrivateKey)
delete [] m_pbPrivateKey;
diff --git a/src/ilasm/assem.cpp b/src/ilasm/assem.cpp
index 8f30613430..938cbaa1bd 100644
--- a/src/ilasm/assem.cpp
+++ b/src/ilasm/assem.cpp
@@ -16,7 +16,9 @@
#define DECLARE_DATA
#include "assembler.h"
+#ifndef FEATURE_CORECLR
#include "MscorpeSxS.h"
+#endif
void indexKeywords(Indx* indx); // defined in asmparse.y
@@ -190,7 +192,11 @@ Assembler::~Assembler()
if (m_pCeeFileGen != NULL) {
if (m_pCeeFile)
m_pCeeFileGen->DestroyCeeFile(&m_pCeeFile);
+#ifdef FEATURE_CORECLR
+ DestroyICeeFileGen(&m_pCeeFileGen);
+#else
MscorpeSxS::DestroyICeeFileGen(&m_pCeeFileGen);
+#endif
m_pCeeFileGen = NULL;
}
@@ -243,10 +249,18 @@ BOOL Assembler::Init()
if (m_pCeeFileGen != NULL) {
if (m_pCeeFile)
m_pCeeFileGen->DestroyCeeFile(&m_pCeeFile);
+#ifdef FEATURE_CORECLR
+ DestroyICeeFileGen(&m_pCeeFileGen);
+#else
MscorpeSxS::DestroyICeeFileGen(&m_pCeeFileGen);
+#endif
m_pCeeFileGen = NULL;
}
+#ifdef FEATURE_CORECLR
+ if (FAILED(CreateICeeFileGen(&m_pCeeFileGen))) return FALSE;
+#else
if (FAILED(MscorpeSxS::CreateICeeFileGen(&m_pCeeFileGen))) return FALSE;
+#endif
if (FAILED(m_pCeeFileGen->CreateCeeFileEx(&m_pCeeFile,(ULONG)m_dwCeeFileFlags))) return FALSE;
if (FAILED(m_pCeeFileGen->GetSectionCreate(m_pCeeFile, ".il", sdReadOnly, &m_pILSection))) return FALSE;
diff --git a/src/ilasm/main.cpp b/src/ilasm/main.cpp
index 2bb06612a6..978f827188 100644
--- a/src/ilasm/main.cpp
+++ b/src/ilasm/main.cpp
@@ -722,6 +722,7 @@ extern "C" int _cdecl wmain(int argc, __in WCHAR **argv)
exitval = 1;
pParser->msg("Failed to write output file, error code=0x%08X\n",hr);
}
+#ifndef FEATURE_CORECLR
else if (pAsm->m_pManifest->m_sStrongName.m_fFullSign)
{
// Strong name sign the resultant assembly.
@@ -732,6 +733,7 @@ extern "C" int _cdecl wmain(int argc, __in WCHAR **argv)
pParser->msg("Failed to strong name sign output file, error code=0x%08X\n",hr);
}
}
+#endif
if(bClock) cw.cEnd = GetTickCount();
#define ENC_ENABLED
#ifdef ENC_ENABLED
diff --git a/src/ilasm/prebuilt/asmparse.c b/src/ilasm/prebuilt/asmparse.c
new file mode 100644
index 0000000000..be0a26e821
--- /dev/null
+++ b/src/ilasm/prebuilt/asmparse.c
@@ -0,0 +1,4908 @@
+/*
+ * Created by Microsoft VCBU Internal YACC from "asmparse.y"
+ */
+
+#line 2 "asmparse.y"
+
+//
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+//
+//
+// File asmparse.y
+//
+#include "ilasmpch.h"
+
+#include "grammar_before.cpp"
+
+
+#line 16 "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 ELIPSIS 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 TYPEDREF_ 307
+# define UNMANAGED_ 308
+# define FINALLY_ 309
+# define HANDLER_ 310
+# define CATCH_ 311
+# define FILTER_ 312
+# define FAULT_ 313
+# define EXTENDS_ 314
+# define IMPLEMENTS_ 315
+# define TO_ 316
+# define AT_ 317
+# define TLS_ 318
+# define TRUE_ 319
+# define FALSE_ 320
+# define _INTERFACEIMPL 321
+# define VALUE_ 322
+# define VALUETYPE_ 323
+# define NATIVE_ 324
+# define INSTANCE_ 325
+# define SPECIALNAME_ 326
+# define FORWARDER_ 327
+# define STATIC_ 328
+# define PUBLIC_ 329
+# define PRIVATE_ 330
+# define FAMILY_ 331
+# define FINAL_ 332
+# define SYNCHRONIZED_ 333
+# define INTERFACE_ 334
+# define SEALED_ 335
+# define NESTED_ 336
+# define ABSTRACT_ 337
+# define AUTO_ 338
+# define SEQUENTIAL_ 339
+# define EXPLICIT_ 340
+# define ANSI_ 341
+# define UNICODE_ 342
+# define AUTOCHAR_ 343
+# define IMPORT_ 344
+# define ENUM_ 345
+# define VIRTUAL_ 346
+# define NOINLINING_ 347
+# define AGGRESSIVEINLINING_ 348
+# define NOOPTIMIZATION_ 349
+# define UNMANAGEDEXP_ 350
+# define BEFOREFIELDINIT_ 351
+# define STRICT_ 352
+# define RETARGETABLE_ 353
+# define WINDOWSRUNTIME_ 354
+# define NOPLATFORM_ 355
+# define METHOD_ 356
+# define FIELD_ 357
+# define PINNED_ 358
+# define MODREQ_ 359
+# define MODOPT_ 360
+# define SERIALIZABLE_ 361
+# define PROPERTY_ 362
+# define TYPE_ 363
+# define ASSEMBLY_ 364
+# define FAMANDASSEM_ 365
+# define FAMORASSEM_ 366
+# define PRIVATESCOPE_ 367
+# define HIDEBYSIG_ 368
+# define NEWSLOT_ 369
+# define RTSPECIALNAME_ 370
+# define PINVOKEIMPL_ 371
+# define _CTOR 372
+# define _CCTOR 373
+# define LITERAL_ 374
+# define NOTSERIALIZED_ 375
+# define INITONLY_ 376
+# define REQSECOBJ_ 377
+# define CIL_ 378
+# define OPTIL_ 379
+# define MANAGED_ 380
+# define FORWARDREF_ 381
+# define PRESERVESIG_ 382
+# define RUNTIME_ 383
+# define INTERNALCALL_ 384
+# define _IMPORT 385
+# define NOMANGLE_ 386
+# define LASTERR_ 387
+# define WINAPI_ 388
+# define AS_ 389
+# define BESTFIT_ 390
+# define ON_ 391
+# define OFF_ 392
+# define CHARMAPERROR_ 393
+# define INSTR_NONE 394
+# define INSTR_VAR 395
+# define INSTR_I 396
+# define INSTR_I8 397
+# define INSTR_R 398
+# define INSTR_BRTARGET 399
+# define INSTR_METHOD 400
+# define INSTR_FIELD 401
+# define INSTR_TYPE 402
+# define INSTR_STRING 403
+# define INSTR_SIG 404
+# define INSTR_TOK 405
+# define INSTR_SWITCH 406
+# define _CLASS 407
+# define _NAMESPACE 408
+# define _METHOD 409
+# define _FIELD 410
+# define _DATA 411
+# define _THIS 412
+# define _BASE 413
+# define _NESTER 414
+# define _EMITBYTE 415
+# define _TRY 416
+# define _MAXSTACK 417
+# define _LOCALS 418
+# define _ENTRYPOINT 419
+# define _ZEROINIT 420
+# define _EVENT 421
+# define _ADDON 422
+# define _REMOVEON 423
+# define _FIRE 424
+# define _OTHER 425
+# define _PROPERTY 426
+# define _SET 427
+# define _GET 428
+# define _PERMISSION 429
+# define _PERMISSIONSET 430
+# define REQUEST_ 431
+# define DEMAND_ 432
+# define ASSERT_ 433
+# define DENY_ 434
+# define PERMITONLY_ 435
+# define LINKCHECK_ 436
+# define INHERITCHECK_ 437
+# define REQMIN_ 438
+# define REQOPT_ 439
+# define REQREFUSE_ 440
+# define PREJITGRANT_ 441
+# define PREJITDENY_ 442
+# define NONCASDEMAND_ 443
+# define NONCASLINKDEMAND_ 444
+# define NONCASINHERITANCE_ 445
+# define _LINE 446
+# define P_LINE 447
+# define _LANGUAGE 448
+# define _CUSTOM 449
+# define INIT_ 450
+# define _SIZE 451
+# define _PACK 452
+# define _VTABLE 453
+# define _VTFIXUP 454
+# define FROMUNMANAGED_ 455
+# define CALLMOSTDERIVED_ 456
+# define _VTENTRY 457
+# define RETAINAPPDOMAIN_ 458
+# define _FILE 459
+# define NOMETADATA_ 460
+# define _HASH 461
+# define _ASSEMBLY 462
+# define _PUBLICKEY 463
+# define _PUBLICKEYTOKEN 464
+# define ALGORITHM_ 465
+# define _VER 466
+# define _LOCALE 467
+# define EXTERN_ 468
+# define _MRESOURCE 469
+# define _MODULE 470
+# define _EXPORT 471
+# define LEGACY_ 472
+# define LIBRARY_ 473
+# define X86_ 474
+# define IA64_ 475
+# define AMD64_ 476
+# define ARM_ 477
+# define MARSHAL_ 478
+# define CUSTOM_ 479
+# define SYSSTRING_ 480
+# define FIXED_ 481
+# define VARIANT_ 482
+# define CURRENCY_ 483
+# define SYSCHAR_ 484
+# define DECIMAL_ 485
+# define DATE_ 486
+# define BSTR_ 487
+# define TBSTR_ 488
+# define LPSTR_ 489
+# define LPWSTR_ 490
+# define LPTSTR_ 491
+# define OBJECTREF_ 492
+# define IUNKNOWN_ 493
+# define IDISPATCH_ 494
+# define STRUCT_ 495
+# define SAFEARRAY_ 496
+# define BYVALSTR_ 497
+# define LPVOID_ 498
+# define ANY_ 499
+# define ARRAY_ 500
+# define LPSTRUCT_ 501
+# define IIDPARAM_ 502
+# define IN_ 503
+# define OUT_ 504
+# define OPT_ 505
+# define PARAM_ 506
+# define _OVERRIDE 507
+# define WITH_ 508
+# define NULL_ 509
+# define HRESULT_ 510
+# define CARRAY_ 511
+# define USERDEFINED_ 512
+# define RECORD_ 513
+# define FILETIME_ 514
+# define BLOB_ 515
+# define STREAM_ 516
+# define STORAGE_ 517
+# define STREAMED_OBJECT_ 518
+# define STORED_OBJECT_ 519
+# define BLOB_OBJECT_ 520
+# define CF_ 521
+# define CLSID_ 522
+# define VECTOR_ 523
+# define _SUBSYSTEM 524
+# define _CORFLAGS 525
+# define ALIGNMENT_ 526
+# define _IMAGEBASE 527
+# define _STACKRESERVE 528
+# define _TYPEDEF 529
+# define _TEMPLATE 530
+# define _TYPELIST 531
+# define _MSCORLIB 532
+# define P_DEFINE 533
+# define P_UNDEF 534
+# define P_IFDEF 535
+# define P_IFNDEF 536
+# define P_ELSE 537
+# define P_ENDIF 538
+# define P_INCLUDE 539
+#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 2051 "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, 532,
+ -2, 308,
+#if !(YYOPTTIME)
+-1, 621,
+#endif
+ 274, 549,
+ 47, 549,
+ -2, 227,
+#if !(YYOPTTIME)
+-1, 642,
+#endif
+ 40, 307,
+ 60, 307,
+ -2, 549,
+#if !(YYOPTTIME)
+-1, 663,
+#endif
+ 41, 532,
+ -2, 308,
+#if !(YYOPTTIME)
+-1, 686,
+#endif
+ 274, 549,
+ 47, 549,
+ -2, 510,
+#if !(YYOPTTIME)
+-1, 803,
+#endif
+ 123, 232,
+ -2, 549,
+#if !(YYOPTTIME)
+-1, 828,
+#endif
+ 41, 532,
+ -2, 308,
+#if !(YYOPTTIME)
+-1, 953,
+#endif
+ 41, 532,
+ -2, 308,
+#if !(YYOPTTIME)
+-1, 986,
+#endif
+ 41, 532,
+ -2, 308,
+#if !(YYOPTTIME)
+-1, 987,
+#endif
+ 41, 532,
+ -2, 308,
+#if !(YYOPTTIME)
+-1, 1308,
+#endif
+ 41, 532,
+ -2, 308,
+#if !(YYOPTTIME)
+-1, 1309,
+#endif
+ 41, 532,
+ -2, 308,
+#if !(YYOPTTIME)
+-1, 1315,
+#endif
+ 41, 532,
+ -2, 308,
+#if !(YYOPTTIME)
+-1, 1322,
+#endif
+ 41, 532,
+ -2, 308,
+#if !(YYOPTTIME)
+-1, 1447,
+#endif
+ 41, 532,
+ -2, 308,
+#if !(YYOPTTIME)
+-1, 1479,
+#endif
+ 41, 532,
+ -2, 308,
+#if !(YYOPTTIME)
+-1, 1545,
+#endif
+ 41, 532,
+ -2, 308,
+#if !(YYOPTTIME)
+-1, 1562,
+#endif
+ 41, 532,
+ -2, 308,
+
+};
+
+# define YYNPROD 838
+#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, 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, 20, 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, 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, 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, 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, 50, 54,
+ 0, 0, 0, 0, 0, 58, 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, 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, 74, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 78
+};
+#endif
+# define YYLAST 3904
+
+YYSTATIC YYCONST short YYFARDATA YYACT[] = {
+ 699, 1398, 1121, 1466, 658, 1467, 639, 1024, 1465, 878,
+ 1464, 963, 784, 753, 964, 221, 775, 26, 698, 725,
+ 73, 75, 275, 414, 624, 877, 966, 1399, 535, 191,
+ 477, 1503, 150, 788, 751, 756, 1134, 110, 1065, 107,
+ 690, 852, 273, 153, 219, 660, 24, 44, 776, 218,
+ 307, 10, 190, 176, 78, 81, 6, 86, 5, 598,
+ 673, 262, 204, 515, 3, 188, 217, 983, 17, 301,
+ 603, 136, 76, 1550, 1194, 1242, 214, 264, 7, 1238,
+ 1057, 1239, 1113, 1111, 85, 1112, 580, 74, 715, 88,
+ 87, 137, 89, 300, 115, 56, 139, 712, 672, 113,
+ 1058, 98, 112, 178, 179, 180, 181, 74, 272, 696,
+ 322, 519, 1015, 461, 220, 56, 18, 452, 536, 338,
+ 278, 88, 87, 1021, 89, 268, 216, 269, 1240, 225,
+ 56, 265, 277, 277, 1228, 1229, 106, 1226, 1227, 590,
+ 277, 343, 361, 360, 359, 358, 654, 368, 345, 653,
+ 68, 310, 312, 314, 316, 318, 185, 1554, 460, 1126,
+ 1127, 1414, 98, 931, 932, 327, 277, 348, 339, 1027,
+ 342, 778, 1026, 779, 373, 366, 154, 277, 695, 133,
+ 694, 991, 379, 271, 362, 84, 258, 364, 363, 376,
+ 614, 192, 387, 105, 1519, 662, 513, 930, 365, 1059,
+ 369, 202, 203, 371, 370, 1487, 374, 1264, 596, 450,
+ 661, 451, 763, 372, 416, 469, 186, 467, 471, 470,
+ 442, 26, 74, 376, 456, 417, 418, 346, 376, 1559,
+ 352, 472, 474, 599, 353, 305, 483, 388, 88, 87,
+ 596, 89, 410, 1263, 1478, 500, 492, 1314, 457, 441,
+ 24, 1200, 357, 491, 435, 10, 825, 797, 787, 56,
+ 486, 432, 490, 428, 475, 478, 479, 773, 476, 429,
+ 494, 434, 17, 192, 108, 666, 511, 511, 528, 534,
+ 375, 433, 7, 351, 267, 321, 480, 481, 473, 485,
+ 152, 710, 74, 484, 1234, 540, 1345, 116, 1496, 1391,
+ 56, 1540, 499, 80, 79, 498, 543, 493, 1417, 571,
+ 959, 268, 1351, 1544, 574, 348, 575, 154, 576, 436,
+ 18, 266, 548, 1335, 1116, 578, 579, 504, 541, 46,
+ 420, 544, 421, 422, 423, 933, 934, 570, 935, 88,
+ 572, 947, 89, 573, 46, 594, 854, 855, 856, 1128,
+ 640, 641, 600, 135, 198, 88, 87, 962, 89, 199,
+ 1541, 200, 568, 1510, 192, 487, 1341, 201, 612, 154,
+ 755, 482, 277, 674, 1543, 510, 510, 527, 533, 74,
+ 605, 744, 745, 746, 195, 808, 182, 623, 943, 611,
+ 599, 581, 582, 1141, 497, 1233, 700, 1252, 1142, 196,
+ 565, 367, 375, 620, 595, 258, 610, 88, 87, 518,
+ 89, 74, 606, 607, 608, 609, 747, 748, 749, 1542,
+ 643, 613, 599, 537, 340, 341, 634, 1489, 348, 807,
+ 459, 618, 619, 621, 780, 1130, 321, 876, 648, 649,
+ 638, 88, 87, 177, 89, 1231, 88, 87, 847, 89,
+ 152, 781, 702, 754, 347, 650, 664, 1502, 413, 88,
+ 87, 670, 946, 1488, 651, 88, 87, 155, 89, 681,
+ 642, 1518, 1126, 1127, 545, 743, 1118, 177, 993, 994,
+ 995, 996, 177, 587, 505, 859, 352, 1513, 667, 988,
+ 353, 678, 80, 79, 479, 177, 647, 692, 646, 1512,
+ 782, 1511, 61, 62, 47, 63, 536, 1508, 357, 645,
+ 685, 198, 741, 669, 480, 481, 199, 689, 200, 82,
+ 63, 74, 701, 479, 201, 711, 680, 453, 72, 679,
+ 88, 87, 519, 89, 512, 520, 74, 507, 508, 351,
+ 686, 195, 88, 480, 481, 89, 74, 723, 71, 70,
+ 354, 355, 356, 538, 691, 216, 196, 1141, 225, 1506,
+ 1241, 724, 1142, 675, 676, 677, 720, 657, 721, 49,
+ 50, 51, 52, 53, 54, 55, 671, 709, 74, 644,
+ 479, 730, 1504, 80, 79, 714, 80, 79, 348, 49,
+ 50, 51, 52, 53, 54, 55, 719, 74, 1141, 716,
+ 480, 481, 726, 1142, 49, 50, 51, 52, 53, 54,
+ 55, 156, 157, 158, 69, 758, 74, 542, 74, 88,
+ 87, 592, 89, 600, 67, 764, 765, 155, 88, 87,
+ 688, 89, 74, 783, 98, 638, 729, 1320, 1319, 1318,
+ 1317, 750, 74, 697, 325, 74, 703, 1172, 1171, 1170,
+ 1169, 542, 705, 348, 706, 177, 377, 1499, 324, 769,
+ 770, 771, 1337, 1338, 1339, 642, 815, 789, 813, 819,
+ 853, 88, 87, 816, 89, 822, 541, 1180, 801, 802,
+ 80, 79, 798, 823, 88, 812, 806, 89, 74, 66,
+ 818, 626, 627, 628, 74, 1117, 833, 834, 762, 1450,
+ 495, 826, 216, 786, 591, 225, 1439, 800, 793, 803,
+ 74, 809, 796, 636, 846, 824, 382, 383, 384, 385,
+ 817, 152, 74, 857, 74, 56, 629, 630, 631, 922,
+ 74, 740, 821, 49, 50, 51, 52, 53, 54, 55,
+ 1437, 850, 936, 937, 860, 1490, 516, 761, 88, 87,
+ 375, 89, 832, 1327, 844, 1247, 1243, 1244, 1245, 1246,
+ 1179, 1435, 769, 600, 949, 192, 845, 942, 1433, 848,
+ 276, 156, 157, 158, 49, 50, 51, 52, 53, 54,
+ 55, 97, 74, 924, 111, 925, 926, 927, 928, 929,
+ 952, 1001, 1416, 1407, 985, 152, 635, 938, 1406, 277,
+ 1013, 965, 362, 1326, 1011, 74, 354, 355, 356, 442,
+ 1000, 1009, 528, 605, 1404, 585, 954, 584, 583, 145,
+ 1390, 1012, 948, 1388, 586, 799, 960, 955, 277, 1017,
+ 958, 692, 692, 1032, 1378, 1376, 1237, 350, 441, 999,
+ 1008, 817, 1022, 435, 997, 1007, 851, 1374, 1037, 1014,
+ 432, 817, 428, 849, 1019, 1035, 1016, 1018, 429, 1039,
+ 434, 989, 326, 323, 88, 87, 94, 89, 74, 1372,
+ 433, 1033, 1034, 1045, 352, 772, 828, 277, 353, 1030,
+ 80, 79, 479, 1050, 277, 56, 1370, 1368, 691, 691,
+ 88, 87, 348, 89, 74, 954, 357, 337, 155, 348,
+ 1366, 1364, 480, 481, 668, 1362, 817, 1359, 436, 998,
+ 1006, 527, 1356, 1123, 1354, 1350, 56, 1334, 1312, 1055,
+ 152, 1196, 88, 87, 718, 89, 177, 351, 1044, 1053,
+ 193, 615, 1043, 194, 1051, 348, 1042, 352, 1041, 46,
+ 352, 353, 1122, 1023, 768, 820, 1067, 814, 1068, 1126,
+ 1127, 501, 733, 617, 616, 1124, 198, 177, 1132, 357,
+ 145, 199, 357, 200, 88, 87, 577, 89, 758, 201,
+ 564, 1300, 155, 1236, 308, 1119, 455, 109, 1054, 1140,
+ 1129, 92, 529, 1138, 1125, 1394, 195, 1298, 1115, 1185,
+ 351, 1183, 1184, 351, 88, 87, 1186, 89, 1178, 277,
+ 177, 196, 1296, 1491, 1064, 1060, 1061, 1062, 1063, 1025,
+ 1492, 1133, 145, 1182, 1415, 328, 329, 330, 1294, 1181,
+ 956, 96, 1301, 590, 104, 103, 102, 101, 1219, 99,
+ 100, 105, 56, 1, 1175, 1332, 1195, 1173, 1299, 1203,
+ 332, 941, 156, 157, 158, 1167, 1187, 1188, 1189, 1190,
+ 1230, 766, 1202, 1297, 1165, 1232, 1191, 1192, 1193, 80,
+ 79, 479, 588, 1131, 1223, 1225, 1224, 1222, 984, 1295,
+ 1235, 1197, 1400, 88, 87, 1163, 89, 1198, 1161, 1199,
+ 945, 480, 481, 589, 1218, 1176, 189, 708, 1174, 88,
+ 87, 1005, 89, 1003, 1004, 1159, 1168, 155, 1010, 46,
+ 707, 205, 152, 1157, 704, 1166, 633, 1412, 412, 187,
+ 625, 790, 61, 62, 47, 63, 156, 157, 158, 1248,
+ 1177, 192, 192, 192, 192, 177, 1164, 277, 1268, 1162,
+ 46, 192, 192, 192, 331, 1266, 333, 334, 335, 336,
+ 1155, 625, 1251, 192, 1411, 1265, 1160, 1269, 1410, 1271,
+ 1273, 1274, 1255, 1277, 1158, 1279, 1280, 1281, 1282, 1283,
+ 1284, 1285, 1270, 1287, 1288, 1289, 1290, 1291, 1292, 1293,
+ 1254, 1401, 1259, 56, 1302, 1303, 1153, 1305, 1304, 1151,
+ 1272, 1149, 1275, 1276, 1147, 1278, 1221, 1048, 1267, 1047,
+ 836, 1156, 1307, 1286, 354, 355, 356, 1145, 1143, 49,
+ 50, 51, 52, 53, 54, 55, 742, 1316, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 665, 1313, 352, 317, 1154, 454, 353,
+ 1152, 315, 1150, 313, 1328, 1148, 378, 1330, 1331, 521,
+ 1321, 156, 157, 158, 311, 45, 46, 357, 1146, 1144,
+ 1336, 1340, 309, 1333, 817, 41, 43, 354, 355, 356,
+ 354, 355, 356, 1135, 1342, 277, 277, 1140, 1552, 526,
+ 590, 88, 87, 306, 89, 63, 415, 308, 351, 155,
+ 1315, 1343, 308, 1257, 308, 56, 277, 503, 1452, 512,
+ 590, 1451, 507, 508, 140, 308, 1380, 1381, 1382, 1383,
+ 1384, 1385, 1386, 308, 944, 1347, 63, 177, 590, 1539,
+ 590, 1329, 1344, 1392, 1393, 193, 531, 1346, 194, 532,
+ 1397, 1396, 940, 831, 308, 138, 1379, 1402, 1403, 1031,
+ 1524, 590, 923, 1408, 590, 590, 1395, 830, 811, 767,
+ 760, 198, 177, 1405, 717, 566, 199, 349, 200, 258,
+ 303, 792, 1564, 117, 201, 97, 1555, 1553, 1140, 49,
+ 50, 51, 52, 53, 54, 55, 1546, 1523, 817, 1486,
+ 1485, 195, 1484, 1454, 1449, 1446, 1443, 1442, 1438, 56,
+ 524, 1436, 1434, 1432, 1419, 1413, 196, 46, 1409, 1389,
+ 49, 50, 51, 52, 53, 54, 55, 134, 1445, 1387,
+ 1377, 1375, 1373, 1371, 1369, 1367, 1365, 1363, 1361, 1360,
+ 526, 1455, 1456, 1457, 1358, 1357, 1355, 1453, 1353, 1444,
+ 1448, 1352, 63, 156, 157, 158, 1349, 1324, 1348, 1325,
+ 1458, 1323, 523, 1311, 1470, 525, 1310, 1471, 1469, 1468,
+ 1306, 1256, 1253, 258, 1476, 693, 1220, 88, 87, 1114,
+ 89, 1052, 1481, 1038, 1480, 1036, 1029, 1028, 1020, 961,
+ 951, 950, 56, 1498, 939, 1483, 1505, 1507, 1509, 858,
+ 1505, 1507, 1509, 530, 841, 840, 1495, 1507, 1516, 838,
+ 1520, 1517, 1515, 1514, 1522, 1521, 88, 835, 829, 89,
+ 827, 56, 810, 1497, 1500, 1501, 791, 774, 738, 46,
+ 737, 1538, 736, 1493, 735, 734, 49, 50, 51, 52,
+ 53, 54, 55, 732, 731, 1529, 1505, 1507, 1509, 684,
+ 637, 524, 569, 425, 424, 344, 258, 320, 206, 1562,
+ 1547, 1525, 817, 1545, 1479, 1475, 1474, 1473, 1472, 1447,
+ 1534, 1441, 1440, 1431, 1430, 354, 355, 356, 1551, 1429,
+ 1549, 1428, 1427, 1548, 1535, 1536, 1537, 449, 1426, 1425,
+ 1424, 1423, 1561, 63, 1422, 1421, 1560, 1563, 1420, 1418,
+ 1300, 1298, 1296, 523, 1294, 1322, 525, 1175, 1173, 1557,
+ 88, 1558, 1167, 89, 1556, 1526, 1527, 1528, 1530, 1531,
+ 1532, 1533, 1165, 46, 1163, 96, 1161, 1159, 104, 103,
+ 102, 101, 56, 99, 100, 105, 1157, 1155, 1153, 1151,
+ 1149, 1309, 1308, 817, 1250, 1249, 1066, 1056, 1049, 1040,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 987, 986, 953, 843, 59, 842, 839,
+ 837, 208, 259, 210, 228, 212, 213, 49, 50, 51,
+ 52, 53, 54, 55, 728, 41, 43, 727, 713, 687,
+ 683, 682, 663, 88, 632, 602, 89, 601, 593, 567,
+ 547, 546, 61, 62, 47, 63, 46, 496, 419, 411,
+ 874, 386, 319, 223, 304, 522, 514, 868, 517, 869,
+ 870, 871, 509, 506, 56, 502, 302, 222, 36, 184,
+ 93, 33, 468, 466, 465, 46, 464, 463, 244, 462,
+ 227, 243, 215, 209, 245, 246, 247, 248, 249, 250,
+ 251, 252, 253, 254, 255, 256, 257, 863, 864, 865,
+ 95, 59, 226, 224, 207, 208, 259, 210, 228, 212,
+ 213, 211, 879, 31, 56, 1002, 992, 439, 795, 41,
+ 43, 431, 794, 430, 427, 539, 1046, 270, 83, 49,
+ 50, 51, 52, 53, 54, 55, 61, 62, 47, 63,
+ 29, 57, 862, 866, 867, 34, 872, 223, 25, 873,
+ 16, 263, 15, 14, 261, 13, 260, 12, 11, 9,
+ 8, 222, 1086, 4, 2, 234, 242, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 990, 241, 240, 239, 59, 238, 46, 237, 208, 259,
+ 210, 228, 212, 213, 236, 235, 226, 224, 233, 232,
+ 231, 230, 41, 43, 229, 114, 77, 42, 56, 38,
+ 30, 58, 32, 59, 752, 656, 655, 1482, 299, 61,
+ 62, 47, 63, 49, 50, 51, 52, 53, 54, 55,
+ 223, 41, 43, 90, 183, 861, 1139, 757, 785, 1258,
+ 957, 1137, 1136, 604, 222, 1461, 1460, 1459, 61, 62,
+ 47, 63, 1477, 1463, 1462, 60, 35, 1201, 1120, 597,
+ 659, 21, 777, 91, 37, 1069, 739, 65, 64, 197,
+ 875, 39, 40, 0, 426, 0, 0, 0, 0, 226,
+ 224, 0, 982, 981, 980, 0, 975, 974, 973, 972,
+ 0, 970, 971, 105, 0, 979, 978, 977, 976, 0,
+ 0, 0, 969, 967, 0, 0, 49, 50, 51, 52,
+ 53, 54, 55, 0, 0, 0, 0, 0, 0, 0,
+ 38, 30, 58, 32, 59, 0, 19, 20, 46, 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, 0, 60, 35, 968, 0,
+ 0, 0, 21, 0, 0, 37, 444, 1097, 0, 874,
+ 0, 0, 39, 40, 0, 0, 868, 0, 869, 870,
+ 871, 0, 0, 0, 0, 0, 1073, 1074, 0, 1081,
+ 1095, 1075, 1076, 1077, 1078, 0, 1079, 1080, 0, 1096,
+ 1082, 1083, 1084, 1085, 0, 0, 0, 0, 0, 0,
+ 0, 0, 46, 0, 0, 0, 863, 864, 865, 0,
+ 0, 0, 0, 0, 0, 0, 0, 19, 20, 0,
+ 22, 23, 48, 0, 27, 28, 49, 50, 51, 52,
+ 53, 54, 55, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 448, 0, 58, 32, 59, 0, 0, 0,
+ 444, 862, 866, 867, 0, 872, 445, 0, 873, 0,
+ 0, 446, 0, 0, 41, 43, 0, 146, 874, 0,
+ 0, 0, 0, 0, 0, 868, 0, 869, 870, 871,
+ 0, 61, 62, 47, 63, 0, 437, 438, 0, 921,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 447, 0, 0, 0,
+ 0, 0, 0, 0, 0, 863, 864, 865, 49, 50,
+ 51, 52, 53, 54, 55, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 448, 0, 58, 32,
+ 59, 443, 440, 0, 0, 0, 0, 0, 0, 0,
+ 445, 0, 0, 0, 0, 446, 0, 0, 41, 43,
+ 862, 866, 867, 0, 872, 0, 0, 873, 49, 50,
+ 51, 52, 53, 54, 55, 61, 62, 47, 63, 1494,
+ 437, 438, 1071, 1072, 0, 1087, 1088, 1089, 0, 1090,
+ 1091, 0, 0, 1092, 1093, 0, 1094, 0, 0, 0,
+ 447, 0, 0, 0, 0, 0, 0, 0, 0, 1070,
+ 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107,
+ 1108, 1109, 1110, 893, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 443, 440, 920, 0, 0,
+ 0, 0, 885, 886, 0, 894, 911, 887, 888, 889,
+ 890, 0, 891, 892, 0, 912, 895, 896, 897, 898,
+ 893, 0, 49, 50, 51, 52, 53, 54, 55, 0,
+ 0, 0, 0, 0, 920, 146, 0, 0, 0, 885,
+ 886, 0, 894, 911, 887, 888, 889, 890, 0, 891,
+ 892, 0, 912, 895, 896, 897, 898, 0, 0, 0,
+ 909, 0, 913, 0, 0, 175, 0, 915, 0, 151,
+ 148, 163, 161, 170, 0, 164, 165, 166, 167, 0,
+ 168, 169, 917, 0, 171, 172, 173, 174, 563, 0,
+ 0, 142, 162, 152, 0, 0, 0, 909, 0, 913,
+ 141, 147, 0, 0, 915, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 918, 143, 144, 149, 917,
+ 555, 0, 549, 550, 551, 552, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 146, 0, 0, 0, 0,
+ 352, 0, 0, 0, 768, 0, 0, 0, 0, 0,
+ 160, 0, 918, 0, 0, 0, 0, 0, 557, 558,
+ 559, 560, 357, 0, 554, 0, 0, 0, 561, 562,
+ 553, 0, 0, 0, 0, 982, 981, 980, 0, 975,
+ 974, 973, 972, 0, 970, 971, 105, 0, 979, 978,
+ 977, 976, 0, 622, 0, 969, 967, 0, 0, 0,
+ 0, 0, 0, 0, 0, 880, 0, 881, 882, 883,
+ 884, 899, 900, 901, 916, 902, 903, 904, 905, 906,
+ 907, 908, 910, 914, 0, 0, 0, 919, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 880, 0, 881, 882, 883, 884, 899, 900,
+ 901, 916, 902, 903, 904, 905, 906, 907, 908, 910,
+ 914, 968, 88, 87, 919, 89, 0, 0, 0, 0,
+ 155, 0, 556, 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, 352, 0, 0, 0, 353, 0, 0, 141, 147,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 357, 143, 144, 149, 0, 0, 175,
+ 0, 0, 0, 0, 0, 163, 161, 170, 0, 164,
+ 165, 166, 167, 0, 168, 169, 0, 0, 171, 172,
+ 173, 174, 0, 0, 622, 1261, 162, 0, 160, 159,
+ 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, 1262, 0, 0, 0, 0, 141, 147,
+ 0, 0, 0, 0, 156, 157, 158, 0, 0, 0,
+ 0, 1260, 0, 0, 143, 144, 149, 0, 0, 0,
+ 0, 0, 0, 0, 297, 198, 146, 0, 0, 0,
+ 199, 352, 200, 0, 0, 353, 0, 0, 201, 0,
+ 0, 63, 0, 0, 0, 0, 0, 0, 160, 0,
+ 354, 355, 356, 357, 0, 195, 284, 0, 279, 280,
+ 281, 282, 283, 0, 640, 641, 0, 287, 0, 0,
+ 196, 0, 0, 0, 0, 0, 285, 0, 0, 0,
+ 295, 0, 286, 0, 622, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 288, 289, 290, 291, 292, 293,
+ 294, 298, 0, 0, 156, 157, 158, 296, 0, 0,
+ 0, 0, 0, 88, 87, 0, 89, 0, 0, 0,
+ 146, 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, 141,
+ 147, 0, 0, 0, 348, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 143, 144, 149, 274, 1217,
+ 1216, 1211, 0, 1210, 1209, 1208, 1207, 146, 1205, 1206,
+ 105, 0, 1215, 1214, 1213, 1212, 0, 0, 0, 0,
+ 0, 1204, 0, 0, 0, 0, 0, 0, 0, 160,
+ 0, 354, 355, 356, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 640, 641, 982, 981, 980,
+ 0, 975, 974, 973, 972, 0, 970, 971, 105, 0,
+ 979, 978, 977, 976, 0, 274, 0, 969, 967, 0,
+ 0, 0, 0, 88, 87, 0, 89, 0, 0, 0,
+ 0, 155, 0, 0, 175, 156, 157, 158, 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, 0, 0, 0, 0, 0, 0, 141,
+ 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 968, 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, 274, 0, 88, 87, 160,
+ 89, 354, 355, 356, 146, 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, 141, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 156, 157, 158, 0, 143,
+ 144, 149, 274, 805, 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, 160, 171, 172, 173, 174, 146, 0,
+ 177, 142, 162, 0, 0, 0, 0, 804, 0, 0,
+ 141, 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, 156,
+ 157, 158, 0, 0, 0, 0, 274, 0, 0, 0,
+ 160, 159, 0, 0, 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, 0, 0, 0, 0,
+ 141, 147, 0, 0, 0, 0, 156, 157, 158, 0,
+ 0, 0, 0, 0, 274, 0, 143, 144, 149, 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,
+ 160, 171, 172, 173, 174, 0, 0, 177, 142, 162,
+ 0, 0, 0, 0, 0, 0, 0, 759, 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, 146, 0, 0, 0, 0, 156, 157, 158, 0,
+ 0, 0, 0, 0, 0, 88, 87, 160, 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, 146, 0, 0, 0,
+ 0, 141, 147, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 156, 157, 158, 0, 143, 144, 149,
+ 0, 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, 652, 146, 171, 172, 173, 174, 0, 0, 177,
+ 142, 162, 88, 87, 0, 89, 0, 0, 0, 141,
+ 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, 409, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 146, 156, 157, 158,
+ 988, 0, 0, 0, 0, 0, 0, 0, 0, 458,
+ 0, 0, 0, 0, 391, 0, 0, 0, 407, 0,
+ 0, 389, 390, 0, 0, 0, 393, 394, 405, 395,
+ 396, 397, 398, 399, 400, 401, 402, 392, 0, 0,
+ 0, 0, 0, 406, 0, 0, 404, 0, 0, 0,
+ 146, 0, 0, 403, 722, 0, 0, 0, 0, 0,
+ 0, 0, 408, 0, 0, 156, 157, 158, 488, 175,
+ 489, 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, 141, 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, 160, 0, 0, 0, 0, 141,
+ 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 143, 144, 149, 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, 0, 142, 162, 0, 160,
+ 0, 0, 0, 0, 0, 141, 147, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 143, 144, 149, 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,
+ 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 143, 144, 149, 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, 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, 160
+};
+
+YYSTATIC YYCONST short YYFARDATA YYPACT[] = {
+-1000, 1543,-1000, 566, 501,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000, 491, 426, 425, 405,-1000,-1000,-1000, 28,
+ 28, -454, 39, 39,-1000,-1000,-1000, 396,-1000, -129,
+ 411,-1000, 890, 743, 7, 886, 28, -366, -369,-1000,
+ -171, 777, 7, 777,-1000,-1000,-1000, 90, 2292, 411,
+ 411, 411, 411,-1000,-1000, 124,-1000,-1000,-1000, -162,
+ 1048,-1000,-1000, 1046, 7, 7,-1000,-1000, 1403,-1000,
+-1000,-1000,-1000,-1000,-1000,-1000, 28, -139,-1000,-1000,
+-1000,-1000, 359, -132, 2954, 1220,-1000,-1000,-1000,-1000,
+ 2430,-1000, 28,-1000, 1317,-1000, 1308, 1644, 7, 1233,
+ 1212, 1204, 1193, 1191, 1186, 1642, 1486, 18,-1000, 28,
+ 600, 662,-1000,-1000, 95, 1220, 411, 2954,-1000,-1000,
+-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000,-1000, 1484, 166, 1303, 448, -244, -245, -246,
+ -247, 359,-1000, -118, 359, 661, 368,-1000,-1000, -76,
+-1000, 3547, 186, 1189,-1000,-1000,-1000,-1000,-1000, 3383,
+-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+ 435,-1000,-1000,-1000,-1000,-1000, 1220, 1641, 326, 1220,
+ 1220, 1220,-1000, 3222, 79,-1000,-1000, 1639, 1047, 2854,
+-1000, 3547,-1000,-1000,-1000, 216, 216,-1000, 1638,-1000,
+-1000, 29, 1483, 1482, 1779, 1432,-1000,-1000, 28,-1000,
+ 28, 77,-1000,-1000,-1000,-1000, 1170,-1000,-1000,-1000,
+-1000,-1000, 885, 28, 3183,-1000, 67, -94,-1000,-1000,
+ 424, 28, 39, 228, 7, 424, 661, 3328, 2954, -95,
+ 216, 2854, 1637,-1000, 282,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+ 826, 71, 1114, 857,-1000, 87,-1000, 298, 359,-1000,
+-1000, 2954,-1000,-1000, 181, 899, 216, 411,-1000,-1000,
+-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000,-1000,-1000,-1000,-1000,-1000, 1631, 1630, 2084,
+ 877, 275, 1301, 1629, 79, 1481, 0,-1000, 28, 0,
+-1000, 39,-1000, 28,-1000, 28,-1000, 28,-1000,-1000,
+-1000,-1000, 873,-1000, 28, 28,-1000, 1220,-1000,-1000,
+-1000, -387,-1000,-1000,-1000,-1000,-1000, 662, 488, 94,
+-1000,-1000, 1220, 1022,-1000, 1292, 581, 1628,-1000, 82,
+ 411, 115,-1000,-1000,-1000, 1627, 1625, 3547, 411, 411,
+ 411, 411,-1000, 359,-1000,-1000, 3547, 604,-1000, 1220,
+-1000, -90,-1000, 899, 838, 861, 860, 411, 411, 2693,
+-1000,-1000,-1000,-1000,-1000,-1000, 28, 1292, 1081,-1000,
+-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000,-1000,-1000,-1000, 362,-1000,-1000,-1000, 1624,
+ 1045,-1000, 673, 1479,-1000,-1000, 2553,-1000,-1000, 28,
+-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 386,
+ 375, 373,-1000,-1000,-1000,-1000,-1000, 28, 28, 332,
+ 3115,-1000,-1000, -214, -217,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000, -65, 1622,-1000, 28, 1165, 1, 216, 813,
+ 28,-1000, -94, 63, 63, 63, 63, 2954, 282,-1000,
+-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+ 1621, 1620, 1478,-1000,-1000,-1000, 2693,-1000,-1000,-1000,
+-1000, 1292, 1619, 7, 3547,-1000, 424, 1320,-1000, -136,
+ -138,-1000,-1000, -356,-1000,-1000, 7, 354, 391, 7,
+-1000,-1000, 1043,-1000,-1000, 7,-1000, 7,-1000, 1039,
+ 1026,-1000,-1000, 411, -177, -371, 1618,-1000,-1000,-1000,
+-1000, 411, -380,-1000,-1000, -350,-1000,-1000,-1000, 1300,
+-1000, 831, 411, 3547, 1220, 3493, 28, 53, 1187,-1000,
+-1000,-1000,-1000,-1000,-1000,-1000, 1617,-1000,-1000,-1000,
+-1000,-1000,-1000, 1614,-1000,-1000, 1317, 53, 1473,-1000,
+ 1472, 859, 1464, 1463, 1461, 1459, 1457,-1000, 468, 1148,
+-1000, 86, 1220,-1000,-1000,-1000, 52, 411, 53, 330,
+ 108, 3021,-1000,-1000, 1296, 1220,-1000, 654,-1000,-1000,
+ -63, 2954, 2954, 989, 1295, 899, 1220, 1220, 1220, 1220,
+-1000, 2392,-1000, 1220,-1000, 411, 411, 411, 782, 1220,
+ -7, 1220, 147, 1456,-1000, 128,-1000,-1000,-1000,-1000,
+-1000,-1000, 28,-1000, 1292,-1000,-1000, 661, -16, 1051,
+-1000,-1000, 1220, 1455, 1226,-1000,-1000,-1000,-1000,-1000,
+-1000, -17, 216, 734, 2954, 2787, 59, 488, 1451, 1294,
+-1000,-1000, 3493, -65, 854, 28, -22, 3547, 28, 1220,
+ 852,-1000,-1000,-1000, 424,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000, 28, 39,-1000, -18, 1220, 53, 1449, 836,
+ 1447, 1293, 1279,-1000, 79, 28, 28, 1446, 1132,-1000,
+-1000, 1292, 1600, 1438, 1599, 1434, 1433, 1598, 1596, 1220,
+ 411,-1000, 411, 28, 131, 411, 7, 2954, 411, 753,
+ 902, 192, -157, 1428, 96, 1824, 120, 2016, 28,-1000,
+ 1291,-1000, 883,-1000, 883, 883, 883, 883, 883, -120,
+-1000, 28, 28, 411,-1000,-1000,-1000,-1000,-1000,-1000,
+ 1220, 1423, 1278, 980,-1000,-1000, 263, 1260, 1019, 199,
+ 78,-1000, -42, 28, 1420, 1419,-1000, 3547, 1595, 1189,
+ 1189, 1189, 411, 411,-1000, 958, 270, 128,-1000,-1000,
+-1000,-1000,-1000, 1418, 232, 1635, 1007, -22, 1594, 1593,
+ 3439,-1000,-1000, 1685, 56, 666, 973, -22, 3547, 28,
+ 1220, -337, 411, 1220,-1000,-1000, 3547,-1000,-1000, 1220,
+-1000, -65, 192, 1417, -266,-1000,-1000, 1220, 2693, 850,
+ 948, -144, -147, 1416, 1415, 411, 1288,-1000, -65,-1000,
+ 424, 424,-1000,-1000,-1000,-1000, 354,-1000,-1000,-1000,
+-1000,-1000,-1000,-1000, 1189, 1220, 1414, 28, 1220, 1412,
+-1000, 411, -22, 1579, 845, 843, 839, 835,-1000, 53,
+ 1715,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000, 1131, 1129, 1578, 948, 79, 1410, 887, 7,
+ 1577, -400, -78,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000,-1000,-1000, 724,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000,-1000,-1000,-1000,-1000, 1576, 1576,-1000, 1576,
+ 1750,-1000,-1000, -412,-1000, -402,-1000,-1000, -417,-1000,
+-1000,-1000, 1408,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+ 79,-1000,-1000,-1000,-1000,-1000, 61, 432, 1220,-1000,
+ 53, 630, 224,-1000, 3021, 312, 1002,-1000,-1000,-1000,
+-1000,-1000, 899, -65, 1189, 1220,-1000, 411, 1219, 2954,
+-1000,-1000,-1000, 200,-1000,-1000,-1000, 1158, 1157, 1144,
+ 1141, 1139, 1136, 1100, 1063, 1055, 1038, 1035, 1014, 1005,
+ 366, 997, 994, 7, 637, 1051, -65, -65, 28, 934,
+-1000,-1000,-1000, 661, 661, 661, 661,-1000,-1000,-1000,
+-1000,-1000,-1000, 661, 661, 661,-1000,-1000,-1000,-1000,
+-1000, -434, 2693, 828,-1000, 661, 1220, 1187,-1000, 79,
+-1000, 79, -23,-1000,-1000, 2602, 79, 28,-1000,-1000,
+ 1220,-1000, 1405,-1000,-1000, 1128,-1000,-1000, -301, 1050,
+ 2016,-1000,-1000,-1000,-1000, 1292,-1000, -254, -257, 28,
+-1000,-1000,-1000,-1000, 352, 169, 53, 882, 745,-1000,
+-1000,-1000,-1000,-1000,-1000,-1000, -423,-1000,-1000, 37,
+-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000, 475,-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, 28,-1000,
+-1000,-1000,-1000, 1575, 1292, 1574,-1000,-1000,-1000,-1000,
+-1000, 274, 1401, 1219,-1000, 128, 1400, 1239,-1000, 2348,
+-1000,-1000,-1000, -56, 28, 829, 28, 2650, 28, 314,
+ 28, 795, 28, 39, 28, 28, 28, 28, 28, 28,
+ 28, 39, 28, 28, 28, 28, 28, 28, 28, 978,
+ 962, 947, 931, 28, 28, -160, 28, 1399, 1292,-1000,
+-1000, 1572, 1571, 1395, 1392, 825,-1000,-1000,-1000,-1000,
+-1000,-1000,-1000,-1000, 216, -27,-1000, 1240,-1000,-1000,
+ -22,-1000,-1000, 1292,-1000, 1570, 1569, 1568, 1567, 1566,
+ 1557, 356, 1556, 1554, 1552, 1542, 1538, 1537,-1000,-1000,
+-1000, 354,-1000, 1535, 1390, 1386,-1000,-1000,-1000,-1000,
+ 1388,-1000, 710, 28,-1000, 1267, 28, 28, 974, 53,
+ 824,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 60, 28,
+ 381, 241,-1000,-1000,-1000,-1000,-1000, 2954, 205,-1000,
+-1000,-1000, 1011, 1387, 1385, 822, 49, 1380, 1377, 821,
+ 1375, 819, 1374, 1373, 814, 1368, 1367, 812, 1366, 808,
+ 1365, 807, 1364, 794, 1363, 793, 1362, 776, 1361, 754,
+ 1360, 742, 1359, 741, 39, 28, 28, 28, 28, 28,
+ 28, 28, 1358, 730, 1348, 727,-1000, 174, -65, -65,
+-1000,-1000, 923, 3547, -22, -65, 1012, 1534, 1532, 1531,
+ 1530, 1113, -65,-1000,-1000,-1000,-1000, 28, 721, 53,
+ 705, 700, 28, 1292,-1000,-1000, 1347, 1090, 1086, 1049,
+ 1344,-1000, 36,-1000, 953, 699, 45,-1000,-1000,-1000,
+ 1529, 1343,-1000,-1000, 1528,-1000, 1525,-1000,-1000, 1524,
+-1000,-1000, 1521,-1000, 1520,-1000, 1519,-1000, 1518,-1000,
+ 1512,-1000, 1511,-1000, 1509,-1000, 1504,-1000, 1503, 1342,
+ 675, 1341, 668, 1340, 647, 1337, 613,-1000, 1502,-1000,
+ 1501,-1000, 1336, 1335,-1000, 2693, 1012, 1334, 1499,-1000,
+ 398, 354, 1333, 606,-1000, 1247,-1000, 2053, 1332,-1000,
+ 28, 28, 28,-1000,-1000, 2650,-1000,-1000,-1000,-1000,
+-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000,-1000, 1498,-1000, 1497,-1000, 1496,-1000, 1495,
+-1000,-1000,-1000,-1000, -30, 1494, 948, -65,-1000,-1000,
+-1000, 53,-1000, 887,-1000, 1331, 1329, 1328,-1000, 164,
+ 704, 2188, 257, 616, 416, 541, 518, 466, 322, 460,
+ 458, 446,-1000,-1000,-1000,-1000, 430, 153, -22, -65,
+-1000, 1326, 1207, 1265,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000, 38,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000,-1000,-1000, 319, 378, 333, 272,-1000,-1000,
+-1000, 1493, 1325,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 1490, 53,
+-1000,-1000,-1000,-1000,-1000, -65, -435, 28, 1227, 1316,
+ -199, 1315,-1000,-1000, 216,-1000, 3547, 2693, -45, -22,
+ 1012, 1489, -65, 1311,-1000
+};
+
+YYSTATIC YYCONST short YYFARDATA YYPGO[] = {
+ 0, 53, 57, 6, 1900, 43, 40, 29, 1899, 0,
+ 1898, 1897, 1896, 195, 50, 1895, 1893, 2, 1892, 48,
+ 38, 1, 27, 30, 31, 4, 1890, 45, 22, 59,
+ 1889, 136, 39, 9, 25, 7, 13, 1888, 41, 1887,
+ 14, 26, 1884, 1883, 5, 3, 8, 10, 1882, 1877,
+ 1876, 1875, 32, 33, 70, 1873, 1872, 1871, 1870, 12,
+ 1869, 1868, 11, 1867, 35, 1866, 18, 36, 16, 24,
+ 42, 23, 458, 65, 1276, 52, 127, 1864, 1863, 1848,
+ 1847, 1846, 1845, 19, 34, 1844, 1353, 1837, 1836, 28,
+ 784, 119, 1835, 47, 1245, 1834, 1831, 1830, 1829, 1828,
+ 1825, 1824, 1817, 1815, 1813, 1812, 1811, 1796, 1795, 1033,
+ 1794, 64, 62, 1793, 58, 150, 56, 76, 1790, 1789,
+ 49, 1788, 1787, 1786, 1785, 1784, 1783, 61, 1782, 1781,
+ 1780, 66, 114, 44, 1778, 15, 284, 1775, 1771, 1770,
+ 1758, 1757, 1755, 1754, 1753, 1752, 1751, 1748, 1747, 770,
+ 1746, 1745, 1743, 1742, 1741, 1734, 1713, 1712, 60, 1711,
+ 1710, 113, 1709, 1708, 1707, 98, 1706, 1704, 1703, 1702,
+ 1701, 1700, 1699, 69, 1696, 67, 1698, 63, 1695, 484,
+ 1693, 1692, 1688, 1686, 1685, 1473
+};
+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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 524,
+ 525, 459, 527, 528,-133,-134,-135, 531, 532,-139,
+ 408,-152, 410,-170,-137, 454,-176, 462, 407, 469,
+ 470, 429, -87, 430, -93, -94, 273, 448, 529, 533,
+ 534, 535, 536, 537, 538, 539, 59,-138, 409, 411,
+ 453, 446, 447, 449, -10, -11, 123, 123,-115, 123,
+ 123, 123, 123, -9, 264, -9, 526, -88, -24, 265,
+ 264, -24, 123,-140, 314, -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, 468, 468, -92, -1, 468, -86, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ 443, 444, 445, -31, -86, 263, -28, -70, -74, -93,
+ -94, 306, 297, 322, 323,-149, 33, 307, 276, 324,
+ -52, 275, 91, -5, -76, 268, 412, 413, 414, 357,
+ 356, 278, 298, 277, 281, 282, 283, 284, 286, 287,
+ 279, 290, 291, 292, 293, 271, -1, 296, -1, -1,
+ -1, -1, 262, -77,-172, 318, 378, 61, -73, 40,
+ -75, -7, -76, 269, 272, 325, 340, -8, 295, 300,
+ 302, 308, -31, -31,-112,-109, 125,-155, 415,-156,
+ 417,-154, 419, 420,-117,-157, -2,-131,-120,-133,
+-132,-135, 471, 457, 507,-158, 506,-160, 418, -95,
+ -96, -97, -98, -99,-108,-100,-101,-102,-103,-104,
+-105,-106,-107,-159,-163, 394, 395, 396, 397, 398,
+ 399, 400, 401, 402, 403, 404, 405, 406, 123, 416,
+-123,-125,-127,-129, -9, -1, 460,-136, -70, -76,
+-141, 315, -71, -70, 91, -28,-149, 46, -7, 328,
+ 329, 330, 331, 332, 326, 346, 352, 337, 364, 365,
+ 366, 367, 368, 369, 370, 350, 377, 294, 371, -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, 353, 354,
+ 355, 472, 378, 474, 475, 476, 477, -90, -91, -1,
+ 329, 330, -1, -71, 41, -36, 61, 288, 262, 44,
+ 389, 91, 38, 42, 358, 359, 360, 60, 389, 389,
+ 389, 389, -70, 306, -70, -75, -7, 33, -9, -1,
+ 280, 279, 289, -28, -1, -76, 42, 470, 47, -28,
+ 270, 272, 281, 282, 283, 284, 40, -36, -1, 329,
+ 330, 322, 345, 334, 335, 337, 338, 339, 340, 341,
+ 342, 343, 344, 361, 354, 336, 351, 326, 370, 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, 451, 452,-148,
+ 507,-133,-135, 506, 321, 421, 426, 471, 407, 125,
+ -9, -9, 40, 450, 58, 91, -9, -71, 356, 363,
+ 91,-161,-162,-164,-166,-167,-168, 311,-169, 309,
+ 313, 312, -9, -2, -9, -24, 40, -23, -24, 266,
+ 286, 287, -31, -9, -2, -75, -28, -76, 270, 272,
+ -71, -36, 341,-175, -7, -72, 40,-115,-158, -2,
+ -9, 125,-178, 461,-131,-179,-180, 466, 467,-181,
+-132,-135, 463, 125,-183,-177,-179,-182, 338, 461,
+ 464, 125,-184, 459, 407, 462, 296,-132,-135, 125,
+-185, 459, 462,-132,-135, -89, 419, 125,-136,-142,
+ -71, -1, 470, -7, -1, -13, 40, 40, -28, 328,
+ 329, 330, 331, 376, 370, 326, 478, 364, 365, 366,
+ 367, 374, 375, 294, 93, 125, 44, 40, -2, 41,
+ -23, -9, -23, -24, -9, -9, -9, 93, -9, -9,
+ 473, -1, -1, 330, 329, 327, 336, 389, 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, 329, 330, 331, 364,
+ 365, 366, 40, 61, -36, 123, 40, 41, -71, -3,
+ 372, 373, -1, -9,-115, 123, 123, 123, -9, -9,
+ 123, -71, 356, 363, 363, -81, -82, -91, -25, -26,
+ -27, 275, -13, 40, -9, 58, 274, -7, 91, -1,
+ -9,-161,-165,-158, 310,-165,-165,-165, -71,-158,
+ -2, -9, 40, 40, 41, -71, -1, 40, -31, -28,
+ -6, -2, -9, 125, 316, 316, 465, -31, -66, -9,
+ 42, -36, 61, -31, 61, -31, -31, 61, 61, -1,
+ 468, -9, 468, 40, -1, 468,-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, 389, 329, 330, 331, 364, 365, 366,
+ -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, 323, 372, -9, -59, -61, -73, 274, -53, -22,
+ 60, 41, 125,-112,-145,-147,-127, 274, -7, 91,
+ -1, -71, -71, -1, 370, 326, -7, 370, 326, -1,
+ 41, 44, -28, -25, 93, -9, -3, -1, -28, -9,
+ 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, 317, -1, -31,
+ -71, 93, -38, 478, 503, 504, 505, -9, 41, 389,
+ -83, 41, 386, 341, 342, 343, 387, 388, 301, 303,
+ 304, 305, 390, 393, 294, -4, 317, -34, -33,-153,
+ 479, 481, 482, 483, 484, 276, 277, 281, 282, 283,
+ 284, 286, 287, 257, 279, 290, 291, 292, 293, 485,
+ 486, 487, 489, 490, 491, 492, 493, 494, 495, 334,
+ 496, 280, 289, 336, 497, 341, 488, 356, 389, 501,
+ 271, 123, -9, 41, -14, -14, -14, -14, -14, -14,
+ 317, 283, 284, 455, 456, 458, -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, 41, 125, -62, -40,-135, -41, 298, 363, 297,
+ 286, 287, 284, 283, 282, 281, 293, 292, 291, 290,
+ 279, 278, 277,-175, 61, -3, 40, 40, 91, -54,
+ 125, 125,-150, 422, 423, 424, 425,-120,-132,-133,
+-135, 125,-151, 427, 428, 425,-132,-120,-133,-135,
+ 125, -3, -28, -9, -93, 449, -1, -28, -27, -38,
+ 41, 389, -71, 93, -35, 61, 316, 316, 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, 480, 500, 277,
+ 281, 282, 283, 284, 280, -20, 40, -20, -20, -15,
+ 509, 482, 483, 276, 277, 281, 282, 283, 284, 286,
+ 287, 279, 290, 291, 292, 293, 42, 485, 486, 487,
+ 489, 490, 493, 494, 496, 280, 289, 257, 510, 511,
+ 512, 513, 514, 515, 516, 517, 518, 519, 520, 521,
+ 522, 495, 487, 499, 41, -2, 263, 263, 44, -84,
+ -37, -17, -9, 283, -36, -70, 319, 320, 125, -64,
+ 123, 61, -25, -1, -67, 44, -56, -57, -71, -65,
+-135, 357, 362, 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, 508, -71, 93, -1, -2, -2,
+ 274, -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, 391, 392, 391, 392,
+ -9, 93, -9, 43, 125, -36, 91, 91, 502, 44,
+ 91, 523, 38, 281, 282, 283, 284, 280, -9, 40,
+ 40, -62, 123, 41, -67, -68, 41, 44, -60, -52,
+ 363, 297, 345, 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, 40, -3, 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, -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, 324, 378, 379, 380, 308,
+ 381, 382, 383, 384, 333, 347, 348, 349, 294, 44,
+ 263, 41, 41, 41, 41, 40, 41, 40, -36, -25,
+ 508, -9, 41, 41, 356, 41, -7, -28, -71, 274,
+ -3, -21, 40, -25, 41 };
+YYSTATIC YYCONST short YYFARDATA YYDEF[]={
+
+ 1, -2, 2, 0, 0, 329, 6, 7, 8, 9,
+ 10, 11, 0, 0, 0, 0, 16, 17, 18, 0,
+ 0, 766, 0, 0, 24, 25, 26, 0, 28, 135,
+ 0, 266, 204, 0, 425, 0, 0, 772, 105, 829,
+ 92, 0, 425, 0, 83, 84, 85, 0, 0, 0,
+ 0, 0, 0, 57, 58, 0, 60, 108, 259, 381,
+ 0, 751, 752, 217, 425, 425, 139, 1, 0, 782,
+ 800, 818, 832, 19, 41, 20, 0, 0, 22, 42,
+ 43, 23, 29, 137, 0, 104, 38, 39, 36, 37,
+ 217, 184, 0, 378, 0, 385, 0, 0, 425, 388,
+ 388, 388, 388, 388, 388, 0, 0, 426, 427, 0,
+ 754, 0, 772, 808, 0, 93, 0, 0, 736, 737,
+ 738, 739, 740, 741, 742, 743, 744, 745, 746, 747,
+ 748, 749, 750, 0, 0, 33, 0, 0, 0, 0,
+ 0, 0, 662, 0, 0, 217, 0, 678, 679, 0,
+ 683, 0, 0, 543, 230, 545, 546, 547, 548, 0,
+ 483, 685, 686, 687, 688, 689, 690, 691, 692, 693,
+ 0, 698, 699, 700, 701, 702, 549, 0, 52, 54,
+ 55, 56, 59, 0, 380, 382, 383, 0, 61, 0,
+ 71, 0, 210, 211, 212, 217, 217, 215, 0, 218,
+ 219, 0, 0, 0, 0, 0, 5, 330, 0, 332,
+ 0, 0, 336, 337, 338, 339, 0, 341, 342, 343,
+ 344, 345, 0, 0, 0, 351, 0, 0, 328, 498,
+ 0, 0, 0, 0, 425, 0, 217, 0, 0, 0,
+ 217, 0, 0, 329, 0, 484, 485, 486, 487, 488,
+ 489, 490, 491, 492, 493, 494, 495, 496, 356, 363,
+ 0, 0, 0, 0, 21, 768, 767, 0, 29, 544,
+ 107, 0, 136, 551, 0, 554, 217, 0, 308, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 0, 0, 0,
+ 0, 0, 387, 0, 0, 0, 0, 399, 0, 0,
+ 400, 0, 401, 0, 402, 0, 403, 0, 404, 424,
+ 102, 428, 0, 753, 0, 0, 763, 771, 773, 774,
+ 775, 0, 777, 778, 779, 780, 781, 0, 0, 827,
+ 830, 831, 94, 712, 713, 714, 0, 0, 31, 0,
+ 0, 705, 667, 668, 669, 0, 0, 528, 0, 0,
+ 0, 0, 661, 0, 664, 225, 0, 0, 675, 677,
+ 680, 0, 682, 684, 0, 0, 0, 0, 0, 0,
+ 228, 229, 694, 695, 696, 697, 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, 213, 214, 0,
+ 220, 221, 222, 223, 64, 68, 3, 140, 329, 0,
+ 0, 0, 168, 169, 170, 171, 172, 0, 0, 0,
+ 0, 178, 179, 0, 0, 233, 247, 808, 105, 4,
+ 331, 333, -2, 0, 340, 0, 0, 0, 217, 0,
+ 0, 357, 359, 0, 0, 0, 0, 0, 0, 373,
+ 374, 371, 499, 500, 501, 502, 497, 503, 504, 44,
+ 0, 0, 0, 506, 507, 508, 0, 511, 512, 513,
+ 514, 515, 0, 425, 0, 519, 521, 0, 360, 0,
+ 0, 12, 783, 0, 785, 786, 425, 0, 0, 425,
+ 793, 794, 0, 13, 801, 425, 803, 425, 805, 0,
+ 0, 14, 819, 0, 0, 0, 0, 825, 826, 15,
+ 833, 0, 0, 836, 837, 765, 769, 27, 30, 138,
+ 142, 0, 0, 0, 40, 0, 0, 289, 0, 185,
+ 186, 187, 188, 189, 190, 191, 0, 193, 194, 195,
+ 196, 197, 198, 0, 205, 384, 0, 0, 0, 392,
+ 0, 0, 0, 0, 0, 0, 0, 96, 756, 0,
+ 776, 798, 806, 809, 810, 811, 0, 0, 0, 0,
+ 0, 716, 721, 722, 34, 47, 665, 0, 703, 706,
+ 707, 0, 0, 0, 529, 530, 48, 49, 50, 51,
+ 663, 0, 674, 676, 681, 0, 0, 0, 0, 550,
+ 0, -2, 705, 0, 106, 154, 125, 126, 127, 128,
+ 129, 130, 0, 379, 62, 75, 69, 217, 0, 526,
+ 305, 306, -2, 0, 0, 139, 236, 250, 173, 174,
+ 818, 0, 217, 0, 0, 0, 217, 0, 0, 533,
+ 534, 536, 0, -2, 0, 0, 0, 0, 0, 353,
+ 0, 358, 364, 375, 0, 365, 366, 367, 372, 368,
+ 369, 370, 0, 0, 505, 0, -2, 0, 0, 0,
+ 0, 524, 525, 355, 0, 0, 0, 0, 0, 787,
+ 788, 791, 0, 0, 0, 0, 0, 0, 0, 820,
+ 0, 824, 0, 0, 0, 0, 425, 0, 552, 0,
+ 0, 260, 0, 0, 289, 0, 200, 555, 0, 386,
+ 0, 391, 388, 389, 388, 388, 388, 388, 388, 0,
+ 755, 0, 0, 0, 812, 813, 814, 815, 816, 817,
+ 828, 0, 723, 0, 75, 32, 0, 717, 0, 0,
+ 0, 666, 705, 709, 0, 0, 673, 0, 668, 539,
+ 540, 541, 0, 0, 224, 0, 0, 154, 149, 150,
+ 151, 152, 153, 0, 0, 78, 65, 0, 0, 0,
+ 528, 216, 164, 0, 0, 0, 0, 0, 0, 0,
+ 181, 0, 0, -2, 234, 235, 0, 248, 249, 807,
+ 334, 308, 260, 0, 346, 348, 349, 307, 0, 0,
+ 202, 0, 0, 0, 0, 0, 0, 517, -2, 520,
+ 521, 521, 361, 362, 784, 789, 0, 797, 792, 795,
+ 802, 804, 770, 796, 821, 822, 0, 0, 835, 0,
+ 141, 553, 0, 0, 0, 0, 0, 0, 285, 0,
+ 0, 288, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 0, 0, 0, 202, 0, 0, 262, 0,
+ 0, 0, 560, 561, 562, 563, 564, 565, 566, 567,
+ 568, 569, 570, 571, 0, 576, 577, 578, 579, 585,
+ 586, 587, 588, 589, 590, 591, 610, 610, 594, 610,
+ 612, 598, 600, 0, 602, 0, 604, 606, 0, 608,
+ 609, 264, 0, 390, 393, 394, 395, 396, 397, 398,
+ 0, 97, 98, 99, 100, 101, 758, 760, 799, 710,
+ 0, 0, 0, 715, 716, 0, 37, 35, 704, 708,
+ 670, 671, 531, -2, 542, 226, 148, 0, 158, 143,
+ 155, 134, 63, 74, 76, 77, 432, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 425, 0, 526, -2, -2, 0, 0,
+ 165, 166, 237, 217, 217, 217, 217, 242, 243, 244,
+ 245, 167, 251, 217, 217, 217, 255, 256, 257, 258,
+ 175, 0, 0, 0, 182, 217, 231, 0, 535, 537,
+ 335, 0, 0, 352, 354, 0, 0, 0, 45, 46,
+ 509, 516, 0, 522, 523, 0, 823, 834, 768, 147,
+ 555, 309, 310, 311, 312, 289, 287, 0, 0, 0,
+ 183, 201, 192, 580, 0, 0, 0, 0, 0, 605,
+ 572, 573, 574, 575, 599, 592, 0, 593, 595, 596,
+ 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
+ 623, 0, 628, 629, 630, 631, 632, 636, 637, 638,
+ 639, 640, 641, 642, 643, 644, 646, 647, 648, 649,
+ 650, 651, 652, 653, 654, 655, 656, 657, 658, 659,
+ 660, 601, 603, 607, 199, 95, 757, 759, 0, 724,
+ 725, 728, 729, 0, 731, 0, 726, 727, 711, 718,
+ 78, 0, 0, 158, 157, 154, 0, 144, 145, 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, 527, 238, 239, 240,
+ 241, 252, 253, 254, 217, 0, 180, 0, 538, 347,
+ 0, 203, 429, 430, 431, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 376, 377,
+ 518, 0, 764, 0, 0, 0, 300, 301, 302, 303,
+ 0, 581, 0, 0, 263, 0, 0, 0, 0, 0,
+ 0, 634, 635, 624, 625, 626, 627, 645, 762, 0,
+ 0, 0, 78, 672, 156, 159, 160, 0, 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, 423, 0, -2, -2,
+ 208, 209, 0, 0, 0, -2, 161, 0, 0, 0,
+ 0, 0, -2, 261, 286, 304, 582, 0, 0, 0,
+ 0, 0, 0, 597, 633, 761, 0, 0, 0, 0,
+ 0, 719, 0, 146, 0, 0, 0, 90, 433, 434,
+ 0, 0, 436, 437, 0, 438, 0, 405, 407, 0,
+ 406, 408, 0, 409, 0, 410, 0, 411, 0, 412,
+ 0, 417, 0, 418, 0, 419, 0, 420, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 421, 0, 422,
+ 0, 67, 0, 0, 163, 0, 161, 0, 0, 162,
+ 0, 0, 0, 0, 584, 0, 558, 555, 0, 730,
+ 0, 0, 0, 735, 720, 0, 91, 89, 474, 435,
+ 477, 481, 458, 461, 464, 466, 468, 470, 464, 466,
+ 468, 470, 413, 0, 414, 0, 415, 0, 416, 0,
+ 468, 472, 206, 207, 0, 0, 202, -2, 790, 313,
+ 583, 0, 557, 559, 611, 0, 0, 0, 79, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 464, 466, 468, 470, 0, 0, 0, -2,
+ 246, 0, 0, 0, 732, 733, 734, 455, 475, 476,
+ 456, 478, 0, 480, 457, 482, 439, 459, 460, 440,
+ 462, 463, 441, 465, 442, 467, 443, 469, 444, 471,
+ 445, 446, 447, 448, 0, 0, 0, 0, 453, 454,
+ 473, 0, 0, 350, 265, 314, 315, 316, 317, 318,
+ 319, 320, 321, 322, 323, 324, 325, 326, 0, 0,
+ 479, 449, 450, 451, 452, -2, 0, 0, 0, 0,
+ 0, 0, 556, 176, 217, 327, 0, 0, 0, 0,
+ 161, 0, -2, 0, 177 };
+#ifdef YYRECOVER
+YYSTATIC YYCONST short yyrecover[] = {
+-1000
+};
+#endif
+
+/* SCCSWHAT( "@(#)yypars.c 3.1 88/11/16 22:00:49 " ) */
+#line 3 "D:\\ProjectK3\\src\\tools\\devdiv\\x86\\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(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;
+ yyps= &yys[-1];
+ yypv= &yyv[-1];
+#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 += 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;
+
+ 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 = 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 189 "asmparse.y"
+{ PASM->EndClass(); } break;
+case 4:
+#line 190 "asmparse.y"
+{ PASM->EndNameSpace(); } break;
+case 5:
+#line 191 "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 201 "asmparse.y"
+{ PASMM->EndAssembly(); } break;
+case 13:
+#line 202 "asmparse.y"
+{ PASMM->EndAssembly(); } break;
+case 14:
+#line 203 "asmparse.y"
+{ PASMM->EndComType(); } break;
+case 15:
+#line 204 "asmparse.y"
+{ PASMM->EndManifestRes(); } break;
+case 19:
+#line 208 "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 218 "asmparse.y"
+{ PASM->m_dwComImageFlags = yypvt[-0].int32; } break;
+case 21:
+#line 219 "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 222 "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 225 "asmparse.y"
+{ PASM->m_stSizeOfStackReserve = (size_t)(*(yypvt[-0].int64)); delete yypvt[-0].int64; } break;
+case 28:
+#line 230 "asmparse.y"
+{ PASM->m_fIsMscorlib = TRUE; } break;
+case 31:
+#line 237 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; } break;
+case 32:
+#line 238 "asmparse.y"
+{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
+case 33:
+#line 241 "asmparse.y"
+{ LPCSTRToGuid(yypvt[-0].string,&(PASM->m_guidLang)); } break;
+case 34:
+#line 242 "asmparse.y"
+{ LPCSTRToGuid(yypvt[-2].string,&(PASM->m_guidLang));
+ LPCSTRToGuid(yypvt[-0].string,&(PASM->m_guidLangVendor));} break;
+case 35:
+#line 244 "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 249 "asmparse.y"
+{ yyval.string = yypvt[-0].string; } break;
+case 37:
+#line 250 "asmparse.y"
+{ yyval.string = yypvt[-0].string; } break;
+case 38:
+#line 253 "asmparse.y"
+{ yyval.string = yypvt[-0].string; } break;
+case 39:
+#line 254 "asmparse.y"
+{ yyval.string = yypvt[-0].string; } break;
+case 40:
+#line 255 "asmparse.y"
+{ yyval.string = newStringWDel(yypvt[-2].string, '.', yypvt[-0].string); } break;
+case 41:
+#line 258 "asmparse.y"
+{ yyval.int32 = yypvt[-0].int32; } break;
+case 42:
+#line 261 "asmparse.y"
+{ yyval.int64 = yypvt[-0].int64; } break;
+case 43:
+#line 262 "asmparse.y"
+{ yyval.int64 = neg ? new __int64(yypvt[-0].int32) : new __int64((unsigned)yypvt[-0].int32); } break;
+case 44:
+#line 265 "asmparse.y"
+{ yyval.float64 = yypvt[-0].float64; } break;
+case 45:
+#line 266 "asmparse.y"
+{ float f; *((__int32*) (&f)) = yypvt[-1].int32; yyval.float64 = new double(f); } break;
+case 46:
+#line 267 "asmparse.y"
+{ yyval.float64 = (double*) yypvt[-1].int64; } break;
+case 47:
+#line 271 "asmparse.y"
+{ PASM->AddTypeDef(yypvt[-2].binstr,yypvt[-0].string); } break;
+case 48:
+#line 272 "asmparse.y"
+{ PASM->AddTypeDef(yypvt[-2].token,yypvt[-0].string); } break;
+case 49:
+#line 273 "asmparse.y"
+{ PASM->AddTypeDef(yypvt[-2].token,yypvt[-0].string); } break;
+case 50:
+#line 274 "asmparse.y"
+{ yypvt[-2].cad->tkOwner = 0; PASM->AddTypeDef(yypvt[-2].cad,yypvt[-0].string); } break;
+case 51:
+#line 275 "asmparse.y"
+{ PASM->AddTypeDef(yypvt[-2].cad,yypvt[-0].string); } break;
+case 52:
+#line 280 "asmparse.y"
+{ DefineVar(yypvt[-0].string, NULL); } break;
+case 53:
+#line 281 "asmparse.y"
+{ DefineVar(yypvt[-1].string, yypvt[-0].binstr); } break;
+case 54:
+#line 282 "asmparse.y"
+{ UndefVar(yypvt[-0].string); } break;
+case 55:
+#line 283 "asmparse.y"
+{ SkipToken = !IsVarDefined(yypvt[-0].string);
+ IfEndif++;
+ } break;
+case 56:
+#line 286 "asmparse.y"
+{ SkipToken = IsVarDefined(yypvt[-0].string);
+ IfEndif++;
+ } break;
+case 57:
+#line 289 "asmparse.y"
+{ if(IfEndif == 1) SkipToken = !SkipToken;} break;
+case 58:
+#line 290 "asmparse.y"
+{ if(IfEndif == 0)
+ PASM->report->error("Unmatched #endif\n");
+ else IfEndif--;
+ } break;
+case 59:
+#line 294 "asmparse.y"
+{ _ASSERTE(!"yylex should have dealt with this"); } break;
+case 60:
+#line 295 "asmparse.y"
+{ } break;
+case 61:
+#line 299 "asmparse.y"
+{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-0].token, NULL); } break;
+case 62:
+#line 300 "asmparse.y"
+{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].token, yypvt[-0].binstr); } break;
+case 63:
+#line 301 "asmparse.y"
+{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-4].token, yypvt[-1].binstr); } break;
+case 64:
+#line 302 "asmparse.y"
+{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].int32, yypvt[-1].binstr); } break;
+case 65:
+#line 305 "asmparse.y"
+{ yyval.cad = new CustomDescr(yypvt[-2].token, yypvt[-0].token, NULL); } break;
+case 66:
+#line 306 "asmparse.y"
+{ yyval.cad = new CustomDescr(yypvt[-4].token, yypvt[-2].token, yypvt[-0].binstr); } break;
+case 67:
+#line 308 "asmparse.y"
+{ yyval.cad = new CustomDescr(yypvt[-6].token, yypvt[-4].token, yypvt[-1].binstr); } break;
+case 68:
+#line 309 "asmparse.y"
+{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].int32, yypvt[-1].binstr); } break;
+case 69:
+#line 312 "asmparse.y"
+{ yyval.int32 = yypvt[-2].token; bParsingByteArray = TRUE; } break;
+case 70:
+#line 316 "asmparse.y"
+{ PASM->m_pCustomDescrList = NULL;
+ PASM->m_tkCurrentCVOwner = yypvt[-4].token;
+ yyval.int32 = yypvt[-2].token; bParsingByteArray = TRUE; } break;
+case 71:
+#line 321 "asmparse.y"
+{ yyval.token = yypvt[-0].token; } break;
+case 72:
+#line 324 "asmparse.y"
+{ yyval.token = yypvt[-0].token; } break;
+case 73:
+#line 325 "asmparse.y"
+{ yyval.token = yypvt[-0].token; } break;
+case 74:
+#line 329 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr;
+ yyval.binstr->appendInt16(nCustomBlobNVPairs);
+ yyval.binstr->append(yypvt[-0].binstr);
+ nCustomBlobNVPairs = 0; } break;
+case 75:
+#line 335 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt16(VAL16(0x0001)); } break;
+case 76:
+#line 336 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr;
+ yyval.binstr->appendFrom(yypvt[-0].binstr, (*(yypvt[-0].binstr->ptr()) == ELEMENT_TYPE_SZARRAY) ? 2 : 1); } break;
+case 77:
+#line 338 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; } break;
+case 78:
+#line 341 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 79:
+#line 343 "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);
+ yyval.binstr->appendFrom(yypvt[-0].binstr, (*(yypvt[-0].binstr->ptr()) == ELEMENT_TYPE_SZARRAY) ? 2 : 1);
+ nCustomBlobNVPairs++; } break;
+case 80:
+#line 348 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; } break;
+case 81:
+#line 351 "asmparse.y"
+{ yyval.int32 = SERIALIZATION_TYPE_FIELD; } break;
+case 82:
+#line 352 "asmparse.y"
+{ yyval.int32 = SERIALIZATION_TYPE_PROPERTY; } break;
+case 83:
+#line 355 "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 359 "asmparse.y"
+{ PASM->DefineCV(yypvt[-0].cad); } break;
+case 85:
+#line 360 "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 368 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; } break;
+case 87:
+#line 369 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE); } break;
+case 88:
+#line 370 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TAGGED_OBJECT); } break;
+case 89:
+#line 371 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
+ AppendStringWithLength(yyval.binstr,yypvt[-0].string); } break;
+case 90:
+#line 373 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
+ AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-0].token)); } break;
+case 91:
+#line 375 "asmparse.y"
+{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
+case 92:
+#line 380 "asmparse.y"
+{ PASMM->SetModuleName(NULL); PASM->m_tkCurrentCVOwner=1; } break;
+case 93:
+#line 381 "asmparse.y"
+{ PASMM->SetModuleName(yypvt[-0].string); PASM->m_tkCurrentCVOwner=1; } break;
+case 94:
+#line 382 "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 389 "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 393 "asmparse.y"
+{ yyval.int32 = 0; } break;
+case 97:
+#line 394 "asmparse.y"
+{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_32BIT; } break;
+case 98:
+#line 395 "asmparse.y"
+{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_64BIT; } break;
+case 99:
+#line 396 "asmparse.y"
+{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_FROM_UNMANAGED; } break;
+case 100:
+#line 397 "asmparse.y"
+{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_CALL_MOST_DERIVED; } break;
+case 101:
+#line 398 "asmparse.y"
+{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN; } break;
+case 102:
+#line 401 "asmparse.y"
+{ PASM->m_pVTable = yypvt[-1].binstr; } break;
+case 103:
+#line 404 "asmparse.y"
+{ bParsingByteArray = TRUE; } break;
+case 104:
+#line 408 "asmparse.y"
+{ PASM->StartNameSpace(yypvt[-0].string); } break;
+case 105:
+#line 411 "asmparse.y"
+{ newclass = TRUE; } break;
+case 106:
+#line 414 "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 420 "asmparse.y"
+{ PASM->AddClass(); } break;
+case 108:
+#line 423 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) 0; } break;
+case 109:
+#line 424 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdVisibilityMask) | tdPublic); } break;
+case 110:
+#line 425 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdVisibilityMask) | tdNotPublic); } break;
+case 111:
+#line 426 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | 0x80000000 | tdSealed); } break;
+case 112:
+#line 427 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | 0x40000000); } break;
+case 113:
+#line 428 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdInterface | tdAbstract); } break;
+case 114:
+#line 429 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSealed); } break;
+case 115:
+#line 430 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdAbstract); } break;
+case 116:
+#line 431 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdAutoLayout); } break;
+case 117:
+#line 432 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdSequentialLayout); } break;
+case 118:
+#line 433 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdExplicitLayout); } break;
+case 119:
+#line 434 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdAnsiClass); } break;
+case 120:
+#line 435 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdUnicodeClass); } break;
+case 121:
+#line 436 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdAutoClass); } break;
+case 122:
+#line 437 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdImport); } break;
+case 123:
+#line 438 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSerializable); } break;
+case 124:
+#line 439 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdWindowsRuntime); } break;
+case 125:
+#line 440 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedPublic); } break;
+case 126:
+#line 441 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedPrivate); } break;
+case 127:
+#line 442 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamily); } break;
+case 128:
+#line 443 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedAssembly); } break;
+case 129:
+#line 444 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamANDAssem); } break;
+case 130:
+#line 445 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamORAssem); } break;
+case 131:
+#line 446 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdBeforeFieldInit); } break;
+case 132:
+#line 447 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSpecialName); } break;
+case 133:
+#line 448 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr); } break;
+case 134:
+#line 449 "asmparse.y"
+{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].int32); } break;
+case 136:
+#line 453 "asmparse.y"
+{ PASM->m_crExtends = yypvt[-0].token; } break;
+case 141:
+#line 464 "asmparse.y"
+{ PASM->AddToImplList(yypvt[-0].token); } break;
+case 142:
+#line 465 "asmparse.y"
+{ PASM->AddToImplList(yypvt[-0].token); } break;
+case 143:
+#line 469 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 144:
+#line 470 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; } break;
+case 145:
+#line 473 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(yypvt[-0].token); } break;
+case 146:
+#line 474 "asmparse.y"
+{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->appendInt32(yypvt[-0].token); } break;
+case 147:
+#line 477 "asmparse.y"
+{ yyval.typarlist = NULL; PASM->m_TyParList = NULL;} break;
+case 148:
+#line 478 "asmparse.y"
+{ yyval.typarlist = yypvt[-1].typarlist; PASM->m_TyParList = yypvt[-1].typarlist;} break;
+case 149:
+#line 481 "asmparse.y"
+{ yyval.int32 = gpCovariant; } break;
+case 150:
+#line 482 "asmparse.y"
+{ yyval.int32 = gpContravariant; } break;
+case 151:
+#line 483 "asmparse.y"
+{ yyval.int32 = gpReferenceTypeConstraint; } break;
+case 152:
+#line 484 "asmparse.y"
+{ yyval.int32 = gpNotNullableValueTypeConstraint; } break;
+case 153:
+#line 485 "asmparse.y"
+{ yyval.int32 = gpDefaultConstructorConstraint; } break;
+case 154:
+#line 488 "asmparse.y"
+{ yyval.int32 = 0; } break;
+case 155:
+#line 489 "asmparse.y"
+{ yyval.int32 = yypvt[-1].int32 | yypvt[-0].int32; } break;
+case 156:
+#line 492 "asmparse.y"
+{yyval.typarlist = new TyParList(yypvt[-3].int32, yypvt[-2].binstr, yypvt[-1].string, yypvt[-0].typarlist);} break;
+case 157:
+#line 493 "asmparse.y"
+{yyval.typarlist = new TyParList(yypvt[-2].int32, NULL, yypvt[-1].string, yypvt[-0].typarlist);} break;
+case 158:
+#line 496 "asmparse.y"
+{ yyval.typarlist = NULL; } break;
+case 159:
+#line 497 "asmparse.y"
+{ yyval.typarlist = yypvt[-0].typarlist; } break;
+case 160:
+#line 500 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; } break;
+case 161:
+#line 503 "asmparse.y"
+{ yyval.int32= 0; } break;
+case 162:
+#line 504 "asmparse.y"
+{ yyval.int32 = yypvt[-0].int32; } break;
+case 163:
+#line 507 "asmparse.y"
+{ yyval.int32 = yypvt[-2].int32; } break;
+case 164:
+#line 511 "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 165:
+#line 515 "asmparse.y"
+{ PASM->EndClass(); } break;
+case 166:
+#line 516 "asmparse.y"
+{ PASM->EndEvent(); } break;
+case 167:
+#line 517 "asmparse.y"
+{ PASM->EndProp(); } break;
+case 173:
+#line 523 "asmparse.y"
+{ PASM->m_pCurClass->m_ulSize = yypvt[-0].int32; } break;
+case 174:
+#line 524 "asmparse.y"
+{ PASM->m_pCurClass->m_ulPack = yypvt[-0].int32; } break;
+case 175:
+#line 525 "asmparse.y"
+{ PASMM->EndComType(); } break;
+case 176:
+#line 527 "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 177:
+#line 533 "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 180:
+#line 543 "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 181:
+#line 548 "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 182:
+#line 554 "asmparse.y"
+{ yypvt[-0].cad->tkInterfacePair = yypvt[-1].token;
+ if(PASM->m_pCustomDescrList)
+ PASM->m_pCustomDescrList->PUSH(yypvt[-0].cad);
+ } break;
+case 183:
+#line 562 "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 184:
+#line 566 "asmparse.y"
+{ yyval.fieldAttr = (CorFieldAttr) 0; } break;
+case 185:
+#line 567 "asmparse.y"
+{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdStatic); } break;
+case 186:
+#line 568 "asmparse.y"
+{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPublic); } break;
+case 187:
+#line 569 "asmparse.y"
+{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPrivate); } break;
+case 188:
+#line 570 "asmparse.y"
+{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamily); } break;
+case 189:
+#line 571 "asmparse.y"
+{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdInitOnly); } break;
+case 190:
+#line 572 "asmparse.y"
+{ yyval.fieldAttr = yypvt[-1].fieldAttr; } break;
+case 191:
+#line 573 "asmparse.y"
+{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdSpecialName); } break;
+case 192:
+#line 586 "asmparse.y"
+{ PASM->m_pMarshal = yypvt[-1].binstr; } break;
+case 193:
+#line 587 "asmparse.y"
+{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdAssembly); } break;
+case 194:
+#line 588 "asmparse.y"
+{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamANDAssem); } break;
+case 195:
+#line 589 "asmparse.y"
+{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamORAssem); } break;
+case 196:
+#line 590 "asmparse.y"
+{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPrivateScope); } break;
+case 197:
+#line 591 "asmparse.y"
+{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdLiteral); } break;
+case 198:
+#line 592 "asmparse.y"
+{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdNotSerialized); } break;
+case 199:
+#line 593 "asmparse.y"
+{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].int32); } break;
+case 200:
+#line 596 "asmparse.y"
+{ yyval.string = 0; } break;
+case 201:
+#line 597 "asmparse.y"
+{ yyval.string = yypvt[-0].string; } break;
+case 202:
+#line 600 "asmparse.y"
+{ yyval.binstr = NULL; } break;
+case 203:
+#line 601 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; } break;
+case 204:
+#line 604 "asmparse.y"
+{ yyval.int32 = 0xFFFFFFFF; } break;
+case 205:
+#line 605 "asmparse.y"
+{ yyval.int32 = yypvt[-1].int32; } break;
+case 206:
+#line 610 "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 207:
+#line 627 "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 208:
+#line 633 "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 209:
+#line 649 "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 210:
+#line 653 "asmparse.y"
+{ yyval.token = yypvt[-0].token; } break;
+case 211:
+#line 654 "asmparse.y"
+{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
+case 212:
+#line 655 "asmparse.y"
+{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
+case 213:
+#line 658 "asmparse.y"
+{ yyval.int32 = (yypvt[-0].int32 | IMAGE_CEE_CS_CALLCONV_HASTHIS); } break;
+case 214:
+#line 659 "asmparse.y"
+{ yyval.int32 = (yypvt[-0].int32 | IMAGE_CEE_CS_CALLCONV_EXPLICITTHIS); } break;
+case 215:
+#line 660 "asmparse.y"
+{ yyval.int32 = yypvt[-0].int32; } break;
+case 216:
+#line 661 "asmparse.y"
+{ yyval.int32 = yypvt[-1].int32; } break;
+case 217:
+#line 664 "asmparse.y"
+{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_DEFAULT; } break;
+case 218:
+#line 665 "asmparse.y"
+{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_DEFAULT; } break;
+case 219:
+#line 666 "asmparse.y"
+{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_VARARG; } break;
+case 220:
+#line 667 "asmparse.y"
+{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_C; } break;
+case 221:
+#line 668 "asmparse.y"
+{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_STDCALL; } break;
+case 222:
+#line 669 "asmparse.y"
+{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_THISCALL; } break;
+case 223:
+#line 670 "asmparse.y"
+{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_FASTCALL; } break;
+case 224:
+#line 673 "asmparse.y"
+{ yyval.token = yypvt[-1].int32; } break;
+case 225:
+#line 676 "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 226:
+#line 682 "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 227:
+#line 686 "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 228:
+#line 689 "asmparse.y"
+{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec;
+ PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
+case 229:
+#line 691 "asmparse.y"
+{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec;
+ PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
+case 230:
+#line 693 "asmparse.y"
+{ yyval.token = yypvt[-0].token;
+ PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
+case 231:
+#line 698 "asmparse.y"
+{ PASM->ResetEvent(yypvt[-0].string, yypvt[-1].token, yypvt[-2].eventAttr); } break;
+case 232:
+#line 699 "asmparse.y"
+{ PASM->ResetEvent(yypvt[-0].string, mdTypeRefNil, yypvt[-1].eventAttr); } break;
+case 233:
+#line 703 "asmparse.y"
+{ yyval.eventAttr = (CorEventAttr) 0; } break;
+case 234:
+#line 704 "asmparse.y"
+{ yyval.eventAttr = yypvt[-1].eventAttr; } break;
+case 235:
+#line 705 "asmparse.y"
+{ yyval.eventAttr = (CorEventAttr) (yypvt[-1].eventAttr | evSpecialName); } break;
+case 238:
+#line 712 "asmparse.y"
+{ PASM->SetEventMethod(0, yypvt[-0].token); } break;
+case 239:
+#line 713 "asmparse.y"
+{ PASM->SetEventMethod(1, yypvt[-0].token); } break;
+case 240:
+#line 714 "asmparse.y"
+{ PASM->SetEventMethod(2, yypvt[-0].token); } break;
+case 241:
+#line 715 "asmparse.y"
+{ PASM->SetEventMethod(3, yypvt[-0].token); } break;
+case 246:
+#line 724 "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 247:
+#line 729 "asmparse.y"
+{ yyval.propAttr = (CorPropertyAttr) 0; } break;
+case 248:
+#line 730 "asmparse.y"
+{ yyval.propAttr = yypvt[-1].propAttr; } break;
+case 249:
+#line 731 "asmparse.y"
+{ yyval.propAttr = (CorPropertyAttr) (yypvt[-1].propAttr | prSpecialName); } break;
+case 252:
+#line 739 "asmparse.y"
+{ PASM->SetPropMethod(0, yypvt[-0].token); } break;
+case 253:
+#line 740 "asmparse.y"
+{ PASM->SetPropMethod(1, yypvt[-0].token); } break;
+case 254:
+#line 741 "asmparse.y"
+{ PASM->SetPropMethod(2, yypvt[-0].token); } break;
+case 259:
+#line 749 "asmparse.y"
+{ PASM->ResetForNextMethod();
+ uMethodBeginLine = PASM->m_ulCurLine;
+ uMethodBeginColumn=PASM->m_ulCurColumn;
+ } break;
+case 260:
+#line 755 "asmparse.y"
+{ yyval.binstr = NULL; } break;
+case 261:
+#line 756 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; } break;
+case 262:
+#line 759 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; } break;
+case 263:
+#line 760 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; } break;
+case 264:
+#line 763 "asmparse.y"
+{ bParsingByteArray = TRUE; } break;
+case 265:
+#line 767 "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 266:
+#line 782 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) 0; } break;
+case 267:
+#line 783 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdStatic); } break;
+case 268:
+#line 784 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPublic); } break;
+case 269:
+#line 785 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPrivate); } break;
+case 270:
+#line 786 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamily); } break;
+case 271:
+#line 787 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdFinal); } break;
+case 272:
+#line 788 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdSpecialName); } break;
+case 273:
+#line 789 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdVirtual); } break;
+case 274:
+#line 790 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdCheckAccessOnOverride); } break;
+case 275:
+#line 791 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdAbstract); } break;
+case 276:
+#line 792 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdAssem); } break;
+case 277:
+#line 793 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamANDAssem); } break;
+case 278:
+#line 794 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamORAssem); } break;
+case 279:
+#line 795 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPrivateScope); } break;
+case 280:
+#line 796 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdHideBySig); } break;
+case 281:
+#line 797 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdNewSlot); } break;
+case 282:
+#line 798 "asmparse.y"
+{ yyval.methAttr = yypvt[-1].methAttr; } break;
+case 283:
+#line 799 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdUnmanagedExport); } break;
+case 284:
+#line 800 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdRequireSecObject); } break;
+case 285:
+#line 801 "asmparse.y"
+{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].int32); } break;
+case 286:
+#line 803 "asmparse.y"
+{ PASM->SetPinvoke(yypvt[-4].binstr,0,yypvt[-2].binstr,yypvt[-1].pinvAttr);
+ yyval.methAttr = (CorMethodAttr) (yypvt[-7].methAttr | mdPinvokeImpl); } break;
+case 287:
+#line 806 "asmparse.y"
+{ PASM->SetPinvoke(yypvt[-2].binstr,0,NULL,yypvt[-1].pinvAttr);
+ yyval.methAttr = (CorMethodAttr) (yypvt[-5].methAttr | mdPinvokeImpl); } break;
+case 288:
+#line 809 "asmparse.y"
+{ PASM->SetPinvoke(new BinStr(),0,NULL,yypvt[-1].pinvAttr);
+ yyval.methAttr = (CorMethodAttr) (yypvt[-4].methAttr | mdPinvokeImpl); } break;
+case 289:
+#line 813 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) 0; } break;
+case 290:
+#line 814 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmNoMangle); } break;
+case 291:
+#line 815 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetAnsi); } break;
+case 292:
+#line 816 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetUnicode); } break;
+case 293:
+#line 817 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetAuto); } break;
+case 294:
+#line 818 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmSupportsLastError); } break;
+case 295:
+#line 819 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvWinapi); } break;
+case 296:
+#line 820 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvCdecl); } break;
+case 297:
+#line 821 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvStdcall); } break;
+case 298:
+#line 822 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvThiscall); } break;
+case 299:
+#line 823 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvFastcall); } break;
+case 300:
+#line 824 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmBestFitEnabled); } break;
+case 301:
+#line 825 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmBestFitDisabled); } break;
+case 302:
+#line 826 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmThrowOnUnmappableCharEnabled); } break;
+case 303:
+#line 827 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmThrowOnUnmappableCharDisabled); } break;
+case 304:
+#line 828 "asmparse.y"
+{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].int32); } break;
+case 305:
+#line 831 "asmparse.y"
+{ yyval.string = newString(COR_CTOR_METHOD_NAME); } break;
+case 306:
+#line 832 "asmparse.y"
+{ yyval.string = newString(COR_CCTOR_METHOD_NAME); } break;
+case 307:
+#line 833 "asmparse.y"
+{ yyval.string = yypvt[-0].string; } break;
+case 308:
+#line 836 "asmparse.y"
+{ yyval.int32 = 0; } break;
+case 309:
+#line 837 "asmparse.y"
+{ yyval.int32 = yypvt[-3].int32 | pdIn; } break;
+case 310:
+#line 838 "asmparse.y"
+{ yyval.int32 = yypvt[-3].int32 | pdOut; } break;
+case 311:
+#line 839 "asmparse.y"
+{ yyval.int32 = yypvt[-3].int32 | pdOptional; } break;
+case 312:
+#line 840 "asmparse.y"
+{ yyval.int32 = yypvt[-1].int32 + 1; } break;
+case 313:
+#line 843 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) (miIL | miManaged); } break;
+case 314:
+#line 844 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miNative); } break;
+case 315:
+#line 845 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miIL); } break;
+case 316:
+#line 846 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miOPTIL); } break;
+case 317:
+#line 847 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFFB) | miManaged); } break;
+case 318:
+#line 848 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFFB) | miUnmanaged); } break;
+case 319:
+#line 849 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miForwardRef); } break;
+case 320:
+#line 850 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miPreserveSig); } break;
+case 321:
+#line 851 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miRuntime); } break;
+case 322:
+#line 852 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miInternalCall); } break;
+case 323:
+#line 853 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miSynchronized); } break;
+case 324:
+#line 854 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miNoInlining); } break;
+case 325:
+#line 855 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miAggressiveInlining); } break;
+case 326:
+#line 856 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miNoOptimization); } break;
+case 327:
+#line 857 "asmparse.y"
+{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].int32); } break;
+case 328:
+#line 860 "asmparse.y"
+{ PASM->delArgNameList(PASM->m_firstArgName); PASM->m_firstArgName = NULL;PASM->m_lastArgName = NULL;
+ } break;
+case 331:
+#line 868 "asmparse.y"
+{ PASM->EmitByte(yypvt[-0].int32); } break;
+case 332:
+#line 869 "asmparse.y"
+{ delete PASM->m_SEHD; PASM->m_SEHD = PASM->m_SEHDstack.POP(); } break;
+case 333:
+#line 870 "asmparse.y"
+{ PASM->EmitMaxStack(yypvt[-0].int32); } break;
+case 334:
+#line 871 "asmparse.y"
+{ PASM->EmitLocals(parser->MakeSig(IMAGE_CEE_CS_CALLCONV_LOCAL_SIG, 0, yypvt[-1].binstr));
+ } break;
+case 335:
+#line 873 "asmparse.y"
+{ PASM->EmitZeroInit();
+ PASM->EmitLocals(parser->MakeSig(IMAGE_CEE_CS_CALLCONV_LOCAL_SIG, 0, yypvt[-1].binstr));
+ } break;
+case 336:
+#line 876 "asmparse.y"
+{ PASM->EmitEntryPoint(); } break;
+case 337:
+#line 877 "asmparse.y"
+{ PASM->EmitZeroInit(); } break;
+case 340:
+#line 880 "asmparse.y"
+{ PASM->AddLabel(PASM->m_CurPC,yypvt[-1].string); /*PASM->EmitLabel($1);*/ } break;
+case 346:
+#line 886 "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 = yypvt[-1].int32 + 0x8000;
+ }
+ else
+ PASM->report->warn("Duplicate .export directive, ignored\n");
+ } break;
+case 347:
+#line 896 "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 = yypvt[-3].int32 + 0x8000;
+ }
+ else
+ PASM->report->warn("Duplicate .export directive, ignored\n");
+ } break;
+case 348:
+#line 906 "asmparse.y"
+{ PASM->m_pCurMethod->m_wVTEntry = (WORD)yypvt[-2].int32;
+ PASM->m_pCurMethod->m_wVTSlot = (WORD)yypvt[-0].int32; } break;
+case 349:
+#line 909 "asmparse.y"
+{ PASM->AddMethodImpl(yypvt[-2].token,yypvt[-0].string,NULL,NULL,NULL,NULL); } break;
+case 350:
+#line 912 "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 352:
+#line 919 "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 353:
+#line 924 "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 354:
+#line 931 "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 355:
+#line 951 "asmparse.y"
+{ PASM->m_pCurMethod->CloseScope(); } break;
+case 356:
+#line 954 "asmparse.y"
+{ PASM->m_pCurMethod->OpenScope(); } break;
+case 360:
+#line 965 "asmparse.y"
+{ PASM->m_SEHD->tryTo = PASM->m_CurPC; } break;
+case 361:
+#line 966 "asmparse.y"
+{ PASM->SetTryLabels(yypvt[-2].string, yypvt[-0].string); } break;
+case 362:
+#line 967 "asmparse.y"
+{ if(PASM->m_SEHD) {PASM->m_SEHD->tryFrom = yypvt[-2].int32;
+ PASM->m_SEHD->tryTo = yypvt[-0].int32;} } break;
+case 363:
+#line 971 "asmparse.y"
+{ PASM->NewSEHDescriptor();
+ PASM->m_SEHD->tryFrom = PASM->m_CurPC; } break;
+case 364:
+#line 976 "asmparse.y"
+{ PASM->EmitTry(); } break;
+case 365:
+#line 977 "asmparse.y"
+{ PASM->EmitTry(); } break;
+case 366:
+#line 978 "asmparse.y"
+{ PASM->EmitTry(); } break;
+case 367:
+#line 979 "asmparse.y"
+{ PASM->EmitTry(); } break;
+case 368:
+#line 983 "asmparse.y"
+{ PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
+case 369:
+#line 984 "asmparse.y"
+{ PASM->SetFilterLabel(yypvt[-0].string);
+ PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
+case 370:
+#line 986 "asmparse.y"
+{ PASM->m_SEHD->sehFilter = yypvt[-0].int32;
+ PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
+case 371:
+#line 990 "asmparse.y"
+{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FILTER;
+ PASM->m_SEHD->sehFilter = PASM->m_CurPC; } break;
+case 372:
+#line 994 "asmparse.y"
+{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_NONE;
+ PASM->SetCatchClass(yypvt[-0].token);
+ PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
+case 373:
+#line 999 "asmparse.y"
+{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FINALLY;
+ PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
+case 374:
+#line 1003 "asmparse.y"
+{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FAULT;
+ PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
+case 375:
+#line 1007 "asmparse.y"
+{ PASM->m_SEHD->sehHandlerTo = PASM->m_CurPC; } break;
+case 376:
+#line 1008 "asmparse.y"
+{ PASM->SetHandlerLabels(yypvt[-2].string, yypvt[-0].string); } break;
+case 377:
+#line 1009 "asmparse.y"
+{ PASM->m_SEHD->sehHandler = yypvt[-2].int32;
+ PASM->m_SEHD->sehHandlerTo = yypvt[-0].int32; } break;
+case 379:
+#line 1017 "asmparse.y"
+{ PASM->EmitDataLabel(yypvt[-1].string); } break;
+case 381:
+#line 1021 "asmparse.y"
+{ PASM->SetDataSection(); } break;
+case 382:
+#line 1022 "asmparse.y"
+{ PASM->SetTLSSection(); } break;
+case 383:
+#line 1023 "asmparse.y"
+{ PASM->SetILSection(); } break;
+case 388:
+#line 1034 "asmparse.y"
+{ yyval.int32 = 1; } break;
+case 389:
+#line 1035 "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 390:
+#line 1040 "asmparse.y"
+{ PASM->EmitDataString(yypvt[-1].binstr); } break;
+case 391:
+#line 1041 "asmparse.y"
+{ PASM->EmitDD(yypvt[-1].string); } break;
+case 392:
+#line 1042 "asmparse.y"
+{ PASM->EmitData(yypvt[-1].binstr->ptr(),yypvt[-1].binstr->length()); } break;
+case 393:
+#line 1044 "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 394:
+#line 1051 "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 395:
+#line 1058 "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 396:
+#line 1065 "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 397:
+#line 1072 "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 398:
+#line 1080 "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 399:
+#line 1087 "asmparse.y"
+{ PASM->EmitData(NULL, sizeof(float)*yypvt[-0].int32); } break;
+case 400:
+#line 1088 "asmparse.y"
+{ PASM->EmitData(NULL, sizeof(double)*yypvt[-0].int32); } break;
+case 401:
+#line 1089 "asmparse.y"
+{ PASM->EmitData(NULL, sizeof(__int64)*yypvt[-0].int32); } break;
+case 402:
+#line 1090 "asmparse.y"
+{ PASM->EmitData(NULL, sizeof(__int32)*yypvt[-0].int32); } break;
+case 403:
+#line 1091 "asmparse.y"
+{ PASM->EmitData(NULL, sizeof(__int16)*yypvt[-0].int32); } break;
+case 404:
+#line 1092 "asmparse.y"
+{ PASM->EmitData(NULL, sizeof(__int8)*yypvt[-0].int32); } break;
+case 405:
+#line 1096 "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 406:
+#line 1099 "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 407:
+#line 1101 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R4);
+ yyval.binstr->appendInt32(yypvt[-1].int32); } break;
+case 408:
+#line 1103 "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 409:
+#line 1105 "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 410:
+#line 1107 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I4);
+ yyval.binstr->appendInt32(yypvt[-1].int32); } break;
+case 411:
+#line 1109 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I2);
+ yyval.binstr->appendInt16(yypvt[-1].int32); } break;
+case 412:
+#line 1111 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I1);
+ yyval.binstr->appendInt8(yypvt[-1].int32); } break;
+case 413:
+#line 1113 "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 414:
+#line 1115 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4);
+ yyval.binstr->appendInt32(yypvt[-1].int32); } break;
+case 415:
+#line 1117 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2);
+ yyval.binstr->appendInt16(yypvt[-1].int32); } break;
+case 416:
+#line 1119 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1);
+ yyval.binstr->appendInt8(yypvt[-1].int32); } break;
+case 417:
+#line 1121 "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 418:
+#line 1123 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4);
+ yyval.binstr->appendInt32(yypvt[-1].int32); } break;
+case 419:
+#line 1125 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2);
+ yyval.binstr->appendInt16(yypvt[-1].int32); } break;
+case 420:
+#line 1127 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1);
+ yyval.binstr->appendInt8(yypvt[-1].int32); } break;
+case 421:
+#line 1129 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CHAR);
+ yyval.binstr->appendInt16(yypvt[-1].int32); } break;
+case 422:
+#line 1131 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_BOOLEAN);
+ yyval.binstr->appendInt8(yypvt[-1].int32);} break;
+case 423:
+#line 1133 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING);
+ yyval.binstr->append(yypvt[-1].binstr); delete yypvt[-1].binstr;} break;
+case 424:
+#line 1137 "asmparse.y"
+{ bParsingByteArray = TRUE; } break;
+case 425:
+#line 1140 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 426:
+#line 1141 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; } break;
+case 427:
+#line 1144 "asmparse.y"
+{ __int8 i = (__int8) yypvt[-0].int32; yyval.binstr = new BinStr(); yyval.binstr->appendInt8(i); } break;
+case 428:
+#line 1145 "asmparse.y"
+{ __int8 i = (__int8) yypvt[-0].int32; yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(i); } break;
+case 429:
+#line 1149 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; } break;
+case 430:
+#line 1150 "asmparse.y"
+{ yyval.binstr = BinStrToUnicode(yypvt[-0].binstr,true); yyval.binstr->insertInt8(ELEMENT_TYPE_STRING);} break;
+case 431:
+#line 1151 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CLASS);
+ yyval.binstr->appendInt32(0); } break;
+case 432:
+#line 1156 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; } break;
+case 433:
+#line 1157 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); yyval.binstr->appendInt8(0xFF); } break;
+case 434:
+#line 1158 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING);
+ AppendStringWithLength(yyval.binstr,yypvt[-1].string); delete [] yypvt[-1].string;} break;
+case 435:
+#line 1160 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE);
+ AppendStringWithLength(yyval.binstr,yypvt[-1].string); delete [] yypvt[-1].string;} break;
+case 436:
+#line 1162 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE);
+ AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-1].token));} break;
+case 437:
+#line 1164 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE); yyval.binstr->appendInt8(0xFF); } break;
+case 438:
+#line 1165 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(SERIALIZATION_TYPE_TAGGED_OBJECT);} break;
+case 439:
+#line 1167 "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 440:
+#line 1171 "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 441:
+#line 1175 "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 442:
+#line 1179 "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 443:
+#line 1183 "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 444:
+#line 1187 "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 445:
+#line 1191 "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 446:
+#line 1195 "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 447:
+#line 1199 "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 448:
+#line 1203 "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 449:
+#line 1207 "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 450:
+#line 1211 "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 451:
+#line 1215 "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 452:
+#line 1219 "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 453:
+#line 1223 "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 454:
+#line 1227 "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 455:
+#line 1231 "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 456:
+#line 1235 "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 457:
+#line 1239 "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 458:
+#line 1245 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 459:
+#line 1246 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr;
+ float f = (float) (*yypvt[-0].float64); yyval.binstr->appendInt32(*((__int32*)&f)); delete yypvt[-0].float64; } break;
+case 460:
+#line 1248 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr;
+ yyval.binstr->appendInt32(yypvt[-0].int32); } break;
+case 461:
+#line 1252 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 462:
+#line 1253 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr;
+ yyval.binstr->appendInt64((__int64 *)yypvt[-0].float64); delete yypvt[-0].float64; } break;
+case 463:
+#line 1255 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr;
+ yyval.binstr->appendInt64((__int64 *)yypvt[-0].int64); delete yypvt[-0].int64; } break;
+case 464:
+#line 1259 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 465:
+#line 1260 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr;
+ yyval.binstr->appendInt64((__int64 *)yypvt[-0].int64); delete yypvt[-0].int64; } break;
+case 466:
+#line 1264 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 467:
+#line 1265 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt32(yypvt[-0].int32);} break;
+case 468:
+#line 1268 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 469:
+#line 1269 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt16(yypvt[-0].int32);} break;
+case 470:
+#line 1272 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 471:
+#line 1273 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(yypvt[-0].int32); } break;
+case 472:
+#line 1276 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 473:
+#line 1277 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr;
+ yyval.binstr->appendInt8(yypvt[-0].int32);} break;
+case 474:
+#line 1281 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 475:
+#line 1282 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(0xFF); } break;
+case 476:
+#line 1283 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr;
+ AppendStringWithLength(yyval.binstr,yypvt[-0].string); delete [] yypvt[-0].string;} break;
+case 477:
+#line 1287 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 478:
+#line 1288 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(0xFF); } break;
+case 479:
+#line 1289 "asmparse.y"
+{ yyval.binstr = yypvt[-2].binstr;
+ AppendStringWithLength(yyval.binstr,yypvt[-0].string); delete [] yypvt[-0].string;} break;
+case 480:
+#line 1291 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr;
+ AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-0].token));} break;
+case 481:
+#line 1295 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 482:
+#line 1296 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
+case 483:
+#line 1300 "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 484:
+#line 1306 "asmparse.y"
+{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
+case 485:
+#line 1309 "asmparse.y"
+{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
+case 486:
+#line 1312 "asmparse.y"
+{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
+case 487:
+#line 1315 "asmparse.y"
+{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
+case 488:
+#line 1318 "asmparse.y"
+{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
+case 489:
+#line 1321 "asmparse.y"
+{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
+case 490:
+#line 1324 "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 491:
+#line 1332 "asmparse.y"
+{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
+case 492:
+#line 1335 "asmparse.y"
+{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
+case 493:
+#line 1338 "asmparse.y"
+{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
+case 494:
+#line 1341 "asmparse.y"
+{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
+case 495:
+#line 1344 "asmparse.y"
+{ yyval.instr = SetupInstr(yypvt[-0].opcode); iOpcodeLen = PASM->OpcodeLen(yyval.instr); } break;
+case 496:
+#line 1347 "asmparse.y"
+{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
+case 497:
+#line 1350 "asmparse.y"
+{ yyval.instr = yypvt[-1].instr; bParsingByteArray = TRUE; } break;
+case 498:
+#line 1354 "asmparse.y"
+{ PASM->EmitOpcode(yypvt[-0].instr); } break;
+case 499:
+#line 1355 "asmparse.y"
+{ PASM->EmitInstrVar(yypvt[-1].instr, yypvt[-0].int32); } break;
+case 500:
+#line 1356 "asmparse.y"
+{ PASM->EmitInstrVarByName(yypvt[-1].instr, yypvt[-0].string); } break;
+case 501:
+#line 1357 "asmparse.y"
+{ PASM->EmitInstrI(yypvt[-1].instr, yypvt[-0].int32); } break;
+case 502:
+#line 1358 "asmparse.y"
+{ PASM->EmitInstrI8(yypvt[-1].instr, yypvt[-0].int64); } break;
+case 503:
+#line 1359 "asmparse.y"
+{ PASM->EmitInstrR(yypvt[-1].instr, yypvt[-0].float64); delete (yypvt[-0].float64);} break;
+case 504:
+#line 1360 "asmparse.y"
+{ double f = (double) (*yypvt[-0].int64); PASM->EmitInstrR(yypvt[-1].instr, &f); } break;
+case 505:
+#line 1361 "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 506:
+#line 1370 "asmparse.y"
+{ PASM->EmitInstrBrOffset(yypvt[-1].instr, yypvt[-0].int32); } break;
+case 507:
+#line 1371 "asmparse.y"
+{ PASM->EmitInstrBrTarget(yypvt[-1].instr, yypvt[-0].string); } break;
+case 508:
+#line 1373 "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 509:
+#line 1380 "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 510:
+#line 1388 "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 511:
+#line 1395 "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 512:
+#line 1401 "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 513:
+#line 1407 "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 514:
+#line 1413 "asmparse.y"
+{ PASM->EmitInstrI(yypvt[-1].instr, yypvt[-0].token);
+ PASM->m_tkCurrentCVOwner = yypvt[-0].token;
+ PASM->m_pCustomDescrList = NULL;
+ } break;
+case 515:
+#line 1417 "asmparse.y"
+{ PASM->EmitInstrStringLiteral(yypvt[-1].instr, yypvt[-0].binstr,TRUE); } break;
+case 516:
+#line 1419 "asmparse.y"
+{ PASM->EmitInstrStringLiteral(yypvt[-4].instr, yypvt[-1].binstr,FALSE); } break;
+case 517:
+#line 1421 "asmparse.y"
+{ PASM->EmitInstrStringLiteral(yypvt[-3].instr, yypvt[-1].binstr,FALSE,TRUE); } break;
+case 518:
+#line 1423 "asmparse.y"
+{ PASM->EmitInstrSig(yypvt[-5].instr, parser->MakeSig(yypvt[-4].int32, yypvt[-3].binstr, yypvt[-1].binstr));
+ PASM->ResetArgNameList();
+ } break;
+case 519:
+#line 1427 "asmparse.y"
+{ PASM->EmitInstrI(yypvt[-1].instr,yypvt[-0].token);
+ PASM->m_tkCurrentCVOwner = yypvt[-0].token;
+ PASM->m_pCustomDescrList = NULL;
+ iOpcodeLen = 0;
+ } break;
+case 520:
+#line 1432 "asmparse.y"
+{ PASM->EmitInstrSwitch(yypvt[-3].instr, yypvt[-1].labels); } break;
+case 521:
+#line 1435 "asmparse.y"
+{ yyval.labels = 0; } break;
+case 522:
+#line 1436 "asmparse.y"
+{ yyval.labels = new Labels(yypvt[-2].string, yypvt[-0].labels, TRUE); } break;
+case 523:
+#line 1437 "asmparse.y"
+{ yyval.labels = new Labels((char *)(UINT_PTR)yypvt[-2].int32, yypvt[-0].labels, FALSE); } break;
+case 524:
+#line 1438 "asmparse.y"
+{ yyval.labels = new Labels(yypvt[-0].string, NULL, TRUE); } break;
+case 525:
+#line 1439 "asmparse.y"
+{ yyval.labels = new Labels((char *)(UINT_PTR)yypvt[-0].int32, NULL, FALSE); } break;
+case 526:
+#line 1443 "asmparse.y"
+{ yyval.binstr = NULL; } break;
+case 527:
+#line 1444 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; } break;
+case 528:
+#line 1447 "asmparse.y"
+{ yyval.binstr = NULL; } break;
+case 529:
+#line 1448 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; } break;
+case 530:
+#line 1451 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; } break;
+case 531:
+#line 1452 "asmparse.y"
+{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
+case 532:
+#line 1456 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 533:
+#line 1457 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr;} break;
+case 534:
+#line 1460 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; } break;
+case 535:
+#line 1461 "asmparse.y"
+{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
+case 536:
+#line 1464 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_SENTINEL); } break;
+case 537:
+#line 1465 "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 538:
+#line 1466 "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 539:
+#line 1470 "asmparse.y"
+{ yyval.token = PASM->ResolveClassRef(PASM->GetAsmRef(yypvt[-2].string), yypvt[-0].string, NULL); delete[] yypvt[-2].string;} break;
+case 540:
+#line 1471 "asmparse.y"
+{ yyval.token = PASM->ResolveClassRef(yypvt[-2].token, yypvt[-0].string, NULL); } break;
+case 541:
+#line 1472 "asmparse.y"
+{ yyval.token = PASM->ResolveClassRef(mdTokenNil, yypvt[-0].string, NULL); } break;
+case 542:
+#line 1473 "asmparse.y"
+{ yyval.token = PASM->ResolveClassRef(PASM->GetModRef(yypvt[-2].string),yypvt[-0].string, NULL); delete[] yypvt[-2].string;} break;
+case 543:
+#line 1474 "asmparse.y"
+{ yyval.token = PASM->ResolveClassRef(1,yypvt[-0].string,NULL); } break;
+case 544:
+#line 1475 "asmparse.y"
+{ yyval.token = yypvt[-0].token; } break;
+case 545:
+#line 1476 "asmparse.y"
+{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
+case 546:
+#line 1477 "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 547:
+#line 1480 "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 548:
+#line 1486 "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 549:
+#line 1493 "asmparse.y"
+{ yyval.string = yypvt[-0].string; } break;
+case 550:
+#line 1494 "asmparse.y"
+{ yyval.string = newStringWDel(yypvt[-2].string, NESTING_SEP, yypvt[-0].string); } break;
+case 551:
+#line 1497 "asmparse.y"
+{ yyval.token = yypvt[-0].token;} break;
+case 552:
+#line 1498 "asmparse.y"
+{ yyval.token = PASM->GetAsmRef(yypvt[-1].string); delete[] yypvt[-1].string;} break;
+case 553:
+#line 1499 "asmparse.y"
+{ yyval.token = PASM->GetModRef(yypvt[-1].string); delete[] yypvt[-1].string;} break;
+case 554:
+#line 1500 "asmparse.y"
+{ yyval.token = PASM->ResolveTypeSpec(yypvt[-0].binstr); } break;
+case 555:
+#line 1504 "asmparse.y"
+{ yyval.binstr = new BinStr(); } break;
+case 556:
+#line 1506 "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 557:
+#line 1513 "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 558:
+#line 1518 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_FIXEDSYSSTRING);
+ corEmitInt(yyval.binstr,yypvt[-1].int32); } break;
+case 559:
+#line 1521 "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 560:
+#line 1523 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VARIANT);
+ PASM->report->warn("Deprecated native type 'variant'\n"); } break;
+case 561:
+#line 1525 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_CURRENCY); } break;
+case 562:
+#line 1526 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_SYSCHAR);
+ PASM->report->warn("Deprecated native type 'syschar'\n"); } break;
+case 563:
+#line 1528 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VOID);
+ PASM->report->warn("Deprecated native type 'void'\n"); } break;
+case 564:
+#line 1530 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BOOLEAN); } break;
+case 565:
+#line 1531 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I1); } break;
+case 566:
+#line 1532 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I2); } break;
+case 567:
+#line 1533 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I4); } break;
+case 568:
+#line 1534 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I8); } break;
+case 569:
+#line 1535 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_R4); } break;
+case 570:
+#line 1536 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_R8); } break;
+case 571:
+#line 1537 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ERROR); } break;
+case 572:
+#line 1538 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U1); } break;
+case 573:
+#line 1539 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U2); } break;
+case 574:
+#line 1540 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U4); } break;
+case 575:
+#line 1541 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U8); } break;
+case 576:
+#line 1542 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U1); } break;
+case 577:
+#line 1543 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U2); } break;
+case 578:
+#line 1544 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U4); } break;
+case 579:
+#line 1545 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U8); } break;
+case 580:
+#line 1546 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(NATIVE_TYPE_PTR);
+ PASM->report->warn("Deprecated native type '*'\n"); } break;
+case 581:
+#line 1548 "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 582:
+#line 1550 "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 583:
+#line 1555 "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 584:
+#line 1560 "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 585:
+#line 1563 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_DECIMAL);
+ PASM->report->warn("Deprecated native type 'decimal'\n"); } break;
+case 586:
+#line 1565 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_DATE);
+ PASM->report->warn("Deprecated native type 'date'\n"); } break;
+case 587:
+#line 1567 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BSTR); } break;
+case 588:
+#line 1568 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPSTR); } break;
+case 589:
+#line 1569 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPWSTR); } break;
+case 590:
+#line 1570 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPTSTR); } break;
+case 591:
+#line 1571 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_OBJECTREF);
+ PASM->report->warn("Deprecated native type 'objectref'\n"); } break;
+case 592:
+#line 1573 "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 593:
+#line 1575 "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 594:
+#line 1577 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_STRUCT); } break;
+case 595:
+#line 1578 "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 596:
+#line 1580 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_SAFEARRAY);
+ corEmitInt(yyval.binstr,yypvt[-0].int32);
+ corEmitInt(yyval.binstr,0);} break;
+case 597:
+#line 1583 "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 598:
+#line 1587 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_INT); } break;
+case 599:
+#line 1588 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_UINT); } break;
+case 600:
+#line 1589 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_UINT); } break;
+case 601:
+#line 1590 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_NESTEDSTRUCT);
+ PASM->report->warn("Deprecated native type 'nested struct'\n"); } break;
+case 602:
+#line 1592 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BYVALSTR); } break;
+case 603:
+#line 1593 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ANSIBSTR); } break;
+case 604:
+#line 1594 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_TBSTR); } break;
+case 605:
+#line 1595 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VARIANTBOOL); } break;
+case 606:
+#line 1596 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_FUNC); } break;
+case 607:
+#line 1597 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ASANY); } break;
+case 608:
+#line 1598 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPSTRUCT); } break;
+case 609:
+#line 1599 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-0].tdd->m_pbsTypeSpec); } break;
+case 610:
+#line 1602 "asmparse.y"
+{ yyval.int32 = -1; } break;
+case 611:
+#line 1603 "asmparse.y"
+{ yyval.int32 = yypvt[-1].int32; } break;
+case 612:
+#line 1606 "asmparse.y"
+{ yyval.int32 = VT_EMPTY; } break;
+case 613:
+#line 1607 "asmparse.y"
+{ yyval.int32 = VT_NULL; } break;
+case 614:
+#line 1608 "asmparse.y"
+{ yyval.int32 = VT_VARIANT; } break;
+case 615:
+#line 1609 "asmparse.y"
+{ yyval.int32 = VT_CY; } break;
+case 616:
+#line 1610 "asmparse.y"
+{ yyval.int32 = VT_VOID; } break;
+case 617:
+#line 1611 "asmparse.y"
+{ yyval.int32 = VT_BOOL; } break;
+case 618:
+#line 1612 "asmparse.y"
+{ yyval.int32 = VT_I1; } break;
+case 619:
+#line 1613 "asmparse.y"
+{ yyval.int32 = VT_I2; } break;
+case 620:
+#line 1614 "asmparse.y"
+{ yyval.int32 = VT_I4; } break;
+case 621:
+#line 1615 "asmparse.y"
+{ yyval.int32 = VT_I8; } break;
+case 622:
+#line 1616 "asmparse.y"
+{ yyval.int32 = VT_R4; } break;
+case 623:
+#line 1617 "asmparse.y"
+{ yyval.int32 = VT_R8; } break;
+case 624:
+#line 1618 "asmparse.y"
+{ yyval.int32 = VT_UI1; } break;
+case 625:
+#line 1619 "asmparse.y"
+{ yyval.int32 = VT_UI2; } break;
+case 626:
+#line 1620 "asmparse.y"
+{ yyval.int32 = VT_UI4; } break;
+case 627:
+#line 1621 "asmparse.y"
+{ yyval.int32 = VT_UI8; } break;
+case 628:
+#line 1622 "asmparse.y"
+{ yyval.int32 = VT_UI1; } break;
+case 629:
+#line 1623 "asmparse.y"
+{ yyval.int32 = VT_UI2; } break;
+case 630:
+#line 1624 "asmparse.y"
+{ yyval.int32 = VT_UI4; } break;
+case 631:
+#line 1625 "asmparse.y"
+{ yyval.int32 = VT_UI8; } break;
+case 632:
+#line 1626 "asmparse.y"
+{ yyval.int32 = VT_PTR; } break;
+case 633:
+#line 1627 "asmparse.y"
+{ yyval.int32 = yypvt[-2].int32 | VT_ARRAY; } break;
+case 634:
+#line 1628 "asmparse.y"
+{ yyval.int32 = yypvt[-1].int32 | VT_VECTOR; } break;
+case 635:
+#line 1629 "asmparse.y"
+{ yyval.int32 = yypvt[-1].int32 | VT_BYREF; } break;
+case 636:
+#line 1630 "asmparse.y"
+{ yyval.int32 = VT_DECIMAL; } break;
+case 637:
+#line 1631 "asmparse.y"
+{ yyval.int32 = VT_DATE; } break;
+case 638:
+#line 1632 "asmparse.y"
+{ yyval.int32 = VT_BSTR; } break;
+case 639:
+#line 1633 "asmparse.y"
+{ yyval.int32 = VT_LPSTR; } break;
+case 640:
+#line 1634 "asmparse.y"
+{ yyval.int32 = VT_LPWSTR; } break;
+case 641:
+#line 1635 "asmparse.y"
+{ yyval.int32 = VT_UNKNOWN; } break;
+case 642:
+#line 1636 "asmparse.y"
+{ yyval.int32 = VT_DISPATCH; } break;
+case 643:
+#line 1637 "asmparse.y"
+{ yyval.int32 = VT_SAFEARRAY; } break;
+case 644:
+#line 1638 "asmparse.y"
+{ yyval.int32 = VT_INT; } break;
+case 645:
+#line 1639 "asmparse.y"
+{ yyval.int32 = VT_UINT; } break;
+case 646:
+#line 1640 "asmparse.y"
+{ yyval.int32 = VT_UINT; } break;
+case 647:
+#line 1641 "asmparse.y"
+{ yyval.int32 = VT_ERROR; } break;
+case 648:
+#line 1642 "asmparse.y"
+{ yyval.int32 = VT_HRESULT; } break;
+case 649:
+#line 1643 "asmparse.y"
+{ yyval.int32 = VT_CARRAY; } break;
+case 650:
+#line 1644 "asmparse.y"
+{ yyval.int32 = VT_USERDEFINED; } break;
+case 651:
+#line 1645 "asmparse.y"
+{ yyval.int32 = VT_RECORD; } break;
+case 652:
+#line 1646 "asmparse.y"
+{ yyval.int32 = VT_FILETIME; } break;
+case 653:
+#line 1647 "asmparse.y"
+{ yyval.int32 = VT_BLOB; } break;
+case 654:
+#line 1648 "asmparse.y"
+{ yyval.int32 = VT_STREAM; } break;
+case 655:
+#line 1649 "asmparse.y"
+{ yyval.int32 = VT_STORAGE; } break;
+case 656:
+#line 1650 "asmparse.y"
+{ yyval.int32 = VT_STREAMED_OBJECT; } break;
+case 657:
+#line 1651 "asmparse.y"
+{ yyval.int32 = VT_STORED_OBJECT; } break;
+case 658:
+#line 1652 "asmparse.y"
+{ yyval.int32 = VT_BLOB_OBJECT; } break;
+case 659:
+#line 1653 "asmparse.y"
+{ yyval.int32 = VT_CF; } break;
+case 660:
+#line 1654 "asmparse.y"
+{ yyval.int32 = VT_CLSID; } break;
+case 661:
+#line 1658 "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 662:
+#line 1664 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_OBJECT); } break;
+case 663:
+#line 1665 "asmparse.y"
+{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_VALUETYPE, yypvt[-0].token); } break;
+case 664:
+#line 1666 "asmparse.y"
+{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_VALUETYPE, yypvt[-0].token); } break;
+case 665:
+#line 1667 "asmparse.y"
+{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
+case 666:
+#line 1668 "asmparse.y"
+{ yyval.binstr = parser->MakeTypeArray(ELEMENT_TYPE_ARRAY, yypvt[-3].binstr, yypvt[-1].binstr); } break;
+case 667:
+#line 1669 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_BYREF); } break;
+case 668:
+#line 1670 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_PTR); } break;
+case 669:
+#line 1671 "asmparse.y"
+{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_PINNED); } break;
+case 670:
+#line 1672 "asmparse.y"
+{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_CMOD_REQD, yypvt[-1].token);
+ yyval.binstr->append(yypvt[-4].binstr); } break;
+case 671:
+#line 1674 "asmparse.y"
+{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_CMOD_OPT, yypvt[-1].token);
+ yyval.binstr->append(yypvt[-4].binstr); } break;
+case 672:
+#line 1677 "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 673:
+#line 1683 "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 674:
+#line 1690 "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 675:
+#line 1696 "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 676:
+#line 1702 "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 677:
+#line 1717 "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 678:
+#line 1732 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_TYPEDBYREF); } break;
+case 679:
+#line 1733 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_VOID); } break;
+case 680:
+#line 1734 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I); } break;
+case 681:
+#line 1735 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U); } break;
+case 682:
+#line 1736 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U); } break;
+case 683:
+#line 1737 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; } break;
+case 684:
+#line 1738 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SENTINEL); } break;
+case 685:
+#line 1741 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CHAR); } break;
+case 686:
+#line 1742 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); } break;
+case 687:
+#line 1743 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_BOOLEAN); } break;
+case 688:
+#line 1744 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I1); } break;
+case 689:
+#line 1745 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I2); } break;
+case 690:
+#line 1746 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I4); } break;
+case 691:
+#line 1747 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I8); } break;
+case 692:
+#line 1748 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R4); } break;
+case 693:
+#line 1749 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R8); } break;
+case 694:
+#line 1750 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1); } break;
+case 695:
+#line 1751 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2); } break;
+case 696:
+#line 1752 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4); } break;
+case 697:
+#line 1753 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8); } break;
+case 698:
+#line 1754 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1); } break;
+case 699:
+#line 1755 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2); } break;
+case 700:
+#line 1756 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4); } break;
+case 701:
+#line 1757 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8); } break;
+case 702:
+#line 1758 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-0].tdd->m_pbsTypeSpec); } break;
+case 703:
+#line 1761 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; } break;
+case 704:
+#line 1762 "asmparse.y"
+{ yyval.binstr = yypvt[-2].binstr; yypvt[-2].binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
+case 705:
+#line 1765 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0x7FFFFFFF); yyval.binstr->appendInt32(0x7FFFFFFF); } break;
+case 706:
+#line 1766 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0x7FFFFFFF); yyval.binstr->appendInt32(0x7FFFFFFF); } break;
+case 707:
+#line 1767 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0); yyval.binstr->appendInt32(yypvt[-0].int32); } break;
+case 708:
+#line 1768 "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 709:
+#line 1771 "asmparse.y"
+{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(yypvt[-1].int32); yyval.binstr->appendInt32(0x7FFFFFFF); } break;
+case 710:
+#line 1776 "asmparse.y"
+{ PASM->AddPermissionDecl(yypvt[-4].secAct, yypvt[-3].token, yypvt[-1].pair); } break;
+case 711:
+#line 1778 "asmparse.y"
+{ PASM->AddPermissionDecl(yypvt[-5].secAct, yypvt[-4].token, yypvt[-1].binstr); } break;
+case 712:
+#line 1779 "asmparse.y"
+{ PASM->AddPermissionDecl(yypvt[-1].secAct, yypvt[-0].token, (NVPair *)NULL); } break;
+case 713:
+#line 1780 "asmparse.y"
+{ PASM->AddPermissionSetDecl(yypvt[-2].secAct, yypvt[-1].binstr); } break;
+case 714:
+#line 1782 "asmparse.y"
+{ PASM->AddPermissionSetDecl(yypvt[-1].secAct,BinStrToUnicode(yypvt[-0].binstr,true));} break;
+case 715:
+#line 1784 "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 716:
+#line 1792 "asmparse.y"
+{ yyval.binstr = new BinStr(); nSecAttrBlobs = 0;} break;
+case 717:
+#line 1793 "asmparse.y"
+{ yyval.binstr = yypvt[-0].binstr; nSecAttrBlobs = 1; } break;
+case 718:
+#line 1794 "asmparse.y"
+{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); nSecAttrBlobs++; } break;
+case 719:
+#line 1798 "asmparse.y"
+{ yyval.binstr = PASM->EncodeSecAttr(PASM->ReflectionNotation(yypvt[-4].token),yypvt[-1].binstr,nCustomBlobNVPairs);
+ nCustomBlobNVPairs = 0; } break;
+case 720:
+#line 1801 "asmparse.y"
+{ yyval.binstr = PASM->EncodeSecAttr(yypvt[-4].string,yypvt[-1].binstr,nCustomBlobNVPairs);
+ nCustomBlobNVPairs = 0; } break;
+case 721:
+#line 1805 "asmparse.y"
+{ yyval.secAct = yypvt[-2].secAct; bParsingByteArray = TRUE; } break;
+case 722:
+#line 1807 "asmparse.y"
+{ yyval.secAct = yypvt[-2].secAct; bParsingByteArray = TRUE; } break;
+case 723:
+#line 1810 "asmparse.y"
+{ yyval.pair = yypvt[-0].pair; } break;
+case 724:
+#line 1811 "asmparse.y"
+{ yyval.pair = yypvt[-2].pair->Concat(yypvt[-0].pair); } break;
+case 725:
+#line 1814 "asmparse.y"
+{ yypvt[-2].binstr->appendInt8(0); yyval.pair = new NVPair(yypvt[-2].binstr, yypvt[-0].binstr); } break;
+case 726:
+#line 1817 "asmparse.y"
+{ yyval.int32 = 1; } break;
+case 727:
+#line 1818 "asmparse.y"
+{ yyval.int32 = 0; } break;
+case 728:
+#line 1821 "asmparse.y"
+{ yyval.binstr = new BinStr();
+ yyval.binstr->appendInt8(SERIALIZATION_TYPE_BOOLEAN);
+ yyval.binstr->appendInt8(yypvt[-0].int32); } break;
+case 729:
+#line 1824 "asmparse.y"
+{ yyval.binstr = new BinStr();
+ yyval.binstr->appendInt8(SERIALIZATION_TYPE_I4);
+ yyval.binstr->appendInt32(yypvt[-0].int32); } break;
+case 730:
+#line 1827 "asmparse.y"
+{ yyval.binstr = new BinStr();
+ yyval.binstr->appendInt8(SERIALIZATION_TYPE_I4);
+ yyval.binstr->appendInt32(yypvt[-1].int32); } break;
+case 731:
+#line 1830 "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 732:
+#line 1834 "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 733:
+#line 1840 "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 734:
+#line 1846 "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 735:
+#line 1852 "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 736:
+#line 1860 "asmparse.y"
+{ yyval.secAct = dclRequest; } break;
+case 737:
+#line 1861 "asmparse.y"
+{ yyval.secAct = dclDemand; } break;
+case 738:
+#line 1862 "asmparse.y"
+{ yyval.secAct = dclAssert; } break;
+case 739:
+#line 1863 "asmparse.y"
+{ yyval.secAct = dclDeny; } break;
+case 740:
+#line 1864 "asmparse.y"
+{ yyval.secAct = dclPermitOnly; } break;
+case 741:
+#line 1865 "asmparse.y"
+{ yyval.secAct = dclLinktimeCheck; } break;
+case 742:
+#line 1866 "asmparse.y"
+{ yyval.secAct = dclInheritanceCheck; } break;
+case 743:
+#line 1867 "asmparse.y"
+{ yyval.secAct = dclRequestMinimum; } break;
+case 744:
+#line 1868 "asmparse.y"
+{ yyval.secAct = dclRequestOptional; } break;
+case 745:
+#line 1869 "asmparse.y"
+{ yyval.secAct = dclRequestRefuse; } break;
+case 746:
+#line 1870 "asmparse.y"
+{ yyval.secAct = dclPrejitGrant; } break;
+case 747:
+#line 1871 "asmparse.y"
+{ yyval.secAct = dclPrejitDenied; } break;
+case 748:
+#line 1872 "asmparse.y"
+{ yyval.secAct = dclNonCasDemand; } break;
+case 749:
+#line 1873 "asmparse.y"
+{ yyval.secAct = dclNonCasLinkDemand; } break;
+case 750:
+#line 1874 "asmparse.y"
+{ yyval.secAct = dclNonCasInheritance; } break;
+case 751:
+#line 1878 "asmparse.y"
+{ PASM->ResetLineNumbers(); nCurrPC = PASM->m_CurPC; PENV->bExternSource = TRUE; PENV->bExternSourceAutoincrement = FALSE; } break;
+case 752:
+#line 1879 "asmparse.y"
+{ PASM->ResetLineNumbers(); nCurrPC = PASM->m_CurPC; PENV->bExternSource = TRUE; PENV->bExternSourceAutoincrement = TRUE; } break;
+case 753:
+#line 1882 "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 754:
+#line 1885 "asmparse.y"
+{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-0].int32;
+ PENV->nExtCol = 0; PENV->nExtColEnd = static_cast<unsigned>(-1); } break;
+case 755:
+#line 1887 "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 756:
+#line 1890 "asmparse.y"
+{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-2].int32;
+ PENV->nExtCol=yypvt[-0].int32; PENV->nExtColEnd = static_cast<unsigned>(-1);} break;
+case 757:
+#line 1893 "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 758:
+#line 1897 "asmparse.y"
+{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-4].int32;
+ PENV->nExtCol=yypvt[-2].int32; PENV->nExtColEnd = yypvt[-0].int32; } break;
+case 759:
+#line 1900 "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 760:
+#line 1904 "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 761:
+#line 1907 "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 762:
+#line 1911 "asmparse.y"
+{ PENV->nExtLine = yypvt[-6].int32; PENV->nExtLineEnd = yypvt[-4].int32;
+ PENV->nExtCol=yypvt[-2].int32; PENV->nExtColEnd = yypvt[-0].int32; } break;
+case 763:
+#line 1913 "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 764:
+#line 1920 "asmparse.y"
+{ PASMM->AddFile(yypvt[-5].string, yypvt[-6].fileAttr|yypvt[-4].fileAttr|yypvt[-0].fileAttr, yypvt[-2].binstr); } break;
+case 765:
+#line 1921 "asmparse.y"
+{ PASMM->AddFile(yypvt[-1].string, yypvt[-2].fileAttr|yypvt[-0].fileAttr, NULL); } break;
+case 766:
+#line 1924 "asmparse.y"
+{ yyval.fileAttr = (CorFileFlags) 0; } break;
+case 767:
+#line 1925 "asmparse.y"
+{ yyval.fileAttr = (CorFileFlags) (yypvt[-1].fileAttr | ffContainsNoMetaData); } break;
+case 768:
+#line 1928 "asmparse.y"
+{ yyval.fileAttr = (CorFileFlags) 0; } break;
+case 769:
+#line 1929 "asmparse.y"
+{ yyval.fileAttr = (CorFileFlags) 0x80000000; } break;
+case 770:
+#line 1932 "asmparse.y"
+{ bParsingByteArray = TRUE; } break;
+case 771:
+#line 1935 "asmparse.y"
+{ PASMM->StartAssembly(yypvt[-0].string, NULL, (DWORD)yypvt[-1].asmAttr, FALSE); } break;
+case 772:
+#line 1938 "asmparse.y"
+{ yyval.asmAttr = (CorAssemblyFlags) 0; } break;
+case 773:
+#line 1939 "asmparse.y"
+{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afRetargetable); } break;
+case 774:
+#line 1940 "asmparse.y"
+{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afContentType_WindowsRuntime); } break;
+case 775:
+#line 1941 "asmparse.y"
+{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afPA_NoPlatform); } break;
+case 776:
+#line 1942 "asmparse.y"
+{ yyval.asmAttr = yypvt[-2].asmAttr; } break;
+case 777:
+#line 1943 "asmparse.y"
+{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_MSIL); } break;
+case 778:
+#line 1944 "asmparse.y"
+{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_x86); } break;
+case 779:
+#line 1945 "asmparse.y"
+{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_IA64); } break;
+case 780:
+#line 1946 "asmparse.y"
+{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_AMD64); } break;
+case 781:
+#line 1947 "asmparse.y"
+{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_ARM); } break;
+case 784:
+#line 1954 "asmparse.y"
+{ PASMM->SetAssemblyHashAlg(yypvt[-0].int32); } break;
+case 787:
+#line 1959 "asmparse.y"
+{ yyval.int32 = yypvt[-0].int32; } break;
+case 788:
+#line 1960 "asmparse.y"
+{ yyval.int32 = 0xFFFF; } break;
+case 789:
+#line 1963 "asmparse.y"
+{ PASMM->SetAssemblyPublicKey(yypvt[-1].binstr); } break;
+case 790:
+#line 1965 "asmparse.y"
+{ PASMM->SetAssemblyVer((USHORT)yypvt[-6].int32, (USHORT)yypvt[-4].int32, (USHORT)yypvt[-2].int32, (USHORT)yypvt[-0].int32); } break;
+case 791:
+#line 1966 "asmparse.y"
+{ yypvt[-0].binstr->appendInt8(0); PASMM->SetAssemblyLocale(yypvt[-0].binstr,TRUE); } break;
+case 792:
+#line 1967 "asmparse.y"
+{ PASMM->SetAssemblyLocale(yypvt[-1].binstr,FALSE); } break;
+case 795:
+#line 1972 "asmparse.y"
+{ bParsingByteArray = TRUE; } break;
+case 796:
+#line 1975 "asmparse.y"
+{ bParsingByteArray = TRUE; } break;
+case 797:
+#line 1978 "asmparse.y"
+{ bParsingByteArray = TRUE; } break;
+case 798:
+#line 1982 "asmparse.y"
+{ PASMM->StartAssembly(yypvt[-0].string, NULL, yypvt[-1].asmAttr, TRUE); } break;
+case 799:
+#line 1984 "asmparse.y"
+{ PASMM->StartAssembly(yypvt[-2].string, yypvt[-0].string, yypvt[-3].asmAttr, TRUE); } break;
+case 802:
+#line 1991 "asmparse.y"
+{ PASMM->SetAssemblyHashBlob(yypvt[-1].binstr); } break;
+case 804:
+#line 1993 "asmparse.y"
+{ PASMM->SetAssemblyPublicKeyToken(yypvt[-1].binstr); } break;
+case 805:
+#line 1994 "asmparse.y"
+{ PASMM->SetAssemblyAutodetect(); } break;
+case 806:
+#line 1997 "asmparse.y"
+{ PASMM->StartComType(yypvt[-0].string, yypvt[-1].exptAttr);} break;
+case 807:
+#line 2000 "asmparse.y"
+{ PASMM->StartComType(yypvt[-0].string, yypvt[-1].exptAttr); } break;
+case 808:
+#line 2003 "asmparse.y"
+{ yyval.exptAttr = (CorTypeAttr) 0; } break;
+case 809:
+#line 2004 "asmparse.y"
+{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdNotPublic); } break;
+case 810:
+#line 2005 "asmparse.y"
+{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdPublic); } break;
+case 811:
+#line 2006 "asmparse.y"
+{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdForwarder); } break;
+case 812:
+#line 2007 "asmparse.y"
+{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedPublic); } break;
+case 813:
+#line 2008 "asmparse.y"
+{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedPrivate); } break;
+case 814:
+#line 2009 "asmparse.y"
+{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamily); } break;
+case 815:
+#line 2010 "asmparse.y"
+{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedAssembly); } break;
+case 816:
+#line 2011 "asmparse.y"
+{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamANDAssem); } break;
+case 817:
+#line 2012 "asmparse.y"
+{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamORAssem); } break;
+case 820:
+#line 2019 "asmparse.y"
+{ PASMM->SetComTypeFile(yypvt[-0].string); } break;
+case 821:
+#line 2020 "asmparse.y"
+{ PASMM->SetComTypeComType(yypvt[-0].string); } break;
+case 822:
+#line 2021 "asmparse.y"
+{ PASMM->SetComTypeAsmRef(yypvt[-0].string); } break;
+case 823:
+#line 2022 "asmparse.y"
+{ if(!PASMM->SetComTypeImplementationTok(yypvt[-1].int32))
+ PASM->report->error("Invalid implementation of exported type\n"); } break;
+case 824:
+#line 2024 "asmparse.y"
+{ if(!PASMM->SetComTypeClassTok(yypvt[-0].int32))
+ PASM->report->error("Invalid TypeDefID of exported type\n"); } break;
+case 827:
+#line 2030 "asmparse.y"
+{ PASMM->StartManifestRes(yypvt[-0].string, yypvt[-0].string, yypvt[-1].manresAttr); } break;
+case 828:
+#line 2032 "asmparse.y"
+{ PASMM->StartManifestRes(yypvt[-2].string, yypvt[-0].string, yypvt[-3].manresAttr); } break;
+case 829:
+#line 2035 "asmparse.y"
+{ yyval.manresAttr = (CorManifestResourceFlags) 0; } break;
+case 830:
+#line 2036 "asmparse.y"
+{ yyval.manresAttr = (CorManifestResourceFlags) (yypvt[-1].manresAttr | mrPublic); } break;
+case 831:
+#line 2037 "asmparse.y"
+{ yyval.manresAttr = (CorManifestResourceFlags) (yypvt[-1].manresAttr | mrPrivate); } break;
+case 834:
+#line 2044 "asmparse.y"
+{ PASMM->SetManifestResFile(yypvt[-2].string, (ULONG)yypvt[-0].int32); } break;
+case 835:
+#line 2045 "asmparse.y"
+{ PASMM->SetManifestResAsmRef(yypvt[-0].string); } break;/* End of actions */
+#line 329 "D:\\ProjectK3\\src\\tools\\devdiv\\x86\\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
diff --git a/src/ilasm/writer.cpp b/src/ilasm/writer.cpp
index c2b81ffa72..1b1056213a 100644
--- a/src/ilasm/writer.cpp
+++ b/src/ilasm/writer.cpp
@@ -11,8 +11,10 @@
#include "assembler.h"
#include "ceefilegenwriter.h"
+#ifndef FEATURE_CORECLR
#include "strongname.h"
#include "LegacyActivationShim.h"
+#endif
#ifndef _MSC_VER
//cloned definition from ntimage.h that is removed for non MSVC builds
@@ -33,12 +35,17 @@ HRESULT Assembler::InitMetaData()
if(bClock) bClock->cMDInitBegin = GetTickCount();
+#ifdef FEATURE_CORECLR
+ hr = MetaDataGetDispenser(CLSID_CorMetaDataDispenser,
+ IID_IMetaDataDispenserEx, (void **)&m_pDisp);
+#else
hr = LegacyActivationShim::ClrCoCreateInstance(
CLSID_CorMetaDataDispenser,
NULL,
CLSCTX_INPROC_SERVER,
IID_IMetaDataDispenserEx,
(void **)&m_pDisp);
+#endif
if (FAILED(hr))
goto exit;
@@ -250,7 +257,7 @@ HRESULT Assembler::CreateDebugDirectory()
pParam->debugDirData = new BYTE[pParam->debugDirDataSize];
} PAL_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
hr = E_FAIL;
- } WIN_PAL_ENDTRY
+ } PAL_ENDTRY
if(FAILED(hr)) return hr;
// Actually get the data now.
@@ -680,6 +687,7 @@ BYTE HexToByte (CHAR wc)
return (BYTE) (wc - L'a' + 10);
}
+#ifndef FEATURE_CORECLR
bool GetBytesFromHex (LPCSTR szPublicKeyHexString, ULONG cchPublicKeyHexString, BYTE** buffer, ULONG *cbBufferSize)
{
ULONG cchHex = cchPublicKeyHexString;
@@ -869,6 +877,7 @@ HRESULT Assembler::StrongNameSign()
return S_OK;
}
+#endif // !FEATURE_CORECLR
BOOL Assembler::EmitFieldsMethods(Class* pClass)
{
@@ -1222,11 +1231,14 @@ HRESULT Assembler::CreatePEFile(__in __nullterminated WCHAR *pwzOutputFilename)
if(bClock) bClock->cMDEmit1 = GetTickCount();
+#ifndef FEATURE_CORECLR
// Allocate space for a strong name signature if we're delay or full
// signing the assembly.
if (m_pManifest->m_sStrongName.m_pbPublicKey)
if (FAILED(hr = AllocateStrongNameSignature()))
goto exit;
+#endif
+
if(bClock) bClock->cMDEmit2 = GetTickCount();
if(m_VTFList.COUNT()==0)
diff --git a/src/inc/iceefilegen.h b/src/inc/iceefilegen.h
index 4cdb1ec460..dfbb7c169c 100644
--- a/src/inc/iceefilegen.h
+++ b/src/inc/iceefilegen.h
@@ -59,6 +59,11 @@ class ICeeFileGen;
typedef void *HCEEFILE;
+#ifdef FEATURE_CORECLR
+EXTERN_C HRESULT __stdcall CreateICeeFileGen(ICeeFileGen** pCeeFileGen);
+EXTERN_C HRESULT __stdcall DestroyICeeFileGen(ICeeFileGen ** ppCeeFileGen);
+#endif
+
typedef HRESULT (__stdcall * PFN_CreateICeeFileGen)(ICeeFileGen ** ceeFileGen); // call this to instantiate an ICeeFileGen interface
typedef HRESULT (__stdcall * PFN_DestroyICeeFileGen)(ICeeFileGen ** ceeFileGen); // call this to delete an ICeeFileGen