/* Generated by re2c 1.3 on Tue Jul 20 11:23:08 2021 */
#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 "utility/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 210 "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 's':
		yyt1 = YYCURSOR;
		goto yy94;
	case 'u':
		yyt1 = YYCURSOR;
		goto yy95;
	default:	goto yy34;
	}
yy71:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy96;
	default:	goto yy34;
	}
yy72:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':
		yyt2 = YYCURSOR;
		goto yy97;
	case 'r':
		yyt2 = YYCURSOR;
		goto yy98;
	default:	goto yy34;
	}
yy73:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'b':
		yyt2 = YYCURSOR;
		goto yy99;
	case 'f':
		yyt2 = YYCURSOR;
		goto yy100;
	case 'g':
		yyt2 = YYCURSOR;
		goto yy101;
	case 'v':	goto yy102;
	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 yy103;
	default:	goto yy34;
	}
yy76:
	yych = *++YYCURSOR;
	yyt1 = YYCURSOR;
	goto yy107;
yy77:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'y':	goto yy108;
	default:	goto yy34;
	}
yy78:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:
		yyt2 = yyt3 = NULL;
		goto yy109;
	case '_':
		yyt3 = YYCURSOR;
		goto yy111;
	default:	goto yy34;
	}
yy79:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy112;
	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 yy113;
	default:	goto yy34;
	}
yy82:
	yych = *++YYCURSOR;
	switch (yych) {
	case '_':	goto yy114;
	case 'e':
		yyt1 = YYCURSOR;
		goto yy115;
	case 'm':
		yyt1 = YYCURSOR;
		goto yy116;
	case 's':
		yyt1 = YYCURSOR;
		goto yy117;
	default:	goto yy34;
	}
yy83:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'y':	goto yy118;
	default:	goto yy34;
	}
yy84:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy119;
	default:	goto yy34;
	}
yy85:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'i':	goto yy120;
	default:	goto yy34;
	}
yy86:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy120;
	default:	goto yy34;
	}
yy87:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'h':	goto yy50;
	default:	goto yy34;
	}
yy88:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy121;
	default:	goto yy34;
	}
yy89:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy122;
	default:	goto yy34;
	}
yy90:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:
		yyt2 = yyt3 = NULL;
		goto yy123;
	case '_':
		yyt3 = YYCURSOR;
		goto yy125;
	default:	goto yy34;
	}
yy91:
	yych = *++YYCURSOR;
	switch (yych) {
	case '_':	goto yy127;
	default:	goto yy34;
	}
yy92:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy128;
	default:	goto yy34;
	}
yy93:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy129;
	default:	goto yy34;
	}
yy94:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy130;
	default:	goto yy34;
	}
yy95:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy131;
	default:	goto yy34;
	}
yy96:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy132;
	default:	goto yy34;
	}
yy97:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'u':	goto yy133;
	default:	goto yy34;
	}
yy98:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy134;
	default:	goto yy34;
	}
yy99:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'w':	goto yy135;
	default:	goto yy34;
	}
yy100:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy136;
	default:	goto yy34;
	}
yy101:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy137;
	default:	goto yy34;
	}
yy102:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy138;
	default:	goto yy34;
	}
yy103:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'y':	goto yy139;
	default:	goto yy34;
	}
yy104:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[2] = yyt1;
	yypmatch[0] = yyt1 - 4;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = YYCURSOR - 1;
#line 177 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("fil1_", group(1));
        goto end_region;
    }
#line 844 "src/sfizz/OpcodeCleanup.cpp"
yy106:
	yych = *++YYCURSOR;
yy107:
	if (yych <= 0x00) goto yy104;
	goto yy106;
yy108:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy140;
	default:	goto yy34;
	}
yy109:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[0] = yyt1;
	yypmatch[2] = yyt3;
	yypmatch[3] = yyt2;
	yypmatch[1] = YYCURSOR;
#line 154 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("volume", group(1));
        goto end_region;
    }
#line 868 "src/sfizz/OpcodeCleanup.cpp"
yy111:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy143;
	default:	goto yy142;
	}
yy112:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy144;
	default:	goto yy34;
	}
yy113:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':
		yyt2 = YYCURSOR;
		goto yy145;
	case 'o':
		yyt2 = YYCURSOR;
		goto yy146;
	case 'r':
		yyt2 = YYCURSOR;
		goto yy147;
	case 's':
		yyt2 = YYCURSOR;
		goto yy148;
	case 'w':
		yyt2 = YYCURSOR;
		goto yy149;
	default:	goto yy34;
	}
yy114:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy150;
	case 's':	goto yy151;
	default:	goto yy34;
	}
yy115:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy152;
	default:	goto yy34;
	}
yy116:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy153;
	default:	goto yy34;
	}
yy117:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy154;
	default:	goto yy34;
	}
yy118:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy155;
	goto yy34;
yy119:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy157;
	default:	goto yy34;
	}
yy120:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy158;
	case 'h':	goto yy159;
	default:	goto yy34;
	}
yy121:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'h':	goto yy160;
	default:	goto yy34;
	}
yy122:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy161;
	default:	goto yy34;
	}
yy123:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[0] = yyt1;
	yypmatch[2] = yyt3;
	yypmatch[3] = yyt2;
	yypmatch[1] = YYCURSOR;
#line 158 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("pitch", group(1));
        goto end_region;
    }
#line 967 "src/sfizz/OpcodeCleanup.cpp"
yy125:
	yych = *++YYCURSOR;
	if (yych <= 0x00) {
		yyt2 = YYCURSOR;
		goto yy123;
	}
	goto yy125;
yy127:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':
		yyt2 = YYCURSOR;
		goto yy162;
	case 'd':
		yyt2 = YYCURSOR;
		goto yy163;
	case 'h':
		yyt2 = YYCURSOR;
		goto yy164;
	case 'r':
		yyt2 = YYCURSOR;
		goto yy165;
	case 's':
		yyt2 = YYCURSOR;
		goto yy166;
	case 'v':	goto yy167;
	default:	goto yy34;
	}
yy128:
	yych = *++YYCURSOR;
	switch (yych) {
	case '_':	goto yy168;
	default:	goto yy34;
	}
yy129:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'w':	goto yy169;
	default:	goto yy34;
	}
yy130:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy95;
	default:	goto yy34;
	}
yy131:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy170;
	goto yy34;
yy132:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:
		yyt2 = yyt3 = NULL;
		goto yy172;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':
		yyt2 = YYCURSOR;
		goto yy174;
	case '_':
		yyt2 = yyt4 = NULL;
		yyt3 = YYCURSOR;
		goto yy176;
	default:	goto yy34;
	}
yy133:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy177;
	default:	goto yy34;
	}
yy134:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy178;
	default:	goto yy34;
	}
yy135:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy179;
	default:	goto yy34;
	}
yy136:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy180;
	default:	goto yy34;
	}
yy137:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'i':	goto yy181;
	default:	goto yy34;
	}
yy138:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy182;
	default:	goto yy34;
	}
yy139:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy183;
	default:	goto yy34;
	}
yy140:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy184;
	default:	goto yy34;
	}
yy141:
	yych = *++YYCURSOR;
yy142:
	if (yych <= 0x00) {
		yyt2 = YYCURSOR;
		goto yy109;
	}
	goto yy141;
yy143:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy185;
	default:	goto yy142;
	}
yy144:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy186;
	default:	goto yy34;
	}
yy145:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'u':	goto yy187;
	default:	goto yy34;
	}
yy146:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy188;
	default:	goto yy34;
	}
yy147:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy189;
	case 'e':	goto yy190;
	default:	goto yy34;
	}
yy148:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy191;
	default:	goto yy34;
	}
yy149:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy192;
	default:	goto yy34;
	}
yy150:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy193;
	default:	goto yy34;
	}
yy151:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy194;
	default:	goto yy34;
	}
yy152:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy195;
	default:	goto yy34;
	}
yy153:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy196;
	default:	goto yy34;
	}
yy154:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy197;
	default:	goto yy34;
	}
yy155:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[2] = yyt1;
	yypmatch[0] = yyt1 - 3;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = YYCURSOR - 1;
#line 127 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("off_", group(1));
        goto end_region;
    }
#line 1183 "src/sfizz/OpcodeCleanup.cpp"
yy157:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy118;
	default:	goto yy34;
	}
yy158:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy198;
	default:	goto yy34;
	}
yy159:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy199;
	default:	goto yy34;
	}
yy160:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy200;
	default:	goto yy34;
	}
yy161:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy201;
	default:	goto yy34;
	}
yy162:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy202;
	default:	goto yy34;
	}
yy163:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy203;
	default:	goto yy34;
	}
yy164:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy204;
	default:	goto yy34;
	}
yy165:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy205;
	default:	goto yy34;
	}
yy166:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy206;
	case 'u':	goto yy207;
	default:	goto yy34;
	}
yy167:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy208;
	default:	goto yy34;
	}
yy168:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':
		yyt2 = YYCURSOR;
		goto yy209;
	case 'f':
		yyt2 = YYCURSOR;
		goto yy210;
	default:	goto yy34;
	}
yy169:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy131;
	default:	goto yy34;
	}
yy170:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[2] = yyt1;
	yypmatch[0] = yyt1 - 4;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = YYCURSOR - 1;
#line 131 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("bend_", group(1));
        goto end_region;
    }
#line 1280 "src/sfizz/OpcodeCleanup.cpp"
yy172:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[0] = yyt1;
	yypmatch[2] = yyt3;
	yypmatch[3] = yyt2;
	yypmatch[1] = YYCURSOR;
#line 181 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("cutoff1", group(1));
        goto end_region;
    }
#line 1293 "src/sfizz/OpcodeCleanup.cpp"
yy174:
	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 yy174;
	case '_':
		yyt4 = YYCURSOR;
		goto yy211;
	default:	goto yy34;
	}
yy176:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy214;
	default:	goto yy213;
	}
yy177:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy215;
	default:	goto yy34;
	}
yy178:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy216;
	default:	goto yy34;
	}
yy179:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy217;
	default:	goto yy34;
	}
yy180:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'q':	goto yy135;
	default:	goto yy34;
	}
yy181:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy135;
	default:	goto yy34;
	}
yy182:
	yych = *++YYCURSOR;
	switch (yych) {
	case '2':	goto yy218;
	default:	goto yy34;
	}
yy183:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy219;
	default:	goto yy34;
	}
yy184:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy220;
	goto yy34;
yy185:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy222;
	default:	goto yy142;
	}
yy186:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy223;
	default:	goto yy34;
	}
yy187:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy224;
	default:	goto yy34;
	}
yy188:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy225;
	default:	goto yy34;
	}
yy189:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy226;
	default:	goto yy34;
	}
yy190:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy227;
	default:	goto yy34;
	}
yy191:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy228;
	default:	goto yy34;
	}
yy192:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'v':	goto yy229;
	default:	goto yy34;
	}
yy193:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy230;
	default:	goto yy34;
	}
yy194:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy231;
	default:	goto yy34;
	}
yy195:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy232;
	goto yy34;
yy196:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy195;
	default:	goto yy34;
	}
yy197:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy234;
	default:	goto yy34;
	}
yy198:
	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 yy235;
	default:	goto yy34;
	}
yy199:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy237;
	default:	goto yy34;
	}
yy200:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy238;
	default:	goto yy34;
	}
yy201:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy239;
	default:	goto yy34;
	}
yy202:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy240;
	default:	goto yy34;
	}
yy203:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':
	case 'l':	goto yy241;
	default:	goto yy34;
	}
yy204:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy242;
	default:	goto yy34;
	}
yy205:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy243;
	default:	goto yy34;
	}
yy206:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy244;
	default:	goto yy34;
	}
yy207:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy245;
	default:	goto yy34;
	}
yy208:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy246;
	default:	goto yy34;
	}
yy209:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy247;
	default:	goto yy34;
	}
yy210:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy248;
	case 'r':	goto yy249;
	default:	goto yy34;
	}
yy211:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy250;
	default:	goto yy34;
	}
yy212:
	yych = *++YYCURSOR;
yy213:
	if (yych <= 0x00) {
		yyt2 = YYCURSOR;
		goto yy172;
	}
	goto yy212;
yy214:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy251;
	default:	goto yy213;
	}
yy215:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy252;
	default:	goto yy34;
	}
yy216:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy253;
	default:	goto yy34;
	}
yy217:
	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 yy254;
	default:	goto yy34;
	}
yy218:
	yych = *++YYCURSOR;
	yyt2 = YYCURSOR;
	goto yy259;
yy219:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy260;
	goto yy34;
yy220:
	++YYCURSOR;
	yynmatch = 1;
	yypmatch[0] = YYCURSOR - 8;
	yypmatch[1] = YYCURSOR;
#line 135 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("fil1_type");
        goto end_region;
    }
#line 1598 "src/sfizz/OpcodeCleanup.cpp"
yy222:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy262;
	default:	goto yy142;
	}
yy223:
	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 yy263;
	default:	goto yy34;
	}
yy224:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy265;
	default:	goto yy34;
	}
yy225:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy266;
	default:	goto yy34;
	}
yy226:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'i':	goto yy267;
	default:	goto yy34;
	}
yy227:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy268;
	default:	goto yy34;
	}
yy228:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy229;
	default:	goto yy34;
	}
yy229:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy269;
	default:	goto yy34;
	}
yy230:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'g':	goto yy270;
	default:	goto yy34;
	}
yy231:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy271;
	default:	goto yy34;
	}
yy232:
	++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("loop_", group(1));
        goto end_region;
    }
#line 1682 "src/sfizz/OpcodeCleanup.cpp"
yy234:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy195;
	default:	goto yy34;
	}
yy235:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy272;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy235;
	default:	goto yy34;
	}
yy237:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy274;
	default:	goto yy34;
	}
yy238:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'y':	goto yy275;
	default:	goto yy34;
	}
yy239:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy276;
	default:	goto yy34;
	}
yy240:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy277;
	default:	goto yy34;
	}
yy241:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy278;
	default:	goto yy34;
	}
yy242:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy279;
	default:	goto yy34;
	}
yy243:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy280;
	default:	goto yy34;
	}
yy244:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy281;
	default:	goto yy34;
	}
yy245:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy282;
	default:	goto yy34;
	}
yy246:
	yych = *++YYCURSOR;
	switch (yych) {
	case '2':	goto yy283;
	default:	goto yy34;
	}
yy247:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy284;
	default:	goto yy34;
	}
yy248:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy285;
	default:	goto yy34;
	}
yy249:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy286;
	default:	goto yy34;
	}
yy250:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy287;
	default:	goto yy34;
	}
yy251:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy288;
	default:	goto yy213;
	}
yy252:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy289;
	default:	goto yy34;
	}
yy253:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy290;
	default:	goto yy34;
	}
yy254:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy291;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy254;
	default:	goto yy34;
	}
yy256:
	++YYCURSOR;
	yynmatch = 3;
	yypmatch[2] = yyt1;
	yypmatch[4] = yyt2;
	yypmatch[0] = yyt1;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = yyt2 - 5;
	yypmatch[5] = YYCURSOR - 1;
#line 107 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "_velto", group(2));
        goto end_region;
    }
#line 1837 "src/sfizz/OpcodeCleanup.cpp"
yy258:
	yych = *++YYCURSOR;
yy259:
	if (yych <= 0x00) goto yy256;
	goto yy258;
yy260:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[2] = yyt1;
	yypmatch[0] = yyt1 - 3;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = YYCURSOR - 5;
#line 139 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("fil", group(1), "_type");
        goto end_region;
    }
#line 1855 "src/sfizz/OpcodeCleanup.cpp"
yy262:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy293;
	default:	goto yy142;
	}
yy263:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy294;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy263;
	default:	goto yy34;
	}
yy265:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy296;
	default:	goto yy34;
	}
yy266:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy297;
	default:	goto yy34;
	}
yy267:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy269;
	default:	goto yy34;
	}
yy268:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy298;
	default:	goto yy34;
	}
yy269:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy299;
	goto yy34;
yy270:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy301;
	default:	goto yy34;
	}
yy271:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy302;
	default:	goto yy34;
	}
yy272:
	++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 163 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("start_", group(1), "cc", group(2));
        goto end_region;
    }
#line 1932 "src/sfizz/OpcodeCleanup.cpp"
yy274:
	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 yy303;
	default:	goto yy34;
	}
yy275:
	yych = *++YYCURSOR;
	switch (yych) {
	case '_':	goto yy305;
	default:	goto yy34;
	}
yy276:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:
		yyt2 = yyt3 = NULL;
		goto yy306;
	case '_':
		yyt3 = YYCURSOR;
		goto yy308;
	default:	goto yy34;
	}
yy277:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy310;
	default:	goto yy34;
	}
yy278:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'y':	goto yy279;
	default:	goto yy34;
	}
yy279:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy311;
	default:	goto yy34;
	}
yy280:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy312;
	default:	goto yy34;
	}
yy281:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy279;
	default:	goto yy34;
	}
yy282:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy313;
	default:	goto yy34;
	}
yy283:
	yych = *++YYCURSOR;
	yyt2 = YYCURSOR;
	goto yy317;
yy284:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy318;
	default:	goto yy34;
	}
yy285:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy319;
	default:	goto yy34;
	}
yy286:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'q':	goto yy319;
	default:	goto yy34;
	}
yy287:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy320;
	default:	goto yy34;
	}
yy288:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy321;
	default:	goto yy213;
	}
yy289:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:
		yyt4 = yyt5 = NULL;
		yyt3 = YYCURSOR;
		goto yy322;
	case '_':
		yyt3 = yyt5 = YYCURSOR;
		goto yy324;
	default:	goto yy34;
	}
yy290:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy326;
	default:	goto yy34;
	}
yy291:
	++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 103 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "_", group(2), "_oncc", group(3));
        goto end_region;
    }
#line 2071 "src/sfizz/OpcodeCleanup.cpp"
yy293:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'm':	goto yy327;
	default:	goto yy142;
	}
yy294:
	++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 190 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "hdcc", group(2));
        goto end_region;
    }
#line 2092 "src/sfizz/OpcodeCleanup.cpp"
yy296:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'f':	goto yy328;
	default:	goto yy34;
	}
yy297:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy269;
	default:	goto yy34;
	}
yy298:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy329;
	default:	goto yy34;
	}
yy299:
	++YYCURSOR;
	yynmatch = 3;
	yypmatch[2] = yyt1;
	yypmatch[4] = yyt2;
	yypmatch[0] = yyt1;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = yyt2 - 1;
	yypmatch[5] = YYCURSOR - 1;
#line 111 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "_", group(2), "1");
        goto end_region;
    }
#line 2125 "src/sfizz/OpcodeCleanup.cpp"
yy301:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'h':	goto yy330;
	default:	goto yy34;
	}
yy302:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy331;
	default:	goto yy34;
	}
yy303:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy332;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy303;
	default:	goto yy34;
	}
yy305:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'g':	goto yy334;
	default:	goto yy34;
	}
yy306:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[0] = yyt1;
	yypmatch[2] = yyt3;
	yypmatch[3] = yyt2;
	yypmatch[1] = YYCURSOR;
#line 185 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("resonance1", group(1));
        goto end_region;
    }
#line 2172 "src/sfizz/OpcodeCleanup.cpp"
yy308:
	yych = *++YYCURSOR;
	if (yych <= 0x00) {
		yyt2 = YYCURSOR;
		goto yy306;
	}
	goto yy308;
yy310:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'k':	goto yy279;
	default:	goto yy34;
	}
yy311:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy335;
	default:	goto yy34;
	}
yy312:
	yych = *++YYCURSOR;
	switch (yych) {
	case 's':	goto yy336;
	default:	goto yy34;
	}
yy313:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'i':	goto yy337;
	default:	goto yy34;
	}
yy314:
	++YYCURSOR;
	yynmatch = 3;
	yypmatch[2] = yyt1;
	yypmatch[4] = yyt2;
	yypmatch[0] = yyt1;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = yyt2 - 5;
	yypmatch[5] = YYCURSOR - 1;
#line 99 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "_velto", group(2));
        goto end_region;
    }
#line 2218 "src/sfizz/OpcodeCleanup.cpp"
yy316:
	yych = *++YYCURSOR;
yy317:
	if (yych <= 0x00) goto yy314;
	goto yy316;
yy318:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'h':	goto yy319;
	default:	goto yy34;
	}
yy319:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy338;
	default:	goto yy34;
	}
yy320:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'd':	goto yy339;
	default:	goto yy34;
	}
yy321:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy340;
	default:	goto yy213;
	}
yy322:
	++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 119 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "_", group(2), "1", group(3));
        goto end_region;
    }
#line 2264 "src/sfizz/OpcodeCleanup.cpp"
yy324:
	yych = *++YYCURSOR;
	if (yych <= 0x00) {
		yyt4 = YYCURSOR;
		goto yy322;
	}
	goto yy324;
yy326:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy341;
	default:	goto yy34;
	}
yy327:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy342;
	goto yy141;
yy328:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:
		yyt4 = yyt5 = NULL;
		yyt3 = YYCURSOR;
		goto yy344;
	case '_':
		yyt3 = yyt5 = YYCURSOR;
		goto yy346;
	default:	goto yy34;
	}
yy329:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy348;
	default:	goto yy34;
	}
yy330:
	yych = *++YYCURSOR;
	switch (yych) {
	case '_':	goto yy349;
	case 'c':	goto yy350;
	default:	goto yy34;
	}
yy331:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy351;
	default:	goto yy34;
	}
yy332:
	++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 167 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("start_", group(1), "hdcc", group(2));
        goto end_region;
    }
#line 2327 "src/sfizz/OpcodeCleanup.cpp"
yy334:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy352;
	default:	goto yy34;
	}
yy335:
	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 yy353;
	default:	goto yy34;
	}
yy336:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy279;
	default:	goto yy34;
	}
yy337:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy279;
	default:	goto yy34;
	}
yy338:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy355;
	default:	goto yy34;
	}
yy339:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy356;
	default:	goto yy34;
	}
yy340:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'm':	goto yy357;
	default:	goto yy213;
	}
yy341:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy289;
	default:	goto yy34;
	}
yy342:
	++YYCURSOR;
	yynmatch = 1;
	yypmatch[0] = YYCURSOR - 12;
	yypmatch[1] = YYCURSOR;
#line 149 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = "amp_random";
        goto end_region;
    }
#line 2397 "src/sfizz/OpcodeCleanup.cpp"
yy344:
	++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 115 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat(group(1), "_", group(2), "1", group(3));
        goto end_region;
    }
#line 2414 "src/sfizz/OpcodeCleanup.cpp"
yy346:
	yych = *++YYCURSOR;
	if (yych <= 0x00) {
		yyt4 = YYCURSOR;
		goto yy344;
	}
	goto yy346;
yy348:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy358;
	default:	goto yy34;
	}
yy349:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy359;
	default:	goto yy34;
	}
yy350:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy360;
	default:	goto yy34;
	}
yy351:
	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 yy361;
	default:	goto yy34;
	}
yy352:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'o':	goto yy363;
	default:	goto yy34;
	}
yy353:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy364;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy353;
	default:	goto yy34;
	}
yy355:
	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 yy366;
	default:	goto yy34;
	}
yy356:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'm':	goto yy368;
	default:	goto yy34;
	}
yy357:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy369;
	goto yy212;
yy358:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy328;
	default:	goto yy34;
	}
yy359:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'n':	goto yy371;
	default:	goto yy34;
	}
yy360:
	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 yy372;
	default:	goto yy34;
	}
yy361:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy374;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy361;
	default:	goto yy34;
	}
yy363:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'u':	goto yy376;
	default:	goto yy34;
	}
yy364:
	++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 2573 "src/sfizz/OpcodeCleanup.cpp"
yy366:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy377;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy366;
	default:	goto yy34;
	}
yy368:
	yych = *++YYCURSOR;
	if (yych >= 0x01) goto yy34;
yy369:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[0] = yyt1;
	yypmatch[2] = yyt2;
	yypmatch[3] = yyt4;
	yypmatch[1] = YYCURSOR;
#line 172 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("fil", group(1), "_random");
        goto again_region;
    }
#line 2605 "src/sfizz/OpcodeCleanup.cpp"
yy371:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy379;
	default:	goto yy34;
	}
yy372:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy380;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy372;
	default:	goto yy34;
	}
yy374:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[2] = yyt1;
	yypmatch[0] = yyt1 - 12;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = YYCURSOR - 1;
#line 195 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("loop_start_oncc", group(1));
        goto end_region;
    }
#line 2640 "src/sfizz/OpcodeCleanup.cpp"
yy376:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'p':	goto yy382;
	default:	goto yy34;
	}
yy377:
	++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 2663 "src/sfizz/OpcodeCleanup.cpp"
yy379:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy383;
	default:	goto yy34;
	}
yy380:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[2] = yyt1;
	yypmatch[0] = yyt1 - 13;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = YYCURSOR - 1;
#line 200 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("loop_end_oncc", group(1));
        goto end_region;
    }
#line 2682 "src/sfizz/OpcodeCleanup.cpp"
yy382:
	yych = *++YYCURSOR;
	if (yych <= 0x00) goto yy384;
	goto yy34;
yy383:
	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 yy386;
	default:	goto yy34;
	}
yy384:
	++YYCURSOR;
	yynmatch = 1;
	yypmatch[0] = YYCURSOR - 16;
	yypmatch[1] = YYCURSOR;
#line 144 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = "group";
        goto end_region;
    }
#line 2714 "src/sfizz/OpcodeCleanup.cpp"
yy386:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy388;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy386;
	default:	goto yy34;
	}
yy388:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[2] = yyt1;
	yypmatch[0] = yyt1 - 16;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = YYCURSOR - 1;
#line 205 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("loop_end_oncc", group(1));
        goto end_region;
    }
#line 2743 "src/sfizz/OpcodeCleanup.cpp"
}
#line 214 "src/sfizz/OpcodeCleanup.re"


end_region:
    /* end */;

    } // scope == kOpcodeScopeRegion

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

    if (scope == kOpcodeScopeControl) {

    YYCURSOR = opcode.c_str();

    
#line 2760 "src/sfizz/OpcodeCleanup.cpp"
{
	char yych;
	yych = *YYCURSOR;
	switch (yych) {
	case 's':	goto yy394;
	default:	goto yy392;
	}
yy392:
	++YYCURSOR;
yy393:
#line 234 "src/sfizz/OpcodeCleanup.re"
	{
        goto end_control;
    }
#line 2775 "src/sfizz/OpcodeCleanup.cpp"
yy394:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
	case 'e':	goto yy395;
	default:	goto yy393;
	}
yy395:
	yych = *++YYCURSOR;
	switch (yych) {
	case 't':	goto yy397;
	default:	goto yy396;
	}
yy396:
	YYCURSOR = YYMARKER;
	goto yy393;
yy397:
	yych = *++YYCURSOR;
	switch (yych) {
	case '_':	goto yy398;
	default:	goto yy396;
	}
yy398:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'r':	goto yy399;
	default:	goto yy396;
	}
yy399:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'e':	goto yy400;
	default:	goto yy396;
	}
yy400:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'a':	goto yy401;
	default:	goto yy396;
	}
yy401:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'l':	goto yy402;
	default:	goto yy396;
	}
yy402:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy403;
	default:	goto yy396;
	}
yy403:
	yych = *++YYCURSOR;
	switch (yych) {
	case 'c':	goto yy404;
	default:	goto yy396;
	}
yy404:
	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 yy405;
	default:	goto yy396;
	}
yy405:
	yych = *++YYCURSOR;
	switch (yych) {
	case 0x00:	goto yy407;
	case '0':
	case '1':
	case '2':
	case '3':
	case '4':
	case '5':
	case '6':
	case '7':
	case '8':
	case '9':	goto yy405;
	default:	goto yy396;
	}
yy407:
	++YYCURSOR;
	yynmatch = 2;
	yypmatch[2] = yyt1;
	yypmatch[0] = yyt1 - 10;
	yypmatch[1] = YYCURSOR;
	yypmatch[3] = YYCURSOR - 1;
#line 229 "src/sfizz/OpcodeCleanup.re"
	{
        opcode = absl::StrCat("set_hdcc", group(1));
        goto end_control;
    }
#line 2878 "src/sfizz/OpcodeCleanup.cpp"
}
#line 238 "src/sfizz/OpcodeCleanup.re"


end_control:
    /* end */;

    } // scope == kOpcodeScopeControl

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


    #undef YYMAXNMATCH

    return opcode;
}

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

} // namespace sfz
