File: unsigned6.sail

package info (click to toggle)
sail-ocaml 0.19.1%2Bdfsg5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,008 kB
  • sloc: ml: 75,941; ansic: 8,848; python: 1,342; exp: 560; sh: 474; makefile: 218; cpp: 36
file content (2577 lines) | stat: -rw-r--r-- 156,309 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
default Order dec

$include <exception_basic.sail>
$include <vector_dec.sail>

overload zero_extend = {sail_zero_extend}

function main (() : unit) -> unit = {
  assert(unsigned(zero_extend(0x2e015f0, 64)) == 48240112);
  assert(unsigned(zero_extend(0x2e015f8, 64)) == 48240120);
  assert(unsigned(zero_extend(0x2e01600, 64)) == 48240128);
  assert(unsigned(zero_extend(0x2e01608, 64)) == 48240136);
  assert(unsigned(zero_extend(0x2e01610, 64)) == 48240144);
  assert(unsigned(zero_extend(0x2e01618, 64)) == 48240152);
  assert(unsigned(zero_extend(0x2e01620, 64)) == 48240160);
  assert(unsigned(zero_extend(0x2e01628, 64)) == 48240168);
  assert(unsigned(zero_extend(0x2e01630, 64)) == 48240176);
  assert(unsigned(zero_extend(0x2e01638, 64)) == 48240184);
  assert(unsigned(zero_extend(0x2e01640, 64)) == 48240192);
  assert(unsigned(zero_extend(0x2e01648, 64)) == 48240200);
  assert(unsigned(zero_extend(0x2e01650, 64)) == 48240208);
  assert(unsigned(zero_extend(0x2e01658, 64)) == 48240216);
  assert(unsigned(zero_extend(0x2e01660, 64)) == 48240224);
  assert(unsigned(zero_extend(0x2e01668, 64)) == 48240232);
  assert(unsigned(zero_extend(0x2e01670, 64)) == 48240240);
  assert(unsigned(zero_extend(0x2e01678, 64)) == 48240248);
  assert(unsigned(zero_extend(0x2e01680, 64)) == 48240256);
  assert(unsigned(zero_extend(0x2e01688, 64)) == 48240264);
  assert(unsigned(zero_extend(0x2e01690, 64)) == 48240272);
  assert(unsigned(zero_extend(0x2e01698, 64)) == 48240280);
  assert(unsigned(zero_extend(0x2e016a0, 64)) == 48240288);
  assert(unsigned(zero_extend(0x2e016a8, 64)) == 48240296);
  assert(unsigned(zero_extend(0x2e016b0, 64)) == 48240304);
  assert(unsigned(zero_extend(0x2e016b8, 64)) == 48240312);
  assert(unsigned(zero_extend(0x2e016c0, 64)) == 48240320);
  assert(unsigned(zero_extend(0x2e016c8, 64)) == 48240328);
  assert(unsigned(zero_extend(0x2e016d0, 64)) == 48240336);
  assert(unsigned(zero_extend(0x2e016d8, 64)) == 48240344);
  assert(unsigned(zero_extend(0x2e016e0, 64)) == 48240352);
  assert(unsigned(zero_extend(0x2e016e8, 64)) == 48240360);
  assert(unsigned(zero_extend(0x2e016f0, 64)) == 48240368);
  assert(unsigned(zero_extend(0x2e016f8, 64)) == 48240376);
  assert(unsigned(zero_extend(0x2e01700, 64)) == 48240384);
  assert(unsigned(zero_extend(0x2e01708, 64)) == 48240392);
  assert(unsigned(zero_extend(0x2e01710, 64)) == 48240400);
  assert(unsigned(zero_extend(0x2e01718, 64)) == 48240408);
  assert(unsigned(zero_extend(0x2e01720, 64)) == 48240416);
  assert(unsigned(zero_extend(0x2e01728, 64)) == 48240424);
  assert(unsigned(zero_extend(0x2e01730, 64)) == 48240432);
  assert(unsigned(zero_extend(0x2e01738, 64)) == 48240440);
  assert(unsigned(zero_extend(0x2e01740, 64)) == 48240448);
  assert(unsigned(zero_extend(0x2e01748, 64)) == 48240456);
  assert(unsigned(zero_extend(0x2e01750, 64)) == 48240464);
  assert(unsigned(zero_extend(0x2e01758, 64)) == 48240472);
  assert(unsigned(zero_extend(0x2e01760, 64)) == 48240480);
  assert(unsigned(zero_extend(0x2e01768, 64)) == 48240488);
  assert(unsigned(zero_extend(0x2e01770, 64)) == 48240496);
  assert(unsigned(zero_extend(0x2e01778, 64)) == 48240504);
  assert(unsigned(zero_extend(0x2e01780, 64)) == 48240512);
  assert(unsigned(zero_extend(0x2e01788, 64)) == 48240520);
  assert(unsigned(zero_extend(0x2e01790, 64)) == 48240528);
  assert(unsigned(zero_extend(0x2e01798, 64)) == 48240536);
  assert(unsigned(zero_extend(0x2e017a0, 64)) == 48240544);
  assert(unsigned(zero_extend(0x2e017a8, 64)) == 48240552);
  assert(unsigned(zero_extend(0x2e017b0, 64)) == 48240560);
  assert(unsigned(zero_extend(0x2e017b8, 64)) == 48240568);
  assert(unsigned(zero_extend(0x2e017c0, 64)) == 48240576);
  assert(unsigned(zero_extend(0x2e017c8, 64)) == 48240584);
  assert(unsigned(zero_extend(0x2e017d0, 64)) == 48240592);
  assert(unsigned(zero_extend(0x2e017d8, 64)) == 48240600);
  assert(unsigned(zero_extend(0x2e017e0, 64)) == 48240608);
  assert(unsigned(zero_extend(0x2e017e8, 64)) == 48240616);
  assert(unsigned(zero_extend(0x2e017f0, 64)) == 48240624);
  assert(unsigned(zero_extend(0x2e017f8, 64)) == 48240632);
  assert(unsigned(zero_extend(0x2e01800, 64)) == 48240640);
  assert(unsigned(zero_extend(0x2e01808, 64)) == 48240648);
  assert(unsigned(zero_extend(0x2e01810, 64)) == 48240656);
  assert(unsigned(zero_extend(0x2e01818, 64)) == 48240664);
  assert(unsigned(zero_extend(0x2e01820, 64)) == 48240672);
  assert(unsigned(zero_extend(0x2e01828, 64)) == 48240680);
  assert(unsigned(zero_extend(0x2e01830, 64)) == 48240688);
  assert(unsigned(zero_extend(0x2e01838, 64)) == 48240696);
  assert(unsigned(zero_extend(0x2e01840, 64)) == 48240704);
  assert(unsigned(zero_extend(0x2e01848, 64)) == 48240712);
  assert(unsigned(zero_extend(0x2e01850, 64)) == 48240720);
  assert(unsigned(zero_extend(0x2e01858, 64)) == 48240728);
  assert(unsigned(zero_extend(0x2e01860, 64)) == 48240736);
  assert(unsigned(zero_extend(0x2e01868, 64)) == 48240744);
  assert(unsigned(zero_extend(0x2e01870, 64)) == 48240752);
  assert(unsigned(zero_extend(0x2e01878, 64)) == 48240760);
  assert(unsigned(zero_extend(0x2e01880, 64)) == 48240768);
  assert(unsigned(zero_extend(0x2e01888, 64)) == 48240776);
  assert(unsigned(zero_extend(0x2e01890, 64)) == 48240784);
  assert(unsigned(zero_extend(0x2e01898, 64)) == 48240792);
  assert(unsigned(zero_extend(0x2e018a0, 64)) == 48240800);
  assert(unsigned(zero_extend(0x2e018a8, 64)) == 48240808);
  assert(unsigned(zero_extend(0x2e018b0, 64)) == 48240816);
  assert(unsigned(zero_extend(0x2e018b8, 64)) == 48240824);
  assert(unsigned(zero_extend(0x2eb0000, 64)) == 48955392);
  assert(unsigned(zero_extend(0x2ec0000, 64)) == 49020928);
  assert(unsigned(zero_extend(0x2ee0000, 64)) == 49152000);
  assert(unsigned(zero_extend(0x2ef0000, 64)) == 49217536);
  assert(unsigned(zero_extend(0x2ef0040, 64)) == 49217600);
  assert(unsigned(zero_extend(0x2f, 64)) == 47);
  assert(unsigned(zero_extend(0x2f0, 64)) == 752);
  assert(unsigned(zero_extend(0x2f00000, 64)) == 49283072);
  assert(unsigned(zero_extend(0x2f00000004, 64)) == 201863462916);
  assert(unsigned(zero_extend(0x2f00008, 64)) == 49283080);
  assert(unsigned(zero_extend(0x2f00010, 64)) == 49283088);
  assert(unsigned(zero_extend(0x2f00018, 64)) == 49283096);
  assert(unsigned(zero_extend(0x2f00020, 64)) == 49283104);
  assert(unsigned(zero_extend(0x2f00028, 64)) == 49283112);
  assert(unsigned(zero_extend(0x2f00030, 64)) == 49283120);
  assert(unsigned(zero_extend(0x2f00038, 64)) == 49283128);
  assert(unsigned(zero_extend(0x2f00040, 64)) == 49283136);
  assert(unsigned(zero_extend(0x2f00048, 64)) == 49283144);
  assert(unsigned(zero_extend(0x2f00050, 64)) == 49283152);
  assert(unsigned(zero_extend(0x2f00058, 64)) == 49283160);
  assert(unsigned(zero_extend(0x2f00060, 64)) == 49283168);
  assert(unsigned(zero_extend(0x2f00068, 64)) == 49283176);
  assert(unsigned(zero_extend(0x2f00070, 64)) == 49283184);
  assert(unsigned(zero_extend(0x2f00078, 64)) == 49283192);
  assert(unsigned(zero_extend(0x2f00080, 64)) == 49283200);
  assert(unsigned(zero_extend(0x2f00088, 64)) == 49283208);
  assert(unsigned(zero_extend(0x2f00090, 64)) == 49283216);
  assert(unsigned(zero_extend(0x2f00098, 64)) == 49283224);
  assert(unsigned(zero_extend(0x2f000a0, 64)) == 49283232);
  assert(unsigned(zero_extend(0x2f000a8, 64)) == 49283240);
  assert(unsigned(zero_extend(0x2f000b0, 64)) == 49283248);
  assert(unsigned(zero_extend(0x2f000b8, 64)) == 49283256);
  assert(unsigned(zero_extend(0x2f000c0, 64)) == 49283264);
  assert(unsigned(zero_extend(0x2f000c8, 64)) == 49283272);
  assert(unsigned(zero_extend(0x2f000d0, 64)) == 49283280);
  assert(unsigned(zero_extend(0x2f000d8, 64)) == 49283288);
  assert(unsigned(zero_extend(0x2f000e0, 64)) == 49283296);
  assert(unsigned(zero_extend(0x2f000e8, 64)) == 49283304);
  assert(unsigned(zero_extend(0x2f000f0, 64)) == 49283312);
  assert(unsigned(zero_extend(0x2f000f8, 64)) == 49283320);
  assert(unsigned(zero_extend(0x2f00100, 64)) == 49283328);
  assert(unsigned(zero_extend(0x2f00108, 64)) == 49283336);
  assert(unsigned(zero_extend(0x2f00110, 64)) == 49283344);
  assert(unsigned(zero_extend(0x2f00118, 64)) == 49283352);
  assert(unsigned(zero_extend(0x2f00120, 64)) == 49283360);
  assert(unsigned(zero_extend(0x2f00128, 64)) == 49283368);
  assert(unsigned(zero_extend(0x2f00130, 64)) == 49283376);
  assert(unsigned(zero_extend(0x2f00138, 64)) == 49283384);
  assert(unsigned(zero_extend(0x2f00140, 64)) == 49283392);
  assert(unsigned(zero_extend(0x2f00148, 64)) == 49283400);
  assert(unsigned(zero_extend(0x2f00150, 64)) == 49283408);
  assert(unsigned(zero_extend(0x2f00158, 64)) == 49283416);
  assert(unsigned(zero_extend(0x2f00160, 64)) == 49283424);
  assert(unsigned(zero_extend(0x2f00168, 64)) == 49283432);
  assert(unsigned(zero_extend(0x2f00170, 64)) == 49283440);
  assert(unsigned(zero_extend(0x2f00178, 64)) == 49283448);
  assert(unsigned(zero_extend(0x2f00180, 64)) == 49283456);
  assert(unsigned(zero_extend(0x2f00188, 64)) == 49283464);
  assert(unsigned(zero_extend(0x2f00190, 64)) == 49283472);
  assert(unsigned(zero_extend(0x2f00198, 64)) == 49283480);
  assert(unsigned(zero_extend(0x2f001a0, 64)) == 49283488);
  assert(unsigned(zero_extend(0x2f001a8, 64)) == 49283496);
  assert(unsigned(zero_extend(0x2f001b0, 64)) == 49283504);
  assert(unsigned(zero_extend(0x2f001b8, 64)) == 49283512);
  assert(unsigned(zero_extend(0x2f001c0, 64)) == 49283520);
  assert(unsigned(zero_extend(0x2f001c8, 64)) == 49283528);
  assert(unsigned(zero_extend(0x2f001d0, 64)) == 49283536);
  assert(unsigned(zero_extend(0x2f001d8, 64)) == 49283544);
  assert(unsigned(zero_extend(0x2f001e0, 64)) == 49283552);
  assert(unsigned(zero_extend(0x2f001e8, 64)) == 49283560);
  assert(unsigned(zero_extend(0x2f001f0, 64)) == 49283568);
  assert(unsigned(zero_extend(0x2f001f8, 64)) == 49283576);
  assert(unsigned(zero_extend(0x2f00200, 64)) == 49283584);
  assert(unsigned(zero_extend(0x2f00208, 64)) == 49283592);
  assert(unsigned(zero_extend(0x2f00210, 64)) == 49283600);
  assert(unsigned(zero_extend(0x2f00218, 64)) == 49283608);
  assert(unsigned(zero_extend(0x2f00220, 64)) == 49283616);
  assert(unsigned(zero_extend(0x2f00228, 64)) == 49283624);
  assert(unsigned(zero_extend(0x2f00230, 64)) == 49283632);
  assert(unsigned(zero_extend(0x2f00238, 64)) == 49283640);
  assert(unsigned(zero_extend(0x2f00240, 64)) == 49283648);
  assert(unsigned(zero_extend(0x2f00248, 64)) == 49283656);
  assert(unsigned(zero_extend(0x2f00250, 64)) == 49283664);
  assert(unsigned(zero_extend(0x2f00258, 64)) == 49283672);
  assert(unsigned(zero_extend(0x2f00260, 64)) == 49283680);
  assert(unsigned(zero_extend(0x2f00268, 64)) == 49283688);
  assert(unsigned(zero_extend(0x2f00270, 64)) == 49283696);
  assert(unsigned(zero_extend(0x2f00278, 64)) == 49283704);
  assert(unsigned(zero_extend(0x2f00280, 64)) == 49283712);
  assert(unsigned(zero_extend(0x2f00288, 64)) == 49283720);
  assert(unsigned(zero_extend(0x2f00290, 64)) == 49283728);
  assert(unsigned(zero_extend(0x2f00298, 64)) == 49283736);
  assert(unsigned(zero_extend(0x2f002a0, 64)) == 49283744);
  assert(unsigned(zero_extend(0x2f002a8, 64)) == 49283752);
  assert(unsigned(zero_extend(0x2f002b0, 64)) == 49283760);
  assert(unsigned(zero_extend(0x2f002b8, 64)) == 49283768);
  assert(unsigned(zero_extend(0x2f002c0, 64)) == 49283776);
  assert(unsigned(zero_extend(0x2f002c8, 64)) == 49283784);
  assert(unsigned(zero_extend(0x2f002d0, 64)) == 49283792);
  assert(unsigned(zero_extend(0x2f002d8, 64)) == 49283800);
  assert(unsigned(zero_extend(0x2f002e0, 64)) == 49283808);
  assert(unsigned(zero_extend(0x2f002e8, 64)) == 49283816);
  assert(unsigned(zero_extend(0x2f002f0, 64)) == 49283824);
  assert(unsigned(zero_extend(0x2f002f8, 64)) == 49283832);
  assert(unsigned(zero_extend(0x2f00300, 64)) == 49283840);
  assert(unsigned(zero_extend(0x2f00308, 64)) == 49283848);
  assert(unsigned(zero_extend(0x2f00310, 64)) == 49283856);
  assert(unsigned(zero_extend(0x2f00318, 64)) == 49283864);
  assert(unsigned(zero_extend(0x2f00320, 64)) == 49283872);
  assert(unsigned(zero_extend(0x2f00328, 64)) == 49283880);
  assert(unsigned(zero_extend(0x2f00330, 64)) == 49283888);
  assert(unsigned(zero_extend(0x2f00338, 64)) == 49283896);
  assert(unsigned(zero_extend(0x2f00340, 64)) == 49283904);
  assert(unsigned(zero_extend(0x2f00348, 64)) == 49283912);
  assert(unsigned(zero_extend(0x2f00350, 64)) == 49283920);
  assert(unsigned(zero_extend(0x2f00358, 64)) == 49283928);
  assert(unsigned(zero_extend(0x2f00360, 64)) == 49283936);
  assert(unsigned(zero_extend(0x2f00368, 64)) == 49283944);
  assert(unsigned(zero_extend(0x2f00370, 64)) == 49283952);
  assert(unsigned(zero_extend(0x2f00378, 64)) == 49283960);
  assert(unsigned(zero_extend(0x2f00380, 64)) == 49283968);
  assert(unsigned(zero_extend(0x2f00388, 64)) == 49283976);
  assert(unsigned(zero_extend(0x2f00390, 64)) == 49283984);
  assert(unsigned(zero_extend(0x2f00398, 64)) == 49283992);
  assert(unsigned(zero_extend(0x2f003a0, 64)) == 49284000);
  assert(unsigned(zero_extend(0x2f003a8, 64)) == 49284008);
  assert(unsigned(zero_extend(0x2f003b0, 64)) == 49284016);
  assert(unsigned(zero_extend(0x2f003b8, 64)) == 49284024);
  assert(unsigned(zero_extend(0x2f003c0, 64)) == 49284032);
  assert(unsigned(zero_extend(0x2f003c8, 64)) == 49284040);
  assert(unsigned(zero_extend(0x2f003d0, 64)) == 49284048);
  assert(unsigned(zero_extend(0x2f003d8, 64)) == 49284056);
  assert(unsigned(zero_extend(0x2f003e0, 64)) == 49284064);
  assert(unsigned(zero_extend(0x2f003e8, 64)) == 49284072);
  assert(unsigned(zero_extend(0x2f003f0, 64)) == 49284080);
  assert(unsigned(zero_extend(0x2f003f8, 64)) == 49284088);
  assert(unsigned(zero_extend(0x2f00400, 64)) == 49284096);
  assert(unsigned(zero_extend(0x2f00408, 64)) == 49284104);
  assert(unsigned(zero_extend(0x2f00410, 64)) == 49284112);
  assert(unsigned(zero_extend(0x2f00418, 64)) == 49284120);
  assert(unsigned(zero_extend(0x2f00420, 64)) == 49284128);
  assert(unsigned(zero_extend(0x2f00428, 64)) == 49284136);
  assert(unsigned(zero_extend(0x2f00430, 64)) == 49284144);
  assert(unsigned(zero_extend(0x2f00438, 64)) == 49284152);
  assert(unsigned(zero_extend(0x2f00440, 64)) == 49284160);
  assert(unsigned(zero_extend(0x2f00448, 64)) == 49284168);
  assert(unsigned(zero_extend(0x2f00450, 64)) == 49284176);
  assert(unsigned(zero_extend(0x2f00458, 64)) == 49284184);
  assert(unsigned(zero_extend(0x2f00460, 64)) == 49284192);
  assert(unsigned(zero_extend(0x2f00468, 64)) == 49284200);
  assert(unsigned(zero_extend(0x2f00470, 64)) == 49284208);
  assert(unsigned(zero_extend(0x2f00478, 64)) == 49284216);
  assert(unsigned(zero_extend(0x2f00480, 64)) == 49284224);
  assert(unsigned(zero_extend(0x2f00488, 64)) == 49284232);
  assert(unsigned(zero_extend(0x2f00490, 64)) == 49284240);
  assert(unsigned(zero_extend(0x2f00498, 64)) == 49284248);
  assert(unsigned(zero_extend(0x2f004a0, 64)) == 49284256);
  assert(unsigned(zero_extend(0x2f004a8, 64)) == 49284264);
  assert(unsigned(zero_extend(0x2f004b0, 64)) == 49284272);
  assert(unsigned(zero_extend(0x2f004b8, 64)) == 49284280);
  assert(unsigned(zero_extend(0x2f004c0, 64)) == 49284288);
  assert(unsigned(zero_extend(0x2f004c8, 64)) == 49284296);
  assert(unsigned(zero_extend(0x2f004d0, 64)) == 49284304);
  assert(unsigned(zero_extend(0x2f004d8, 64)) == 49284312);
  assert(unsigned(zero_extend(0x2f004e0, 64)) == 49284320);
  assert(unsigned(zero_extend(0x2f004e8, 64)) == 49284328);
  assert(unsigned(zero_extend(0x2f004f0, 64)) == 49284336);
  assert(unsigned(zero_extend(0x2f004f8, 64)) == 49284344);
  assert(unsigned(zero_extend(0x2f00500, 64)) == 49284352);
  assert(unsigned(zero_extend(0x2f00508, 64)) == 49284360);
  assert(unsigned(zero_extend(0x2f00510, 64)) == 49284368);
  assert(unsigned(zero_extend(0x2f00518, 64)) == 49284376);
  assert(unsigned(zero_extend(0x2f00520, 64)) == 49284384);
  assert(unsigned(zero_extend(0x2f00528, 64)) == 49284392);
  assert(unsigned(zero_extend(0x2f00530, 64)) == 49284400);
  assert(unsigned(zero_extend(0x2f00538, 64)) == 49284408);
  assert(unsigned(zero_extend(0x2f00540, 64)) == 49284416);
  assert(unsigned(zero_extend(0x2f00548, 64)) == 49284424);
  assert(unsigned(zero_extend(0x2f00550, 64)) == 49284432);
  assert(unsigned(zero_extend(0x2f00558, 64)) == 49284440);
  assert(unsigned(zero_extend(0x2f00560, 64)) == 49284448);
  assert(unsigned(zero_extend(0x2f00568, 64)) == 49284456);
  assert(unsigned(zero_extend(0x2f00570, 64)) == 49284464);
  assert(unsigned(zero_extend(0x2f00578, 64)) == 49284472);
  assert(unsigned(zero_extend(0x2f00580, 64)) == 49284480);
  assert(unsigned(zero_extend(0x2f00588, 64)) == 49284488);
  assert(unsigned(zero_extend(0x2f00590, 64)) == 49284496);
  assert(unsigned(zero_extend(0x2f00598, 64)) == 49284504);
  assert(unsigned(zero_extend(0x2f005a0, 64)) == 49284512);
  assert(unsigned(zero_extend(0x2f005a8, 64)) == 49284520);
  assert(unsigned(zero_extend(0x2f005b0, 64)) == 49284528);
  assert(unsigned(zero_extend(0x2f005b8, 64)) == 49284536);
  assert(unsigned(zero_extend(0x2f005c0, 64)) == 49284544);
  assert(unsigned(zero_extend(0x2f005c8, 64)) == 49284552);
  assert(unsigned(zero_extend(0x2f005d0, 64)) == 49284560);
  assert(unsigned(zero_extend(0x2f005d8, 64)) == 49284568);
  assert(unsigned(zero_extend(0x2f005e0, 64)) == 49284576);
  assert(unsigned(zero_extend(0x2f005e8, 64)) == 49284584);
  assert(unsigned(zero_extend(0x2f005f0, 64)) == 49284592);
  assert(unsigned(zero_extend(0x2f005f8, 64)) == 49284600);
  assert(unsigned(zero_extend(0x2f00600, 64)) == 49284608);
  assert(unsigned(zero_extend(0x2f00608, 64)) == 49284616);
  assert(unsigned(zero_extend(0x2f00610, 64)) == 49284624);
  assert(unsigned(zero_extend(0x2f00618, 64)) == 49284632);
  assert(unsigned(zero_extend(0x2f00620, 64)) == 49284640);
  assert(unsigned(zero_extend(0x2f00628, 64)) == 49284648);
  assert(unsigned(zero_extend(0x2f00630, 64)) == 49284656);
  assert(unsigned(zero_extend(0x2f00638, 64)) == 49284664);
  assert(unsigned(zero_extend(0x2f00640, 64)) == 49284672);
  assert(unsigned(zero_extend(0x2f00648, 64)) == 49284680);
  assert(unsigned(zero_extend(0x2f00650, 64)) == 49284688);
  assert(unsigned(zero_extend(0x2f00658, 64)) == 49284696);
  assert(unsigned(zero_extend(0x2f00660, 64)) == 49284704);
  assert(unsigned(zero_extend(0x2f00668, 64)) == 49284712);
  assert(unsigned(zero_extend(0x2f00670, 64)) == 49284720);
  assert(unsigned(zero_extend(0x2f00678, 64)) == 49284728);
  assert(unsigned(zero_extend(0x2f00680, 64)) == 49284736);
  assert(unsigned(zero_extend(0x2f00688, 64)) == 49284744);
  assert(unsigned(zero_extend(0x2f00690, 64)) == 49284752);
  assert(unsigned(zero_extend(0x2f00698, 64)) == 49284760);
  assert(unsigned(zero_extend(0x2f006a0, 64)) == 49284768);
  assert(unsigned(zero_extend(0x2f006a8, 64)) == 49284776);
  assert(unsigned(zero_extend(0x2f006b0, 64)) == 49284784);
  assert(unsigned(zero_extend(0x2f006b8, 64)) == 49284792);
  assert(unsigned(zero_extend(0x2f006c0, 64)) == 49284800);
  assert(unsigned(zero_extend(0x2f006c8, 64)) == 49284808);
  assert(unsigned(zero_extend(0x2f006d0, 64)) == 49284816);
  assert(unsigned(zero_extend(0x2f006d8, 64)) == 49284824);
  assert(unsigned(zero_extend(0x2f006e0, 64)) == 49284832);
  assert(unsigned(zero_extend(0x2f006e8, 64)) == 49284840);
  assert(unsigned(zero_extend(0x2f006f0, 64)) == 49284848);
  assert(unsigned(zero_extend(0x2f006f8, 64)) == 49284856);
  assert(unsigned(zero_extend(0x2f00700, 64)) == 49284864);
  assert(unsigned(zero_extend(0x2f00708, 64)) == 49284872);
  assert(unsigned(zero_extend(0x2f00710, 64)) == 49284880);
  assert(unsigned(zero_extend(0x2f00718, 64)) == 49284888);
  assert(unsigned(zero_extend(0x2f00720, 64)) == 49284896);
  assert(unsigned(zero_extend(0x2f00728, 64)) == 49284904);
  assert(unsigned(zero_extend(0x2f00730, 64)) == 49284912);
  assert(unsigned(zero_extend(0x2f00738, 64)) == 49284920);
  assert(unsigned(zero_extend(0x2f00740, 64)) == 49284928);
  assert(unsigned(zero_extend(0x2f00748, 64)) == 49284936);
  assert(unsigned(zero_extend(0x2f00750, 64)) == 49284944);
  assert(unsigned(zero_extend(0x2f00758, 64)) == 49284952);
  assert(unsigned(zero_extend(0x2f00760, 64)) == 49284960);
  assert(unsigned(zero_extend(0x2f00768, 64)) == 49284968);
  assert(unsigned(zero_extend(0x2f00770, 64)) == 49284976);
  assert(unsigned(zero_extend(0x2f00778, 64)) == 49284984);
  assert(unsigned(zero_extend(0x2f00780, 64)) == 49284992);
  assert(unsigned(zero_extend(0x2f00788, 64)) == 49285000);
  assert(unsigned(zero_extend(0x2f00790, 64)) == 49285008);
  assert(unsigned(zero_extend(0x2f00798, 64)) == 49285016);
  assert(unsigned(zero_extend(0x2f007a0, 64)) == 49285024);
  assert(unsigned(zero_extend(0x2f007a8, 64)) == 49285032);
  assert(unsigned(zero_extend(0x2f007b0, 64)) == 49285040);
  assert(unsigned(zero_extend(0x2f007b8, 64)) == 49285048);
  assert(unsigned(zero_extend(0x2f007c0, 64)) == 49285056);
  assert(unsigned(zero_extend(0x2f007c8, 64)) == 49285064);
  assert(unsigned(zero_extend(0x2f007d0, 64)) == 49285072);
  assert(unsigned(zero_extend(0x2f007d8, 64)) == 49285080);
  assert(unsigned(zero_extend(0x2f007e0, 64)) == 49285088);
  assert(unsigned(zero_extend(0x2f007e8, 64)) == 49285096);
  assert(unsigned(zero_extend(0x2f007f0, 64)) == 49285104);
  assert(unsigned(zero_extend(0x2f007f8, 64)) == 49285112);
  assert(unsigned(zero_extend(0x2f00800, 64)) == 49285120);
  assert(unsigned(zero_extend(0x2f00808, 64)) == 49285128);
  assert(unsigned(zero_extend(0x2f00810, 64)) == 49285136);
  assert(unsigned(zero_extend(0x2f00818, 64)) == 49285144);
  assert(unsigned(zero_extend(0x2f00820, 64)) == 49285152);
  assert(unsigned(zero_extend(0x2f00828, 64)) == 49285160);
  assert(unsigned(zero_extend(0x2f00830, 64)) == 49285168);
  assert(unsigned(zero_extend(0x2f00838, 64)) == 49285176);
  assert(unsigned(zero_extend(0x2f00840, 64)) == 49285184);
  assert(unsigned(zero_extend(0x2f00848, 64)) == 49285192);
  assert(unsigned(zero_extend(0x2f00850, 64)) == 49285200);
  assert(unsigned(zero_extend(0x2f00858, 64)) == 49285208);
  assert(unsigned(zero_extend(0x2f00860, 64)) == 49285216);
  assert(unsigned(zero_extend(0x2f00868, 64)) == 49285224);
  assert(unsigned(zero_extend(0x2f00870, 64)) == 49285232);
  assert(unsigned(zero_extend(0x2f00878, 64)) == 49285240);
  assert(unsigned(zero_extend(0x2f00880, 64)) == 49285248);
  assert(unsigned(zero_extend(0x2f00888, 64)) == 49285256);
  assert(unsigned(zero_extend(0x2f00890, 64)) == 49285264);
  assert(unsigned(zero_extend(0x2f00898, 64)) == 49285272);
  assert(unsigned(zero_extend(0x2f008a0, 64)) == 49285280);
  assert(unsigned(zero_extend(0x2f008a8, 64)) == 49285288);
  assert(unsigned(zero_extend(0x2f008b0, 64)) == 49285296);
  assert(unsigned(zero_extend(0x2f008b8, 64)) == 49285304);
  assert(unsigned(zero_extend(0x2f008c0, 64)) == 49285312);
  assert(unsigned(zero_extend(0x2f008c8, 64)) == 49285320);
  assert(unsigned(zero_extend(0x2f008d0, 64)) == 49285328);
  assert(unsigned(zero_extend(0x2f008d8, 64)) == 49285336);
  assert(unsigned(zero_extend(0x2f008e0, 64)) == 49285344);
  assert(unsigned(zero_extend(0x2f008e8, 64)) == 49285352);
  assert(unsigned(zero_extend(0x2f008f0, 64)) == 49285360);
  assert(unsigned(zero_extend(0x2f008f8, 64)) == 49285368);
  assert(unsigned(zero_extend(0x2f00900, 64)) == 49285376);
  assert(unsigned(zero_extend(0x2f00908, 64)) == 49285384);
  assert(unsigned(zero_extend(0x2f00910, 64)) == 49285392);
  assert(unsigned(zero_extend(0x2f00918, 64)) == 49285400);
  assert(unsigned(zero_extend(0x2f00920, 64)) == 49285408);
  assert(unsigned(zero_extend(0x2f00928, 64)) == 49285416);
  assert(unsigned(zero_extend(0x2f00930, 64)) == 49285424);
  assert(unsigned(zero_extend(0x2f00938, 64)) == 49285432);
  assert(unsigned(zero_extend(0x2f00940, 64)) == 49285440);
  assert(unsigned(zero_extend(0x2f00948, 64)) == 49285448);
  assert(unsigned(zero_extend(0x2f00950, 64)) == 49285456);
  assert(unsigned(zero_extend(0x2f00958, 64)) == 49285464);
  assert(unsigned(zero_extend(0x2f00960, 64)) == 49285472);
  assert(unsigned(zero_extend(0x2f00968, 64)) == 49285480);
  assert(unsigned(zero_extend(0x2f00970, 64)) == 49285488);
  assert(unsigned(zero_extend(0x2f00978, 64)) == 49285496);
  assert(unsigned(zero_extend(0x2f00980, 64)) == 49285504);
  assert(unsigned(zero_extend(0x2f00988, 64)) == 49285512);
  assert(unsigned(zero_extend(0x2f00990, 64)) == 49285520);
  assert(unsigned(zero_extend(0x2f00998, 64)) == 49285528);
  assert(unsigned(zero_extend(0x2f009a0, 64)) == 49285536);
  assert(unsigned(zero_extend(0x2f009a8, 64)) == 49285544);
  assert(unsigned(zero_extend(0x2f009b0, 64)) == 49285552);
  assert(unsigned(zero_extend(0x2f009b8, 64)) == 49285560);
  assert(unsigned(zero_extend(0x2f009c0, 64)) == 49285568);
  assert(unsigned(zero_extend(0x2f009c8, 64)) == 49285576);
  assert(unsigned(zero_extend(0x2f009d0, 64)) == 49285584);
  assert(unsigned(zero_extend(0x2f009d8, 64)) == 49285592);
  assert(unsigned(zero_extend(0x2f009e0, 64)) == 49285600);
  assert(unsigned(zero_extend(0x2f009e8, 64)) == 49285608);
  assert(unsigned(zero_extend(0x2f009f0, 64)) == 49285616);
  assert(unsigned(zero_extend(0x2f009f8, 64)) == 49285624);
  assert(unsigned(zero_extend(0x2f00a00, 64)) == 49285632);
  assert(unsigned(zero_extend(0x2f00a08, 64)) == 49285640);
  assert(unsigned(zero_extend(0x2f00a10, 64)) == 49285648);
  assert(unsigned(zero_extend(0x2f00a18, 64)) == 49285656);
  assert(unsigned(zero_extend(0x2f00a20, 64)) == 49285664);
  assert(unsigned(zero_extend(0x2f00a28, 64)) == 49285672);
  assert(unsigned(zero_extend(0x2f00a30, 64)) == 49285680);
  assert(unsigned(zero_extend(0x2f00a38, 64)) == 49285688);
  assert(unsigned(zero_extend(0x2f00a40, 64)) == 49285696);
  assert(unsigned(zero_extend(0x2f00a48, 64)) == 49285704);
  assert(unsigned(zero_extend(0x2f00a50, 64)) == 49285712);
  assert(unsigned(zero_extend(0x2f00a58, 64)) == 49285720);
  assert(unsigned(zero_extend(0x2f00a60, 64)) == 49285728);
  assert(unsigned(zero_extend(0x2f00a68, 64)) == 49285736);
  assert(unsigned(zero_extend(0x2f00a70, 64)) == 49285744);
  assert(unsigned(zero_extend(0x2f00a78, 64)) == 49285752);
  assert(unsigned(zero_extend(0x2f00a80, 64)) == 49285760);
  assert(unsigned(zero_extend(0x2f00a88, 64)) == 49285768);
  assert(unsigned(zero_extend(0x2f00a90, 64)) == 49285776);
  assert(unsigned(zero_extend(0x2f00a98, 64)) == 49285784);
  assert(unsigned(zero_extend(0x2f00aa0, 64)) == 49285792);
  assert(unsigned(zero_extend(0x2f00aa8, 64)) == 49285800);
  assert(unsigned(zero_extend(0x2f00ab0, 64)) == 49285808);
  assert(unsigned(zero_extend(0x2f00ab8, 64)) == 49285816);
  assert(unsigned(zero_extend(0x2f00ac0, 64)) == 49285824);
  assert(unsigned(zero_extend(0x2f00ac8, 64)) == 49285832);
  assert(unsigned(zero_extend(0x2f00ad0, 64)) == 49285840);
  assert(unsigned(zero_extend(0x2f00ad8, 64)) == 49285848);
  assert(unsigned(zero_extend(0x2f00ae0, 64)) == 49285856);
  assert(unsigned(zero_extend(0x2f00ae8, 64)) == 49285864);
  assert(unsigned(zero_extend(0x2f00af0, 64)) == 49285872);
  assert(unsigned(zero_extend(0x2f00af8, 64)) == 49285880);
  assert(unsigned(zero_extend(0x2f00b00, 64)) == 49285888);
  assert(unsigned(zero_extend(0x2f00b08, 64)) == 49285896);
  assert(unsigned(zero_extend(0x2f00b10, 64)) == 49285904);
  assert(unsigned(zero_extend(0x2f00b18, 64)) == 49285912);
  assert(unsigned(zero_extend(0x2f00b20, 64)) == 49285920);
  assert(unsigned(zero_extend(0x2f00b28, 64)) == 49285928);
  assert(unsigned(zero_extend(0x2f00b30, 64)) == 49285936);
  assert(unsigned(zero_extend(0x2f00b38, 64)) == 49285944);
  assert(unsigned(zero_extend(0x2f00b40, 64)) == 49285952);
  assert(unsigned(zero_extend(0x2f00b48, 64)) == 49285960);
  assert(unsigned(zero_extend(0x2f00b50, 64)) == 49285968);
  assert(unsigned(zero_extend(0x2f00b58, 64)) == 49285976);
  assert(unsigned(zero_extend(0x2f00b60, 64)) == 49285984);
  assert(unsigned(zero_extend(0x2f00b68, 64)) == 49285992);
  assert(unsigned(zero_extend(0x2f00b70, 64)) == 49286000);
  assert(unsigned(zero_extend(0x2f00b78, 64)) == 49286008);
  assert(unsigned(zero_extend(0x2f00b80, 64)) == 49286016);
  assert(unsigned(zero_extend(0x2f00b88, 64)) == 49286024);
  assert(unsigned(zero_extend(0x2f00b90, 64)) == 49286032);
  assert(unsigned(zero_extend(0x2f00b98, 64)) == 49286040);
  assert(unsigned(zero_extend(0x2f00ba0, 64)) == 49286048);
  assert(unsigned(zero_extend(0x2f00ba8, 64)) == 49286056);
  assert(unsigned(zero_extend(0x2f00bb0, 64)) == 49286064);
  assert(unsigned(zero_extend(0x2f00bb8, 64)) == 49286072);
  assert(unsigned(zero_extend(0x2f00bc0, 64)) == 49286080);
  assert(unsigned(zero_extend(0x2f00bc8, 64)) == 49286088);
  assert(unsigned(zero_extend(0x2f00bd0, 64)) == 49286096);
  assert(unsigned(zero_extend(0x2f00bd8, 64)) == 49286104);
  assert(unsigned(zero_extend(0x2f00be0, 64)) == 49286112);
  assert(unsigned(zero_extend(0x2f00be8, 64)) == 49286120);
  assert(unsigned(zero_extend(0x2f00bf0, 64)) == 49286128);
  assert(unsigned(zero_extend(0x2f00bf8, 64)) == 49286136);
  assert(unsigned(zero_extend(0x2f00c00, 64)) == 49286144);
  assert(unsigned(zero_extend(0x2f00c08, 64)) == 49286152);
  assert(unsigned(zero_extend(0x2f00c10, 64)) == 49286160);
  assert(unsigned(zero_extend(0x2f00c18, 64)) == 49286168);
  assert(unsigned(zero_extend(0x2f00c20, 64)) == 49286176);
  assert(unsigned(zero_extend(0x2f00c28, 64)) == 49286184);
  assert(unsigned(zero_extend(0x2f00c30, 64)) == 49286192);
  assert(unsigned(zero_extend(0x2f00c38, 64)) == 49286200);
  assert(unsigned(zero_extend(0x2f00c40, 64)) == 49286208);
  assert(unsigned(zero_extend(0x2f00c48, 64)) == 49286216);
  assert(unsigned(zero_extend(0x2f00c50, 64)) == 49286224);
  assert(unsigned(zero_extend(0x2f00c58, 64)) == 49286232);
  assert(unsigned(zero_extend(0x2f00c60, 64)) == 49286240);
  assert(unsigned(zero_extend(0x2f00c68, 64)) == 49286248);
  assert(unsigned(zero_extend(0x2f00c70, 64)) == 49286256);
  assert(unsigned(zero_extend(0x2f00c78, 64)) == 49286264);
  assert(unsigned(zero_extend(0x2f00c80, 64)) == 49286272);
  assert(unsigned(zero_extend(0x2f00c88, 64)) == 49286280);
  assert(unsigned(zero_extend(0x2f00c90, 64)) == 49286288);
  assert(unsigned(zero_extend(0x2f00c98, 64)) == 49286296);
  assert(unsigned(zero_extend(0x2f00ca0, 64)) == 49286304);
  assert(unsigned(zero_extend(0x2f00ca8, 64)) == 49286312);
  assert(unsigned(zero_extend(0x2f00cb0, 64)) == 49286320);
  assert(unsigned(zero_extend(0x2f00cb8, 64)) == 49286328);
  assert(unsigned(zero_extend(0x2f00cc0, 64)) == 49286336);
  assert(unsigned(zero_extend(0x2f00cc8, 64)) == 49286344);
  assert(unsigned(zero_extend(0x2f00cd0, 64)) == 49286352);
  assert(unsigned(zero_extend(0x2f00cd8, 64)) == 49286360);
  assert(unsigned(zero_extend(0x2f00ce0, 64)) == 49286368);
  assert(unsigned(zero_extend(0x2f00ce8, 64)) == 49286376);
  assert(unsigned(zero_extend(0x2f00cf0, 64)) == 49286384);
  assert(unsigned(zero_extend(0x2f00cf8, 64)) == 49286392);
  assert(unsigned(zero_extend(0x2f00d00, 64)) == 49286400);
  assert(unsigned(zero_extend(0x2f00d08, 64)) == 49286408);
  assert(unsigned(zero_extend(0x2f00d10, 64)) == 49286416);
  assert(unsigned(zero_extend(0x2f00d18, 64)) == 49286424);
  assert(unsigned(zero_extend(0x2f00d20, 64)) == 49286432);
  assert(unsigned(zero_extend(0x2f00d28, 64)) == 49286440);
  assert(unsigned(zero_extend(0x2f00d30, 64)) == 49286448);
  assert(unsigned(zero_extend(0x2f00d38, 64)) == 49286456);
  assert(unsigned(zero_extend(0x2f00d40, 64)) == 49286464);
  assert(unsigned(zero_extend(0x2f00d48, 64)) == 49286472);
  assert(unsigned(zero_extend(0x2f00d50, 64)) == 49286480);
  assert(unsigned(zero_extend(0x2f00d58, 64)) == 49286488);
  assert(unsigned(zero_extend(0x2f00d60, 64)) == 49286496);
  assert(unsigned(zero_extend(0x2f00d68, 64)) == 49286504);
  assert(unsigned(zero_extend(0x2f00d70, 64)) == 49286512);
  assert(unsigned(zero_extend(0x2f00d78, 64)) == 49286520);
  assert(unsigned(zero_extend(0x2f00d80, 64)) == 49286528);
  assert(unsigned(zero_extend(0x2f00d88, 64)) == 49286536);
  assert(unsigned(zero_extend(0x2f00d90, 64)) == 49286544);
  assert(unsigned(zero_extend(0x2f00d98, 64)) == 49286552);
  assert(unsigned(zero_extend(0x2f00da0, 64)) == 49286560);
  assert(unsigned(zero_extend(0x2f00da8, 64)) == 49286568);
  assert(unsigned(zero_extend(0x2f00db0, 64)) == 49286576);
  assert(unsigned(zero_extend(0x2f00db8, 64)) == 49286584);
  assert(unsigned(zero_extend(0x2f00dc0, 64)) == 49286592);
  assert(unsigned(zero_extend(0x2f00dc8, 64)) == 49286600);
  assert(unsigned(zero_extend(0x2f00dd0, 64)) == 49286608);
  assert(unsigned(zero_extend(0x2f00dd8, 64)) == 49286616);
  assert(unsigned(zero_extend(0x2f00de0, 64)) == 49286624);
  assert(unsigned(zero_extend(0x2f00de8, 64)) == 49286632);
  assert(unsigned(zero_extend(0x2f00df0, 64)) == 49286640);
  assert(unsigned(zero_extend(0x2f10000, 64)) == 49348608);
  assert(unsigned(zero_extend(0x2f10800, 64)) == 49350656);
  assert(unsigned(zero_extend(0x2f40000, 64)) == 49545216);
  assert(unsigned(zero_extend(0x2f50000, 64)) == 49610752);
  assert(unsigned(zero_extend(0x2f50040, 64)) == 49610816);
  assert(unsigned(zero_extend(0x2f60000, 64)) == 49676288);
  assert(unsigned(zero_extend(0x2f60200, 64)) == 49676800);
  assert(unsigned(zero_extend(0x2f70000, 64)) == 49741824);
  assert(unsigned(zero_extend(0x2f70800, 64)) == 49743872);
  assert(unsigned(zero_extend(0x3, 64)) == 3);
  assert(unsigned(zero_extend(0x30, 64)) == 48);
  assert(unsigned(zero_extend(0x3000, 64)) == 12288);
  assert(unsigned(zero_extend(0x30000, 64)) == 196608);
  assert(unsigned(zero_extend(0x300000, 64)) == 3145728);
  assert(unsigned(zero_extend(0x300001, 64)) == 3145729);
  assert(unsigned(zero_extend(0x3000014, 64)) == 50331668);
  assert(unsigned(zero_extend(0x3000018, 64)) == 50331672);
  assert(unsigned(zero_extend(0x300001c, 64)) == 50331676);
  assert(unsigned(zero_extend(0x300002, 64)) == 3145730);
  assert(unsigned(zero_extend(0x3000020, 64)) == 50331680);
  assert(unsigned(zero_extend(0x3000024, 64)) == 50331684);
  assert(unsigned(zero_extend(0x300003, 64)) == 3145731);
  assert(unsigned(zero_extend(0x3000030, 64)) == 50331696);
  assert(unsigned(zero_extend(0x300004, 64)) == 3145732);
  assert(unsigned(zero_extend(0x300005, 64)) == 3145733);
  assert(unsigned(zero_extend(0x3000054, 64)) == 50331732);
  assert(unsigned(zero_extend(0x3000058, 64)) == 50331736);
  assert(unsigned(zero_extend(0x300005c, 64)) == 50331740);
  assert(unsigned(zero_extend(0x300006, 64)) == 3145734);
  assert(unsigned(zero_extend(0x3000068, 64)) == 50331752);
  assert(unsigned(zero_extend(0x300007, 64)) == 3145735);
  assert(unsigned(zero_extend(0x300008, 64)) == 3145736);
  assert(unsigned(zero_extend(0x300009, 64)) == 3145737);
  assert(unsigned(zero_extend(0x30000a, 64)) == 3145738);
  assert(unsigned(zero_extend(0x30000b, 64)) == 3145739);
  assert(unsigned(zero_extend(0x30000c, 64)) == 3145740);
  assert(unsigned(zero_extend(0x30000c4, 64)) == 50331844);
  assert(unsigned(zero_extend(0x30000c8, 64)) == 50331848);
  assert(unsigned(zero_extend(0x30000cc, 64)) == 50331852);
  assert(unsigned(zero_extend(0x30000d, 64)) == 3145741);
  assert(unsigned(zero_extend(0x30000e, 64)) == 3145742);
  assert(unsigned(zero_extend(0x3000288, 64)) == 50332296);
  assert(unsigned(zero_extend(0x30002a0, 64)) == 50332320);
  assert(unsigned(zero_extend(0x3002940, 64)) == 50342208);
  assert(unsigned(zero_extend(0x3006b10, 64)) == 50359056);
  assert(unsigned(zero_extend(0x3006b14, 64)) == 50359060);
  assert(unsigned(zero_extend(0x3006b1c, 64)) == 50359068);
  assert(unsigned(zero_extend(0x3006e40, 64)) == 50359872);
  assert(unsigned(zero_extend(0x3008d20, 64)) == 50367776);
  assert(unsigned(zero_extend(0x3008d21, 64)) == 50367777);
  assert(unsigned(zero_extend(0x3008d24, 64)) == 50367780);
  assert(unsigned(zero_extend(0x3008d28, 64)) == 50367784);
  assert(unsigned(zero_extend(0x3008d30, 64)) == 50367792);
  assert(unsigned(zero_extend(0x3008d38, 64)) == 50367800);
  assert(unsigned(zero_extend(0x3008d40, 64)) == 50367808);
  assert(unsigned(zero_extend(0x3008d48, 64)) == 50367816);
  assert(unsigned(zero_extend(0x3008d50, 64)) == 50367824);
  assert(unsigned(zero_extend(0x3008d51, 64)) == 50367825);
  assert(unsigned(zero_extend(0x3008d54, 64)) == 50367828);
  assert(unsigned(zero_extend(0x3008d58, 64)) == 50367832);
  assert(unsigned(zero_extend(0x3008d5c, 64)) == 50367836);
  assert(unsigned(zero_extend(0x3008d60, 64)) == 50367840);
  assert(unsigned(zero_extend(0x3008d64, 64)) == 50367844);
  assert(unsigned(zero_extend(0x3008d68, 64)) == 50367848);
  assert(unsigned(zero_extend(0x3008d6c, 64)) == 50367852);
  assert(unsigned(zero_extend(0x3008d70, 64)) == 50367856);
  assert(unsigned(zero_extend(0x3008d74, 64)) == 50367860);
  assert(unsigned(zero_extend(0x3008d78, 64)) == 50367864);
  assert(unsigned(zero_extend(0x3008d7c, 64)) == 50367868);
  assert(unsigned(zero_extend(0x3008d80, 64)) == 50367872);
  assert(unsigned(zero_extend(0x3008d84, 64)) == 50367876);
  assert(unsigned(zero_extend(0x3008d88, 64)) == 50367880);
  assert(unsigned(zero_extend(0x3008d8c, 64)) == 50367884);
  assert(unsigned(zero_extend(0x3008d90, 64)) == 50367888);
  assert(unsigned(zero_extend(0x3008d94, 64)) == 50367892);
  assert(unsigned(zero_extend(0x3008d98, 64)) == 50367896);
  assert(unsigned(zero_extend(0x3008d9c, 64)) == 50367900);
  assert(unsigned(zero_extend(0x3008da0, 64)) == 50367904);
  assert(unsigned(zero_extend(0x3008da4, 64)) == 50367908);
  assert(unsigned(zero_extend(0x3008da8, 64)) == 50367912);
  assert(unsigned(zero_extend(0x3008dac, 64)) == 50367916);
  assert(unsigned(zero_extend(0x3008db0, 64)) == 50367920);
  assert(unsigned(zero_extend(0x3008db4, 64)) == 50367924);
  assert(unsigned(zero_extend(0x3008db8, 64)) == 50367928);
  assert(unsigned(zero_extend(0x3008dbc, 64)) == 50367932);
  assert(unsigned(zero_extend(0x3008dc0, 64)) == 50367936);
  assert(unsigned(zero_extend(0x3008dc4, 64)) == 50367940);
  assert(unsigned(zero_extend(0x3008dc8, 64)) == 50367944);
  assert(unsigned(zero_extend(0x3008dcc, 64)) == 50367948);
  assert(unsigned(zero_extend(0x3008dd0, 64)) == 50367952);
  assert(unsigned(zero_extend(0x3008dd4, 64)) == 50367956);
  assert(unsigned(zero_extend(0x3008dd8, 64)) == 50367960);
  assert(unsigned(zero_extend(0x3008ddc, 64)) == 50367964);
  assert(unsigned(zero_extend(0x3008de0, 64)) == 50367968);
  assert(unsigned(zero_extend(0x3008de4, 64)) == 50367972);
  assert(unsigned(zero_extend(0x3008de8, 64)) == 50367976);
  assert(unsigned(zero_extend(0x3008dec, 64)) == 50367980);
  assert(unsigned(zero_extend(0x3008df0, 64)) == 50367984);
  assert(unsigned(zero_extend(0x3008df8, 64)) == 50367992);
  assert(unsigned(zero_extend(0x3008e00, 64)) == 50368000);
  assert(unsigned(zero_extend(0x3008e08, 64)) == 50368008);
  assert(unsigned(zero_extend(0x3008e10, 64)) == 50368016);
  assert(unsigned(zero_extend(0x3008e18, 64)) == 50368024);
  assert(unsigned(zero_extend(0x3008e20, 64)) == 50368032);
  assert(unsigned(zero_extend(0x3008e28, 64)) == 50368040);
  assert(unsigned(zero_extend(0x3008e30, 64)) == 50368048);
  assert(unsigned(zero_extend(0x3008e38, 64)) == 50368056);
  assert(unsigned(zero_extend(0x3008e40, 64)) == 50368064);
  assert(unsigned(zero_extend(0x3010e40, 64)) == 50400832);
  assert(unsigned(zero_extend(0x30e0000, 64)) == 51249152);
  assert(unsigned(zero_extend(0x30f0000, 64)) == 51314688);
  assert(unsigned(zero_extend(0x31, 64)) == 49);
  assert(unsigned(zero_extend(0x3100000, 64)) == 51380224);
  assert(unsigned(zero_extend(0x3100040, 64)) == 51380288);
  assert(unsigned(zero_extend(0x3110000, 64)) == 51445760);
  assert(unsigned(zero_extend(0x3110208, 64)) == 51446280);
  assert(unsigned(zero_extend(0x3120000, 64)) == 51511296);
  assert(unsigned(zero_extend(0x3120800, 64)) == 51513344);
  assert(unsigned(zero_extend(0x31d0000, 64)) == 52232192);
  assert(unsigned(zero_extend(0x31d0004, 64)) == 52232196);
  assert(unsigned(zero_extend(0x31d0008, 64)) == 52232200);
  assert(unsigned(zero_extend(0x31d000c, 64)) == 52232204);
  assert(unsigned(zero_extend(0x31d0010, 64)) == 52232208);
  assert(unsigned(zero_extend(0x31d0014, 64)) == 52232212);
  assert(unsigned(zero_extend(0x31d0018, 64)) == 52232216);
  assert(unsigned(zero_extend(0x31d001c, 64)) == 52232220);
  assert(unsigned(zero_extend(0x31d0020, 64)) == 52232224);
  assert(unsigned(zero_extend(0x31d0040, 64)) == 52232256);
  assert(unsigned(zero_extend(0x31d0044, 64)) == 52232260);
  assert(unsigned(zero_extend(0x31d0048, 64)) == 52232264);
  assert(unsigned(zero_extend(0x31d004c, 64)) == 52232268);
  assert(unsigned(zero_extend(0x31d0050, 64)) == 52232272);
  assert(unsigned(zero_extend(0x31d0054, 64)) == 52232276);
  assert(unsigned(zero_extend(0x31d0058, 64)) == 52232280);
  assert(unsigned(zero_extend(0x31d005c, 64)) == 52232284);
  assert(unsigned(zero_extend(0x31d0060, 64)) == 52232288);
  assert(unsigned(zero_extend(0x31d0064, 64)) == 52232292);
  assert(unsigned(zero_extend(0x31d0068, 64)) == 52232296);
  assert(unsigned(zero_extend(0x31d006c, 64)) == 52232300);
  assert(unsigned(zero_extend(0x31d0070, 64)) == 52232304);
  assert(unsigned(zero_extend(0x31d0074, 64)) == 52232308);
  assert(unsigned(zero_extend(0x31d0078, 64)) == 52232312);
  assert(unsigned(zero_extend(0x31d007c, 64)) == 52232316);
  assert(unsigned(zero_extend(0x31d0080, 64)) == 52232320);
  assert(unsigned(zero_extend(0x31d0084, 64)) == 52232324);
  assert(unsigned(zero_extend(0x31d0088, 64)) == 52232328);
  assert(unsigned(zero_extend(0x31d008c, 64)) == 52232332);
  assert(unsigned(zero_extend(0x31d0090, 64)) == 52232336);
  assert(unsigned(zero_extend(0x31d0094, 64)) == 52232340);
  assert(unsigned(zero_extend(0x31d0098, 64)) == 52232344);
  assert(unsigned(zero_extend(0x31d009c, 64)) == 52232348);
  assert(unsigned(zero_extend(0x31d00a0, 64)) == 52232352);
  assert(unsigned(zero_extend(0x31d00a4, 64)) == 52232356);
  assert(unsigned(zero_extend(0x31d00a8, 64)) == 52232360);
  assert(unsigned(zero_extend(0x31d00ac, 64)) == 52232364);
  assert(unsigned(zero_extend(0x31d00b0, 64)) == 52232368);
  assert(unsigned(zero_extend(0x31d00b4, 64)) == 52232372);
  assert(unsigned(zero_extend(0x31d00b8, 64)) == 52232376);
  assert(unsigned(zero_extend(0x31d00bc, 64)) == 52232380);
  assert(unsigned(zero_extend(0x31d00c0, 64)) == 52232384);
  assert(unsigned(zero_extend(0x31d00c4, 64)) == 52232388);
  assert(unsigned(zero_extend(0x31d00c8, 64)) == 52232392);
  assert(unsigned(zero_extend(0x31d00cc, 64)) == 52232396);
  assert(unsigned(zero_extend(0x31d00d0, 64)) == 52232400);
  assert(unsigned(zero_extend(0x31d00d4, 64)) == 52232404);
  assert(unsigned(zero_extend(0x31d00d8, 64)) == 52232408);
  assert(unsigned(zero_extend(0x31d00dc, 64)) == 52232412);
  assert(unsigned(zero_extend(0x31d00e0, 64)) == 52232416);
  assert(unsigned(zero_extend(0x31d00e4, 64)) == 52232420);
  assert(unsigned(zero_extend(0x31d00e8, 64)) == 52232424);
  assert(unsigned(zero_extend(0x31d00ec, 64)) == 52232428);
  assert(unsigned(zero_extend(0x31d00f0, 64)) == 52232432);
  assert(unsigned(zero_extend(0x31d00f4, 64)) == 52232436);
  assert(unsigned(zero_extend(0x31d00f8, 64)) == 52232440);
  assert(unsigned(zero_extend(0x31d00fc, 64)) == 52232444);
  assert(unsigned(zero_extend(0x31d0100, 64)) == 52232448);
  assert(unsigned(zero_extend(0x31d0104, 64)) == 52232452);
  assert(unsigned(zero_extend(0x31d0108, 64)) == 52232456);
  assert(unsigned(zero_extend(0x31d010c, 64)) == 52232460);
  assert(unsigned(zero_extend(0x31d0110, 64)) == 52232464);
  assert(unsigned(zero_extend(0x31d0138, 64)) == 52232504);
  assert(unsigned(zero_extend(0x31d013c, 64)) == 52232508);
  assert(unsigned(zero_extend(0x31d0140, 64)) == 52232512);
  assert(unsigned(zero_extend(0x31d0144, 64)) == 52232516);
  assert(unsigned(zero_extend(0x31d0178, 64)) == 52232568);
  assert(unsigned(zero_extend(0x31d017c, 64)) == 52232572);
  assert(unsigned(zero_extend(0x31d0194, 64)) == 52232596);
  assert(unsigned(zero_extend(0x31d01a0, 64)) == 52232608);
  assert(unsigned(zero_extend(0x31d01c0, 64)) == 52232640);
  assert(unsigned(zero_extend(0x31d01e0, 64)) == 52232672);
  assert(unsigned(zero_extend(0x31d01e8, 64)) == 52232680);
  assert(unsigned(zero_extend(0x31d01f0, 64)) == 52232688);
  assert(unsigned(zero_extend(0x31d0200, 64)) == 52232704);
  assert(unsigned(zero_extend(0x31d0208, 64)) == 52232712);
  assert(unsigned(zero_extend(0x31d0218, 64)) == 52232728);
  assert(unsigned(zero_extend(0x31d0220, 64)) == 52232736);
  assert(unsigned(zero_extend(0x31d0228, 64)) == 52232744);
  assert(unsigned(zero_extend(0x31d0230, 64)) == 52232752);
  assert(unsigned(zero_extend(0x31d0248, 64)) == 52232776);
  assert(unsigned(zero_extend(0x31d0250, 64)) == 52232784);
  assert(unsigned(zero_extend(0x31d0258, 64)) == 52232792);
  assert(unsigned(zero_extend(0x31d0260, 64)) == 52232800);
  assert(unsigned(zero_extend(0x31d02e0, 64)) == 52232928);
  assert(unsigned(zero_extend(0x31d02f0, 64)) == 52232944);
  assert(unsigned(zero_extend(0x31d02f8, 64)) == 52232952);
  assert(unsigned(zero_extend(0x31d0300, 64)) == 52232960);
  assert(unsigned(zero_extend(0x31d0308, 64)) == 52232968);
  assert(unsigned(zero_extend(0x31d0318, 64)) == 52232984);
  assert(unsigned(zero_extend(0x31d0320, 64)) == 52232992);
  assert(unsigned(zero_extend(0x31d0328, 64)) == 52233000);
  assert(unsigned(zero_extend(0x31d04d0, 64)) == 52233424);
  assert(unsigned(zero_extend(0x31d04d4, 64)) == 52233428);
  assert(unsigned(zero_extend(0x31d04d8, 64)) == 52233432);
  assert(unsigned(zero_extend(0x31d04dc, 64)) == 52233436);
  assert(unsigned(zero_extend(0x31d04e0, 64)) == 52233440);
  assert(unsigned(zero_extend(0x31d04e4, 64)) == 52233444);
  assert(unsigned(zero_extend(0x31d04e8, 64)) == 52233448);
  assert(unsigned(zero_extend(0x31d04ec, 64)) == 52233452);
  assert(unsigned(zero_extend(0x31d04f0, 64)) == 52233456);
  assert(unsigned(zero_extend(0x31d04f4, 64)) == 52233460);
  assert(unsigned(zero_extend(0x31d04f8, 64)) == 52233464);
  assert(unsigned(zero_extend(0x31d04fc, 64)) == 52233468);
  assert(unsigned(zero_extend(0x31d0500, 64)) == 52233472);
  assert(unsigned(zero_extend(0x31d0504, 64)) == 52233476);
  assert(unsigned(zero_extend(0x31d0508, 64)) == 52233480);
  assert(unsigned(zero_extend(0x31d050c, 64)) == 52233484);
  assert(unsigned(zero_extend(0x31d0510, 64)) == 52233488);
  assert(unsigned(zero_extend(0x31d0514, 64)) == 52233492);
  assert(unsigned(zero_extend(0x31d0518, 64)) == 52233496);
  assert(unsigned(zero_extend(0x31d051c, 64)) == 52233500);
  assert(unsigned(zero_extend(0x31d0520, 64)) == 52233504);
  assert(unsigned(zero_extend(0x31d0524, 64)) == 52233508);
  assert(unsigned(zero_extend(0x31d0528, 64)) == 52233512);
  assert(unsigned(zero_extend(0x31d052c, 64)) == 52233516);
  assert(unsigned(zero_extend(0x31d0530, 64)) == 52233520);
  assert(unsigned(zero_extend(0x31d0534, 64)) == 52233524);
  assert(unsigned(zero_extend(0x31d0538, 64)) == 52233528);
  assert(unsigned(zero_extend(0x31d053c, 64)) == 52233532);
  assert(unsigned(zero_extend(0x31d0540, 64)) == 52233536);
  assert(unsigned(zero_extend(0x31d0544, 64)) == 52233540);
  assert(unsigned(zero_extend(0x31d0548, 64)) == 52233544);
  assert(unsigned(zero_extend(0x31d054c, 64)) == 52233548);
  assert(unsigned(zero_extend(0x31d0550, 64)) == 52233552);
  assert(unsigned(zero_extend(0x31d0554, 64)) == 52233556);
  assert(unsigned(zero_extend(0x31d0558, 64)) == 52233560);
  assert(unsigned(zero_extend(0x31d055c, 64)) == 52233564);
  assert(unsigned(zero_extend(0x31d0560, 64)) == 52233568);
  assert(unsigned(zero_extend(0x31d0564, 64)) == 52233572);
  assert(unsigned(zero_extend(0x31d0568, 64)) == 52233576);
  assert(unsigned(zero_extend(0x31d056c, 64)) == 52233580);
  assert(unsigned(zero_extend(0x31d0570, 64)) == 52233584);
  assert(unsigned(zero_extend(0x31d0574, 64)) == 52233588);
  assert(unsigned(zero_extend(0x31d0578, 64)) == 52233592);
  assert(unsigned(zero_extend(0x31d057c, 64)) == 52233596);
  assert(unsigned(zero_extend(0x31d0580, 64)) == 52233600);
  assert(unsigned(zero_extend(0x31d0584, 64)) == 52233604);
  assert(unsigned(zero_extend(0x31d0588, 64)) == 52233608);
  assert(unsigned(zero_extend(0x31d058c, 64)) == 52233612);
  assert(unsigned(zero_extend(0x31d0590, 64)) == 52233616);
  assert(unsigned(zero_extend(0x31d0594, 64)) == 52233620);
  assert(unsigned(zero_extend(0x31d0598, 64)) == 52233624);
  assert(unsigned(zero_extend(0x31d059c, 64)) == 52233628);
  assert(unsigned(zero_extend(0x31d05a0, 64)) == 52233632);
  assert(unsigned(zero_extend(0x31d05a4, 64)) == 52233636);
  assert(unsigned(zero_extend(0x31d05a8, 64)) == 52233640);
  assert(unsigned(zero_extend(0x31d05ac, 64)) == 52233644);
  assert(unsigned(zero_extend(0x31d05b0, 64)) == 52233648);
  assert(unsigned(zero_extend(0x31d05b4, 64)) == 52233652);
  assert(unsigned(zero_extend(0x31d05b8, 64)) == 52233656);
  assert(unsigned(zero_extend(0x31d05bc, 64)) == 52233660);
  assert(unsigned(zero_extend(0x31d05c0, 64)) == 52233664);
  assert(unsigned(zero_extend(0x31d05c4, 64)) == 52233668);
  assert(unsigned(zero_extend(0x31d05c8, 64)) == 52233672);
  assert(unsigned(zero_extend(0x31d05cc, 64)) == 52233676);
  assert(unsigned(zero_extend(0x31d05d0, 64)) == 52233680);
  assert(unsigned(zero_extend(0x31d05d4, 64)) == 52233684);
  assert(unsigned(zero_extend(0x31d05d8, 64)) == 52233688);
  assert(unsigned(zero_extend(0x31d05dc, 64)) == 52233692);
  assert(unsigned(zero_extend(0x31d05e0, 64)) == 52233696);
  assert(unsigned(zero_extend(0x31d05e4, 64)) == 52233700);
  assert(unsigned(zero_extend(0x31d05e8, 64)) == 52233704);
  assert(unsigned(zero_extend(0x31d05ec, 64)) == 52233708);
  assert(unsigned(zero_extend(0x31d05f0, 64)) == 52233712);
  assert(unsigned(zero_extend(0x31d05f4, 64)) == 52233716);
  assert(unsigned(zero_extend(0x31d05f8, 64)) == 52233720);
  assert(unsigned(zero_extend(0x31d05fc, 64)) == 52233724);
  assert(unsigned(zero_extend(0x31d0600, 64)) == 52233728);
  assert(unsigned(zero_extend(0x31d0604, 64)) == 52233732);
  assert(unsigned(zero_extend(0x31d0608, 64)) == 52233736);
  assert(unsigned(zero_extend(0x31d060c, 64)) == 52233740);
  assert(unsigned(zero_extend(0x31d0610, 64)) == 52233744);
  assert(unsigned(zero_extend(0x31d0614, 64)) == 52233748);
  assert(unsigned(zero_extend(0x31d0618, 64)) == 52233752);
  assert(unsigned(zero_extend(0x31d061c, 64)) == 52233756);
  assert(unsigned(zero_extend(0x31d0620, 64)) == 52233760);
  assert(unsigned(zero_extend(0x31d0624, 64)) == 52233764);
  assert(unsigned(zero_extend(0x31d0628, 64)) == 52233768);
  assert(unsigned(zero_extend(0x31d062c, 64)) == 52233772);
  assert(unsigned(zero_extend(0x31d0630, 64)) == 52233776);
  assert(unsigned(zero_extend(0x31d0634, 64)) == 52233780);
  assert(unsigned(zero_extend(0x31d0638, 64)) == 52233784);
  assert(unsigned(zero_extend(0x31d063c, 64)) == 52233788);
  assert(unsigned(zero_extend(0x31d0640, 64)) == 52233792);
  assert(unsigned(zero_extend(0x31d0644, 64)) == 52233796);
  assert(unsigned(zero_extend(0x31d0648, 64)) == 52233800);
  assert(unsigned(zero_extend(0x31d064c, 64)) == 52233804);
  assert(unsigned(zero_extend(0x31d0650, 64)) == 52233808);
  assert(unsigned(zero_extend(0x31d0654, 64)) == 52233812);
  assert(unsigned(zero_extend(0x31d0658, 64)) == 52233816);
  assert(unsigned(zero_extend(0x31d065c, 64)) == 52233820);
  assert(unsigned(zero_extend(0x31d0660, 64)) == 52233824);
  assert(unsigned(zero_extend(0x31d0664, 64)) == 52233828);
  assert(unsigned(zero_extend(0x31d0668, 64)) == 52233832);
  assert(unsigned(zero_extend(0x31d066c, 64)) == 52233836);
  assert(unsigned(zero_extend(0x31d0670, 64)) == 52233840);
  assert(unsigned(zero_extend(0x31d0674, 64)) == 52233844);
  assert(unsigned(zero_extend(0x31d0678, 64)) == 52233848);
  assert(unsigned(zero_extend(0x31d067c, 64)) == 52233852);
  assert(unsigned(zero_extend(0x31d0680, 64)) == 52233856);
  assert(unsigned(zero_extend(0x31d0684, 64)) == 52233860);
  assert(unsigned(zero_extend(0x31d0688, 64)) == 52233864);
  assert(unsigned(zero_extend(0x31d068c, 64)) == 52233868);
  assert(unsigned(zero_extend(0x31d0690, 64)) == 52233872);
  assert(unsigned(zero_extend(0x31d0694, 64)) == 52233876);
  assert(unsigned(zero_extend(0x31d0698, 64)) == 52233880);
  assert(unsigned(zero_extend(0x31d06b0, 64)) == 52233904);
  assert(unsigned(zero_extend(0x31d06b4, 64)) == 52233908);
  assert(unsigned(zero_extend(0x31d06b8, 64)) == 52233912);
  assert(unsigned(zero_extend(0x31d06bc, 64)) == 52233916);
  assert(unsigned(zero_extend(0x31d06c0, 64)) == 52233920);
  assert(unsigned(zero_extend(0x31d06c4, 64)) == 52233924);
  assert(unsigned(zero_extend(0x31d06c8, 64)) == 52233928);
  assert(unsigned(zero_extend(0x31d06cc, 64)) == 52233932);
  assert(unsigned(zero_extend(0x31d06d0, 64)) == 52233936);
  assert(unsigned(zero_extend(0x31d06d4, 64)) == 52233940);
  assert(unsigned(zero_extend(0x31d06d8, 64)) == 52233944);
  assert(unsigned(zero_extend(0x31d06dc, 64)) == 52233948);
  assert(unsigned(zero_extend(0x31d06e0, 64)) == 52233952);
  assert(unsigned(zero_extend(0x31d06e4, 64)) == 52233956);
  assert(unsigned(zero_extend(0x31d06e8, 64)) == 52233960);
  assert(unsigned(zero_extend(0x31d0700, 64)) == 52233984);
  assert(unsigned(zero_extend(0x31d0704, 64)) == 52233988);
  assert(unsigned(zero_extend(0x31d0708, 64)) == 52233992);
  assert(unsigned(zero_extend(0x31d070c, 64)) == 52233996);
  assert(unsigned(zero_extend(0x31d0710, 64)) == 52234000);
  assert(unsigned(zero_extend(0x31d0714, 64)) == 52234004);
  assert(unsigned(zero_extend(0x31d0718, 64)) == 52234008);
  assert(unsigned(zero_extend(0x31d071c, 64)) == 52234012);
  assert(unsigned(zero_extend(0x31d0720, 64)) == 52234016);
  assert(unsigned(zero_extend(0x31d0724, 64)) == 52234020);
  assert(unsigned(zero_extend(0x31d073c, 64)) == 52234044);
  assert(unsigned(zero_extend(0x31d0740, 64)) == 52234048);
  assert(unsigned(zero_extend(0x31d0744, 64)) == 52234052);
  assert(unsigned(zero_extend(0x31d0748, 64)) == 52234056);
  assert(unsigned(zero_extend(0x31d074c, 64)) == 52234060);
  assert(unsigned(zero_extend(0x31d0750, 64)) == 52234064);
  assert(unsigned(zero_extend(0x31d0754, 64)) == 52234068);
  assert(unsigned(zero_extend(0x31d0758, 64)) == 52234072);
  assert(unsigned(zero_extend(0x31d075c, 64)) == 52234076);
  assert(unsigned(zero_extend(0x31d0760, 64)) == 52234080);
  assert(unsigned(zero_extend(0x31d0764, 64)) == 52234084);
  assert(unsigned(zero_extend(0x31d0768, 64)) == 52234088);
  assert(unsigned(zero_extend(0x31d076c, 64)) == 52234092);
  assert(unsigned(zero_extend(0x31d0770, 64)) == 52234096);
  assert(unsigned(zero_extend(0x31d0774, 64)) == 52234100);
  assert(unsigned(zero_extend(0x31d0778, 64)) == 52234104);
  assert(unsigned(zero_extend(0x31d077c, 64)) == 52234108);
  assert(unsigned(zero_extend(0x31d0780, 64)) == 52234112);
  assert(unsigned(zero_extend(0x31d0784, 64)) == 52234116);
  assert(unsigned(zero_extend(0x31d0788, 64)) == 52234120);
  assert(unsigned(zero_extend(0x31d078c, 64)) == 52234124);
  assert(unsigned(zero_extend(0x31d0790, 64)) == 52234128);
  assert(unsigned(zero_extend(0x31d07d8, 64)) == 52234200);
  assert(unsigned(zero_extend(0x31d07dc, 64)) == 52234204);
  assert(unsigned(zero_extend(0x31d07e0, 64)) == 52234208);
  assert(unsigned(zero_extend(0x31d07e4, 64)) == 52234212);
  assert(unsigned(zero_extend(0x31d07e8, 64)) == 52234216);
  assert(unsigned(zero_extend(0x31d07ec, 64)) == 52234220);
  assert(unsigned(zero_extend(0x31d07f0, 64)) == 52234224);
  assert(unsigned(zero_extend(0x31d07f4, 64)) == 52234228);
  assert(unsigned(zero_extend(0x31d07f8, 64)) == 52234232);
  assert(unsigned(zero_extend(0x31d07fc, 64)) == 52234236);
  assert(unsigned(zero_extend(0x31d0800, 64)) == 52234240);
  assert(unsigned(zero_extend(0x31d0804, 64)) == 52234244);
  assert(unsigned(zero_extend(0x31d0808, 64)) == 52234248);
  assert(unsigned(zero_extend(0x31d080c, 64)) == 52234252);
  assert(unsigned(zero_extend(0x31d0810, 64)) == 52234256);
  assert(unsigned(zero_extend(0x31d0814, 64)) == 52234260);
  assert(unsigned(zero_extend(0x31d0818, 64)) == 52234264);
  assert(unsigned(zero_extend(0x31d081c, 64)) == 52234268);
  assert(unsigned(zero_extend(0x31d0820, 64)) == 52234272);
  assert(unsigned(zero_extend(0x31d0824, 64)) == 52234276);
  assert(unsigned(zero_extend(0x31d0828, 64)) == 52234280);
  assert(unsigned(zero_extend(0x31d082c, 64)) == 52234284);
  assert(unsigned(zero_extend(0x31d0830, 64)) == 52234288);
  assert(unsigned(zero_extend(0x31d0834, 64)) == 52234292);
  assert(unsigned(zero_extend(0x31d0838, 64)) == 52234296);
  assert(unsigned(zero_extend(0x31d083c, 64)) == 52234300);
  assert(unsigned(zero_extend(0x31d0840, 64)) == 52234304);
  assert(unsigned(zero_extend(0x31d0844, 64)) == 52234308);
  assert(unsigned(zero_extend(0x31d0848, 64)) == 52234312);
  assert(unsigned(zero_extend(0x31d084c, 64)) == 52234316);
  assert(unsigned(zero_extend(0x31d0850, 64)) == 52234320);
  assert(unsigned(zero_extend(0x31d0854, 64)) == 52234324);
  assert(unsigned(zero_extend(0x31d0858, 64)) == 52234328);
  assert(unsigned(zero_extend(0x31d085c, 64)) == 52234332);
  assert(unsigned(zero_extend(0x31d0860, 64)) == 52234336);
  assert(unsigned(zero_extend(0x31d0864, 64)) == 52234340);
  assert(unsigned(zero_extend(0x31d0868, 64)) == 52234344);
  assert(unsigned(zero_extend(0x31d086c, 64)) == 52234348);
  assert(unsigned(zero_extend(0x31d0870, 64)) == 52234352);
  assert(unsigned(zero_extend(0x31d0874, 64)) == 52234356);
  assert(unsigned(zero_extend(0x31d0890, 64)) == 52234384);
  assert(unsigned(zero_extend(0x31d0898, 64)) == 52234392);
  assert(unsigned(zero_extend(0x31d08a0, 64)) == 52234400);
  assert(unsigned(zero_extend(0x31d08a8, 64)) == 52234408);
  assert(unsigned(zero_extend(0x31d08ac, 64)) == 52234412);
  assert(unsigned(zero_extend(0x31d08b0, 64)) == 52234416);
  assert(unsigned(zero_extend(0x31d08b4, 64)) == 52234420);
  assert(unsigned(zero_extend(0x31d08b8, 64)) == 52234424);
  assert(unsigned(zero_extend(0x31d08bc, 64)) == 52234428);
  assert(unsigned(zero_extend(0x31d08c0, 64)) == 52234432);
  assert(unsigned(zero_extend(0x31d08c4, 64)) == 52234436);
  assert(unsigned(zero_extend(0x31d08c8, 64)) == 52234440);
  assert(unsigned(zero_extend(0x31d08cc, 64)) == 52234444);
  assert(unsigned(zero_extend(0x31d08d0, 64)) == 52234448);
  assert(unsigned(zero_extend(0x31d08d4, 64)) == 52234452);
  assert(unsigned(zero_extend(0x31d08d8, 64)) == 52234456);
  assert(unsigned(zero_extend(0x31d08dc, 64)) == 52234460);
  assert(unsigned(zero_extend(0x31d08e0, 64)) == 52234464);
  assert(unsigned(zero_extend(0x31d08e4, 64)) == 52234468);
  assert(unsigned(zero_extend(0x31d08e8, 64)) == 52234472);
  assert(unsigned(zero_extend(0x31d08ec, 64)) == 52234476);
  assert(unsigned(zero_extend(0x31d08f0, 64)) == 52234480);
  assert(unsigned(zero_extend(0x31d08f4, 64)) == 52234484);
  assert(unsigned(zero_extend(0x31d08fc, 64)) == 52234492);
  assert(unsigned(zero_extend(0x31d0900, 64)) == 52234496);
  assert(unsigned(zero_extend(0x31d0904, 64)) == 52234500);
  assert(unsigned(zero_extend(0x31d0908, 64)) == 52234504);
  assert(unsigned(zero_extend(0x31d090c, 64)) == 52234508);
  assert(unsigned(zero_extend(0x31d0910, 64)) == 52234512);
  assert(unsigned(zero_extend(0x31d0914, 64)) == 52234516);
  assert(unsigned(zero_extend(0x31d0918, 64)) == 52234520);
  assert(unsigned(zero_extend(0x31d091c, 64)) == 52234524);
  assert(unsigned(zero_extend(0x31d0920, 64)) == 52234528);
  assert(unsigned(zero_extend(0x31d0924, 64)) == 52234532);
  assert(unsigned(zero_extend(0x31d0928, 64)) == 52234536);
  assert(unsigned(zero_extend(0x31d092c, 64)) == 52234540);
  assert(unsigned(zero_extend(0x31d0930, 64)) == 52234544);
  assert(unsigned(zero_extend(0x31d0934, 64)) == 52234548);
  assert(unsigned(zero_extend(0x31d0938, 64)) == 52234552);
  assert(unsigned(zero_extend(0x31d093c, 64)) == 52234556);
  assert(unsigned(zero_extend(0x31d0940, 64)) == 52234560);
  assert(unsigned(zero_extend(0x31d0944, 64)) == 52234564);
  assert(unsigned(zero_extend(0x31d0948, 64)) == 52234568);
  assert(unsigned(zero_extend(0x31d094c, 64)) == 52234572);
  assert(unsigned(zero_extend(0x31d0950, 64)) == 52234576);
  assert(unsigned(zero_extend(0x31d0954, 64)) == 52234580);
  assert(unsigned(zero_extend(0x31d0958, 64)) == 52234584);
  assert(unsigned(zero_extend(0x31d095c, 64)) == 52234588);
  assert(unsigned(zero_extend(0x31d0960, 64)) == 52234592);
  assert(unsigned(zero_extend(0x31d0964, 64)) == 52234596);
  assert(unsigned(zero_extend(0x31d0968, 64)) == 52234600);
  assert(unsigned(zero_extend(0x31d096c, 64)) == 52234604);
  assert(unsigned(zero_extend(0x31d0970, 64)) == 52234608);
  assert(unsigned(zero_extend(0x31d0974, 64)) == 52234612);
  assert(unsigned(zero_extend(0x31d0978, 64)) == 52234616);
  assert(unsigned(zero_extend(0x31d097c, 64)) == 52234620);
  assert(unsigned(zero_extend(0x31d0980, 64)) == 52234624);
  assert(unsigned(zero_extend(0x31d0984, 64)) == 52234628);
  assert(unsigned(zero_extend(0x31d0988, 64)) == 52234632);
  assert(unsigned(zero_extend(0x31d098c, 64)) == 52234636);
  assert(unsigned(zero_extend(0x31d0990, 64)) == 52234640);
  assert(unsigned(zero_extend(0x31d0994, 64)) == 52234644);
  assert(unsigned(zero_extend(0x31d0998, 64)) == 52234648);
  assert(unsigned(zero_extend(0x31d099c, 64)) == 52234652);
  assert(unsigned(zero_extend(0x31d09a0, 64)) == 52234656);
  assert(unsigned(zero_extend(0x31d09a4, 64)) == 52234660);
  assert(unsigned(zero_extend(0x31d09a8, 64)) == 52234664);
  assert(unsigned(zero_extend(0x31d09ac, 64)) == 52234668);
  assert(unsigned(zero_extend(0x31d09b0, 64)) == 52234672);
  assert(unsigned(zero_extend(0x31d09b4, 64)) == 52234676);
  assert(unsigned(zero_extend(0x31d09b8, 64)) == 52234680);
  assert(unsigned(zero_extend(0x31d09bc, 64)) == 52234684);
  assert(unsigned(zero_extend(0x31d09c0, 64)) == 52234688);
  assert(unsigned(zero_extend(0x31d09c4, 64)) == 52234692);
  assert(unsigned(zero_extend(0x31d09c8, 64)) == 52234696);
  assert(unsigned(zero_extend(0x31d09cc, 64)) == 52234700);
  assert(unsigned(zero_extend(0x31d09d0, 64)) == 52234704);
  assert(unsigned(zero_extend(0x31d09d4, 64)) == 52234708);
  assert(unsigned(zero_extend(0x31d09dc, 64)) == 52234716);
  assert(unsigned(zero_extend(0x31d09e0, 64)) == 52234720);
  assert(unsigned(zero_extend(0x31d09e4, 64)) == 52234724);
  assert(unsigned(zero_extend(0x31d09e8, 64)) == 52234728);
  assert(unsigned(zero_extend(0x31d09ec, 64)) == 52234732);
  assert(unsigned(zero_extend(0x31d09f0, 64)) == 52234736);
  assert(unsigned(zero_extend(0x31d09f4, 64)) == 52234740);
  assert(unsigned(zero_extend(0x31d09f8, 64)) == 52234744);
  assert(unsigned(zero_extend(0x31d09fc, 64)) == 52234748);
  assert(unsigned(zero_extend(0x31d0a08, 64)) == 52234760);
  assert(unsigned(zero_extend(0x31d0a0c, 64)) == 52234764);
  assert(unsigned(zero_extend(0x31d0a10, 64)) == 52234768);
  assert(unsigned(zero_extend(0x31d0a14, 64)) == 52234772);
  assert(unsigned(zero_extend(0x31d0a18, 64)) == 52234776);
  assert(unsigned(zero_extend(0x31d0a1c, 64)) == 52234780);
  assert(unsigned(zero_extend(0x31d0a20, 64)) == 52234784);
  assert(unsigned(zero_extend(0x31d0a24, 64)) == 52234788);
  assert(unsigned(zero_extend(0x31d0a28, 64)) == 52234792);
  assert(unsigned(zero_extend(0x31d0a2c, 64)) == 52234796);
  assert(unsigned(zero_extend(0x31d0a30, 64)) == 52234800);
  assert(unsigned(zero_extend(0x31d0a34, 64)) == 52234804);
  assert(unsigned(zero_extend(0x31d0a38, 64)) == 52234808);
  assert(unsigned(zero_extend(0x31d0a3c, 64)) == 52234812);
  assert(unsigned(zero_extend(0x31d0a40, 64)) == 52234816);
  assert(unsigned(zero_extend(0x31d0a44, 64)) == 52234820);
  assert(unsigned(zero_extend(0x31d0a48, 64)) == 52234824);
  assert(unsigned(zero_extend(0x31d0a4c, 64)) == 52234828);
  assert(unsigned(zero_extend(0x31d0a50, 64)) == 52234832);
  assert(unsigned(zero_extend(0x31d0a54, 64)) == 52234836);
  assert(unsigned(zero_extend(0x31d0a58, 64)) == 52234840);
  assert(unsigned(zero_extend(0x31d0a5c, 64)) == 52234844);
  assert(unsigned(zero_extend(0x31d0a60, 64)) == 52234848);
  assert(unsigned(zero_extend(0x31d0a64, 64)) == 52234852);
  assert(unsigned(zero_extend(0x31d0a68, 64)) == 52234856);
  assert(unsigned(zero_extend(0x31d0a6c, 64)) == 52234860);
  assert(unsigned(zero_extend(0x31d0a70, 64)) == 52234864);
  assert(unsigned(zero_extend(0x31d0a74, 64)) == 52234868);
  assert(unsigned(zero_extend(0x31d0a78, 64)) == 52234872);
  assert(unsigned(zero_extend(0x31d0a7c, 64)) == 52234876);
  assert(unsigned(zero_extend(0x31d0a80, 64)) == 52234880);
  assert(unsigned(zero_extend(0x31d0a84, 64)) == 52234884);
  assert(unsigned(zero_extend(0x31d0a88, 64)) == 52234888);
  assert(unsigned(zero_extend(0x31d0a8c, 64)) == 52234892);
  assert(unsigned(zero_extend(0x31d0a90, 64)) == 52234896);
  assert(unsigned(zero_extend(0x31d0a94, 64)) == 52234900);
  assert(unsigned(zero_extend(0x31d0a98, 64)) == 52234904);
  assert(unsigned(zero_extend(0x31d0a9c, 64)) == 52234908);
  assert(unsigned(zero_extend(0x31d0aa0, 64)) == 52234912);
  assert(unsigned(zero_extend(0x31d0aa4, 64)) == 52234916);
  assert(unsigned(zero_extend(0x31d0aa8, 64)) == 52234920);
  assert(unsigned(zero_extend(0x31d0aac, 64)) == 52234924);
  assert(unsigned(zero_extend(0x31d0ab0, 64)) == 52234928);
  assert(unsigned(zero_extend(0x31d0ab4, 64)) == 52234932);
  assert(unsigned(zero_extend(0x31d0ab8, 64)) == 52234936);
  assert(unsigned(zero_extend(0x31d0abc, 64)) == 52234940);
  assert(unsigned(zero_extend(0x31d0ac0, 64)) == 52234944);
  assert(unsigned(zero_extend(0x31d0ac4, 64)) == 52234948);
  assert(unsigned(zero_extend(0x31d0ac8, 64)) == 52234952);
  assert(unsigned(zero_extend(0x31d0acc, 64)) == 52234956);
  assert(unsigned(zero_extend(0x31d0ad0, 64)) == 52234960);
  assert(unsigned(zero_extend(0x31d0ad4, 64)) == 52234964);
  assert(unsigned(zero_extend(0x31d0ad8, 64)) == 52234968);
  assert(unsigned(zero_extend(0x31d0adc, 64)) == 52234972);
  assert(unsigned(zero_extend(0x31d0ae0, 64)) == 52234976);
  assert(unsigned(zero_extend(0x31d0ae4, 64)) == 52234980);
  assert(unsigned(zero_extend(0x31d0ae8, 64)) == 52234984);
  assert(unsigned(zero_extend(0x31d0aec, 64)) == 52234988);
  assert(unsigned(zero_extend(0x31d0af0, 64)) == 52234992);
  assert(unsigned(zero_extend(0x31d0af4, 64)) == 52234996);
  assert(unsigned(zero_extend(0x31d0af8, 64)) == 52235000);
  assert(unsigned(zero_extend(0x31d0b08, 64)) == 52235016);
  assert(unsigned(zero_extend(0x31d0b0c, 64)) == 52235020);
  assert(unsigned(zero_extend(0x31d0b10, 64)) == 52235024);
  assert(unsigned(zero_extend(0x31d0b14, 64)) == 52235028);
  assert(unsigned(zero_extend(0x31d0b18, 64)) == 52235032);
  assert(unsigned(zero_extend(0x31d0b1c, 64)) == 52235036);
  assert(unsigned(zero_extend(0x31d0b20, 64)) == 52235040);
  assert(unsigned(zero_extend(0x31d0b24, 64)) == 52235044);
  assert(unsigned(zero_extend(0x31d0b28, 64)) == 52235048);
  assert(unsigned(zero_extend(0x31d0b34, 64)) == 52235060);
  assert(unsigned(zero_extend(0x31d0b38, 64)) == 52235064);
  assert(unsigned(zero_extend(0x31d0b3c, 64)) == 52235068);
  assert(unsigned(zero_extend(0x31d0b40, 64)) == 52235072);
  assert(unsigned(zero_extend(0x31d0b50, 64)) == 52235088);
  assert(unsigned(zero_extend(0x31d0b54, 64)) == 52235092);
  assert(unsigned(zero_extend(0x31d0b58, 64)) == 52235096);
  assert(unsigned(zero_extend(0x31d0b5c, 64)) == 52235100);
  assert(unsigned(zero_extend(0x31d0b60, 64)) == 52235104);
  assert(unsigned(zero_extend(0x31d0b64, 64)) == 52235108);
  assert(unsigned(zero_extend(0x31d0b68, 64)) == 52235112);
  assert(unsigned(zero_extend(0x31d0b6c, 64)) == 52235116);
  assert(unsigned(zero_extend(0x31d0b70, 64)) == 52235120);
  assert(unsigned(zero_extend(0x31d0b74, 64)) == 52235124);
  assert(unsigned(zero_extend(0x31d0b78, 64)) == 52235128);
  assert(unsigned(zero_extend(0x31d0b7c, 64)) == 52235132);
  assert(unsigned(zero_extend(0x31d0b80, 64)) == 52235136);
  assert(unsigned(zero_extend(0x31d0b84, 64)) == 52235140);
  assert(unsigned(zero_extend(0x31d0b88, 64)) == 52235144);
  assert(unsigned(zero_extend(0x31d0b8c, 64)) == 52235148);
  assert(unsigned(zero_extend(0x31d0b90, 64)) == 52235152);
  assert(unsigned(zero_extend(0x31d0b94, 64)) == 52235156);
  assert(unsigned(zero_extend(0x31d0b98, 64)) == 52235160);
  assert(unsigned(zero_extend(0x31d0b9c, 64)) == 52235164);
  assert(unsigned(zero_extend(0x31d0ba0, 64)) == 52235168);
  assert(unsigned(zero_extend(0x31d0ba4, 64)) == 52235172);
  assert(unsigned(zero_extend(0x31d0ba8, 64)) == 52235176);
  assert(unsigned(zero_extend(0x31d0bac, 64)) == 52235180);
  assert(unsigned(zero_extend(0x31d0bb0, 64)) == 52235184);
  assert(unsigned(zero_extend(0x31d0bb4, 64)) == 52235188);
  assert(unsigned(zero_extend(0x31d0bb8, 64)) == 52235192);
  assert(unsigned(zero_extend(0x31d0bbc, 64)) == 52235196);
  assert(unsigned(zero_extend(0x31d0bc0, 64)) == 52235200);
  assert(unsigned(zero_extend(0x31d0bc4, 64)) == 52235204);
  assert(unsigned(zero_extend(0x31d0bc8, 64)) == 52235208);
  assert(unsigned(zero_extend(0x31d0bcc, 64)) == 52235212);
  assert(unsigned(zero_extend(0x31d0bd0, 64)) == 52235216);
  assert(unsigned(zero_extend(0x31d0bd4, 64)) == 52235220);
  assert(unsigned(zero_extend(0x31d0bd8, 64)) == 52235224);
  assert(unsigned(zero_extend(0x31d0bdc, 64)) == 52235228);
  assert(unsigned(zero_extend(0x31d0be0, 64)) == 52235232);
  assert(unsigned(zero_extend(0x31d0be4, 64)) == 52235236);
  assert(unsigned(zero_extend(0x31d0be8, 64)) == 52235240);
  assert(unsigned(zero_extend(0x31d0bec, 64)) == 52235244);
  assert(unsigned(zero_extend(0x31d0bf0, 64)) == 52235248);
  assert(unsigned(zero_extend(0x31d0bf4, 64)) == 52235252);
  assert(unsigned(zero_extend(0x31d0bf8, 64)) == 52235256);
  assert(unsigned(zero_extend(0x31d0bfc, 64)) == 52235260);
  assert(unsigned(zero_extend(0x31d0c00, 64)) == 52235264);
  assert(unsigned(zero_extend(0x31d0c04, 64)) == 52235268);
  assert(unsigned(zero_extend(0x31d0c08, 64)) == 52235272);
  assert(unsigned(zero_extend(0x31d0c0c, 64)) == 52235276);
  assert(unsigned(zero_extend(0x31d0c1c, 64)) == 52235292);
  assert(unsigned(zero_extend(0x31d0c20, 64)) == 52235296);
  assert(unsigned(zero_extend(0x31d0c24, 64)) == 52235300);
  assert(unsigned(zero_extend(0x31d0c28, 64)) == 52235304);
  assert(unsigned(zero_extend(0x31d0c2c, 64)) == 52235308);
  assert(unsigned(zero_extend(0x31d0c30, 64)) == 52235312);
  assert(unsigned(zero_extend(0x31d0c34, 64)) == 52235316);
  assert(unsigned(zero_extend(0x31d0c38, 64)) == 52235320);
  assert(unsigned(zero_extend(0x31d0c3c, 64)) == 52235324);
  assert(unsigned(zero_extend(0x31d0c48, 64)) == 52235336);
  assert(unsigned(zero_extend(0x31d0c4c, 64)) == 52235340);
  assert(unsigned(zero_extend(0x31d0c50, 64)) == 52235344);
  assert(unsigned(zero_extend(0x31d0c54, 64)) == 52235348);
  assert(unsigned(zero_extend(0x31d0c64, 64)) == 52235364);
  assert(unsigned(zero_extend(0x31d0c68, 64)) == 52235368);
  assert(unsigned(zero_extend(0x31d0c6c, 64)) == 52235372);
  assert(unsigned(zero_extend(0x31d0c70, 64)) == 52235376);
  assert(unsigned(zero_extend(0x31d0c74, 64)) == 52235380);
  assert(unsigned(zero_extend(0x31d0c78, 64)) == 52235384);
  assert(unsigned(zero_extend(0x31d0c7c, 64)) == 52235388);
  assert(unsigned(zero_extend(0x31d0c80, 64)) == 52235392);
  assert(unsigned(zero_extend(0x31d0c84, 64)) == 52235396);
  assert(unsigned(zero_extend(0x31d0c88, 64)) == 52235400);
  assert(unsigned(zero_extend(0x31d0c8c, 64)) == 52235404);
  assert(unsigned(zero_extend(0x31d0c90, 64)) == 52235408);
  assert(unsigned(zero_extend(0x31d0c94, 64)) == 52235412);
  assert(unsigned(zero_extend(0x31d0c98, 64)) == 52235416);
  assert(unsigned(zero_extend(0x31d0c9c, 64)) == 52235420);
  assert(unsigned(zero_extend(0x31d0ca0, 64)) == 52235424);
  assert(unsigned(zero_extend(0x31d0ca4, 64)) == 52235428);
  assert(unsigned(zero_extend(0x31d0ca8, 64)) == 52235432);
  assert(unsigned(zero_extend(0x31d0cac, 64)) == 52235436);
  assert(unsigned(zero_extend(0x31d0cb0, 64)) == 52235440);
  assert(unsigned(zero_extend(0x31d0cb4, 64)) == 52235444);
  assert(unsigned(zero_extend(0x31d0cb8, 64)) == 52235448);
  assert(unsigned(zero_extend(0x31d0cbc, 64)) == 52235452);
  assert(unsigned(zero_extend(0x31d0cc0, 64)) == 52235456);
  assert(unsigned(zero_extend(0x31d0cc4, 64)) == 52235460);
  assert(unsigned(zero_extend(0x31d0cc8, 64)) == 52235464);
  assert(unsigned(zero_extend(0x31d0ccc, 64)) == 52235468);
  assert(unsigned(zero_extend(0x31d0cd0, 64)) == 52235472);
  assert(unsigned(zero_extend(0x31d0cd4, 64)) == 52235476);
  assert(unsigned(zero_extend(0x31d0cd8, 64)) == 52235480);
  assert(unsigned(zero_extend(0x31d0cdc, 64)) == 52235484);
  assert(unsigned(zero_extend(0x31d0ce0, 64)) == 52235488);
  assert(unsigned(zero_extend(0x31d0ce4, 64)) == 52235492);
  assert(unsigned(zero_extend(0x31d0ce8, 64)) == 52235496);
  assert(unsigned(zero_extend(0x31d0cec, 64)) == 52235500);
  assert(unsigned(zero_extend(0x31d0cf0, 64)) == 52235504);
  assert(unsigned(zero_extend(0x31d0cf4, 64)) == 52235508);
  assert(unsigned(zero_extend(0x31d0cf8, 64)) == 52235512);
  assert(unsigned(zero_extend(0x31d0cfc, 64)) == 52235516);
  assert(unsigned(zero_extend(0x31d0d00, 64)) == 52235520);
  assert(unsigned(zero_extend(0x31d0d04, 64)) == 52235524);
  assert(unsigned(zero_extend(0x31d0d08, 64)) == 52235528);
  assert(unsigned(zero_extend(0x31d0d0c, 64)) == 52235532);
  assert(unsigned(zero_extend(0x31d0d10, 64)) == 52235536);
  assert(unsigned(zero_extend(0x31d0d14, 64)) == 52235540);
  assert(unsigned(zero_extend(0x31d0d24, 64)) == 52235556);
  assert(unsigned(zero_extend(0x31d0d28, 64)) == 52235560);
  assert(unsigned(zero_extend(0x31d0d2c, 64)) == 52235564);
  assert(unsigned(zero_extend(0x31d0d30, 64)) == 52235568);
  assert(unsigned(zero_extend(0x31d0d34, 64)) == 52235572);
  assert(unsigned(zero_extend(0x31d0d38, 64)) == 52235576);
  assert(unsigned(zero_extend(0x31d0d3c, 64)) == 52235580);
  assert(unsigned(zero_extend(0x31d0d48, 64)) == 52235592);
  assert(unsigned(zero_extend(0x31d0d4c, 64)) == 52235596);
  assert(unsigned(zero_extend(0x31d0d50, 64)) == 52235600);
  assert(unsigned(zero_extend(0x31d0d54, 64)) == 52235604);
  assert(unsigned(zero_extend(0x31d0d64, 64)) == 52235620);
  assert(unsigned(zero_extend(0x31d0d68, 64)) == 52235624);
  assert(unsigned(zero_extend(0x31d0d6c, 64)) == 52235628);
  assert(unsigned(zero_extend(0x31d0d70, 64)) == 52235632);
  assert(unsigned(zero_extend(0x31d0d74, 64)) == 52235636);
  assert(unsigned(zero_extend(0x31d0d78, 64)) == 52235640);
  assert(unsigned(zero_extend(0x31d0d7c, 64)) == 52235644);
  assert(unsigned(zero_extend(0x31d0d80, 64)) == 52235648);
  assert(unsigned(zero_extend(0x31d0d84, 64)) == 52235652);
  assert(unsigned(zero_extend(0x31d0d88, 64)) == 52235656);
  assert(unsigned(zero_extend(0x31d0d8c, 64)) == 52235660);
  assert(unsigned(zero_extend(0x31d0d90, 64)) == 52235664);
  assert(unsigned(zero_extend(0x31d0d94, 64)) == 52235668);
  assert(unsigned(zero_extend(0x31d0d98, 64)) == 52235672);
  assert(unsigned(zero_extend(0x31d0d9c, 64)) == 52235676);
  assert(unsigned(zero_extend(0x31d0da0, 64)) == 52235680);
  assert(unsigned(zero_extend(0x31d0da4, 64)) == 52235684);
  assert(unsigned(zero_extend(0x31d0da8, 64)) == 52235688);
  assert(unsigned(zero_extend(0x31d0dac, 64)) == 52235692);
  assert(unsigned(zero_extend(0x31d0db0, 64)) == 52235696);
  assert(unsigned(zero_extend(0x31d0db4, 64)) == 52235700);
  assert(unsigned(zero_extend(0x31d0db8, 64)) == 52235704);
  assert(unsigned(zero_extend(0x31d0dbc, 64)) == 52235708);
  assert(unsigned(zero_extend(0x31d0dc0, 64)) == 52235712);
  assert(unsigned(zero_extend(0x31d0dc4, 64)) == 52235716);
  assert(unsigned(zero_extend(0x31d0dc8, 64)) == 52235720);
  assert(unsigned(zero_extend(0x31d0dcc, 64)) == 52235724);
  assert(unsigned(zero_extend(0x31d0dd0, 64)) == 52235728);
  assert(unsigned(zero_extend(0x31d0dd4, 64)) == 52235732);
  assert(unsigned(zero_extend(0x31d0dd8, 64)) == 52235736);
  assert(unsigned(zero_extend(0x31d0ddc, 64)) == 52235740);
  assert(unsigned(zero_extend(0x31d0de0, 64)) == 52235744);
  assert(unsigned(zero_extend(0x31d0de4, 64)) == 52235748);
  assert(unsigned(zero_extend(0x31d0de8, 64)) == 52235752);
  assert(unsigned(zero_extend(0x31d0dec, 64)) == 52235756);
  assert(unsigned(zero_extend(0x31d0df0, 64)) == 52235760);
  assert(unsigned(zero_extend(0x31d0df4, 64)) == 52235764);
  assert(unsigned(zero_extend(0x31d0df8, 64)) == 52235768);
  assert(unsigned(zero_extend(0x31d0dfc, 64)) == 52235772);
  assert(unsigned(zero_extend(0x31d0e00, 64)) == 52235776);
  assert(unsigned(zero_extend(0x31d0e04, 64)) == 52235780);
  assert(unsigned(zero_extend(0x31d0e08, 64)) == 52235784);
  assert(unsigned(zero_extend(0x31d0e0c, 64)) == 52235788);
  assert(unsigned(zero_extend(0x31d0e10, 64)) == 52235792);
  assert(unsigned(zero_extend(0x31d0e14, 64)) == 52235796);
  assert(unsigned(zero_extend(0x31d0e18, 64)) == 52235800);
  assert(unsigned(zero_extend(0x31d0e1c, 64)) == 52235804);
  assert(unsigned(zero_extend(0x31d0e20, 64)) == 52235808);
  assert(unsigned(zero_extend(0x31d0e24, 64)) == 52235812);
  assert(unsigned(zero_extend(0x31d0e28, 64)) == 52235816);
  assert(unsigned(zero_extend(0x31d0e2c, 64)) == 52235820);
  assert(unsigned(zero_extend(0x31d0e30, 64)) == 52235824);
  assert(unsigned(zero_extend(0x31d0e34, 64)) == 52235828);
  assert(unsigned(zero_extend(0x31d0e38, 64)) == 52235832);
  assert(unsigned(zero_extend(0x31d0e40, 64)) == 52235840);
  assert(unsigned(zero_extend(0x31d0e48, 64)) == 52235848);
  assert(unsigned(zero_extend(0x31d0e50, 64)) == 52235856);
  assert(unsigned(zero_extend(0x31d0e58, 64)) == 52235864);
  assert(unsigned(zero_extend(0x31d0e5c, 64)) == 52235868);
  assert(unsigned(zero_extend(0x31d0e60, 64)) == 52235872);
  assert(unsigned(zero_extend(0x31d0e64, 64)) == 52235876);
  assert(unsigned(zero_extend(0x31d0e68, 64)) == 52235880);
  assert(unsigned(zero_extend(0x31d0e6c, 64)) == 52235884);
  assert(unsigned(zero_extend(0x31d0e70, 64)) == 52235888);
  assert(unsigned(zero_extend(0x31d0e74, 64)) == 52235892);
  assert(unsigned(zero_extend(0x31d0e78, 64)) == 52235896);
  assert(unsigned(zero_extend(0x31d0e7c, 64)) == 52235900);
  assert(unsigned(zero_extend(0x31d0e80, 64)) == 52235904);
  assert(unsigned(zero_extend(0x31d0e84, 64)) == 52235908);
  assert(unsigned(zero_extend(0x31d0e88, 64)) == 52235912);
  assert(unsigned(zero_extend(0x31d0e8c, 64)) == 52235916);
  assert(unsigned(zero_extend(0x31d0f3c, 64)) == 52236092);
  assert(unsigned(zero_extend(0x31d0f40, 64)) == 52236096);
  assert(unsigned(zero_extend(0x31d0f44, 64)) == 52236100);
  assert(unsigned(zero_extend(0x31d0f48, 64)) == 52236104);
  assert(unsigned(zero_extend(0x31d0f4c, 64)) == 52236108);
  assert(unsigned(zero_extend(0x31d0f50, 64)) == 52236112);
  assert(unsigned(zero_extend(0x31d0f54, 64)) == 52236116);
  assert(unsigned(zero_extend(0x31d0f58, 64)) == 52236120);
  assert(unsigned(zero_extend(0x31d0f5c, 64)) == 52236124);
  assert(unsigned(zero_extend(0x31d0f60, 64)) == 52236128);
  assert(unsigned(zero_extend(0x31d0f64, 64)) == 52236132);
  assert(unsigned(zero_extend(0x31d0f68, 64)) == 52236136);
  assert(unsigned(zero_extend(0x31d0f6c, 64)) == 52236140);
  assert(unsigned(zero_extend(0x31d0f70, 64)) == 52236144);
  assert(unsigned(zero_extend(0x31d0f74, 64)) == 52236148);
  assert(unsigned(zero_extend(0x31d0f78, 64)) == 52236152);
  assert(unsigned(zero_extend(0x31d0f7c, 64)) == 52236156);
  assert(unsigned(zero_extend(0x31d0f8c, 64)) == 52236172);
  assert(unsigned(zero_extend(0x31d0f90, 64)) == 52236176);
  assert(unsigned(zero_extend(0x31d0f94, 64)) == 52236180);
  assert(unsigned(zero_extend(0x31d0f98, 64)) == 52236184);
  assert(unsigned(zero_extend(0x31d0f9c, 64)) == 52236188);
  assert(unsigned(zero_extend(0x31d0fa0, 64)) == 52236192);
  assert(unsigned(zero_extend(0x31d0fb0, 64)) == 52236208);
  assert(unsigned(zero_extend(0x31d0fb4, 64)) == 52236212);
  assert(unsigned(zero_extend(0x31d0fb8, 64)) == 52236216);
  assert(unsigned(zero_extend(0x31d0fbc, 64)) == 52236220);
  assert(unsigned(zero_extend(0x31d0fc0, 64)) == 52236224);
  assert(unsigned(zero_extend(0x31d0fc4, 64)) == 52236228);
  assert(unsigned(zero_extend(0x31d105c, 64)) == 52236380);
  assert(unsigned(zero_extend(0x31d1060, 64)) == 52236384);
  assert(unsigned(zero_extend(0x31d1064, 64)) == 52236388);
  assert(unsigned(zero_extend(0x31d1068, 64)) == 52236392);
  assert(unsigned(zero_extend(0x31d106c, 64)) == 52236396);
  assert(unsigned(zero_extend(0x31d1078, 64)) == 52236408);
  assert(unsigned(zero_extend(0x31d107c, 64)) == 52236412);
  assert(unsigned(zero_extend(0x31d1080, 64)) == 52236416);
  assert(unsigned(zero_extend(0x31d1084, 64)) == 52236420);
  assert(unsigned(zero_extend(0x31d1088, 64)) == 52236424);
  assert(unsigned(zero_extend(0x31d108c, 64)) == 52236428);
  assert(unsigned(zero_extend(0x31d1090, 64)) == 52236432);
  assert(unsigned(zero_extend(0x31d1094, 64)) == 52236436);
  assert(unsigned(zero_extend(0x31d10a0, 64)) == 52236448);
  assert(unsigned(zero_extend(0x31d10a4, 64)) == 52236452);
  assert(unsigned(zero_extend(0x31d10a8, 64)) == 52236456);
  assert(unsigned(zero_extend(0x31d10b0, 64)) == 52236464);
  assert(unsigned(zero_extend(0x31d10b8, 64)) == 52236472);
  assert(unsigned(zero_extend(0x31d10bc, 64)) == 52236476);
  assert(unsigned(zero_extend(0x31d10c0, 64)) == 52236480);
  assert(unsigned(zero_extend(0x31d10c4, 64)) == 52236484);
  assert(unsigned(zero_extend(0x31d10c8, 64)) == 52236488);
  assert(unsigned(zero_extend(0x31d10cc, 64)) == 52236492);
  assert(unsigned(zero_extend(0x31d10d0, 64)) == 52236496);
  assert(unsigned(zero_extend(0x31d10d4, 64)) == 52236500);
  assert(unsigned(zero_extend(0x31d10d8, 64)) == 52236504);
  assert(unsigned(zero_extend(0x31d10dc, 64)) == 52236508);
  assert(unsigned(zero_extend(0x31d10e0, 64)) == 52236512);
  assert(unsigned(zero_extend(0x31d10e4, 64)) == 52236516);
  assert(unsigned(zero_extend(0x31d10e8, 64)) == 52236520);
  assert(unsigned(zero_extend(0x31d10ec, 64)) == 52236524);
  assert(unsigned(zero_extend(0x31d10f0, 64)) == 52236528);
  assert(unsigned(zero_extend(0x31d10f4, 64)) == 52236532);
  assert(unsigned(zero_extend(0x31d10f8, 64)) == 52236536);
  assert(unsigned(zero_extend(0x31d1100, 64)) == 52236544);
  assert(unsigned(zero_extend(0x31d1108, 64)) == 52236552);
  assert(unsigned(zero_extend(0x31d1110, 64)) == 52236560);
  assert(unsigned(zero_extend(0x31d1118, 64)) == 52236568);
  assert(unsigned(zero_extend(0x31d111c, 64)) == 52236572);
  assert(unsigned(zero_extend(0x31d1120, 64)) == 52236576);
  assert(unsigned(zero_extend(0x31d1124, 64)) == 52236580);
  assert(unsigned(zero_extend(0x31d1128, 64)) == 52236584);
  assert(unsigned(zero_extend(0x31d112c, 64)) == 52236588);
  assert(unsigned(zero_extend(0x31d1130, 64)) == 52236592);
  assert(unsigned(zero_extend(0x31d1134, 64)) == 52236596);
  assert(unsigned(zero_extend(0x31d1138, 64)) == 52236600);
  assert(unsigned(zero_extend(0x31d113c, 64)) == 52236604);
  assert(unsigned(zero_extend(0x31d1140, 64)) == 52236608);
  assert(unsigned(zero_extend(0x31d1144, 64)) == 52236612);
  assert(unsigned(zero_extend(0x31d1148, 64)) == 52236616);
  assert(unsigned(zero_extend(0x31d114c, 64)) == 52236620);
  assert(unsigned(zero_extend(0x31d1150, 64)) == 52236624);
  assert(unsigned(zero_extend(0x31d1154, 64)) == 52236628);
  assert(unsigned(zero_extend(0x31d1158, 64)) == 52236632);
  assert(unsigned(zero_extend(0x31d115c, 64)) == 52236636);
  assert(unsigned(zero_extend(0x31d1160, 64)) == 52236640);
  assert(unsigned(zero_extend(0x31d1164, 64)) == 52236644);
  assert(unsigned(zero_extend(0x31d1168, 64)) == 52236648);
  assert(unsigned(zero_extend(0x31d1170, 64)) == 52236656);
  assert(unsigned(zero_extend(0x31d1178, 64)) == 52236664);
  assert(unsigned(zero_extend(0x31d1180, 64)) == 52236672);
  assert(unsigned(zero_extend(0x31d1184, 64)) == 52236676);
  assert(unsigned(zero_extend(0x31d1188, 64)) == 52236680);
  assert(unsigned(zero_extend(0x31d118c, 64)) == 52236684);
  assert(unsigned(zero_extend(0x31d1190, 64)) == 52236688);
  assert(unsigned(zero_extend(0x31d1194, 64)) == 52236692);
  assert(unsigned(zero_extend(0x31d1198, 64)) == 52236696);
  assert(unsigned(zero_extend(0x31d119c, 64)) == 52236700);
  assert(unsigned(zero_extend(0x31d11a0, 64)) == 52236704);
  assert(unsigned(zero_extend(0x31d11a4, 64)) == 52236708);
  assert(unsigned(zero_extend(0x31d11a8, 64)) == 52236712);
  assert(unsigned(zero_extend(0x31d11ac, 64)) == 52236716);
  assert(unsigned(zero_extend(0x31d11b0, 64)) == 52236720);
  assert(unsigned(zero_extend(0x31d11b4, 64)) == 52236724);
  assert(unsigned(zero_extend(0x31d11b8, 64)) == 52236728);
  assert(unsigned(zero_extend(0x31d11bc, 64)) == 52236732);
  assert(unsigned(zero_extend(0x31d11c0, 64)) == 52236736);
  assert(unsigned(zero_extend(0x31d11c4, 64)) == 52236740);
  assert(unsigned(zero_extend(0x31d11c8, 64)) == 52236744);
  assert(unsigned(zero_extend(0x31d11cc, 64)) == 52236748);
  assert(unsigned(zero_extend(0x31d11d0, 64)) == 52236752);
  assert(unsigned(zero_extend(0x31d11d4, 64)) == 52236756);
  assert(unsigned(zero_extend(0x31d11d8, 64)) == 52236760);
  assert(unsigned(zero_extend(0x31d11dc, 64)) == 52236764);
  assert(unsigned(zero_extend(0x31d11e0, 64)) == 52236768);
  assert(unsigned(zero_extend(0x31d11ec, 64)) == 52236780);
  assert(unsigned(zero_extend(0x31d11f0, 64)) == 52236784);
  assert(unsigned(zero_extend(0x31d11f8, 64)) == 52236792);
  assert(unsigned(zero_extend(0x31d11fc, 64)) == 52236796);
  assert(unsigned(zero_extend(0x31d1200, 64)) == 52236800);
  assert(unsigned(zero_extend(0x31d1204, 64)) == 52236804);
  assert(unsigned(zero_extend(0x31d1208, 64)) == 52236808);
  assert(unsigned(zero_extend(0x31d120c, 64)) == 52236812);
  assert(unsigned(zero_extend(0x31d1220, 64)) == 52236832);
  assert(unsigned(zero_extend(0x31d1224, 64)) == 52236836);
  assert(unsigned(zero_extend(0x31d1254, 64)) == 52236884);
  assert(unsigned(zero_extend(0x31d1258, 64)) == 52236888);
  assert(unsigned(zero_extend(0x31d125c, 64)) == 52236892);
  assert(unsigned(zero_extend(0x31d129c, 64)) == 52236956);
  assert(unsigned(zero_extend(0x31d12a0, 64)) == 52236960);
  assert(unsigned(zero_extend(0x31d12a4, 64)) == 52236964);
  assert(unsigned(zero_extend(0x31d12a8, 64)) == 52236968);
  assert(unsigned(zero_extend(0x31d12ac, 64)) == 52236972);
  assert(unsigned(zero_extend(0x31d12b0, 64)) == 52236976);
  assert(unsigned(zero_extend(0x31d12b4, 64)) == 52236980);
  assert(unsigned(zero_extend(0x31d12b8, 64)) == 52236984);
  assert(unsigned(zero_extend(0x31d12bc, 64)) == 52236988);
  assert(unsigned(zero_extend(0x31d12c0, 64)) == 52236992);
  assert(unsigned(zero_extend(0x31d12c4, 64)) == 52236996);
  assert(unsigned(zero_extend(0x31d12c8, 64)) == 52237000);
  assert(unsigned(zero_extend(0x31d12cc, 64)) == 52237004);
  assert(unsigned(zero_extend(0x31d12d0, 64)) == 52237008);
  assert(unsigned(zero_extend(0x31d12d4, 64)) == 52237012);
  assert(unsigned(zero_extend(0x31d12d8, 64)) == 52237016);
  assert(unsigned(zero_extend(0x31d12dc, 64)) == 52237020);
  assert(unsigned(zero_extend(0x31d12e0, 64)) == 52237024);
  assert(unsigned(zero_extend(0x31d12e4, 64)) == 52237028);
  assert(unsigned(zero_extend(0x31d12e8, 64)) == 52237032);
  assert(unsigned(zero_extend(0x31d12ec, 64)) == 52237036);
  assert(unsigned(zero_extend(0x31d12f0, 64)) == 52237040);
  assert(unsigned(zero_extend(0x31d12f4, 64)) == 52237044);
  assert(unsigned(zero_extend(0x31d12f8, 64)) == 52237048);
  assert(unsigned(zero_extend(0x31d12fc, 64)) == 52237052);
  assert(unsigned(zero_extend(0x31d1300, 64)) == 52237056);
  assert(unsigned(zero_extend(0x31d1304, 64)) == 52237060);
  assert(unsigned(zero_extend(0x31d1308, 64)) == 52237064);
  assert(unsigned(zero_extend(0x31d130c, 64)) == 52237068);
  assert(unsigned(zero_extend(0x31d1310, 64)) == 52237072);
  assert(unsigned(zero_extend(0x31d1314, 64)) == 52237076);
  assert(unsigned(zero_extend(0x31d1318, 64)) == 52237080);
  assert(unsigned(zero_extend(0x31d131c, 64)) == 52237084);
  assert(unsigned(zero_extend(0x31d1320, 64)) == 52237088);
  assert(unsigned(zero_extend(0x31d1324, 64)) == 52237092);
  assert(unsigned(zero_extend(0x31d1328, 64)) == 52237096);
  assert(unsigned(zero_extend(0x31d132c, 64)) == 52237100);
  assert(unsigned(zero_extend(0x31d1330, 64)) == 52237104);
  assert(unsigned(zero_extend(0x31d1334, 64)) == 52237108);
  assert(unsigned(zero_extend(0x31d1338, 64)) == 52237112);
  assert(unsigned(zero_extend(0x31d133c, 64)) == 52237116);
  assert(unsigned(zero_extend(0x31d1340, 64)) == 52237120);
  assert(unsigned(zero_extend(0x31d1344, 64)) == 52237124);
  assert(unsigned(zero_extend(0x31d1348, 64)) == 52237128);
  assert(unsigned(zero_extend(0x31d134c, 64)) == 52237132);
  assert(unsigned(zero_extend(0x31d1350, 64)) == 52237136);
  assert(unsigned(zero_extend(0x31d1354, 64)) == 52237140);
  assert(unsigned(zero_extend(0x31d1358, 64)) == 52237144);
  assert(unsigned(zero_extend(0x31d135c, 64)) == 52237148);
  assert(unsigned(zero_extend(0x31d1360, 64)) == 52237152);
  assert(unsigned(zero_extend(0x31d1364, 64)) == 52237156);
  assert(unsigned(zero_extend(0x31d1368, 64)) == 52237160);
  assert(unsigned(zero_extend(0x31d136c, 64)) == 52237164);
  assert(unsigned(zero_extend(0x31d1370, 64)) == 52237168);
  assert(unsigned(zero_extend(0x31d1374, 64)) == 52237172);
  assert(unsigned(zero_extend(0x31d1378, 64)) == 52237176);
  assert(unsigned(zero_extend(0x31d137c, 64)) == 52237180);
  assert(unsigned(zero_extend(0x31d1380, 64)) == 52237184);
  assert(unsigned(zero_extend(0x31d1384, 64)) == 52237188);
  assert(unsigned(zero_extend(0x31d1388, 64)) == 52237192);
  assert(unsigned(zero_extend(0x31d1390, 64)) == 52237200);
  assert(unsigned(zero_extend(0x31d1398, 64)) == 52237208);
  assert(unsigned(zero_extend(0x31d13a0, 64)) == 52237216);
  assert(unsigned(zero_extend(0x31d13a8, 64)) == 52237224);
  assert(unsigned(zero_extend(0x31d13b0, 64)) == 52237232);
  assert(unsigned(zero_extend(0x31d13b8, 64)) == 52237240);
  assert(unsigned(zero_extend(0x31d13c0, 64)) == 52237248);
  assert(unsigned(zero_extend(0x31d13c8, 64)) == 52237256);
  assert(unsigned(zero_extend(0x31d13d0, 64)) == 52237264);
  assert(unsigned(zero_extend(0x31d13d8, 64)) == 52237272);
  assert(unsigned(zero_extend(0x31d13e0, 64)) == 52237280);
  assert(unsigned(zero_extend(0x31d13e8, 64)) == 52237288);
  assert(unsigned(zero_extend(0x31d13f0, 64)) == 52237296);
  assert(unsigned(zero_extend(0x31d13f8, 64)) == 52237304);
  assert(unsigned(zero_extend(0x31d1400, 64)) == 52237312);
  assert(unsigned(zero_extend(0x31d1408, 64)) == 52237320);
  assert(unsigned(zero_extend(0x31d1410, 64)) == 52237328);
  assert(unsigned(zero_extend(0x31d1418, 64)) == 52237336);
  assert(unsigned(zero_extend(0x31d1420, 64)) == 52237344);
  assert(unsigned(zero_extend(0x31d1428, 64)) == 52237352);
  assert(unsigned(zero_extend(0x31d1430, 64)) == 52237360);
  assert(unsigned(zero_extend(0x31d1438, 64)) == 52237368);
  assert(unsigned(zero_extend(0x31d1440, 64)) == 52237376);
  assert(unsigned(zero_extend(0x31d1448, 64)) == 52237384);
  assert(unsigned(zero_extend(0x31d1450, 64)) == 52237392);
  assert(unsigned(zero_extend(0x31d1458, 64)) == 52237400);
  assert(unsigned(zero_extend(0x31d1460, 64)) == 52237408);
  assert(unsigned(zero_extend(0x31d1468, 64)) == 52237416);
  assert(unsigned(zero_extend(0x31d1470, 64)) == 52237424);
  assert(unsigned(zero_extend(0x31d1478, 64)) == 52237432);
  assert(unsigned(zero_extend(0x31d1480, 64)) == 52237440);
  assert(unsigned(zero_extend(0x31d1488, 64)) == 52237448);
  assert(unsigned(zero_extend(0x31d1490, 64)) == 52237456);
  assert(unsigned(zero_extend(0x31d1498, 64)) == 52237464);
  assert(unsigned(zero_extend(0x31d14a0, 64)) == 52237472);
  assert(unsigned(zero_extend(0x31d14a8, 64)) == 52237480);
  assert(unsigned(zero_extend(0x31d14b0, 64)) == 52237488);
  assert(unsigned(zero_extend(0x31d14b8, 64)) == 52237496);
  assert(unsigned(zero_extend(0x31d14c0, 64)) == 52237504);
  assert(unsigned(zero_extend(0x31d14c8, 64)) == 52237512);
  assert(unsigned(zero_extend(0x31d14d0, 64)) == 52237520);
  assert(unsigned(zero_extend(0x31d14d8, 64)) == 52237528);
  assert(unsigned(zero_extend(0x31d14e0, 64)) == 52237536);
  assert(unsigned(zero_extend(0x31d14e8, 64)) == 52237544);
  assert(unsigned(zero_extend(0x31d14f0, 64)) == 52237552);
  assert(unsigned(zero_extend(0x31d14f8, 64)) == 52237560);
  assert(unsigned(zero_extend(0x31d1500, 64)) == 52237568);
  assert(unsigned(zero_extend(0x31d1508, 64)) == 52237576);
  assert(unsigned(zero_extend(0x31d1510, 64)) == 52237584);
  assert(unsigned(zero_extend(0x31d1518, 64)) == 52237592);
  assert(unsigned(zero_extend(0x31d1520, 64)) == 52237600);
  assert(unsigned(zero_extend(0x31d1528, 64)) == 52237608);
  assert(unsigned(zero_extend(0x31d1530, 64)) == 52237616);
  assert(unsigned(zero_extend(0x31d1538, 64)) == 52237624);
  assert(unsigned(zero_extend(0x31d1540, 64)) == 52237632);
  assert(unsigned(zero_extend(0x31d1548, 64)) == 52237640);
  assert(unsigned(zero_extend(0x31d1550, 64)) == 52237648);
  assert(unsigned(zero_extend(0x31d1558, 64)) == 52237656);
  assert(unsigned(zero_extend(0x31d1560, 64)) == 52237664);
  assert(unsigned(zero_extend(0x31d1568, 64)) == 52237672);
  assert(unsigned(zero_extend(0x31d1570, 64)) == 52237680);
  assert(unsigned(zero_extend(0x31d1578, 64)) == 52237688);
  assert(unsigned(zero_extend(0x31d1580, 64)) == 52237696);
  assert(unsigned(zero_extend(0x31d1588, 64)) == 52237704);
  assert(unsigned(zero_extend(0x31d1590, 64)) == 52237712);
  assert(unsigned(zero_extend(0x31d1598, 64)) == 52237720);
  assert(unsigned(zero_extend(0x31d15a0, 64)) == 52237728);
  assert(unsigned(zero_extend(0x31d15a8, 64)) == 52237736);
  assert(unsigned(zero_extend(0x31d15b0, 64)) == 52237744);
  assert(unsigned(zero_extend(0x31d15b8, 64)) == 52237752);
  assert(unsigned(zero_extend(0x31d15c0, 64)) == 52237760);
  assert(unsigned(zero_extend(0x31d15c8, 64)) == 52237768);
  assert(unsigned(zero_extend(0x31d15d0, 64)) == 52237776);
  assert(unsigned(zero_extend(0x31d15d8, 64)) == 52237784);
  assert(unsigned(zero_extend(0x31d15e0, 64)) == 52237792);
  assert(unsigned(zero_extend(0x31d15e8, 64)) == 52237800);
  assert(unsigned(zero_extend(0x31d15f0, 64)) == 52237808);
  assert(unsigned(zero_extend(0x31d15f8, 64)) == 52237816);
  assert(unsigned(zero_extend(0x31d1600, 64)) == 52237824);
  assert(unsigned(zero_extend(0x31d1608, 64)) == 52237832);
  assert(unsigned(zero_extend(0x31d1610, 64)) == 52237840);
  assert(unsigned(zero_extend(0x31d1618, 64)) == 52237848);
  assert(unsigned(zero_extend(0x31d1620, 64)) == 52237856);
  assert(unsigned(zero_extend(0x31d1628, 64)) == 52237864);
  assert(unsigned(zero_extend(0x31d1630, 64)) == 52237872);
  assert(unsigned(zero_extend(0x31d1638, 64)) == 52237880);
  assert(unsigned(zero_extend(0x31d1640, 64)) == 52237888);
  assert(unsigned(zero_extend(0x31d1648, 64)) == 52237896);
  assert(unsigned(zero_extend(0x31d1650, 64)) == 52237904);
  assert(unsigned(zero_extend(0x31d1658, 64)) == 52237912);
  assert(unsigned(zero_extend(0x31d1660, 64)) == 52237920);
  assert(unsigned(zero_extend(0x31d1668, 64)) == 52237928);
  assert(unsigned(zero_extend(0x31d1670, 64)) == 52237936);
  assert(unsigned(zero_extend(0x31d1678, 64)) == 52237944);
  assert(unsigned(zero_extend(0x31d1680, 64)) == 52237952);
  assert(unsigned(zero_extend(0x31d1688, 64)) == 52237960);
  assert(unsigned(zero_extend(0x31d1690, 64)) == 52237968);
  assert(unsigned(zero_extend(0x31d1698, 64)) == 52237976);
  assert(unsigned(zero_extend(0x31d16a0, 64)) == 52237984);
  assert(unsigned(zero_extend(0x31d16a8, 64)) == 52237992);
  assert(unsigned(zero_extend(0x31d16b0, 64)) == 52238000);
  assert(unsigned(zero_extend(0x31d16b8, 64)) == 52238008);
  assert(unsigned(zero_extend(0x31d16c0, 64)) == 52238016);
  assert(unsigned(zero_extend(0x31d16c8, 64)) == 52238024);
  assert(unsigned(zero_extend(0x31d16d0, 64)) == 52238032);
  assert(unsigned(zero_extend(0x31d16d8, 64)) == 52238040);
  assert(unsigned(zero_extend(0x31d16e0, 64)) == 52238048);
  assert(unsigned(zero_extend(0x31d16e8, 64)) == 52238056);
  assert(unsigned(zero_extend(0x31d16f0, 64)) == 52238064);
  assert(unsigned(zero_extend(0x31d16f8, 64)) == 52238072);
  assert(unsigned(zero_extend(0x31d1700, 64)) == 52238080);
  assert(unsigned(zero_extend(0x31d1708, 64)) == 52238088);
  assert(unsigned(zero_extend(0x31d1710, 64)) == 52238096);
  assert(unsigned(zero_extend(0x31d1718, 64)) == 52238104);
  assert(unsigned(zero_extend(0x31d1720, 64)) == 52238112);
  assert(unsigned(zero_extend(0x31d1728, 64)) == 52238120);
  assert(unsigned(zero_extend(0x31d1730, 64)) == 52238128);
  assert(unsigned(zero_extend(0x31d1738, 64)) == 52238136);
  assert(unsigned(zero_extend(0x31d1740, 64)) == 52238144);
  assert(unsigned(zero_extend(0x31d1748, 64)) == 52238152);
  assert(unsigned(zero_extend(0x31d1750, 64)) == 52238160);
  assert(unsigned(zero_extend(0x31d1758, 64)) == 52238168);
  assert(unsigned(zero_extend(0x31d1760, 64)) == 52238176);
  assert(unsigned(zero_extend(0x31d1768, 64)) == 52238184);
  assert(unsigned(zero_extend(0x31d1770, 64)) == 52238192);
  assert(unsigned(zero_extend(0x31d1778, 64)) == 52238200);
  assert(unsigned(zero_extend(0x31d1780, 64)) == 52238208);
  assert(unsigned(zero_extend(0x31d17d0, 64)) == 52238288);
  assert(unsigned(zero_extend(0x31d17d4, 64)) == 52238292);
  assert(unsigned(zero_extend(0x31d17e0, 64)) == 52238304);
  assert(unsigned(zero_extend(0x31d17e8, 64)) == 52238312);
  assert(unsigned(zero_extend(0x31d17f0, 64)) == 52238320);
  assert(unsigned(zero_extend(0x31d17f4, 64)) == 52238324);
  assert(unsigned(zero_extend(0x31d17f8, 64)) == 52238328);
  assert(unsigned(zero_extend(0x31d1800, 64)) == 52238336);
  assert(unsigned(zero_extend(0x31d1808, 64)) == 52238344);
  assert(unsigned(zero_extend(0x31d1810, 64)) == 52238352);
  assert(unsigned(zero_extend(0x31d1818, 64)) == 52238360);
  assert(unsigned(zero_extend(0x31d1820, 64)) == 52238368);
  assert(unsigned(zero_extend(0x31d1828, 64)) == 52238376);
  assert(unsigned(zero_extend(0x31d1830, 64)) == 52238384);
  assert(unsigned(zero_extend(0x31d1838, 64)) == 52238392);
  assert(unsigned(zero_extend(0x31d1840, 64)) == 52238400);
  assert(unsigned(zero_extend(0x31d1848, 64)) == 52238408);
  assert(unsigned(zero_extend(0x31d1850, 64)) == 52238416);
  assert(unsigned(zero_extend(0x31d1858, 64)) == 52238424);
  assert(unsigned(zero_extend(0x31d1860, 64)) == 52238432);
  assert(unsigned(zero_extend(0x31d1868, 64)) == 52238440);
  assert(unsigned(zero_extend(0x31d1870, 64)) == 52238448);
  assert(unsigned(zero_extend(0x31d1878, 64)) == 52238456);
  assert(unsigned(zero_extend(0x31d1880, 64)) == 52238464);
  assert(unsigned(zero_extend(0x31d1888, 64)) == 52238472);
  assert(unsigned(zero_extend(0x31d1890, 64)) == 52238480);
  assert(unsigned(zero_extend(0x31d1898, 64)) == 52238488);
  assert(unsigned(zero_extend(0x31d18a0, 64)) == 52238496);
  assert(unsigned(zero_extend(0x31d18a8, 64)) == 52238504);
  assert(unsigned(zero_extend(0x31d18b0, 64)) == 52238512);
  assert(unsigned(zero_extend(0x31d18b8, 64)) == 52238520);
  assert(unsigned(zero_extend(0x31d18c0, 64)) == 52238528);
  assert(unsigned(zero_extend(0x31d18d0, 64)) == 52238544);
  assert(unsigned(zero_extend(0x31d18d8, 64)) == 52238552);
  assert(unsigned(zero_extend(0x31d18e0, 64)) == 52238560);
  assert(unsigned(zero_extend(0x31d18e8, 64)) == 52238568);
  assert(unsigned(zero_extend(0x31d18f0, 64)) == 52238576);
  assert(unsigned(zero_extend(0x31d18f8, 64)) == 52238584);
  assert(unsigned(zero_extend(0x31d1900, 64)) == 52238592);
  assert(unsigned(zero_extend(0x31d1908, 64)) == 52238600);
  assert(unsigned(zero_extend(0x31d1910, 64)) == 52238608);
  assert(unsigned(zero_extend(0x31d1918, 64)) == 52238616);
  assert(unsigned(zero_extend(0x31d1920, 64)) == 52238624);
  assert(unsigned(zero_extend(0x31d1928, 64)) == 52238632);
  assert(unsigned(zero_extend(0x31d1930, 64)) == 52238640);
  assert(unsigned(zero_extend(0x31d1938, 64)) == 52238648);
  assert(unsigned(zero_extend(0x31d1940, 64)) == 52238656);
  assert(unsigned(zero_extend(0x31d1948, 64)) == 52238664);
  assert(unsigned(zero_extend(0x31d1950, 64)) == 52238672);
  assert(unsigned(zero_extend(0x31d1958, 64)) == 52238680);
  assert(unsigned(zero_extend(0x31d1960, 64)) == 52238688);
  assert(unsigned(zero_extend(0x31d1968, 64)) == 52238696);
  assert(unsigned(zero_extend(0x31d1970, 64)) == 52238704);
  assert(unsigned(zero_extend(0x31d1980, 64)) == 52238720);
  assert(unsigned(zero_extend(0x31d1b80, 64)) == 52239232);
  assert(unsigned(zero_extend(0x31d1b88, 64)) == 52239240);
  assert(unsigned(zero_extend(0x31d1b90, 64)) == 52239248);
  assert(unsigned(zero_extend(0x31d1b98, 64)) == 52239256);
  assert(unsigned(zero_extend(0x31d1ba0, 64)) == 52239264);
  assert(unsigned(zero_extend(0x31d1ba8, 64)) == 52239272);
  assert(unsigned(zero_extend(0x31d1bb0, 64)) == 52239280);
  assert(unsigned(zero_extend(0x31d1bb8, 64)) == 52239288);
  assert(unsigned(zero_extend(0x31d1bc0, 64)) == 52239296);
  assert(unsigned(zero_extend(0x31d1bc8, 64)) == 52239304);
  assert(unsigned(zero_extend(0x31d1bd0, 64)) == 52239312);
  assert(unsigned(zero_extend(0x31d1bd8, 64)) == 52239320);
  assert(unsigned(zero_extend(0x31d1be0, 64)) == 52239328);
  assert(unsigned(zero_extend(0x31d1be8, 64)) == 52239336);
  assert(unsigned(zero_extend(0x31d1bf0, 64)) == 52239344);
  assert(unsigned(zero_extend(0x31d1bf8, 64)) == 52239352);
  assert(unsigned(zero_extend(0x31d1c00, 64)) == 52239360);
  assert(unsigned(zero_extend(0x31d1c08, 64)) == 52239368);
  assert(unsigned(zero_extend(0x31d1c10, 64)) == 52239376);
  assert(unsigned(zero_extend(0x31d1c18, 64)) == 52239384);
  assert(unsigned(zero_extend(0x31d1c20, 64)) == 52239392);
  assert(unsigned(zero_extend(0x31d1c28, 64)) == 52239400);
  assert(unsigned(zero_extend(0x31d1c2c, 64)) == 52239404);
  assert(unsigned(zero_extend(0x31d1c30, 64)) == 52239408);
  assert(unsigned(zero_extend(0x31d1c34, 64)) == 52239412);
  assert(unsigned(zero_extend(0x31d1c38, 64)) == 52239416);
  assert(unsigned(zero_extend(0x31d1c3c, 64)) == 52239420);
  assert(unsigned(zero_extend(0x31d1c40, 64)) == 52239424);
  assert(unsigned(zero_extend(0x31d1c44, 64)) == 52239428);
  assert(unsigned(zero_extend(0x31d1c48, 64)) == 52239432);
  assert(unsigned(zero_extend(0x31d1c4c, 64)) == 52239436);
  assert(unsigned(zero_extend(0x31d1c50, 64)) == 52239440);
  assert(unsigned(zero_extend(0x31d1c54, 64)) == 52239444);
  assert(unsigned(zero_extend(0x31d1c58, 64)) == 52239448);
  assert(unsigned(zero_extend(0x31d1c5c, 64)) == 52239452);
  assert(unsigned(zero_extend(0x31d1c60, 64)) == 52239456);
  assert(unsigned(zero_extend(0x31d1c64, 64)) == 52239460);
  assert(unsigned(zero_extend(0x31d1c68, 64)) == 52239464);
  assert(unsigned(zero_extend(0x31d1c6c, 64)) == 52239468);
  assert(unsigned(zero_extend(0x31d1c70, 64)) == 52239472);
  assert(unsigned(zero_extend(0x31d1c74, 64)) == 52239476);
  assert(unsigned(zero_extend(0x31d1c78, 64)) == 52239480);
  assert(unsigned(zero_extend(0x32, 64)) == 50);
  assert(unsigned(zero_extend(0x320, 64)) == 800);
  assert(unsigned(zero_extend(0x33, 64)) == 51);
  assert(unsigned(zero_extend(0x34, 64)) == 52);
  assert(unsigned(zero_extend(0x34000, 64)) == 212992);
  assert(unsigned(zero_extend(0x34040, 64)) == 213056);
  assert(unsigned(zero_extend(0x35, 64)) == 53);
  assert(unsigned(zero_extend(0x36, 64)) == 54);
  assert(unsigned(zero_extend(0x368, 64)) == 872);
  assert(unsigned(zero_extend(0x37, 64)) == 55);
  assert(unsigned(zero_extend(0x38, 64)) == 56);
  assert(unsigned(zero_extend(0x3800000, 64)) == 58720256);
  assert(unsigned(zero_extend(0x380000a, 64)) == 58720266);
  assert(unsigned(zero_extend(0x3800010, 64)) == 58720272);
  assert(unsigned(zero_extend(0x3800011, 64)) == 58720273);
  assert(unsigned(zero_extend(0x3800012, 64)) == 58720274);
  assert(unsigned(zero_extend(0x3800013, 64)) == 58720275);
  assert(unsigned(zero_extend(0x3800018, 64)) == 58720280);
  assert(unsigned(zero_extend(0x3800038, 64)) == 58720312);
  assert(unsigned(zero_extend(0x380003a, 64)) == 58720314);
  assert(unsigned(zero_extend(0x380003b, 64)) == 58720315);
  assert(unsigned(zero_extend(0x380003c, 64)) == 58720316);
  assert(unsigned(zero_extend(0x380003d, 64)) == 58720317);
  assert(unsigned(zero_extend(0x3800040, 64)) == 58720320);
  assert(unsigned(zero_extend(0x380004b, 64)) == 58720331);
  assert(unsigned(zero_extend(0x380004c, 64)) == 58720332);
  assert(unsigned(zero_extend(0x380004d, 64)) == 58720333);
  assert(unsigned(zero_extend(0x380004e, 64)) == 58720334);
  assert(unsigned(zero_extend(0x3800050, 64)) == 58720336);
  assert(unsigned(zero_extend(0x3800060, 64)) == 58720352);
  assert(unsigned(zero_extend(0x38002c0, 64)) == 58720960);
  assert(unsigned(zero_extend(0x38002c8, 64)) == 58720968);
  assert(unsigned(zero_extend(0x38002d0, 64)) == 58720976);
  assert(unsigned(zero_extend(0x38002d8, 64)) == 58720984);
  assert(unsigned(zero_extend(0x38002e0, 64)) == 58720992);
  assert(unsigned(zero_extend(0x38002e8, 64)) == 58721000);
  assert(unsigned(zero_extend(0x38002f0, 64)) == 58721008);
  assert(unsigned(zero_extend(0x38002f8, 64)) == 58721016);
  assert(unsigned(zero_extend(0x3800300, 64)) == 58721024);
  assert(unsigned(zero_extend(0x3800310, 64)) == 58721040);
  assert(unsigned(zero_extend(0x3800318, 64)) == 58721048);
  assert(unsigned(zero_extend(0x3800320, 64)) == 58721056);
  assert(unsigned(zero_extend(0x3800328, 64)) == 58721064);
  assert(unsigned(zero_extend(0x3800330, 64)) == 58721072);
  assert(unsigned(zero_extend(0x3800338, 64)) == 58721080);
  assert(unsigned(zero_extend(0x3800340, 64)) == 58721088);
  assert(unsigned(zero_extend(0x3800350, 64)) == 58721104);
  assert(unsigned(zero_extend(0x3800358, 64)) == 58721112);
  assert(unsigned(zero_extend(0x3800360, 64)) == 58721120);
  assert(unsigned(zero_extend(0x3800368, 64)) == 58721128);
  assert(unsigned(zero_extend(0x38003a0, 64)) == 58721184);
  assert(unsigned(zero_extend(0x38003a8, 64)) == 58721192);
  assert(unsigned(zero_extend(0x38003b0, 64)) == 58721200);
  assert(unsigned(zero_extend(0x38003b4, 64)) == 58721204);
  assert(unsigned(zero_extend(0x38003b8, 64)) == 58721208);
  assert(unsigned(zero_extend(0x38003bc, 64)) == 58721212);
  assert(unsigned(zero_extend(0x38003c0, 64)) == 58721216);
  assert(unsigned(zero_extend(0x38003c4, 64)) == 58721220);
  assert(unsigned(zero_extend(0x38003c8, 64)) == 58721224);
  assert(unsigned(zero_extend(0x38003cc, 64)) == 58721228);
  assert(unsigned(zero_extend(0x38003d0, 64)) == 58721232);
  assert(unsigned(zero_extend(0x38003d4, 64)) == 58721236);
  assert(unsigned(zero_extend(0x38003d8, 64)) == 58721240);
  assert(unsigned(zero_extend(0x38003dc, 64)) == 58721244);
  assert(unsigned(zero_extend(0x38003e0, 64)) == 58721248);
  assert(unsigned(zero_extend(0x38003e4, 64)) == 58721252);
  assert(unsigned(zero_extend(0x38003e8, 64)) == 58721256);
  assert(unsigned(zero_extend(0x38003ec, 64)) == 58721260);
  assert(unsigned(zero_extend(0x38003f0, 64)) == 58721264);
  assert(unsigned(zero_extend(0x38003f8, 64)) == 58721272);
  assert(unsigned(zero_extend(0x3800400, 64)) == 58721280);
  assert(unsigned(zero_extend(0x3800408, 64)) == 58721288);
  assert(unsigned(zero_extend(0x3800410, 64)) == 58721296);
  assert(unsigned(zero_extend(0x3800418, 64)) == 58721304);
  assert(unsigned(zero_extend(0x3800420, 64)) == 58721312);
  assert(unsigned(zero_extend(0x3800428, 64)) == 58721320);
  assert(unsigned(zero_extend(0x3800430, 64)) == 58721328);
  assert(unsigned(zero_extend(0x3800438, 64)) == 58721336);
  assert(unsigned(zero_extend(0x3800440, 64)) == 58721344);
  assert(unsigned(zero_extend(0x3800448, 64)) == 58721352);
  assert(unsigned(zero_extend(0x3800450, 64)) == 58721360);
  assert(unsigned(zero_extend(0x3800458, 64)) == 58721368);
  assert(unsigned(zero_extend(0x3800460, 64)) == 58721376);
  assert(unsigned(zero_extend(0x3808060, 64)) == 58753120);
  assert(unsigned(zero_extend(0x3808064, 64)) == 58753124);
  assert(unsigned(zero_extend(0x3808068, 64)) == 58753128);
  assert(unsigned(zero_extend(0x3808070, 64)) == 58753136);
  assert(unsigned(zero_extend(0x3808078, 64)) == 58753144);
  assert(unsigned(zero_extend(0x3808080, 64)) == 58753152);
  assert(unsigned(zero_extend(0x3808140, 64)) == 58753344);
  assert(unsigned(zero_extend(0x3808148, 64)) == 58753352);
  assert(unsigned(zero_extend(0x3808248, 64)) == 58753608);
  assert(unsigned(zero_extend(0x3808250, 64)) == 58753616);
  assert(unsigned(zero_extend(0x3808258, 64)) == 58753624);
  assert(unsigned(zero_extend(0x3808a00, 64)) == 58755584);
  assert(unsigned(zero_extend(0x3808a04, 64)) == 58755588);
  assert(unsigned(zero_extend(0x3808a08, 64)) == 58755592);
  assert(unsigned(zero_extend(0x3808a10, 64)) == 58755600);
  assert(unsigned(zero_extend(0x3808a18, 64)) == 58755608);
  assert(unsigned(zero_extend(0x3808a20, 64)) == 58755616);
  assert(unsigned(zero_extend(0x3808a70, 64)) == 58755696);
  assert(unsigned(zero_extend(0x3808a78, 64)) == 58755704);
  assert(unsigned(zero_extend(0x3808b78, 64)) == 58755960);
  assert(unsigned(zero_extend(0x3808b80, 64)) == 58755968);
  assert(unsigned(zero_extend(0x380d000, 64)) == 58773504);
  assert(unsigned(zero_extend(0x380d610, 64)) == 58775056);
  assert(unsigned(zero_extend(0x380d880, 64)) == 58775680);
  assert(unsigned(zero_extend(0x380d888, 64)) == 58775688);
  assert(unsigned(zero_extend(0x380d890, 64)) == 58775696);
  assert(unsigned(zero_extend(0x380d898, 64)) == 58775704);
  assert(unsigned(zero_extend(0x380d8a0, 64)) == 58775712);
  assert(unsigned(zero_extend(0x380d8a8, 64)) == 58775720);
  assert(unsigned(zero_extend(0x380d8b0, 64)) == 58775728);
  assert(unsigned(zero_extend(0x380d8b8, 64)) == 58775736);
  assert(unsigned(zero_extend(0x380d8c0, 64)) == 58775744);
  assert(unsigned(zero_extend(0x380d8c8, 64)) == 58775752);
  assert(unsigned(zero_extend(0x380d8d0, 64)) == 58775760);
  assert(unsigned(zero_extend(0x380d8d8, 64)) == 58775768);
  assert(unsigned(zero_extend(0x380d8e0, 64)) == 58775776);
  assert(unsigned(zero_extend(0x380d8e8, 64)) == 58775784);
  assert(unsigned(zero_extend(0x380d8f0, 64)) == 58775792);
  assert(unsigned(zero_extend(0x380d8f8, 64)) == 58775800);
  assert(unsigned(zero_extend(0x380d900, 64)) == 58775808);
  assert(unsigned(zero_extend(0x380d908, 64)) == 58775816);
  assert(unsigned(zero_extend(0x380d910, 64)) == 58775824);
  assert(unsigned(zero_extend(0x380d960, 64)) == 58775904);
  assert(unsigned(zero_extend(0x380d968, 64)) == 58775912);
  assert(unsigned(zero_extend(0x380d970, 64)) == 58775920);
  assert(unsigned(zero_extend(0x380d974, 64)) == 58775924);
  assert(unsigned(zero_extend(0x380d978, 64)) == 58775928);
  assert(unsigned(zero_extend(0x380d97c, 64)) == 58775932);
  assert(unsigned(zero_extend(0x380d980, 64)) == 58775936);
  assert(unsigned(zero_extend(0x380d984, 64)) == 58775940);
  assert(unsigned(zero_extend(0x380d988, 64)) == 58775944);
  assert(unsigned(zero_extend(0x380d98c, 64)) == 58775948);
  assert(unsigned(zero_extend(0x380d990, 64)) == 58775952);
  assert(unsigned(zero_extend(0x380d994, 64)) == 58775956);
  assert(unsigned(zero_extend(0x380d998, 64)) == 58775960);
  assert(unsigned(zero_extend(0x380d99c, 64)) == 58775964);
  assert(unsigned(zero_extend(0x380d9a0, 64)) == 58775968);
  assert(unsigned(zero_extend(0x380d9a4, 64)) == 58775972);
  assert(unsigned(zero_extend(0x380d9a8, 64)) == 58775976);
  assert(unsigned(zero_extend(0x380d9ac, 64)) == 58775980);
  assert(unsigned(zero_extend(0x380d9b0, 64)) == 58775984);
  assert(unsigned(zero_extend(0x380d9b8, 64)) == 58775992);
  assert(unsigned(zero_extend(0x380d9c0, 64)) == 58776000);
  assert(unsigned(zero_extend(0x380d9c8, 64)) == 58776008);
  assert(unsigned(zero_extend(0x380d9d0, 64)) == 58776016);
  assert(unsigned(zero_extend(0x380d9d8, 64)) == 58776024);
  assert(unsigned(zero_extend(0x380d9e0, 64)) == 58776032);
  assert(unsigned(zero_extend(0x380d9e8, 64)) == 58776040);
  assert(unsigned(zero_extend(0x380d9f0, 64)) == 58776048);
  assert(unsigned(zero_extend(0x380d9f8, 64)) == 58776056);
  assert(unsigned(zero_extend(0x380da00, 64)) == 58776064);
  assert(unsigned(zero_extend(0x380da08, 64)) == 58776072);
  assert(unsigned(zero_extend(0x380da10, 64)) == 58776080);
  assert(unsigned(zero_extend(0x3811610, 64)) == 58791440);
  assert(unsigned(zero_extend(0x3813610, 64)) == 58799632);
  assert(unsigned(zero_extend(0x3815610, 64)) == 58807824);
  assert(unsigned(zero_extend(0x3815618, 64)) == 58807832);
  assert(unsigned(zero_extend(0x3815624, 64)) == 58807844);
  assert(unsigned(zero_extend(0x3815628, 64)) == 58807848);
  assert(unsigned(zero_extend(0x3815630, 64)) == 58807856);
  assert(unsigned(zero_extend(0x3815638, 64)) == 58807864);
  assert(unsigned(zero_extend(0x381563c, 64)) == 58807868);
  assert(unsigned(zero_extend(0x3815640, 64)) == 58807872);
  assert(unsigned(zero_extend(0x3815648, 64)) == 58807880);
  assert(unsigned(zero_extend(0x3815650, 64)) == 58807888);
  assert(unsigned(zero_extend(0x3815658, 64)) == 58807896);
  assert(unsigned(zero_extend(0x3815668, 64)) == 58807912);
  assert(unsigned(zero_extend(0x3815670, 64)) == 58807920);
  assert(unsigned(zero_extend(0x3815678, 64)) == 58807928);
  assert(unsigned(zero_extend(0x3815778, 64)) == 58808184);
  assert(unsigned(zero_extend(0x3815780, 64)) == 58808192);
  assert(unsigned(zero_extend(0x3815b50, 64)) == 58809168);
  assert(unsigned(zero_extend(0x3815b58, 64)) == 58809176);
  assert(unsigned(zero_extend(0x3815c58, 64)) == 58809432);
  assert(unsigned(zero_extend(0x3815c60, 64)) == 58809440);
  assert(unsigned(zero_extend(0x3815d80, 64)) == 58809728);
  assert(unsigned(zero_extend(0x3817d80, 64)) == 58817920);
  assert(unsigned(zero_extend(0x3819d80, 64)) == 58826112);
  assert(unsigned(zero_extend(0x3819d84, 64)) == 58826116);
  assert(unsigned(zero_extend(0x3819d88, 64)) == 58826120);
  assert(unsigned(zero_extend(0x3819d8c, 64)) == 58826124);
  assert(unsigned(zero_extend(0x3819d90, 64)) == 58826128);
  assert(unsigned(zero_extend(0x3819d98, 64)) == 58826136);
  assert(unsigned(zero_extend(0x3819da0, 64)) == 58826144);
  assert(unsigned(zero_extend(0x3819da8, 64)) == 58826152);
  assert(unsigned(zero_extend(0x3819db8, 64)) == 58826168);
  assert(unsigned(zero_extend(0x3819dc0, 64)) == 58826176);
  assert(unsigned(zero_extend(0x3819dc8, 64)) == 58826184);
  assert(unsigned(zero_extend(0x3819ed0, 64)) == 58826448);
  assert(unsigned(zero_extend(0x381a000, 64)) == 58826752);
  assert(unsigned(zero_extend(0x381a280, 64)) == 58827392);
  assert(unsigned(zero_extend(0x381a284, 64)) == 58827396);
  assert(unsigned(zero_extend(0x381a288, 64)) == 58827400);
  assert(unsigned(zero_extend(0x381a28c, 64)) == 58827404);
  assert(unsigned(zero_extend(0x381a290, 64)) == 58827408);
  assert(unsigned(zero_extend(0x381a298, 64)) == 58827416);
  assert(unsigned(zero_extend(0x381a2a0, 64)) == 58827424);
  assert(unsigned(zero_extend(0x381a2a8, 64)) == 58827432);
  assert(unsigned(zero_extend(0x381a2b8, 64)) == 58827448);
  assert(unsigned(zero_extend(0x381a2c0, 64)) == 58827456);
  assert(unsigned(zero_extend(0x381a2c8, 64)) == 58827464);
  assert(unsigned(zero_extend(0x381a3c8, 64)) == 58827720);
  assert(unsigned(zero_extend(0x381a3d0, 64)) == 58827728);
  assert(unsigned(zero_extend(0x381a4f0, 64)) == 58828016);
  assert(unsigned(zero_extend(0x381a780, 64)) == 58828672);
  assert(unsigned(zero_extend(0x381a784, 64)) == 58828676);
  assert(unsigned(zero_extend(0x381a788, 64)) == 58828680);
  assert(unsigned(zero_extend(0x381a790, 64)) == 58828688);
  assert(unsigned(zero_extend(0x381a798, 64)) == 58828696);
  assert(unsigned(zero_extend(0x381a7a0, 64)) == 58828704);
  assert(unsigned(zero_extend(0x381a7a4, 64)) == 58828708);
  assert(unsigned(zero_extend(0x381a7ac, 64)) == 58828716);
  assert(unsigned(zero_extend(0x381a7b0, 64)) == 58828720);
  assert(unsigned(zero_extend(0x381a7b8, 64)) == 58828728);
  assert(unsigned(zero_extend(0x381a7c0, 64)) == 58828736);
  assert(unsigned(zero_extend(0x381a7c8, 64)) == 58828744);
  assert(unsigned(zero_extend(0x381a7d8, 64)) == 58828760);
  assert(unsigned(zero_extend(0x381a7e0, 64)) == 58828768);
  assert(unsigned(zero_extend(0x381a8e0, 64)) == 58829024);
  assert(unsigned(zero_extend(0x381a8e8, 64)) == 58829032);
  assert(unsigned(zero_extend(0x381aa08, 64)) == 58829320);
  assert(unsigned(zero_extend(0x381acb0, 64)) == 58830000);
  assert(unsigned(zero_extend(0x381acb8, 64)) == 58830008);
  assert(unsigned(zero_extend(0x381adb8, 64)) == 58830264);
  assert(unsigned(zero_extend(0x381adc0, 64)) == 58830272);
  assert(unsigned(zero_extend(0x381aee0, 64)) == 58830560);
  assert(unsigned(zero_extend(0x381aee4, 64)) == 58830564);
  assert(unsigned(zero_extend(0x381aee8, 64)) == 58830568);
  assert(unsigned(zero_extend(0x381af00, 64)) == 58830592);
  assert(unsigned(zero_extend(0x381b150, 64)) == 58831184);
  assert(unsigned(zero_extend(0x381b158, 64)) == 58831192);
  assert(unsigned(zero_extend(0x381b160, 64)) == 58831200);
  assert(unsigned(zero_extend(0x381b168, 64)) == 58831208);
  assert(unsigned(zero_extend(0x381b170, 64)) == 58831216);
  assert(unsigned(zero_extend(0x381b178, 64)) == 58831224);
  assert(unsigned(zero_extend(0x381b180, 64)) == 58831232);
  assert(unsigned(zero_extend(0x381b188, 64)) == 58831240);
  assert(unsigned(zero_extend(0x381b190, 64)) == 58831248);
  assert(unsigned(zero_extend(0x381b1a0, 64)) == 58831264);
  assert(unsigned(zero_extend(0x381b1a8, 64)) == 58831272);
  assert(unsigned(zero_extend(0x381b1b0, 64)) == 58831280);
  assert(unsigned(zero_extend(0x381b1b8, 64)) == 58831288);
  assert(unsigned(zero_extend(0x381b1c0, 64)) == 58831296);
  assert(unsigned(zero_extend(0x381b1c8, 64)) == 58831304);
  assert(unsigned(zero_extend(0x381b1d0, 64)) == 58831312);
  assert(unsigned(zero_extend(0x381b1d8, 64)) == 58831320);
  assert(unsigned(zero_extend(0x381b1e0, 64)) == 58831328);
  assert(unsigned(zero_extend(0x381b1e8, 64)) == 58831336);
  assert(unsigned(zero_extend(0x381b1f0, 64)) == 58831344);
  assert(unsigned(zero_extend(0x381b1f8, 64)) == 58831352);
  assert(unsigned(zero_extend(0x381b200, 64)) == 58831360);
  assert(unsigned(zero_extend(0x381b240, 64)) == 58831424);
  assert(unsigned(zero_extend(0x381b248, 64)) == 58831432);
  assert(unsigned(zero_extend(0x381b250, 64)) == 58831440);
  assert(unsigned(zero_extend(0x381b254, 64)) == 58831444);
  assert(unsigned(zero_extend(0x381b258, 64)) == 58831448);
  assert(unsigned(zero_extend(0x381b25c, 64)) == 58831452);
  assert(unsigned(zero_extend(0x381b260, 64)) == 58831456);
  assert(unsigned(zero_extend(0x381b264, 64)) == 58831460);
  assert(unsigned(zero_extend(0x381b268, 64)) == 58831464);
  assert(unsigned(zero_extend(0x381b26c, 64)) == 58831468);
  assert(unsigned(zero_extend(0x381b270, 64)) == 58831472);
  assert(unsigned(zero_extend(0x381b274, 64)) == 58831476);
  assert(unsigned(zero_extend(0x381b278, 64)) == 58831480);
  assert(unsigned(zero_extend(0x381b27c, 64)) == 58831484);
  assert(unsigned(zero_extend(0x381b280, 64)) == 58831488);
  assert(unsigned(zero_extend(0x381b284, 64)) == 58831492);
  assert(unsigned(zero_extend(0x381b288, 64)) == 58831496);
  assert(unsigned(zero_extend(0x381b28c, 64)) == 58831500);
  assert(unsigned(zero_extend(0x381b290, 64)) == 58831504);
  assert(unsigned(zero_extend(0x381b298, 64)) == 58831512);
  assert(unsigned(zero_extend(0x381b2a0, 64)) == 58831520);
  assert(unsigned(zero_extend(0x381b2a8, 64)) == 58831528);
  assert(unsigned(zero_extend(0x381b2b0, 64)) == 58831536);
  assert(unsigned(zero_extend(0x381b2b8, 64)) == 58831544);
  assert(unsigned(zero_extend(0x381b2c0, 64)) == 58831552);
  assert(unsigned(zero_extend(0x381b2c8, 64)) == 58831560);
  assert(unsigned(zero_extend(0x381b2d0, 64)) == 58831568);
  assert(unsigned(zero_extend(0x381b2d8, 64)) == 58831576);
  assert(unsigned(zero_extend(0x381b2e0, 64)) == 58831584);
  assert(unsigned(zero_extend(0x381b2e8, 64)) == 58831592);
  assert(unsigned(zero_extend(0x381b2f0, 64)) == 58831600);
  assert(unsigned(zero_extend(0x381b2f8, 64)) == 58831608);
  assert(unsigned(zero_extend(0x381b300, 64)) == 58831616);
  assert(unsigned(zero_extend(0x39, 64)) == 57);
  assert(unsigned(zero_extend(0x3a, 64)) == 58);
  assert(unsigned(zero_extend(0x3b, 64)) == 59);
  assert(unsigned(zero_extend(0x3c, 64)) == 60);
  assert(unsigned(zero_extend(0x3d, 64)) == 61);
  assert(unsigned(zero_extend(0x3e, 64)) == 62);
  assert(unsigned(zero_extend(0x3f, 64)) == 63);
  assert(unsigned(zero_extend(0x3ff83ff83ff83ff8, 64)) == 4609504554071375864);
  assert(unsigned(zero_extend(0x3fff, 64)) == 16383);
  assert(unsigned(zero_extend(0x3ffffffff, 64)) == 17179869183);
  assert(unsigned(zero_extend(0x4, 64)) == 4);
  assert(unsigned(zero_extend(0x40, 64)) == 64);
  assert(unsigned(zero_extend(0x400, 64)) == 1024);
  assert(unsigned(zero_extend(0x4000, 64)) == 16384);
  assert(unsigned(zero_extend(0x400000000, 64)) == 17179869184);
  assert(unsigned(zero_extend(0x41, 64)) == 65);
  assert(unsigned(zero_extend(0x42, 64)) == 66);
  assert(unsigned(zero_extend(0x43, 64)) == 67);
  assert(unsigned(zero_extend(0x44, 64)) == 68);
  assert(unsigned(zero_extend(0x45, 64)) == 69);
  assert(unsigned(zero_extend(0x46, 64)) == 70);
  assert(unsigned(zero_extend(0x47, 64)) == 71);
  assert(unsigned(zero_extend(0x48, 64)) == 72);
  assert(unsigned(zero_extend(0x49, 64)) == 73);
  assert(unsigned(zero_extend(0x4a, 64)) == 74);
  assert(unsigned(zero_extend(0x4b, 64)) == 75);
  assert(unsigned(zero_extend(0x4c, 64)) == 76);
  assert(unsigned(zero_extend(0x4c000, 64)) == 311296);
  assert(unsigned(zero_extend(0x4c800, 64)) == 313344);
  assert(unsigned(zero_extend(0x4d, 64)) == 77);
  assert(unsigned(zero_extend(0x4e, 64)) == 78);
  assert(unsigned(zero_extend(0x4f, 64)) == 79);
  assert(unsigned(zero_extend(0x5, 64)) == 5);
  assert(unsigned(zero_extend(0x50, 64)) == 80);
  assert(unsigned(zero_extend(0x51, 64)) == 81);
  assert(unsigned(zero_extend(0x52, 64)) == 82);
  assert(unsigned(zero_extend(0x53, 64)) == 83);
  assert(unsigned(zero_extend(0x530, 64)) == 1328);
  assert(unsigned(zero_extend(0x54, 64)) == 84);
  assert(unsigned(zero_extend(0x54000, 64)) == 344064);
  assert(unsigned(zero_extend(0x55, 64)) == 85);
  assert(unsigned(zero_extend(0x56, 64)) == 86);
  assert(unsigned(zero_extend(0x57, 64)) == 87);
  assert(unsigned(zero_extend(0x58, 64)) == 88);
  assert(unsigned(zero_extend(0x58000, 64)) == 360448);
  assert(unsigned(zero_extend(0x59, 64)) == 89);
  assert(unsigned(zero_extend(0x5a, 64)) == 90);
  assert(unsigned(zero_extend(0x5a5a, 64)) == 23130);
  assert(unsigned(zero_extend(0x5a5a5a59, 64)) == 1515870809);
  assert(unsigned(zero_extend(0x5a5a5a5a, 64)) == 1515870810);
  assert(unsigned(zero_extend(0x5a5a5a5a5a5a5a59, 64)) == 6510615555426900569);
  assert(unsigned(zero_extend(0x5a5a5a5a5a5a5a5a, 64)) == 6510615555426900570);
  assert(unsigned(zero_extend(0x5b, 64)) == 91);
  assert(unsigned(zero_extend(0x5c, 64)) == 92);
  assert(unsigned(zero_extend(0x5c000, 64)) == 376832);
  assert(unsigned(zero_extend(0x5c040, 64)) == 376896);
  assert(unsigned(zero_extend(0x5d, 64)) == 93);
  assert(unsigned(zero_extend(0x5e, 64)) == 94);
  assert(unsigned(zero_extend(0x5f, 64)) == 95);
  assert(unsigned(zero_extend(0x6, 64)) == 6);
  assert(unsigned(zero_extend(0x60, 64)) == 96);
  assert(unsigned(zero_extend(0x61, 64)) == 97);
  assert(unsigned(zero_extend(0x610, 64)) == 1552);
  assert(unsigned(zero_extend(0x62, 64)) == 98);
  assert(unsigned(zero_extend(0x620e000, 64)) == 102817792);
  assert(unsigned(zero_extend(0x620e010, 64)) == 102817808);
  assert(unsigned(zero_extend(0x6216000, 64)) == 102850560);
  assert(unsigned(zero_extend(0x6216001, 64)) == 102850561);
  assert(unsigned(zero_extend(0x6216002, 64)) == 102850562);
  assert(unsigned(zero_extend(0x6216003, 64)) == 102850563);
  assert(unsigned(zero_extend(0x6216004, 64)) == 102850564);
  assert(unsigned(zero_extend(0x6216005, 64)) == 102850565);
  assert(unsigned(zero_extend(0x6216006, 64)) == 102850566);
  assert(unsigned(zero_extend(0x6216007, 64)) == 102850567);
  assert(unsigned(zero_extend(0x6216008, 64)) == 102850568);
  assert(unsigned(zero_extend(0x6216009, 64)) == 102850569);
  assert(unsigned(zero_extend(0x621600a, 64)) == 102850570);
  assert(unsigned(zero_extend(0x621600b, 64)) == 102850571);
  assert(unsigned(zero_extend(0x621600c, 64)) == 102850572);
  assert(unsigned(zero_extend(0x621600d, 64)) == 102850573);
  assert(unsigned(zero_extend(0x621600e, 64)) == 102850574);
  assert(unsigned(zero_extend(0x621600f, 64)) == 102850575);
  assert(unsigned(zero_extend(0x6216030, 64)) == 102850608);
  assert(unsigned(zero_extend(0x6216031, 64)) == 102850609);
  assert(unsigned(zero_extend(0x6216032, 64)) == 102850610);
  assert(unsigned(zero_extend(0x6216033, 64)) == 102850611);
  assert(unsigned(zero_extend(0x6216034, 64)) == 102850612);
  assert(unsigned(zero_extend(0x6216035, 64)) == 102850613);
  assert(unsigned(zero_extend(0x6216036, 64)) == 102850614);
  assert(unsigned(zero_extend(0x6216037, 64)) == 102850615);
  assert(unsigned(zero_extend(0x6216038, 64)) == 102850616);
  assert(unsigned(zero_extend(0x6216039, 64)) == 102850617);
  assert(unsigned(zero_extend(0x621603a, 64)) == 102850618);
  assert(unsigned(zero_extend(0x621603b, 64)) == 102850619);
  assert(unsigned(zero_extend(0x621603c, 64)) == 102850620);
  assert(unsigned(zero_extend(0x621603d, 64)) == 102850621);
  assert(unsigned(zero_extend(0x621603e, 64)) == 102850622);
  assert(unsigned(zero_extend(0x621603f, 64)) == 102850623);
  assert(unsigned(zero_extend(0x6216040, 64)) == 102850624);
  assert(unsigned(zero_extend(0x6216041, 64)) == 102850625);
  assert(unsigned(zero_extend(0x6216042, 64)) == 102850626);
  assert(unsigned(zero_extend(0x6216043, 64)) == 102850627);
  assert(unsigned(zero_extend(0x6216044, 64)) == 102850628);
  assert(unsigned(zero_extend(0x6216045, 64)) == 102850629);
  assert(unsigned(zero_extend(0x6216046, 64)) == 102850630);
  assert(unsigned(zero_extend(0x6216047, 64)) == 102850631);
  assert(unsigned(zero_extend(0x6216048, 64)) == 102850632);
  assert(unsigned(zero_extend(0x6216049, 64)) == 102850633);
  assert(unsigned(zero_extend(0x621604a, 64)) == 102850634);
  assert(unsigned(zero_extend(0x621604b, 64)) == 102850635);
  assert(unsigned(zero_extend(0x621604c, 64)) == 102850636);
  assert(unsigned(zero_extend(0x621604d, 64)) == 102850637);
  assert(unsigned(zero_extend(0x621604e, 64)) == 102850638);
  assert(unsigned(zero_extend(0x621604f, 64)) == 102850639);
  assert(unsigned(zero_extend(0x6216050, 64)) == 102850640);
  assert(unsigned(zero_extend(0x6216054, 64)) == 102850644);
  assert(unsigned(zero_extend(0x6216058, 64)) == 102850648);
  assert(unsigned(zero_extend(0x621605c, 64)) == 102850652);
  assert(unsigned(zero_extend(0x6216064, 64)) == 102850660);
  assert(unsigned(zero_extend(0x6216065, 64)) == 102850661);
  assert(unsigned(zero_extend(0x6216066, 64)) == 102850662);
  assert(unsigned(zero_extend(0x6216067, 64)) == 102850663);
  assert(unsigned(zero_extend(0x6216069, 64)) == 102850665);
  assert(unsigned(zero_extend(0x621606a, 64)) == 102850666);
  assert(unsigned(zero_extend(0x621606b, 64)) == 102850667);
  assert(unsigned(zero_extend(0x621606c, 64)) == 102850668);
  assert(unsigned(zero_extend(0x62160aa, 64)) == 102850730);
  assert(unsigned(zero_extend(0x63, 64)) == 99);
  assert(unsigned(zero_extend(0x64, 64)) == 100);
  assert(unsigned(zero_extend(0x65, 64)) == 101);
  assert(unsigned(zero_extend(0x66, 64)) == 102);
  assert(unsigned(zero_extend(0x67, 64)) == 103);
  assert(unsigned(zero_extend(0x68, 64)) == 104);
  assert(unsigned(zero_extend(0x69, 64)) == 105);
  assert(unsigned(zero_extend(0x6a, 64)) == 106);
  assert(unsigned(zero_extend(0x6b, 64)) == 107);
  assert(unsigned(zero_extend(0x6b7c8d9f, 64)) == 1803324831);
  assert(unsigned(zero_extend(0x6c, 64)) == 108);
  assert(unsigned(zero_extend(0x6d, 64)) == 109);
  assert(unsigned(zero_extend(0x6e, 64)) == 110);
  assert(unsigned(zero_extend(0x6ede4cbc6ede4cbb, 64)) == 7988907161199463611);
  assert(unsigned(zero_extend(0x6f, 64)) == 111);
  assert(unsigned(zero_extend(0x6ffffffffffffffe, 64)) == 8070450532247928830);
  assert(unsigned(zero_extend(0x6fffffffffffffff, 64)) == 8070450532247928831);
  assert(unsigned(zero_extend(0x7, 64)) == 7);
  assert(unsigned(zero_extend(0x70, 64)) == 112);
  assert(unsigned(zero_extend(0x71, 64)) == 113);
  assert(unsigned(zero_extend(0x72, 64)) == 114);
  assert(unsigned(zero_extend(0x73, 64)) == 115);
  assert(unsigned(zero_extend(0x74, 64)) == 116);
  assert(unsigned(zero_extend(0x75, 64)) == 117);
  assert(unsigned(zero_extend(0x76, 64)) == 118);
  assert(unsigned(zero_extend(0x764c321, 64)) == 124044065);
  assert(unsigned(zero_extend(0x77, 64)) == 119);
  assert(unsigned(zero_extend(0x7765554377655542, 64)) == 8603376411415500098);
  assert(unsigned(zero_extend(0x7766554477665542, 64)) == 8603657890687243586);
  assert(unsigned(zero_extend(0x78, 64)) == 120);
  assert(unsigned(zero_extend(0x789abcdef0123456, 64)) == 8690466096661279830);
  assert(unsigned(zero_extend(0x79, 64)) == 121);
  assert(unsigned(zero_extend(0x7a, 64)) == 122);
  assert(unsigned(zero_extend(0x7b, 64)) == 123);
  assert(unsigned(zero_extend(0x7c, 64)) == 124);
  assert(unsigned(zero_extend(0x7d, 64)) == 125);
  assert(unsigned(zero_extend(0x7e, 64)) == 126);
  assert(unsigned(zero_extend(0x7f, 64)) == 127);
  assert(unsigned(zero_extend(0x7ff, 64)) == 2047);
  assert(unsigned(zero_extend(0x7ffc, 64)) == 32764);
  assert(unsigned(zero_extend(0x7ffe, 64)) == 32766);
  assert(unsigned(zero_extend(0x7fff, 64)) == 32767);
  assert(unsigned(zero_extend(0x7fff7fff, 64)) == 2147450879);
  assert(unsigned(zero_extend(0x7fff7fff7fff7ffd, 64)) == 9223231297218904061);
  assert(unsigned(zero_extend(0x7fff7fff7fff7fff, 64)) == 9223231297218904063);
  assert(unsigned(zero_extend(0x7fffffc, 64)) == 134217724);
  assert(unsigned(zero_extend(0x7ffffffe, 64)) == 2147483646);
  assert(unsigned(zero_extend(0x7fffffff, 64)) == 2147483647);
  assert(unsigned(zero_extend(0x7fffffff00000000, 64)) == 9223372032559808512);
  assert(unsigned(zero_extend(0x7fffffff00000001, 64)) == 9223372032559808513);
  assert(unsigned(zero_extend(0x7fffffff7ffffffe, 64)) == 9223372034707292158);
  assert(unsigned(zero_extend(0x7fffffff7fffffff, 64)) == 9223372034707292159);
  assert(unsigned(zero_extend(0x7fffffff80000000, 64)) == 9223372034707292160);
  assert(unsigned(zero_extend(0x7fffffff80000001, 64)) == 9223372034707292161);
  assert(unsigned(zero_extend(0x7fffffffffff0000, 64)) == 9223372036854710272);
  assert(unsigned(zero_extend(0x7fffffffffff0001, 64)) == 9223372036854710273);
  assert(unsigned(zero_extend(0x7fffffffffff7ffe, 64)) == 9223372036854743038);
  assert(unsigned(zero_extend(0x7fffffffffff7fff, 64)) == 9223372036854743039);
  assert(unsigned(zero_extend(0x7fffffffffff8000, 64)) == 9223372036854743040);
  assert(unsigned(zero_extend(0x7fffffffffff8001, 64)) == 9223372036854743041);
  assert(unsigned(zero_extend(0x7ffffffffffffffc, 64)) == 9223372036854775804);
  assert(unsigned(zero_extend(0x7ffffffffffffffd, 64)) == 9223372036854775805);
  assert(unsigned(zero_extend(0x7ffffffffffffffe, 64)) == 9223372036854775806);
  assert(unsigned(zero_extend(0x7fffffffffffffff, 64)) == 9223372036854775807);
  assert(unsigned(zero_extend(0x8, 64)) == 8);
  assert(unsigned(zero_extend(0x80, 64)) == 128);
  assert(unsigned(zero_extend(0x800, 64)) == 2048);
  assert(unsigned(zero_extend(0x8000, 64)) == 32768);
  assert(unsigned(zero_extend(0x80000000, 64)) == 2147483648);
  assert(unsigned(zero_extend(0x8000000000000000, 64)) == 9223372036854775808);
  assert(unsigned(zero_extend(0x8000000000000001, 64)) == 9223372036854775809);
  assert(unsigned(zero_extend(0x8000000000000002, 64)) == 9223372036854775810);
  assert(unsigned(zero_extend(0x8000000000000003, 64)) == 9223372036854775811);
  assert(unsigned(zero_extend(0x8000000000007ffe, 64)) == 9223372036854808574);
  assert(unsigned(zero_extend(0x8000000000007fff, 64)) == 9223372036854808575);
  assert(unsigned(zero_extend(0x8000000000008000, 64)) == 9223372036854808576);
  assert(unsigned(zero_extend(0x8000000000008001, 64)) == 9223372036854808577);
  assert(unsigned(zero_extend(0x800000000000fffe, 64)) == 9223372036854841342);
  assert(unsigned(zero_extend(0x800000000000ffff, 64)) == 9223372036854841343);
  assert(unsigned(zero_extend(0x800000007ffffffe, 64)) == 9223372039002259454);
  assert(unsigned(zero_extend(0x800000007fffffff, 64)) == 9223372039002259455);
  assert(unsigned(zero_extend(0x8000000080000000, 64)) == 9223372039002259456);
  assert(unsigned(zero_extend(0x8000000080000001, 64)) == 9223372039002259457);
  assert(unsigned(zero_extend(0x80000000fffffffe, 64)) == 9223372041149743102);
  assert(unsigned(zero_extend(0x80000000ffffffff, 64)) == 9223372041149743103);
  assert(unsigned(zero_extend(0x80000001, 64)) == 2147483649);
  assert(unsigned(zero_extend(0x80000002, 64)) == 2147483650);
  assert(unsigned(zero_extend(0x80000003, 64)) == 2147483651);
  assert(unsigned(zero_extend(0x80008000, 64)) == 2147516416);
  assert(unsigned(zero_extend(0x8000800080008000, 64)) == 9223512776490647552);
  assert(unsigned(zero_extend(0x8000800080008002, 64)) == 9223512776490647554);
  assert(unsigned(zero_extend(0x8001, 64)) == 32769);
  assert(unsigned(zero_extend(0x80010003, 64)) == 2147549187);
  assert(unsigned(zero_extend(0x8002, 64)) == 32770);
  assert(unsigned(zero_extend(0x8003, 64)) == 32771);
  assert(unsigned(zero_extend(0x8004, 64)) == 32772);
  assert(unsigned(zero_extend(0x8008, 64)) == 32776);
  assert(unsigned(zero_extend(0x800c, 64)) == 32780);
  assert(unsigned(zero_extend(0x8030, 64)) == 32816);
  assert(unsigned(zero_extend(0x8034, 64)) == 32820);
  assert(unsigned(zero_extend(0x8038, 64)) == 32824);
  assert(unsigned(zero_extend(0x803c, 64)) == 32828);
  assert(unsigned(zero_extend(0x8040, 64)) == 32832);
  assert(unsigned(zero_extend(0x8054, 64)) == 32852);
  assert(unsigned(zero_extend(0x8058, 64)) == 32856);
  assert(unsigned(zero_extend(0x8064, 64)) == 32868);
  assert(unsigned(zero_extend(0x8069, 64)) == 32873);
  assert(unsigned(zero_extend(0x80aa, 64)) == 32938);
  assert(unsigned(zero_extend(0x81, 64)) == 129);
  assert(unsigned(zero_extend(0x82, 64)) == 130);
  assert(unsigned(zero_extend(0x83, 64)) == 131);
  assert(unsigned(zero_extend(0x84, 64)) == 132);
  assert(unsigned(zero_extend(0x84000, 64)) == 540672);
  assert(unsigned(zero_extend(0x84800, 64)) == 542720);
  assert(unsigned(zero_extend(0x85, 64)) == 133);
  assert(unsigned(zero_extend(0x86, 64)) == 134);
  assert(unsigned(zero_extend(0x87, 64)) == 135);
  assert(unsigned(zero_extend(0x87654321, 64)) == 2271560481);
  assert(unsigned(zero_extend(0x876543210fedcba9, 64)) == 9756277977048271785);
  assert(unsigned(zero_extend(0x88, 64)) == 136);
  assert(unsigned(zero_extend(0x8899aabb, 64)) == 2291772091);
  assert(unsigned(zero_extend(0x8899aabb8899aabb, 64)) == 9843086183022308027);
  assert(unsigned(zero_extend(0x8899aabb8899aabd, 64)) == 9843086183022308029);
  assert(unsigned(zero_extend(0x889aaabc889aaabd, 64)) == 9843367662294051517);
  assert(unsigned(zero_extend(0x89, 64)) == 137);
  assert(unsigned(zero_extend(0x89ab, 64)) == 35243);
  assert(unsigned(zero_extend(0x8a, 64)) == 138);
  assert(unsigned(zero_extend(0x8b, 64)) == 139);
  assert(unsigned(zero_extend(0x8c, 64)) == 140);
  assert(unsigned(zero_extend(0x8d, 64)) == 141);
  assert(unsigned(zero_extend(0x8fffffffffffffff, 64)) == 10376293541461622783);
  assert(unsigned(zero_extend(0x9, 64)) == 9);
  assert(unsigned(zero_extend(0x90, 64)) == 144);
  assert(unsigned(zero_extend(0x90000000, 64)) == 2415919104);
  assert(unsigned(zero_extend(0x9000000000000000, 64)) == 10376293541461622784);
  assert(unsigned(zero_extend(0x9000000000000001, 64)) == 10376293541461622785);
  assert(unsigned(zero_extend(0x90000001, 64)) == 2415919105);
  assert(unsigned(zero_extend(0x9121b3439121b344, 64)) == 10457836912510088004);
  assert(unsigned(zero_extend(0x9200000, 64)) == 153092096);
  assert(unsigned(zero_extend(0x9200004, 64)) == 153092100);
  assert(unsigned(zero_extend(0x9200008, 64)) == 153092104);
  assert(unsigned(zero_extend(0x9200010, 64)) == 153092112);
  assert(unsigned(zero_extend(0x9200014, 64)) == 153092116);
  assert(unsigned(zero_extend(0x9200018, 64)) == 153092120);
  assert(unsigned(zero_extend(0x9200020, 64)) == 153092128);
  assert(unsigned(zero_extend(0x9200024, 64)) == 153092132);
  assert(unsigned(zero_extend(0x9200028, 64)) == 153092136);
  assert(unsigned(zero_extend(0x9200030, 64)) == 153092144);
  assert(unsigned(zero_extend(0x9200034, 64)) == 153092148);
  assert(unsigned(zero_extend(0x9200038, 64)) == 153092152);
  assert(unsigned(zero_extend(0x920003c, 64)) == 153092156);
  assert(unsigned(zero_extend(0x9200040, 64)) == 153092160);
  assert(unsigned(zero_extend(0x9200044, 64)) == 153092164);
  assert(unsigned(zero_extend(0x9200048, 64)) == 153092168);
  assert(unsigned(zero_extend(0x920004c, 64)) == 153092172);
  assert(unsigned(zero_extend(0x9200050, 64)) == 153092176);
  assert(unsigned(zero_extend(0x9200054, 64)) == 153092180);
  assert(unsigned(zero_extend(0x9200058, 64)) == 153092184);
  assert(unsigned(zero_extend(0x920005c, 64)) == 153092188);
  assert(unsigned(zero_extend(0x9200060, 64)) == 153092192);
  assert(unsigned(zero_extend(0x9200064, 64)) == 153092196);
  assert(unsigned(zero_extend(0x9200068, 64)) == 153092200);
  assert(unsigned(zero_extend(0x920006c, 64)) == 153092204);
  assert(unsigned(zero_extend(0x9200070, 64)) == 153092208);
  assert(unsigned(zero_extend(0x9200074, 64)) == 153092212);
  assert(unsigned(zero_extend(0x9200078, 64)) == 153092216);
  assert(unsigned(zero_extend(0x920007c, 64)) == 153092220);
  assert(unsigned(zero_extend(0x9200080, 64)) == 153092224);
  assert(unsigned(zero_extend(0x9200084, 64)) == 153092228);
  assert(unsigned(zero_extend(0x9200088, 64)) == 153092232);
  assert(unsigned(zero_extend(0x920008c, 64)) == 153092236);
  assert(unsigned(zero_extend(0x9234567a, 64)) == 2452903546);
  assert(unsigned(zero_extend(0x9be0, 64)) == 39904);
  assert(unsigned(zero_extend(0xa, 64)) == 10);
  assert(unsigned(zero_extend(0xa0, 64)) == 160);
  assert(unsigned(zero_extend(0xa000, 64)) == 40960);
  assert(unsigned(zero_extend(0xa0000000, 64)) == 2684354560);
  assert(unsigned(zero_extend(0xa200000, 64)) == 169869312);
  assert(unsigned(zero_extend(0xa200004, 64)) == 169869316);
  assert(unsigned(zero_extend(0xa200008, 64)) == 169869320);
  assert(unsigned(zero_extend(0xa200010, 64)) == 169869328);
  assert(unsigned(zero_extend(0xa200014, 64)) == 169869332);
  assert(unsigned(zero_extend(0xa200018, 64)) == 169869336);
  assert(unsigned(zero_extend(0xa200020, 64)) == 169869344);
  assert(unsigned(zero_extend(0xa200024, 64)) == 169869348);
  assert(unsigned(zero_extend(0xa200028, 64)) == 169869352);
  assert(unsigned(zero_extend(0xa200030, 64)) == 169869360);
  assert(unsigned(zero_extend(0xa200034, 64)) == 169869364);
  assert(unsigned(zero_extend(0xa200038, 64)) == 169869368);
  assert(unsigned(zero_extend(0xa200040, 64)) == 169869376);
  assert(unsigned(zero_extend(0xa200044, 64)) == 169869380);
  assert(unsigned(zero_extend(0xa200048, 64)) == 169869384);
  assert(unsigned(zero_extend(0xa200050, 64)) == 169869392);
  assert(unsigned(zero_extend(0xa200054, 64)) == 169869396);
  assert(unsigned(zero_extend(0xa200058, 64)) == 169869400);
  assert(unsigned(zero_extend(0xa20005c, 64)) == 169869404);
  assert(unsigned(zero_extend(0xa200060, 64)) == 169869408);
  assert(unsigned(zero_extend(0xa200064, 64)) == 169869412);
  assert(unsigned(zero_extend(0xa200068, 64)) == 169869416);
  assert(unsigned(zero_extend(0xa20006c, 64)) == 169869420);
  assert(unsigned(zero_extend(0xa200070, 64)) == 169869424);
  assert(unsigned(zero_extend(0xa200074, 64)) == 169869428);
  assert(unsigned(zero_extend(0xa200078, 64)) == 169869432);
  assert(unsigned(zero_extend(0xa20007c, 64)) == 169869436);
  assert(unsigned(zero_extend(0xa200080, 64)) == 169869440);
  assert(unsigned(zero_extend(0xa200084, 64)) == 169869444);
  assert(unsigned(zero_extend(0xa200088, 64)) == 169869448);
  assert(unsigned(zero_extend(0xa20008c, 64)) == 169869452);
  assert(unsigned(zero_extend(0xa200090, 64)) == 169869456);
  assert(unsigned(zero_extend(0xa200094, 64)) == 169869460);
  assert(unsigned(zero_extend(0xa200098, 64)) == 169869464);
  assert(unsigned(zero_extend(0xa20009c, 64)) == 169869468);
  assert(unsigned(zero_extend(0xa2000a0, 64)) == 169869472);
  assert(unsigned(zero_extend(0xa2000a4, 64)) == 169869476);
  assert(unsigned(zero_extend(0xa2000a8, 64)) == 169869480);
  assert(unsigned(zero_extend(0xa2000ac, 64)) == 169869484);
  assert(unsigned(zero_extend(0xa50006c, 64)) == 173015148);
  assert(unsigned(zero_extend(0xa500070, 64)) == 173015152);
  assert(unsigned(zero_extend(0xa500074, 64)) == 173015156);
  assert(unsigned(zero_extend(0xa5a5, 64)) == 42405);
  assert(unsigned(zero_extend(0xa5a5a5a5, 64)) == 2779096485);
  assert(unsigned(zero_extend(0xa5a5a5a5a5a5a5a5, 64)) == 11936128518282651045);
  assert(unsigned(zero_extend(0xa8, 64)) == 168);
  assert(unsigned(zero_extend(0xb, 64)) == 11);
  assert(unsigned(zero_extend(0xb0, 64)) == 176);
  assert(unsigned(zero_extend(0xb8, 64)) == 184);
  assert(unsigned(zero_extend(0xc, 64)) == 12);
  assert(unsigned(zero_extend(0xc0, 64)) == 192);
  assert(unsigned(zero_extend(0xc00fefff, 64)) == 3222269951);
  assert(unsigned(zero_extend(0xd, 64)) == 13);
  assert(unsigned(zero_extend(0xd0, 64)) == 208);
  assert(unsigned(zero_extend(0xdddddddddddddddc, 64)) == 15987178197214944732);
  assert(unsigned(zero_extend(0xe, 64)) == 14);
  assert(unsigned(zero_extend(0xe0, 64)) == 224);
  assert(unsigned(zero_extend(0xedcba9876543210e, 64)) == 17134975606245761294);
  assert(unsigned(zero_extend(0xf, 64)) == 15);
  assert(unsigned(zero_extend(0xf00, 64)) == 3840);
  assert(unsigned(zero_extend(0xf000000000000000, 64)) == 17293822569102704640);
  assert(unsigned(zero_extend(0xff, 64)) == 255);
  assert(unsigned(zero_extend(0xfffe, 64)) == 65534);
  assert(unsigned(zero_extend(0xffff, 64)) == 65535);
  assert(unsigned(zero_extend(0xffff8000, 64)) == 4294934528);
  assert(unsigned(zero_extend(0xffffc, 64)) == 1048572);
  assert(unsigned(zero_extend(0xffffe000ffffe000, 64)) == 18446708893632421888);
  assert(unsigned(zero_extend(0xfffffff, 64)) == 268435455);
  assert(unsigned(zero_extend(0xfffffffe, 64)) == 4294967294);
  assert(unsigned(zero_extend(0xfffffffe77665544, 64)) == 18446744067122812228);
  assert(unsigned(zero_extend(0xfffffffe7fffffff, 64)) == 18446744067267100671);
  assert(unsigned(zero_extend(0xfffffffe80000000, 64)) == 18446744067267100672);
  assert(unsigned(zero_extend(0xfffffffef89b3cde, 64)) == 18446744069290540254);
  assert(unsigned(zero_extend(0xfffffffefffffffe, 64)) == 18446744069414584318);
  assert(unsigned(zero_extend(0xfffffffeffffffff, 64)) == 18446744069414584319);
  assert(unsigned(zero_extend(0xffffffff, 64)) == 4294967295);
  assert(unsigned(zero_extend(0xffffffff00000000, 64)) == 18446744069414584320);
  assert(unsigned(zero_extend(0xffffffff00000001, 64)) == 18446744069414584321);
  assert(unsigned(zero_extend(0xffffffff00007fff, 64)) == 18446744069414617087);
  assert(unsigned(zero_extend(0xffffffff3ff01000, 64)) == 18446744070487281664);
  assert(unsigned(zero_extend(0xffffffff5fffffff, 64)) == 18446744071025197055);
  assert(unsigned(zero_extend(0xffffffff6dcba985, 64)) == 18446744071256648069);
  assert(unsigned(zero_extend(0xffffffff6ffffffe, 64)) == 18446744071293632510);
  assert(unsigned(zero_extend(0xffffffff6fffffff, 64)) == 18446744071293632511);
  assert(unsigned(zero_extend(0xffffffff77665544, 64)) == 18446744071417779524);
  assert(unsigned(zero_extend(0xffffffff7ffefffc, 64)) == 18446744071562002428);
  assert(unsigned(zero_extend(0xffffffff7ffffffc, 64)) == 18446744071562067964);
  assert(unsigned(zero_extend(0xffffffff7ffffffd, 64)) == 18446744071562067965);
  assert(unsigned(zero_extend(0xffffffff7ffffffe, 64)) == 18446744071562067966);
  assert(unsigned(zero_extend(0xffffffff7fffffff, 64)) == 18446744071562067967);
  assert(unsigned(zero_extend(0xffffffff80000000, 64)) == 18446744071562067968);
  assert(unsigned(zero_extend(0xffffffff80000001, 64)) == 18446744071562067969);
  assert(unsigned(zero_extend(0xffffffff94837260, 64)) == 18446744071906226784);
  assert(unsigned(zero_extend(0xffffffffdfffffff, 64)) == 18446744073172680703);
  assert(unsigned(zero_extend(0xffffffffed9fff7f, 64)) == 18446744073401270143);
  assert(unsigned(zero_extend(0xffffffffedafff8f, 64)) == 18446744073402318735);
  assert(unsigned(zero_extend(0xfffffffff0000000, 64)) == 18446744073441116160);
  assert(unsigned(zero_extend(0xfffffffff7ffffff, 64)) == 18446744073575333887);
  assert(unsigned(zero_extend(0xfffffffff89b3cde, 64)) == 18446744073585507550);
  assert(unsigned(zero_extend(0xfffffffffcefffff, 64)) == 18446744073658171391);
  assert(unsigned(zero_extend(0xfffffffffcf0ffff, 64)) == 18446744073658236927);
  assert(unsigned(zero_extend(0xfffffffffcf1ffff, 64)) == 18446744073658302463);
  assert(unsigned(zero_extend(0xfffffffffcf84000, 64)) == 18446744073658712064);
  assert(unsigned(zero_extend(0xfffffffffcf94000, 64)) == 18446744073658777600);
  assert(unsigned(zero_extend(0xfffffffffcfa4000, 64)) == 18446744073658843136);
  assert(unsigned(zero_extend(0xfffffffffd0affff, 64)) == 18446744073659940863);
  assert(unsigned(zero_extend(0xfffffffffd0bffff, 64)) == 18446744073660006399);
  assert(unsigned(zero_extend(0xfffffffffd0fc000, 64)) == 18446744073660252160);
  assert(unsigned(zero_extend(0xfffffffffd10c000, 64)) == 18446744073660317696);
  assert(unsigned(zero_extend(0xfffffffffd10ffff, 64)) == 18446744073660334079);
  assert(unsigned(zero_extend(0xfffffffffd11ffff, 64)) == 18446744073660399615);
  assert(unsigned(zero_extend(0xfffffffffd130000, 64)) == 18446744073660465152);
  assert(unsigned(zero_extend(0xfffffffffd13ffff, 64)) == 18446744073660530687);
  assert(unsigned(zero_extend(0xfffffffffd140000, 64)) == 18446744073660530688);
  assert(unsigned(zero_extend(0xfffffffffd14ffff, 64)) == 18446744073660596223);
  assert(unsigned(zero_extend(0xfffffffffd170000, 64)) == 18446744073660727296);
  assert(unsigned(zero_extend(0xfffffffffd18c000, 64)) == 18446744073660841984);
  assert(unsigned(zero_extend(0xfffffffffebffe6b, 64)) == 18446744073688579691);
  assert(unsigned(zero_extend(0xfffffffffebffefb, 64)) == 18446744073688579835);
  assert(unsigned(zero_extend(0xfffffffffebfff3b, 64)) == 18446744073688579899);
  assert(unsigned(zero_extend(0xffffffffffefffff, 64)) == 18446744073708503039);
  assert(unsigned(zero_extend(0xfffffffffff, 64)) == 17592186044415);
  assert(unsigned(zero_extend(0xfffffffffff70000, 64)) == 18446744073708961792);
  assert(unsigned(zero_extend(0xfffffffffff80000, 64)) == 18446744073709027328);
  assert(unsigned(zero_extend(0xfffffffffffc0000, 64)) == 18446744073709289472);
  assert(unsigned(zero_extend(0xfffffffffffd0000, 64)) == 18446744073709355008);
  assert(unsigned(zero_extend(0xfffffffffffdffff, 64)) == 18446744073709420543);
  assert(unsigned(zero_extend(0xfffffffffffe0000, 64)) == 18446744073709420544);
  assert(unsigned(zero_extend(0xfffffffffffe7ffe, 64)) == 18446744073709453310);
  assert(unsigned(zero_extend(0xfffffffffffe7fff, 64)) == 18446744073709453311);
  assert(unsigned(zero_extend(0xfffffffffffe8000, 64)) == 18446744073709453312);
  assert(unsigned(zero_extend(0xfffffffffffe8001, 64)) == 18446744073709453313);
  assert(unsigned(zero_extend(0xfffffffffffefffe, 64)) == 18446744073709486078);
  assert(unsigned(zero_extend(0xfffffffffffeffff, 64)) == 18446744073709486079);
  assert(unsigned(zero_extend(0xffffffffffff0000, 64)) == 18446744073709486080);
  assert(unsigned(zero_extend(0xffffffffffff0001, 64)) == 18446744073709486081);
  assert(unsigned(zero_extend(0xffffffffffff641f, 64)) == 18446744073709511711);
  assert(unsigned(zero_extend(0xffffffffffff7ffc, 64)) == 18446744073709518844);
  assert(unsigned(zero_extend(0xffffffffffff7ffd, 64)) == 18446744073709518845);
  assert(unsigned(zero_extend(0xffffffffffff7ffe, 64)) == 18446744073709518846);
  assert(unsigned(zero_extend(0xffffffffffff7fff, 64)) == 18446744073709518847);
  assert(unsigned(zero_extend(0xffffffffffff8000, 64)) == 18446744073709518848);
  assert(unsigned(zero_extend(0xffffffffffff8001, 64)) == 18446744073709518849);
  assert(unsigned(zero_extend(0xffffffffffffbeff, 64)) == 18446744073709534975);
  assert(unsigned(zero_extend(0xffffffffffffbf40, 64)) == 18446744073709535040);
  assert(unsigned(zero_extend(0xffffffffffffbf41, 64)) == 18446744073709535041);
  assert(unsigned(zero_extend(0xffffffffffffbfff, 64)) == 18446744073709535231);
  assert(unsigned(zero_extend(0xffffffffffffc22c, 64)) == 18446744073709535788);
  assert(unsigned(zero_extend(0xffffffffffffc24c, 64)) == 18446744073709535820);
  assert(unsigned(zero_extend(0xffffffffffffd220, 64)) == 18446744073709539872);
  assert(unsigned(zero_extend(0xffffffffffffd23c, 64)) == 18446744073709539900);
  assert(unsigned(zero_extend(0xffffffffffffe220, 64)) == 18446744073709543968);
  assert(unsigned(zero_extend(0xffffffffffffe23c, 64)) == 18446744073709543996);
  assert(unsigned(zero_extend(0xffffffffffffefff, 64)) == 18446744073709547519);
  assert(unsigned(zero_extend(0xfffffffffffffeef, 64)) == 18446744073709551343);
  assert(unsigned(zero_extend(0xfffffffffffffeff, 64)) == 18446744073709551359);
  assert(unsigned(zero_extend(0xffffffffffffff1f, 64)) == 18446744073709551391);
  assert(unsigned(zero_extend(0xffffffffffffff2f, 64)) == 18446744073709551407);
  assert(unsigned(zero_extend(0xffffffffffffff4f, 64)) == 18446744073709551439);
  assert(unsigned(zero_extend(0xffffffffffffff6f, 64)) == 18446744073709551471);
  assert(unsigned(zero_extend(0xffffffffffffff80, 64)) == 18446744073709551488);
  assert(unsigned(zero_extend(0xffffffffffffff8f, 64)) == 18446744073709551503);
  assert(unsigned(zero_extend(0xffffffffffffff9f, 64)) == 18446744073709551519);
  assert(unsigned(zero_extend(0xffffffffffffffa0, 64)) == 18446744073709551520);
  assert(unsigned(zero_extend(0xffffffffffffffaf, 64)) == 18446744073709551535);
  assert(unsigned(zero_extend(0xffffffffffffffbf, 64)) == 18446744073709551551);
  assert(unsigned(zero_extend(0xffffffffffffffc2, 64)) == 18446744073709551554);
  assert(unsigned(zero_extend(0xffffffffffffffc4, 64)) == 18446744073709551556);
  assert(unsigned(zero_extend(0xffffffffffffffc6, 64)) == 18446744073709551558);
  assert(unsigned(zero_extend(0xffffffffffffffc8, 64)) == 18446744073709551560);
  assert(unsigned(zero_extend(0xffffffffffffffca, 64)) == 18446744073709551562);
  assert(unsigned(zero_extend(0xffffffffffffffcc, 64)) == 18446744073709551564);
  assert(unsigned(zero_extend(0xffffffffffffffce, 64)) == 18446744073709551566);
  assert(unsigned(zero_extend(0xffffffffffffffcf, 64)) == 18446744073709551567);
  assert(unsigned(zero_extend(0xffffffffffffffd0, 64)) == 18446744073709551568);
  assert(unsigned(zero_extend(0xffffffffffffffd2, 64)) == 18446744073709551570);
  assert(unsigned(zero_extend(0xffffffffffffffd4, 64)) == 18446744073709551572);
  assert(unsigned(zero_extend(0xffffffffffffffd6, 64)) == 18446744073709551574);
  assert(unsigned(zero_extend(0xffffffffffffffd8, 64)) == 18446744073709551576);
  assert(unsigned(zero_extend(0xffffffffffffffda, 64)) == 18446744073709551578);
  assert(unsigned(zero_extend(0xffffffffffffffdb, 64)) == 18446744073709551579);
  assert(unsigned(zero_extend(0xffffffffffffffdc, 64)) == 18446744073709551580);
  assert(unsigned(zero_extend(0xffffffffffffffde, 64)) == 18446744073709551582);
  assert(unsigned(zero_extend(0xffffffffffffffdf, 64)) == 18446744073709551583);
  assert(unsigned(zero_extend(0xffffffffffffffe0, 64)) == 18446744073709551584);
  assert(unsigned(zero_extend(0xffffffffffffffe2, 64)) == 18446744073709551586);
  assert(unsigned(zero_extend(0xffffffffffffffe4, 64)) == 18446744073709551588);
  assert(unsigned(zero_extend(0xffffffffffffffe6, 64)) == 18446744073709551590);
  assert(unsigned(zero_extend(0xffffffffffffffe7, 64)) == 18446744073709551591);
  assert(unsigned(zero_extend(0xffffffffffffffe8, 64)) == 18446744073709551592);
  assert(unsigned(zero_extend(0xffffffffffffffea, 64)) == 18446744073709551594);
  assert(unsigned(zero_extend(0xffffffffffffffec, 64)) == 18446744073709551596);
  assert(unsigned(zero_extend(0xffffffffffffffee, 64)) == 18446744073709551598);
  assert(unsigned(zero_extend(0xffffffffffffffef, 64)) == 18446744073709551599);
  assert(unsigned(zero_extend(0xfffffffffffffff, 64)) == 1152921504606846975);
  assert(unsigned(zero_extend(0xfffffffffffffff0, 64)) == 18446744073709551600);
  assert(unsigned(zero_extend(0xfffffffffffffff1, 64)) == 18446744073709551601);
  assert(unsigned(zero_extend(0xfffffffffffffff2, 64)) == 18446744073709551602);
  assert(unsigned(zero_extend(0xfffffffffffffff4, 64)) == 18446744073709551604);
  assert(unsigned(zero_extend(0xfffffffffffffff6, 64)) == 18446744073709551606);
  assert(unsigned(zero_extend(0xfffffffffffffff7, 64)) == 18446744073709551607);
  assert(unsigned(zero_extend(0xfffffffffffffff8, 64)) == 18446744073709551608);
  assert(unsigned(zero_extend(0xfffffffffffffffa, 64)) == 18446744073709551610);
  assert(unsigned(zero_extend(0xfffffffffffffffb, 64)) == 18446744073709551611);
  assert(unsigned(zero_extend(0xfffffffffffffffc, 64)) == 18446744073709551612);
  assert(unsigned(zero_extend(0xfffffffffffffffd, 64)) == 18446744073709551613);
  assert(unsigned(zero_extend(0xfffffffffffffffe, 64)) == 18446744073709551614);
  assert(unsigned(zero_extend(0xffffffffffffffff, 64)) == 18446744073709551615);
  assert(unsigned(zero_extend(0x0, 8)) == 0);
  assert(unsigned(zero_extend(0x20, 8)) == 32);
  assert(unsigned(zero_extend(0x28, 8)) == 40);
  assert(unsigned(zero_extend(0x29, 8)) == 41);
  assert(unsigned(zero_extend(0x2a, 8)) == 42);
  assert(unsigned(zero_extend(0x2d, 8)) == 45);
  assert(unsigned(zero_extend(0x30, 8)) == 48);
  assert(unsigned(zero_extend(0x31, 8)) == 49);
  assert(unsigned(zero_extend(0x32, 8)) == 50);
  assert(unsigned(zero_extend(0x33, 8)) == 51);
  assert(unsigned(zero_extend(0x34, 8)) == 52);
  assert(unsigned(zero_extend(0x35, 8)) == 53);
  assert(unsigned(zero_extend(0x36, 8)) == 54);
  assert(unsigned(zero_extend(0x37, 8)) == 55);
  assert(unsigned(zero_extend(0x38, 8)) == 56);
  assert(unsigned(zero_extend(0x39, 8)) == 57);
  assert(unsigned(zero_extend(0x3a, 8)) == 58);
  assert(unsigned(zero_extend(0x3e, 8)) == 62);
  assert(unsigned(zero_extend(0x41, 8)) == 65);
  assert(unsigned(zero_extend(0x43, 8)) == 67);
  assert(unsigned(zero_extend(0x44, 8)) == 68);
  assert(unsigned(zero_extend(0x45, 8)) == 69);
  assert(unsigned(zero_extend(0x46, 8)) == 70);
  assert(unsigned(zero_extend(0x4b, 8)) == 75);
  assert(unsigned(zero_extend(0x4c, 8)) == 76);
  assert(unsigned(zero_extend(0x4e, 8)) == 78);
  assert(unsigned(zero_extend(0x4f, 8)) == 79);
  assert(unsigned(zero_extend(0x50, 8)) == 80);
  assert(unsigned(zero_extend(0x52, 8)) == 82);
  assert(unsigned(zero_extend(0x53, 8)) == 83);
  assert(unsigned(zero_extend(0x54, 8)) == 84);
  assert(unsigned(zero_extend(0x55, 8)) == 85);
  assert(unsigned(zero_extend(0x5f, 8)) == 95);
  assert(unsigned(zero_extend(0x61, 8)) == 97);
  assert(unsigned(zero_extend(0x62, 8)) == 98);
  assert(unsigned(zero_extend(0x63, 8)) == 99);
  assert(unsigned(zero_extend(0x64, 8)) == 100);
  assert(unsigned(zero_extend(0x65, 8)) == 101);
  assert(unsigned(zero_extend(0x66, 8)) == 102);
  assert(unsigned(zero_extend(0x68, 8)) == 104);
  assert(unsigned(zero_extend(0x69, 8)) == 105);
  assert(unsigned(zero_extend(0x6c, 8)) == 108);
  assert(unsigned(zero_extend(0x6d, 8)) == 109);
  assert(unsigned(zero_extend(0x6e, 8)) == 110);
  assert(unsigned(zero_extend(0x6f, 8)) == 111);
  assert(unsigned(zero_extend(0x70, 8)) == 112);
  assert(unsigned(zero_extend(0x72, 8)) == 114);
  assert(unsigned(zero_extend(0x73, 8)) == 115);
  assert(unsigned(zero_extend(0x74, 8)) == 116);
  assert(unsigned(zero_extend(0x75, 8)) == 117);
  assert(unsigned(zero_extend(0x76, 8)) == 118);
  assert(unsigned(zero_extend(0x9, 8)) == 9);
  assert(unsigned(zero_extend(0xa, 8)) == 10);
}