--- regexp_nfa.orig.c	2013-08-01 09:27:51.000000000 -0700
+++ regexp_nfa.c	2016-03-27 15:23:10.290098500 -0700
@@ -742,84 +742,193 @@
     {
 	switch (c)
 	{
-	    case 'A': case 0300: case 0301: case 0302:
-	    case 0303: case 0304: case 0305:
-		    EMIT2('A');	    EMIT2(0300);    EMIT2(0301);
-		    EMIT2(0302);    EMIT2(0303);    EMIT2(0304);
-		    EMIT2(0305);
-		    return OK;
-
-	    case 'C': case 0307:
-		    EMIT2('C');	    EMIT2(0307);
-		    return OK;
-
-	    case 'E': case 0310: case 0311: case 0312: case 0313:
-		    EMIT2('E');	    EMIT2(0310);    EMIT2(0311);
-		    EMIT2(0312);    EMIT2(0313);
-		    return OK;
-
-	    case 'I': case 0314: case 0315: case 0316: case 0317:
-		    EMIT2('I');	    EMIT2(0314);    EMIT2(0315);
-		    EMIT2(0316);    EMIT2(0317);
-		    return OK;
-
-	    case 'N': case 0321:
-		    EMIT2('N');	    EMIT2(0321);
-		    return OK;
-
-	    case 'O': case 0322: case 0323: case 0324: case 0325:
-	    case 0326:
-		    EMIT2('O');	    EMIT2(0322);    EMIT2(0323);
-		    EMIT2(0324);    EMIT2(0325);    EMIT2(0326);
-		    return OK;
-
-	    case 'U': case 0331: case 0332: case 0333: case 0334:
-		    EMIT2('U');	    EMIT2(0331);    EMIT2(0332);
-		    EMIT2(0333);    EMIT2(0334);
-		    return OK;
-
-	    case 'Y': case 0335:
-		    EMIT2('Y');	    EMIT2(0335);
-		    return OK;
-
-	    case 'a': case 0340: case 0341: case 0342:
-	    case 0343: case 0344: case 0345:
-		    EMIT2('a');	    EMIT2(0340);    EMIT2(0341);
-		    EMIT2(0342);    EMIT2(0343);    EMIT2(0344);
-		    EMIT2(0345);
-		    return OK;
-
-	    case 'c': case 0347:
-		    EMIT2('c');	    EMIT2(0347);
-		    return OK;
-
-	    case 'e': case 0350: case 0351: case 0352: case 0353:
-		    EMIT2('e');	    EMIT2(0350);    EMIT2(0351);
-		    EMIT2(0352);    EMIT2(0353);
-		    return OK;
-
-	    case 'i': case 0354: case 0355: case 0356: case 0357:
-		    EMIT2('i');	    EMIT2(0354);    EMIT2(0355);
-		    EMIT2(0356);    EMIT2(0357);
-		    return OK;
-
-	    case 'n': case 0361:
-		    EMIT2('n');	    EMIT2(0361);
-		    return OK;
-
-	    case 'o': case 0362: case 0363: case 0364: case 0365:
-	    case 0366:
-		    EMIT2('o');	    EMIT2(0362);    EMIT2(0363);
-		    EMIT2(0364);    EMIT2(0365);    EMIT2(0366);
-		    return OK;
-
-	    case 'u': case 0371: case 0372: case 0373: case 0374:
-		    EMIT2('u');	    EMIT2(0371);    EMIT2(0372);
-		    EMIT2(0373);    EMIT2(0374);
-		    return OK;
-
-	    case 'y': case 0375: case 0377:
-		    EMIT2('y');	    EMIT2(0375);    EMIT2(0377);
+	/* Owen start of changes */
+	#ifdef EBCDIC
+	#define AALTERNATE1 0x62
+	#define AALTERNATE2 0x63
+	#define AALTERNATE3 0x64
+	#define AALTERNATE4 0x65
+	#define AALTERNATE5 0x66
+	#define AALTERNATE6 0x67
+	#define CALTERNATE1 0x68
+	#define EALTERNATE1 0x71
+	#define EALTERNATE2 0x72
+	#define EALTERNATE3 0x73
+	#define EALTERNATE4 0x74
+	#define IALTERNATE1 0x75
+	#define IALTERNATE2 0x76
+	#define IALTERNATE3 0x77
+	#define IALTERNATE4 0x78
+	#define NALTERNATE1 0x69
+	#define OALTERNATE1 0xeb
+	#define OALTERNATE2 0xec
+	#define OALTERNATE3 0xed
+	#define OALTERNATE4 0xee
+	#define OALTERNATE5 0xef
+	#define UALTERNATE1 0xfb
+	#define UALTERNATE2 0xfc
+	#define UALTERNATE3 0xfd
+	#define UALTERNATE4 0xfe
+	#define YALTERNATE1 0xba
+	#define aALTERNATE1 0x42
+	#define aALTERNATE2 0x43
+	#define aALTERNATE3 0x44
+	#define aALTERNATE4 0x45
+	#define aALTERNATE5 0x46
+	#define aALTERNATE6 0x47
+	#define cALTERNATE1 0x48
+	#define eALTERNATE1 0x51
+	#define eALTERNATE2 0x52
+	#define eALTERNATE3 0x53
+	#define eALTERNATE4 0x54
+	#define iALTERNATE1 0x55
+	#define iALTERNATE2 0x56
+	#define iALTERNATE3 0x57
+	#define iALTERNATE4 0x58
+	#define nALTERNATE1 0x49
+	#define oALTERNATE1 0xcb
+	#define oALTERNATE2 0xcc
+	#define oALTERNATE3 0xcd
+	#define oALTERNATE4 0xce
+	#define oALTERNATE5 0xcf
+	#define uALTERNATE1 0xdb
+	#define uALTERNATE2 0xdc
+	#define uALTERNATE3 0xdd
+	#define uALTERNATE4 0xde
+	#define yALTERNATE1 0x8d
+	#define yALTERNATE2 0xdf
+	#else
+	#define AALTERNATE1 0300
+	#define AALTERNATE2 0301
+	#define AALTERNATE3 0302
+	#define AALTERNATE4 0303
+	#define AALTERNATE5 0304
+	#define AALTERNATE6 0305
+	#define CALTERNATE1 0307
+	#define EALTERNATE1 0310
+	#define EALTERNATE2 0311
+	#define EALTERNATE3 0312
+	#define EALTERNATE4 0313
+	#define IALTERNATE1 0314
+	#define IALTERNATE2 0315
+	#define IALTERNATE3 0316
+	#define IALTERNATE4 0317
+	#define NALTERNATE1 0321
+	#define OALTERNATE1 0322
+	#define OALTERNATE2 0323
+	#define OALTERNATE3 0324
+	#define OALTERNATE4 0325
+	#define OALTERNATE5 0326
+	#define UALTERNATE1 0331
+	#define UALTERNATE2 0332
+	#define UALTERNATE3 0333
+	#define UALTERNATE4 0334
+	#define YALTERNATE1 0335
+	#define aALTERNATE1 0340
+	#define aALTERNATE2 0341
+	#define aALTERNATE3 0342
+	#define aALTERNATE4 0343
+	#define aALTERNATE5 0344
+	#define aALTERNATE6 0345
+	#define cALTERNATE1 0347
+	#define eALTERNATE1 0350
+	#define eALTERNATE2 0351
+	#define eALTERNATE3 0352
+	#define eALTERNATE4 0353
+	#define iALTERNATE1 0354
+	#define iALTERNATE2 0355
+	#define iALTERNATE3 0356
+	#define iALTERNATE4 0357
+	#define nALTERNATE1 0361
+	#define oALTERNATE1 0362
+	#define oALTERNATE2 0363
+	#define oALTERNATE3 0364
+	#define oALTERNATE4 0365
+	#define oALTERNATE5 0366
+	#define uALTERNATE1 0371
+	#define uALTERNATE2 0372
+	#define uALTERNATE3 0373
+	#define uALTERNATE4 0374
+	#define yALTERNATE1 0375
+	#define yALTERNATE2 0377
+	#endif
+	    case  'A': case  AALTERNATE1: case AALTERNATE2: case AALTERNATE3:
+	    case AALTERNATE4: case AALTERNATE5: case AALTERNATE6:
+		    EMIT2('A');	EMIT2(AALTERNATE1); EMIT2(AALTERNATE2); EMIT2(AALTERNATE3);
+		    EMIT2(AALTERNATE4); EMIT2(AALTERNATE5); EMIT2(AALTERNATE6);
+		    return OK;
+
+	    case 'C': case CALTERNATE1:
+		    EMIT2('C');	    EMIT2(CALTERNATE1);
+		    return OK;
+
+	    case 'E': case EALTERNATE1: case EALTERNATE2: case EALTERNATE3: case EALTERNATE4:
+		    EMIT2('E');	    EMIT2(EALTERNATE1);    EMIT2(EALTERNATE2);
+		    EMIT2(EALTERNATE3);    EMIT2(EALTERNATE4);
+		    return OK;
+
+	    case 'I': case IALTERNATE1: case IALTERNATE2: case IALTERNATE3: case IALTERNATE4:
+		    EMIT2('I');	    EMIT2(IALTERNATE1);    EMIT2(IALTERNATE2);
+		    EMIT2(IALTERNATE3);    EMIT2(IALTERNATE4);
+		    return OK;
+
+	    case 'N': case NALTERNATE1:
+		    EMIT2('N');	    EMIT2(NALTERNATE1);
+		    return OK;
+
+	    case 'O': case OALTERNATE1: case OALTERNATE2: case OALTERNATE3: case OALTERNATE4:
+	    case OALTERNATE5:
+		    EMIT2('O');	    EMIT2(OALTERNATE1);    EMIT2(OALTERNATE2);
+		    EMIT2(OALTERNATE3);    EMIT2(OALTERNATE4);    EMIT2(OALTERNATE5);
+		    return OK;
+
+	    case 'U': case UALTERNATE1: case UALTERNATE2: case UALTERNATE3: case UALTERNATE4:
+		    EMIT2('U');	    EMIT2(UALTERNATE1);    EMIT2(UALTERNATE2);
+		    EMIT2(UALTERNATE3);    EMIT2(UALTERNATE4);
+		    return OK;
+
+	    case 'Y': case YALTERNATE1:
+		    EMIT2('Y');	    EMIT2(YALTERNATE1);
+		    return OK;
+
+	    case  'a': case  aALTERNATE1: case aALTERNATE2: case aALTERNATE3:
+	    case aALTERNATE4: case aALTERNATE5: case aALTERNATE6:
+		    EMIT2('a');	EMIT2(aALTERNATE1); EMIT2(aALTERNATE2); EMIT2(aALTERNATE3);
+		    EMIT2(aALTERNATE4); EMIT2(aALTERNATE5); EMIT2(aALTERNATE6);
+		    return OK;
+
+	    case 'c': case cALTERNATE1:
+		    EMIT2('c');	    EMIT2(cALTERNATE1);
+		    return OK;
+
+	    case 'e': case eALTERNATE1: case eALTERNATE2: case eALTERNATE3: case eALTERNATE4:
+		    EMIT2('e');	    EMIT2(eALTERNATE1);    EMIT2(eALTERNATE2);
+		    EMIT2(eALTERNATE3);    EMIT2(eALTERNATE4);
+		    return OK;
+
+	    case 'i': case iALTERNATE1: case iALTERNATE2: case iALTERNATE3: case iALTERNATE4:
+		    EMIT2('i');	    EMIT2(eALTERNATE1);    EMIT2(iALTERNATE2);
+		    EMIT2(iALTERNATE3);    EMIT2(iALTERNATE4);
+		    return OK;
+
+	    case 'n': case nALTERNATE1:
+		    EMIT2('n');	    EMIT2(nALTERNATE1);
+		    return OK;
+
+	    case 'o': case oALTERNATE1: case oALTERNATE2: case oALTERNATE3: case oALTERNATE4:
+	    case oALTERNATE5:
+		    EMIT2('o');	    EMIT2(oALTERNATE1);    EMIT2(oALTERNATE2);
+		    EMIT2(oALTERNATE3);    EMIT2(oALTERNATE4);    EMIT2(oALTERNATE5);
+		    return OK;
+
+	    case 'u': case uALTERNATE1: case uALTERNATE2: case uALTERNATE3: case uALTERNATE4:
+		    EMIT2('u');	    EMIT2(uALTERNATE1);    EMIT2(uALTERNATE2);
+		    EMIT2(uALTERNATE3);    EMIT2(uALTERNATE4);
+		    return OK;
+
+	    case 'y': case yALTERNATE1: case yALTERNATE2:
+		    EMIT2('y');	    EMIT2(yALTERNATE1);    EMIT2(yALTERNATE2);
+		  /* Owen end of changes */
 		    return OK;
 
 	    default:
