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 $clear-stream:loop:
37
38 39/compare 3/mod/direct 0/rm32/eax . . . 1/r32/ecx . .
39 73/jump-if-greater-or-equal-unsigned $clear-stream:end/disp8
40
41 c6 0/subop/copy-byte 0/mod/direct 0/rm32/eax . . . . . 0/imm8
42
43 40/increment-eax
44 eb/jump $clear-stream:loop/disp8
45 $clear-stream:end:
46
47 59/pop-to-ecx
48 58/pop-to-eax
49
50 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . .
51 5d/pop-to-ebp
52 c3/return
53
54 rewind-stream:
55
56 55/push-ebp
57 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . .
58
59 50/push-eax
60
61 8b/copy 1/mod/*+disp8 5/rm32/ebp . . 0/r32/eax 8/disp8 .
62
63 c7 0/subop/copy 1/mod/*+disp8 0/rm32/eax . . . . 4/disp8 0/imm32
64 $rewind-stream:end:
65
66 58/pop-to-eax
67
68 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . .
69 5d/pop-to-ebp
70 c3/return
71
72