type instruction =

  | OpACC0 
  | OpACC1 
  | OpACC2 
  | OpACC3 
  | OpACC4 
  | OpACC5 
  | OpACC6 
  | OpACC7 
  | OpACC 
  | OpPUSH 
  | OpPUSHACC0 
  | OpPUSHACC1 
  | OpPUSHACC2 
  | OpPUSHACC3 
  | OpPUSHACC4 
  | OpPUSHACC5 
  | OpPUSHACC6 
  | OpPUSHACC7 
  | OpPUSHACC 
  | OpPOP 
  | OpASSIGN 
  | OpENVACC1 
  | OpENVACC2 
  | OpENVACC3 
  | OpENVACC4 
  | OpENVACC 
  | OpPUSHENVACC1 
  | OpPUSHENVACC2 
  | OpPUSHENVACC3 
  | OpPUSHENVACC4 
  | OpPUSHENVACC 
  | OpPUSH_RETADDR 
  | OpAPPLY 
  | OpAPPLY1 
  | OpAPPLY2 
  | OpAPPLY3 
  | OpAPPTERM 
  | OpAPPTERM1 
  | OpAPPTERM2 
  | OpAPPTERM3 
  | OpRETURN 
  | OpRESTART 
  | OpGRAB 
  | OpCLOSURE 
  | OpCLOSUREREC 
  | OpOFFSETCLOSUREM2 
  | OpOFFSETCLOSURE0 
  | OpOFFSETCLOSURE2 
  | OpOFFSETCLOSURE 
  | OpPUSHOFFSETCLOSUREM2 
  | OpPUSHOFFSETCLOSURE0 
  | OpPUSHOFFSETCLOSURE2 
  | OpPUSHOFFSETCLOSURE 
  | OpGETGLOBAL 
  | OpPUSHGETGLOBAL 
  | OpGETGLOBALFIELD 
  | OpPUSHGETGLOBALFIELD 
  | OpSETGLOBAL 
  | OpATOM0 
  | OpATOM 
  | OpPUSHATOM0 
  | OpPUSHATOM 
  | OpMAKEBLOCK 
  | OpMAKEBLOCK1 
  | OpMAKEBLOCK2 
  | OpMAKEBLOCK3 
  | OpMAKEFLOATBLOCK 
  | OpGETFIELD0 
  | OpGETFIELD1 
  | OpGETFIELD2 
  | OpGETFIELD3 
  | OpGETFIELD 
  | OpGETFLOATFIELD 
  | OpSETFIELD0 
  | OpSETFIELD1 
  | OpSETFIELD2 
  | OpSETFIELD3 
  | OpSETFIELD 
  | OpSETFLOATFIELD 
  | OpVECTLENGTH 
  | OpGETVECTITEM 
  | OpSETVECTITEM 
  | OpGETSTRINGCHAR 
  | OpSETSTRINGCHAR 
  | OpBRANCH 
  | OpBRANCHIF 
  | OpBRANCHIFNOT 
  | OpSWITCH 
  | OpBOOLNOT 
  | OpPUSHTRAP 
  | OpPOPTRAP 
  | OpRAISE 
  | OpCHECK_SIGNALS 
  | OpC_CALL1 
  | OpC_CALL2 
  | OpC_CALL3 
  | OpC_CALL4 
  | OpC_CALL5 
  | OpC_CALLN 
  | OpCONST0 
  | OpCONST1 
  | OpCONST2 
  | OpCONST3 
  | OpCONSTINT 
  | OpPUSHCONST0 
  | OpPUSHCONST1 
  | OpPUSHCONST2 
  | OpPUSHCONST3 
  | OpPUSHCONSTINT 
  | OpNEGINT 
  | OpADDINT 
  | OpSUBINT 
  | OpMULINT 
  | OpDIVINT 
  | OpMODINT 
  | OpANDINT 
  | OpORINT 
  | OpXORINT 
  | OpLSLINT 
  | OpLSRINT 
  | OpASRINT 
  | OpEQ 
  | OpNEQ 
  | OpLTINT 
  | OpLEINT 
  | OpGTINT 
  | OpGEINT 
  | OpOFFSETINT 
  | OpOFFSETREF 
  | OpISINT
  | OpGETMETHOD 
  | OpSTOP 
  | OpEVENT 
  | OpBREAK 

let opACC0 = 0
let opACC1 = 1
let opACC2 = 2
let opACC3 = 3
let opACC4 = 4
let opACC5 = 5
let opACC6 = 6
let opACC7 = 7
let opACC = 8
let opPUSH = 9
let opPUSHACC0 = 10
let opPUSHACC1 = 11
let opPUSHACC2 = 12
let opPUSHACC3 = 13
let opPUSHACC4 = 14
let opPUSHACC5 = 15
let opPUSHACC6 = 16
let opPUSHACC7 = 17
let opPUSHACC = 18
let opPOP = 19
let opASSIGN = 20
let opENVACC1 = 21
let opENVACC2 = 22
let opENVACC3 = 23
let opENVACC4 = 24
let opENVACC = 25
let opPUSHENVACC1 = 26
let opPUSHENVACC2 = 27
let opPUSHENVACC3 = 28
let opPUSHENVACC4 = 29
let opPUSHENVACC = 30
let opPUSH_RETADDR = 31
let opAPPLY = 32
let opAPPLY1 = 33
let opAPPLY2 = 34
let opAPPLY3 = 35
let opAPPTERM = 36
let opAPPTERM1 = 37
let opAPPTERM2 = 38
let opAPPTERM3 = 39
let opRETURN = 40
let opRESTART = 41
let opGRAB = 42
let opCLOSURE = 43
let opCLOSUREREC = 44
let opOFFSETCLOSUREM2 = 45
let opOFFSETCLOSURE0 = 46
let opOFFSETCLOSURE2 = 47
let opOFFSETCLOSURE = 48
let opPUSHOFFSETCLOSUREM2 = 49
let opPUSHOFFSETCLOSURE0 = 50
let opPUSHOFFSETCLOSURE2 = 51
let opPUSHOFFSETCLOSURE = 52
let opGETGLOBAL = 53
let opPUSHGETGLOBAL = 54
let opGETGLOBALFIELD = 55
let opPUSHGETGLOBALFIELD = 56
let opSETGLOBAL = 57
let opATOM0 = 58
let opATOM = 59
let opPUSHATOM0 = 60
let opPUSHATOM = 61
let opMAKEBLOCK = 62
let opMAKEBLOCK1 = 63
let opMAKEBLOCK2 = 64
let opMAKEBLOCK3 = 65
let opMAKEFLOATBLOCK = 66
let opGETFIELD0 = 67
let opGETFIELD1 = 68
let opGETFIELD2 = 69
let opGETFIELD3 = 70
let opGETFIELD = 71
let opGETFLOATFIELD = 72
let opSETFIELD0 = 73
let opSETFIELD1 = 74
let opSETFIELD2 = 75
let opSETFIELD3 = 76
let opSETFIELD = 77
let opSETFLOATFIELD = 78
let opVECTLENGTH = 79
let opGETVECTITEM = 80
let opSETVECTITEM = 81
let opGETSTRINGCHAR = 82
let opSETSTRINGCHAR = 83
let opBRANCH = 84
let opBRANCHIF = 85
let opBRANCHIFNOT = 86
let opSWITCH = 87
let opBOOLNOT = 88
let opPUSHTRAP = 89
let opPOPTRAP = 90
let opRAISE = 91
let opCHECK_SIGNALS = 92
let opC_CALL1 = 93
let opC_CALL2 = 94
let opC_CALL3 = 95
let opC_CALL4 = 96
let opC_CALL5 = 97
let opC_CALLN = 98
let opCONST0 = 99
let opCONST1 = 100
let opCONST2 = 101
let opCONST3 = 102
let opCONSTINT = 103
let opPUSHCONST0 = 104
let opPUSHCONST1 = 105
let opPUSHCONST2 = 106
let opPUSHCONST3 = 107
let opPUSHCONSTINT = 108
let opNEGINT = 109
let opADDINT = 110
let opSUBINT = 111
let opMULINT = 112
let opDIVINT = 113
let opMODINT = 114
let opANDINT = 115
let opORINT = 116
let opXORINT = 117
let opLSLINT = 118
let opLSRINT = 119
let opASRINT = 120
let opEQ = 121
let opNEQ = 122
let opLTINT = 123
let opLEINT = 124
let opGTINT = 125
let opGEINT = 126
let opOFFSETINT = 127
let opOFFSETREF = 128
let opISINT = 129
let opGETMETHOD = 130
let opSTOP = 131
let opEVENT = 132
let opBREAK = 133

let opnames =
[|
 "ACC0";
 "ACC1";
 "ACC2";
 "ACC3";
 "ACC4";
 "ACC5";
 "ACC6";
 "ACC7";
 "ACC";
 "PUSH";
 "PUSHACC0";
 "PUSHACC1";
 "PUSHACC2";
 "PUSHACC3";
 "PUSHACC4";
 "PUSHACC5";
 "PUSHACC6";
 "PUSHACC7";
 "PUSHACC";
 "POP";
 "ASSIGN";
 "ENVACC1";
 "ENVACC2";
 "ENVACC3";
 "ENVACC4";
 "ENVACC";
 "PUSHENVACC1";
 "PUSHENVACC2";
 "PUSHENVACC3";
 "PUSHENVACC4";
 "PUSHENVACC";
 "PUSH_RETADDR";
 "APPLY";
 "APPLY1";
 "APPLY2";
 "APPLY3";
 "APPTERM";
 "APPTERM1";
 "APPTERM2";
 "APPTERM3";
 "RETURN";
 "RESTART";
 "GRAB";
 "CLOSURE";
 "CLOSUREREC";
 "OFFSETCLOSUREM2";
 "OFFSETCLOSURE0";
 "OFFSETCLOSURE2";
 "OFFSETCLOSURE";
 "PUSHOFFSETCLOSUREM2";
 "PUSHOFFSETCLOSURE0";
 "PUSHOFFSETCLOSURE2";
 "PUSHOFFSETCLOSURE";
 "GETGLOBAL";
 "PUSHGETGLOBAL";
 "GETGLOBALFIELD";
 "PUSHGETGLOBALFIELD";
 "SETGLOBAL";
 "ATOM0";
 "ATOM";
 "PUSHATOM0";
 "PUSHATOM";
 "MAKEBLOCK";
 "MAKEBLOCK1";
 "MAKEBLOCK2";
 "MAKEBLOCK3";
 "MAKEFLOATBLOCK";
 "GETFIELD0";
 "GETFIELD1";
 "GETFIELD2";
 "GETFIELD3";
 "GETFIELD";
 "GETFLOATFIELD";
 "SETFIELD0";
 "SETFIELD1";
 "SETFIELD2";
 "SETFIELD3";
 "SETFIELD";
 "SETFLOATFIELD";
 "VECTLENGTH";
 "GETVECTITEM";
 "SETVECTITEM";
 "GETSTRINGCHAR";
 "SETSTRINGCHAR";
 "BRANCH";
 "BRANCHIF";
 "BRANCHIFNOT";
 "SWITCH";
 "BOOLNOT";
 "PUSHTRAP";
 "POPTRAP";
 "RAISE";
 "CHECK_SIGNALS";
 "C_CALL1";
 "C_CALL2";
 "C_CALL3";
 "C_CALL4";
 "C_CALL5";
 "C_CALLN";
 "CONST0";
 "CONST1";
 "CONST2";
 "CONST3";
 "CONSTINT";
 "PUSHCONST0";
 "PUSHCONST1";
 "PUSHCONST2";
 "PUSHCONST3";
 "PUSHCONSTINT";
 "NEGINT";
 "ADDINT";
 "SUBINT";
 "MULINT";
 "DIVINT";
 "MODINT";
 "ANDINT";
 "ORINT";
 "XORINT";
 "LSLINT";
 "LSRINT";
 "ASRINT";
 "EQ";
 "NEQ";
 "LTINT";
 "LEINT";
 "GTINT";
 "GEINT";
 "OFFSETINT";
 "OFFSETREF";
 "ISINT";
 "GETMETHOD";
 "STOP";
 "EVENT";
 "BREAK"
  |]
