File: signed.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 (1709 lines) | stat: -rw-r--r-- 95,493 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
default Order dec

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

overload zero_extend = {sail_zero_extend}

function main (() : unit) -> unit = {
  assert(signed(zero_extend(0x0, 32)) == 0);
  assert(signed(zero_extend(0x1, 32)) == 1);
  assert(signed(zero_extend(0x10, 32)) == 16);
  assert(signed(zero_extend(0x10000, 32)) == 65536);
  assert(signed(zero_extend(0x10001, 32)) == 65537);
  assert(signed(zero_extend(0x11, 32)) == 17);
  assert(signed(zero_extend(0x11223344, 32)) == 287454020);
  assert(signed(zero_extend(0x118, 32)) == 280);
  assert(signed(zero_extend(0x12, 32)) == 18);
  assert(signed(zero_extend(0x1234, 32)) == 4660);
  assert(signed(zero_extend(0x12345678, 32)) == 305419896);
  assert(signed(zero_extend(0x13, 32)) == 19);
  assert(signed(zero_extend(0x14, 32)) == 20);
  assert(signed(zero_extend(0x15, 32)) == 21);
  assert(signed(zero_extend(0x16, 32)) == 22);
  assert(signed(zero_extend(0x17, 32)) == 23);
  assert(signed(zero_extend(0x17ffe, 32)) == 98302);
  assert(signed(zero_extend(0x17fff, 32)) == 98303);
  assert(signed(zero_extend(0x18, 32)) == 24);
  assert(signed(zero_extend(0x18000, 32)) == 98304);
  assert(signed(zero_extend(0x19, 32)) == 25);
  assert(signed(zero_extend(0x1a, 32)) == 26);
  assert(signed(zero_extend(0x1b, 32)) == 27);
  assert(signed(zero_extend(0x1c, 32)) == 28);
  assert(signed(zero_extend(0x1d, 32)) == 29);
  assert(signed(zero_extend(0x1e, 32)) == 30);
  assert(signed(zero_extend(0x1f, 32)) == 31);
  assert(signed(zero_extend(0x2, 32)) == 2);
  assert(signed(zero_extend(0x20, 32)) == 32);
  assert(signed(zero_extend(0x20000, 32)) == 131072);
  assert(signed(zero_extend(0x21, 32)) == 33);
  assert(signed(zero_extend(0x23, 32)) == 35);
  assert(signed(zero_extend(0x230, 32)) == 560);
  assert(signed(zero_extend(0x25, 32)) == 37);
  assert(signed(zero_extend(0x26, 32)) == 38);
  assert(signed(zero_extend(0x27, 32)) == 39);
  assert(signed(zero_extend(0x28, 32)) == 40);
  assert(signed(zero_extend(0x29, 32)) == 41);
  assert(signed(zero_extend(0x2a, 32)) == 42);
  assert(signed(zero_extend(0x2a0, 32)) == 672);
  assert(signed(zero_extend(0x2b, 32)) == 43);
  assert(signed(zero_extend(0x2d, 32)) == 45);
  assert(signed(zero_extend(0x2e, 32)) == 46);
  assert(signed(zero_extend(0x2f, 32)) == 47);
  assert(signed(zero_extend(0x3, 32)) == 3);
  assert(signed(zero_extend(0x30, 32)) == 48);
  assert(signed(zero_extend(0x31, 32)) == 49);
  assert(signed(zero_extend(0x32, 32)) == 50);
  assert(signed(zero_extend(0x33, 32)) == 51);
  assert(signed(zero_extend(0x34, 32)) == 52);
  assert(signed(zero_extend(0x35, 32)) == 53);
  assert(signed(zero_extend(0x36, 32)) == 54);
  assert(signed(zero_extend(0x37, 32)) == 55);
  assert(signed(zero_extend(0x38, 32)) == 56);
  assert(signed(zero_extend(0x39, 32)) == 57);
  assert(signed(zero_extend(0x3a, 32)) == 58);
  assert(signed(zero_extend(0x3c, 32)) == 60);
  assert(signed(zero_extend(0x3e, 32)) == 62);
  assert(signed(zero_extend(0x3f, 32)) == 63);
  assert(signed(zero_extend(0x4, 32)) == 4);
  assert(signed(zero_extend(0x40, 32)) == 64);
  assert(signed(zero_extend(0x41, 32)) == 65);
  assert(signed(zero_extend(0x43, 32)) == 67);
  assert(signed(zero_extend(0x44, 32)) == 68);
  assert(signed(zero_extend(0x45, 32)) == 69);
  assert(signed(zero_extend(0x46, 32)) == 70);
  assert(signed(zero_extend(0x460, 32)) == 1120);
  assert(signed(zero_extend(0x47, 32)) == 71);
  assert(signed(zero_extend(0x48, 32)) == 72);
  assert(signed(zero_extend(0x4a, 32)) == 74);
  assert(signed(zero_extend(0x4b, 32)) == 75);
  assert(signed(zero_extend(0x4c, 32)) == 76);
  assert(signed(zero_extend(0x4d, 32)) == 77);
  assert(signed(zero_extend(0x4e, 32)) == 78);
  assert(signed(zero_extend(0x4f, 32)) == 79);
  assert(signed(zero_extend(0x5, 32)) == 5);
  assert(signed(zero_extend(0x50, 32)) == 80);
  assert(signed(zero_extend(0x52, 32)) == 82);
  assert(signed(zero_extend(0x53, 32)) == 83);
  assert(signed(zero_extend(0x54, 32)) == 84);
  assert(signed(zero_extend(0x55, 32)) == 85);
  assert(signed(zero_extend(0x5a5a, 32)) == 23130);
  assert(signed(zero_extend(0x5a5a5a59, 32)) == 1515870809);
  assert(signed(zero_extend(0x5a5a5a5a, 32)) == 1515870810);
  assert(signed(zero_extend(0x5f, 32)) == 95);
  assert(signed(zero_extend(0x6, 32)) == 6);
  assert(signed(zero_extend(0x60000000, 32)) == 1610612736);
  assert(signed(zero_extend(0x61, 32)) == 97);
  assert(signed(zero_extend(0x62, 32)) == 98);
  assert(signed(zero_extend(0x63, 32)) == 99);
  assert(signed(zero_extend(0x64, 32)) == 100);
  assert(signed(zero_extend(0x65, 32)) == 101);
  assert(signed(zero_extend(0x66, 32)) == 102);
  assert(signed(zero_extend(0x68, 32)) == 104);
  assert(signed(zero_extend(0x69, 32)) == 105);
  assert(signed(zero_extend(0x6b7c8d9f, 32)) == 1803324831);
  assert(signed(zero_extend(0x6c, 32)) == 108);
  assert(signed(zero_extend(0x6d, 32)) == 109);
  assert(signed(zero_extend(0x6e, 32)) == 110);
  assert(signed(zero_extend(0x6f, 32)) == 111);
  assert(signed(zero_extend(0x7, 32)) == 7);
  assert(signed(zero_extend(0x70, 32)) == 112);
  assert(signed(zero_extend(0x72, 32)) == 114);
  assert(signed(zero_extend(0x73, 32)) == 115);
  assert(signed(zero_extend(0x74, 32)) == 116);
  assert(signed(zero_extend(0x75, 32)) == 117);
  assert(signed(zero_extend(0x76, 32)) == 118);
  assert(signed(zero_extend(0x764c321, 32)) == 124044065);
  assert(signed(zero_extend(0x78, 32)) == 120);
  assert(signed(zero_extend(0x7ffe, 32)) == 32766);
  assert(signed(zero_extend(0x7fff, 32)) == 32767);
  assert(signed(zero_extend(0x7fff7fff, 32)) == 2147450879);
  assert(signed(zero_extend(0x7ffffffe, 32)) == 2147483646);
  assert(signed(zero_extend(0x7fffffff, 32)) == 2147483647);
  assert(signed(zero_extend(0x8, 32)) == 8);
  assert(signed(zero_extend(0x8000, 32)) == 32768);
  assert(signed(zero_extend(0x80000000, 32)) == -2147483648);
  assert(signed(zero_extend(0x80000001, 32)) == -2147483647);
  assert(signed(zero_extend(0x80000002, 32)) == -2147483646);
  assert(signed(zero_extend(0x80000003, 32)) == -2147483645);
  assert(signed(zero_extend(0x80008000, 32)) == -2147450880);
  assert(signed(zero_extend(0x8001, 32)) == 32769);
  assert(signed(zero_extend(0x8002, 32)) == 32770);
  assert(signed(zero_extend(0x8003, 32)) == 32771);
  assert(signed(zero_extend(0x87654321, 32)) == -2023406815);
  assert(signed(zero_extend(0x8899aabb, 32)) == -2003195205);
  assert(signed(zero_extend(0x89ab, 32)) == 35243);
  assert(signed(zero_extend(0x8fffffff, 32)) == -1879048193);
  assert(signed(zero_extend(0x9, 32)) == 9);
  assert(signed(zero_extend(0x90000000, 32)) == -1879048192);
  assert(signed(zero_extend(0x90000001, 32)) == -1879048191);
  assert(signed(zero_extend(0x9234567a, 32)) == -1842063750);
  assert(signed(zero_extend(0x9be0, 32)) == 39904);
  assert(signed(zero_extend(0xa, 32)) == 10);
  assert(signed(zero_extend(0xa5a5, 32)) == 42405);
  assert(signed(zero_extend(0xa5a5a5a5, 32)) == -1515870811);
  assert(signed(zero_extend(0xb, 32)) == 11);
  assert(signed(zero_extend(0xc, 32)) == 12);
  assert(signed(zero_extend(0xc000, 32)) == 49152);
  assert(signed(zero_extend(0xd, 32)) == 13);
  assert(signed(zero_extend(0xe, 32)) == 14);
  assert(signed(zero_extend(0xe0000000, 32)) == -536870912);
  assert(signed(zero_extend(0xf, 32)) == 15);
  assert(signed(zero_extend(0xff, 32)) == 255);
  assert(signed(zero_extend(0xfffe, 32)) == 65534);
  assert(signed(zero_extend(0xffff, 32)) == 65535);
  assert(signed(zero_extend(0xffff8000, 32)) == -32768);
  assert(signed(zero_extend(0xffffff00, 32)) == -256);
  assert(signed(zero_extend(0xffffff87, 32)) == -121);
  assert(signed(zero_extend(0xffffff8c, 32)) == -116);
  assert(signed(zero_extend(0xffffff93, 32)) == -109);
  assert(signed(zero_extend(0xffffff9b, 32)) == -101);
  assert(signed(zero_extend(0xffffffa7, 32)) == -89);
  assert(signed(zero_extend(0xffffffd0, 32)) == -48);
  assert(signed(zero_extend(0xffffffd8, 32)) == -40);
  assert(signed(zero_extend(0xffffffda, 32)) == -38);
  assert(signed(zero_extend(0xffffffdf, 32)) == -33);
  assert(signed(zero_extend(0xffffffe0, 32)) == -32);
  assert(signed(zero_extend(0xffffffe1, 32)) == -31);
  assert(signed(zero_extend(0xffffffe2, 32)) == -30);
  assert(signed(zero_extend(0xffffffe3, 32)) == -29);
  assert(signed(zero_extend(0xffffffe4, 32)) == -28);
  assert(signed(zero_extend(0xffffffe5, 32)) == -27);
  assert(signed(zero_extend(0xffffffe6, 32)) == -26);
  assert(signed(zero_extend(0xffffffe7, 32)) == -25);
  assert(signed(zero_extend(0xffffffe8, 32)) == -24);
  assert(signed(zero_extend(0xffffffe9, 32)) == -23);
  assert(signed(zero_extend(0xffffffea, 32)) == -22);
  assert(signed(zero_extend(0xffffffeb, 32)) == -21);
  assert(signed(zero_extend(0xffffffec, 32)) == -20);
  assert(signed(zero_extend(0xffffffed, 32)) == -19);
  assert(signed(zero_extend(0xffffffee, 32)) == -18);
  assert(signed(zero_extend(0xffffffef, 32)) == -17);
  assert(signed(zero_extend(0xfffffff, 32)) == 268435455);
  assert(signed(zero_extend(0xfffffff0, 32)) == -16);
  assert(signed(zero_extend(0xfffffff1, 32)) == -15);
  assert(signed(zero_extend(0xfffffff2, 32)) == -14);
  assert(signed(zero_extend(0xfffffff3, 32)) == -13);
  assert(signed(zero_extend(0xfffffff4, 32)) == -12);
  assert(signed(zero_extend(0xfffffff5, 32)) == -11);
  assert(signed(zero_extend(0xfffffff6, 32)) == -10);
  assert(signed(zero_extend(0xfffffff7, 32)) == -9);
  assert(signed(zero_extend(0xfffffff8, 32)) == -8);
  assert(signed(zero_extend(0xfffffff9, 32)) == -7);
  assert(signed(zero_extend(0xfffffffa, 32)) == -6);
  assert(signed(zero_extend(0xfffffffb, 32)) == -5);
  assert(signed(zero_extend(0xfffffffc, 32)) == -4);
  assert(signed(zero_extend(0xfffffffd, 32)) == -3);
  assert(signed(zero_extend(0xfffffffe, 32)) == -2);
  assert(signed(zero_extend(0xffffffff, 32)) == -1);
  assert(signed(zero_extend(0x0, 64)) == 0);
  assert(signed(zero_extend(0x1, 64)) == 1);
  assert(signed(zero_extend(0x10, 64)) == 16);
  assert(signed(zero_extend(0x100, 64)) == 256);
  assert(signed(zero_extend(0x10000, 64)) == 65536);
  assert(signed(zero_extend(0x100000000, 64)) == 4294967296);
  assert(signed(zero_extend(0x100000000000, 64)) == 17592186044416);
  assert(signed(zero_extend(0x100000001, 64)) == 4294967297);
  assert(signed(zero_extend(0x10001, 64)) == 65537);
  assert(signed(zero_extend(0x1000100010001, 64)) == 281479271743489);
  assert(signed(zero_extend(0x101000, 64)) == 1052672);
  assert(signed(zero_extend(0x101220, 64)) == 1053216);
  assert(signed(zero_extend(0x102000, 64)) == 1056768);
  assert(signed(zero_extend(0x102220, 64)) == 1057312);
  assert(signed(zero_extend(0x104000, 64)) == 1064960);
  assert(signed(zero_extend(0x10400000, 64)) == 272629760);
  assert(signed(zero_extend(0x1040022c, 64)) == 272630316);
  assert(signed(zero_extend(0x10401220, 64)) == 272634400);
  assert(signed(zero_extend(0x10402220, 64)) == 272638496);
  assert(signed(zero_extend(0x10422c, 64)) == 1065516);
  assert(signed(zero_extend(0x104320, 64)) == 1065760);
  assert(signed(zero_extend(0x104368, 64)) == 1065832);
  assert(signed(zero_extend(0x104410, 64)) == 1066000);
  assert(signed(zero_extend(0x104418, 64)) == 1066008);
  assert(signed(zero_extend(0x104420, 64)) == 1066016);
  assert(signed(zero_extend(0x104428, 64)) == 1066024);
  assert(signed(zero_extend(0x104550, 64)) == 1066320);
  assert(signed(zero_extend(0x1045a0, 64)) == 1066400);
  assert(signed(zero_extend(0x1045b0, 64)) == 1066416);
  assert(signed(zero_extend(0x1045c0, 64)) == 1066432);
  assert(signed(zero_extend(0x104660, 64)) == 1066592);
  assert(signed(zero_extend(0x104670, 64)) == 1066608);
  assert(signed(zero_extend(0x104690, 64)) == 1066640);
  assert(signed(zero_extend(0x104730, 64)) == 1066800);
  assert(signed(zero_extend(0x104740, 64)) == 1066816);
  assert(signed(zero_extend(0x104750, 64)) == 1066832);
  assert(signed(zero_extend(0x10764c321, 64)) == 4419011361);
  assert(signed(zero_extend(0x108, 64)) == 264);
  assert(signed(zero_extend(0x11, 64)) == 17);
  assert(signed(zero_extend(0x110, 64)) == 272);
  assert(signed(zero_extend(0x11223344, 64)) == 287454020);
  assert(signed(zero_extend(0x1122334411223344, 64)) == 1234605615291183940);
  assert(signed(zero_extend(0x118, 64)) == 280);
  assert(signed(zero_extend(0x12, 64)) == 18);
  assert(signed(zero_extend(0x120, 64)) == 288);
  assert(signed(zero_extend(0x1200, 64)) == 4608);
  assert(signed(zero_extend(0x120005c, 64)) == 18874460);
  assert(signed(zero_extend(0x1200060, 64)) == 18874464);
  assert(signed(zero_extend(0x1200064, 64)) == 18874468);
  assert(signed(zero_extend(0x1220, 64)) == 4640);
  assert(signed(zero_extend(0x12200078, 64)) == 304087160);
  assert(signed(zero_extend(0x1220007c, 64)) == 304087164);
  assert(signed(zero_extend(0x12200080, 64)) == 304087168);
  assert(signed(zero_extend(0x1234, 64)) == 4660);
  assert(signed(zero_extend(0x12345678, 64)) == 305419896);
  assert(signed(zero_extend(0x123456789abcdef0, 64)) == 1311768467463790320);
  assert(signed(zero_extend(0x123456789abcdef1, 64)) == 1311768467463790321);
  assert(signed(zero_extend(0x123c, 64)) == 4668);
  assert(signed(zero_extend(0x12500054, 64)) == 307232852);
  assert(signed(zero_extend(0x1250006c, 64)) == 307232876);
  assert(signed(zero_extend(0x12500070, 64)) == 307232880);
  assert(signed(zero_extend(0x12600064, 64)) == 308281444);
  assert(signed(zero_extend(0x1260007c, 64)) == 308281468);
  assert(signed(zero_extend(0x12600080, 64)) == 308281472);
  assert(signed(zero_extend(0x13, 64)) == 19);
  assert(signed(zero_extend(0x1300368, 64)) == 19923816);
  assert(signed(zero_extend(0x130036c, 64)) == 19923820);
  assert(signed(zero_extend(0x1300370, 64)) == 19923824);
  assert(signed(zero_extend(0x13004b8, 64)) == 19924152);
  assert(signed(zero_extend(0x13004bc, 64)) == 19924156);
  assert(signed(zero_extend(0x13004c0, 64)) == 19924160);
  assert(signed(zero_extend(0x1300608, 64)) == 19924488);
  assert(signed(zero_extend(0x130060c, 64)) == 19924492);
  assert(signed(zero_extend(0x1300610, 64)) == 19924496);
  assert(signed(zero_extend(0x1300910, 64)) == 19925264);
  assert(signed(zero_extend(0x1300914, 64)) == 19925268);
  assert(signed(zero_extend(0x1300918, 64)) == 19925272);
  assert(signed(zero_extend(0x13f8754, 64)) == 20940628);
  assert(signed(zero_extend(0x13f8758, 64)) == 20940632);
  assert(signed(zero_extend(0x13f875c, 64)) == 20940636);
  assert(signed(zero_extend(0x13f88a4, 64)) == 20940964);
  assert(signed(zero_extend(0x13f88a8, 64)) == 20940968);
  assert(signed(zero_extend(0x13f88ac, 64)) == 20940972);
  assert(signed(zero_extend(0x14, 64)) == 20);
  assert(signed(zero_extend(0x140, 64)) == 320);
  assert(signed(zero_extend(0x14000ac, 64)) == 20971692);
  assert(signed(zero_extend(0x14000c0, 64)) == 20971712);
  assert(signed(zero_extend(0x14000c4, 64)) == 20971716);
  assert(signed(zero_extend(0x14000ec, 64)) == 20971756);
  assert(signed(zero_extend(0x1400100, 64)) == 20971776);
  assert(signed(zero_extend(0x1400104, 64)) == 20971780);
  assert(signed(zero_extend(0x140012c, 64)) == 20971820);
  assert(signed(zero_extend(0x140013c, 64)) == 20971836);
  assert(signed(zero_extend(0x1400140, 64)) == 20971840);
  assert(signed(zero_extend(0x1400178, 64)) == 20971896);
  assert(signed(zero_extend(0x1400190, 64)) == 20971920);
  assert(signed(zero_extend(0x1400194, 64)) == 20971924);
  assert(signed(zero_extend(0x14002dc, 64)) == 20972252);
  assert(signed(zero_extend(0x14002fc, 64)) == 20972284);
  assert(signed(zero_extend(0x1400300, 64)) == 20972288);
  assert(signed(zero_extend(0x1400348, 64)) == 20972360);
  assert(signed(zero_extend(0x1400368, 64)) == 20972392);
  assert(signed(zero_extend(0x140036c, 64)) == 20972396);
  assert(signed(zero_extend(0x1400438, 64)) == 20972600);
  assert(signed(zero_extend(0x1400454, 64)) == 20972628);
  assert(signed(zero_extend(0x1400458, 64)) == 20972632);
  assert(signed(zero_extend(0x140049c, 64)) == 20972700);
  assert(signed(zero_extend(0x14004b8, 64)) == 20972728);
  assert(signed(zero_extend(0x14004bc, 64)) == 20972732);
  assert(signed(zero_extend(0x1400588, 64)) == 20972936);
  assert(signed(zero_extend(0x14005a4, 64)) == 20972964);
  assert(signed(zero_extend(0x14005a8, 64)) == 20972968);
  assert(signed(zero_extend(0x14005ec, 64)) == 20973036);
  assert(signed(zero_extend(0x1400608, 64)) == 20973064);
  assert(signed(zero_extend(0x140060c, 64)) == 20973068);
  assert(signed(zero_extend(0x14006d8, 64)) == 20973272);
  assert(signed(zero_extend(0x14006f4, 64)) == 20973300);
  assert(signed(zero_extend(0x14006f8, 64)) == 20973304);
  assert(signed(zero_extend(0x1400738, 64)) == 20973368);
  assert(signed(zero_extend(0x1400754, 64)) == 20973396);
  assert(signed(zero_extend(0x1400758, 64)) == 20973400);
  assert(signed(zero_extend(0x1400824, 64)) == 20973604);
  assert(signed(zero_extend(0x1400840, 64)) == 20973632);
  assert(signed(zero_extend(0x1400844, 64)) == 20973636);
  assert(signed(zero_extend(0x1400888, 64)) == 20973704);
  assert(signed(zero_extend(0x14008a4, 64)) == 20973732);
  assert(signed(zero_extend(0x14008a8, 64)) == 20973736);
  assert(signed(zero_extend(0x14008f0, 64)) == 20973808);
  assert(signed(zero_extend(0x1400910, 64)) == 20973840);
  assert(signed(zero_extend(0x1400914, 64)) == 20973844);
  assert(signed(zero_extend(0x14086f0, 64)) == 21006064);
  assert(signed(zero_extend(0x14086f4, 64)) == 21006068);
  assert(signed(zero_extend(0x14086f8, 64)) == 21006072);
  assert(signed(zero_extend(0x140883c, 64)) == 21006396);
  assert(signed(zero_extend(0x1408840, 64)) == 21006400);
  assert(signed(zero_extend(0x1408844, 64)) == 21006404);
  assert(signed(zero_extend(0x148, 64)) == 328);
  assert(signed(zero_extend(0x15, 64)) == 21);
  assert(signed(zero_extend(0x150, 64)) == 336);
  assert(signed(zero_extend(0x15002f8, 64)) == 22020856);
  assert(signed(zero_extend(0x15002fc, 64)) == 22020860);
  assert(signed(zero_extend(0x1500300, 64)) == 22020864);
  assert(signed(zero_extend(0x1500450, 64)) == 22021200);
  assert(signed(zero_extend(0x1500454, 64)) == 22021204);
  assert(signed(zero_extend(0x1500458, 64)) == 22021208);
  assert(signed(zero_extend(0x15005a0, 64)) == 22021536);
  assert(signed(zero_extend(0x15005a4, 64)) == 22021540);
  assert(signed(zero_extend(0x15005a8, 64)) == 22021544);
  assert(signed(zero_extend(0x16, 64)) == 22);
  assert(signed(zero_extend(0x160, 64)) == 352);
  assert(signed(zero_extend(0x168, 64)) == 360);
  assert(signed(zero_extend(0x17, 64)) == 23);
  assert(signed(zero_extend(0x170, 64)) == 368);
  assert(signed(zero_extend(0x17ffe, 64)) == 98302);
  assert(signed(zero_extend(0x17fff, 64)) == 98303);
  assert(signed(zero_extend(0x17fffffff, 64)) == 6442450943);
  assert(signed(zero_extend(0x18, 64)) == 24);
  assert(signed(zero_extend(0x180, 64)) == 384);
  assert(signed(zero_extend(0x18000, 64)) == 98304);
  assert(signed(zero_extend(0x180000000, 64)) == 6442450944);
  assert(signed(zero_extend(0x18001, 64)) == 98305);
  assert(signed(zero_extend(0x18899aabb, 64)) == 6586739387);
  assert(signed(zero_extend(0x19, 64)) == 25);
  assert(signed(zero_extend(0x1a, 64)) == 26);
  assert(signed(zero_extend(0x1a0, 64)) == 416);
  assert(signed(zero_extend(0x1a600078, 64)) == 442499192);
  assert(signed(zero_extend(0x1a60007c, 64)) == 442499196);
  assert(signed(zero_extend(0x1a600080, 64)) == 442499200);
  assert(signed(zero_extend(0x1b, 64)) == 27);
  assert(signed(zero_extend(0x1c, 64)) == 28);
  assert(signed(zero_extend(0x1c0, 64)) == 448);
  assert(signed(zero_extend(0x1d, 64)) == 29);
  assert(signed(zero_extend(0x1e, 64)) == 30);
  assert(signed(zero_extend(0x1e0, 64)) == 480);
  assert(signed(zero_extend(0x1e0ac, 64)) == 123052);
  assert(signed(zero_extend(0x1e0ad, 64)) == 123053);
  assert(signed(zero_extend(0x1e0ae, 64)) == 123054);
  assert(signed(zero_extend(0x1e0af, 64)) == 123055);
  assert(signed(zero_extend(0x1e0b0, 64)) == 123056);
  assert(signed(zero_extend(0x1e0b1, 64)) == 123057);
  assert(signed(zero_extend(0x1e0b2, 64)) == 123058);
  assert(signed(zero_extend(0x1e0b3, 64)) == 123059);
  assert(signed(zero_extend(0x1e0b4, 64)) == 123060);
  assert(signed(zero_extend(0x1e0b5, 64)) == 123061);
  assert(signed(zero_extend(0x1e0b6, 64)) == 123062);
  assert(signed(zero_extend(0x1e0b7, 64)) == 123063);
  assert(signed(zero_extend(0x1e0b8, 64)) == 123064);
  assert(signed(zero_extend(0x1e0b9, 64)) == 123065);
  assert(signed(zero_extend(0x1e0ba, 64)) == 123066);
  assert(signed(zero_extend(0x1e0bb, 64)) == 123067);
  assert(signed(zero_extend(0x1e0bc, 64)) == 123068);
  assert(signed(zero_extend(0x1e0bd, 64)) == 123069);
  assert(signed(zero_extend(0x1e0be, 64)) == 123070);
  assert(signed(zero_extend(0x1e0bf, 64)) == 123071);
  assert(signed(zero_extend(0x1e0c0, 64)) == 123072);
  assert(signed(zero_extend(0x1e0c1, 64)) == 123073);
  assert(signed(zero_extend(0x1e0c2, 64)) == 123074);
  assert(signed(zero_extend(0x1e0c3, 64)) == 123075);
  assert(signed(zero_extend(0x1e0c4, 64)) == 123076);
  assert(signed(zero_extend(0x1e0c5, 64)) == 123077);
  assert(signed(zero_extend(0x1e0c6, 64)) == 123078);
  assert(signed(zero_extend(0x1e0ec, 64)) == 123116);
  assert(signed(zero_extend(0x1e0ed, 64)) == 123117);
  assert(signed(zero_extend(0x1e0ee, 64)) == 123118);
  assert(signed(zero_extend(0x1e0ef, 64)) == 123119);
  assert(signed(zero_extend(0x1e0f0, 64)) == 123120);
  assert(signed(zero_extend(0x1e0f1, 64)) == 123121);
  assert(signed(zero_extend(0x1e0f2, 64)) == 123122);
  assert(signed(zero_extend(0x1e0f3, 64)) == 123123);
  assert(signed(zero_extend(0x1e0f4, 64)) == 123124);
  assert(signed(zero_extend(0x1e0f5, 64)) == 123125);
  assert(signed(zero_extend(0x1e0f6, 64)) == 123126);
  assert(signed(zero_extend(0x1e0f7, 64)) == 123127);
  assert(signed(zero_extend(0x1e0f8, 64)) == 123128);
  assert(signed(zero_extend(0x1e0f9, 64)) == 123129);
  assert(signed(zero_extend(0x1e0fa, 64)) == 123130);
  assert(signed(zero_extend(0x1e0fb, 64)) == 123131);
  assert(signed(zero_extend(0x1e0fc, 64)) == 123132);
  assert(signed(zero_extend(0x1e0fd, 64)) == 123133);
  assert(signed(zero_extend(0x1e0fe, 64)) == 123134);
  assert(signed(zero_extend(0x1e0ff, 64)) == 123135);
  assert(signed(zero_extend(0x1e100, 64)) == 123136);
  assert(signed(zero_extend(0x1e101, 64)) == 123137);
  assert(signed(zero_extend(0x1e102, 64)) == 123138);
  assert(signed(zero_extend(0x1e103, 64)) == 123139);
  assert(signed(zero_extend(0x1e104, 64)) == 123140);
  assert(signed(zero_extend(0x1e105, 64)) == 123141);
  assert(signed(zero_extend(0x1e106, 64)) == 123142);
  assert(signed(zero_extend(0x1e107, 64)) == 123143);
  assert(signed(zero_extend(0x1e108, 64)) == 123144);
  assert(signed(zero_extend(0x1e109, 64)) == 123145);
  assert(signed(zero_extend(0x1e10a, 64)) == 123146);
  assert(signed(zero_extend(0x1e10b, 64)) == 123147);
  assert(signed(zero_extend(0x1e10c, 64)) == 123148);
  assert(signed(zero_extend(0x1e10d, 64)) == 123149);
  assert(signed(zero_extend(0x1e10e, 64)) == 123150);
  assert(signed(zero_extend(0x1e10f, 64)) == 123151);
  assert(signed(zero_extend(0x1e110, 64)) == 123152);
  assert(signed(zero_extend(0x1e111, 64)) == 123153);
  assert(signed(zero_extend(0x1e112, 64)) == 123154);
  assert(signed(zero_extend(0x1e113, 64)) == 123155);
  assert(signed(zero_extend(0x1e114, 64)) == 123156);
  assert(signed(zero_extend(0x1e115, 64)) == 123157);
  assert(signed(zero_extend(0x1e116, 64)) == 123158);
  assert(signed(zero_extend(0x1e117, 64)) == 123159);
  assert(signed(zero_extend(0x1e118, 64)) == 123160);
  assert(signed(zero_extend(0x1e119, 64)) == 123161);
  assert(signed(zero_extend(0x1e11a, 64)) == 123162);
  assert(signed(zero_extend(0x1e11b, 64)) == 123163);
  assert(signed(zero_extend(0x1e11c, 64)) == 123164);
  assert(signed(zero_extend(0x1e11d, 64)) == 123165);
  assert(signed(zero_extend(0x1e11e, 64)) == 123166);
  assert(signed(zero_extend(0x1e140, 64)) == 123200);
  assert(signed(zero_extend(0x1e141, 64)) == 123201);
  assert(signed(zero_extend(0x1e142, 64)) == 123202);
  assert(signed(zero_extend(0x1e143, 64)) == 123203);
  assert(signed(zero_extend(0x1e144, 64)) == 123204);
  assert(signed(zero_extend(0x1e145, 64)) == 123205);
  assert(signed(zero_extend(0x1e146, 64)) == 123206);
  assert(signed(zero_extend(0x1e147, 64)) == 123207);
  assert(signed(zero_extend(0x1e148, 64)) == 123208);
  assert(signed(zero_extend(0x1e149, 64)) == 123209);
  assert(signed(zero_extend(0x1e14a, 64)) == 123210);
  assert(signed(zero_extend(0x1e14b, 64)) == 123211);
  assert(signed(zero_extend(0x1e14c, 64)) == 123212);
  assert(signed(zero_extend(0x1e14d, 64)) == 123213);
  assert(signed(zero_extend(0x1e14e, 64)) == 123214);
  assert(signed(zero_extend(0x1e14f, 64)) == 123215);
  assert(signed(zero_extend(0x1e150, 64)) == 123216);
  assert(signed(zero_extend(0x1e151, 64)) == 123217);
  assert(signed(zero_extend(0x1e152, 64)) == 123218);
  assert(signed(zero_extend(0x1e153, 64)) == 123219);
  assert(signed(zero_extend(0x1e154, 64)) == 123220);
  assert(signed(zero_extend(0x1e155, 64)) == 123221);
  assert(signed(zero_extend(0x1e156, 64)) == 123222);
  assert(signed(zero_extend(0x1e157, 64)) == 123223);
  assert(signed(zero_extend(0x1e158, 64)) == 123224);
  assert(signed(zero_extend(0x1e159, 64)) == 123225);
  assert(signed(zero_extend(0x1e15a, 64)) == 123226);
  assert(signed(zero_extend(0x1e15b, 64)) == 123227);
  assert(signed(zero_extend(0x1e15c, 64)) == 123228);
  assert(signed(zero_extend(0x1e198, 64)) == 123288);
  assert(signed(zero_extend(0x1e199, 64)) == 123289);
  assert(signed(zero_extend(0x1e19a, 64)) == 123290);
  assert(signed(zero_extend(0x1e19b, 64)) == 123291);
  assert(signed(zero_extend(0x1e19c, 64)) == 123292);
  assert(signed(zero_extend(0x1e19d, 64)) == 123293);
  assert(signed(zero_extend(0x1e19e, 64)) == 123294);
  assert(signed(zero_extend(0x1e19f, 64)) == 123295);
  assert(signed(zero_extend(0x1e1a0, 64)) == 123296);
  assert(signed(zero_extend(0x1e1a1, 64)) == 123297);
  assert(signed(zero_extend(0x1e1a2, 64)) == 123298);
  assert(signed(zero_extend(0x1e1a3, 64)) == 123299);
  assert(signed(zero_extend(0x1e1a4, 64)) == 123300);
  assert(signed(zero_extend(0x1e1a5, 64)) == 123301);
  assert(signed(zero_extend(0x1e1a6, 64)) == 123302);
  assert(signed(zero_extend(0x1e1a7, 64)) == 123303);
  assert(signed(zero_extend(0x1e1a8, 64)) == 123304);
  assert(signed(zero_extend(0x1e1a9, 64)) == 123305);
  assert(signed(zero_extend(0x1e1aa, 64)) == 123306);
  assert(signed(zero_extend(0x1e1ab, 64)) == 123307);
  assert(signed(zero_extend(0x1e1ac, 64)) == 123308);
  assert(signed(zero_extend(0x1e1ad, 64)) == 123309);
  assert(signed(zero_extend(0x1e1ae, 64)) == 123310);
  assert(signed(zero_extend(0x1e1af, 64)) == 123311);
  assert(signed(zero_extend(0x1e1b0, 64)) == 123312);
  assert(signed(zero_extend(0x1ec24, 64)) == 125988);
  assert(signed(zero_extend(0x1ec25, 64)) == 125989);
  assert(signed(zero_extend(0x1ec26, 64)) == 125990);
  assert(signed(zero_extend(0x1ec27, 64)) == 125991);
  assert(signed(zero_extend(0x1ec28, 64)) == 125992);
  assert(signed(zero_extend(0x1ec29, 64)) == 125993);
  assert(signed(zero_extend(0x1ec2a, 64)) == 125994);
  assert(signed(zero_extend(0x1ec2b, 64)) == 125995);
  assert(signed(zero_extend(0x1ec2c, 64)) == 125996);
  assert(signed(zero_extend(0x1ec2d, 64)) == 125997);
  assert(signed(zero_extend(0x1ec2e, 64)) == 125998);
  assert(signed(zero_extend(0x1ec2f, 64)) == 125999);
  assert(signed(zero_extend(0x1ec30, 64)) == 126000);
  assert(signed(zero_extend(0x1ec31, 64)) == 126001);
  assert(signed(zero_extend(0x1ec32, 64)) == 126002);
  assert(signed(zero_extend(0x1ec33, 64)) == 126003);
  assert(signed(zero_extend(0x1ec34, 64)) == 126004);
  assert(signed(zero_extend(0x1ec35, 64)) == 126005);
  assert(signed(zero_extend(0x1ec36, 64)) == 126006);
  assert(signed(zero_extend(0x1ec37, 64)) == 126007);
  assert(signed(zero_extend(0x1ec38, 64)) == 126008);
  assert(signed(zero_extend(0x1ec39, 64)) == 126009);
  assert(signed(zero_extend(0x1ec3a, 64)) == 126010);
  assert(signed(zero_extend(0x1ec7c, 64)) == 126076);
  assert(signed(zero_extend(0x1ec7d, 64)) == 126077);
  assert(signed(zero_extend(0x1ec7e, 64)) == 126078);
  assert(signed(zero_extend(0x1ec7f, 64)) == 126079);
  assert(signed(zero_extend(0x1ec80, 64)) == 126080);
  assert(signed(zero_extend(0x1ec81, 64)) == 126081);
  assert(signed(zero_extend(0x1ec82, 64)) == 126082);
  assert(signed(zero_extend(0x1ec83, 64)) == 126083);
  assert(signed(zero_extend(0x1ec84, 64)) == 126084);
  assert(signed(zero_extend(0x1ec85, 64)) == 126085);
  assert(signed(zero_extend(0x1ec86, 64)) == 126086);
  assert(signed(zero_extend(0x1ec87, 64)) == 126087);
  assert(signed(zero_extend(0x1ec88, 64)) == 126088);
  assert(signed(zero_extend(0x1ec89, 64)) == 126089);
  assert(signed(zero_extend(0x1ec8a, 64)) == 126090);
  assert(signed(zero_extend(0x1ec8b, 64)) == 126091);
  assert(signed(zero_extend(0x1ec8c, 64)) == 126092);
  assert(signed(zero_extend(0x1ec8d, 64)) == 126093);
  assert(signed(zero_extend(0x1ec8e, 64)) == 126094);
  assert(signed(zero_extend(0x1ec8f, 64)) == 126095);
  assert(signed(zero_extend(0x1ec90, 64)) == 126096);
  assert(signed(zero_extend(0x1ec91, 64)) == 126097);
  assert(signed(zero_extend(0x1ec92, 64)) == 126098);
  assert(signed(zero_extend(0x1f, 64)) == 31);
  assert(signed(zero_extend(0x2, 64)) == 2);
  assert(signed(zero_extend(0x20, 64)) == 32);
  assert(signed(zero_extend(0x200, 64)) == 512);
  assert(signed(zero_extend(0x2000, 64)) == 8192);
  assert(signed(zero_extend(0x20000, 64)) == 131072);
  assert(signed(zero_extend(0x20000000, 64)) == 536870912);
  assert(signed(zero_extend(0x208, 64)) == 520);
  assert(signed(zero_extend(0x20800, 64)) == 133120);
  assert(signed(zero_extend(0x21, 64)) == 33);
  assert(signed(zero_extend(0x21750, 64)) == 137040);
  assert(signed(zero_extend(0x21751, 64)) == 137041);
  assert(signed(zero_extend(0x21752, 64)) == 137042);
  assert(signed(zero_extend(0x21753, 64)) == 137043);
  assert(signed(zero_extend(0x21754, 64)) == 137044);
  assert(signed(zero_extend(0x21755, 64)) == 137045);
  assert(signed(zero_extend(0x21756, 64)) == 137046);
  assert(signed(zero_extend(0x21757, 64)) == 137047);
  assert(signed(zero_extend(0x21758, 64)) == 137048);
  assert(signed(zero_extend(0x21759, 64)) == 137049);
  assert(signed(zero_extend(0x2175a, 64)) == 137050);
  assert(signed(zero_extend(0x2175b, 64)) == 137051);
  assert(signed(zero_extend(0x2175c, 64)) == 137052);
  assert(signed(zero_extend(0x2175d, 64)) == 137053);
  assert(signed(zero_extend(0x2175e, 64)) == 137054);
  assert(signed(zero_extend(0x2175f, 64)) == 137055);
  assert(signed(zero_extend(0x21760, 64)) == 137056);
  assert(signed(zero_extend(0x21761, 64)) == 137057);
  assert(signed(zero_extend(0x21764, 64)) == 137060);
  assert(signed(zero_extend(0x21765, 64)) == 137061);
  assert(signed(zero_extend(0x21766, 64)) == 137062);
  assert(signed(zero_extend(0x21767, 64)) == 137063);
  assert(signed(zero_extend(0x21768, 64)) == 137064);
  assert(signed(zero_extend(0x21769, 64)) == 137065);
  assert(signed(zero_extend(0x2176a, 64)) == 137066);
  assert(signed(zero_extend(0x217a8, 64)) == 137128);
  assert(signed(zero_extend(0x217a9, 64)) == 137129);
  assert(signed(zero_extend(0x217aa, 64)) == 137130);
  assert(signed(zero_extend(0x217ab, 64)) == 137131);
  assert(signed(zero_extend(0x217ac, 64)) == 137132);
  assert(signed(zero_extend(0x217ad, 64)) == 137133);
  assert(signed(zero_extend(0x217ae, 64)) == 137134);
  assert(signed(zero_extend(0x217af, 64)) == 137135);
  assert(signed(zero_extend(0x217b0, 64)) == 137136);
  assert(signed(zero_extend(0x217b1, 64)) == 137137);
  assert(signed(zero_extend(0x217b2, 64)) == 137138);
  assert(signed(zero_extend(0x217b3, 64)) == 137139);
  assert(signed(zero_extend(0x217b4, 64)) == 137140);
  assert(signed(zero_extend(0x217b5, 64)) == 137141);
  assert(signed(zero_extend(0x217b6, 64)) == 137142);
  assert(signed(zero_extend(0x217b7, 64)) == 137143);
  assert(signed(zero_extend(0x217b8, 64)) == 137144);
  assert(signed(zero_extend(0x217b9, 64)) == 137145);
  assert(signed(zero_extend(0x217bc, 64)) == 137148);
  assert(signed(zero_extend(0x217bd, 64)) == 137149);
  assert(signed(zero_extend(0x217be, 64)) == 137150);
  assert(signed(zero_extend(0x217bf, 64)) == 137151);
  assert(signed(zero_extend(0x217c0, 64)) == 137152);
  assert(signed(zero_extend(0x217c1, 64)) == 137153);
  assert(signed(zero_extend(0x217c2, 64)) == 137154);
  assert(signed(zero_extend(0x2196c, 64)) == 137580);
  assert(signed(zero_extend(0x2196d, 64)) == 137581);
  assert(signed(zero_extend(0x2196e, 64)) == 137582);
  assert(signed(zero_extend(0x2196f, 64)) == 137583);
  assert(signed(zero_extend(0x21970, 64)) == 137584);
  assert(signed(zero_extend(0x21971, 64)) == 137585);
  assert(signed(zero_extend(0x21972, 64)) == 137586);
  assert(signed(zero_extend(0x21973, 64)) == 137587);
  assert(signed(zero_extend(0x21974, 64)) == 137588);
  assert(signed(zero_extend(0x21975, 64)) == 137589);
  assert(signed(zero_extend(0x21976, 64)) == 137590);
  assert(signed(zero_extend(0x21977, 64)) == 137591);
  assert(signed(zero_extend(0x21978, 64)) == 137592);
  assert(signed(zero_extend(0x21979, 64)) == 137593);
  assert(signed(zero_extend(0x2197a, 64)) == 137594);
  assert(signed(zero_extend(0x2197b, 64)) == 137595);
  assert(signed(zero_extend(0x2197c, 64)) == 137596);
  assert(signed(zero_extend(0x2197d, 64)) == 137597);
  assert(signed(zero_extend(0x2197e, 64)) == 137598);
  assert(signed(zero_extend(0x2197f, 64)) == 137599);
  assert(signed(zero_extend(0x21980, 64)) == 137600);
  assert(signed(zero_extend(0x21981, 64)) == 137601);
  assert(signed(zero_extend(0x21982, 64)) == 137602);
  assert(signed(zero_extend(0x21983, 64)) == 137603);
  assert(signed(zero_extend(0x219c4, 64)) == 137668);
  assert(signed(zero_extend(0x219c5, 64)) == 137669);
  assert(signed(zero_extend(0x219c6, 64)) == 137670);
  assert(signed(zero_extend(0x219c7, 64)) == 137671);
  assert(signed(zero_extend(0x219c8, 64)) == 137672);
  assert(signed(zero_extend(0x219c9, 64)) == 137673);
  assert(signed(zero_extend(0x219ca, 64)) == 137674);
  assert(signed(zero_extend(0x219cb, 64)) == 137675);
  assert(signed(zero_extend(0x219cc, 64)) == 137676);
  assert(signed(zero_extend(0x219cd, 64)) == 137677);
  assert(signed(zero_extend(0x219ce, 64)) == 137678);
  assert(signed(zero_extend(0x219cf, 64)) == 137679);
  assert(signed(zero_extend(0x219d0, 64)) == 137680);
  assert(signed(zero_extend(0x219d1, 64)) == 137681);
  assert(signed(zero_extend(0x219d2, 64)) == 137682);
  assert(signed(zero_extend(0x219d3, 64)) == 137683);
  assert(signed(zero_extend(0x219d4, 64)) == 137684);
  assert(signed(zero_extend(0x219d5, 64)) == 137685);
  assert(signed(zero_extend(0x219d6, 64)) == 137686);
  assert(signed(zero_extend(0x219d7, 64)) == 137687);
  assert(signed(zero_extend(0x219d8, 64)) == 137688);
  assert(signed(zero_extend(0x219d9, 64)) == 137689);
  assert(signed(zero_extend(0x219da, 64)) == 137690);
  assert(signed(zero_extend(0x219db, 64)) == 137691);
  assert(signed(zero_extend(0x21a90, 64)) == 137872);
  assert(signed(zero_extend(0x21a91, 64)) == 137873);
  assert(signed(zero_extend(0x21a92, 64)) == 137874);
  assert(signed(zero_extend(0x21a93, 64)) == 137875);
  assert(signed(zero_extend(0x21a94, 64)) == 137876);
  assert(signed(zero_extend(0x21a95, 64)) == 137877);
  assert(signed(zero_extend(0x21a96, 64)) == 137878);
  assert(signed(zero_extend(0x21a97, 64)) == 137879);
  assert(signed(zero_extend(0x21a98, 64)) == 137880);
  assert(signed(zero_extend(0x21a99, 64)) == 137881);
  assert(signed(zero_extend(0x21a9a, 64)) == 137882);
  assert(signed(zero_extend(0x21a9b, 64)) == 137883);
  assert(signed(zero_extend(0x21a9c, 64)) == 137884);
  assert(signed(zero_extend(0x21a9d, 64)) == 137885);
  assert(signed(zero_extend(0x21a9e, 64)) == 137886);
  assert(signed(zero_extend(0x21a9f, 64)) == 137887);
  assert(signed(zero_extend(0x21aa0, 64)) == 137888);
  assert(signed(zero_extend(0x21aa1, 64)) == 137889);
  assert(signed(zero_extend(0x21aa2, 64)) == 137890);
  assert(signed(zero_extend(0x21aa3, 64)) == 137891);
  assert(signed(zero_extend(0x21aa4, 64)) == 137892);
  assert(signed(zero_extend(0x21aa5, 64)) == 137893);
  assert(signed(zero_extend(0x21aa6, 64)) == 137894);
  assert(signed(zero_extend(0x21aa7, 64)) == 137895);
  assert(signed(zero_extend(0x21aa8, 64)) == 137896);
  assert(signed(zero_extend(0x21aa9, 64)) == 137897);
  assert(signed(zero_extend(0x21aaa, 64)) == 137898);
  assert(signed(zero_extend(0x21ae8, 64)) == 137960);
  assert(signed(zero_extend(0x21ae9, 64)) == 137961);
  assert(signed(zero_extend(0x21aea, 64)) == 137962);
  assert(signed(zero_extend(0x21aeb, 64)) == 137963);
  assert(signed(zero_extend(0x21aec, 64)) == 137964);
  assert(signed(zero_extend(0x21aed, 64)) == 137965);
  assert(signed(zero_extend(0x21aee, 64)) == 137966);
  assert(signed(zero_extend(0x21aef, 64)) == 137967);
  assert(signed(zero_extend(0x21af0, 64)) == 137968);
  assert(signed(zero_extend(0x21af1, 64)) == 137969);
  assert(signed(zero_extend(0x21af2, 64)) == 137970);
  assert(signed(zero_extend(0x21af3, 64)) == 137971);
  assert(signed(zero_extend(0x21af4, 64)) == 137972);
  assert(signed(zero_extend(0x21af5, 64)) == 137973);
  assert(signed(zero_extend(0x21af6, 64)) == 137974);
  assert(signed(zero_extend(0x21af7, 64)) == 137975);
  assert(signed(zero_extend(0x21af8, 64)) == 137976);
  assert(signed(zero_extend(0x21af9, 64)) == 137977);
  assert(signed(zero_extend(0x21afa, 64)) == 137978);
  assert(signed(zero_extend(0x21afb, 64)) == 137979);
  assert(signed(zero_extend(0x21afc, 64)) == 137980);
  assert(signed(zero_extend(0x21afd, 64)) == 137981);
  assert(signed(zero_extend(0x21afe, 64)) == 137982);
  assert(signed(zero_extend(0x21aff, 64)) == 137983);
  assert(signed(zero_extend(0x21b00, 64)) == 137984);
  assert(signed(zero_extend(0x21b01, 64)) == 137985);
  assert(signed(zero_extend(0x21b02, 64)) == 137986);
  assert(signed(zero_extend(0x21d08, 64)) == 138504);
  assert(signed(zero_extend(0x21d09, 64)) == 138505);
  assert(signed(zero_extend(0x21d0a, 64)) == 138506);
  assert(signed(zero_extend(0x21d0b, 64)) == 138507);
  assert(signed(zero_extend(0x21d0c, 64)) == 138508);
  assert(signed(zero_extend(0x21d0d, 64)) == 138509);
  assert(signed(zero_extend(0x21d0e, 64)) == 138510);
  assert(signed(zero_extend(0x21d0f, 64)) == 138511);
  assert(signed(zero_extend(0x21d10, 64)) == 138512);
  assert(signed(zero_extend(0x21d11, 64)) == 138513);
  assert(signed(zero_extend(0x21d14, 64)) == 138516);
  assert(signed(zero_extend(0x21d15, 64)) == 138517);
  assert(signed(zero_extend(0x21d16, 64)) == 138518);
  assert(signed(zero_extend(0x21d17, 64)) == 138519);
  assert(signed(zero_extend(0x21d18, 64)) == 138520);
  assert(signed(zero_extend(0x21d19, 64)) == 138521);
  assert(signed(zero_extend(0x21d1a, 64)) == 138522);
  assert(signed(zero_extend(0x21d1b, 64)) == 138523);
  assert(signed(zero_extend(0x21d1c, 64)) == 138524);
  assert(signed(zero_extend(0x21d1d, 64)) == 138525);
  assert(signed(zero_extend(0x21d1e, 64)) == 138526);
  assert(signed(zero_extend(0x21d1f, 64)) == 138527);
  assert(signed(zero_extend(0x21d20, 64)) == 138528);
  assert(signed(zero_extend(0x21d21, 64)) == 138529);
  assert(signed(zero_extend(0x21d22, 64)) == 138530);
  assert(signed(zero_extend(0x21d23, 64)) == 138531);
  assert(signed(zero_extend(0x21d24, 64)) == 138532);
  assert(signed(zero_extend(0x21d25, 64)) == 138533);
  assert(signed(zero_extend(0x21d26, 64)) == 138534);
  assert(signed(zero_extend(0x21d27, 64)) == 138535);
  assert(signed(zero_extend(0x21d28, 64)) == 138536);
  assert(signed(zero_extend(0x21d29, 64)) == 138537);
  assert(signed(zero_extend(0x21d2a, 64)) == 138538);
  assert(signed(zero_extend(0x21d2b, 64)) == 138539);
  assert(signed(zero_extend(0x21d2c, 64)) == 138540);
  assert(signed(zero_extend(0x21d2d, 64)) == 138541);
  assert(signed(zero_extend(0x21d30, 64)) == 138544);
  assert(signed(zero_extend(0x21d31, 64)) == 138545);
  assert(signed(zero_extend(0x21d32, 64)) == 138546);
  assert(signed(zero_extend(0x21d33, 64)) == 138547);
  assert(signed(zero_extend(0x21d34, 64)) == 138548);
  assert(signed(zero_extend(0x21d35, 64)) == 138549);
  assert(signed(zero_extend(0x21d36, 64)) == 138550);
  assert(signed(zero_extend(0x21d37, 64)) == 138551);
  assert(signed(zero_extend(0x21d38, 64)) == 138552);
  assert(signed(zero_extend(0x21d39, 64)) == 138553);
  assert(signed(zero_extend(0x21d3c, 64)) == 138556);
  assert(signed(zero_extend(0x21d3d, 64)) == 138557);
  assert(signed(zero_extend(0x21d3e, 64)) == 138558);
  assert(signed(zero_extend(0x21d3f, 64)) == 138559);
  assert(signed(zero_extend(0x21d40, 64)) == 138560);
  assert(signed(zero_extend(0x21d41, 64)) == 138561);
  assert(signed(zero_extend(0x21d42, 64)) == 138562);
  assert(signed(zero_extend(0x21d43, 64)) == 138563);
  assert(signed(zero_extend(0x21d44, 64)) == 138564);
  assert(signed(zero_extend(0x21d45, 64)) == 138565);
  assert(signed(zero_extend(0x21d48, 64)) == 138568);
  assert(signed(zero_extend(0x21d49, 64)) == 138569);
  assert(signed(zero_extend(0x21d4a, 64)) == 138570);
  assert(signed(zero_extend(0x21d4b, 64)) == 138571);
  assert(signed(zero_extend(0x21d4c, 64)) == 138572);
  assert(signed(zero_extend(0x21d4d, 64)) == 138573);
  assert(signed(zero_extend(0x21d4e, 64)) == 138574);
  assert(signed(zero_extend(0x21d4f, 64)) == 138575);
  assert(signed(zero_extend(0x21d50, 64)) == 138576);
  assert(signed(zero_extend(0x21d51, 64)) == 138577);
  assert(signed(zero_extend(0x21d54, 64)) == 138580);
  assert(signed(zero_extend(0x21d55, 64)) == 138581);
  assert(signed(zero_extend(0x21d56, 64)) == 138582);
  assert(signed(zero_extend(0x21d57, 64)) == 138583);
  assert(signed(zero_extend(0x21d58, 64)) == 138584);
  assert(signed(zero_extend(0x21d59, 64)) == 138585);
  assert(signed(zero_extend(0x21d5a, 64)) == 138586);
  assert(signed(zero_extend(0x21d5b, 64)) == 138587);
  assert(signed(zero_extend(0x21d5c, 64)) == 138588);
  assert(signed(zero_extend(0x21d5d, 64)) == 138589);
  assert(signed(zero_extend(0x21d60, 64)) == 138592);
  assert(signed(zero_extend(0x21d61, 64)) == 138593);
  assert(signed(zero_extend(0x21d62, 64)) == 138594);
  assert(signed(zero_extend(0x21d63, 64)) == 138595);
  assert(signed(zero_extend(0x21d64, 64)) == 138596);
  assert(signed(zero_extend(0x21d65, 64)) == 138597);
  assert(signed(zero_extend(0x21d66, 64)) == 138598);
  assert(signed(zero_extend(0x21d67, 64)) == 138599);
  assert(signed(zero_extend(0x21d68, 64)) == 138600);
  assert(signed(zero_extend(0x21d69, 64)) == 138601);
  assert(signed(zero_extend(0x21d6c, 64)) == 138604);
  assert(signed(zero_extend(0x21d6d, 64)) == 138605);
  assert(signed(zero_extend(0x21d6e, 64)) == 138606);
  assert(signed(zero_extend(0x21d6f, 64)) == 138607);
  assert(signed(zero_extend(0x21d70, 64)) == 138608);
  assert(signed(zero_extend(0x21d71, 64)) == 138609);
  assert(signed(zero_extend(0x21d72, 64)) == 138610);
  assert(signed(zero_extend(0x21d73, 64)) == 138611);
  assert(signed(zero_extend(0x21d74, 64)) == 138612);
  assert(signed(zero_extend(0x21d75, 64)) == 138613);
  assert(signed(zero_extend(0x21d76, 64)) == 138614);
  assert(signed(zero_extend(0x21d77, 64)) == 138615);
  assert(signed(zero_extend(0x21d78, 64)) == 138616);
  assert(signed(zero_extend(0x21d79, 64)) == 138617);
  assert(signed(zero_extend(0x21d7a, 64)) == 138618);
  assert(signed(zero_extend(0x21d7b, 64)) == 138619);
  assert(signed(zero_extend(0x21d7c, 64)) == 138620);
  assert(signed(zero_extend(0x21d7d, 64)) == 138621);
  assert(signed(zero_extend(0x21d7e, 64)) == 138622);
  assert(signed(zero_extend(0x21d7f, 64)) == 138623);
  assert(signed(zero_extend(0x21d80, 64)) == 138624);
  assert(signed(zero_extend(0x21d81, 64)) == 138625);
  assert(signed(zero_extend(0x21d82, 64)) == 138626);
  assert(signed(zero_extend(0x21d83, 64)) == 138627);
  assert(signed(zero_extend(0x21d84, 64)) == 138628);
  assert(signed(zero_extend(0x21d85, 64)) == 138629);
  assert(signed(zero_extend(0x21d88, 64)) == 138632);
  assert(signed(zero_extend(0x21d89, 64)) == 138633);
  assert(signed(zero_extend(0x21d8a, 64)) == 138634);
  assert(signed(zero_extend(0x21d8b, 64)) == 138635);
  assert(signed(zero_extend(0x21d8c, 64)) == 138636);
  assert(signed(zero_extend(0x21d8d, 64)) == 138637);
  assert(signed(zero_extend(0x21d8e, 64)) == 138638);
  assert(signed(zero_extend(0x21d8f, 64)) == 138639);
  assert(signed(zero_extend(0x21d90, 64)) == 138640);
  assert(signed(zero_extend(0x21d91, 64)) == 138641);
  assert(signed(zero_extend(0x21d94, 64)) == 138644);
  assert(signed(zero_extend(0x21d95, 64)) == 138645);
  assert(signed(zero_extend(0x21d96, 64)) == 138646);
  assert(signed(zero_extend(0x21d97, 64)) == 138647);
  assert(signed(zero_extend(0x21d98, 64)) == 138648);
  assert(signed(zero_extend(0x21d99, 64)) == 138649);
  assert(signed(zero_extend(0x21d9a, 64)) == 138650);
  assert(signed(zero_extend(0x21d9b, 64)) == 138651);
  assert(signed(zero_extend(0x21d9c, 64)) == 138652);
  assert(signed(zero_extend(0x21d9d, 64)) == 138653);
  assert(signed(zero_extend(0x21da0, 64)) == 138656);
  assert(signed(zero_extend(0x21da1, 64)) == 138657);
  assert(signed(zero_extend(0x21da2, 64)) == 138658);
  assert(signed(zero_extend(0x21da3, 64)) == 138659);
  assert(signed(zero_extend(0x21da4, 64)) == 138660);
  assert(signed(zero_extend(0x21da5, 64)) == 138661);
  assert(signed(zero_extend(0x21da6, 64)) == 138662);
  assert(signed(zero_extend(0x21da7, 64)) == 138663);
  assert(signed(zero_extend(0x21da8, 64)) == 138664);
  assert(signed(zero_extend(0x21da9, 64)) == 138665);
  assert(signed(zero_extend(0x21dac, 64)) == 138668);
  assert(signed(zero_extend(0x21dad, 64)) == 138669);
  assert(signed(zero_extend(0x21dae, 64)) == 138670);
  assert(signed(zero_extend(0x21daf, 64)) == 138671);
  assert(signed(zero_extend(0x21db0, 64)) == 138672);
  assert(signed(zero_extend(0x21db1, 64)) == 138673);
  assert(signed(zero_extend(0x21db2, 64)) == 138674);
  assert(signed(zero_extend(0x21db3, 64)) == 138675);
  assert(signed(zero_extend(0x21db4, 64)) == 138676);
  assert(signed(zero_extend(0x21db5, 64)) == 138677);
  assert(signed(zero_extend(0x22, 64)) == 34);
  assert(signed(zero_extend(0x220, 64)) == 544);
  assert(signed(zero_extend(0x2200, 64)) == 8704);
  assert(signed(zero_extend(0x22000, 64)) == 139264);
  assert(signed(zero_extend(0x22088, 64)) == 139400);
  assert(signed(zero_extend(0x220e0, 64)) == 139488);
  assert(signed(zero_extend(0x2220, 64)) == 8736);
  assert(signed(zero_extend(0x2222222222222223, 64)) == 2459565876494606883);
  assert(signed(zero_extend(0x223c, 64)) == 8764);
  assert(signed(zero_extend(0x22c, 64)) == 556);
  assert(signed(zero_extend(0x23, 64)) == 35);
  assert(signed(zero_extend(0x235e0, 64)) == 144864);
  assert(signed(zero_extend(0x235e1, 64)) == 144865);
  assert(signed(zero_extend(0x235e2, 64)) == 144866);
  assert(signed(zero_extend(0x235e3, 64)) == 144867);
  assert(signed(zero_extend(0x235e4, 64)) == 144868);
  assert(signed(zero_extend(0x235e5, 64)) == 144869);
  assert(signed(zero_extend(0x235e6, 64)) == 144870);
  assert(signed(zero_extend(0x235e7, 64)) == 144871);
  assert(signed(zero_extend(0x235e8, 64)) == 144872);
  assert(signed(zero_extend(0x235e9, 64)) == 144873);
  assert(signed(zero_extend(0x235ea, 64)) == 144874);
  assert(signed(zero_extend(0x235eb, 64)) == 144875);
  assert(signed(zero_extend(0x235ec, 64)) == 144876);
  assert(signed(zero_extend(0x235ed, 64)) == 144877);
  assert(signed(zero_extend(0x235ee, 64)) == 144878);
  assert(signed(zero_extend(0x235ef, 64)) == 144879);
  assert(signed(zero_extend(0x235f0, 64)) == 144880);
  assert(signed(zero_extend(0x235f1, 64)) == 144881);
  assert(signed(zero_extend(0x235f2, 64)) == 144882);
  assert(signed(zero_extend(0x235f3, 64)) == 144883);
  assert(signed(zero_extend(0x235f4, 64)) == 144884);
  assert(signed(zero_extend(0x235f5, 64)) == 144885);
  assert(signed(zero_extend(0x235f6, 64)) == 144886);
  assert(signed(zero_extend(0x235f7, 64)) == 144887);
  assert(signed(zero_extend(0x235f8, 64)) == 144888);
  assert(signed(zero_extend(0x23638, 64)) == 144952);
  assert(signed(zero_extend(0x23639, 64)) == 144953);
  assert(signed(zero_extend(0x2363a, 64)) == 144954);
  assert(signed(zero_extend(0x2363b, 64)) == 144955);
  assert(signed(zero_extend(0x2363c, 64)) == 144956);
  assert(signed(zero_extend(0x2363d, 64)) == 144957);
  assert(signed(zero_extend(0x2363e, 64)) == 144958);
  assert(signed(zero_extend(0x2363f, 64)) == 144959);
  assert(signed(zero_extend(0x23640, 64)) == 144960);
  assert(signed(zero_extend(0x23641, 64)) == 144961);
  assert(signed(zero_extend(0x23642, 64)) == 144962);
  assert(signed(zero_extend(0x23643, 64)) == 144963);
  assert(signed(zero_extend(0x23644, 64)) == 144964);
  assert(signed(zero_extend(0x23645, 64)) == 144965);
  assert(signed(zero_extend(0x23646, 64)) == 144966);
  assert(signed(zero_extend(0x23647, 64)) == 144967);
  assert(signed(zero_extend(0x23648, 64)) == 144968);
  assert(signed(zero_extend(0x23649, 64)) == 144969);
  assert(signed(zero_extend(0x2364a, 64)) == 144970);
  assert(signed(zero_extend(0x2364b, 64)) == 144971);
  assert(signed(zero_extend(0x2364c, 64)) == 144972);
  assert(signed(zero_extend(0x2364d, 64)) == 144973);
  assert(signed(zero_extend(0x2364e, 64)) == 144974);
  assert(signed(zero_extend(0x2364f, 64)) == 144975);
  assert(signed(zero_extend(0x23650, 64)) == 144976);
  assert(signed(zero_extend(0x24, 64)) == 36);
  assert(signed(zero_extend(0x24c, 64)) == 588);
  assert(signed(zero_extend(0x25, 64)) == 37);
  assert(signed(zero_extend(0x26, 64)) == 38);
  assert(signed(zero_extend(0x27, 64)) == 39);
  assert(signed(zero_extend(0x270, 64)) == 624);
  assert(signed(zero_extend(0x28, 64)) == 40);
  assert(signed(zero_extend(0x288, 64)) == 648);
  assert(signed(zero_extend(0x29, 64)) == 41);
  assert(signed(zero_extend(0x2a, 64)) == 42);
  assert(signed(zero_extend(0x2b, 64)) == 43);
  assert(signed(zero_extend(0x2c, 64)) == 44);
  assert(signed(zero_extend(0x2c000, 64)) == 180224);
  assert(signed(zero_extend(0x2d, 64)) == 45);
  assert(signed(zero_extend(0x2e, 64)) == 46);
  assert(signed(zero_extend(0x2eb0000, 64)) == 48955392);
  assert(signed(zero_extend(0x2ec0000, 64)) == 49020928);
  assert(signed(zero_extend(0x2ee0000, 64)) == 49152000);
  assert(signed(zero_extend(0x2ef0000, 64)) == 49217536);
  assert(signed(zero_extend(0x2ef0040, 64)) == 49217600);
  assert(signed(zero_extend(0x2f, 64)) == 47);
  assert(signed(zero_extend(0x2f0, 64)) == 752);
  assert(signed(zero_extend(0x2f00000, 64)) == 49283072);
  assert(signed(zero_extend(0x2f00008, 64)) == 49283080);
  assert(signed(zero_extend(0x2f00018, 64)) == 49283096);
  assert(signed(zero_extend(0x2f00200, 64)) == 49283584);
  assert(signed(zero_extend(0x2f00538, 64)) == 49284408);
  assert(signed(zero_extend(0x2f10000, 64)) == 49348608);
  assert(signed(zero_extend(0x2f10800, 64)) == 49350656);
  assert(signed(zero_extend(0x2f40000, 64)) == 49545216);
  assert(signed(zero_extend(0x2f50000, 64)) == 49610752);
  assert(signed(zero_extend(0x2f50040, 64)) == 49610816);
  assert(signed(zero_extend(0x2f60000, 64)) == 49676288);
  assert(signed(zero_extend(0x2f60200, 64)) == 49676800);
  assert(signed(zero_extend(0x2f70000, 64)) == 49741824);
  assert(signed(zero_extend(0x2f70800, 64)) == 49743872);
  assert(signed(zero_extend(0x3, 64)) == 3);
  assert(signed(zero_extend(0x30, 64)) == 48);
  assert(signed(zero_extend(0x3000, 64)) == 12288);
  assert(signed(zero_extend(0x30000, 64)) == 196608);
  assert(signed(zero_extend(0x300001c, 64)) == 50331676);
  assert(signed(zero_extend(0x3000020, 64)) == 50331680);
  assert(signed(zero_extend(0x3000024, 64)) == 50331684);
  assert(signed(zero_extend(0x3000054, 64)) == 50331732);
  assert(signed(zero_extend(0x3000058, 64)) == 50331736);
  assert(signed(zero_extend(0x300005c, 64)) == 50331740);
  assert(signed(zero_extend(0x3000068, 64)) == 50331752);
  assert(signed(zero_extend(0x30000c4, 64)) == 50331844);
  assert(signed(zero_extend(0x30000c8, 64)) == 50331848);
  assert(signed(zero_extend(0x30000cc, 64)) == 50331852);
  assert(signed(zero_extend(0x3000288, 64)) == 50332296);
  assert(signed(zero_extend(0x30002a0, 64)) == 50332320);
  assert(signed(zero_extend(0x3006b10, 64)) == 50359056);
  assert(signed(zero_extend(0x3006b1c, 64)) == 50359068);
  assert(signed(zero_extend(0x3006e40, 64)) == 50359872);
  assert(signed(zero_extend(0x3008d20, 64)) == 50367776);
  assert(signed(zero_extend(0x3008d30, 64)) == 50367792);
  assert(signed(zero_extend(0x3008d40, 64)) == 50367808);
  assert(signed(zero_extend(0x3008d50, 64)) == 50367824);
  assert(signed(zero_extend(0x3008d60, 64)) == 50367840);
  assert(signed(zero_extend(0x3008d70, 64)) == 50367856);
  assert(signed(zero_extend(0x3008d80, 64)) == 50367872);
  assert(signed(zero_extend(0x3008d90, 64)) == 50367888);
  assert(signed(zero_extend(0x3008d98, 64)) == 50367896);
  assert(signed(zero_extend(0x3008da0, 64)) == 50367904);
  assert(signed(zero_extend(0x3008db0, 64)) == 50367920);
  assert(signed(zero_extend(0x3008db8, 64)) == 50367928);
  assert(signed(zero_extend(0x3008dc0, 64)) == 50367936);
  assert(signed(zero_extend(0x3008dc8, 64)) == 50367944);
  assert(signed(zero_extend(0x3008dd0, 64)) == 50367952);
  assert(signed(zero_extend(0x3008de0, 64)) == 50367968);
  assert(signed(zero_extend(0x3008de8, 64)) == 50367976);
  assert(signed(zero_extend(0x3008df0, 64)) == 50367984);
  assert(signed(zero_extend(0x3008df8, 64)) == 50367992);
  assert(signed(zero_extend(0x3008e00, 64)) == 50368000);
  assert(signed(zero_extend(0x3008e10, 64)) == 50368016);
  assert(signed(zero_extend(0x3008e20, 64)) == 50368032);
  assert(signed(zero_extend(0x3008e28, 64)) == 50368040);
  assert(signed(zero_extend(0x3008e30, 64)) == 50368048);
  assert(signed(zero_extend(0x3008e40, 64)) == 50368064);
  assert(signed(zero_extend(0x3010e40, 64)) == 50400832);
  assert(signed(zero_extend(0x30e0000, 64)) == 51249152);
  assert(signed(zero_extend(0x30f0000, 64)) == 51314688);
  assert(signed(zero_extend(0x31, 64)) == 49);
  assert(signed(zero_extend(0x3100000, 64)) == 51380224);
  assert(signed(zero_extend(0x3100040, 64)) == 51380288);
  assert(signed(zero_extend(0x3110000, 64)) == 51445760);
  assert(signed(zero_extend(0x3110208, 64)) == 51446280);
  assert(signed(zero_extend(0x3120000, 64)) == 51511296);
  assert(signed(zero_extend(0x3120800, 64)) == 51513344);
  assert(signed(zero_extend(0x31d0000, 64)) == 52232192);
  assert(signed(zero_extend(0x31d0200, 64)) == 52232704);
  assert(signed(zero_extend(0x31d0208, 64)) == 52232712);
  assert(signed(zero_extend(0x31d02f0, 64)) == 52232944);
  assert(signed(zero_extend(0x31d02f8, 64)) == 52232952);
  assert(signed(zero_extend(0x31d0300, 64)) == 52232960);
  assert(signed(zero_extend(0x31d0308, 64)) == 52232968);
  assert(signed(zero_extend(0x31d0318, 64)) == 52232984);
  assert(signed(zero_extend(0x31d0320, 64)) == 52232992);
  assert(signed(zero_extend(0x31d0328, 64)) == 52233000);
  assert(signed(zero_extend(0x31d04d0, 64)) == 52233424);
  assert(signed(zero_extend(0x31d04d8, 64)) == 52233432);
  assert(signed(zero_extend(0x31d04e4, 64)) == 52233444);
  assert(signed(zero_extend(0x31d04ec, 64)) == 52233452);
  assert(signed(zero_extend(0x31d04f8, 64)) == 52233464);
  assert(signed(zero_extend(0x31d0500, 64)) == 52233472);
  assert(signed(zero_extend(0x31d050c, 64)) == 52233484);
  assert(signed(zero_extend(0x31d0518, 64)) == 52233496);
  assert(signed(zero_extend(0x31d0524, 64)) == 52233508);
  assert(signed(zero_extend(0x31d052c, 64)) == 52233516);
  assert(signed(zero_extend(0x31d0538, 64)) == 52233528);
  assert(signed(zero_extend(0x31d0540, 64)) == 52233536);
  assert(signed(zero_extend(0x31d054c, 64)) == 52233548);
  assert(signed(zero_extend(0x31d0554, 64)) == 52233556);
  assert(signed(zero_extend(0x31d0560, 64)) == 52233568);
  assert(signed(zero_extend(0x31d0568, 64)) == 52233576);
  assert(signed(zero_extend(0x31d0584, 64)) == 52233604);
  assert(signed(zero_extend(0x31d058c, 64)) == 52233612);
  assert(signed(zero_extend(0x31d0598, 64)) == 52233624);
  assert(signed(zero_extend(0x31d05a0, 64)) == 52233632);
  assert(signed(zero_extend(0x31d05ac, 64)) == 52233644);
  assert(signed(zero_extend(0x31d05b4, 64)) == 52233652);
  assert(signed(zero_extend(0x31d05c0, 64)) == 52233664);
  assert(signed(zero_extend(0x31d05c8, 64)) == 52233672);
  assert(signed(zero_extend(0x31d05d4, 64)) == 52233684);
  assert(signed(zero_extend(0x31d05dc, 64)) == 52233692);
  assert(signed(zero_extend(0x31d05e8, 64)) == 52233704);
  assert(signed(zero_extend(0x31d05f0, 64)) == 52233712);
  assert(signed(zero_extend(0x31d05fc, 64)) == 52233724);
  assert(signed(zero_extend(0x31d0604, 64)) == 52233732);
  assert(signed(zero_extend(0x31d0610, 64)) == 52233744);
  assert(signed(zero_extend(0x31d0618, 64)) == 52233752);
  assert(signed(zero_extend(0x31d0624, 64)) == 52233764);
  assert(signed(zero_extend(0x31d062c, 64)) == 52233772);
  assert(signed(zero_extend(0x31d0638, 64)) == 52233784);
  assert(signed(zero_extend(0x31d0640, 64)) == 52233792);
  assert(signed(zero_extend(0x31d064c, 64)) == 52233804);
  assert(signed(zero_extend(0x31d0654, 64)) == 52233812);
  assert(signed(zero_extend(0x31d0660, 64)) == 52233824);
  assert(signed(zero_extend(0x31d0668, 64)) == 52233832);
  assert(signed(zero_extend(0x31d0674, 64)) == 52233844);
  assert(signed(zero_extend(0x31d067c, 64)) == 52233852);
  assert(signed(zero_extend(0x31d0688, 64)) == 52233864);
  assert(signed(zero_extend(0x31d0690, 64)) == 52233872);
  assert(signed(zero_extend(0x31d06b0, 64)) == 52233904);
  assert(signed(zero_extend(0x31d06b8, 64)) == 52233912);
  assert(signed(zero_extend(0x31d06c4, 64)) == 52233924);
  assert(signed(zero_extend(0x31d06cc, 64)) == 52233932);
  assert(signed(zero_extend(0x31d06d8, 64)) == 52233944);
  assert(signed(zero_extend(0x31d06e0, 64)) == 52233952);
  assert(signed(zero_extend(0x31d0700, 64)) == 52233984);
  assert(signed(zero_extend(0x31d0708, 64)) == 52233992);
  assert(signed(zero_extend(0x31d0714, 64)) == 52234004);
  assert(signed(zero_extend(0x31d071c, 64)) == 52234012);
  assert(signed(zero_extend(0x31d073c, 64)) == 52234044);
  assert(signed(zero_extend(0x31d0744, 64)) == 52234052);
  assert(signed(zero_extend(0x31d0750, 64)) == 52234064);
  assert(signed(zero_extend(0x31d0758, 64)) == 52234072);
  assert(signed(zero_extend(0x31d0764, 64)) == 52234084);
  assert(signed(zero_extend(0x31d076c, 64)) == 52234092);
  assert(signed(zero_extend(0x31d0780, 64)) == 52234112);
  assert(signed(zero_extend(0x31d0788, 64)) == 52234120);
  assert(signed(zero_extend(0x31d1398, 64)) == 52237208);
  assert(signed(zero_extend(0x31d13b8, 64)) == 52237240);
  assert(signed(zero_extend(0x31d13d8, 64)) == 52237272);
  assert(signed(zero_extend(0x31d13f8, 64)) == 52237304);
  assert(signed(zero_extend(0x31d1418, 64)) == 52237336);
  assert(signed(zero_extend(0x31d1438, 64)) == 52237368);
  assert(signed(zero_extend(0x31d1458, 64)) == 52237400);
  assert(signed(zero_extend(0x31d1478, 64)) == 52237432);
  assert(signed(zero_extend(0x31d1498, 64)) == 52237464);
  assert(signed(zero_extend(0x31d14b8, 64)) == 52237496);
  assert(signed(zero_extend(0x31d14d8, 64)) == 52237528);
  assert(signed(zero_extend(0x31d14f8, 64)) == 52237560);
  assert(signed(zero_extend(0x31d1518, 64)) == 52237592);
  assert(signed(zero_extend(0x31d1538, 64)) == 52237624);
  assert(signed(zero_extend(0x31d1558, 64)) == 52237656);
  assert(signed(zero_extend(0x31d1578, 64)) == 52237688);
  assert(signed(zero_extend(0x31d1598, 64)) == 52237720);
  assert(signed(zero_extend(0x31d15b8, 64)) == 52237752);
  assert(signed(zero_extend(0x31d15d8, 64)) == 52237784);
  assert(signed(zero_extend(0x31d15f8, 64)) == 52237816);
  assert(signed(zero_extend(0x31d1618, 64)) == 52237848);
  assert(signed(zero_extend(0x31d1638, 64)) == 52237880);
  assert(signed(zero_extend(0x31d1658, 64)) == 52237912);
  assert(signed(zero_extend(0x31d1678, 64)) == 52237944);
  assert(signed(zero_extend(0x31d1698, 64)) == 52237976);
  assert(signed(zero_extend(0x31d16b8, 64)) == 52238008);
  assert(signed(zero_extend(0x31d16d8, 64)) == 52238040);
  assert(signed(zero_extend(0x31d16f8, 64)) == 52238072);
  assert(signed(zero_extend(0x31d1718, 64)) == 52238104);
  assert(signed(zero_extend(0x31d1738, 64)) == 52238136);
  assert(signed(zero_extend(0x31d1758, 64)) == 52238168);
  assert(signed(zero_extend(0x31d1780, 64)) == 52238208);
  assert(signed(zero_extend(0x31d17d0, 64)) == 52238288);
  assert(signed(zero_extend(0x31d17e0, 64)) == 52238304);
  assert(signed(zero_extend(0x31d17f0, 64)) == 52238320);
  assert(signed(zero_extend(0x31d1890, 64)) == 52238480);
  assert(signed(zero_extend(0x31d18a0, 64)) == 52238496);
  assert(signed(zero_extend(0x31d18c0, 64)) == 52238528);
  assert(signed(zero_extend(0x31d1920, 64)) == 52238624);
  assert(signed(zero_extend(0x31d1938, 64)) == 52238648);
  assert(signed(zero_extend(0x31d1950, 64)) == 52238672);
  assert(signed(zero_extend(0x31d1960, 64)) == 52238688);
  assert(signed(zero_extend(0x31d1968, 64)) == 52238696);
  assert(signed(zero_extend(0x31d1970, 64)) == 52238704);
  assert(signed(zero_extend(0x31d1980, 64)) == 52238720);
  assert(signed(zero_extend(0x32, 64)) == 50);
  assert(signed(zero_extend(0x320, 64)) == 800);
  assert(signed(zero_extend(0x33, 64)) == 51);
  assert(signed(zero_extend(0x34, 64)) == 52);
  assert(signed(zero_extend(0x34000, 64)) == 212992);
  assert(signed(zero_extend(0x34040, 64)) == 213056);
  assert(signed(zero_extend(0x35, 64)) == 53);
  assert(signed(zero_extend(0x36, 64)) == 54);
  assert(signed(zero_extend(0x368, 64)) == 872);
  assert(signed(zero_extend(0x37, 64)) == 55);
  assert(signed(zero_extend(0x38, 64)) == 56);
  assert(signed(zero_extend(0x3800000, 64)) == 58720256);
  assert(signed(zero_extend(0x380000a, 64)) == 58720266);
  assert(signed(zero_extend(0x3800010, 64)) == 58720272);
  assert(signed(zero_extend(0x3800038, 64)) == 58720312);
  assert(signed(zero_extend(0x380003a, 64)) == 58720314);
  assert(signed(zero_extend(0x380004b, 64)) == 58720331);
  assert(signed(zero_extend(0x3800060, 64)) == 58720352);
  assert(signed(zero_extend(0x38002c0, 64)) == 58720960);
  assert(signed(zero_extend(0x38002f8, 64)) == 58721016);
  assert(signed(zero_extend(0x3800310, 64)) == 58721040);
  assert(signed(zero_extend(0x3800330, 64)) == 58721072);
  assert(signed(zero_extend(0x3800338, 64)) == 58721080);
  assert(signed(zero_extend(0x3800350, 64)) == 58721104);
  assert(signed(zero_extend(0x3800360, 64)) == 58721120);
  assert(signed(zero_extend(0x38003a0, 64)) == 58721184);
  assert(signed(zero_extend(0x38003b0, 64)) == 58721200);
  assert(signed(zero_extend(0x38003c0, 64)) == 58721216);
  assert(signed(zero_extend(0x38003d0, 64)) == 58721232);
  assert(signed(zero_extend(0x38003e0, 64)) == 58721248);
  assert(signed(zero_extend(0x38003f0, 64)) == 58721264);
  assert(signed(zero_extend(0x38003f8, 64)) == 58721272);
  assert(signed(zero_extend(0x3800410, 64)) == 58721296);
  assert(signed(zero_extend(0x3800420, 64)) == 58721312);
  assert(signed(zero_extend(0x3800430, 64)) == 58721328);
  assert(signed(zero_extend(0x3800440, 64)) == 58721344);
  assert(signed(zero_extend(0x3800448, 64)) == 58721352);
  assert(signed(zero_extend(0x3800450, 64)) == 58721360);
  assert(signed(zero_extend(0x3800460, 64)) == 58721376);
  assert(signed(zero_extend(0x3808060, 64)) == 58753120);
  assert(signed(zero_extend(0x3808064, 64)) == 58753124);
  assert(signed(zero_extend(0x3808068, 64)) == 58753128);
  assert(signed(zero_extend(0x3808070, 64)) == 58753136);
  assert(signed(zero_extend(0x3808078, 64)) == 58753144);
  assert(signed(zero_extend(0x3808080, 64)) == 58753152);
  assert(signed(zero_extend(0x3808140, 64)) == 58753344);
  assert(signed(zero_extend(0x3808258, 64)) == 58753624);
  assert(signed(zero_extend(0x3808a00, 64)) == 58755584);
  assert(signed(zero_extend(0x3808a04, 64)) == 58755588);
  assert(signed(zero_extend(0x3808a08, 64)) == 58755592);
  assert(signed(zero_extend(0x3808a10, 64)) == 58755600);
  assert(signed(zero_extend(0x3808a18, 64)) == 58755608);
  assert(signed(zero_extend(0x3808a20, 64)) == 58755616);
  assert(signed(zero_extend(0x3808a70, 64)) == 58755696);
  assert(signed(zero_extend(0x3808a78, 64)) == 58755704);
  assert(signed(zero_extend(0x3808b78, 64)) == 58755960);
  assert(signed(zero_extend(0x3808b80, 64)) == 58755968);
  assert(signed(zero_extend(0x380d000, 64)) == 58773504);
  assert(signed(zero_extend(0x380d610, 64)) == 58775056);
  assert(signed(zero_extend(0x380d880, 64)) == 58775680);
  assert(signed(zero_extend(0x380d8c0, 64)) == 58775744);
  assert(signed(zero_extend(0x380d8d0, 64)) == 58775760);
  assert(signed(zero_extend(0x380d8e0, 64)) == 58775776);
  assert(signed(zero_extend(0x380d8e8, 64)) == 58775784);
  assert(signed(zero_extend(0x380d8f0, 64)) == 58775792);
  assert(signed(zero_extend(0x380d900, 64)) == 58775808);
  assert(signed(zero_extend(0x380d910, 64)) == 58775824);
  assert(signed(zero_extend(0x380d960, 64)) == 58775904);
  assert(signed(zero_extend(0x380d970, 64)) == 58775920);
  assert(signed(zero_extend(0x380d980, 64)) == 58775936);
  assert(signed(zero_extend(0x380d990, 64)) == 58775952);
  assert(signed(zero_extend(0x380d9a0, 64)) == 58775968);
  assert(signed(zero_extend(0x380d9b0, 64)) == 58775984);
  assert(signed(zero_extend(0x380d9b8, 64)) == 58775992);
  assert(signed(zero_extend(0x380d9d0, 64)) == 58776016);
  assert(signed(zero_extend(0x380d9e0, 64)) == 58776032);
  assert(signed(zero_extend(0x380d9f0, 64)) == 58776048);
  assert(signed(zero_extend(0x380da00, 64)) == 58776064);
  assert(signed(zero_extend(0x380da10, 64)) == 58776080);
  assert(signed(zero_extend(0x3811610, 64)) == 58791440);
  assert(signed(zero_extend(0x3813610, 64)) == 58799632);
  assert(signed(zero_extend(0x3815610, 64)) == 58807824);
  assert(signed(zero_extend(0x3815618, 64)) == 58807832);
  assert(signed(zero_extend(0x3815624, 64)) == 58807844);
  assert(signed(zero_extend(0x3815628, 64)) == 58807848);
  assert(signed(zero_extend(0x3815630, 64)) == 58807856);
  assert(signed(zero_extend(0x3815638, 64)) == 58807864);
  assert(signed(zero_extend(0x381563c, 64)) == 58807868);
  assert(signed(zero_extend(0x3815640, 64)) == 58807872);
  assert(signed(zero_extend(0x3815648, 64)) == 58807880);
  assert(signed(zero_extend(0x3815650, 64)) == 58807888);
  assert(signed(zero_extend(0x3815658, 64)) == 58807896);
  assert(signed(zero_extend(0x3815668, 64)) == 58807912);
  assert(signed(zero_extend(0x3815670, 64)) == 58807920);
  assert(signed(zero_extend(0x3815678, 64)) == 58807928);
  assert(signed(zero_extend(0x3815778, 64)) == 58808184);
  assert(signed(zero_extend(0x3815780, 64)) == 58808192);
  assert(signed(zero_extend(0x3815b50, 64)) == 58809168);
  assert(signed(zero_extend(0x3815b58, 64)) == 58809176);
  assert(signed(zero_extend(0x3815c58, 64)) == 58809432);
  assert(signed(zero_extend(0x3815c60, 64)) == 58809440);
  assert(signed(zero_extend(0x3815d80, 64)) == 58809728);
  assert(signed(zero_extend(0x3817d80, 64)) == 58817920);
  assert(signed(zero_extend(0x3819d80, 64)) == 58826112);
  assert(signed(zero_extend(0x3819d84, 64)) == 58826116);
  assert(signed(zero_extend(0x3819d88, 64)) == 58826120);
  assert(signed(zero_extend(0x3819d8c, 64)) == 58826124);
  assert(signed(zero_extend(0x3819d90, 64)) == 58826128);
  assert(signed(zero_extend(0x3819d98, 64)) == 58826136);
  assert(signed(zero_extend(0x3819da0, 64)) == 58826144);
  assert(signed(zero_extend(0x3819da8, 64)) == 58826152);
  assert(signed(zero_extend(0x3819db8, 64)) == 58826168);
  assert(signed(zero_extend(0x3819dc0, 64)) == 58826176);
  assert(signed(zero_extend(0x3819dc8, 64)) == 58826184);
  assert(signed(zero_extend(0x3819ed0, 64)) == 58826448);
  assert(signed(zero_extend(0x381a000, 64)) == 58826752);
  assert(signed(zero_extend(0x381a280, 64)) == 58827392);
  assert(signed(zero_extend(0x381a284, 64)) == 58827396);
  assert(signed(zero_extend(0x381a288, 64)) == 58827400);
  assert(signed(zero_extend(0x381a28c, 64)) == 58827404);
  assert(signed(zero_extend(0x381a290, 64)) == 58827408);
  assert(signed(zero_extend(0x381a298, 64)) == 58827416);
  assert(signed(zero_extend(0x381a2a0, 64)) == 58827424);
  assert(signed(zero_extend(0x381a2a8, 64)) == 58827432);
  assert(signed(zero_extend(0x381a2b8, 64)) == 58827448);
  assert(signed(zero_extend(0x381a2c0, 64)) == 58827456);
  assert(signed(zero_extend(0x381a2c8, 64)) == 58827464);
  assert(signed(zero_extend(0x381a3c8, 64)) == 58827720);
  assert(signed(zero_extend(0x381a3d0, 64)) == 58827728);
  assert(signed(zero_extend(0x381a780, 64)) == 58828672);
  assert(signed(zero_extend(0x381a784, 64)) == 58828676);
  assert(signed(zero_extend(0x381a788, 64)) == 58828680);
  assert(signed(zero_extend(0x381a790, 64)) == 58828688);
  assert(signed(zero_extend(0x381a798, 64)) == 58828696);
  assert(signed(zero_extend(0x381a7a0, 64)) == 58828704);
  assert(signed(zero_extend(0x381a7a4, 64)) == 58828708);
  assert(signed(zero_extend(0x381a7ac, 64)) == 58828716);
  assert(signed(zero_extend(0x381a7b0, 64)) == 58828720);
  assert(signed(zero_extend(0x381a7b8, 64)) == 58828728);
  assert(signed(zero_extend(0x381a7c0, 64)) == 58828736);
  assert(signed(zero_extend(0x381a7c8, 64)) == 58828744);
  assert(signed(zero_extend(0x381a7d8, 64)) == 58828760);
  assert(signed(zero_extend(0x381a7e0, 64)) == 58828768);
  assert(signed(zero_extend(0x381a8e0, 64)) == 58829024);
  assert(signed(zero_extend(0x381a8e8, 64)) == 58829032);
  assert(signed(zero_extend(0x381acb0, 64)) == 58830000);
  assert(signed(zero_extend(0x381acb8, 64)) == 58830008);
  assert(signed(zero_extend(0x381adb8, 64)) == 58830264);
  assert(signed(zero_extend(0x381adc0, 64)) == 58830272);
  assert(signed(zero_extend(0x381aee0, 64)) == 58830560);
  assert(signed(zero_extend(0x381af00, 64)) == 58830592);
  assert(signed(zero_extend(0x381b150, 64)) == 58831184);
  assert(signed(zero_extend(0x381b188, 64)) == 58831240);
  assert(signed(zero_extend(0x381b1a0, 64)) == 58831264);
  assert(signed(zero_extend(0x381b1d0, 64)) == 58831312);
  assert(signed(zero_extend(0x381b1d8, 64)) == 58831320);
  assert(signed(zero_extend(0x381b1e0, 64)) == 58831328);
  assert(signed(zero_extend(0x381b1f0, 64)) == 58831344);
  assert(signed(zero_extend(0x381b200, 64)) == 58831360);
  assert(signed(zero_extend(0x381b240, 64)) == 58831424);
  assert(signed(zero_extend(0x381b250, 64)) == 58831440);
  assert(signed(zero_extend(0x381b260, 64)) == 58831456);
  assert(signed(zero_extend(0x381b270, 64)) == 58831472);
  assert(signed(zero_extend(0x381b278, 64)) == 58831480);
  assert(signed(zero_extend(0x381b280, 64)) == 58831488);
  assert(signed(zero_extend(0x381b290, 64)) == 58831504);
  assert(signed(zero_extend(0x381b298, 64)) == 58831512);
  assert(signed(zero_extend(0x381b2b0, 64)) == 58831536);
  assert(signed(zero_extend(0x381b2c0, 64)) == 58831552);
  assert(signed(zero_extend(0x381b2d0, 64)) == 58831568);
  assert(signed(zero_extend(0x381b2e0, 64)) == 58831584);
  assert(signed(zero_extend(0x381b2e8, 64)) == 58831592);
  assert(signed(zero_extend(0x381b2f0, 64)) == 58831600);
  assert(signed(zero_extend(0x381b300, 64)) == 58831616);
  assert(signed(zero_extend(0x39, 64)) == 57);
  assert(signed(zero_extend(0x3a, 64)) == 58);
  assert(signed(zero_extend(0x3b, 64)) == 59);
  assert(signed(zero_extend(0x3c, 64)) == 60);
  assert(signed(zero_extend(0x3d, 64)) == 61);
  assert(signed(zero_extend(0x3e, 64)) == 62);
  assert(signed(zero_extend(0x3f, 64)) == 63);
  assert(signed(zero_extend(0x3ff83ff83ff83ff8, 64)) == 4609504554071375864);
  assert(signed(zero_extend(0x3fff, 64)) == 16383);
  assert(signed(zero_extend(0x3ffffffff, 64)) == 17179869183);
  assert(signed(zero_extend(0x4, 64)) == 4);
  assert(signed(zero_extend(0x40, 64)) == 64);
  assert(signed(zero_extend(0x400, 64)) == 1024);
  assert(signed(zero_extend(0x4000, 64)) == 16384);
  assert(signed(zero_extend(0x400000000, 64)) == 17179869184);
  assert(signed(zero_extend(0x41, 64)) == 65);
  assert(signed(zero_extend(0x42, 64)) == 66);
  assert(signed(zero_extend(0x43, 64)) == 67);
  assert(signed(zero_extend(0x44, 64)) == 68);
  assert(signed(zero_extend(0x45, 64)) == 69);
  assert(signed(zero_extend(0x46, 64)) == 70);
  assert(signed(zero_extend(0x47, 64)) == 71);
  assert(signed(zero_extend(0x48, 64)) == 72);
  assert(signed(zero_extend(0x49, 64)) == 73);
  assert(signed(zero_extend(0x4a, 64)) == 74);
  assert(signed(zero_extend(0x4b, 64)) == 75);
  assert(signed(zero_extend(0x4c, 64)) == 76);
  assert(signed(zero_extend(0x4c000, 64)) == 311296);
  assert(signed(zero_extend(0x4c800, 64)) == 313344);
  assert(signed(zero_extend(0x4d, 64)) == 77);
  assert(signed(zero_extend(0x4e, 64)) == 78);
  assert(signed(zero_extend(0x4f, 64)) == 79);
  assert(signed(zero_extend(0x5, 64)) == 5);
  assert(signed(zero_extend(0x50, 64)) == 80);
  assert(signed(zero_extend(0x51, 64)) == 81);
  assert(signed(zero_extend(0x52, 64)) == 82);
  assert(signed(zero_extend(0x53, 64)) == 83);
  assert(signed(zero_extend(0x530, 64)) == 1328);
  assert(signed(zero_extend(0x54, 64)) == 84);
  assert(signed(zero_extend(0x54000, 64)) == 344064);
  assert(signed(zero_extend(0x55, 64)) == 85);
  assert(signed(zero_extend(0x56, 64)) == 86);
  assert(signed(zero_extend(0x57, 64)) == 87);
  assert(signed(zero_extend(0x58, 64)) == 88);
  assert(signed(zero_extend(0x58000, 64)) == 360448);
  assert(signed(zero_extend(0x59, 64)) == 89);
  assert(signed(zero_extend(0x5a, 64)) == 90);
  assert(signed(zero_extend(0x5a5a, 64)) == 23130);
  assert(signed(zero_extend(0x5a5a5a59, 64)) == 1515870809);
  assert(signed(zero_extend(0x5a5a5a5a, 64)) == 1515870810);
  assert(signed(zero_extend(0x5a5a5a5a5a5a5a59, 64)) == 6510615555426900569);
  assert(signed(zero_extend(0x5a5a5a5a5a5a5a5a, 64)) == 6510615555426900570);
  assert(signed(zero_extend(0x5b, 64)) == 91);
  assert(signed(zero_extend(0x5c, 64)) == 92);
  assert(signed(zero_extend(0x5c000, 64)) == 376832);
  assert(signed(zero_extend(0x5c040, 64)) == 376896);
  assert(signed(zero_extend(0x5d, 64)) == 93);
  assert(signed(zero_extend(0x5e, 64)) == 94);
  assert(signed(zero_extend(0x5f, 64)) == 95);
  assert(signed(zero_extend(0x6, 64)) == 6);
  assert(signed(zero_extend(0x60, 64)) == 96);
  assert(signed(zero_extend(0x61, 64)) == 97);
  assert(signed(zero_extend(0x610, 64)) == 1552);
  assert(signed(zero_extend(0x62, 64)) == 98);
  assert(signed(zero_extend(0x620e000, 64)) == 102817792);
  assert(signed(zero_extend(0x620e010, 64)) == 102817808);
  assert(signed(zero_extend(0x6216000, 64)) == 102850560);
  assert(signed(zero_extend(0x6216004, 64)) == 102850564);
  assert(signed(zero_extend(0x6216008, 64)) == 102850568);
  assert(signed(zero_extend(0x621600c, 64)) == 102850572);
  assert(signed(zero_extend(0x6216030, 64)) == 102850608);
  assert(signed(zero_extend(0x6216034, 64)) == 102850612);
  assert(signed(zero_extend(0x6216038, 64)) == 102850616);
  assert(signed(zero_extend(0x621603c, 64)) == 102850620);
  assert(signed(zero_extend(0x6216040, 64)) == 102850624);
  assert(signed(zero_extend(0x6216044, 64)) == 102850628);
  assert(signed(zero_extend(0x6216048, 64)) == 102850632);
  assert(signed(zero_extend(0x621604c, 64)) == 102850636);
  assert(signed(zero_extend(0x6216054, 64)) == 102850644);
  assert(signed(zero_extend(0x6216058, 64)) == 102850648);
  assert(signed(zero_extend(0x6216064, 64)) == 102850660);
  assert(signed(zero_extend(0x6216069, 64)) == 102850665);
  assert(signed(zero_extend(0x62160aa, 64)) == 102850730);
  assert(signed(zero_extend(0x63, 64)) == 99);
  assert(signed(zero_extend(0x64, 64)) == 100);
  assert(signed(zero_extend(0x65, 64)) == 101);
  assert(signed(zero_extend(0x66, 64)) == 102);
  assert(signed(zero_extend(0x67, 64)) == 103);
  assert(signed(zero_extend(0x68, 64)) == 104);
  assert(signed(zero_extend(0x69, 64)) == 105);
  assert(signed(zero_extend(0x6a, 64)) == 106);
  assert(signed(zero_extend(0x6b, 64)) == 107);
  assert(signed(zero_extend(0x6b7c8d9f, 64)) == 1803324831);
  assert(signed(zero_extend(0x6c, 64)) == 108);
  assert(signed(zero_extend(0x6d, 64)) == 109);
  assert(signed(zero_extend(0x6e, 64)) == 110);
  assert(signed(zero_extend(0x6ede4cbc6ede4cbb, 64)) == 7988907161199463611);
  assert(signed(zero_extend(0x6f, 64)) == 111);
  assert(signed(zero_extend(0x6ffffffffffffffe, 64)) == 8070450532247928830);
  assert(signed(zero_extend(0x6fffffffffffffff, 64)) == 8070450532247928831);
  assert(signed(zero_extend(0x7, 64)) == 7);
  assert(signed(zero_extend(0x70, 64)) == 112);
  assert(signed(zero_extend(0x71, 64)) == 113);
  assert(signed(zero_extend(0x72, 64)) == 114);
  assert(signed(zero_extend(0x73, 64)) == 115);
  assert(signed(zero_extend(0x74, 64)) == 116);
  assert(signed(zero_extend(0x75, 64)) == 117);
  assert(signed(zero_extend(0x76, 64)) == 118);
  assert(signed(zero_extend(0x764c321, 64)) == 124044065);
  assert(signed(zero_extend(0x77, 64)) == 119);
  assert(signed(zero_extend(0x7765554377655542, 64)) == 8603376411415500098);
  assert(signed(zero_extend(0x7766554477665542, 64)) == 8603657890687243586);
  assert(signed(zero_extend(0x78, 64)) == 120);
  assert(signed(zero_extend(0x789abcdef0123456, 64)) == 8690466096661279830);
  assert(signed(zero_extend(0x79, 64)) == 121);
  assert(signed(zero_extend(0x7a, 64)) == 122);
  assert(signed(zero_extend(0x7b, 64)) == 123);
  assert(signed(zero_extend(0x7c, 64)) == 124);
  assert(signed(zero_extend(0x7d, 64)) == 125);
  assert(signed(zero_extend(0x7e, 64)) == 126);
  assert(signed(zero_extend(0x7f, 64)) == 127);
  assert(signed(zero_extend(0x7ff, 64)) == 2047);
  assert(signed(zero_extend(0x7ffc, 64)) == 32764);
  assert(signed(zero_extend(0x7ffe, 64)) == 32766);
  assert(signed(zero_extend(0x7fff, 64)) == 32767);
  assert(signed(zero_extend(0x7fff7fff, 64)) == 2147450879);
  assert(signed(zero_extend(0x7fff7fff7fff7ffd, 64)) == 9223231297218904061);
  assert(signed(zero_extend(0x7fff7fff7fff7fff, 64)) == 9223231297218904063);
  assert(signed(zero_extend(0x7fffffc, 64)) == 134217724);
  assert(signed(zero_extend(0x7ffffffe, 64)) == 2147483646);
  assert(signed(zero_extend(0x7fffffff, 64)) == 2147483647);
  assert(signed(zero_extend(0x7fffffff00000000, 64)) == 9223372032559808512);
  assert(signed(zero_extend(0x7fffffff00000001, 64)) == 9223372032559808513);
  assert(signed(zero_extend(0x7fffffff7ffffffe, 64)) == 9223372034707292158);
  assert(signed(zero_extend(0x7fffffff7fffffff, 64)) == 9223372034707292159);
  assert(signed(zero_extend(0x7fffffff80000000, 64)) == 9223372034707292160);
  assert(signed(zero_extend(0x7fffffff80000001, 64)) == 9223372034707292161);
  assert(signed(zero_extend(0x7fffffffffff0000, 64)) == 9223372036854710272);
  assert(signed(zero_extend(0x7fffffffffff0001, 64)) == 9223372036854710273);
  assert(signed(zero_extend(0x7fffffffffff7ffe, 64)) == 9223372036854743038);
  assert(signed(zero_extend(0x7fffffffffff7fff, 64)) == 9223372036854743039);
  assert(signed(zero_extend(0x7fffffffffff8000, 64)) == 9223372036854743040);
  assert(signed(zero_extend(0x7fffffffffff8001, 64)) == 9223372036854743041);
  assert(signed(zero_extend(0x7ffffffffffffffc, 64)) == 9223372036854775804);
  assert(signed(zero_extend(0x7ffffffffffffffd, 64)) == 9223372036854775805);
  assert(signed(zero_extend(0x7ffffffffffffffe, 64)) == 9223372036854775806);
  assert(signed(zero_extend(0x7fffffffffffffff, 64)) == 9223372036854775807);
  assert(signed(zero_extend(0x8, 64)) == 8);
  assert(signed(zero_extend(0x80, 64)) == 128);
  assert(signed(zero_extend(0x800, 64)) == 2048);
  assert(signed(zero_extend(0x8000, 64)) == 32768);
  assert(signed(zero_extend(0x80000000, 64)) == 2147483648);
  assert(signed(zero_extend(0x8000000000000000, 64)) == -9223372036854775808);
  assert(signed(zero_extend(0x8000000000000001, 64)) == -9223372036854775807);
  assert(signed(zero_extend(0x8000000000000002, 64)) == -9223372036854775806);
  assert(signed(zero_extend(0x8000000000000003, 64)) == -9223372036854775805);
  assert(signed(zero_extend(0x8000000000007ffe, 64)) == -9223372036854743042);
  assert(signed(zero_extend(0x8000000000007fff, 64)) == -9223372036854743041);
  assert(signed(zero_extend(0x8000000000008000, 64)) == -9223372036854743040);
  assert(signed(zero_extend(0x8000000000008001, 64)) == -9223372036854743039);
  assert(signed(zero_extend(0x800000000000fffe, 64)) == -9223372036854710274);
  assert(signed(zero_extend(0x800000000000ffff, 64)) == -9223372036854710273);
  assert(signed(zero_extend(0x800000007ffffffe, 64)) == -9223372034707292162);
  assert(signed(zero_extend(0x800000007fffffff, 64)) == -9223372034707292161);
  assert(signed(zero_extend(0x8000000080000000, 64)) == -9223372034707292160);
  assert(signed(zero_extend(0x8000000080000001, 64)) == -9223372034707292159);
  assert(signed(zero_extend(0x80000000fffffffe, 64)) == -9223372032559808514);
  assert(signed(zero_extend(0x80000000ffffffff, 64)) == -9223372032559808513);
  assert(signed(zero_extend(0x80000001, 64)) == 2147483649);
  assert(signed(zero_extend(0x80000002, 64)) == 2147483650);
  assert(signed(zero_extend(0x80000003, 64)) == 2147483651);
  assert(signed(zero_extend(0x80008000, 64)) == 2147516416);
  assert(signed(zero_extend(0x8000800080008000, 64)) == -9223231297218904064);
  assert(signed(zero_extend(0x8000800080008002, 64)) == -9223231297218904062);
  assert(signed(zero_extend(0x8001, 64)) == 32769);
  assert(signed(zero_extend(0x80010003, 64)) == 2147549187);
  assert(signed(zero_extend(0x8002, 64)) == 32770);
  assert(signed(zero_extend(0x8003, 64)) == 32771);
  assert(signed(zero_extend(0x8004, 64)) == 32772);
  assert(signed(zero_extend(0x8008, 64)) == 32776);
  assert(signed(zero_extend(0x800c, 64)) == 32780);
  assert(signed(zero_extend(0x8030, 64)) == 32816);
  assert(signed(zero_extend(0x8034, 64)) == 32820);
  assert(signed(zero_extend(0x8038, 64)) == 32824);
  assert(signed(zero_extend(0x803c, 64)) == 32828);
  assert(signed(zero_extend(0x8040, 64)) == 32832);
  assert(signed(zero_extend(0x8054, 64)) == 32852);
  assert(signed(zero_extend(0x8058, 64)) == 32856);
  assert(signed(zero_extend(0x8064, 64)) == 32868);
  assert(signed(zero_extend(0x8069, 64)) == 32873);
  assert(signed(zero_extend(0x80aa, 64)) == 32938);
  assert(signed(zero_extend(0x81, 64)) == 129);
  assert(signed(zero_extend(0x82, 64)) == 130);
  assert(signed(zero_extend(0x83, 64)) == 131);
  assert(signed(zero_extend(0x84, 64)) == 132);
  assert(signed(zero_extend(0x84000, 64)) == 540672);
  assert(signed(zero_extend(0x84800, 64)) == 542720);
  assert(signed(zero_extend(0x85, 64)) == 133);
  assert(signed(zero_extend(0x86, 64)) == 134);
  assert(signed(zero_extend(0x87, 64)) == 135);
  assert(signed(zero_extend(0x87654321, 64)) == 2271560481);
  assert(signed(zero_extend(0x876543210fedcba9, 64)) == -8690466096661279831);
  assert(signed(zero_extend(0x88, 64)) == 136);
  assert(signed(zero_extend(0x8899aabb, 64)) == 2291772091);
  assert(signed(zero_extend(0x8899aabb8899aabb, 64)) == -8603657890687243589);
  assert(signed(zero_extend(0x8899aabb8899aabd, 64)) == -8603657890687243587);
  assert(signed(zero_extend(0x889aaabc889aaabd, 64)) == -8603376411415500099);
  assert(signed(zero_extend(0x89, 64)) == 137);
  assert(signed(zero_extend(0x89ab, 64)) == 35243);
  assert(signed(zero_extend(0x8a, 64)) == 138);
  assert(signed(zero_extend(0x8b, 64)) == 139);
  assert(signed(zero_extend(0x8c, 64)) == 140);
  assert(signed(zero_extend(0x8d, 64)) == 141);
  assert(signed(zero_extend(0x8fffffffffffffff, 64)) == -8070450532247928833);
  assert(signed(zero_extend(0x9, 64)) == 9);
  assert(signed(zero_extend(0x90, 64)) == 144);
  assert(signed(zero_extend(0x90000000, 64)) == 2415919104);
  assert(signed(zero_extend(0x9000000000000000, 64)) == -8070450532247928832);
  assert(signed(zero_extend(0x9000000000000001, 64)) == -8070450532247928831);
  assert(signed(zero_extend(0x90000001, 64)) == 2415919105);
  assert(signed(zero_extend(0x9121b3439121b344, 64)) == -7988907161199463612);
  assert(signed(zero_extend(0x9200040, 64)) == 153092160);
  assert(signed(zero_extend(0x920005c, 64)) == 153092188);
  assert(signed(zero_extend(0x9200060, 64)) == 153092192);
  assert(signed(zero_extend(0x9234567a, 64)) == 2452903546);
  assert(signed(zero_extend(0x9be0, 64)) == 39904);
  assert(signed(zero_extend(0xa, 64)) == 10);
  assert(signed(zero_extend(0xa0, 64)) == 160);
  assert(signed(zero_extend(0xa000, 64)) == 40960);
  assert(signed(zero_extend(0xa0000000, 64)) == 2684354560);
  assert(signed(zero_extend(0xa200060, 64)) == 169869408);
  assert(signed(zero_extend(0xa20007c, 64)) == 169869436);
  assert(signed(zero_extend(0xa200080, 64)) == 169869440);
  assert(signed(zero_extend(0xa50006c, 64)) == 173015148);
  assert(signed(zero_extend(0xa500070, 64)) == 173015152);
  assert(signed(zero_extend(0xa500074, 64)) == 173015156);
  assert(signed(zero_extend(0xa5a5, 64)) == 42405);
  assert(signed(zero_extend(0xa5a5a5a5, 64)) == 2779096485);
  assert(signed(zero_extend(0xa5a5a5a5a5a5a5a5, 64)) == -6510615555426900571);
  assert(signed(zero_extend(0xa8, 64)) == 168);
  assert(signed(zero_extend(0xb, 64)) == 11);
  assert(signed(zero_extend(0xb0, 64)) == 176);
  assert(signed(zero_extend(0xb8, 64)) == 184);
  assert(signed(zero_extend(0xc, 64)) == 12);
  assert(signed(zero_extend(0xc0, 64)) == 192);
  assert(signed(zero_extend(0xc00fefff, 64)) == 3222269951);
  assert(signed(zero_extend(0xd, 64)) == 13);
  assert(signed(zero_extend(0xd0, 64)) == 208);
  assert(signed(zero_extend(0xdddddddddddddddc, 64)) == -2459565876494606884);
  assert(signed(zero_extend(0xe, 64)) == 14);
  assert(signed(zero_extend(0xe0, 64)) == 224);
  assert(signed(zero_extend(0xedcba9876543210e, 64)) == -1311768467463790322);
  assert(signed(zero_extend(0xf, 64)) == 15);
  assert(signed(zero_extend(0xf00, 64)) == 3840);
  assert(signed(zero_extend(0xf000000000000000, 64)) == -1152921504606846976);
  assert(signed(zero_extend(0xff, 64)) == 255);
  assert(signed(zero_extend(0xfffe, 64)) == 65534);
  assert(signed(zero_extend(0xffff, 64)) == 65535);
  assert(signed(zero_extend(0xffff8000, 64)) == 4294934528);
  assert(signed(zero_extend(0xffffc, 64)) == 1048572);
  assert(signed(zero_extend(0xffffe000ffffe000, 64)) == -35180077129728);
  assert(signed(zero_extend(0xfffffff, 64)) == 268435455);
  assert(signed(zero_extend(0xfffffffe, 64)) == 4294967294);
  assert(signed(zero_extend(0xfffffffe77665544, 64)) == -6586739388);
  assert(signed(zero_extend(0xfffffffe7fffffff, 64)) == -6442450945);
  assert(signed(zero_extend(0xfffffffe80000000, 64)) == -6442450944);
  assert(signed(zero_extend(0xfffffffef89b3cde, 64)) == -4419011362);
  assert(signed(zero_extend(0xfffffffefffffffe, 64)) == -4294967298);
  assert(signed(zero_extend(0xfffffffeffffffff, 64)) == -4294967297);
  assert(signed(zero_extend(0xffffffff, 64)) == 4294967295);
  assert(signed(zero_extend(0xffffffff00000000, 64)) == -4294967296);
  assert(signed(zero_extend(0xffffffff00000001, 64)) == -4294967295);
  assert(signed(zero_extend(0xffffffff00007fff, 64)) == -4294934529);
  assert(signed(zero_extend(0xffffffff3ff01000, 64)) == -3222269952);
  assert(signed(zero_extend(0xffffffff5fffffff, 64)) == -2684354561);
  assert(signed(zero_extend(0xffffffff6dcba985, 64)) == -2452903547);
  assert(signed(zero_extend(0xffffffff6ffffffe, 64)) == -2415919106);
  assert(signed(zero_extend(0xffffffff6fffffff, 64)) == -2415919105);
  assert(signed(zero_extend(0xffffffff77665544, 64)) == -2291772092);
  assert(signed(zero_extend(0xffffffff7ffefffc, 64)) == -2147549188);
  assert(signed(zero_extend(0xffffffff7ffffffc, 64)) == -2147483652);
  assert(signed(zero_extend(0xffffffff7ffffffd, 64)) == -2147483651);
  assert(signed(zero_extend(0xffffffff7ffffffe, 64)) == -2147483650);
  assert(signed(zero_extend(0xffffffff7fffffff, 64)) == -2147483649);
  assert(signed(zero_extend(0xffffffff80000000, 64)) == -2147483648);
  assert(signed(zero_extend(0xffffffff80000001, 64)) == -2147483647);
  assert(signed(zero_extend(0xffffffff94837260, 64)) == -1803324832);
  assert(signed(zero_extend(0xffffffffdfffffff, 64)) == -536870913);
  assert(signed(zero_extend(0xffffffffed9fff7f, 64)) == -308281473);
  assert(signed(zero_extend(0xffffffffedafff8f, 64)) == -307232881);
  assert(signed(zero_extend(0xfffffffff0000000, 64)) == -268435456);
  assert(signed(zero_extend(0xfffffffff7ffffff, 64)) == -134217729);
  assert(signed(zero_extend(0xfffffffff89b3cde, 64)) == -124044066);
  assert(signed(zero_extend(0xfffffffffcefffff, 64)) == -51380225);
  assert(signed(zero_extend(0xfffffffffcf0ffff, 64)) == -51314689);
  assert(signed(zero_extend(0xfffffffffcf1ffff, 64)) == -51249153);
  assert(signed(zero_extend(0xfffffffffcf84000, 64)) == -50839552);
  assert(signed(zero_extend(0xfffffffffcf94000, 64)) == -50774016);
  assert(signed(zero_extend(0xfffffffffcfa4000, 64)) == -50708480);
  assert(signed(zero_extend(0xfffffffffd0affff, 64)) == -49610753);
  assert(signed(zero_extend(0xfffffffffd0bffff, 64)) == -49545217);
  assert(signed(zero_extend(0xfffffffffd0fc000, 64)) == -49299456);
  assert(signed(zero_extend(0xfffffffffd10c000, 64)) == -49233920);
  assert(signed(zero_extend(0xfffffffffd10ffff, 64)) == -49217537);
  assert(signed(zero_extend(0xfffffffffd11ffff, 64)) == -49152001);
  assert(signed(zero_extend(0xfffffffffd130000, 64)) == -49086464);
  assert(signed(zero_extend(0xfffffffffd13ffff, 64)) == -49020929);
  assert(signed(zero_extend(0xfffffffffd140000, 64)) == -49020928);
  assert(signed(zero_extend(0xfffffffffd14ffff, 64)) == -48955393);
  assert(signed(zero_extend(0xfffffffffd170000, 64)) == -48824320);
  assert(signed(zero_extend(0xfffffffffd18c000, 64)) == -48709632);
  assert(signed(zero_extend(0xfffffffffebffe6b, 64)) == -20971925);
  assert(signed(zero_extend(0xfffffffffebffefb, 64)) == -20971781);
  assert(signed(zero_extend(0xfffffffffebfff3b, 64)) == -20971717);
  assert(signed(zero_extend(0xffffffffffefffff, 64)) == -1048577);
  assert(signed(zero_extend(0xfffffffffff, 64)) == 17592186044415);
  assert(signed(zero_extend(0xfffffffffff70000, 64)) == -589824);
  assert(signed(zero_extend(0xfffffffffff80000, 64)) == -524288);
  assert(signed(zero_extend(0xfffffffffffc0000, 64)) == -262144);
  assert(signed(zero_extend(0xfffffffffffd0000, 64)) == -196608);
  assert(signed(zero_extend(0xfffffffffffdffff, 64)) == -131073);
  assert(signed(zero_extend(0xfffffffffffe0000, 64)) == -131072);
  assert(signed(zero_extend(0xfffffffffffe7ffe, 64)) == -98306);
  assert(signed(zero_extend(0xfffffffffffe7fff, 64)) == -98305);
  assert(signed(zero_extend(0xfffffffffffe8000, 64)) == -98304);
  assert(signed(zero_extend(0xfffffffffffe8001, 64)) == -98303);
  assert(signed(zero_extend(0xfffffffffffefffe, 64)) == -65538);
  assert(signed(zero_extend(0xfffffffffffeffff, 64)) == -65537);
  assert(signed(zero_extend(0xffffffffffff0000, 64)) == -65536);
  assert(signed(zero_extend(0xffffffffffff0001, 64)) == -65535);
  assert(signed(zero_extend(0xffffffffffff641f, 64)) == -39905);
  assert(signed(zero_extend(0xffffffffffff7ffc, 64)) == -32772);
  assert(signed(zero_extend(0xffffffffffff7ffd, 64)) == -32771);
  assert(signed(zero_extend(0xffffffffffff7ffe, 64)) == -32770);
  assert(signed(zero_extend(0xffffffffffff7fff, 64)) == -32769);
  assert(signed(zero_extend(0xffffffffffff8000, 64)) == -32768);
  assert(signed(zero_extend(0xffffffffffff8001, 64)) == -32767);
  assert(signed(zero_extend(0xffffffffffffbeff, 64)) == -16641);
  assert(signed(zero_extend(0xffffffffffffbf40, 64)) == -16576);
  assert(signed(zero_extend(0xffffffffffffbf41, 64)) == -16575);
  assert(signed(zero_extend(0xffffffffffffbfff, 64)) == -16385);
  assert(signed(zero_extend(0xffffffffffffc22c, 64)) == -15828);
  assert(signed(zero_extend(0xffffffffffffc24c, 64)) == -15796);
  assert(signed(zero_extend(0xffffffffffffd220, 64)) == -11744);
  assert(signed(zero_extend(0xffffffffffffd23c, 64)) == -11716);
  assert(signed(zero_extend(0xffffffffffffe220, 64)) == -7648);
  assert(signed(zero_extend(0xffffffffffffe23c, 64)) == -7620);
  assert(signed(zero_extend(0xffffffffffffefff, 64)) == -4097);
  assert(signed(zero_extend(0xfffffffffffffeef, 64)) == -273);
  assert(signed(zero_extend(0xfffffffffffffeff, 64)) == -257);
  assert(signed(zero_extend(0xffffffffffffff1f, 64)) == -225);
  assert(signed(zero_extend(0xffffffffffffff2f, 64)) == -209);
  assert(signed(zero_extend(0xffffffffffffff4f, 64)) == -177);
  assert(signed(zero_extend(0xffffffffffffff6f, 64)) == -145);
  assert(signed(zero_extend(0xffffffffffffff80, 64)) == -128);
  assert(signed(zero_extend(0xffffffffffffff8f, 64)) == -113);
  assert(signed(zero_extend(0xffffffffffffff9f, 64)) == -97);
  assert(signed(zero_extend(0xffffffffffffffa0, 64)) == -96);
  assert(signed(zero_extend(0xffffffffffffffaf, 64)) == -81);
  assert(signed(zero_extend(0xffffffffffffffbf, 64)) == -65);
  assert(signed(zero_extend(0xffffffffffffffc2, 64)) == -62);
  assert(signed(zero_extend(0xffffffffffffffc4, 64)) == -60);
  assert(signed(zero_extend(0xffffffffffffffc6, 64)) == -58);
  assert(signed(zero_extend(0xffffffffffffffc8, 64)) == -56);
  assert(signed(zero_extend(0xffffffffffffffca, 64)) == -54);
  assert(signed(zero_extend(0xffffffffffffffcc, 64)) == -52);
  assert(signed(zero_extend(0xffffffffffffffce, 64)) == -50);
  assert(signed(zero_extend(0xffffffffffffffcf, 64)) == -49);
  assert(signed(zero_extend(0xffffffffffffffd0, 64)) == -48);
  assert(signed(zero_extend(0xffffffffffffffd2, 64)) == -46);
  assert(signed(zero_extend(0xffffffffffffffd4, 64)) == -44);
  assert(signed(zero_extend(0xffffffffffffffd6, 64)) == -42);
  assert(signed(zero_extend(0xffffffffffffffd8, 64)) == -40);
  assert(signed(zero_extend(0xffffffffffffffda, 64)) == -38);
  assert(signed(zero_extend(0xffffffffffffffdb, 64)) == -37);
  assert(signed(zero_extend(0xffffffffffffffdc, 64)) == -36);
  assert(signed(zero_extend(0xffffffffffffffde, 64)) == -34);
  assert(signed(zero_extend(0xffffffffffffffdf, 64)) == -33);
  assert(signed(zero_extend(0xffffffffffffffe0, 64)) == -32);
  assert(signed(zero_extend(0xffffffffffffffe2, 64)) == -30);
  assert(signed(zero_extend(0xffffffffffffffe4, 64)) == -28);
  assert(signed(zero_extend(0xffffffffffffffe6, 64)) == -26);
  assert(signed(zero_extend(0xffffffffffffffe7, 64)) == -25);
  assert(signed(zero_extend(0xffffffffffffffe8, 64)) == -24);
  assert(signed(zero_extend(0xffffffffffffffea, 64)) == -22);
  assert(signed(zero_extend(0xffffffffffffffec, 64)) == -20);
  assert(signed(zero_extend(0xffffffffffffffee, 64)) == -18);
  assert(signed(zero_extend(0xffffffffffffffef, 64)) == -17);
  assert(signed(zero_extend(0xfffffffffffffff, 64)) == 1152921504606846975);
  assert(signed(zero_extend(0xfffffffffffffff0, 64)) == -16);
  assert(signed(zero_extend(0xfffffffffffffff1, 64)) == -15);
  assert(signed(zero_extend(0xfffffffffffffff2, 64)) == -14);
  assert(signed(zero_extend(0xfffffffffffffff4, 64)) == -12);
  assert(signed(zero_extend(0xfffffffffffffff6, 64)) == -10);
  assert(signed(zero_extend(0xfffffffffffffff7, 64)) == -9);
  assert(signed(zero_extend(0xfffffffffffffff8, 64)) == -8);
  assert(signed(zero_extend(0xfffffffffffffffa, 64)) == -6);
  assert(signed(zero_extend(0xfffffffffffffffb, 64)) == -5);
  assert(signed(zero_extend(0xfffffffffffffffc, 64)) == -4);
  assert(signed(zero_extend(0xfffffffffffffffd, 64)) == -3);
  assert(signed(zero_extend(0xfffffffffffffffe, 64)) == -2);
  assert(signed(zero_extend(0xffffffffffffffff, 64)) == -1);
}