/* Generated by re2c 2.0.3 on Mon Sep 28 14:07:14 2020 */
#line 1 "src/sfizz/OpcodeCleanup.re"
/* -*- mode: c++; -*- */
// SPDX-License-Identifier: BSD-2-Clause

// This code is part of the sfizz library and is licensed under a BSD 2-clause
// license. You should have receive a LICENSE.md file along with the code.
// If not, contact the sfizz maintainers at https://github.com/sfztools/sfizz

#include "Opcode.h"
#include "Macros.h"
#include "absl/strings/string_view.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/ascii.h"
#include <string>

namespace sfz {

static std::string cleanUpOpcodeName(absl::string_view rawOpcode, OpcodeScope scope)
{
    std::string opcode { rawOpcode };

    // always convert it to lower case
    absl::AsciiStrToLower(&opcode);

    #line 28 "src/sfizz/OpcodeCleanup.re"

    #define YYMAXNMATCH 4


    const char* YYCURSOR;
    const char* YYMARKER;
    const char* yypmatch[2 * YYMAXNMATCH];
    size_t yynmatch;
    UNUSED(yynmatch);

    const char* yyt1; const char* yyt2; const char* yyt3; const char* yyt4; const char* yyt5; 

    auto group = [&yypmatch](size_t i) -> absl::string_view {
        const char *beg = yypmatch[2 * i];
        const char *end = yypmatch[2 * i + 1];
        return absl::string_view(beg, end - beg);
    };

    #line 50 "src/sfizz/OpcodeCleanup.re"


    //--------------------------------------------------------------------------

    if (scope == kOpcodeScopeRegion) {

    YYCURSOR = opcode.c_str();

    
#line 56 "src/sfizz/OpcodeCleanup.cpp"
{
	char yych;
	yych = *YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy2;
	case '_':
		yyt1 = YYCURSOR;
		goto yy5;
	default:
		yyt1 = YYCURSOR;
		goto yy4;
	}
yy2:
	++YYCURSOR;
yy3:
#line 65 "src/sfizz/OpcodeCleanup.re"
	{
        goto end_region_oncc;
    }
#line 76 "src/sfizz/OpcodeCleanup.cpp"
yy4:
	yych = *(YYMARKER = ++YYCURSOR);
	if (yych <= 0x00) goto yy3;
	goto yy7;
yy5:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 0x00:	goto yy3;
	case 'c':	goto yy11;
	default:	goto yy7;
	}
yy6:
	yych = *++YYCURSOR;
yy7:
	switch (yych) {
	case 0x00:	goto yy8;
	case '_':	goto yy9;
	default:	goto yy6;
	}
yy8:
	YYCURSOR = YYMARKER;
	goto yy3;
yy9:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy8;
	case '_':	goto yy9;
	case 'c':	goto yy11;
	default:	goto yy6;
	}
yy11:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy8;
	case '_':	goto yy9;
	case 'c':	goto yy12;
	default:	goto yy6;
	}
yy12:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy8;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
		yyt2 = YYCURSOR;
		goto yy13;
	case '_':	goto yy9;
	default:	goto yy6;
	}
yy13:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy15;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy13;
	case '_':	goto yy9;
	default:	goto yy6;
	}
yy15:
	++YYCURSOR;
	yynmatch = 3;
	yypmatch[2] = yyt1;
	yypmatch[4] = yyt2;
	yypmatch[0] = yyt1;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = yyt2 - 3;
	yypmatch[5] = YYCURSOR - 1;
#line 60 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "_oncc", group(2));
        goto end_region_oncc;
    }
#line 165 "src/sfizz/OpcodeCleanup.cpp"
}
#line 69 "src/sfizz/OpcodeCleanup.re"


end_region_oncc:
    /* end */;

    } // scope == kOpcodeScopeRegion

    //--------------------------------------------------------------------------

    if (scope == kOpcodeScopeRegion) {
    again_region:

    YYCURSOR = opcode.c_str();

    
#line 183 "src/sfizz/OpcodeCleanup.cpp"
{
	char yych;
	yych = *YYCURSOR;
	switch (yych) {
	case 'a':
		yyt1 = YYCURSOR;
		goto yy21;
	case 'b':	goto yy22;
	case 'c':
		yyt1 = YYCURSOR;
		goto yy23;
	case 'e':
		yyt1 = YYCURSOR;
		goto yy24;
	case 'f':
		yyt1 = YYCURSOR;
		goto yy25;
	case 'g':
		yyt1 = YYCURSOR;
		goto yy26;
	case 'h':	goto yy27;
	case 'l':
		yyt1 = YYCURSOR;
		goto yy28;
	case 'o':	goto yy29;
	case 'p':
		yyt1 = YYCURSOR;
		goto yy30;
	case 'r':
		yyt1 = YYCURSOR;
		goto yy31;
	case 't':
		yyt1 = YYCURSOR;
		goto yy32;
	default:	goto yy19;
	}
yy19:
	++YYCURSOR;
yy20:
#line 187 "src/sfizz/OpcodeCleanup.re"
	{
        goto end_region;
    }
#line 227 "src/sfizz/OpcodeCleanup.cpp"
yy21:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 'm':	goto yy33;
	default:	goto yy20;
	}
yy22:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 'e':	goto yy35;
	default:	goto yy20;
	}
yy23:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 'u':	goto yy36;
	default:	goto yy20;
	}
yy24:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 'g':	goto yy37;
	case 'q':	goto yy38;
	default:	goto yy20;
	}
yy25:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 'i':	goto yy39;
	default:	goto yy20;
	}
yy26:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 'a':	goto yy40;
	default:	goto yy20;
	}
yy27:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 'i':	goto yy41;
	default:	goto yy20;
	}
yy28:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 'f':	goto yy42;
	case 'o':	goto yy43;
	default:	goto yy20;
	}
yy29:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 'f':	goto yy44;
	case 'n':	goto yy45;
	default:	goto yy20;
	}
yy30:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 'i':	goto yy46;
	case 'o':	goto yy47;
	default:	goto yy20;
	}
yy31:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 'e':	goto yy48;
	default:	goto yy20;
	}
yy32:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 'u':	goto yy49;
	default:	goto yy20;
	}
yy33:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy50;
	default:	goto yy34;
	}
yy34:
	YYCURSOR = YYMARKER;
	goto yy20;
yy35:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy51;
	default:	goto yy34;
	}
yy36:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy52;
	default:	goto yy34;
	}
yy37:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy53;
	default:	goto yy34;
	}
yy38:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy55;
	default:	goto yy34;
	}
yy39:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy57;
	default:	goto yy34;
	}
yy40:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'i':	goto yy58;
	default:	goto yy34;
	}
yy41:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy59;
	default:	goto yy34;
	}
yy42:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy60;
	default:	goto yy34;
	}
yy43:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy61;
	case 'r':	goto yy59;
	default:	goto yy34;
	}
yy44:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy62;
	default:	goto yy34;
	}
yy45:
	yych = *++YYCURSOR;
	switch (yych) {
	case '_':	goto yy63;
	default:	goto yy34;
	}
yy46:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy64;
	default:	goto yy34;
	}
yy47:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy65;
	default:	goto yy34;
	}
yy48:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy66;
	default:	goto yy34;
	}
yy49:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy67;
	default:	goto yy34;
	}
yy50:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy68;
	case 'l':	goto yy69;
	default:	goto yy34;
	}
yy51:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy70;
	default:	goto yy34;
	}
yy52:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy71;
	default:	goto yy34;
	}
yy53:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy53;
	case '_':	goto yy72;
	default:	goto yy34;
	}
yy55:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy55;
	case '_':	goto yy73;
	default:	goto yy34;
	}
yy57:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
		yyt1 = YYCURSOR;
		goto yy74;
	case '_':	goto yy76;
	case 'e':	goto yy68;
	case 'l':	goto yy69;
	case 't':	goto yy77;
	default:	goto yy34;
	}
yy58:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy78;
	default:	goto yy34;
	}
yy59:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy79;
	default:	goto yy34;
	}
yy60:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy80;
	default:	goto yy34;
	}
yy61:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy82;
	default:	goto yy34;
	}
yy62:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'b':
		yyt1 = YYCURSOR;
		goto yy83;
	case 'm':
		yyt1 = YYCURSOR;
		goto yy84;
	default:	goto yy34;
	}
yy63:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'h':	goto yy85;
	case 'l':	goto yy86;
	default:	goto yy34;
	}
yy64:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy87;
	default:	goto yy34;
	}
yy65:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'y':	goto yy88;
	default:	goto yy34;
	}
yy66:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy89;
	default:	goto yy34;
	}
yy67:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy90;
	default:	goto yy34;
	}
yy68:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'g':	goto yy91;
	default:	goto yy34;
	}
yy69:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy92;
	default:	goto yy34;
	}
yy70:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':
		yyt1 = YYCURSOR;
		goto yy93;
	case 'u':
		yyt1 = YYCURSOR;
		goto yy94;
	default:	goto yy34;
	}
yy71:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy95;
	default:	goto yy34;
	}
yy72:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':
		yyt2 = YYCURSOR;
		goto yy96;
	case 'r':
		yyt2 = YYCURSOR;
		goto yy97;
	default:	goto yy34;
	}
yy73:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'b':
		yyt2 = YYCURSOR;
		goto yy98;
	case 'f':
		yyt2 = YYCURSOR;
		goto yy99;
	case 'g':
		yyt2 = YYCURSOR;
		goto yy100;
	default:	goto yy34;
	}
yy74:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy74;
	case 't':	goto yy101;
	default:	goto yy34;
	}
yy76:
	yych = *++YYCURSOR;
	yyt1 = YYCURSOR;
	goto yy105;
yy77:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'y':	goto yy106;
	default:	goto yy34;
	}
yy78:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:
		yyt2 = yyt3 = NULL;
		goto yy107;
	case '_':
		yyt3 = YYCURSOR;
		goto yy109;
	default:	goto yy34;
	}
yy79:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy110;
	default:	goto yy34;
	}
yy80:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy80;
	case '_':	goto yy111;
	default:	goto yy34;
	}
yy82:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':
		yyt1 = YYCURSOR;
		goto yy112;
	case 'm':
		yyt1 = YYCURSOR;
		goto yy113;
	case 's':
		yyt1 = YYCURSOR;
		goto yy114;
	default:	goto yy34;
	}
yy83:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'y':	goto yy115;
	default:	goto yy34;
	}
yy84:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy116;
	default:	goto yy34;
	}
yy85:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'i':	goto yy117;
	default:	goto yy34;
	}
yy86:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy117;
	default:	goto yy34;
	}
yy87:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'h':	goto yy50;
	default:	goto yy34;
	}
yy88:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy118;
	default:	goto yy34;
	}
yy89:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy119;
	default:	goto yy34;
	}
yy90:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:
		yyt2 = yyt3 = NULL;
		goto yy120;
	case '_':
		yyt3 = YYCURSOR;
		goto yy122;
	default:	goto yy34;
	}
yy91:
	yych = *++YYCURSOR;
	switch (yych) {
	case '_':	goto yy124;
	default:	goto yy34;
	}
yy92:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy125;
	default:	goto yy34;
	}
yy93:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy126;
	default:	goto yy34;
	}
yy94:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy127;
	default:	goto yy34;
	}
yy95:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy128;
	default:	goto yy34;
	}
yy96:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'u':	goto yy129;
	default:	goto yy34;
	}
yy97:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy130;
	default:	goto yy34;
	}
yy98:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'w':	goto yy131;
	default:	goto yy34;
	}
yy99:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy132;
	default:	goto yy34;
	}
yy100:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy133;
	default:	goto yy34;
	}
yy101:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'y':	goto yy134;
	default:	goto yy34;
	}
yy102:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[2] = yyt1;
	yypmatch[0] = yyt1 - 4;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = YYCURSOR - 1;
#line 169 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("fil1_", group(1));
        goto end_region;
    }
#line 827 "src/sfizz/OpcodeCleanup.cpp"
yy104:
	yych = *++YYCURSOR;
yy105:
	if (yych <= 0x00) goto yy102;
	goto yy104;
yy106:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy135;
	default:	goto yy34;
	}
yy107:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[0] = yyt1;
	yypmatch[2] = yyt3;
	yypmatch[3] = yyt2;
	yypmatch[1] = YYCURSOR;
#line 146 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("volume", group(1));
        goto end_region;
    }
#line 851 "src/sfizz/OpcodeCleanup.cpp"
yy109:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy138;
	default:	goto yy137;
	}
yy110:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy139;
	default:	goto yy34;
	}
yy111:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':
		yyt2 = YYCURSOR;
		goto yy140;
	case 'o':
		yyt2 = YYCURSOR;
		goto yy141;
	case 'r':
		yyt2 = YYCURSOR;
		goto yy142;
	case 's':
		yyt2 = YYCURSOR;
		goto yy143;
	case 'w':
		yyt2 = YYCURSOR;
		goto yy144;
	default:	goto yy34;
	}
yy112:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy145;
	default:	goto yy34;
	}
yy113:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy146;
	default:	goto yy34;
	}
yy114:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy147;
	default:	goto yy34;
	}
yy115:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy148;
	goto yy34;
yy116:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy150;
	default:	goto yy34;
	}
yy117:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy151;
	case 'h':	goto yy152;
	default:	goto yy34;
	}
yy118:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'h':	goto yy153;
	default:	goto yy34;
	}
yy119:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy154;
	default:	goto yy34;
	}
yy120:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[0] = yyt1;
	yypmatch[2] = yyt3;
	yypmatch[3] = yyt2;
	yypmatch[1] = YYCURSOR;
#line 150 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("pitch", group(1));
        goto end_region;
    }
#line 943 "src/sfizz/OpcodeCleanup.cpp"
yy122:
	yych = *++YYCURSOR;
	if (yych <= 0x00) {
		yyt2 = YYCURSOR;
		goto yy120;
	}
	goto yy122;
yy124:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':
		yyt2 = YYCURSOR;
		goto yy155;
	case 'd':
		yyt2 = YYCURSOR;
		goto yy156;
	case 'h':
		yyt2 = YYCURSOR;
		goto yy157;
	case 'r':
		yyt2 = YYCURSOR;
		goto yy158;
	case 's':
		yyt2 = YYCURSOR;
		goto yy159;
	default:	goto yy34;
	}
yy125:
	yych = *++YYCURSOR;
	switch (yych) {
	case '_':	goto yy160;
	default:	goto yy34;
	}
yy126:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'w':	goto yy161;
	default:	goto yy34;
	}
yy127:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy162;
	goto yy34;
yy128:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:
		yyt2 = yyt3 = NULL;
		goto yy164;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
		yyt2 = YYCURSOR;
		goto yy166;
	case '_':
		yyt2 = yyt4 = NULL;
		yyt3 = YYCURSOR;
		goto yy168;
	default:	goto yy34;
	}
yy129:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy169;
	default:	goto yy34;
	}
yy130:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy170;
	default:	goto yy34;
	}
yy131:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy171;
	default:	goto yy34;
	}
yy132:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy172;
	default:	goto yy34;
	}
yy133:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'i':	goto yy173;
	default:	goto yy34;
	}
yy134:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy174;
	default:	goto yy34;
	}
yy135:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy175;
	default:	goto yy34;
	}
yy136:
	yych = *++YYCURSOR;
yy137:
	if (yych <= 0x00) {
		yyt2 = YYCURSOR;
		goto yy107;
	}
	goto yy136;
yy138:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy176;
	default:	goto yy137;
	}
yy139:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy177;
	default:	goto yy34;
	}
yy140:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'u':	goto yy178;
	default:	goto yy34;
	}
yy141:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy179;
	default:	goto yy34;
	}
yy142:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy180;
	case 'e':	goto yy181;
	default:	goto yy34;
	}
yy143:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy182;
	default:	goto yy34;
	}
yy144:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy183;
	default:	goto yy34;
	}
yy145:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy184;
	default:	goto yy34;
	}
yy146:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy185;
	default:	goto yy34;
	}
yy147:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy186;
	default:	goto yy34;
	}
yy148:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[2] = yyt1;
	yypmatch[0] = yyt1 - 3;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = YYCURSOR - 1;
#line 119 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("off_", group(1));
        goto end_region;
    }
#line 1134 "src/sfizz/OpcodeCleanup.cpp"
yy150:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy115;
	default:	goto yy34;
	}
yy151:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy187;
	default:	goto yy34;
	}
yy152:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy188;
	default:	goto yy34;
	}
yy153:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy189;
	default:	goto yy34;
	}
yy154:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy190;
	default:	goto yy34;
	}
yy155:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy191;
	default:	goto yy34;
	}
yy156:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy192;
	default:	goto yy34;
	}
yy157:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy193;
	default:	goto yy34;
	}
yy158:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy194;
	default:	goto yy34;
	}
yy159:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy195;
	case 'u':	goto yy196;
	default:	goto yy34;
	}
yy160:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':
		yyt2 = YYCURSOR;
		goto yy197;
	case 'f':
		yyt2 = YYCURSOR;
		goto yy198;
	default:	goto yy34;
	}
yy161:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy127;
	default:	goto yy34;
	}
yy162:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[2] = yyt1;
	yypmatch[0] = yyt1 - 4;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = YYCURSOR - 1;
#line 123 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("bend_", group(1));
        goto end_region;
    }
#line 1225 "src/sfizz/OpcodeCleanup.cpp"
yy164:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[0] = yyt1;
	yypmatch[2] = yyt3;
	yypmatch[3] = yyt2;
	yypmatch[1] = YYCURSOR;
#line 173 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("cutoff1", group(1));
        goto end_region;
    }
#line 1238 "src/sfizz/OpcodeCleanup.cpp"
yy166:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy166;
	case '_':
		yyt4 = YYCURSOR;
		goto yy199;
	default:	goto yy34;
	}
yy168:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy202;
	default:	goto yy201;
	}
yy169:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy203;
	default:	goto yy34;
	}
yy170:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy204;
	default:	goto yy34;
	}
yy171:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy205;
	default:	goto yy34;
	}
yy172:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'q':	goto yy131;
	default:	goto yy34;
	}
yy173:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy131;
	default:	goto yy34;
	}
yy174:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy206;
	default:	goto yy34;
	}
yy175:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy207;
	goto yy34;
yy176:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy209;
	default:	goto yy137;
	}
yy177:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy210;
	default:	goto yy34;
	}
yy178:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy211;
	default:	goto yy34;
	}
yy179:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy212;
	default:	goto yy34;
	}
yy180:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy213;
	default:	goto yy34;
	}
yy181:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy214;
	default:	goto yy34;
	}
yy182:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy215;
	default:	goto yy34;
	}
yy183:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'v':	goto yy216;
	default:	goto yy34;
	}
yy184:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy217;
	goto yy34;
yy185:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy184;
	default:	goto yy34;
	}
yy186:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy219;
	default:	goto yy34;
	}
yy187:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
		yyt1 = YYCURSOR;
		goto yy220;
	default:	goto yy34;
	}
yy188:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy222;
	default:	goto yy34;
	}
yy189:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy223;
	default:	goto yy34;
	}
yy190:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy224;
	default:	goto yy34;
	}
yy191:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy225;
	default:	goto yy34;
	}
yy192:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':
	case 'l':	goto yy226;
	default:	goto yy34;
	}
yy193:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy227;
	default:	goto yy34;
	}
yy194:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy228;
	default:	goto yy34;
	}
yy195:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy229;
	default:	goto yy34;
	}
yy196:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy230;
	default:	goto yy34;
	}
yy197:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy231;
	default:	goto yy34;
	}
yy198:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy232;
	case 'r':	goto yy233;
	default:	goto yy34;
	}
yy199:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy234;
	default:	goto yy34;
	}
yy200:
	yych = *++YYCURSOR;
yy201:
	if (yych <= 0x00) {
		yyt2 = YYCURSOR;
		goto yy164;
	}
	goto yy200;
yy202:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy235;
	default:	goto yy201;
	}
yy203:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy236;
	default:	goto yy34;
	}
yy204:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy237;
	default:	goto yy34;
	}
yy205:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
		yyt3 = YYCURSOR;
		goto yy238;
	default:	goto yy34;
	}
yy206:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy240;
	goto yy34;
yy207:
	++YYCURSOR;
	yynmatch = 1;
	yypmatch[0] = YYCURSOR - 8;
	yypmatch[1] = YYCURSOR;
#line 127 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("fil1_type");
        goto end_region;
    }
#line 1515 "src/sfizz/OpcodeCleanup.cpp"
yy209:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy242;
	default:	goto yy137;
	}
yy210:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
		yyt1 = YYCURSOR;
		goto yy243;
	default:	goto yy34;
	}
yy211:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy245;
	default:	goto yy34;
	}
yy212:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy246;
	default:	goto yy34;
	}
yy213:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'i':	goto yy247;
	default:	goto yy34;
	}
yy214:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy248;
	default:	goto yy34;
	}
yy215:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy216;
	default:	goto yy34;
	}
yy216:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy249;
	default:	goto yy34;
	}
yy217:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[2] = yyt1;
	yypmatch[0] = yyt1 - 4;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = YYCURSOR - 1;
#line 115 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("loop_", group(1));
        goto end_region;
    }
#line 1587 "src/sfizz/OpcodeCleanup.cpp"
yy219:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy184;
	default:	goto yy34;
	}
yy220:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy250;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy220;
	default:	goto yy34;
	}
yy222:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy252;
	default:	goto yy34;
	}
yy223:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'y':	goto yy253;
	default:	goto yy34;
	}
yy224:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy254;
	default:	goto yy34;
	}
yy225:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy255;
	default:	goto yy34;
	}
yy226:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy256;
	default:	goto yy34;
	}
yy227:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy257;
	default:	goto yy34;
	}
yy228:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy258;
	default:	goto yy34;
	}
yy229:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy259;
	default:	goto yy34;
	}
yy230:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy260;
	default:	goto yy34;
	}
yy231:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy261;
	default:	goto yy34;
	}
yy232:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy262;
	default:	goto yy34;
	}
yy233:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy263;
	default:	goto yy34;
	}
yy234:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy264;
	default:	goto yy34;
	}
yy235:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy265;
	default:	goto yy201;
	}
yy236:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy266;
	default:	goto yy34;
	}
yy237:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy267;
	default:	goto yy34;
	}
yy238:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy268;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy238;
	default:	goto yy34;
	}
yy240:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[2] = yyt1;
	yypmatch[0] = yyt1 - 3;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = YYCURSOR - 5;
#line 131 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("fil", group(1), "_type");
        goto end_region;
    }
#line 1734 "src/sfizz/OpcodeCleanup.cpp"
yy242:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy270;
	default:	goto yy137;
	}
yy243:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy271;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy243;
	default:	goto yy34;
	}
yy245:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy273;
	default:	goto yy34;
	}
yy246:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy274;
	default:	goto yy34;
	}
yy247:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy249;
	default:	goto yy34;
	}
yy248:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy275;
	default:	goto yy34;
	}
yy249:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy276;
	goto yy34;
yy250:
	++YYCURSOR;
	yynmatch = 3;
	yypmatch[4] = yyt1;
	yypmatch[0] = yyt1 - 7;
	yypmatch[1] = YYCURSOR;
	yypmatch[2] = yyt1 - 4;
	yypmatch[3] = yyt1 - 2;
	yypmatch[5] = YYCURSOR - 1;
#line 155 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("start_", group(1), "cc", group(2));
        goto end_region;
    }
#line 1799 "src/sfizz/OpcodeCleanup.cpp"
yy252:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
		yyt1 = YYCURSOR;
		goto yy278;
	default:	goto yy34;
	}
yy253:
	yych = *++YYCURSOR;
	switch (yych) {
	case '_':	goto yy280;
	default:	goto yy34;
	}
yy254:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:
		yyt2 = yyt3 = NULL;
		goto yy281;
	case '_':
		yyt3 = YYCURSOR;
		goto yy283;
	default:	goto yy34;
	}
yy255:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy285;
	default:	goto yy34;
	}
yy256:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'y':	goto yy257;
	default:	goto yy34;
	}
yy257:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy286;
	default:	goto yy34;
	}
yy258:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy287;
	default:	goto yy34;
	}
yy259:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy257;
	default:	goto yy34;
	}
yy260:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy288;
	default:	goto yy34;
	}
yy261:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy289;
	default:	goto yy34;
	}
yy262:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy290;
	default:	goto yy34;
	}
yy263:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'q':	goto yy290;
	default:	goto yy34;
	}
yy264:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy291;
	default:	goto yy34;
	}
yy265:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy292;
	default:	goto yy201;
	}
yy266:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:
		yyt4 = yyt5 = NULL;
		yyt3 = YYCURSOR;
		goto yy293;
	case '_':
		yyt3 = yyt5 = YYCURSOR;
		goto yy295;
	default:	goto yy34;
	}
yy267:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy297;
	default:	goto yy34;
	}
yy268:
	++YYCURSOR;
	yynmatch = 4;
	yypmatch[2] = yyt1;
	yypmatch[4] = yyt2;
	yypmatch[6] = yyt3;
	yypmatch[0] = yyt1;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = yyt2 - 1;
	yypmatch[5] = yyt3 - 2;
	yypmatch[7] = YYCURSOR - 1;
#line 99 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "_", group(2), "_oncc", group(3));
        goto end_region;
    }
#line 1934 "src/sfizz/OpcodeCleanup.cpp"
yy270:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'm':	goto yy298;
	default:	goto yy137;
	}
yy271:
	++YYCURSOR;
	yynmatch = 3;
	yypmatch[4] = yyt1;
	yypmatch[0] = yyt1 - 8;
	yypmatch[1] = YYCURSOR;
	yypmatch[2] = yyt1 - 8;
	yypmatch[3] = yyt1 - 6;
	yypmatch[5] = YYCURSOR - 1;
#line 182 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "hdcc", group(2));
        goto end_region;
    }
#line 1955 "src/sfizz/OpcodeCleanup.cpp"
yy273:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy299;
	default:	goto yy34;
	}
yy274:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy249;
	default:	goto yy34;
	}
yy275:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy300;
	default:	goto yy34;
	}
yy276:
	++YYCURSOR;
	yynmatch = 3;
	yypmatch[2] = yyt1;
	yypmatch[4] = yyt2;
	yypmatch[0] = yyt1;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = yyt2 - 1;
	yypmatch[5] = YYCURSOR - 1;
#line 103 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "_", group(2), "1");
        goto end_region;
    }
#line 1988 "src/sfizz/OpcodeCleanup.cpp"
yy278:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy301;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy278;
	default:	goto yy34;
	}
yy280:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'g':	goto yy303;
	default:	goto yy34;
	}
yy281:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[0] = yyt1;
	yypmatch[2] = yyt3;
	yypmatch[3] = yyt2;
	yypmatch[1] = YYCURSOR;
#line 177 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("resonance1", group(1));
        goto end_region;
    }
#line 2023 "src/sfizz/OpcodeCleanup.cpp"
yy283:
	yych = *++YYCURSOR;
	if (yych <= 0x00) {
		yyt2 = YYCURSOR;
		goto yy281;
	}
	goto yy283;
yy285:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'k':	goto yy257;
	default:	goto yy34;
	}
yy286:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy304;
	default:	goto yy34;
	}
yy287:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy305;
	default:	goto yy34;
	}
yy288:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'i':	goto yy306;
	default:	goto yy34;
	}
yy289:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'h':	goto yy290;
	default:	goto yy34;
	}
yy290:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy307;
	default:	goto yy34;
	}
yy291:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy308;
	default:	goto yy34;
	}
yy292:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy309;
	default:	goto yy201;
	}
yy293:
	++YYCURSOR;
	yynmatch = 4;
	yypmatch[2] = yyt1;
	yypmatch[4] = yyt2;
	yypmatch[5] = yyt3;
	yypmatch[6] = yyt5;
	yypmatch[7] = yyt4;
	yypmatch[0] = yyt1;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = yyt2 - 1;
#line 111 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "_", group(2), "1", group(3));
        goto end_region;
    }
#line 2095 "src/sfizz/OpcodeCleanup.cpp"
yy295:
	yych = *++YYCURSOR;
	if (yych <= 0x00) {
		yyt4 = YYCURSOR;
		goto yy293;
	}
	goto yy295;
yy297:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy310;
	default:	goto yy34;
	}
yy298:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy311;
	goto yy136;
yy299:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:
		yyt4 = yyt5 = NULL;
		yyt3 = YYCURSOR;
		goto yy313;
	case '_':
		yyt3 = yyt5 = YYCURSOR;
		goto yy315;
	default:	goto yy34;
	}
yy300:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy317;
	default:	goto yy34;
	}
yy301:
	++YYCURSOR;
	yynmatch = 3;
	yypmatch[4] = yyt1;
	yypmatch[0] = yyt1 - 9;
	yypmatch[1] = YYCURSOR;
	yypmatch[2] = yyt1 - 6;
	yypmatch[3] = yyt1 - 4;
	yypmatch[5] = YYCURSOR - 1;
#line 159 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("start_", group(1), "hdcc", group(2));
        goto end_region;
    }
#line 2145 "src/sfizz/OpcodeCleanup.cpp"
yy303:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy318;
	default:	goto yy34;
	}
yy304:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
		yyt3 = YYCURSOR;
		goto yy319;
	default:	goto yy34;
	}
yy305:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy257;
	default:	goto yy34;
	}
yy306:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy257;
	default:	goto yy34;
	}
yy307:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy321;
	default:	goto yy34;
	}
yy308:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy322;
	default:	goto yy34;
	}
yy309:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'm':	goto yy323;
	default:	goto yy201;
	}
yy310:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy266;
	default:	goto yy34;
	}
yy311:
	++YYCURSOR;
	yynmatch = 1;
	yypmatch[0] = YYCURSOR - 12;
	yypmatch[1] = YYCURSOR;
#line 141 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = "amp_random";
        goto end_region;
    }
#line 2215 "src/sfizz/OpcodeCleanup.cpp"
yy313:
	++YYCURSOR;
	yynmatch = 4;
	yypmatch[2] = yyt1;
	yypmatch[4] = yyt2;
	yypmatch[5] = yyt3;
	yypmatch[6] = yyt5;
	yypmatch[7] = yyt4;
	yypmatch[0] = yyt1;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = yyt2 - 1;
#line 107 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "_", group(2), "1", group(3));
        goto end_region;
    }
#line 2232 "src/sfizz/OpcodeCleanup.cpp"
yy315:
	yych = *++YYCURSOR;
	if (yych <= 0x00) {
		yyt4 = YYCURSOR;
		goto yy313;
	}
	goto yy315;
yy317:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy324;
	default:	goto yy34;
	}
yy318:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy325;
	default:	goto yy34;
	}
yy319:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy326;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy319;
	default:	goto yy34;
	}
yy321:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
		yyt3 = YYCURSOR;
		goto yy328;
	default:	goto yy34;
	}
yy322:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'm':	goto yy330;
	default:	goto yy34;
	}
yy323:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy331;
	goto yy200;
yy324:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy299;
	default:	goto yy34;
	}
yy325:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'u':	goto yy333;
	default:	goto yy34;
	}
yy326:
	++YYCURSOR;
	yynmatch = 4;
	yypmatch[2] = yyt1;
	yypmatch[4] = yyt2;
	yypmatch[6] = yyt3;
	yypmatch[0] = yyt1;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = yyt2 - 1;
	yypmatch[5] = yyt3 - 2;
	yypmatch[7] = YYCURSOR - 1;
#line 95 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "_", group(2), "_oncc", group(3));
        goto end_region;
    }
#line 2323 "src/sfizz/OpcodeCleanup.cpp"
yy328:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy334;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy328;
	default:	goto yy34;
	}
yy330:
	yych = *++YYCURSOR;
	if (yych >= 0x01) goto yy34;
yy331:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[0] = yyt1;
	yypmatch[2] = yyt2;
	yypmatch[3] = yyt4;
	yypmatch[1] = YYCURSOR;
#line 164 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("fil", group(1), "_random");
        goto again_region;
    }
#line 2355 "src/sfizz/OpcodeCleanup.cpp"
yy333:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy336;
	default:	goto yy34;
	}
yy334:
	++YYCURSOR;
	yynmatch = 4;
	yypmatch[2] = yyt1;
	yypmatch[4] = yyt2;
	yypmatch[6] = yyt3;
	yypmatch[0] = yyt1;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = yyt2 - 1;
	yypmatch[5] = yyt3 - 2;
	yypmatch[7] = YYCURSOR - 1;
#line 91 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "_", group(2), "_oncc", group(3));
        goto end_region;
    }
#line 2378 "src/sfizz/OpcodeCleanup.cpp"
yy336:
	yych = *++YYCURSOR;
	if (yych >= 0x01) goto yy34;
	++YYCURSOR;
	yynmatch = 1;
	yypmatch[0] = YYCURSOR - 16;
	yypmatch[1] = YYCURSOR;
#line 136 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = "group";
        goto end_region;
    }
#line 2391 "src/sfizz/OpcodeCleanup.cpp"
}
#line 191 "src/sfizz/OpcodeCleanup.re"


end_region:
    /* end */;

    } // scope == kOpcodeScopeRegion

    //--------------------------------------------------------------------------

    if (scope == kOpcodeScopeControl) {

    YYCURSOR = opcode.c_str();

    
#line 2408 "src/sfizz/OpcodeCleanup.cpp"
{
	char yych;
	yych = *YYCURSOR;
	switch (yych) {
	case 's':	goto yy343;
	default:	goto yy341;
	}
yy341:
	++YYCURSOR;
yy342:
#line 211 "src/sfizz/OpcodeCleanup.re"
	{
        goto end_control;
    }
#line 2423 "src/sfizz/OpcodeCleanup.cpp"
yy343:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 'e':	goto yy344;
	default:	goto yy342;
	}
yy344:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy346;
	default:	goto yy345;
	}
yy345:
	YYCURSOR = YYMARKER;
	goto yy342;
yy346:
	yych = *++YYCURSOR;
	switch (yych) {
	case '_':	goto yy347;
	default:	goto yy345;
	}
yy347:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy348;
	default:	goto yy345;
	}
yy348:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy349;
	default:	goto yy345;
	}
yy349:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy350;
	default:	goto yy345;
	}
yy350:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy351;
	default:	goto yy345;
	}
yy351:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy352;
	default:	goto yy345;
	}
yy352:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy353;
	default:	goto yy345;
	}
yy353:
	yych = *++YYCURSOR;
	switch (yych) {
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
		yyt1 = YYCURSOR;
		goto yy354;
	default:	goto yy345;
	}
yy354:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy356;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy354;
	default:	goto yy345;
	}
yy356:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[2] = yyt1;
	yypmatch[0] = yyt1 - 10;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = YYCURSOR - 1;
#line 206 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("set_hdcc", group(1));
        goto end_control;
    }
#line 2526 "src/sfizz/OpcodeCleanup.cpp"
}
#line 215 "src/sfizz/OpcodeCleanup.re"


end_control:
    /* end */;

    } // scope == kOpcodeScopeControl

    //--------------------------------------------------------------------------


    #undef YYMAXNMATCH

    return opcode;
}

Opcode Opcode::cleanUp(OpcodeScope scope) const
{
    return Opcode(cleanUpOpcodeName(opcode, scope), value);
}

} // namespace sfz
