nmarshall commited on
Commit
0448bfa
·
1 Parent(s): 26e2130

qvm: execute original formatter dispatch

Browse files
docs/FINDINGS.md CHANGED
@@ -1442,3 +1442,6 @@ RE-802–811 adds opt-in coherent memory, original string/scoreboard control flo
1442
 
1443
 
1444
  **RE-814:** 37279 pads zeroes before a negative sign and renders wrapping INT_MIN remainder bytes noncanonically; narrow left-padding domains fail bounded execution. [Evidence](research/QVM_FORMAT_INTEGER.md).
 
 
 
 
1442
 
1443
 
1444
  **RE-814:** 37279 pads zeroes before a negative sign and renders wrapping INT_MIN remainder bytes noncanonically; narrow left-padding domains fail bounded execution. [Evidence](research/QVM_FORMAT_INTEGER.md).
1445
+
1446
+
1447
+ **RE-815:** 37914 now executes original dispatch tables and integer/string children; pointer conversion is decimal, unknown conversions consume one low-byte word, and source padding/minimum quirks propagate. [Evidence](research/QVM_FORMATTER.md).
docs/PROVISIONAL_TODO.md CHANGED
@@ -1452,3 +1452,6 @@ RE-813: 37768 truncates non-null strings by precision, always pads on the right,
1452
 
1453
 
1454
  RE-814: 37279 pads zeroes before a negative sign and renders wrapping INT_MIN remainder bytes noncanonically; narrow left-padding domains fail bounded execution. Full runtime completion remains open. [Evidence](research/QVM_FORMAT_INTEGER.md).
 
 
 
 
1452
 
1453
 
1454
  RE-814: 37279 pads zeroes before a negative sign and renders wrapping INT_MIN remainder bytes noncanonically; narrow left-padding domains fail bounded execution. Full runtime completion remains open. [Evidence](research/QVM_FORMAT_INTEGER.md).
1455
+
1456
+
1457
+ RE-815: 37914 now executes original dispatch tables and integer/string children; pointer conversion is decimal, unknown conversions consume one low-byte word, and source padding/minimum quirks propagate. Full runtime completion remains open. [Evidence](research/QVM_FORMATTER.md).
docs/RESEARCH_LEDGER.md CHANGED
@@ -1738,3 +1738,8 @@ After exactly ten task commits from `744c236f`, the single `cargo xtask test-ful
1738
  ## 2026-10-27 — RE-814 Actual decimal formatter padding and signed-minimum quirks
1739
 
1740
  37279 pads zeroes before a negative sign and renders wrapping INT_MIN remainder bytes noncanonically; narrow left-padding domains fail bounded execution. Focused `cargo xtask test-group format-integer` passes (6 Python tests); selected reports regenerate twice deterministically, with storage, documentation links and whitespace guards. Full suite deferred to task ten. Original assets unchanged; source fixtures do not establish complete native/runtime parity.
 
 
 
 
 
 
1738
  ## 2026-10-27 — RE-814 Actual decimal formatter padding and signed-minimum quirks
1739
 
1740
  37279 pads zeroes before a negative sign and renders wrapping INT_MIN remainder bytes noncanonically; narrow left-padding domains fail bounded execution. Focused `cargo xtask test-group format-integer` passes (6 Python tests); selected reports regenerate twice deterministically, with storage, documentation links and whitespace guards. Full suite deferred to task ten. Original assets unchanged; source fixtures do not establish complete native/runtime parity.
1741
+
1742
+
1743
+ ## 2026-10-27 — RE-815 Original formatter dispatch integer string character and literal composition
1744
+
1745
+ 37914 now executes original dispatch tables and integer/string children; pointer conversion is decimal, unknown conversions consume one low-byte word, and source padding/minimum quirks propagate. Focused `cargo xtask test-group formatter` passes (5 Python tests); selected reports regenerate twice deterministically, with storage, documentation links and whitespace guards. Full suite deferred to task ten. Original assets unchanged; source fixtures do not establish complete native/runtime parity.
docs/REVERSE_ENGINEERING_TODO.md CHANGED
@@ -1492,3 +1492,6 @@ Purpose: turn the supplied installation into an evidence-backed specification of
1492
 
1493
 
1494
  - [x] RE-814 Actual decimal formatter padding and signed-minimum quirks ([evidence](research/QVM_FORMAT_INTEGER.md)).
 
 
 
 
1492
 
1493
 
1494
  - [x] RE-814 Actual decimal formatter padding and signed-minimum quirks ([evidence](research/QVM_FORMAT_INTEGER.md)).
1495
+
1496
+
1497
+ - [x] RE-815 Original formatter dispatch integer string character and literal composition ([evidence](research/QVM_FORMATTER.md)).
docs/research/QVM_FORMATTER.md ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ # Original formatter dispatch integer string character and literal composition
2
+
3
+ RE-815. Reproduce with `python3 scripts/analyze_qvm_formatter.py`; focused validation: `cargo xtask test-group formatter`. [Machine report](qvm-formatter.json).
4
+
5
+ 55 complete source formatter fixtures cover d/i/p, string width/precision/null handling, zero and left padding, escaped percent, raw characters, unknown conversions and mixed arguments. Independent parsing/byte arithmetic verifies result length and terminal NUL, including embedded character NUL. Float formatting, malformed/trailing formats and unsafe vararg/padding domains remain excluded.
6
+
7
+ Original executable/native runtime and complete Linux/macOS Rust/Bevy/Solari acceptance remain unverified.
docs/research/README.md CHANGED
@@ -1032,3 +1032,6 @@ The extension collector adds five focused tests for native tail calls, command-r
1032
 
1033
 
1034
  [RE-814: Actual decimal formatter padding and signed-minimum quirks](QVM_FORMAT_INTEGER.md).
 
 
 
 
1032
 
1033
 
1034
  [RE-814: Actual decimal formatter padding and signed-minimum quirks](QVM_FORMAT_INTEGER.md).
1035
+
1036
+
1037
+ [RE-815: Original formatter dispatch integer string character and literal composition](QVM_FORMATTER.md).
docs/research/qvm-formatter.json ADDED
@@ -0,0 +1,1398 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "limits": "Actual37914 with original jump tables, actual37279/37768 and36038 children across55 finite integer/string/character/literal fixtures. Float37498 remains unrecovered here. Unknown conversion consumes a word and writes its low byte; p dispatches decimal. Unsafe trailing formats/uninitialized varargs and narrow-left-padding domains excluded.",
3
+ "probes": [
4
+ {
5
+ "arguments": [
6
+ {
7
+ "word": -2147483648
8
+ }
9
+ ],
10
+ "child_memory_bytes": {
11
+ "2072911872": 45,
12
+ "2072911873": 46,
13
+ "2072911874": 47,
14
+ "2072911875": 44,
15
+ "2072911876": 41,
16
+ "2072911877": 44,
17
+ "2072911878": 40,
18
+ "2072911879": 45,
19
+ "2072911880": 42,
20
+ "2072911881": 44,
21
+ "2072911882": 40,
22
+ "2072911883": 0
23
+ },
24
+ "child_targets": [
25
+ 37279
26
+ ],
27
+ "count": 11,
28
+ "formatter37914_executed": true,
29
+ "output_hex": "2d2e2f2c292c282d2a2c2800",
30
+ "template": "%i",
31
+ "trace_sha256": "ba9feaceca0e1b3557fa9b2b6bb61c54c39cec605178bf08c98b97f52fa13f05"
32
+ },
33
+ {
34
+ "arguments": [
35
+ {
36
+ "word": -12
37
+ }
38
+ ],
39
+ "child_memory_bytes": {
40
+ "2072911872": 45,
41
+ "2072911873": 49,
42
+ "2072911874": 50,
43
+ "2072911875": 0
44
+ },
45
+ "child_targets": [
46
+ 37279
47
+ ],
48
+ "count": 3,
49
+ "formatter37914_executed": true,
50
+ "output_hex": "2d313200",
51
+ "template": "%i",
52
+ "trace_sha256": "ba9feaceca0e1b3557fa9b2b6bb61c54c39cec605178bf08c98b97f52fa13f05"
53
+ },
54
+ {
55
+ "arguments": [
56
+ {
57
+ "word": 0
58
+ }
59
+ ],
60
+ "child_memory_bytes": {
61
+ "2072911872": 48,
62
+ "2072911873": 0
63
+ },
64
+ "child_targets": [
65
+ 37279
66
+ ],
67
+ "count": 1,
68
+ "formatter37914_executed": true,
69
+ "output_hex": "3000",
70
+ "template": "%i",
71
+ "trace_sha256": "ba9feaceca0e1b3557fa9b2b6bb61c54c39cec605178bf08c98b97f52fa13f05"
72
+ },
73
+ {
74
+ "arguments": [
75
+ {
76
+ "word": 123
77
+ }
78
+ ],
79
+ "child_memory_bytes": {
80
+ "2072911872": 49,
81
+ "2072911873": 50,
82
+ "2072911874": 51,
83
+ "2072911875": 0
84
+ },
85
+ "child_targets": [
86
+ 37279
87
+ ],
88
+ "count": 3,
89
+ "formatter37914_executed": true,
90
+ "output_hex": "31323300",
91
+ "template": "%i",
92
+ "trace_sha256": "ba9feaceca0e1b3557fa9b2b6bb61c54c39cec605178bf08c98b97f52fa13f05"
93
+ },
94
+ {
95
+ "arguments": [
96
+ {
97
+ "word": 2147483647
98
+ }
99
+ ],
100
+ "child_memory_bytes": {
101
+ "2072911872": 50,
102
+ "2072911873": 49,
103
+ "2072911874": 52,
104
+ "2072911875": 55,
105
+ "2072911876": 52,
106
+ "2072911877": 56,
107
+ "2072911878": 51,
108
+ "2072911879": 54,
109
+ "2072911880": 52,
110
+ "2072911881": 55,
111
+ "2072911882": 0
112
+ },
113
+ "child_targets": [
114
+ 37279
115
+ ],
116
+ "count": 10,
117
+ "formatter37914_executed": true,
118
+ "output_hex": "3231343734383336343700",
119
+ "template": "%i",
120
+ "trace_sha256": "ba9feaceca0e1b3557fa9b2b6bb61c54c39cec605178bf08c98b97f52fa13f05"
121
+ },
122
+ {
123
+ "arguments": [
124
+ {
125
+ "word": -2147483648
126
+ }
127
+ ],
128
+ "child_memory_bytes": {
129
+ "2072911872": 45,
130
+ "2072911873": 46,
131
+ "2072911874": 47,
132
+ "2072911875": 44,
133
+ "2072911876": 41,
134
+ "2072911877": 44,
135
+ "2072911878": 40,
136
+ "2072911879": 45,
137
+ "2072911880": 42,
138
+ "2072911881": 44,
139
+ "2072911882": 40,
140
+ "2072911883": 0
141
+ },
142
+ "child_targets": [
143
+ 37279
144
+ ],
145
+ "count": 11,
146
+ "formatter37914_executed": true,
147
+ "output_hex": "2d2e2f2c292c282d2a2c2800",
148
+ "template": "%d",
149
+ "trace_sha256": "ba9feaceca0e1b3557fa9b2b6bb61c54c39cec605178bf08c98b97f52fa13f05"
150
+ },
151
+ {
152
+ "arguments": [
153
+ {
154
+ "word": -12
155
+ }
156
+ ],
157
+ "child_memory_bytes": {
158
+ "2072911872": 45,
159
+ "2072911873": 49,
160
+ "2072911874": 50,
161
+ "2072911875": 0
162
+ },
163
+ "child_targets": [
164
+ 37279
165
+ ],
166
+ "count": 3,
167
+ "formatter37914_executed": true,
168
+ "output_hex": "2d313200",
169
+ "template": "%d",
170
+ "trace_sha256": "ba9feaceca0e1b3557fa9b2b6bb61c54c39cec605178bf08c98b97f52fa13f05"
171
+ },
172
+ {
173
+ "arguments": [
174
+ {
175
+ "word": 0
176
+ }
177
+ ],
178
+ "child_memory_bytes": {
179
+ "2072911872": 48,
180
+ "2072911873": 0
181
+ },
182
+ "child_targets": [
183
+ 37279
184
+ ],
185
+ "count": 1,
186
+ "formatter37914_executed": true,
187
+ "output_hex": "3000",
188
+ "template": "%d",
189
+ "trace_sha256": "ba9feaceca0e1b3557fa9b2b6bb61c54c39cec605178bf08c98b97f52fa13f05"
190
+ },
191
+ {
192
+ "arguments": [
193
+ {
194
+ "word": 123
195
+ }
196
+ ],
197
+ "child_memory_bytes": {
198
+ "2072911872": 49,
199
+ "2072911873": 50,
200
+ "2072911874": 51,
201
+ "2072911875": 0
202
+ },
203
+ "child_targets": [
204
+ 37279
205
+ ],
206
+ "count": 3,
207
+ "formatter37914_executed": true,
208
+ "output_hex": "31323300",
209
+ "template": "%d",
210
+ "trace_sha256": "ba9feaceca0e1b3557fa9b2b6bb61c54c39cec605178bf08c98b97f52fa13f05"
211
+ },
212
+ {
213
+ "arguments": [
214
+ {
215
+ "word": 2147483647
216
+ }
217
+ ],
218
+ "child_memory_bytes": {
219
+ "2072911872": 50,
220
+ "2072911873": 49,
221
+ "2072911874": 52,
222
+ "2072911875": 55,
223
+ "2072911876": 52,
224
+ "2072911877": 56,
225
+ "2072911878": 51,
226
+ "2072911879": 54,
227
+ "2072911880": 52,
228
+ "2072911881": 55,
229
+ "2072911882": 0
230
+ },
231
+ "child_targets": [
232
+ 37279
233
+ ],
234
+ "count": 10,
235
+ "formatter37914_executed": true,
236
+ "output_hex": "3231343734383336343700",
237
+ "template": "%d",
238
+ "trace_sha256": "ba9feaceca0e1b3557fa9b2b6bb61c54c39cec605178bf08c98b97f52fa13f05"
239
+ },
240
+ {
241
+ "arguments": [
242
+ {
243
+ "word": -2147483648
244
+ }
245
+ ],
246
+ "child_memory_bytes": {
247
+ "2072911872": 45,
248
+ "2072911873": 46,
249
+ "2072911874": 47,
250
+ "2072911875": 44,
251
+ "2072911876": 41,
252
+ "2072911877": 44,
253
+ "2072911878": 40,
254
+ "2072911879": 45,
255
+ "2072911880": 42,
256
+ "2072911881": 44,
257
+ "2072911882": 40,
258
+ "2072911883": 0
259
+ },
260
+ "child_targets": [
261
+ 37279
262
+ ],
263
+ "count": 11,
264
+ "formatter37914_executed": true,
265
+ "output_hex": "2d2e2f2c292c282d2a2c2800",
266
+ "template": "%p",
267
+ "trace_sha256": "29f8d8eda437168e4d074a0e2f17e17de9000e08ee6a0d33b5bbd44fc435b43d"
268
+ },
269
+ {
270
+ "arguments": [
271
+ {
272
+ "word": -12
273
+ }
274
+ ],
275
+ "child_memory_bytes": {
276
+ "2072911872": 45,
277
+ "2072911873": 49,
278
+ "2072911874": 50,
279
+ "2072911875": 0
280
+ },
281
+ "child_targets": [
282
+ 37279
283
+ ],
284
+ "count": 3,
285
+ "formatter37914_executed": true,
286
+ "output_hex": "2d313200",
287
+ "template": "%p",
288
+ "trace_sha256": "29f8d8eda437168e4d074a0e2f17e17de9000e08ee6a0d33b5bbd44fc435b43d"
289
+ },
290
+ {
291
+ "arguments": [
292
+ {
293
+ "word": 0
294
+ }
295
+ ],
296
+ "child_memory_bytes": {
297
+ "2072911872": 48,
298
+ "2072911873": 0
299
+ },
300
+ "child_targets": [
301
+ 37279
302
+ ],
303
+ "count": 1,
304
+ "formatter37914_executed": true,
305
+ "output_hex": "3000",
306
+ "template": "%p",
307
+ "trace_sha256": "29f8d8eda437168e4d074a0e2f17e17de9000e08ee6a0d33b5bbd44fc435b43d"
308
+ },
309
+ {
310
+ "arguments": [
311
+ {
312
+ "word": 123
313
+ }
314
+ ],
315
+ "child_memory_bytes": {
316
+ "2072911872": 49,
317
+ "2072911873": 50,
318
+ "2072911874": 51,
319
+ "2072911875": 0
320
+ },
321
+ "child_targets": [
322
+ 37279
323
+ ],
324
+ "count": 3,
325
+ "formatter37914_executed": true,
326
+ "output_hex": "31323300",
327
+ "template": "%p",
328
+ "trace_sha256": "29f8d8eda437168e4d074a0e2f17e17de9000e08ee6a0d33b5bbd44fc435b43d"
329
+ },
330
+ {
331
+ "arguments": [
332
+ {
333
+ "word": 2147483647
334
+ }
335
+ ],
336
+ "child_memory_bytes": {
337
+ "2072911872": 50,
338
+ "2072911873": 49,
339
+ "2072911874": 52,
340
+ "2072911875": 55,
341
+ "2072911876": 52,
342
+ "2072911877": 56,
343
+ "2072911878": 51,
344
+ "2072911879": 54,
345
+ "2072911880": 52,
346
+ "2072911881": 55,
347
+ "2072911882": 0
348
+ },
349
+ "child_targets": [
350
+ 37279
351
+ ],
352
+ "count": 10,
353
+ "formatter37914_executed": true,
354
+ "output_hex": "3231343734383336343700",
355
+ "template": "%p",
356
+ "trace_sha256": "29f8d8eda437168e4d074a0e2f17e17de9000e08ee6a0d33b5bbd44fc435b43d"
357
+ },
358
+ {
359
+ "arguments": [
360
+ {
361
+ "word": -2147483648
362
+ }
363
+ ],
364
+ "child_memory_bytes": {
365
+ "2072911872": 45,
366
+ "2072911873": 46,
367
+ "2072911874": 47,
368
+ "2072911875": 44,
369
+ "2072911876": 41,
370
+ "2072911877": 44,
371
+ "2072911878": 40,
372
+ "2072911879": 45,
373
+ "2072911880": 42,
374
+ "2072911881": 44,
375
+ "2072911882": 40,
376
+ "2072911883": 0
377
+ },
378
+ "child_targets": [
379
+ 37279
380
+ ],
381
+ "count": 11,
382
+ "formatter37914_executed": true,
383
+ "output_hex": "2d2e2f2c292c282d2a2c2800",
384
+ "template": "%05i",
385
+ "trace_sha256": "a481ff41b3d1385d4f0315ee71604690ae6143e91eb3ef52637e5dc3ffd193b2"
386
+ },
387
+ {
388
+ "arguments": [
389
+ {
390
+ "word": -12
391
+ }
392
+ ],
393
+ "child_memory_bytes": {
394
+ "2072911872": 48,
395
+ "2072911873": 48,
396
+ "2072911874": 45,
397
+ "2072911875": 49,
398
+ "2072911876": 50,
399
+ "2072911877": 0
400
+ },
401
+ "child_targets": [
402
+ 37279
403
+ ],
404
+ "count": 5,
405
+ "formatter37914_executed": true,
406
+ "output_hex": "30302d313200",
407
+ "template": "%05i",
408
+ "trace_sha256": "a481ff41b3d1385d4f0315ee71604690ae6143e91eb3ef52637e5dc3ffd193b2"
409
+ },
410
+ {
411
+ "arguments": [
412
+ {
413
+ "word": 0
414
+ }
415
+ ],
416
+ "child_memory_bytes": {
417
+ "2072911872": 48,
418
+ "2072911873": 48,
419
+ "2072911874": 48,
420
+ "2072911875": 48,
421
+ "2072911876": 48,
422
+ "2072911877": 0
423
+ },
424
+ "child_targets": [
425
+ 37279
426
+ ],
427
+ "count": 5,
428
+ "formatter37914_executed": true,
429
+ "output_hex": "303030303000",
430
+ "template": "%05i",
431
+ "trace_sha256": "a481ff41b3d1385d4f0315ee71604690ae6143e91eb3ef52637e5dc3ffd193b2"
432
+ },
433
+ {
434
+ "arguments": [
435
+ {
436
+ "word": 123
437
+ }
438
+ ],
439
+ "child_memory_bytes": {
440
+ "2072911872": 48,
441
+ "2072911873": 48,
442
+ "2072911874": 49,
443
+ "2072911875": 50,
444
+ "2072911876": 51,
445
+ "2072911877": 0
446
+ },
447
+ "child_targets": [
448
+ 37279
449
+ ],
450
+ "count": 5,
451
+ "formatter37914_executed": true,
452
+ "output_hex": "303031323300",
453
+ "template": "%05i",
454
+ "trace_sha256": "a481ff41b3d1385d4f0315ee71604690ae6143e91eb3ef52637e5dc3ffd193b2"
455
+ },
456
+ {
457
+ "arguments": [
458
+ {
459
+ "word": 2147483647
460
+ }
461
+ ],
462
+ "child_memory_bytes": {
463
+ "2072911872": 50,
464
+ "2072911873": 49,
465
+ "2072911874": 52,
466
+ "2072911875": 55,
467
+ "2072911876": 52,
468
+ "2072911877": 56,
469
+ "2072911878": 51,
470
+ "2072911879": 54,
471
+ "2072911880": 52,
472
+ "2072911881": 55,
473
+ "2072911882": 0
474
+ },
475
+ "child_targets": [
476
+ 37279
477
+ ],
478
+ "count": 10,
479
+ "formatter37914_executed": true,
480
+ "output_hex": "3231343734383336343700",
481
+ "template": "%05i",
482
+ "trace_sha256": "a481ff41b3d1385d4f0315ee71604690ae6143e91eb3ef52637e5dc3ffd193b2"
483
+ },
484
+ {
485
+ "arguments": [
486
+ {
487
+ "word": -2147483648
488
+ }
489
+ ],
490
+ "child_memory_bytes": {
491
+ "2072911872": 45,
492
+ "2072911873": 46,
493
+ "2072911874": 47,
494
+ "2072911875": 44,
495
+ "2072911876": 41,
496
+ "2072911877": 44,
497
+ "2072911878": 40,
498
+ "2072911879": 45,
499
+ "2072911880": 42,
500
+ "2072911881": 44,
501
+ "2072911882": 40,
502
+ "2072911883": 32,
503
+ "2072911884": 0
504
+ },
505
+ "child_targets": [
506
+ 37279
507
+ ],
508
+ "count": 12,
509
+ "formatter37914_executed": true,
510
+ "output_hex": "2d2e2f2c292c282d2a2c282000",
511
+ "template": "%-12i",
512
+ "trace_sha256": "5369c9cc834057a126f5ce4a4b90d62419f4c862cc3ef5f4f90ab3d96e534c2f"
513
+ },
514
+ {
515
+ "arguments": [
516
+ {
517
+ "word": -12
518
+ }
519
+ ],
520
+ "child_memory_bytes": {
521
+ "2072911872": 45,
522
+ "2072911873": 49,
523
+ "2072911874": 50,
524
+ "2072911875": 32,
525
+ "2072911876": 32,
526
+ "2072911877": 32,
527
+ "2072911878": 32,
528
+ "2072911879": 32,
529
+ "2072911880": 32,
530
+ "2072911881": 32,
531
+ "2072911882": 32,
532
+ "2072911883": 32,
533
+ "2072911884": 0
534
+ },
535
+ "child_targets": [
536
+ 37279
537
+ ],
538
+ "count": 12,
539
+ "formatter37914_executed": true,
540
+ "output_hex": "2d313220202020202020202000",
541
+ "template": "%-12i",
542
+ "trace_sha256": "5369c9cc834057a126f5ce4a4b90d62419f4c862cc3ef5f4f90ab3d96e534c2f"
543
+ },
544
+ {
545
+ "arguments": [
546
+ {
547
+ "word": 0
548
+ }
549
+ ],
550
+ "child_memory_bytes": {
551
+ "2072911872": 48,
552
+ "2072911873": 32,
553
+ "2072911874": 32,
554
+ "2072911875": 32,
555
+ "2072911876": 32,
556
+ "2072911877": 32,
557
+ "2072911878": 32,
558
+ "2072911879": 32,
559
+ "2072911880": 32,
560
+ "2072911881": 32,
561
+ "2072911882": 32,
562
+ "2072911883": 32,
563
+ "2072911884": 0
564
+ },
565
+ "child_targets": [
566
+ 37279
567
+ ],
568
+ "count": 12,
569
+ "formatter37914_executed": true,
570
+ "output_hex": "30202020202020202020202000",
571
+ "template": "%-12i",
572
+ "trace_sha256": "5369c9cc834057a126f5ce4a4b90d62419f4c862cc3ef5f4f90ab3d96e534c2f"
573
+ },
574
+ {
575
+ "arguments": [
576
+ {
577
+ "word": 123
578
+ }
579
+ ],
580
+ "child_memory_bytes": {
581
+ "2072911872": 49,
582
+ "2072911873": 50,
583
+ "2072911874": 51,
584
+ "2072911875": 32,
585
+ "2072911876": 32,
586
+ "2072911877": 32,
587
+ "2072911878": 32,
588
+ "2072911879": 32,
589
+ "2072911880": 32,
590
+ "2072911881": 32,
591
+ "2072911882": 32,
592
+ "2072911883": 32,
593
+ "2072911884": 0
594
+ },
595
+ "child_targets": [
596
+ 37279
597
+ ],
598
+ "count": 12,
599
+ "formatter37914_executed": true,
600
+ "output_hex": "31323320202020202020202000",
601
+ "template": "%-12i",
602
+ "trace_sha256": "5369c9cc834057a126f5ce4a4b90d62419f4c862cc3ef5f4f90ab3d96e534c2f"
603
+ },
604
+ {
605
+ "arguments": [
606
+ {
607
+ "word": 2147483647
608
+ }
609
+ ],
610
+ "child_memory_bytes": {
611
+ "2072911872": 50,
612
+ "2072911873": 49,
613
+ "2072911874": 52,
614
+ "2072911875": 55,
615
+ "2072911876": 52,
616
+ "2072911877": 56,
617
+ "2072911878": 51,
618
+ "2072911879": 54,
619
+ "2072911880": 52,
620
+ "2072911881": 55,
621
+ "2072911882": 32,
622
+ "2072911883": 32,
623
+ "2072911884": 0
624
+ },
625
+ "child_targets": [
626
+ 37279
627
+ ],
628
+ "count": 12,
629
+ "formatter37914_executed": true,
630
+ "output_hex": "32313437343833363437202000",
631
+ "template": "%-12i",
632
+ "trace_sha256": "5369c9cc834057a126f5ce4a4b90d62419f4c862cc3ef5f4f90ab3d96e534c2f"
633
+ },
634
+ {
635
+ "arguments": [
636
+ {
637
+ "word": -2147483648
638
+ }
639
+ ],
640
+ "child_memory_bytes": {
641
+ "2072911872": 45,
642
+ "2072911873": 46,
643
+ "2072911874": 47,
644
+ "2072911875": 44,
645
+ "2072911876": 41,
646
+ "2072911877": 44,
647
+ "2072911878": 40,
648
+ "2072911879": 45,
649
+ "2072911880": 42,
650
+ "2072911881": 44,
651
+ "2072911882": 40,
652
+ "2072911883": 0
653
+ },
654
+ "child_targets": [
655
+ 37279
656
+ ],
657
+ "count": 11,
658
+ "formatter37914_executed": true,
659
+ "output_hex": "2d2e2f2c292c282d2a2c2800",
660
+ "template": "%.2i",
661
+ "trace_sha256": "e701b6bdb3a944b4b510fa3805ffe7125a718c2453eee95848bcb19d821b4358"
662
+ },
663
+ {
664
+ "arguments": [
665
+ {
666
+ "word": -12
667
+ }
668
+ ],
669
+ "child_memory_bytes": {
670
+ "2072911872": 45,
671
+ "2072911873": 49,
672
+ "2072911874": 50,
673
+ "2072911875": 0
674
+ },
675
+ "child_targets": [
676
+ 37279
677
+ ],
678
+ "count": 3,
679
+ "formatter37914_executed": true,
680
+ "output_hex": "2d313200",
681
+ "template": "%.2i",
682
+ "trace_sha256": "e701b6bdb3a944b4b510fa3805ffe7125a718c2453eee95848bcb19d821b4358"
683
+ },
684
+ {
685
+ "arguments": [
686
+ {
687
+ "word": 0
688
+ }
689
+ ],
690
+ "child_memory_bytes": {
691
+ "2072911872": 48,
692
+ "2072911873": 0
693
+ },
694
+ "child_targets": [
695
+ 37279
696
+ ],
697
+ "count": 1,
698
+ "formatter37914_executed": true,
699
+ "output_hex": "3000",
700
+ "template": "%.2i",
701
+ "trace_sha256": "e701b6bdb3a944b4b510fa3805ffe7125a718c2453eee95848bcb19d821b4358"
702
+ },
703
+ {
704
+ "arguments": [
705
+ {
706
+ "word": 123
707
+ }
708
+ ],
709
+ "child_memory_bytes": {
710
+ "2072911872": 49,
711
+ "2072911873": 50,
712
+ "2072911874": 51,
713
+ "2072911875": 0
714
+ },
715
+ "child_targets": [
716
+ 37279
717
+ ],
718
+ "count": 3,
719
+ "formatter37914_executed": true,
720
+ "output_hex": "31323300",
721
+ "template": "%.2i",
722
+ "trace_sha256": "e701b6bdb3a944b4b510fa3805ffe7125a718c2453eee95848bcb19d821b4358"
723
+ },
724
+ {
725
+ "arguments": [
726
+ {
727
+ "word": 2147483647
728
+ }
729
+ ],
730
+ "child_memory_bytes": {
731
+ "2072911872": 50,
732
+ "2072911873": 49,
733
+ "2072911874": 52,
734
+ "2072911875": 55,
735
+ "2072911876": 52,
736
+ "2072911877": 56,
737
+ "2072911878": 51,
738
+ "2072911879": 54,
739
+ "2072911880": 52,
740
+ "2072911881": 55,
741
+ "2072911882": 0
742
+ },
743
+ "child_targets": [
744
+ 37279
745
+ ],
746
+ "count": 10,
747
+ "formatter37914_executed": true,
748
+ "output_hex": "3231343734383336343700",
749
+ "template": "%.2i",
750
+ "trace_sha256": "e701b6bdb3a944b4b510fa3805ffe7125a718c2453eee95848bcb19d821b4358"
751
+ },
752
+ {
753
+ "arguments": [
754
+ {
755
+ "bytes_hex": ""
756
+ }
757
+ ],
758
+ "child_memory_bytes": {
759
+ "2072911872": 0
760
+ },
761
+ "child_targets": [
762
+ 37768
763
+ ],
764
+ "count": 0,
765
+ "formatter37914_executed": true,
766
+ "output_hex": "00",
767
+ "template": "%s",
768
+ "trace_sha256": "305f06b4b751d78852bd971b7881fd704414b9641fe653948836a8740685aa1e"
769
+ },
770
+ {
771
+ "arguments": [
772
+ {
773
+ "bytes_hex": "41"
774
+ }
775
+ ],
776
+ "child_memory_bytes": {
777
+ "2072911872": 65,
778
+ "2072911873": 0
779
+ },
780
+ "child_targets": [
781
+ 37768
782
+ ],
783
+ "count": 1,
784
+ "formatter37914_executed": true,
785
+ "output_hex": "4100",
786
+ "template": "%s",
787
+ "trace_sha256": "305f06b4b751d78852bd971b7881fd704414b9641fe653948836a8740685aa1e"
788
+ },
789
+ {
790
+ "arguments": [
791
+ {
792
+ "bytes_hex": "4142434445"
793
+ }
794
+ ],
795
+ "child_memory_bytes": {
796
+ "2072911872": 65,
797
+ "2072911873": 66,
798
+ "2072911874": 67,
799
+ "2072911875": 68,
800
+ "2072911876": 69,
801
+ "2072911877": 0
802
+ },
803
+ "child_targets": [
804
+ 37768
805
+ ],
806
+ "count": 5,
807
+ "formatter37914_executed": true,
808
+ "output_hex": "414243444500",
809
+ "template": "%s",
810
+ "trace_sha256": "305f06b4b751d78852bd971b7881fd704414b9641fe653948836a8740685aa1e"
811
+ },
812
+ {
813
+ "arguments": [
814
+ {
815
+ "bytes_hex": "fffefd"
816
+ }
817
+ ],
818
+ "child_memory_bytes": {
819
+ "2072911872": 255,
820
+ "2072911873": 254,
821
+ "2072911874": 253,
822
+ "2072911875": 0
823
+ },
824
+ "child_targets": [
825
+ 37768
826
+ ],
827
+ "count": 3,
828
+ "formatter37914_executed": true,
829
+ "output_hex": "fffefd00",
830
+ "template": "%s",
831
+ "trace_sha256": "305f06b4b751d78852bd971b7881fd704414b9641fe653948836a8740685aa1e"
832
+ },
833
+ {
834
+ "arguments": [
835
+ {
836
+ "null": true
837
+ }
838
+ ],
839
+ "child_memory_bytes": {
840
+ "2072911872": 40,
841
+ "2072911873": 110,
842
+ "2072911874": 117,
843
+ "2072911875": 108,
844
+ "2072911876": 108,
845
+ "2072911877": 41,
846
+ "2072911878": 0
847
+ },
848
+ "child_targets": [
849
+ 37768
850
+ ],
851
+ "count": 6,
852
+ "formatter37914_executed": true,
853
+ "output_hex": "286e756c6c2900",
854
+ "template": "%s",
855
+ "trace_sha256": "305f06b4b751d78852bd971b7881fd704414b9641fe653948836a8740685aa1e"
856
+ },
857
+ {
858
+ "arguments": [
859
+ {
860
+ "bytes_hex": ""
861
+ }
862
+ ],
863
+ "child_memory_bytes": {
864
+ "2072911872": 32,
865
+ "2072911873": 32,
866
+ "2072911874": 32,
867
+ "2072911875": 32,
868
+ "2072911876": 32,
869
+ "2072911877": 32,
870
+ "2072911878": 32,
871
+ "2072911879": 32,
872
+ "2072911880": 32,
873
+ "2072911881": 32,
874
+ "2072911882": 32,
875
+ "2072911883": 32,
876
+ "2072911884": 0
877
+ },
878
+ "child_targets": [
879
+ 37768
880
+ ],
881
+ "count": 12,
882
+ "formatter37914_executed": true,
883
+ "output_hex": "20202020202020202020202000",
884
+ "template": "%12s",
885
+ "trace_sha256": "1bae7bd1799c3332435b597297237e3994b4f6ae441d0678939263c5e629bbdb"
886
+ },
887
+ {
888
+ "arguments": [
889
+ {
890
+ "bytes_hex": "41"
891
+ }
892
+ ],
893
+ "child_memory_bytes": {
894
+ "2072911872": 65,
895
+ "2072911873": 32,
896
+ "2072911874": 32,
897
+ "2072911875": 32,
898
+ "2072911876": 32,
899
+ "2072911877": 32,
900
+ "2072911878": 32,
901
+ "2072911879": 32,
902
+ "2072911880": 32,
903
+ "2072911881": 32,
904
+ "2072911882": 32,
905
+ "2072911883": 32,
906
+ "2072911884": 0
907
+ },
908
+ "child_targets": [
909
+ 37768
910
+ ],
911
+ "count": 12,
912
+ "formatter37914_executed": true,
913
+ "output_hex": "41202020202020202020202000",
914
+ "template": "%12s",
915
+ "trace_sha256": "1bae7bd1799c3332435b597297237e3994b4f6ae441d0678939263c5e629bbdb"
916
+ },
917
+ {
918
+ "arguments": [
919
+ {
920
+ "bytes_hex": "4142434445"
921
+ }
922
+ ],
923
+ "child_memory_bytes": {
924
+ "2072911872": 65,
925
+ "2072911873": 66,
926
+ "2072911874": 67,
927
+ "2072911875": 68,
928
+ "2072911876": 69,
929
+ "2072911877": 32,
930
+ "2072911878": 32,
931
+ "2072911879": 32,
932
+ "2072911880": 32,
933
+ "2072911881": 32,
934
+ "2072911882": 32,
935
+ "2072911883": 32,
936
+ "2072911884": 0
937
+ },
938
+ "child_targets": [
939
+ 37768
940
+ ],
941
+ "count": 12,
942
+ "formatter37914_executed": true,
943
+ "output_hex": "41424344452020202020202000",
944
+ "template": "%12s",
945
+ "trace_sha256": "1bae7bd1799c3332435b597297237e3994b4f6ae441d0678939263c5e629bbdb"
946
+ },
947
+ {
948
+ "arguments": [
949
+ {
950
+ "bytes_hex": "fffefd"
951
+ }
952
+ ],
953
+ "child_memory_bytes": {
954
+ "2072911872": 255,
955
+ "2072911873": 254,
956
+ "2072911874": 253,
957
+ "2072911875": 32,
958
+ "2072911876": 32,
959
+ "2072911877": 32,
960
+ "2072911878": 32,
961
+ "2072911879": 32,
962
+ "2072911880": 32,
963
+ "2072911881": 32,
964
+ "2072911882": 32,
965
+ "2072911883": 32,
966
+ "2072911884": 0
967
+ },
968
+ "child_targets": [
969
+ 37768
970
+ ],
971
+ "count": 12,
972
+ "formatter37914_executed": true,
973
+ "output_hex": "fffefd20202020202020202000",
974
+ "template": "%12s",
975
+ "trace_sha256": "1bae7bd1799c3332435b597297237e3994b4f6ae441d0678939263c5e629bbdb"
976
+ },
977
+ {
978
+ "arguments": [
979
+ {
980
+ "null": true
981
+ }
982
+ ],
983
+ "child_memory_bytes": {
984
+ "2072911872": 40,
985
+ "2072911873": 110,
986
+ "2072911874": 117,
987
+ "2072911875": 108,
988
+ "2072911876": 108,
989
+ "2072911877": 41,
990
+ "2072911878": 32,
991
+ "2072911879": 32,
992
+ "2072911880": 32,
993
+ "2072911881": 32,
994
+ "2072911882": 32,
995
+ "2072911883": 32,
996
+ "2072911884": 0
997
+ },
998
+ "child_targets": [
999
+ 37768
1000
+ ],
1001
+ "count": 12,
1002
+ "formatter37914_executed": true,
1003
+ "output_hex": "286e756c6c2920202020202000",
1004
+ "template": "%12s",
1005
+ "trace_sha256": "1bae7bd1799c3332435b597297237e3994b4f6ae441d0678939263c5e629bbdb"
1006
+ },
1007
+ {
1008
+ "arguments": [
1009
+ {
1010
+ "bytes_hex": ""
1011
+ }
1012
+ ],
1013
+ "child_memory_bytes": {
1014
+ "2072911872": 0
1015
+ },
1016
+ "child_targets": [
1017
+ 37768
1018
+ ],
1019
+ "count": 0,
1020
+ "formatter37914_executed": true,
1021
+ "output_hex": "00",
1022
+ "template": "%.2s",
1023
+ "trace_sha256": "37fd27cd549ea7dd140def2587646e2eda715279014d59912fa6e20dffbe2fa5"
1024
+ },
1025
+ {
1026
+ "arguments": [
1027
+ {
1028
+ "bytes_hex": "41"
1029
+ }
1030
+ ],
1031
+ "child_memory_bytes": {
1032
+ "2072911872": 65,
1033
+ "2072911873": 0
1034
+ },
1035
+ "child_targets": [
1036
+ 37768
1037
+ ],
1038
+ "count": 1,
1039
+ "formatter37914_executed": true,
1040
+ "output_hex": "4100",
1041
+ "template": "%.2s",
1042
+ "trace_sha256": "37fd27cd549ea7dd140def2587646e2eda715279014d59912fa6e20dffbe2fa5"
1043
+ },
1044
+ {
1045
+ "arguments": [
1046
+ {
1047
+ "bytes_hex": "4142434445"
1048
+ }
1049
+ ],
1050
+ "child_memory_bytes": {
1051
+ "2072911872": 65,
1052
+ "2072911873": 66,
1053
+ "2072911874": 0
1054
+ },
1055
+ "child_targets": [
1056
+ 37768
1057
+ ],
1058
+ "count": 2,
1059
+ "formatter37914_executed": true,
1060
+ "output_hex": "414200",
1061
+ "template": "%.2s",
1062
+ "trace_sha256": "37fd27cd549ea7dd140def2587646e2eda715279014d59912fa6e20dffbe2fa5"
1063
+ },
1064
+ {
1065
+ "arguments": [
1066
+ {
1067
+ "bytes_hex": "fffefd"
1068
+ }
1069
+ ],
1070
+ "child_memory_bytes": {
1071
+ "2072911872": 255,
1072
+ "2072911873": 254,
1073
+ "2072911874": 0
1074
+ },
1075
+ "child_targets": [
1076
+ 37768
1077
+ ],
1078
+ "count": 2,
1079
+ "formatter37914_executed": true,
1080
+ "output_hex": "fffe00",
1081
+ "template": "%.2s",
1082
+ "trace_sha256": "37fd27cd549ea7dd140def2587646e2eda715279014d59912fa6e20dffbe2fa5"
1083
+ },
1084
+ {
1085
+ "arguments": [
1086
+ {
1087
+ "null": true
1088
+ }
1089
+ ],
1090
+ "child_memory_bytes": {
1091
+ "2072911872": 40,
1092
+ "2072911873": 110,
1093
+ "2072911874": 117,
1094
+ "2072911875": 108,
1095
+ "2072911876": 108,
1096
+ "2072911877": 41,
1097
+ "2072911878": 0
1098
+ },
1099
+ "child_targets": [
1100
+ 37768
1101
+ ],
1102
+ "count": 6,
1103
+ "formatter37914_executed": true,
1104
+ "output_hex": "286e756c6c2900",
1105
+ "template": "%.2s",
1106
+ "trace_sha256": "37fd27cd549ea7dd140def2587646e2eda715279014d59912fa6e20dffbe2fa5"
1107
+ },
1108
+ {
1109
+ "arguments": [
1110
+ {
1111
+ "bytes_hex": ""
1112
+ }
1113
+ ],
1114
+ "child_memory_bytes": {
1115
+ "2072911872": 32,
1116
+ "2072911873": 32,
1117
+ "2072911874": 32,
1118
+ "2072911875": 32,
1119
+ "2072911876": 32,
1120
+ "2072911877": 32,
1121
+ "2072911878": 32,
1122
+ "2072911879": 32,
1123
+ "2072911880": 0
1124
+ },
1125
+ "child_targets": [
1126
+ 37768
1127
+ ],
1128
+ "count": 8,
1129
+ "formatter37914_executed": true,
1130
+ "output_hex": "202020202020202000",
1131
+ "template": "%08.2s",
1132
+ "trace_sha256": "b51b3e2cd288b2f699e3c332b3c659167179c9452916c8c7365dbd5158aea27e"
1133
+ },
1134
+ {
1135
+ "arguments": [
1136
+ {
1137
+ "bytes_hex": "41"
1138
+ }
1139
+ ],
1140
+ "child_memory_bytes": {
1141
+ "2072911872": 65,
1142
+ "2072911873": 32,
1143
+ "2072911874": 32,
1144
+ "2072911875": 32,
1145
+ "2072911876": 32,
1146
+ "2072911877": 32,
1147
+ "2072911878": 32,
1148
+ "2072911879": 32,
1149
+ "2072911880": 0
1150
+ },
1151
+ "child_targets": [
1152
+ 37768
1153
+ ],
1154
+ "count": 8,
1155
+ "formatter37914_executed": true,
1156
+ "output_hex": "412020202020202000",
1157
+ "template": "%08.2s",
1158
+ "trace_sha256": "b51b3e2cd288b2f699e3c332b3c659167179c9452916c8c7365dbd5158aea27e"
1159
+ },
1160
+ {
1161
+ "arguments": [
1162
+ {
1163
+ "bytes_hex": "4142434445"
1164
+ }
1165
+ ],
1166
+ "child_memory_bytes": {
1167
+ "2072911872": 65,
1168
+ "2072911873": 66,
1169
+ "2072911874": 32,
1170
+ "2072911875": 32,
1171
+ "2072911876": 32,
1172
+ "2072911877": 32,
1173
+ "2072911878": 32,
1174
+ "2072911879": 32,
1175
+ "2072911880": 0
1176
+ },
1177
+ "child_targets": [
1178
+ 37768
1179
+ ],
1180
+ "count": 8,
1181
+ "formatter37914_executed": true,
1182
+ "output_hex": "414220202020202000",
1183
+ "template": "%08.2s",
1184
+ "trace_sha256": "b51b3e2cd288b2f699e3c332b3c659167179c9452916c8c7365dbd5158aea27e"
1185
+ },
1186
+ {
1187
+ "arguments": [
1188
+ {
1189
+ "bytes_hex": "fffefd"
1190
+ }
1191
+ ],
1192
+ "child_memory_bytes": {
1193
+ "2072911872": 255,
1194
+ "2072911873": 254,
1195
+ "2072911874": 32,
1196
+ "2072911875": 32,
1197
+ "2072911876": 32,
1198
+ "2072911877": 32,
1199
+ "2072911878": 32,
1200
+ "2072911879": 32,
1201
+ "2072911880": 0
1202
+ },
1203
+ "child_targets": [
1204
+ 37768
1205
+ ],
1206
+ "count": 8,
1207
+ "formatter37914_executed": true,
1208
+ "output_hex": "fffe20202020202000",
1209
+ "template": "%08.2s",
1210
+ "trace_sha256": "b51b3e2cd288b2f699e3c332b3c659167179c9452916c8c7365dbd5158aea27e"
1211
+ },
1212
+ {
1213
+ "arguments": [
1214
+ {
1215
+ "null": true
1216
+ }
1217
+ ],
1218
+ "child_memory_bytes": {
1219
+ "2072911872": 40,
1220
+ "2072911873": 110,
1221
+ "2072911874": 117,
1222
+ "2072911875": 108,
1223
+ "2072911876": 108,
1224
+ "2072911877": 41,
1225
+ "2072911878": 32,
1226
+ "2072911879": 32,
1227
+ "2072911880": 0
1228
+ },
1229
+ "child_targets": [
1230
+ 37768
1231
+ ],
1232
+ "count": 8,
1233
+ "formatter37914_executed": true,
1234
+ "output_hex": "286e756c6c29202000",
1235
+ "template": "%08.2s",
1236
+ "trace_sha256": "b51b3e2cd288b2f699e3c332b3c659167179c9452916c8c7365dbd5158aea27e"
1237
+ },
1238
+ {
1239
+ "arguments": [],
1240
+ "child_memory_bytes": {
1241
+ "2072911872": 0
1242
+ },
1243
+ "child_targets": [],
1244
+ "count": 0,
1245
+ "formatter37914_executed": true,
1246
+ "output_hex": "00",
1247
+ "template": "",
1248
+ "trace_sha256": "dd418bdc7b67a8b9ee6e264ce626ca79586849b0048c96724c46c1db39ae866f"
1249
+ },
1250
+ {
1251
+ "arguments": [],
1252
+ "child_memory_bytes": {
1253
+ "2072911872": 112,
1254
+ "2072911873": 108,
1255
+ "2072911874": 97,
1256
+ "2072911875": 105,
1257
+ "2072911876": 110,
1258
+ "2072911877": 32,
1259
+ "2072911878": 108,
1260
+ "2072911879": 105,
1261
+ "2072911880": 116,
1262
+ "2072911881": 101,
1263
+ "2072911882": 114,
1264
+ "2072911883": 97,
1265
+ "2072911884": 108,
1266
+ "2072911885": 0
1267
+ },
1268
+ "child_targets": [],
1269
+ "count": 13,
1270
+ "formatter37914_executed": true,
1271
+ "output_hex": "706c61696e206c69746572616c00",
1272
+ "template": "plain literal",
1273
+ "trace_sha256": "768bfaabd1234bbb562986e3eed66b42a1b2cf4cc11f5d97c3539eb953d168cd"
1274
+ },
1275
+ {
1276
+ "arguments": [
1277
+ {
1278
+ "word": 65
1279
+ },
1280
+ {
1281
+ "word": 322
1282
+ }
1283
+ ],
1284
+ "child_memory_bytes": {
1285
+ "2072911872": 37,
1286
+ "2072911873": 58,
1287
+ "2072911874": 65,
1288
+ "2072911875": 58,
1289
+ "2072911876": 66,
1290
+ "2072911877": 0
1291
+ },
1292
+ "child_targets": [],
1293
+ "count": 5,
1294
+ "formatter37914_executed": true,
1295
+ "output_hex": "253a413a4200",
1296
+ "template": "%%:%c:%q",
1297
+ "trace_sha256": "323120b6af0496fbba9412cb8a7be93bffb88ab0a197abbe786be438766f1979"
1298
+ },
1299
+ {
1300
+ "arguments": [
1301
+ {
1302
+ "word": 0
1303
+ },
1304
+ {
1305
+ "word": 255
1306
+ }
1307
+ ],
1308
+ "child_memory_bytes": {
1309
+ "2072911872": 0,
1310
+ "2072911873": 32,
1311
+ "2072911874": 255,
1312
+ "2072911875": 0
1313
+ },
1314
+ "child_targets": [],
1315
+ "count": 3,
1316
+ "formatter37914_executed": true,
1317
+ "output_hex": "0020ff00",
1318
+ "template": "%c %c",
1319
+ "trace_sha256": "e7a314666c2989ec0165dd050adaa859a17df91ced5eab03c068ad31c7ecd67a"
1320
+ },
1321
+ {
1322
+ "arguments": [
1323
+ {
1324
+ "word": -12
1325
+ },
1326
+ {
1327
+ "bytes_hex": "412025732042"
1328
+ }
1329
+ ],
1330
+ "child_memory_bytes": {
1331
+ "2072911872": 104,
1332
+ "2072911873": 101,
1333
+ "2072911874": 108,
1334
+ "2072911875": 108,
1335
+ "2072911876": 111,
1336
+ "2072911877": 32,
1337
+ "2072911878": 45,
1338
+ "2072911879": 49,
1339
+ "2072911880": 50,
1340
+ "2072911881": 32,
1341
+ "2072911882": 47,
1342
+ "2072911883": 32,
1343
+ "2072911884": 65,
1344
+ "2072911885": 32,
1345
+ "2072911886": 37,
1346
+ "2072911887": 115,
1347
+ "2072911888": 32,
1348
+ "2072911889": 66,
1349
+ "2072911890": 0
1350
+ },
1351
+ "child_targets": [
1352
+ 37279,
1353
+ 37768
1354
+ ],
1355
+ "count": 18,
1356
+ "formatter37914_executed": true,
1357
+ "output_hex": "68656c6c6f202d3132202f2041202573204200",
1358
+ "template": "hello %i / %s",
1359
+ "trace_sha256": "e67eca84b53f63072ad81b6a8057c2d59cf4ccfff3b9df6a110a37257d1f9d53"
1360
+ }
1361
+ ],
1362
+ "sha256": "a589351dfe517470a1b121dd2164714987d9e4577bf00c6486e1540035d7a79d",
1363
+ "source": {
1364
+ "archive": "zUrT43_qvm.pk3",
1365
+ "archive_sha256": "b59bf0c5bedf11d50e0edd220da7eade96de40601e98ae14c54c819047df0796",
1366
+ "member": {
1367
+ "bytes": 983300,
1368
+ "comment_hex": "",
1369
+ "compressed_bytes": 246560,
1370
+ "compression": 8,
1371
+ "crc32": "98ea1768",
1372
+ "create_system": 0,
1373
+ "create_version": 63,
1374
+ "date_time": [
1375
+ 2018,
1376
+ 6,
1377
+ 18,
1378
+ 22,
1379
+ 11,
1380
+ 50
1381
+ ],
1382
+ "directory": false,
1383
+ "entry_index": 2,
1384
+ "external_attr": 32,
1385
+ "extra_hex": "0a0020000000000001001800d1e24e974007d40116dcbf962f1fd20116dcbf962f1fd201",
1386
+ "extract_version": 20,
1387
+ "flags": 0,
1388
+ "header_offset": 221309,
1389
+ "internal_attr": 0,
1390
+ "occurrence": 0,
1391
+ "output": "assets/extracted/zUrT43_qvm.pk3/members/000002/vm/qagame.qvm",
1392
+ "path": "vm/qagame.qvm",
1393
+ "sha256": "a589351dfe517470a1b121dd2164714987d9e4577bf00c6486e1540035d7a79d",
1394
+ "type": "member",
1395
+ "volume": 0
1396
+ }
1397
+ }
1398
+ }
docs/research/qvm-resumer-audit.json CHANGED
@@ -8529,6 +8529,46 @@
8529
  "repeated_calls_opt_in": true,
8530
  "repeated_calls_setting": "literal_true"
8531
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8532
  {
8533
  "backward_conditional_branches": [],
8534
  "calls": [],
@@ -9724,7 +9764,7 @@
9724
  }
9725
  },
9726
  "summary": {
9727
- "call_expressions": 195,
9728
  "files": 150,
9729
  "legacy_expressions": 158,
9730
  "nonliteral_ranges": 24,
 
8529
  "repeated_calls_opt_in": true,
8530
  "repeated_calls_setting": "literal_true"
8531
  },
8532
+ {
8533
+ "backward_conditional_branches": [
8534
+ 37971,
8535
+ 38109,
8536
+ 38173
8537
+ ],
8538
+ "calls": [
8539
+ {
8540
+ "dynamic_store_requires_review": false,
8541
+ "implicit_local_offset": null,
8542
+ "instruction": 38217,
8543
+ "stores_result": false,
8544
+ "target": 37279
8545
+ },
8546
+ {
8547
+ "dynamic_store_requires_review": false,
8548
+ "implicit_local_offset": null,
8549
+ "instruction": 38240,
8550
+ "stores_result": false,
8551
+ "target": 37498
8552
+ },
8553
+ {
8554
+ "dynamic_store_requires_review": false,
8555
+ "implicit_local_offset": null,
8556
+ "instruction": 38263,
8557
+ "stores_result": false,
8558
+ "target": 37768
8559
+ }
8560
+ ],
8561
+ "explicit_result_offsets": null,
8562
+ "helper": "qvm_trace_support.resume",
8563
+ "line": 35,
8564
+ "literal_range": [
8565
+ 37915,
8566
+ 38324
8567
+ ],
8568
+ "path": "scripts/qvm_formatter_support.py",
8569
+ "repeated_calls_opt_in": true,
8570
+ "repeated_calls_setting": "literal_true"
8571
+ },
8572
  {
8573
  "backward_conditional_branches": [],
8574
  "calls": [],
 
9764
  }
9765
  },
9766
  "summary": {
9767
+ "call_expressions": 196,
9768
  "files": 150,
9769
  "legacy_expressions": 158,
9770
  "nonliteral_ranges": 24,
scripts/analyze_qvm_formatter.py ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ from pathlib import Path
3
+ from qvm_research_support import source
4
+ from qvm_formatter_support import M,formatter_env,formatter
5
+ from analyze_qvm import write_json
6
+ FMT=M+0x1000;OUT=FMT+0x1000;ARGS=FMT+0x2000;TEXT=FMT+0x3000
7
+
8
+ def run(ins,raw,h,template,values):
9
+ m,b=formatter_env(raw,h);b.update({FMT+j:v for j,v in enumerate(template+b'\0')})
10
+ for j,value in enumerate(values):
11
+ if isinstance(value,bytes):
12
+ ptr=TEXT+256*j;b.update({ptr+k:v for k,v in enumerate(value+b'\0'+b'\0'*4)});m[ARGS+4*j]=ptr
13
+ else:m[ARGS+4*j]=0 if value is None else value
14
+ m,n,e=formatter(ins,m,{8:OUT,12:FMT,16:ARGS},b)
15
+ return {'template':template.decode('ascii'),'arguments':[{'bytes_hex':v.hex()} if isinstance(v,bytes) else {'null':True} if v is None else {'word':v} for v in values],'count':n,**e}
16
+
17
+ def main():
18
+ q,raw,h,ins=source();rows=[]
19
+ for spec in [b'%i',b'%d',b'%p',b'%05i',b'%-12i',b'%.2i']:
20
+ for v in [-2147483648,-12,0,123,2147483647]:rows.append(run(ins,raw,h,spec,[v]))
21
+ for spec in [b'%s',b'%12s',b'%.2s',b'%08.2s']:
22
+ for v in [b'',b'A',b'ABCDE',bytes([255,254,253]),None]:rows.append(run(ins,raw,h,spec,[v]))
23
+ for template,args in [(b'',[]),(b'plain literal',[]),(b'%%:%c:%q',[65,0x142]),(b'%c %c',[0,255]),(b'hello %i / %s',[-12,b'A %s B'])]:rows.append(run(ins,raw,h,template,args))
24
+ write_json(Path('docs/research/qvm-formatter.json'),{'source':q['source'],'sha256':q['sha256'],'probes':rows,'limits':'Actual37914 with original jump tables, actual37279/37768 and36038 children across55 finite integer/string/character/literal fixtures. Float37498 remains unrecovered here. Unknown conversion consumes a word and writes its low byte; p dispatches decimal. Unsafe trailing formats/uninitialized varargs and narrow-left-padding domains excluded.'})
25
+ if __name__=='__main__':main()
scripts/qvm_formatter_support.py CHANGED
@@ -21,3 +21,17 @@ def integer_field(ins,m,args,b):
21
  m,e=resume(ins,37280,37496,m,I,byte_inputs=b,repeated_calls=True,sync_child_words=True,coherent_memory=True,capture_byte_memory=True,limit=32768)
22
  after=int.from_bytes(read_bytes(m,e['byte_memory'],args[8],4),'little');data=read_bytes(m,e['byte_memory'],before,after-before)
23
  return m,0,{'child_memory_bytes':{before+j:v for j,v in enumerate(data)},'output_hex':data.hex(),'cursor':after,'trace_sha256':e['trace_sha256']}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  m,e=resume(ins,37280,37496,m,I,byte_inputs=b,repeated_calls=True,sync_child_words=True,coherent_memory=True,capture_byte_memory=True,limit=32768)
22
  after=int.from_bytes(read_bytes(m,e['byte_memory'],args[8],4),'little');data=read_bytes(m,e['byte_memory'],before,after-before)
23
  return m,0,{'child_memory_bytes':{before+j:v for j,v in enumerate(data)},'output_hex':data.hex(),'cursor':after,'trace_sha256':e['trace_sha256']}
24
+
25
+ M=T+0x20000
26
+
27
+ def formatter_env(raw,h):
28
+ from qvm_research_support import constants
29
+ addresses=[20652+4*c for c in range(99,106)]+[20928+4*c for c in range(37,58)]
30
+ fallback=image_bytes(raw,h,55135);storage=raw[h['data_offset']+55135:h['data_offset']+55135+len(fallback)+4]
31
+ return constants(raw,h,addresses),{55135+j:v for j,v in enumerate(storage)}
32
+
33
+ def formatter(ins,m,args,b):
34
+ m,b=frame_args(m,b,{M+100+o:v for o,v in args.items()})
35
+ m,e=resume(ins,37915,38324,m,M,handlers={37279:integer_field,37768:string_field},byte_inputs=b,repeated_calls=True,sync_child_words=True,coherent_memory=True,byte_handlers=True,capture_byte_memory=True,limit=32768)
36
+ count=e['return'];data=read_bytes(m,e['byte_memory'],args[8],count+1)
37
+ return m,count,{'child_memory_bytes':{args[8]+j:v for j,v in enumerate(data)},'output_hex':data.hex(),'trace_sha256':e['trace_sha256'],'child_targets':[c['target'] for c in e['calls']],'formatter37914_executed':True}
scripts/test_qvm_formatter.py ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json,unittest
2
+ from pathlib import Path
3
+ from test_qvm_format_integer import rendered
4
+
5
+ def oracle(template,values):
6
+ out=bytearray();i=0;j=0
7
+ while i<len(template):
8
+ if template[i]!='%':out.extend(template[i].encode());i+=1;continue
9
+ i+=1;flags=0
10
+ while template[i] in '-0':flags|=4 if template[i]=='-' else 128;i+=1
11
+ start=i
12
+ while i<len(template) and template[i].isdigit():i+=1
13
+ width=int(template[start:i] or 0);precision=-1
14
+ if template[i]=='.':
15
+ i+=1;start=i
16
+ while i<len(template) and template[i].isdigit():i+=1
17
+ precision=int(template[start:i] or 0)
18
+ spec=template[i];i+=1
19
+ if spec=='%':out.append(37);continue
20
+ v=values[j];j+=1
21
+ if spec in 'dip':out.extend(rendered(v['word'],width,flags))
22
+ elif spec=='s':
23
+ text=b'(null)' if 'null' in v else bytes.fromhex(v['bytes_hex']).split(b'\0')[0]
24
+ if 'null' not in v and precision>=0:text=text[:precision]
25
+ out.extend(text+b' '*max(0,width-len(text)))
26
+ else:out.append(v['word']&255)
27
+ return bytes(out)+b'\0'
28
+ class FormatterTests(unittest.TestCase):
29
+ def test_original_dispatch_and_independent_bytes(self):
30
+ ps=json.loads(Path('docs/research/qvm-formatter.json').read_text())['probes'];self.assertEqual(len(ps),55)
31
+ for p in ps:
32
+ expected=oracle(p['template'],p['arguments']);self.assertEqual(p['output_hex'],expected.hex(),p['template']);self.assertEqual(p['count'],len(expected)-1)
33
+ def test_actual_child_targets_and_nonstandard_unknown_conversion(self):
34
+ ps=json.loads(Path('docs/research/qvm-formatter.json').read_text())['probes'];self.assertTrue(any(37279 in p['child_targets'] for p in ps));self.assertTrue(any(37768 in p['child_targets'] for p in ps));self.assertEqual(next(p['output_hex'] for p in ps if p['template']=='%%:%c:%q'),b'%:A:B\0'.hex())
35
+ if __name__=='__main__':unittest.main()
xtask/checks.tsv CHANGED
@@ -1979,3 +1979,7 @@ report scripts/analyze_qvm_format_integer.py docs/research/qvm-format-integer.js
1979
  edge docs/research/qvm-format-integer.json scripts/test_qvm_format_integer.py
1980
  group format-integer scripts/analyze_qvm_format_integer.py
1981
  edge scripts/analyze_qvm_format_integer.py scripts/analyze_qvm_resumer_audit.py
 
 
 
 
 
1979
  edge docs/research/qvm-format-integer.json scripts/test_qvm_format_integer.py
1980
  group format-integer scripts/analyze_qvm_format_integer.py
1981
  edge scripts/analyze_qvm_format_integer.py scripts/analyze_qvm_resumer_audit.py
1982
+ report scripts/analyze_qvm_formatter.py docs/research/qvm-formatter.json
1983
+ edge docs/research/qvm-formatter.json scripts/test_qvm_formatter.py
1984
+ group formatter scripts/analyze_qvm_formatter.py
1985
+ edge scripts/analyze_qvm_formatter.py scripts/analyze_qvm_resumer_audit.py