https://github.com/akkartik/mu/blob/master/055stream.subx
1
2
3
4
5
6
7
8
9
10
11
12 == code
13
14
15
16
17 clear-stream:
18
19 55/push-ebp
20 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . .
21
22 50/push-eax
23 51/push-ecx
24
25 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 0/r32/eax 8/disp8 .
26
27 8b/copy 1/mod/*+disp8 0/rm32/eax . . . 1/r32/ecx 8/disp8 .
28
29 8d/copy-address 1/mod/*+disp8 4/rm32/sib 0/base/eax 1/index/ecx . 1/r32/ecx 0xc/disp8 .
30
31 c7 0/subop/copy 0/mod/direct 0/rm32/eax . . . . . 0/imm32
32
33 c7 0/subop/copy 1/mod/*+disp8 0/rm32/eax . . . . 4/disp8 0/imm32
34
35 81 0/subop/add 3/mod/direct 0/rm32/eax . . . . . 0xc/imm32
36
37 $clear-stream:loop:
38
39 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . .
40 73/jump-if-greater-or-equal-unsigned $clear-stream:end/disp8
41
42 c6 0/subop/copy 0/mod/direct 0/rm32/eax . . . . . 0/imm8
43
44 40/increment-eax
45 eb/jump $clear-stream:loop/disp8
46 $clear-stream:end:
47
48 59/pop-to-ecx
49 58/pop-to-eax
50
51 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . .
52 5d/pop-to-ebp
53 c3/return
54
55 rewind-stream:
56
57 55/push-ebp
58 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . .
59
60 50/push-eax
61
62 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 0/r32/eax 8/disp8 .
63
64 c7 0/subop/copy 1/mod/*+disp8 0/rm32/eax . . . . 4/disp8 0/imm32
65 $rewind-stream:end:
66
67 58/pop-to-eax
68
69 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . .
70 5d/pop-to-ebp
71 c3/return
72
73