vm: expand PUSHBYTES instructions

Allows to reliably use String() on any of those. Update autogenerated
instruction_string.go accordingly.
This commit is contained in:
Roman Khimov 2019-09-06 18:33:16 +03:00
parent dd357c9119
commit 8169edf04c
3 changed files with 438 additions and 113 deletions

View file

@ -112,22 +112,19 @@ func CompileAndInspect(src string) error {
fmt.Fprintln(w, "INDEX\tOPCODE\tDESC\t") fmt.Fprintln(w, "INDEX\tOPCODE\tDESC\t")
for i := 0; i <= len(b)-1; { for i := 0; i <= len(b)-1; {
instr := vm.Instruction(b[i]) instr := vm.Instruction(b[i])
if instr >= vm.PUSHBYTES1 && instr <= vm.PUSHBYTES75 { paramlength := 0
fmt.Fprintf(w, "%d\t0x%x\t%s\t\n", i, b[i], fmt.Sprintf("PUSHBYTES%d", int(instr)))
for x := 0; x < int(instr); x++ {
fmt.Fprintf(w, "%d\t0x%x\t%s\t\n", i, b[i+1+x], string(b[i+1+x]))
}
i += int(instr) + 1
continue
}
fmt.Fprintf(w, "%d\t0x%x\t%s\t\n", i, b[i], instr) fmt.Fprintf(w, "%d\t0x%x\t%s\t\n", i, b[i], instr)
i++ i++
if instr >= vm.PUSHBYTES1 && instr <= vm.PUSHBYTES75 {
paramlength = int(instr)
}
if instr == vm.JMP || instr == vm.JMPIF || instr == vm.JMPIFNOT || instr == vm.CALL { if instr == vm.JMP || instr == vm.JMPIF || instr == vm.JMPIFNOT || instr == vm.CALL {
for x := 0; x < 2; x++ { paramlength = 2
fmt.Fprintf(w, "%d\t0x%x\t%d\t\n", i, b[i + x], b[i + x])
} }
i += 2 for x := 0; x < paramlength; x++ {
fmt.Fprintf(w, "%d\t0x%x\t%s\t\n", i, b[i+1+x], string(b[i+1+x]))
} }
i += paramlength
} }
w.Flush() w.Flush()
return nil return nil

View file

@ -4,110 +4,365 @@ package vm
import "strconv" import "strconv"
const _Instruction_name = "PUSH0PUSHBYTES1PUSHBYTES75PUSHDATA1PUSHDATA2PUSHDATA4PUSHM1PUSH1PUSH2PUSH3PUSH4PUSH5PUSH6PUSH7PUSH8PUSH9PUSH10PUSH11PUSH12PUSH13PUSH14PUSH15PUSH16NOPJMPJMPIFJMPIFNOTCALLRETAPPCALLSYSCALLTAILCALLDUPFROMALTSTACKTOALTSTACKFROMALTSTACKXDROPXSWAPXTUCKDEPTHDROPDUPNIPOVERPICKROLLROTSWAPTUCKCATSUBSTRLEFTRIGHTSIZEINVERTANDORXOREQUALINCDECSIGNNEGATEABSNOTNZADDSUBMULDIVMODSHLSHRBOOLANDBOOLORNUMEQUALNUMNOTEQUALLTGTLTEGTEMINMAXWITHINSHA1SHA256HASH160HASH256CHECKSIGCHECKMULTISIGARRAYSIZEPACKUNPACKPICKITEMSETITEMNEWARRAYNEWSTRUCTAPPENDREVERSEREMOVETHROWTHROWIFNOT" func _() {
// An "invalid array index" compiler error signifies that the constant values have changed.
// Re-run the stringer command to generate them again.
var x [1]struct{}
_ = x[PUSH0-0]
_ = x[PUSHF-0]
_ = x[PUSHBYTES1-1]
_ = x[PUSHBYTES2-2]
_ = x[PUSHBYTES3-3]
_ = x[PUSHBYTES4-4]
_ = x[PUSHBYTES5-5]
_ = x[PUSHBYTES6-6]
_ = x[PUSHBYTES7-7]
_ = x[PUSHBYTES8-8]
_ = x[PUSHBYTES9-9]
_ = x[PUSHBYTES10-10]
_ = x[PUSHBYTES11-11]
_ = x[PUSHBYTES12-12]
_ = x[PUSHBYTES13-13]
_ = x[PUSHBYTES14-14]
_ = x[PUSHBYTES15-15]
_ = x[PUSHBYTES16-16]
_ = x[PUSHBYTES17-17]
_ = x[PUSHBYTES18-18]
_ = x[PUSHBYTES19-19]
_ = x[PUSHBYTES20-20]
_ = x[PUSHBYTES21-21]
_ = x[PUSHBYTES22-22]
_ = x[PUSHBYTES23-23]
_ = x[PUSHBYTES24-24]
_ = x[PUSHBYTES25-25]
_ = x[PUSHBYTES26-26]
_ = x[PUSHBYTES27-27]
_ = x[PUSHBYTES28-28]
_ = x[PUSHBYTES29-29]
_ = x[PUSHBYTES30-30]
_ = x[PUSHBYTES31-31]
_ = x[PUSHBYTES32-32]
_ = x[PUSHBYTES33-33]
_ = x[PUSHBYTES34-34]
_ = x[PUSHBYTES35-35]
_ = x[PUSHBYTES36-36]
_ = x[PUSHBYTES37-37]
_ = x[PUSHBYTES38-38]
_ = x[PUSHBYTES39-39]
_ = x[PUSHBYTES40-40]
_ = x[PUSHBYTES41-41]
_ = x[PUSHBYTES42-42]
_ = x[PUSHBYTES43-43]
_ = x[PUSHBYTES44-44]
_ = x[PUSHBYTES45-45]
_ = x[PUSHBYTES46-46]
_ = x[PUSHBYTES47-47]
_ = x[PUSHBYTES48-48]
_ = x[PUSHBYTES49-49]
_ = x[PUSHBYTES50-50]
_ = x[PUSHBYTES51-51]
_ = x[PUSHBYTES52-52]
_ = x[PUSHBYTES53-53]
_ = x[PUSHBYTES54-54]
_ = x[PUSHBYTES55-55]
_ = x[PUSHBYTES56-56]
_ = x[PUSHBYTES57-57]
_ = x[PUSHBYTES58-58]
_ = x[PUSHBYTES59-59]
_ = x[PUSHBYTES60-60]
_ = x[PUSHBYTES61-61]
_ = x[PUSHBYTES62-62]
_ = x[PUSHBYTES63-63]
_ = x[PUSHBYTES64-64]
_ = x[PUSHBYTES65-65]
_ = x[PUSHBYTES66-66]
_ = x[PUSHBYTES67-67]
_ = x[PUSHBYTES68-68]
_ = x[PUSHBYTES69-69]
_ = x[PUSHBYTES70-70]
_ = x[PUSHBYTES71-71]
_ = x[PUSHBYTES72-72]
_ = x[PUSHBYTES73-73]
_ = x[PUSHBYTES74-74]
_ = x[PUSHBYTES75-75]
_ = x[PUSHDATA1-76]
_ = x[PUSHDATA2-77]
_ = x[PUSHDATA4-78]
_ = x[PUSHM1-79]
_ = x[PUSH1-81]
_ = x[PUSHT-81]
_ = x[PUSH2-82]
_ = x[PUSH3-83]
_ = x[PUSH4-84]
_ = x[PUSH5-85]
_ = x[PUSH6-86]
_ = x[PUSH7-87]
_ = x[PUSH8-88]
_ = x[PUSH9-89]
_ = x[PUSH10-90]
_ = x[PUSH11-91]
_ = x[PUSH12-92]
_ = x[PUSH13-93]
_ = x[PUSH14-94]
_ = x[PUSH15-95]
_ = x[PUSH16-96]
_ = x[NOP-97]
_ = x[JMP-98]
_ = x[JMPIF-99]
_ = x[JMPIFNOT-100]
_ = x[CALL-101]
_ = x[RET-102]
_ = x[APPCALL-103]
_ = x[SYSCALL-104]
_ = x[TAILCALL-105]
_ = x[DUPFROMALTSTACK-106]
_ = x[TOALTSTACK-107]
_ = x[FROMALTSTACK-108]
_ = x[XDROP-109]
_ = x[XSWAP-114]
_ = x[XTUCK-115]
_ = x[DEPTH-116]
_ = x[DROP-117]
_ = x[DUP-118]
_ = x[NIP-119]
_ = x[OVER-120]
_ = x[PICK-121]
_ = x[ROLL-122]
_ = x[ROT-123]
_ = x[SWAP-124]
_ = x[TUCK-125]
_ = x[CAT-126]
_ = x[SUBSTR-127]
_ = x[LEFT-128]
_ = x[RIGHT-129]
_ = x[SIZE-130]
_ = x[INVERT-131]
_ = x[AND-132]
_ = x[OR-133]
_ = x[XOR-134]
_ = x[EQUAL-135]
_ = x[INC-139]
_ = x[DEC-140]
_ = x[SIGN-141]
_ = x[NEGATE-143]
_ = x[ABS-144]
_ = x[NOT-145]
_ = x[NZ-146]
_ = x[ADD-147]
_ = x[SUB-148]
_ = x[MUL-149]
_ = x[DIV-150]
_ = x[MOD-151]
_ = x[SHL-152]
_ = x[SHR-153]
_ = x[BOOLAND-154]
_ = x[BOOLOR-155]
_ = x[NUMEQUAL-156]
_ = x[NUMNOTEQUAL-158]
_ = x[LT-159]
_ = x[GT-160]
_ = x[LTE-161]
_ = x[GTE-162]
_ = x[MIN-163]
_ = x[MAX-164]
_ = x[WITHIN-165]
_ = x[SHA1-167]
_ = x[SHA256-168]
_ = x[HASH160-169]
_ = x[HASH256-170]
_ = x[CHECKSIG-172]
_ = x[CHECKMULTISIG-174]
_ = x[ARRAYSIZE-192]
_ = x[PACK-193]
_ = x[UNPACK-194]
_ = x[PICKITEM-195]
_ = x[SETITEM-196]
_ = x[NEWARRAY-197]
_ = x[NEWSTRUCT-198]
_ = x[APPEND-200]
_ = x[REVERSE-201]
_ = x[REMOVE-202]
_ = x[THROW-240]
_ = x[THROWIFNOT-241]
}
const _Instruction_name = "PUSH0PUSHBYTES1PUSHBYTES2PUSHBYTES3PUSHBYTES4PUSHBYTES5PUSHBYTES6PUSHBYTES7PUSHBYTES8PUSHBYTES9PUSHBYTES10PUSHBYTES11PUSHBYTES12PUSHBYTES13PUSHBYTES14PUSHBYTES15PUSHBYTES16PUSHBYTES17PUSHBYTES18PUSHBYTES19PUSHBYTES20PUSHBYTES21PUSHBYTES22PUSHBYTES23PUSHBYTES24PUSHBYTES25PUSHBYTES26PUSHBYTES27PUSHBYTES28PUSHBYTES29PUSHBYTES30PUSHBYTES31PUSHBYTES32PUSHBYTES33PUSHBYTES34PUSHBYTES35PUSHBYTES36PUSHBYTES37PUSHBYTES38PUSHBYTES39PUSHBYTES40PUSHBYTES41PUSHBYTES42PUSHBYTES43PUSHBYTES44PUSHBYTES45PUSHBYTES46PUSHBYTES47PUSHBYTES48PUSHBYTES49PUSHBYTES50PUSHBYTES51PUSHBYTES52PUSHBYTES53PUSHBYTES54PUSHBYTES55PUSHBYTES56PUSHBYTES57PUSHBYTES58PUSHBYTES59PUSHBYTES60PUSHBYTES61PUSHBYTES62PUSHBYTES63PUSHBYTES64PUSHBYTES65PUSHBYTES66PUSHBYTES67PUSHBYTES68PUSHBYTES69PUSHBYTES70PUSHBYTES71PUSHBYTES72PUSHBYTES73PUSHBYTES74PUSHBYTES75PUSHDATA1PUSHDATA2PUSHDATA4PUSHM1PUSH1PUSH2PUSH3PUSH4PUSH5PUSH6PUSH7PUSH8PUSH9PUSH10PUSH11PUSH12PUSH13PUSH14PUSH15PUSH16NOPJMPJMPIFJMPIFNOTCALLRETAPPCALLSYSCALLTAILCALLDUPFROMALTSTACKTOALTSTACKFROMALTSTACKXDROPXSWAPXTUCKDEPTHDROPDUPNIPOVERPICKROLLROTSWAPTUCKCATSUBSTRLEFTRIGHTSIZEINVERTANDORXOREQUALINCDECSIGNNEGATEABSNOTNZADDSUBMULDIVMODSHLSHRBOOLANDBOOLORNUMEQUALNUMNOTEQUALLTGTLTEGTEMINMAXWITHINSHA1SHA256HASH160HASH256CHECKSIGCHECKMULTISIGARRAYSIZEPACKUNPACKPICKITEMSETITEMNEWARRAYNEWSTRUCTAPPENDREVERSEREMOVETHROWTHROWIFNOT"
var _Instruction_map = map[Instruction]string{ var _Instruction_map = map[Instruction]string{
0: _Instruction_name[0:5], 0: _Instruction_name[0:5],
1: _Instruction_name[5:15], 1: _Instruction_name[5:15],
75: _Instruction_name[15:26], 2: _Instruction_name[15:25],
76: _Instruction_name[26:35], 3: _Instruction_name[25:35],
77: _Instruction_name[35:44], 4: _Instruction_name[35:45],
78: _Instruction_name[44:53], 5: _Instruction_name[45:55],
79: _Instruction_name[53:59], 6: _Instruction_name[55:65],
81: _Instruction_name[59:64], 7: _Instruction_name[65:75],
82: _Instruction_name[64:69], 8: _Instruction_name[75:85],
83: _Instruction_name[69:74], 9: _Instruction_name[85:95],
84: _Instruction_name[74:79], 10: _Instruction_name[95:106],
85: _Instruction_name[79:84], 11: _Instruction_name[106:117],
86: _Instruction_name[84:89], 12: _Instruction_name[117:128],
87: _Instruction_name[89:94], 13: _Instruction_name[128:139],
88: _Instruction_name[94:99], 14: _Instruction_name[139:150],
89: _Instruction_name[99:104], 15: _Instruction_name[150:161],
90: _Instruction_name[104:110], 16: _Instruction_name[161:172],
91: _Instruction_name[110:116], 17: _Instruction_name[172:183],
92: _Instruction_name[116:122], 18: _Instruction_name[183:194],
93: _Instruction_name[122:128], 19: _Instruction_name[194:205],
94: _Instruction_name[128:134], 20: _Instruction_name[205:216],
95: _Instruction_name[134:140], 21: _Instruction_name[216:227],
96: _Instruction_name[140:146], 22: _Instruction_name[227:238],
97: _Instruction_name[146:149], 23: _Instruction_name[238:249],
98: _Instruction_name[149:152], 24: _Instruction_name[249:260],
99: _Instruction_name[152:157], 25: _Instruction_name[260:271],
100: _Instruction_name[157:165], 26: _Instruction_name[271:282],
101: _Instruction_name[165:169], 27: _Instruction_name[282:293],
102: _Instruction_name[169:172], 28: _Instruction_name[293:304],
103: _Instruction_name[172:179], 29: _Instruction_name[304:315],
104: _Instruction_name[179:186], 30: _Instruction_name[315:326],
105: _Instruction_name[186:194], 31: _Instruction_name[326:337],
106: _Instruction_name[194:209], 32: _Instruction_name[337:348],
107: _Instruction_name[209:219], 33: _Instruction_name[348:359],
108: _Instruction_name[219:231], 34: _Instruction_name[359:370],
109: _Instruction_name[231:236], 35: _Instruction_name[370:381],
114: _Instruction_name[236:241], 36: _Instruction_name[381:392],
115: _Instruction_name[241:246], 37: _Instruction_name[392:403],
116: _Instruction_name[246:251], 38: _Instruction_name[403:414],
117: _Instruction_name[251:255], 39: _Instruction_name[414:425],
118: _Instruction_name[255:258], 40: _Instruction_name[425:436],
119: _Instruction_name[258:261], 41: _Instruction_name[436:447],
120: _Instruction_name[261:265], 42: _Instruction_name[447:458],
121: _Instruction_name[265:269], 43: _Instruction_name[458:469],
122: _Instruction_name[269:273], 44: _Instruction_name[469:480],
123: _Instruction_name[273:276], 45: _Instruction_name[480:491],
124: _Instruction_name[276:280], 46: _Instruction_name[491:502],
125: _Instruction_name[280:284], 47: _Instruction_name[502:513],
126: _Instruction_name[284:287], 48: _Instruction_name[513:524],
127: _Instruction_name[287:293], 49: _Instruction_name[524:535],
128: _Instruction_name[293:297], 50: _Instruction_name[535:546],
129: _Instruction_name[297:302], 51: _Instruction_name[546:557],
130: _Instruction_name[302:306], 52: _Instruction_name[557:568],
131: _Instruction_name[306:312], 53: _Instruction_name[568:579],
132: _Instruction_name[312:315], 54: _Instruction_name[579:590],
133: _Instruction_name[315:317], 55: _Instruction_name[590:601],
134: _Instruction_name[317:320], 56: _Instruction_name[601:612],
135: _Instruction_name[320:325], 57: _Instruction_name[612:623],
139: _Instruction_name[325:328], 58: _Instruction_name[623:634],
140: _Instruction_name[328:331], 59: _Instruction_name[634:645],
141: _Instruction_name[331:335], 60: _Instruction_name[645:656],
143: _Instruction_name[335:341], 61: _Instruction_name[656:667],
144: _Instruction_name[341:344], 62: _Instruction_name[667:678],
145: _Instruction_name[344:347], 63: _Instruction_name[678:689],
146: _Instruction_name[347:349], 64: _Instruction_name[689:700],
147: _Instruction_name[349:352], 65: _Instruction_name[700:711],
148: _Instruction_name[352:355], 66: _Instruction_name[711:722],
149: _Instruction_name[355:358], 67: _Instruction_name[722:733],
150: _Instruction_name[358:361], 68: _Instruction_name[733:744],
151: _Instruction_name[361:364], 69: _Instruction_name[744:755],
152: _Instruction_name[364:367], 70: _Instruction_name[755:766],
153: _Instruction_name[367:370], 71: _Instruction_name[766:777],
154: _Instruction_name[370:377], 72: _Instruction_name[777:788],
155: _Instruction_name[377:383], 73: _Instruction_name[788:799],
156: _Instruction_name[383:391], 74: _Instruction_name[799:810],
158: _Instruction_name[391:402], 75: _Instruction_name[810:821],
159: _Instruction_name[402:404], 76: _Instruction_name[821:830],
160: _Instruction_name[404:406], 77: _Instruction_name[830:839],
161: _Instruction_name[406:409], 78: _Instruction_name[839:848],
162: _Instruction_name[409:412], 79: _Instruction_name[848:854],
163: _Instruction_name[412:415], 81: _Instruction_name[854:859],
164: _Instruction_name[415:418], 82: _Instruction_name[859:864],
165: _Instruction_name[418:424], 83: _Instruction_name[864:869],
167: _Instruction_name[424:428], 84: _Instruction_name[869:874],
168: _Instruction_name[428:434], 85: _Instruction_name[874:879],
169: _Instruction_name[434:441], 86: _Instruction_name[879:884],
170: _Instruction_name[441:448], 87: _Instruction_name[884:889],
172: _Instruction_name[448:456], 88: _Instruction_name[889:894],
174: _Instruction_name[456:469], 89: _Instruction_name[894:899],
192: _Instruction_name[469:478], 90: _Instruction_name[899:905],
193: _Instruction_name[478:482], 91: _Instruction_name[905:911],
194: _Instruction_name[482:488], 92: _Instruction_name[911:917],
195: _Instruction_name[488:496], 93: _Instruction_name[917:923],
196: _Instruction_name[496:503], 94: _Instruction_name[923:929],
197: _Instruction_name[503:511], 95: _Instruction_name[929:935],
198: _Instruction_name[511:520], 96: _Instruction_name[935:941],
200: _Instruction_name[520:526], 97: _Instruction_name[941:944],
201: _Instruction_name[526:533], 98: _Instruction_name[944:947],
202: _Instruction_name[533:539], 99: _Instruction_name[947:952],
240: _Instruction_name[539:544], 100: _Instruction_name[952:960],
241: _Instruction_name[544:554], 101: _Instruction_name[960:964],
102: _Instruction_name[964:967],
103: _Instruction_name[967:974],
104: _Instruction_name[974:981],
105: _Instruction_name[981:989],
106: _Instruction_name[989:1004],
107: _Instruction_name[1004:1014],
108: _Instruction_name[1014:1026],
109: _Instruction_name[1026:1031],
114: _Instruction_name[1031:1036],
115: _Instruction_name[1036:1041],
116: _Instruction_name[1041:1046],
117: _Instruction_name[1046:1050],
118: _Instruction_name[1050:1053],
119: _Instruction_name[1053:1056],
120: _Instruction_name[1056:1060],
121: _Instruction_name[1060:1064],
122: _Instruction_name[1064:1068],
123: _Instruction_name[1068:1071],
124: _Instruction_name[1071:1075],
125: _Instruction_name[1075:1079],
126: _Instruction_name[1079:1082],
127: _Instruction_name[1082:1088],
128: _Instruction_name[1088:1092],
129: _Instruction_name[1092:1097],
130: _Instruction_name[1097:1101],
131: _Instruction_name[1101:1107],
132: _Instruction_name[1107:1110],
133: _Instruction_name[1110:1112],
134: _Instruction_name[1112:1115],
135: _Instruction_name[1115:1120],
139: _Instruction_name[1120:1123],
140: _Instruction_name[1123:1126],
141: _Instruction_name[1126:1130],
143: _Instruction_name[1130:1136],
144: _Instruction_name[1136:1139],
145: _Instruction_name[1139:1142],
146: _Instruction_name[1142:1144],
147: _Instruction_name[1144:1147],
148: _Instruction_name[1147:1150],
149: _Instruction_name[1150:1153],
150: _Instruction_name[1153:1156],
151: _Instruction_name[1156:1159],
152: _Instruction_name[1159:1162],
153: _Instruction_name[1162:1165],
154: _Instruction_name[1165:1172],
155: _Instruction_name[1172:1178],
156: _Instruction_name[1178:1186],
158: _Instruction_name[1186:1197],
159: _Instruction_name[1197:1199],
160: _Instruction_name[1199:1201],
161: _Instruction_name[1201:1204],
162: _Instruction_name[1204:1207],
163: _Instruction_name[1207:1210],
164: _Instruction_name[1210:1213],
165: _Instruction_name[1213:1219],
167: _Instruction_name[1219:1223],
168: _Instruction_name[1223:1229],
169: _Instruction_name[1229:1236],
170: _Instruction_name[1236:1243],
172: _Instruction_name[1243:1251],
174: _Instruction_name[1251:1264],
192: _Instruction_name[1264:1273],
193: _Instruction_name[1273:1277],
194: _Instruction_name[1277:1283],
195: _Instruction_name[1283:1291],
196: _Instruction_name[1291:1298],
197: _Instruction_name[1298:1306],
198: _Instruction_name[1306:1315],
200: _Instruction_name[1315:1321],
201: _Instruction_name[1321:1328],
202: _Instruction_name[1328:1334],
240: _Instruction_name[1334:1339],
241: _Instruction_name[1339:1349],
} }
func (i Instruction) String() string { func (i Instruction) String() string {

View file

@ -11,6 +11,79 @@ const (
PUSH0 Instruction = 0x00 PUSH0 Instruction = 0x00
PUSHF Instruction = PUSH0 PUSHF Instruction = PUSH0
PUSHBYTES1 Instruction = 0x01 PUSHBYTES1 Instruction = 0x01
PUSHBYTES2 Instruction = 0x02
PUSHBYTES3 Instruction = 0x03
PUSHBYTES4 Instruction = 0x04
PUSHBYTES5 Instruction = 0x05
PUSHBYTES6 Instruction = 0x06
PUSHBYTES7 Instruction = 0x07
PUSHBYTES8 Instruction = 0x08
PUSHBYTES9 Instruction = 0x09
PUSHBYTES10 Instruction = 0x0A
PUSHBYTES11 Instruction = 0x0B
PUSHBYTES12 Instruction = 0x0C
PUSHBYTES13 Instruction = 0x0D
PUSHBYTES14 Instruction = 0x0E
PUSHBYTES15 Instruction = 0x0F
PUSHBYTES16 Instruction = 0x10
PUSHBYTES17 Instruction = 0x11
PUSHBYTES18 Instruction = 0x12
PUSHBYTES19 Instruction = 0x13
PUSHBYTES20 Instruction = 0x14
PUSHBYTES21 Instruction = 0x15
PUSHBYTES22 Instruction = 0x16
PUSHBYTES23 Instruction = 0x17
PUSHBYTES24 Instruction = 0x18
PUSHBYTES25 Instruction = 0x19
PUSHBYTES26 Instruction = 0x1A
PUSHBYTES27 Instruction = 0x1B
PUSHBYTES28 Instruction = 0x1C
PUSHBYTES29 Instruction = 0x1D
PUSHBYTES30 Instruction = 0x1E
PUSHBYTES31 Instruction = 0x1F
PUSHBYTES32 Instruction = 0x20
PUSHBYTES33 Instruction = 0x21
PUSHBYTES34 Instruction = 0x22
PUSHBYTES35 Instruction = 0x23
PUSHBYTES36 Instruction = 0x24
PUSHBYTES37 Instruction = 0x25
PUSHBYTES38 Instruction = 0x26
PUSHBYTES39 Instruction = 0x27
PUSHBYTES40 Instruction = 0x28
PUSHBYTES41 Instruction = 0x29
PUSHBYTES42 Instruction = 0x2A
PUSHBYTES43 Instruction = 0x2B
PUSHBYTES44 Instruction = 0x2C
PUSHBYTES45 Instruction = 0x2D
PUSHBYTES46 Instruction = 0x2E
PUSHBYTES47 Instruction = 0x2F
PUSHBYTES48 Instruction = 0x30
PUSHBYTES49 Instruction = 0x31
PUSHBYTES50 Instruction = 0x32
PUSHBYTES51 Instruction = 0x33
PUSHBYTES52 Instruction = 0x34
PUSHBYTES53 Instruction = 0x35
PUSHBYTES54 Instruction = 0x36
PUSHBYTES55 Instruction = 0x37
PUSHBYTES56 Instruction = 0x38
PUSHBYTES57 Instruction = 0x39
PUSHBYTES58 Instruction = 0x3A
PUSHBYTES59 Instruction = 0x3B
PUSHBYTES60 Instruction = 0x3C
PUSHBYTES61 Instruction = 0x3D
PUSHBYTES62 Instruction = 0x3E
PUSHBYTES63 Instruction = 0x3F
PUSHBYTES64 Instruction = 0x40
PUSHBYTES65 Instruction = 0x41
PUSHBYTES66 Instruction = 0x42
PUSHBYTES67 Instruction = 0x43
PUSHBYTES68 Instruction = 0x44
PUSHBYTES69 Instruction = 0x45
PUSHBYTES70 Instruction = 0x46
PUSHBYTES71 Instruction = 0x47
PUSHBYTES72 Instruction = 0x48
PUSHBYTES73 Instruction = 0x49
PUSHBYTES74 Instruction = 0x4A
PUSHBYTES75 Instruction = 0x4B PUSHBYTES75 Instruction = 0x4B
PUSHDATA1 Instruction = 0x4C PUSHDATA1 Instruction = 0x4C
PUSHDATA2 Instruction = 0x4D PUSHDATA2 Instruction = 0x4D