https://github.com/akkartik/mu/blob/master/subx/apps/hex.subx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 == code
16
17
18
19
20 Entry:
21
22
23
24
25
26
27
28 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
29
30
31 81 7/subop/compare 1/mod/*+disp8 5/rm32/EBP . . . . 0/disp8 1/imm32
32 7e/jump-if-lesser-or-equal $run-main/disp8
33
34
35 68/push "test"/imm32
36 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 8/disp8 .
37
38 e8/call kernel-string-equal?/disp32
39
40 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
41
42 3d/compare-EAX 1/imm32
43 75/jump-if-not-equal $run-main/disp8
44
45 e8/call run-tests/disp32
46 8b/copy 0/mod/indirect 5/rm32/.disp32 . . 3/r32/EBX Num-test-failures/disp32
47 eb/jump $main:end/disp8
48 $run-main:
49
50
51 81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
52 89/copy 3/mod/direct 0/rm32/EAX . . . 4/r32/ESP . .
53
54
55 c7 0/subop/copy 0/mod/direct 0/rm32/EAX . . . . . 0/imm32
56
57
58 50/push-EAX/ed
59 68/push Stderr/imm32
60 68/push Stdout/imm32
61 68/push Stdin/imm32
62
63 e8/call convert/disp32
64
65 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0x10/imm32
66
67 bb/copy-to-EBX 0/imm32
68 $main:end:
69 b8/copy-to-EAX 1/imm32/exit
70 cd/syscall 0x80/imm8
71
72
73 convert:
74
75
76
77
78
79
80
81
82 55/push-EBP
83 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
84
85 50/push-EAX
86 $convert:loop:
87
88
89 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 0x14/disp8 .
90 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 0x10/disp8 .
91 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 8/disp8 .
92
93 e8/call convert-next-octet/disp32
94
95 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
96
97 81 7/subop/compare 3/mod/direct 0/rm32/EAX . . . . . 0xffffffff/imm32
98 74/jump-if-equal $convert:loop-end/disp8
99
100
101 50/push-EAX
102 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 0xc/disp8 .
103
104 e8/call write-byte/disp32
105
106 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
107
108 eb/jump $convert:loop/disp8
109 $convert:loop-end:
110
111
112 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 0xc/disp8 .
113
114 e8/call flush/disp32
115
116 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
117 $convert:end:
118
119 58/pop-to-EAX
120
121 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
122 5d/pop-to-EBP
123 c3/return
124
125
126
127
128
129
130
131 convert-next-octet:
132
133
134
135
136
137
138
139
140
141
142
143 55/push-EBP
144 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
145
146 51/push-ECX
147
148
149 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 0x10/disp8 .
150 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 0xc/disp8 .
151 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 8/disp8 .
152
153 e8/call scan-next-byte/disp32
154
155 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
156
157 81 7/subop/compare 3/mod/direct 0/rm32/EAX . . . . . 0xffffffff/imm32
158 74/jump-if-equal $convert-next-octet:end/disp8
159
160 e8/call from-hex-char/disp32
161
162 89/copy 3/mod/direct 1/rm32/ECX . . . 0/r32/EAX . .
163
164
165 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 0x10/disp8 .
166 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 0xc/disp8 .
167 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 8/disp8 .
168
169 e8/call scan-next-byte/disp32
170
171 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
172
173 81 7/subop/compare 3/mod/direct 0/rm32/EAX . . . . . 0xffffffff/imm32
174 75/jump-if-not-equal $convert-next-octet:convert/disp8
175
176
177 68/push 0x2e/imm32/period/dummy
178 68/push "convert-next-octet: partial byte found"/imm32
179 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 0xc/disp8 .
180 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 0x10/disp8 .
181
182 e8/call error-byte/disp32
183 $convert-next-octet:convert:
184
185 e8/call from-hex-char/disp32
186
187
188 c1/shift 4/subop/left 3/mod/direct 1/rm32/ECX . . . . . 4/imm8
189
190 09/or 3/mod/direct 0/rm32/EAX . . . 1/r32/ECX . .
191 $convert-next-octet:end:
192
193 59/pop-to-ECX
194
195 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
196 5d/pop-to-EBP
197 c3/return
198
199 test-convert-next-octet:
200
201
202 55/push-EBP
203 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
204
205
206
207 68/push _test-stream/imm32
208
209 e8/call clear-stream/disp32
210
211 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
212
213
214 b8/copy-to-EAX _test-buffered-file/imm32
215 05/add-to-EAX 4/imm32
216 50/push-EAX
217
218 e8/call clear-stream/disp32
219
220 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
221
222
223 68/push _test-error-stream/imm32
224
225 e8/call clear-stream/disp32
226
227 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
228
229
230 b8/copy-to-EAX _test-error-buffered-file/imm32
231 05/add-to-EAX 4/imm32
232 50/push-EAX
233
234 e8/call clear-stream/disp32
235
236 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
237
238
239
240 68/push "abc"/imm32
241 68/push _test-stream/imm32
242
243 e8/call write/disp32
244
245 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
246
247
248 81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
249 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
250
251
252 68/push 0xc/imm32/nbytes-of-args-for-convert-next-octet
253 51/push-ECX/ed
254
255 e8/call tailor-exit-descriptor/disp32
256
257 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
258
259
260 51/push-ECX/ed
261 68/push _test-error-buffered-file/imm32
262 68/push _test-buffered-file/imm32
263
264 e8/call convert-next-octet/disp32
265
266
267
268 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
269
270 59/pop-to-ECX
271
272
273
274 68/push "F - test-convert-next-octet: unexpected abort"/imm32
275 68/push 0/imm32
276
277 ff 6/subop/push 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 .
278
279 e8/call check-ints-equal/disp32
280
281 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
282
283 81 7/subop/compare 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 0/imm32
284 75/jump-if-not-equal $test-convert-next-octet:end/disp8
285
286
287 68/push "F - test-convert-next-octet"/imm32
288 68/push 0xab/imm32/ab
289 50/push-EAX
290
291 e8/call check-ints-equal/disp32
292
293 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
294 $test-convert-next-octet:end:
295
296
297 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
298 5d/pop-to-EBP
299 c3/return
300
301 test-convert-next-octet-handles-eof:
302
303
304 55/push-EBP
305 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
306
307
308
309 68/push _test-stream/imm32
310
311 e8/call clear-stream/disp32
312
313 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
314
315
316 b8/copy-to-EAX _test-buffered-file/imm32
317 05/add-to-EAX 4/imm32
318 50/push-EAX
319
320 e8/call clear-stream/disp32
321
322 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
323
324
325 68/push _test-error-stream/imm32
326
327 e8/call clear-stream/disp32
328
329 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
330
331
332 b8/copy-to-EAX _test-error-buffered-file/imm32
333 05/add-to-EAX 4/imm32
334 50/push-EAX
335
336 e8/call clear-stream/disp32
337
338 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
339
340
341
342 81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
343 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
344
345
346 68/push 0xc/imm32/nbytes-of-args-for-convert-next-octet
347 51/push-ECX/ed
348
349 e8/call tailor-exit-descriptor/disp32
350
351 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
352
353
354 51/push-ECX/ed
355 68/push _test-error-buffered-file/imm32
356 68/push _test-buffered-file/imm32
357
358 e8/call convert-next-octet/disp32
359
360
361
362 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
363
364 59/pop-to-ECX
365
366
367
368 68/push "F - test-convert-next-octet: unexpected abort"/imm32
369 68/push 0/imm32
370
371 ff 6/subop/push 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 .
372
373 e8/call check-ints-equal/disp32
374
375 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
376
377 81 7/subop/compare 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 0/imm32
378 75/jump-if-not-equal $test-convert-next-octet-handles-eof:end/disp8
379
380
381 68/push "F - test-convert-next-octet-handles-eof"/imm32
382 68/push 0xffffffff/imm32/eof
383 50/push-EAX
384
385 e8/call check-ints-equal/disp32
386
387 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
388 $test-convert-next-octet-handles-eof:end:
389
390
391 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
392 5d/pop-to-EBP
393 c3/return
394
395 test-convert-next-octet-aborts-on-single-hex-byte:
396
397
398 55/push-EBP
399 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
400
401
402
403 68/push _test-stream/imm32
404
405 e8/call clear-stream/disp32
406
407 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
408
409
410 b8/copy-to-EAX _test-buffered-file/imm32
411 05/add-to-EAX 4/imm32
412 50/push-EAX
413
414 e8/call clear-stream/disp32
415
416 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
417
418
419 68/push _test-error-stream/imm32
420
421 e8/call clear-stream/disp32
422
423 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
424
425
426 b8/copy-to-EAX _test-error-buffered-file/imm32
427 05/add-to-EAX 4/imm32
428 50/push-EAX
429
430 e8/call clear-stream/disp32
431
432 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
433
434
435
436 68/push "a"/imm32
437 68/push _test-stream/imm32
438
439 e8/call write/disp32
440
441 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
442
443
444 81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
445 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
446
447
448 68/push 0xc/imm32/nbytes-of-args-for-convert-next-octet
449 51/push-ECX/ed
450
451 e8/call tailor-exit-descriptor/disp32
452
453 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
454
455
456 51/push-ECX/ed
457 68/push _test-error-buffered-file/imm32
458 68/push _test-buffered-file/imm32
459
460 e8/call convert-next-octet/disp32
461
462
463
464 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
465
466 59/pop-to-ECX
467
468
469
470 68/push "F - test-convert-next-octet-aborts-on-single-hex-byte: unexpected abort"/imm32
471 68/push 2/imm32
472
473 ff 6/subop/push 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 .
474
475 e8/call check-ints-equal/disp32
476
477 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
478 $test-convert-next-octet-aborts-on-single-hex-byte:end:
479
480
481 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
482 5d/pop-to-EBP
483 c3/return
484
485
486
487
488
489 scan-next-byte:
490
491
492
493
494
495
496
497
498
499
500 55/push-EBP
501 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
502
503 $scan-next-byte:loop:
504
505
506 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 8/disp8 .
507
508 e8/call read-byte/disp32
509
510 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
511
512 3d/compare-with-EAX 0xffffffff/imm32
513 74/jump-if-equal $scan-next-byte:end/disp8
514
515
516 50/push-EAX
517
518
519 50/push-EAX
520
521 e8/call is-hex-digit?/disp32
522
523 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
524
525 3d/compare-with-EAX 0/imm32
526
527 58/pop-to-EAX
528
529 75/jump-if-not-equal $scan-next-byte:end/disp8
530 $scan-next-byte:check1:
531
532 81 7/subop/compare 3/mod/direct 0/rm32/EAX . . . . . 0x20/imm32
533 74/jump-if-equal $scan-next-byte:loop/disp8
534
535 81 7/subop/compare 3/mod/direct 0/rm32/EAX . . . . . 0x9/imm32
536 74/jump-if-equal $scan-next-byte:loop/disp8
537
538 81 7/subop/compare 3/mod/direct 0/rm32/EAX . . . . . 0xa/imm32
539 74/jump-if-equal $scan-next-byte:loop/disp8
540 $scan-next-byte:check2:
541
542 3d/compare-with-EAX 0x23/imm32
543 75/jump-if-not-equal $scan-next-byte:check3/disp8
544
545
546 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 8/disp8 .
547
548 e8/call skip-until-newline/disp32
549
550 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
551 eb/jump $scan-next-byte:loop/disp8
552 $scan-next-byte:check3:
553
554
555 50/push-EAX
556 68/push "scan-next-byte: invalid byte"/imm32
557 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 0xc/disp8 .
558 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 0x10/disp8 .
559
560 e8/call error-byte/disp32
561 $scan-next-byte:end:
562
563
564 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
565 5d/pop-to-EBP
566 c3/return
567
568 test-scan-next-byte:
569
570
571 55/push-EBP
572 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
573
574
575
576 68/push _test-stream/imm32
577
578 e8/call clear-stream/disp32
579
580 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
581
582
583 b8/copy-to-EAX _test-buffered-file/imm32
584 05/add-to-EAX 4/imm32
585 50/push-EAX
586
587 e8/call clear-stream/disp32
588
589 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
590
591
592 68/push _test-error-stream/imm32
593
594 e8/call clear-stream/disp32
595
596 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
597
598
599 b8/copy-to-EAX _test-error-buffered-file/imm32
600 05/add-to-EAX 4/imm32
601 50/push-EAX
602
603 e8/call clear-stream/disp32
604
605 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
606
607
608
609 68/push "abc"/imm32
610 68/push _test-stream/imm32
611
612 e8/call write/disp32
613
614 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
615
616
617 81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
618 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
619
620
621 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
622 51/push-ECX/ed
623
624 e8/call tailor-exit-descriptor/disp32
625
626 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
627
628
629 51/push-ECX/ed
630 68/push _test-error-buffered-file/imm32
631 68/push _test-buffered-file/imm32
632
633 e8/call scan-next-byte/disp32
634
635
636
637 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
638
639 59/pop-to-ECX
640
641
642
643 68/push "F - test-scan-next-byte: unexpected abort"/imm32
644 68/push 0/imm32
645
646 ff 6/subop/push 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 .
647
648 e8/call check-ints-equal/disp32
649
650 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
651
652 81 7/subop/compare 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 0/imm32
653 75/jump-if-not-equal $test-scan-next-byte:end/disp8
654
655
656 68/push "F - test-scan-next-byte"/imm32
657 68/push 0x61/imm32/a
658 50/push-EAX
659
660 e8/call check-ints-equal/disp32
661
662 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
663 $test-scan-next-byte:end:
664
665
666 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
667 5d/pop-to-EBP
668 c3/return
669
670 test-scan-next-byte-skips-whitespace:
671
672
673 55/push-EBP
674 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
675
676
677
678 68/push _test-stream/imm32
679
680 e8/call clear-stream/disp32
681
682 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
683
684
685 b8/copy-to-EAX _test-buffered-file/imm32
686 05/add-to-EAX 4/imm32
687 50/push-EAX
688
689 e8/call clear-stream/disp32
690
691 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
692
693
694 68/push _test-error-stream/imm32
695
696 e8/call clear-stream/disp32
697
698 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
699
700
701 b8/copy-to-EAX _test-error-buffered-file/imm32
702 05/add-to-EAX 4/imm32
703 50/push-EAX
704
705 e8/call clear-stream/disp32
706
707 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
708
709
710
711 68/push " abc"/imm32
712 68/push _test-stream/imm32
713
714 e8/call write/disp32
715
716 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
717
718
719 81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
720 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
721
722
723 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
724 51/push-ECX/ed
725
726 e8/call tailor-exit-descriptor/disp32
727
728 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
729
730
731 51/push-ECX/ed
732 68/push _test-error-buffered-file/imm32
733 68/push _test-buffered-file/imm32
734
735 e8/call scan-next-byte/disp32
736
737
738
739 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
740
741 59/pop-to-ECX
742
743
744
745 68/push "F - test-scan-next-byte-skips-whitespace: unexpected abort"/imm32
746 68/push 0/imm32
747
748 ff 6/subop/push 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 .
749
750 e8/call check-ints-equal/disp32
751
752 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
753
754 81 7/subop/compare 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 0/imm32
755 75/jump-if-not-equal $test-scan-next-byte-skips-whitespace:end/disp8
756
757
758 68/push "F - test-scan-next-byte-skips-whitespace"/imm32
759 68/push 0x61/imm32/a
760 50/push-EAX
761
762 e8/call check-ints-equal/disp32
763
764 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
765 $test-scan-next-byte-skips-whitespace:end:
766
767
768 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
769 5d/pop-to-EBP
770 c3/return
771
772 test-scan-next-byte-skips-comment:
773
774
775 55/push-EBP
776 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
777
778
779
780 68/push _test-stream/imm32
781
782 e8/call clear-stream/disp32
783
784 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
785
786
787 b8/copy-to-EAX _test-buffered-file/imm32
788 05/add-to-EAX 4/imm32
789 50/push-EAX
790
791 e8/call clear-stream/disp32
792
793 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
794
795
796 68/push _test-error-stream/imm32
797
798 e8/call clear-stream/disp32
799
800 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
801
802
803 b8/copy-to-EAX _test-error-buffered-file/imm32
804 05/add-to-EAX 4/imm32
805 50/push-EAX
806
807 e8/call clear-stream/disp32
808
809 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
810
811
812
813 68/push "#x"/imm32
814 68/push _test-stream/imm32
815
816 e8/call write/disp32
817
818 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
819
820
821 68/push Newline/imm32
822 68/push _test-stream/imm32
823
824 e8/call write/disp32
825
826 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
827
828
829 68/push "ab"/imm32
830 68/push _test-stream/imm32
831
832 e8/call write/disp32
833
834 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
835
836
837 81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
838 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
839
840
841 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
842 51/push-ECX/ed
843
844 e8/call tailor-exit-descriptor/disp32
845
846 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
847
848
849 51/push-ECX/ed
850 68/push _test-error-buffered-file/imm32
851 68/push _test-buffered-file/imm32
852
853 e8/call scan-next-byte/disp32
854
855
856
857 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
858
859 59/pop-to-ECX
860
861
862
863 68/push "F - test-scan-next-byte-skips-comment: unexpected abort"/imm32
864 68/push 0/imm32
865
866 ff 6/subop/push 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 .
867
868 e8/call check-ints-equal/disp32
869
870 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
871
872 81 7/subop/compare 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 0/imm32
873 75/jump-if-not-equal $test-scan-next-byte-skips-comment:end/disp8
874
875
876 68/push "F - test-scan-next-byte-skips-comment"/imm32
877 68/push 0x61/imm32/a
878 50/push-EAX
879
880 e8/call check-ints-equal/disp32
881
882 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
883 $test-scan-next-byte-skips-comment:end:
884
885
886 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
887 5d/pop-to-EBP
888 c3/return
889
890 test-scan-next-byte-skips-comment-and-whitespace:
891
892
893 55/push-EBP
894 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
895
896
897
898 68/push _test-stream/imm32
899
900 e8/call clear-stream/disp32
901
902 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
903
904
905 b8/copy-to-EAX _test-buffered-file/imm32
906 05/add-to-EAX 4/imm32
907 50/push-EAX
908
909 e8/call clear-stream/disp32
910
911 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
912
913
914 68/push _test-error-stream/imm32
915
916 e8/call clear-stream/disp32
917
918 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
919
920
921 b8/copy-to-EAX _test-error-buffered-file/imm32
922 05/add-to-EAX 4/imm32
923 50/push-EAX
924
925 e8/call clear-stream/disp32
926
927 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
928
929
930
931 68/push "#x"/imm32
932 68/push _test-stream/imm32
933
934 e8/call write/disp32
935
936 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
937
938
939 68/push Newline/imm32
940 68/push _test-stream/imm32
941
942 e8/call write/disp32
943
944 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
945
946
947 68/push " ab"/imm32
948 68/push _test-stream/imm32
949
950 e8/call write/disp32
951
952 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
953
954
955 81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
956 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
957
958
959 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
960 51/push-ECX/ed
961
962 e8/call tailor-exit-descriptor/disp32
963
964 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
965
966
967 51/push-ECX/ed
968 68/push _test-error-buffered-file/imm32
969 68/push _test-buffered-file/imm32
970
971 e8/call scan-next-byte/disp32
972
973
974
975 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
976
977 59/pop-to-ECX
978
979
980
981 68/push "F - test-scan-next-byte-skips-comment-and-whitespace: unexpected abort"/imm32
982 68/push 0/imm32
983
984 ff 6/subop/push 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 .
985
986 e8/call check-ints-equal/disp32
987
988 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
989
990 81 7/subop/compare 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 0/imm32
991 75/jump-if-not-equal $test-scan-next-byte-skips-comment-and-whitespace:end/disp8
992
993
994 68/push "F - test-scan-next-byte-skips-comment-and-whitespace"/imm32
995 68/push 0x61/imm32/a
996 50/push-EAX
997
998 e8/call check-ints-equal/disp32
999
1000 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
1001 $test-scan-next-byte-skips-comment-and-whitespace:end:
1002
1003
1004 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1005 5d/pop-to-EBP
1006 c3/return
1007
1008 test-scan-next-byte-skips-whitespace-and-comment:
1009
1010
1011 55/push-EBP
1012 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
1013
1014
1015
1016 68/push _test-stream/imm32
1017
1018 e8/call clear-stream/disp32
1019
1020 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1021
1022
1023 b8/copy-to-EAX _test-buffered-file/imm32
1024 05/add-to-EAX 4/imm32
1025 50/push-EAX
1026
1027 e8/call clear-stream/disp32
1028
1029 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1030
1031
1032 68/push _test-error-stream/imm32
1033
1034 e8/call clear-stream/disp32
1035
1036 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1037
1038
1039 b8/copy-to-EAX _test-error-buffered-file/imm32
1040 05/add-to-EAX 4/imm32
1041 50/push-EAX
1042
1043 e8/call clear-stream/disp32
1044
1045 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1046
1047
1048
1049 68/push " #x"/imm32
1050 68/push _test-stream/imm32
1051
1052 e8/call write/disp32
1053
1054 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1055
1056
1057 68/push Newline/imm32
1058 68/push _test-stream/imm32
1059
1060 e8/call write/disp32
1061
1062 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1063
1064
1065 68/push "ab"/imm32
1066 68/push _test-stream/imm32
1067
1068 e8/call write/disp32
1069
1070 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1071
1072
1073 81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1074 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
1075
1076
1077 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
1078 51/push-ECX/ed
1079
1080 e8/call tailor-exit-descriptor/disp32
1081
1082 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1083
1084
1085 51/push-ECX/ed
1086 68/push _test-error-buffered-file/imm32
1087 68/push _test-buffered-file/imm32
1088
1089 e8/call scan-next-byte/disp32
1090
1091
1092
1093 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1094
1095 59/pop-to-ECX
1096
1097
1098
1099 68/push "F - test-scan-next-byte-skips-whitespace-and-comment: unexpected abort"/imm32
1100 68/push 0/imm32
1101
1102 ff 6/subop/push 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 .
1103
1104 e8/call check-ints-equal/disp32
1105
1106 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
1107
1108 81 7/subop/compare 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 0/imm32
1109 75/jump-if-not-equal $test-scan-next-byte-skips-whitespace-and-comment:end/disp8
1110
1111
1112 68/push "F - test-scan-next-byte-skips-whitespace-and-comment"/imm32
1113 68/push 0x61/imm32/a
1114 50/push-EAX
1115
1116 e8/call check-ints-equal/disp32
1117
1118 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
1119 $test-scan-next-byte-skips-whitespace-and-comment:end:
1120
1121
1122 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1123 5d/pop-to-EBP
1124 c3/return
1125
1126 test-scan-next-byte-reads-final-byte:
1127
1128
1129 55/push-EBP
1130 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
1131
1132
1133
1134 68/push _test-stream/imm32
1135
1136 e8/call clear-stream/disp32
1137
1138 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1139
1140
1141 b8/copy-to-EAX _test-buffered-file/imm32
1142 05/add-to-EAX 4/imm32
1143 50/push-EAX
1144
1145 e8/call clear-stream/disp32
1146
1147 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1148
1149
1150 68/push _test-error-stream/imm32
1151
1152 e8/call clear-stream/disp32
1153
1154 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1155
1156
1157 b8/copy-to-EAX _test-error-buffered-file/imm32
1158 05/add-to-EAX 4/imm32
1159 50/push-EAX
1160
1161 e8/call clear-stream/disp32
1162
1163 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1164
1165
1166
1167 68/push "a"/imm32
1168 68/push _test-stream/imm32
1169
1170 e8/call write/disp32
1171
1172 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1173
1174
1175 81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1176 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
1177
1178
1179 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
1180 51/push-ECX/ed
1181
1182 e8/call tailor-exit-descriptor/disp32
1183
1184 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1185
1186
1187 51/push-ECX/ed
1188 68/push _test-error-buffered-file/imm32
1189 68/push _test-buffered-file/imm32
1190
1191 e8/call scan-next-byte/disp32
1192
1193
1194
1195 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1196
1197 59/pop-to-ECX
1198
1199
1200
1201 68/push "F - test-scan-next-byte-reads-final-byte: unexpected abort"/imm32
1202 68/push 0/imm32
1203
1204 ff 6/subop/push 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 .
1205
1206 e8/call check-ints-equal/disp32
1207
1208 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
1209
1210 81 7/subop/compare 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 0/imm32
1211 75/jump-if-not-equal $test-scan-next-byte-reads-final-byte:end/disp8
1212
1213
1214 68/push "F - test-scan-next-byte-reads-final-byte"/imm32
1215 68/push 0x61/imm32/a
1216 50/push-EAX
1217
1218 e8/call check-ints-equal/disp32
1219
1220 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
1221 $test-scan-next-byte-reads-final-byte:end:
1222
1223
1224 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1225 5d/pop-to-EBP
1226 c3/return
1227
1228 test-scan-next-byte-handles-eof:
1229
1230
1231 55/push-EBP
1232 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
1233
1234
1235
1236 68/push _test-stream/imm32
1237
1238 e8/call clear-stream/disp32
1239
1240 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1241
1242
1243 b8/copy-to-EAX _test-buffered-file/imm32
1244 05/add-to-EAX 4/imm32
1245 50/push-EAX
1246
1247 e8/call clear-stream/disp32
1248
1249 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1250
1251
1252 68/push _test-error-stream/imm32
1253
1254 e8/call clear-stream/disp32
1255
1256 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1257
1258
1259 b8/copy-to-EAX _test-error-buffered-file/imm32
1260 05/add-to-EAX 4/imm32
1261 50/push-EAX
1262
1263 e8/call clear-stream/disp32
1264
1265 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1266
1267
1268
1269 81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1270 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
1271
1272
1273 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
1274 51/push-ECX/ed
1275
1276 e8/call tailor-exit-descriptor/disp32
1277
1278 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1279
1280
1281 51/push-ECX/ed
1282 68/push _test-error-buffered-file/imm32
1283 68/push _test-buffered-file/imm32
1284
1285 e8/call scan-next-byte/disp32
1286
1287
1288
1289 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1290
1291 59/pop-to-ECX
1292
1293
1294
1295 68/push "F - test-scan-next-byte-handles-eof: unexpected abort"/imm32
1296 68/push 0/imm32
1297
1298 ff 6/subop/push 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 .
1299
1300 e8/call check-ints-equal/disp32
1301
1302 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
1303
1304 81 7/subop/compare 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 0/imm32
1305 75/jump-if-not-equal $test-scan-next-byte-handles-eof:end/disp8
1306
1307
1308 68/push "F - test-scan-next-byte-handles-eof"/imm32
1309 68/push 0xffffffff/imm32/eof
1310 50/push-EAX
1311
1312 e8/call check-ints-equal/disp32
1313
1314 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
1315 $test-scan-next-byte-handles-eof:end:
1316
1317
1318 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1319 5d/pop-to-EBP
1320 c3/return
1321
1322 test-scan-next-byte-aborts-on-invalid-byte:
1323
1324
1325 55/push-EBP
1326 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
1327
1328
1329
1330 68/push _test-stream/imm32
1331
1332 e8/call clear-stream/disp32
1333
1334 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1335
1336
1337 b8/copy-to-EAX _test-buffered-file/imm32
1338 05/add-to-EAX 4/imm32
1339 50/push-EAX
1340
1341 e8/call clear-stream/disp32
1342
1343 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1344
1345
1346 68/push _test-error-stream/imm32
1347
1348 e8/call clear-stream/disp32
1349
1350 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1351
1352
1353 b8/copy-to-EAX _test-error-buffered-file/imm32
1354 05/add-to-EAX 4/imm32
1355 50/push-EAX
1356
1357 e8/call clear-stream/disp32
1358
1359 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1360
1361
1362
1363 68/push "x"/imm32
1364 68/push _test-stream/imm32
1365
1366 e8/call write/disp32
1367
1368 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1369
1370
1371 81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1372 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
1373
1374
1375 68/push 0xc/imm32/nbytes-of-args-for-scan-next-byte
1376 51/push-ECX/ed
1377
1378 e8/call tailor-exit-descriptor/disp32
1379
1380 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1381
1382
1383 51/push-ECX/ed
1384 68/push _test-error-buffered-file/imm32
1385 68/push _test-buffered-file/imm32
1386
1387 e8/call scan-next-byte/disp32
1388
1389
1390
1391 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1392
1393 59/pop-to-ECX
1394
1395
1396
1397 68/push "F - test-scan-next-byte-aborts-on-invalid-byte"/imm32
1398 68/push 2/imm32
1399
1400 ff 6/subop/push 1/mod/*+disp8 1/rm32/ECX . . . . 4/disp8 .
1401
1402 e8/call check-ints-equal/disp32
1403
1404 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
1405 $test-scan-next-byte-aborts-on-invalid-byte:end:
1406
1407
1408 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1409 5d/pop-to-EBP
1410 c3/return
1411
1412 skip-until-newline:
1413
1414
1415
1416
1417
1418
1419
1420
1421 55/push-EBP
1422 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
1423
1424 50/push-EAX
1425 $skip-until-newline:loop:
1426
1427
1428 ff 6/subop/push 1/mod/*+disp8 5/rm32/EBP . . . . 8/disp8 .
1429
1430 e8/call read-byte/disp32
1431
1432 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1433
1434 81 7/subop/compare 3/mod/direct 0/rm32/EAX . . . . . 0xffffffff/imm32
1435 74/jump-if-equal $skip-until-newline:end/disp8
1436
1437 81 7/subop/compare 3/mod/direct 0/rm32/EAX . . . . . 0xa/imm32
1438 75/jump-if-not-equal $skip-until-newline:loop/disp8
1439 $skip-until-newline:end:
1440
1441 58/pop-to-EAX
1442
1443 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
1444 5d/pop-to-EBP
1445 c3/return
1446
1447 test-skip-until-newline:
1448
1449
1450
1451
1452 68/push _test-stream/imm32
1453
1454 e8/call clear-stream/disp32
1455
1456 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1457
1458
1459 b8/copy-to-EAX _test-buffered-file/imm32
1460 05/add-to-EAX 4/imm32
1461 50/push-EAX
1462
1463 e8/call clear-stream/disp32
1464
1465 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1466
1467
1468
1469 68/push "abc"/imm32
1470 68/push _test-stream/imm32
1471
1472 e8/call write/disp32
1473
1474 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1475
1476
1477 68/push Newline/imm32
1478 68/push _test-stream/imm32
1479
1480 e8/call write/disp32
1481
1482 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1483
1484
1485 68/push "de"/imm32
1486 68/push _test-stream/imm32
1487
1488 e8/call write/disp32
1489
1490 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32
1491
1492
1493 68/push _test-buffered-file/imm32
1494
1495 e8/call skip-until-newline/disp32
1496
1497 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
1498
1499
1500 68/push "F - test-skip-until-newline"/imm32
1501 68/push 4/imm32
1502 b8/copy-to-EAX _test-buffered-file/imm32
1503 ff 6/subop/push 1/mod/*+disp8 0/rm32/EAX . . . . 8/disp8 .
1504
1505 e8/call check-ints-equal/disp32
1506
1507 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
1508
1509 c3/return
1510
1511 == data
1512
1513 _test-error-stream:
1514
1515 0/imm32
1516
1517 0/imm32
1518
1519 8/imm32
1520
1521 00 00 00 00 00 00 00 00
1522
1523
1524 _test-error-buffered-file:
1525
1526 _test-error-stream/imm32
1527
1528 0/imm32
1529
1530 0/imm32
1531
1532 6/imm32
1533
1534 00 00 00 00 00 00
1535
1536