File: unsigned8.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 (1404 lines) | stat: -rw-r--r-- 76,926 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
default Order dec

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

val flip_mask : forall 'len 'v, 'len >= 0 & 'v >= 0. (bitvector('v, dec), atom('len)) -> bitvector('len, dec)

function flip_mask(v, len) = len ^ v

function main (() : unit) -> unit = {
  assert(unsigned(flip_mask(0x0, 1)) == 0);
  assert(unsigned(flip_mask(0x1, 1)) == 1);
  assert(unsigned(flip_mask(0x0, 10)) == 0);
  assert(unsigned(flip_mask(0x1, 10)) == 1);
  assert(unsigned(flip_mask(0x100, 10)) == 256);
  assert(unsigned(flip_mask(0x102, 10)) == 258);
  assert(unsigned(flip_mask(0x140, 10)) == 320);
  assert(unsigned(flip_mask(0x180, 10)) == 384);
  assert(unsigned(flip_mask(0x2, 10)) == 2);
  assert(unsigned(flip_mask(0x200, 10)) == 512);
  assert(unsigned(flip_mask(0x202, 10)) == 514);
  assert(unsigned(flip_mask(0x203, 10)) == 515);
  assert(unsigned(flip_mask(0x205, 10)) == 517);
  assert(unsigned(flip_mask(0x206, 10)) == 518);
  assert(unsigned(flip_mask(0x380, 10)) == 896);
  assert(unsigned(flip_mask(0x3c0, 10)) == 960);
  assert(unsigned(flip_mask(0x4, 10)) == 4);
  assert(unsigned(flip_mask(0x40, 10)) == 64);
  assert(unsigned(flip_mask(0x41, 10)) == 65);
  assert(unsigned(flip_mask(0x5, 10)) == 5);
  assert(unsigned(flip_mask(0x6, 10)) == 6);
  assert(unsigned(flip_mask(0x7, 10)) == 7);
  assert(unsigned(flip_mask(0x8, 10)) == 8);
  assert(unsigned(flip_mask(0x80, 10)) == 128);
  assert(unsigned(flip_mask(0x85, 10)) == 133);
  assert(unsigned(flip_mask(0xc0, 10)) == 192);
  assert(unsigned(flip_mask(0xfe, 10)) == 254);
  assert(unsigned(flip_mask(0x0, 16)) == 0);
  assert(unsigned(flip_mask(0x0, 2)) == 0);
  assert(unsigned(flip_mask(0x1, 2)) == 1);
  assert(unsigned(flip_mask(0x2, 2)) == 2);
  assert(unsigned(flip_mask(0x3, 2)) == 3);
  assert(unsigned(flip_mask(0x0, 3)) == 0);
  assert(unsigned(flip_mask(0x1, 3)) == 1);
  assert(unsigned(flip_mask(0x2, 3)) == 2);
  assert(unsigned(flip_mask(0x3, 3)) == 3);
  assert(unsigned(flip_mask(0x4, 3)) == 4);
  assert(unsigned(flip_mask(0x5, 3)) == 5);
  assert(unsigned(flip_mask(0x6, 3)) == 6);
  assert(unsigned(flip_mask(0x7, 3)) == 7);
  assert(unsigned(flip_mask(0x0, 32)) == 0);
  assert(unsigned(flip_mask(0x1, 32)) == 1);
  assert(unsigned(flip_mask(0x10, 32)) == 16);
  assert(unsigned(flip_mask(0x10000, 32)) == 65536);
  assert(unsigned(flip_mask(0x10001, 32)) == 65537);
  assert(unsigned(flip_mask(0x11, 32)) == 17);
  assert(unsigned(flip_mask(0x11223344, 32)) == 287454020);
  assert(unsigned(flip_mask(0x118, 32)) == 280);
  assert(unsigned(flip_mask(0x12, 32)) == 18);
  assert(unsigned(flip_mask(0x1234, 32)) == 4660);
  assert(unsigned(flip_mask(0x12345678, 32)) == 305419896);
  assert(unsigned(flip_mask(0x13, 32)) == 19);
  assert(unsigned(flip_mask(0x14, 32)) == 20);
  assert(unsigned(flip_mask(0x15, 32)) == 21);
  assert(unsigned(flip_mask(0x16, 32)) == 22);
  assert(unsigned(flip_mask(0x17, 32)) == 23);
  assert(unsigned(flip_mask(0x17ffe, 32)) == 98302);
  assert(unsigned(flip_mask(0x17fff, 32)) == 98303);
  assert(unsigned(flip_mask(0x18, 32)) == 24);
  assert(unsigned(flip_mask(0x18000, 32)) == 98304);
  assert(unsigned(flip_mask(0x19, 32)) == 25);
  assert(unsigned(flip_mask(0x1a, 32)) == 26);
  assert(unsigned(flip_mask(0x1b, 32)) == 27);
  assert(unsigned(flip_mask(0x1c, 32)) == 28);
  assert(unsigned(flip_mask(0x1d, 32)) == 29);
  assert(unsigned(flip_mask(0x1e, 32)) == 30);
  assert(unsigned(flip_mask(0x1f, 32)) == 31);
  assert(unsigned(flip_mask(0x2, 32)) == 2);
  assert(unsigned(flip_mask(0x20, 32)) == 32);
  assert(unsigned(flip_mask(0x20000, 32)) == 131072);
  assert(unsigned(flip_mask(0x21, 32)) == 33);
  assert(unsigned(flip_mask(0x23, 32)) == 35);
  assert(unsigned(flip_mask(0x230, 32)) == 560);
  assert(unsigned(flip_mask(0x25, 32)) == 37);
  assert(unsigned(flip_mask(0x26, 32)) == 38);
  assert(unsigned(flip_mask(0x27, 32)) == 39);
  assert(unsigned(flip_mask(0x28, 32)) == 40);
  assert(unsigned(flip_mask(0x280, 32)) == 640);
  assert(unsigned(flip_mask(0x29, 32)) == 41);
  assert(unsigned(flip_mask(0x298, 32)) == 664);
  assert(unsigned(flip_mask(0x2a, 32)) == 42);
  assert(unsigned(flip_mask(0x2a0, 32)) == 672);
  assert(unsigned(flip_mask(0x2b, 32)) == 43);
  assert(unsigned(flip_mask(0x2d, 32)) == 45);
  assert(unsigned(flip_mask(0x2e, 32)) == 46);
  assert(unsigned(flip_mask(0x2f, 32)) == 47);
  assert(unsigned(flip_mask(0x3, 32)) == 3);
  assert(unsigned(flip_mask(0x30, 32)) == 48);
  assert(unsigned(flip_mask(0x31, 32)) == 49);
  assert(unsigned(flip_mask(0x32, 32)) == 50);
  assert(unsigned(flip_mask(0x33, 32)) == 51);
  assert(unsigned(flip_mask(0x34, 32)) == 52);
  assert(unsigned(flip_mask(0x35, 32)) == 53);
  assert(unsigned(flip_mask(0x36, 32)) == 54);
  assert(unsigned(flip_mask(0x37, 32)) == 55);
  assert(unsigned(flip_mask(0x38, 32)) == 56);
  assert(unsigned(flip_mask(0x39, 32)) == 57);
  assert(unsigned(flip_mask(0x3a, 32)) == 58);
  assert(unsigned(flip_mask(0x3c, 32)) == 60);
  assert(unsigned(flip_mask(0x3e, 32)) == 62);
  assert(unsigned(flip_mask(0x3f, 32)) == 63);
  assert(unsigned(flip_mask(0x4, 32)) == 4);
  assert(unsigned(flip_mask(0x40, 32)) == 64);
  assert(unsigned(flip_mask(0x41, 32)) == 65);
  assert(unsigned(flip_mask(0x43, 32)) == 67);
  assert(unsigned(flip_mask(0x44, 32)) == 68);
  assert(unsigned(flip_mask(0x45, 32)) == 69);
  assert(unsigned(flip_mask(0x46, 32)) == 70);
  assert(unsigned(flip_mask(0x47, 32)) == 71);
  assert(unsigned(flip_mask(0x48, 32)) == 72);
  assert(unsigned(flip_mask(0x4a, 32)) == 74);
  assert(unsigned(flip_mask(0x4b, 32)) == 75);
  assert(unsigned(flip_mask(0x4c, 32)) == 76);
  assert(unsigned(flip_mask(0x4d, 32)) == 77);
  assert(unsigned(flip_mask(0x4e, 32)) == 78);
  assert(unsigned(flip_mask(0x4f, 32)) == 79);
  assert(unsigned(flip_mask(0x5, 32)) == 5);
  assert(unsigned(flip_mask(0x50, 32)) == 80);
  assert(unsigned(flip_mask(0x52, 32)) == 82);
  assert(unsigned(flip_mask(0x53, 32)) == 83);
  assert(unsigned(flip_mask(0x54, 32)) == 84);
  assert(unsigned(flip_mask(0x55, 32)) == 85);
  assert(unsigned(flip_mask(0x5a5a, 32)) == 23130);
  assert(unsigned(flip_mask(0x5a5a5a59, 32)) == 1515870809);
  assert(unsigned(flip_mask(0x5a5a5a5a, 32)) == 1515870810);
  assert(unsigned(flip_mask(0x5f, 32)) == 95);
  assert(unsigned(flip_mask(0x6, 32)) == 6);
  assert(unsigned(flip_mask(0x6000, 32)) == 24576);
  assert(unsigned(flip_mask(0x60000000, 32)) == 1610612736);
  assert(unsigned(flip_mask(0x61, 32)) == 97);
  assert(unsigned(flip_mask(0x62, 32)) == 98);
  assert(unsigned(flip_mask(0x63, 32)) == 99);
  assert(unsigned(flip_mask(0x64, 32)) == 100);
  assert(unsigned(flip_mask(0x65, 32)) == 101);
  assert(unsigned(flip_mask(0x66, 32)) == 102);
  assert(unsigned(flip_mask(0x68, 32)) == 104);
  assert(unsigned(flip_mask(0x69, 32)) == 105);
  assert(unsigned(flip_mask(0x6b7c8d9f, 32)) == 1803324831);
  assert(unsigned(flip_mask(0x6c, 32)) == 108);
  assert(unsigned(flip_mask(0x6d, 32)) == 109);
  assert(unsigned(flip_mask(0x6e, 32)) == 110);
  assert(unsigned(flip_mask(0x6f, 32)) == 111);
  assert(unsigned(flip_mask(0x7, 32)) == 7);
  assert(unsigned(flip_mask(0x70, 32)) == 112);
  assert(unsigned(flip_mask(0x72, 32)) == 114);
  assert(unsigned(flip_mask(0x73, 32)) == 115);
  assert(unsigned(flip_mask(0x74, 32)) == 116);
  assert(unsigned(flip_mask(0x75, 32)) == 117);
  assert(unsigned(flip_mask(0x76, 32)) == 118);
  assert(unsigned(flip_mask(0x764c321, 32)) == 124044065);
  assert(unsigned(flip_mask(0x78, 32)) == 120);
  assert(unsigned(flip_mask(0x7ffe, 32)) == 32766);
  assert(unsigned(flip_mask(0x7fff, 32)) == 32767);
  assert(unsigned(flip_mask(0x7fff7fff, 32)) == 2147450879);
  assert(unsigned(flip_mask(0x7ffffffe, 32)) == 2147483646);
  assert(unsigned(flip_mask(0x7fffffff, 32)) == 2147483647);
  assert(unsigned(flip_mask(0x8, 32)) == 8);
  assert(unsigned(flip_mask(0x8000, 32)) == 32768);
  assert(unsigned(flip_mask(0x80000000, 32)) == 2147483648);
  assert(unsigned(flip_mask(0x80000001, 32)) == 2147483649);
  assert(unsigned(flip_mask(0x80000002, 32)) == 2147483650);
  assert(unsigned(flip_mask(0x80000003, 32)) == 2147483651);
  assert(unsigned(flip_mask(0x80008000, 32)) == 2147516416);
  assert(unsigned(flip_mask(0x8001, 32)) == 32769);
  assert(unsigned(flip_mask(0x8002, 32)) == 32770);
  assert(unsigned(flip_mask(0x8003, 32)) == 32771);
  assert(unsigned(flip_mask(0x87654321, 32)) == 2271560481);
  assert(unsigned(flip_mask(0x8899aabb, 32)) == 2291772091);
  assert(unsigned(flip_mask(0x89ab, 32)) == 35243);
  assert(unsigned(flip_mask(0x8fffffff, 32)) == 2415919103);
  assert(unsigned(flip_mask(0x9, 32)) == 9);
  assert(unsigned(flip_mask(0x90000000, 32)) == 2415919104);
  assert(unsigned(flip_mask(0x90000001, 32)) == 2415919105);
  assert(unsigned(flip_mask(0x9234567a, 32)) == 2452903546);
  assert(unsigned(flip_mask(0x950, 32)) == 2384);
  assert(unsigned(flip_mask(0x9be0, 32)) == 39904);
  assert(unsigned(flip_mask(0xa, 32)) == 10);
  assert(unsigned(flip_mask(0xa5a5, 32)) == 42405);
  assert(unsigned(flip_mask(0xa5a5a5a5, 32)) == 2779096485);
  assert(unsigned(flip_mask(0xb, 32)) == 11);
  assert(unsigned(flip_mask(0xc, 32)) == 12);
  assert(unsigned(flip_mask(0xd, 32)) == 13);
  assert(unsigned(flip_mask(0xe, 32)) == 14);
  assert(unsigned(flip_mask(0xe0000000, 32)) == 3758096384);
  assert(unsigned(flip_mask(0xf, 32)) == 15);
  assert(unsigned(flip_mask(0xff, 32)) == 255);
  assert(unsigned(flip_mask(0xfffe, 32)) == 65534);
  assert(unsigned(flip_mask(0xffff, 32)) == 65535);
  assert(unsigned(flip_mask(0xffff8000, 32)) == 4294934528);
  assert(unsigned(flip_mask(0xffffff00, 32)) == 4294967040);
  assert(unsigned(flip_mask(0xffffff87, 32)) == 4294967175);
  assert(unsigned(flip_mask(0xffffff8c, 32)) == 4294967180);
  assert(unsigned(flip_mask(0xffffff93, 32)) == 4294967187);
  assert(unsigned(flip_mask(0xffffff9b, 32)) == 4294967195);
  assert(unsigned(flip_mask(0xffffffa7, 32)) == 4294967207);
  assert(unsigned(flip_mask(0xffffffd0, 32)) == 4294967248);
  assert(unsigned(flip_mask(0xffffffd8, 32)) == 4294967256);
  assert(unsigned(flip_mask(0xffffffda, 32)) == 4294967258);
  assert(unsigned(flip_mask(0xffffffdf, 32)) == 4294967263);
  assert(unsigned(flip_mask(0xffffffe0, 32)) == 4294967264);
  assert(unsigned(flip_mask(0xffffffe1, 32)) == 4294967265);
  assert(unsigned(flip_mask(0xffffffe2, 32)) == 4294967266);
  assert(unsigned(flip_mask(0xffffffe3, 32)) == 4294967267);
  assert(unsigned(flip_mask(0xffffffe4, 32)) == 4294967268);
  assert(unsigned(flip_mask(0xffffffe5, 32)) == 4294967269);
  assert(unsigned(flip_mask(0xffffffe6, 32)) == 4294967270);
  assert(unsigned(flip_mask(0xffffffe7, 32)) == 4294967271);
  assert(unsigned(flip_mask(0xffffffe8, 32)) == 4294967272);
  assert(unsigned(flip_mask(0xffffffe9, 32)) == 4294967273);
  assert(unsigned(flip_mask(0xffffffea, 32)) == 4294967274);
  assert(unsigned(flip_mask(0xffffffeb, 32)) == 4294967275);
  assert(unsigned(flip_mask(0xffffffec, 32)) == 4294967276);
  assert(unsigned(flip_mask(0xffffffed, 32)) == 4294967277);
  assert(unsigned(flip_mask(0xffffffee, 32)) == 4294967278);
  assert(unsigned(flip_mask(0xffffffef, 32)) == 4294967279);
  assert(unsigned(flip_mask(0xfffffff, 32)) == 268435455);
  assert(unsigned(flip_mask(0xfffffff0, 32)) == 4294967280);
  assert(unsigned(flip_mask(0xfffffff1, 32)) == 4294967281);
  assert(unsigned(flip_mask(0xfffffff2, 32)) == 4294967282);
  assert(unsigned(flip_mask(0xfffffff3, 32)) == 4294967283);
  assert(unsigned(flip_mask(0xfffffff4, 32)) == 4294967284);
  assert(unsigned(flip_mask(0xfffffff5, 32)) == 4294967285);
  assert(unsigned(flip_mask(0xfffffff6, 32)) == 4294967286);
  assert(unsigned(flip_mask(0xfffffff7, 32)) == 4294967287);
  assert(unsigned(flip_mask(0xfffffff8, 32)) == 4294967288);
  assert(unsigned(flip_mask(0xfffffff9, 32)) == 4294967289);
  assert(unsigned(flip_mask(0xfffffffa, 32)) == 4294967290);
  assert(unsigned(flip_mask(0xfffffffb, 32)) == 4294967291);
  assert(unsigned(flip_mask(0xfffffffc, 32)) == 4294967292);
  assert(unsigned(flip_mask(0xfffffffd, 32)) == 4294967293);
  assert(unsigned(flip_mask(0xfffffffe, 32)) == 4294967294);
  assert(unsigned(flip_mask(0xffffffff, 32)) == 4294967295);
  assert(unsigned(flip_mask(0x0, 4)) == 0);
  assert(unsigned(flip_mask(0x1, 4)) == 1);
  assert(unsigned(flip_mask(0x2, 4)) == 2);
  assert(unsigned(flip_mask(0x3, 4)) == 3);
  assert(unsigned(flip_mask(0x4, 4)) == 4);
  assert(unsigned(flip_mask(0x5, 4)) == 5);
  assert(unsigned(flip_mask(0x6, 4)) == 6);
  assert(unsigned(flip_mask(0x7, 4)) == 7);
  assert(unsigned(flip_mask(0x8, 4)) == 8);
  assert(unsigned(flip_mask(0xa, 4)) == 10);
  assert(unsigned(flip_mask(0xc, 4)) == 12);
  assert(unsigned(flip_mask(0xd, 4)) == 13);
  assert(unsigned(flip_mask(0xe, 4)) == 14);
  assert(unsigned(flip_mask(0x0, 5)) == 0);
  assert(unsigned(flip_mask(0x1, 5)) == 1);
  assert(unsigned(flip_mask(0x10, 5)) == 16);
  assert(unsigned(flip_mask(0x11, 5)) == 17);
  assert(unsigned(flip_mask(0x12, 5)) == 18);
  assert(unsigned(flip_mask(0x13, 5)) == 19);
  assert(unsigned(flip_mask(0x14, 5)) == 20);
  assert(unsigned(flip_mask(0x15, 5)) == 21);
  assert(unsigned(flip_mask(0x16, 5)) == 22);
  assert(unsigned(flip_mask(0x17, 5)) == 23);
  assert(unsigned(flip_mask(0x18, 5)) == 24);
  assert(unsigned(flip_mask(0x19, 5)) == 25);
  assert(unsigned(flip_mask(0x1a, 5)) == 26);
  assert(unsigned(flip_mask(0x1b, 5)) == 27);
  assert(unsigned(flip_mask(0x1c, 5)) == 28);
  assert(unsigned(flip_mask(0x1d, 5)) == 29);
  assert(unsigned(flip_mask(0x1e, 5)) == 30);
  assert(unsigned(flip_mask(0x1f, 5)) == 31);
  assert(unsigned(flip_mask(0x2, 5)) == 2);
  assert(unsigned(flip_mask(0x3, 5)) == 3);
  assert(unsigned(flip_mask(0x4, 5)) == 4);
  assert(unsigned(flip_mask(0x5, 5)) == 5);
  assert(unsigned(flip_mask(0x6, 5)) == 6);
  assert(unsigned(flip_mask(0x7, 5)) == 7);
  assert(unsigned(flip_mask(0x8, 5)) == 8);
  assert(unsigned(flip_mask(0x9, 5)) == 9);
  assert(unsigned(flip_mask(0xa, 5)) == 10);
  assert(unsigned(flip_mask(0xb, 5)) == 11);
  assert(unsigned(flip_mask(0xc, 5)) == 12);
  assert(unsigned(flip_mask(0xd, 5)) == 13);
  assert(unsigned(flip_mask(0xe, 5)) == 14);
  assert(unsigned(flip_mask(0xf, 5)) == 15);
  assert(unsigned(flip_mask(0x0, 52)) == 0);
  assert(unsigned(flip_mask(0x101000, 52)) == 1052672);
  assert(unsigned(flip_mask(0x101004, 52)) == 1052676);
  assert(unsigned(flip_mask(0x101008, 52)) == 1052680);
  assert(unsigned(flip_mask(0x10100c, 52)) == 1052684);
  assert(unsigned(flip_mask(0x101010, 52)) == 1052688);
  assert(unsigned(flip_mask(0x101014, 52)) == 1052692);
  assert(unsigned(flip_mask(0x101018, 52)) == 1052696);
  assert(unsigned(flip_mask(0x10101c, 52)) == 1052700);
  assert(unsigned(flip_mask(0x101020, 52)) == 1052704);
  assert(unsigned(flip_mask(0x101024, 52)) == 1052708);
  assert(unsigned(flip_mask(0x101028, 52)) == 1052712);
  assert(unsigned(flip_mask(0x10102c, 52)) == 1052716);
  assert(unsigned(flip_mask(0x101030, 52)) == 1052720);
  assert(unsigned(flip_mask(0x101034, 52)) == 1052724);
  assert(unsigned(flip_mask(0x101038, 52)) == 1052728);
  assert(unsigned(flip_mask(0x10103c, 52)) == 1052732);
  assert(unsigned(flip_mask(0x101040, 52)) == 1052736);
  assert(unsigned(flip_mask(0x101044, 52)) == 1052740);
  assert(unsigned(flip_mask(0x101048, 52)) == 1052744);
  assert(unsigned(flip_mask(0x10104c, 52)) == 1052748);
  assert(unsigned(flip_mask(0x101050, 52)) == 1052752);
  assert(unsigned(flip_mask(0x101054, 52)) == 1052756);
  assert(unsigned(flip_mask(0x101058, 52)) == 1052760);
  assert(unsigned(flip_mask(0x10105c, 52)) == 1052764);
  assert(unsigned(flip_mask(0x101060, 52)) == 1052768);
  assert(unsigned(flip_mask(0x101064, 52)) == 1052772);
  assert(unsigned(flip_mask(0x101068, 52)) == 1052776);
  assert(unsigned(flip_mask(0x10106c, 52)) == 1052780);
  assert(unsigned(flip_mask(0x101070, 52)) == 1052784);
  assert(unsigned(flip_mask(0x101074, 52)) == 1052788);
  assert(unsigned(flip_mask(0x101078, 52)) == 1052792);
  assert(unsigned(flip_mask(0x10107c, 52)) == 1052796);
  assert(unsigned(flip_mask(0x101080, 52)) == 1052800);
  assert(unsigned(flip_mask(0x101088, 52)) == 1052808);
  assert(unsigned(flip_mask(0x10108c, 52)) == 1052812);
  assert(unsigned(flip_mask(0x101090, 52)) == 1052816);
  assert(unsigned(flip_mask(0x101094, 52)) == 1052820);
  assert(unsigned(flip_mask(0x101098, 52)) == 1052824);
  assert(unsigned(flip_mask(0x10109c, 52)) == 1052828);
  assert(unsigned(flip_mask(0x1010a0, 52)) == 1052832);
  assert(unsigned(flip_mask(0x1010ac, 52)) == 1052844);
  assert(unsigned(flip_mask(0x1010b0, 52)) == 1052848);
  assert(unsigned(flip_mask(0x1010b4, 52)) == 1052852);
  assert(unsigned(flip_mask(0x1010b8, 52)) == 1052856);
  assert(unsigned(flip_mask(0x1010c0, 52)) == 1052864);
  assert(unsigned(flip_mask(0x1010c4, 52)) == 1052868);
  assert(unsigned(flip_mask(0x1010c8, 52)) == 1052872);
  assert(unsigned(flip_mask(0x1010cc, 52)) == 1052876);
  assert(unsigned(flip_mask(0x1010d0, 52)) == 1052880);
  assert(unsigned(flip_mask(0x1010d4, 52)) == 1052884);
  assert(unsigned(flip_mask(0x1010d8, 52)) == 1052888);
  assert(unsigned(flip_mask(0x1010dc, 52)) == 1052892);
  assert(unsigned(flip_mask(0x1010e0, 52)) == 1052896);
  assert(unsigned(flip_mask(0x1010e4, 52)) == 1052900);
  assert(unsigned(flip_mask(0x1010e8, 52)) == 1052904);
  assert(unsigned(flip_mask(0x1010ec, 52)) == 1052908);
  assert(unsigned(flip_mask(0x1010f0, 52)) == 1052912);
  assert(unsigned(flip_mask(0x1010f4, 52)) == 1052916);
  assert(unsigned(flip_mask(0x1010f8, 52)) == 1052920);
  assert(unsigned(flip_mask(0x1010fc, 52)) == 1052924);
  assert(unsigned(flip_mask(0x101100, 52)) == 1052928);
  assert(unsigned(flip_mask(0x101104, 52)) == 1052932);
  assert(unsigned(flip_mask(0x101108, 52)) == 1052936);
  assert(unsigned(flip_mask(0x10110c, 52)) == 1052940);
  assert(unsigned(flip_mask(0x101110, 52)) == 1052944);
  assert(unsigned(flip_mask(0x101114, 52)) == 1052948);
  assert(unsigned(flip_mask(0x101118, 52)) == 1052952);
  assert(unsigned(flip_mask(0x10111c, 52)) == 1052956);
  assert(unsigned(flip_mask(0x101120, 52)) == 1052960);
  assert(unsigned(flip_mask(0x101124, 52)) == 1052964);
  assert(unsigned(flip_mask(0x101128, 52)) == 1052968);
  assert(unsigned(flip_mask(0x10112c, 52)) == 1052972);
  assert(unsigned(flip_mask(0x101130, 52)) == 1052976);
  assert(unsigned(flip_mask(0x101134, 52)) == 1052980);
  assert(unsigned(flip_mask(0x101138, 52)) == 1052984);
  assert(unsigned(flip_mask(0x10113c, 52)) == 1052988);
  assert(unsigned(flip_mask(0x101140, 52)) == 1052992);
  assert(unsigned(flip_mask(0x101144, 52)) == 1052996);
  assert(unsigned(flip_mask(0x101148, 52)) == 1053000);
  assert(unsigned(flip_mask(0x10114c, 52)) == 1053004);
  assert(unsigned(flip_mask(0x101150, 52)) == 1053008);
  assert(unsigned(flip_mask(0x101154, 52)) == 1053012);
  assert(unsigned(flip_mask(0x101158, 52)) == 1053016);
  assert(unsigned(flip_mask(0x10115c, 52)) == 1053020);
  assert(unsigned(flip_mask(0x101160, 52)) == 1053024);
  assert(unsigned(flip_mask(0x101164, 52)) == 1053028);
  assert(unsigned(flip_mask(0x101168, 52)) == 1053032);
  assert(unsigned(flip_mask(0x10116c, 52)) == 1053036);
  assert(unsigned(flip_mask(0x101170, 52)) == 1053040);
  assert(unsigned(flip_mask(0x101174, 52)) == 1053044);
  assert(unsigned(flip_mask(0x101178, 52)) == 1053048);
  assert(unsigned(flip_mask(0x10117c, 52)) == 1053052);
  assert(unsigned(flip_mask(0x101180, 52)) == 1053056);
  assert(unsigned(flip_mask(0x101184, 52)) == 1053060);
  assert(unsigned(flip_mask(0x101188, 52)) == 1053064);
  assert(unsigned(flip_mask(0x10118c, 52)) == 1053068);
  assert(unsigned(flip_mask(0x101190, 52)) == 1053072);
  assert(unsigned(flip_mask(0x101194, 52)) == 1053076);
  assert(unsigned(flip_mask(0x101198, 52)) == 1053080);
  assert(unsigned(flip_mask(0x10119c, 52)) == 1053084);
  assert(unsigned(flip_mask(0x1011a0, 52)) == 1053088);
  assert(unsigned(flip_mask(0x1011a4, 52)) == 1053092);
  assert(unsigned(flip_mask(0x1011a8, 52)) == 1053096);
  assert(unsigned(flip_mask(0x1011ac, 52)) == 1053100);
  assert(unsigned(flip_mask(0x1011b0, 52)) == 1053104);
  assert(unsigned(flip_mask(0x1011b4, 52)) == 1053108);
  assert(unsigned(flip_mask(0x1011b8, 52)) == 1053112);
  assert(unsigned(flip_mask(0x101200, 52)) == 1053184);
  assert(unsigned(flip_mask(0x101204, 52)) == 1053188);
  assert(unsigned(flip_mask(0x101208, 52)) == 1053192);
  assert(unsigned(flip_mask(0x10120c, 52)) == 1053196);
  assert(unsigned(flip_mask(0x101210, 52)) == 1053200);
  assert(unsigned(flip_mask(0x101214, 52)) == 1053204);
  assert(unsigned(flip_mask(0x101218, 52)) == 1053208);
  assert(unsigned(flip_mask(0x10121c, 52)) == 1053212);
  assert(unsigned(flip_mask(0x101220, 52)) == 1053216);
  assert(unsigned(flip_mask(0x101224, 52)) == 1053220);
  assert(unsigned(flip_mask(0x101228, 52)) == 1053224);
  assert(unsigned(flip_mask(0x10122c, 52)) == 1053228);
  assert(unsigned(flip_mask(0x101230, 52)) == 1053232);
  assert(unsigned(flip_mask(0x101234, 52)) == 1053236);
  assert(unsigned(flip_mask(0x101238, 52)) == 1053240);
  assert(unsigned(flip_mask(0x101240, 52)) == 1053248);
  assert(unsigned(flip_mask(0x101248, 52)) == 1053256);
  assert(unsigned(flip_mask(0x101250, 52)) == 1053264);
  assert(unsigned(flip_mask(0x101258, 52)) == 1053272);
  assert(unsigned(flip_mask(0x101260, 52)) == 1053280);
  assert(unsigned(flip_mask(0x101270, 52)) == 1053296);
  assert(unsigned(flip_mask(0x101278, 52)) == 1053304);
  assert(unsigned(flip_mask(0x101280, 52)) == 1053312);
  assert(unsigned(flip_mask(0x102000, 52)) == 1056768);
  assert(unsigned(flip_mask(0x102004, 52)) == 1056772);
  assert(unsigned(flip_mask(0x102008, 52)) == 1056776);
  assert(unsigned(flip_mask(0x10200c, 52)) == 1056780);
  assert(unsigned(flip_mask(0x102010, 52)) == 1056784);
  assert(unsigned(flip_mask(0x102014, 52)) == 1056788);
  assert(unsigned(flip_mask(0x102018, 52)) == 1056792);
  assert(unsigned(flip_mask(0x10201c, 52)) == 1056796);
  assert(unsigned(flip_mask(0x102020, 52)) == 1056800);
  assert(unsigned(flip_mask(0x102024, 52)) == 1056804);
  assert(unsigned(flip_mask(0x102028, 52)) == 1056808);
  assert(unsigned(flip_mask(0x10202c, 52)) == 1056812);
  assert(unsigned(flip_mask(0x102030, 52)) == 1056816);
  assert(unsigned(flip_mask(0x102034, 52)) == 1056820);
  assert(unsigned(flip_mask(0x102038, 52)) == 1056824);
  assert(unsigned(flip_mask(0x10203c, 52)) == 1056828);
  assert(unsigned(flip_mask(0x102040, 52)) == 1056832);
  assert(unsigned(flip_mask(0x102044, 52)) == 1056836);
  assert(unsigned(flip_mask(0x102048, 52)) == 1056840);
  assert(unsigned(flip_mask(0x10204c, 52)) == 1056844);
  assert(unsigned(flip_mask(0x102050, 52)) == 1056848);
  assert(unsigned(flip_mask(0x102054, 52)) == 1056852);
  assert(unsigned(flip_mask(0x102058, 52)) == 1056856);
  assert(unsigned(flip_mask(0x10205c, 52)) == 1056860);
  assert(unsigned(flip_mask(0x102060, 52)) == 1056864);
  assert(unsigned(flip_mask(0x102064, 52)) == 1056868);
  assert(unsigned(flip_mask(0x102068, 52)) == 1056872);
  assert(unsigned(flip_mask(0x10206c, 52)) == 1056876);
  assert(unsigned(flip_mask(0x102070, 52)) == 1056880);
  assert(unsigned(flip_mask(0x102074, 52)) == 1056884);
  assert(unsigned(flip_mask(0x102078, 52)) == 1056888);
  assert(unsigned(flip_mask(0x10207c, 52)) == 1056892);
  assert(unsigned(flip_mask(0x102080, 52)) == 1056896);
  assert(unsigned(flip_mask(0x102084, 52)) == 1056900);
  assert(unsigned(flip_mask(0x102088, 52)) == 1056904);
  assert(unsigned(flip_mask(0x10208c, 52)) == 1056908);
  assert(unsigned(flip_mask(0x102090, 52)) == 1056912);
  assert(unsigned(flip_mask(0x102098, 52)) == 1056920);
  assert(unsigned(flip_mask(0x10209c, 52)) == 1056924);
  assert(unsigned(flip_mask(0x1020a0, 52)) == 1056928);
  assert(unsigned(flip_mask(0x1020a4, 52)) == 1056932);
  assert(unsigned(flip_mask(0x1020a8, 52)) == 1056936);
  assert(unsigned(flip_mask(0x1020ac, 52)) == 1056940);
  assert(unsigned(flip_mask(0x1020b0, 52)) == 1056944);
  assert(unsigned(flip_mask(0x1020bc, 52)) == 1056956);
  assert(unsigned(flip_mask(0x1020c0, 52)) == 1056960);
  assert(unsigned(flip_mask(0x1020c4, 52)) == 1056964);
  assert(unsigned(flip_mask(0x1020c8, 52)) == 1056968);
  assert(unsigned(flip_mask(0x1020d0, 52)) == 1056976);
  assert(unsigned(flip_mask(0x1020d4, 52)) == 1056980);
  assert(unsigned(flip_mask(0x1020d8, 52)) == 1056984);
  assert(unsigned(flip_mask(0x1020dc, 52)) == 1056988);
  assert(unsigned(flip_mask(0x1020e0, 52)) == 1056992);
  assert(unsigned(flip_mask(0x1020e4, 52)) == 1056996);
  assert(unsigned(flip_mask(0x1020e8, 52)) == 1057000);
  assert(unsigned(flip_mask(0x1020ec, 52)) == 1057004);
  assert(unsigned(flip_mask(0x1020f0, 52)) == 1057008);
  assert(unsigned(flip_mask(0x1020f4, 52)) == 1057012);
  assert(unsigned(flip_mask(0x1020f8, 52)) == 1057016);
  assert(unsigned(flip_mask(0x1020fc, 52)) == 1057020);
  assert(unsigned(flip_mask(0x102100, 52)) == 1057024);
  assert(unsigned(flip_mask(0x102104, 52)) == 1057028);
  assert(unsigned(flip_mask(0x102108, 52)) == 1057032);
  assert(unsigned(flip_mask(0x10210c, 52)) == 1057036);
  assert(unsigned(flip_mask(0x102110, 52)) == 1057040);
  assert(unsigned(flip_mask(0x102114, 52)) == 1057044);
  assert(unsigned(flip_mask(0x102118, 52)) == 1057048);
  assert(unsigned(flip_mask(0x10211c, 52)) == 1057052);
  assert(unsigned(flip_mask(0x102120, 52)) == 1057056);
  assert(unsigned(flip_mask(0x102124, 52)) == 1057060);
  assert(unsigned(flip_mask(0x102128, 52)) == 1057064);
  assert(unsigned(flip_mask(0x10212c, 52)) == 1057068);
  assert(unsigned(flip_mask(0x102130, 52)) == 1057072);
  assert(unsigned(flip_mask(0x102134, 52)) == 1057076);
  assert(unsigned(flip_mask(0x102138, 52)) == 1057080);
  assert(unsigned(flip_mask(0x10213c, 52)) == 1057084);
  assert(unsigned(flip_mask(0x102140, 52)) == 1057088);
  assert(unsigned(flip_mask(0x102144, 52)) == 1057092);
  assert(unsigned(flip_mask(0x102148, 52)) == 1057096);
  assert(unsigned(flip_mask(0x10214c, 52)) == 1057100);
  assert(unsigned(flip_mask(0x102150, 52)) == 1057104);
  assert(unsigned(flip_mask(0x102154, 52)) == 1057108);
  assert(unsigned(flip_mask(0x102158, 52)) == 1057112);
  assert(unsigned(flip_mask(0x10215c, 52)) == 1057116);
  assert(unsigned(flip_mask(0x102160, 52)) == 1057120);
  assert(unsigned(flip_mask(0x102164, 52)) == 1057124);
  assert(unsigned(flip_mask(0x102168, 52)) == 1057128);
  assert(unsigned(flip_mask(0x10216c, 52)) == 1057132);
  assert(unsigned(flip_mask(0x102170, 52)) == 1057136);
  assert(unsigned(flip_mask(0x102174, 52)) == 1057140);
  assert(unsigned(flip_mask(0x102178, 52)) == 1057144);
  assert(unsigned(flip_mask(0x10217c, 52)) == 1057148);
  assert(unsigned(flip_mask(0x102180, 52)) == 1057152);
  assert(unsigned(flip_mask(0x102184, 52)) == 1057156);
  assert(unsigned(flip_mask(0x102188, 52)) == 1057160);
  assert(unsigned(flip_mask(0x10218c, 52)) == 1057164);
  assert(unsigned(flip_mask(0x102190, 52)) == 1057168);
  assert(unsigned(flip_mask(0x102194, 52)) == 1057172);
  assert(unsigned(flip_mask(0x102198, 52)) == 1057176);
  assert(unsigned(flip_mask(0x10219c, 52)) == 1057180);
  assert(unsigned(flip_mask(0x1021a0, 52)) == 1057184);
  assert(unsigned(flip_mask(0x1021a4, 52)) == 1057188);
  assert(unsigned(flip_mask(0x1021a8, 52)) == 1057192);
  assert(unsigned(flip_mask(0x1021ac, 52)) == 1057196);
  assert(unsigned(flip_mask(0x1021b0, 52)) == 1057200);
  assert(unsigned(flip_mask(0x1021b4, 52)) == 1057204);
  assert(unsigned(flip_mask(0x1021b8, 52)) == 1057208);
  assert(unsigned(flip_mask(0x102200, 52)) == 1057280);
  assert(unsigned(flip_mask(0x102204, 52)) == 1057284);
  assert(unsigned(flip_mask(0x102208, 52)) == 1057288);
  assert(unsigned(flip_mask(0x10220c, 52)) == 1057292);
  assert(unsigned(flip_mask(0x102210, 52)) == 1057296);
  assert(unsigned(flip_mask(0x102214, 52)) == 1057300);
  assert(unsigned(flip_mask(0x102218, 52)) == 1057304);
  assert(unsigned(flip_mask(0x10221c, 52)) == 1057308);
  assert(unsigned(flip_mask(0x102220, 52)) == 1057312);
  assert(unsigned(flip_mask(0x102224, 52)) == 1057316);
  assert(unsigned(flip_mask(0x102228, 52)) == 1057320);
  assert(unsigned(flip_mask(0x10222c, 52)) == 1057324);
  assert(unsigned(flip_mask(0x102230, 52)) == 1057328);
  assert(unsigned(flip_mask(0x102234, 52)) == 1057332);
  assert(unsigned(flip_mask(0x102238, 52)) == 1057336);
  assert(unsigned(flip_mask(0x102240, 52)) == 1057344);
  assert(unsigned(flip_mask(0x102248, 52)) == 1057352);
  assert(unsigned(flip_mask(0x102250, 52)) == 1057360);
  assert(unsigned(flip_mask(0x102258, 52)) == 1057368);
  assert(unsigned(flip_mask(0x102260, 52)) == 1057376);
  assert(unsigned(flip_mask(0x102270, 52)) == 1057392);
  assert(unsigned(flip_mask(0x102278, 52)) == 1057400);
  assert(unsigned(flip_mask(0x102280, 52)) == 1057408);
  assert(unsigned(flip_mask(0x10300000, 52)) == 271581184);
  assert(unsigned(flip_mask(0x10300004, 52)) == 271581188);
  assert(unsigned(flip_mask(0x10300008, 52)) == 271581192);
  assert(unsigned(flip_mask(0x10300010, 52)) == 271581200);
  assert(unsigned(flip_mask(0x104000, 52)) == 1064960);
  assert(unsigned(flip_mask(0x104004, 52)) == 1064964);
  assert(unsigned(flip_mask(0x104008, 52)) == 1064968);
  assert(unsigned(flip_mask(0x10400c, 52)) == 1064972);
  assert(unsigned(flip_mask(0x104010, 52)) == 1064976);
  assert(unsigned(flip_mask(0x104014, 52)) == 1064980);
  assert(unsigned(flip_mask(0x104018, 52)) == 1064984);
  assert(unsigned(flip_mask(0x10401c, 52)) == 1064988);
  assert(unsigned(flip_mask(0x104020, 52)) == 1064992);
  assert(unsigned(flip_mask(0x104024, 52)) == 1064996);
  assert(unsigned(flip_mask(0x104028, 52)) == 1065000);
  assert(unsigned(flip_mask(0x10402c, 52)) == 1065004);
  assert(unsigned(flip_mask(0x104030, 52)) == 1065008);
  assert(unsigned(flip_mask(0x104034, 52)) == 1065012);
  assert(unsigned(flip_mask(0x104038, 52)) == 1065016);
  assert(unsigned(flip_mask(0x10403c, 52)) == 1065020);
  assert(unsigned(flip_mask(0x104040, 52)) == 1065024);
  assert(unsigned(flip_mask(0x104044, 52)) == 1065028);
  assert(unsigned(flip_mask(0x104048, 52)) == 1065032);
  assert(unsigned(flip_mask(0x10404c, 52)) == 1065036);
  assert(unsigned(flip_mask(0x104050, 52)) == 1065040);
  assert(unsigned(flip_mask(0x104054, 52)) == 1065044);
  assert(unsigned(flip_mask(0x104058, 52)) == 1065048);
  assert(unsigned(flip_mask(0x10405c, 52)) == 1065052);
  assert(unsigned(flip_mask(0x104060, 52)) == 1065056);
  assert(unsigned(flip_mask(0x104064, 52)) == 1065060);
  assert(unsigned(flip_mask(0x104068, 52)) == 1065064);
  assert(unsigned(flip_mask(0x10406c, 52)) == 1065068);
  assert(unsigned(flip_mask(0x104070, 52)) == 1065072);
  assert(unsigned(flip_mask(0x104074, 52)) == 1065076);
  assert(unsigned(flip_mask(0x104078, 52)) == 1065080);
  assert(unsigned(flip_mask(0x10407c, 52)) == 1065084);
  assert(unsigned(flip_mask(0x104080, 52)) == 1065088);
  assert(unsigned(flip_mask(0x104088, 52)) == 1065096);
  assert(unsigned(flip_mask(0x10408c, 52)) == 1065100);
  assert(unsigned(flip_mask(0x104090, 52)) == 1065104);
  assert(unsigned(flip_mask(0x104094, 52)) == 1065108);
  assert(unsigned(flip_mask(0x104098, 52)) == 1065112);
  assert(unsigned(flip_mask(0x10409c, 52)) == 1065116);
  assert(unsigned(flip_mask(0x1040a0, 52)) == 1065120);
  assert(unsigned(flip_mask(0x1040ac, 52)) == 1065132);
  assert(unsigned(flip_mask(0x1040b0, 52)) == 1065136);
  assert(unsigned(flip_mask(0x1040b4, 52)) == 1065140);
  assert(unsigned(flip_mask(0x1040b8, 52)) == 1065144);
  assert(unsigned(flip_mask(0x1040c0, 52)) == 1065152);
  assert(unsigned(flip_mask(0x1040c4, 52)) == 1065156);
  assert(unsigned(flip_mask(0x1040c8, 52)) == 1065160);
  assert(unsigned(flip_mask(0x1040cc, 52)) == 1065164);
  assert(unsigned(flip_mask(0x1040d0, 52)) == 1065168);
  assert(unsigned(flip_mask(0x1040d4, 52)) == 1065172);
  assert(unsigned(flip_mask(0x1040d8, 52)) == 1065176);
  assert(unsigned(flip_mask(0x1040dc, 52)) == 1065180);
  assert(unsigned(flip_mask(0x1040e0, 52)) == 1065184);
  assert(unsigned(flip_mask(0x1040e4, 52)) == 1065188);
  assert(unsigned(flip_mask(0x1040e8, 52)) == 1065192);
  assert(unsigned(flip_mask(0x1040ec, 52)) == 1065196);
  assert(unsigned(flip_mask(0x1040f0, 52)) == 1065200);
  assert(unsigned(flip_mask(0x1040f4, 52)) == 1065204);
  assert(unsigned(flip_mask(0x1040f8, 52)) == 1065208);
  assert(unsigned(flip_mask(0x1040fc, 52)) == 1065212);
  assert(unsigned(flip_mask(0x104100, 52)) == 1065216);
  assert(unsigned(flip_mask(0x104104, 52)) == 1065220);
  assert(unsigned(flip_mask(0x104108, 52)) == 1065224);
  assert(unsigned(flip_mask(0x10410c, 52)) == 1065228);
  assert(unsigned(flip_mask(0x104110, 52)) == 1065232);
  assert(unsigned(flip_mask(0x104114, 52)) == 1065236);
  assert(unsigned(flip_mask(0x104118, 52)) == 1065240);
  assert(unsigned(flip_mask(0x10411c, 52)) == 1065244);
  assert(unsigned(flip_mask(0x104120, 52)) == 1065248);
  assert(unsigned(flip_mask(0x104124, 52)) == 1065252);
  assert(unsigned(flip_mask(0x104128, 52)) == 1065256);
  assert(unsigned(flip_mask(0x10412c, 52)) == 1065260);
  assert(unsigned(flip_mask(0x104130, 52)) == 1065264);
  assert(unsigned(flip_mask(0x104134, 52)) == 1065268);
  assert(unsigned(flip_mask(0x104138, 52)) == 1065272);
  assert(unsigned(flip_mask(0x10413c, 52)) == 1065276);
  assert(unsigned(flip_mask(0x104140, 52)) == 1065280);
  assert(unsigned(flip_mask(0x104144, 52)) == 1065284);
  assert(unsigned(flip_mask(0x104148, 52)) == 1065288);
  assert(unsigned(flip_mask(0x10414c, 52)) == 1065292);
  assert(unsigned(flip_mask(0x104150, 52)) == 1065296);
  assert(unsigned(flip_mask(0x104154, 52)) == 1065300);
  assert(unsigned(flip_mask(0x104158, 52)) == 1065304);
  assert(unsigned(flip_mask(0x10415c, 52)) == 1065308);
  assert(unsigned(flip_mask(0x104160, 52)) == 1065312);
  assert(unsigned(flip_mask(0x104164, 52)) == 1065316);
  assert(unsigned(flip_mask(0x104168, 52)) == 1065320);
  assert(unsigned(flip_mask(0x10416c, 52)) == 1065324);
  assert(unsigned(flip_mask(0x104170, 52)) == 1065328);
  assert(unsigned(flip_mask(0x104174, 52)) == 1065332);
  assert(unsigned(flip_mask(0x104178, 52)) == 1065336);
  assert(unsigned(flip_mask(0x10417c, 52)) == 1065340);
  assert(unsigned(flip_mask(0x104180, 52)) == 1065344);
  assert(unsigned(flip_mask(0x104184, 52)) == 1065348);
  assert(unsigned(flip_mask(0x104188, 52)) == 1065352);
  assert(unsigned(flip_mask(0x10418c, 52)) == 1065356);
  assert(unsigned(flip_mask(0x104190, 52)) == 1065360);
  assert(unsigned(flip_mask(0x104194, 52)) == 1065364);
  assert(unsigned(flip_mask(0x104198, 52)) == 1065368);
  assert(unsigned(flip_mask(0x10419c, 52)) == 1065372);
  assert(unsigned(flip_mask(0x1041a0, 52)) == 1065376);
  assert(unsigned(flip_mask(0x1041a4, 52)) == 1065380);
  assert(unsigned(flip_mask(0x1041a8, 52)) == 1065384);
  assert(unsigned(flip_mask(0x1041ac, 52)) == 1065388);
  assert(unsigned(flip_mask(0x1041b0, 52)) == 1065392);
  assert(unsigned(flip_mask(0x1041b4, 52)) == 1065396);
  assert(unsigned(flip_mask(0x1041b8, 52)) == 1065400);
  assert(unsigned(flip_mask(0x1041bc, 52)) == 1065404);
  assert(unsigned(flip_mask(0x1041c0, 52)) == 1065408);
  assert(unsigned(flip_mask(0x104200, 52)) == 1065472);
  assert(unsigned(flip_mask(0x104204, 52)) == 1065476);
  assert(unsigned(flip_mask(0x104208, 52)) == 1065480);
  assert(unsigned(flip_mask(0x10420c, 52)) == 1065484);
  assert(unsigned(flip_mask(0x104210, 52)) == 1065488);
  assert(unsigned(flip_mask(0x104214, 52)) == 1065492);
  assert(unsigned(flip_mask(0x104218, 52)) == 1065496);
  assert(unsigned(flip_mask(0x10421c, 52)) == 1065500);
  assert(unsigned(flip_mask(0x104220, 52)) == 1065504);
  assert(unsigned(flip_mask(0x104224, 52)) == 1065508);
  assert(unsigned(flip_mask(0x104228, 52)) == 1065512);
  assert(unsigned(flip_mask(0x10422c, 52)) == 1065516);
  assert(unsigned(flip_mask(0x104230, 52)) == 1065520);
  assert(unsigned(flip_mask(0x104234, 52)) == 1065524);
  assert(unsigned(flip_mask(0x104238, 52)) == 1065528);
  assert(unsigned(flip_mask(0x10423c, 52)) == 1065532);
  assert(unsigned(flip_mask(0x104240, 52)) == 1065536);
  assert(unsigned(flip_mask(0x104244, 52)) == 1065540);
  assert(unsigned(flip_mask(0x104248, 52)) == 1065544);
  assert(unsigned(flip_mask(0x104250, 52)) == 1065552);
  assert(unsigned(flip_mask(0x104258, 52)) == 1065560);
  assert(unsigned(flip_mask(0x104260, 52)) == 1065568);
  assert(unsigned(flip_mask(0x104268, 52)) == 1065576);
  assert(unsigned(flip_mask(0x104270, 52)) == 1065584);
  assert(unsigned(flip_mask(0x104278, 52)) == 1065592);
  assert(unsigned(flip_mask(0x10427c, 52)) == 1065596);
  assert(unsigned(flip_mask(0x104280, 52)) == 1065600);
  assert(unsigned(flip_mask(0x104284, 52)) == 1065604);
  assert(unsigned(flip_mask(0x1042b8, 52)) == 1065656);
  assert(unsigned(flip_mask(0x1042bc, 52)) == 1065660);
  assert(unsigned(flip_mask(0x1042d4, 52)) == 1065684);
  assert(unsigned(flip_mask(0x1042e0, 52)) == 1065696);
  assert(unsigned(flip_mask(0x104300, 52)) == 1065728);
  assert(unsigned(flip_mask(0x104308, 52)) == 1065736);
  assert(unsigned(flip_mask(0x104310, 52)) == 1065744);
  assert(unsigned(flip_mask(0x104320, 52)) == 1065760);
  assert(unsigned(flip_mask(0x104328, 52)) == 1065768);
  assert(unsigned(flip_mask(0x104330, 52)) == 1065776);
  assert(unsigned(flip_mask(0x104338, 52)) == 1065784);
  assert(unsigned(flip_mask(0x104340, 52)) == 1065792);
  assert(unsigned(flip_mask(0x104360, 52)) == 1065824);
  assert(unsigned(flip_mask(0x104410, 52)) == 1066000);
  assert(unsigned(flip_mask(0x104418, 52)) == 1066008);
  assert(unsigned(flip_mask(0x104420, 52)) == 1066016);
  assert(unsigned(flip_mask(0x104428, 52)) == 1066024);
  assert(unsigned(flip_mask(0x1045a0, 52)) == 1066400);
  assert(unsigned(flip_mask(0x1045a4, 52)) == 1066404);
  assert(unsigned(flip_mask(0x1045b0, 52)) == 1066416);
  assert(unsigned(flip_mask(0x1045b8, 52)) == 1066424);
  assert(unsigned(flip_mask(0x1045c0, 52)) == 1066432);
  assert(unsigned(flip_mask(0x1045c4, 52)) == 1066436);
  assert(unsigned(flip_mask(0x1045c8, 52)) == 1066440);
  assert(unsigned(flip_mask(0x1045d0, 52)) == 1066448);
  assert(unsigned(flip_mask(0x1045d8, 52)) == 1066456);
  assert(unsigned(flip_mask(0x1045e0, 52)) == 1066464);
  assert(unsigned(flip_mask(0x1045e8, 52)) == 1066472);
  assert(unsigned(flip_mask(0x1045f0, 52)) == 1066480);
  assert(unsigned(flip_mask(0x1045f8, 52)) == 1066488);
  assert(unsigned(flip_mask(0x104600, 52)) == 1066496);
  assert(unsigned(flip_mask(0x104608, 52)) == 1066504);
  assert(unsigned(flip_mask(0x104610, 52)) == 1066512);
  assert(unsigned(flip_mask(0x104618, 52)) == 1066520);
  assert(unsigned(flip_mask(0x104620, 52)) == 1066528);
  assert(unsigned(flip_mask(0x104628, 52)) == 1066536);
  assert(unsigned(flip_mask(0x104630, 52)) == 1066544);
  assert(unsigned(flip_mask(0x104638, 52)) == 1066552);
  assert(unsigned(flip_mask(0x104640, 52)) == 1066560);
  assert(unsigned(flip_mask(0x104648, 52)) == 1066568);
  assert(unsigned(flip_mask(0x104650, 52)) == 1066576);
  assert(unsigned(flip_mask(0x104658, 52)) == 1066584);
  assert(unsigned(flip_mask(0x104660, 52)) == 1066592);
  assert(unsigned(flip_mask(0x104668, 52)) == 1066600);
  assert(unsigned(flip_mask(0x104670, 52)) == 1066608);
  assert(unsigned(flip_mask(0x104678, 52)) == 1066616);
  assert(unsigned(flip_mask(0x104680, 52)) == 1066624);
  assert(unsigned(flip_mask(0x104688, 52)) == 1066632);
  assert(unsigned(flip_mask(0x104690, 52)) == 1066640);
  assert(unsigned(flip_mask(0x1046a0, 52)) == 1066656);
  assert(unsigned(flip_mask(0x1046a8, 52)) == 1066664);
  assert(unsigned(flip_mask(0x1046b0, 52)) == 1066672);
  assert(unsigned(flip_mask(0x1046b8, 52)) == 1066680);
  assert(unsigned(flip_mask(0x1046c0, 52)) == 1066688);
  assert(unsigned(flip_mask(0x1046c8, 52)) == 1066696);
  assert(unsigned(flip_mask(0x1046d0, 52)) == 1066704);
  assert(unsigned(flip_mask(0x1046d8, 52)) == 1066712);
  assert(unsigned(flip_mask(0x1046e0, 52)) == 1066720);
  assert(unsigned(flip_mask(0x1046e8, 52)) == 1066728);
  assert(unsigned(flip_mask(0x1046f0, 52)) == 1066736);
  assert(unsigned(flip_mask(0x1046f8, 52)) == 1066744);
  assert(unsigned(flip_mask(0x104700, 52)) == 1066752);
  assert(unsigned(flip_mask(0x104708, 52)) == 1066760);
  assert(unsigned(flip_mask(0x104710, 52)) == 1066768);
  assert(unsigned(flip_mask(0x104718, 52)) == 1066776);
  assert(unsigned(flip_mask(0x104720, 52)) == 1066784);
  assert(unsigned(flip_mask(0x104728, 52)) == 1066792);
  assert(unsigned(flip_mask(0x104730, 52)) == 1066800);
  assert(unsigned(flip_mask(0x104738, 52)) == 1066808);
  assert(unsigned(flip_mask(0x104740, 52)) == 1066816);
  assert(unsigned(flip_mask(0x104d50, 52)) == 1068368);
  assert(unsigned(flip_mask(0x104d54, 52)) == 1068372);
  assert(unsigned(flip_mask(0x104d58, 52)) == 1068376);
  assert(unsigned(flip_mask(0x104d5c, 52)) == 1068380);
  assert(unsigned(flip_mask(0x104d60, 52)) == 1068384);
  assert(unsigned(flip_mask(0x104d64, 52)) == 1068388);
  assert(unsigned(flip_mask(0x104d68, 52)) == 1068392);
  assert(unsigned(flip_mask(0x104d6c, 52)) == 1068396);
  assert(unsigned(flip_mask(0x104d70, 52)) == 1068400);
  assert(unsigned(flip_mask(0x104d74, 52)) == 1068404);
  assert(unsigned(flip_mask(0x104d78, 52)) == 1068408);
  assert(unsigned(flip_mask(0x104d7c, 52)) == 1068412);
  assert(unsigned(flip_mask(0x104d80, 52)) == 1068416);
  assert(unsigned(flip_mask(0x104d84, 52)) == 1068420);
  assert(unsigned(flip_mask(0x104d88, 52)) == 1068424);
  assert(unsigned(flip_mask(0x104d8c, 52)) == 1068428);
  assert(unsigned(flip_mask(0x104d90, 52)) == 1068432);
  assert(unsigned(flip_mask(0x104d94, 52)) == 1068436);
  assert(unsigned(flip_mask(0x104d98, 52)) == 1068440);
  assert(unsigned(flip_mask(0x104d9c, 52)) == 1068444);
  assert(unsigned(flip_mask(0x104da0, 52)) == 1068448);
  assert(unsigned(flip_mask(0x104da4, 52)) == 1068452);
  assert(unsigned(flip_mask(0x104da8, 52)) == 1068456);
  assert(unsigned(flip_mask(0x104dac, 52)) == 1068460);
  assert(unsigned(flip_mask(0x104db0, 52)) == 1068464);
  assert(unsigned(flip_mask(0x104db4, 52)) == 1068468);
  assert(unsigned(flip_mask(0x104db8, 52)) == 1068472);
  assert(unsigned(flip_mask(0x104dbc, 52)) == 1068476);
  assert(unsigned(flip_mask(0x104dc0, 52)) == 1068480);
  assert(unsigned(flip_mask(0x104dc8, 52)) == 1068488);
  assert(unsigned(flip_mask(0x104dcc, 52)) == 1068492);
  assert(unsigned(flip_mask(0x104dd0, 52)) == 1068496);
  assert(unsigned(flip_mask(0x104dd4, 52)) == 1068500);
  assert(unsigned(flip_mask(0x104dd8, 52)) == 1068504);
  assert(unsigned(flip_mask(0x104ddc, 52)) == 1068508);
  assert(unsigned(flip_mask(0x104de0, 52)) == 1068512);
  assert(unsigned(flip_mask(0x104de4, 52)) == 1068516);
  assert(unsigned(flip_mask(0x104de8, 52)) == 1068520);
  assert(unsigned(flip_mask(0x104df4, 52)) == 1068532);
  assert(unsigned(flip_mask(0x104df8, 52)) == 1068536);
  assert(unsigned(flip_mask(0x104dfc, 52)) == 1068540);
  assert(unsigned(flip_mask(0x104e00, 52)) == 1068544);
  assert(unsigned(flip_mask(0x104e04, 52)) == 1068548);
  assert(unsigned(flip_mask(0x104e08, 52)) == 1068552);
  assert(unsigned(flip_mask(0x104e0c, 52)) == 1068556);
  assert(unsigned(flip_mask(0x104e10, 52)) == 1068560);
  assert(unsigned(flip_mask(0x104e14, 52)) == 1068564);
  assert(unsigned(flip_mask(0x104e18, 52)) == 1068568);
  assert(unsigned(flip_mask(0x104e1c, 52)) == 1068572);
  assert(unsigned(flip_mask(0x104e20, 52)) == 1068576);
  assert(unsigned(flip_mask(0x104e24, 52)) == 1068580);
  assert(unsigned(flip_mask(0x104e28, 52)) == 1068584);
  assert(unsigned(flip_mask(0x104e2c, 52)) == 1068588);
  assert(unsigned(flip_mask(0x104e30, 52)) == 1068592);
  assert(unsigned(flip_mask(0x104e34, 52)) == 1068596);
  assert(unsigned(flip_mask(0x104e38, 52)) == 1068600);
  assert(unsigned(flip_mask(0x104e3c, 52)) == 1068604);
  assert(unsigned(flip_mask(0x104e40, 52)) == 1068608);
  assert(unsigned(flip_mask(0x104e44, 52)) == 1068612);
  assert(unsigned(flip_mask(0x104e48, 52)) == 1068616);
  assert(unsigned(flip_mask(0x104e4c, 52)) == 1068620);
  assert(unsigned(flip_mask(0x104e50, 52)) == 1068624);
  assert(unsigned(flip_mask(0x104e54, 52)) == 1068628);
  assert(unsigned(flip_mask(0x104e58, 52)) == 1068632);
  assert(unsigned(flip_mask(0x104e5c, 52)) == 1068636);
  assert(unsigned(flip_mask(0x104e60, 52)) == 1068640);
  assert(unsigned(flip_mask(0x104e64, 52)) == 1068644);
  assert(unsigned(flip_mask(0x104e68, 52)) == 1068648);
  assert(unsigned(flip_mask(0x104e6c, 52)) == 1068652);
  assert(unsigned(flip_mask(0x104e70, 52)) == 1068656);
  assert(unsigned(flip_mask(0x104e74, 52)) == 1068660);
  assert(unsigned(flip_mask(0x104e78, 52)) == 1068664);
  assert(unsigned(flip_mask(0x104e7c, 52)) == 1068668);
  assert(unsigned(flip_mask(0x104e80, 52)) == 1068672);
  assert(unsigned(flip_mask(0x104e84, 52)) == 1068676);
  assert(unsigned(flip_mask(0x104e88, 52)) == 1068680);
  assert(unsigned(flip_mask(0x104e8c, 52)) == 1068684);
  assert(unsigned(flip_mask(0x104e90, 52)) == 1068688);
  assert(unsigned(flip_mask(0x104e94, 52)) == 1068692);
  assert(unsigned(flip_mask(0x104e98, 52)) == 1068696);
  assert(unsigned(flip_mask(0x104e9c, 52)) == 1068700);
  assert(unsigned(flip_mask(0x104ea0, 52)) == 1068704);
  assert(unsigned(flip_mask(0x104ea4, 52)) == 1068708);
  assert(unsigned(flip_mask(0x104ea8, 52)) == 1068712);
  assert(unsigned(flip_mask(0x104eac, 52)) == 1068716);
  assert(unsigned(flip_mask(0x104eb0, 52)) == 1068720);
  assert(unsigned(flip_mask(0x104eb4, 52)) == 1068724);
  assert(unsigned(flip_mask(0x104eb8, 52)) == 1068728);
  assert(unsigned(flip_mask(0x104ebc, 52)) == 1068732);
  assert(unsigned(flip_mask(0x104ec0, 52)) == 1068736);
  assert(unsigned(flip_mask(0x104ec4, 52)) == 1068740);
  assert(unsigned(flip_mask(0x104ec8, 52)) == 1068744);
  assert(unsigned(flip_mask(0x104ecc, 52)) == 1068748);
  assert(unsigned(flip_mask(0x104ed0, 52)) == 1068752);
  assert(unsigned(flip_mask(0x104ed4, 52)) == 1068756);
  assert(unsigned(flip_mask(0x104ed8, 52)) == 1068760);
  assert(unsigned(flip_mask(0x104edc, 52)) == 1068764);
  assert(unsigned(flip_mask(0x104ee0, 52)) == 1068768);
  assert(unsigned(flip_mask(0x104ee4, 52)) == 1068772);
  assert(unsigned(flip_mask(0x104ef4, 52)) == 1068788);
  assert(unsigned(flip_mask(0x104ef8, 52)) == 1068792);
  assert(unsigned(flip_mask(0x104efc, 52)) == 1068796);
  assert(unsigned(flip_mask(0x104f00, 52)) == 1068800);
  assert(unsigned(flip_mask(0x104f04, 52)) == 1068804);
  assert(unsigned(flip_mask(0x104f08, 52)) == 1068808);
  assert(unsigned(flip_mask(0x104f0c, 52)) == 1068812);
  assert(unsigned(flip_mask(0x104f10, 52)) == 1068816);
  assert(unsigned(flip_mask(0x104f14, 52)) == 1068820);
  assert(unsigned(flip_mask(0x104f20, 52)) == 1068832);
  assert(unsigned(flip_mask(0x104f24, 52)) == 1068836);
  assert(unsigned(flip_mask(0x104f28, 52)) == 1068840);
  assert(unsigned(flip_mask(0x104f2c, 52)) == 1068844);
  assert(unsigned(flip_mask(0x104f3c, 52)) == 1068860);
  assert(unsigned(flip_mask(0x104f40, 52)) == 1068864);
  assert(unsigned(flip_mask(0x104f44, 52)) == 1068868);
  assert(unsigned(flip_mask(0x104f48, 52)) == 1068872);
  assert(unsigned(flip_mask(0x104f4c, 52)) == 1068876);
  assert(unsigned(flip_mask(0x104f50, 52)) == 1068880);
  assert(unsigned(flip_mask(0x104f54, 52)) == 1068884);
  assert(unsigned(flip_mask(0x104f58, 52)) == 1068888);
  assert(unsigned(flip_mask(0x104f5c, 52)) == 1068892);
  assert(unsigned(flip_mask(0x104f60, 52)) == 1068896);
  assert(unsigned(flip_mask(0x104f64, 52)) == 1068900);
  assert(unsigned(flip_mask(0x104f68, 52)) == 1068904);
  assert(unsigned(flip_mask(0x104f6c, 52)) == 1068908);
  assert(unsigned(flip_mask(0x104f70, 52)) == 1068912);
  assert(unsigned(flip_mask(0x104f74, 52)) == 1068916);
  assert(unsigned(flip_mask(0x104f78, 52)) == 1068920);
  assert(unsigned(flip_mask(0x104f7c, 52)) == 1068924);
  assert(unsigned(flip_mask(0x104f80, 52)) == 1068928);
  assert(unsigned(flip_mask(0x104f84, 52)) == 1068932);
  assert(unsigned(flip_mask(0x104f88, 52)) == 1068936);
  assert(unsigned(flip_mask(0x104f8c, 52)) == 1068940);
  assert(unsigned(flip_mask(0x104f90, 52)) == 1068944);
  assert(unsigned(flip_mask(0x104f94, 52)) == 1068948);
  assert(unsigned(flip_mask(0x104f98, 52)) == 1068952);
  assert(unsigned(flip_mask(0x104f9c, 52)) == 1068956);
  assert(unsigned(flip_mask(0x104fa0, 52)) == 1068960);
  assert(unsigned(flip_mask(0x104fa4, 52)) == 1068964);
  assert(unsigned(flip_mask(0x104fa8, 52)) == 1068968);
  assert(unsigned(flip_mask(0x104fac, 52)) == 1068972);
  assert(unsigned(flip_mask(0x104fb0, 52)) == 1068976);
  assert(unsigned(flip_mask(0x104fb4, 52)) == 1068980);
  assert(unsigned(flip_mask(0x104fb8, 52)) == 1068984);
  assert(unsigned(flip_mask(0x104fbc, 52)) == 1068988);
  assert(unsigned(flip_mask(0x104fc0, 52)) == 1068992);
  assert(unsigned(flip_mask(0x104fc4, 52)) == 1068996);
  assert(unsigned(flip_mask(0x104fc8, 52)) == 1069000);
  assert(unsigned(flip_mask(0x104fcc, 52)) == 1069004);
  assert(unsigned(flip_mask(0x104fd0, 52)) == 1069008);
  assert(unsigned(flip_mask(0x104fd4, 52)) == 1069012);
  assert(unsigned(flip_mask(0x104fd8, 52)) == 1069016);
  assert(unsigned(flip_mask(0x104fdc, 52)) == 1069020);
  assert(unsigned(flip_mask(0x104fe0, 52)) == 1069024);
  assert(unsigned(flip_mask(0x104fe4, 52)) == 1069028);
  assert(unsigned(flip_mask(0x104fe8, 52)) == 1069032);
  assert(unsigned(flip_mask(0x104fec, 52)) == 1069036);
  assert(unsigned(flip_mask(0x104ff0, 52)) == 1069040);
  assert(unsigned(flip_mask(0x104ff4, 52)) == 1069044);
  assert(unsigned(flip_mask(0x104ff8, 52)) == 1069048);
  assert(unsigned(flip_mask(0x105008, 52)) == 1069064);
  assert(unsigned(flip_mask(0x10500c, 52)) == 1069068);
  assert(unsigned(flip_mask(0x105010, 52)) == 1069072);
  assert(unsigned(flip_mask(0x105014, 52)) == 1069076);
  assert(unsigned(flip_mask(0x105018, 52)) == 1069080);
  assert(unsigned(flip_mask(0x10501c, 52)) == 1069084);
  assert(unsigned(flip_mask(0x105020, 52)) == 1069088);
  assert(unsigned(flip_mask(0x105024, 52)) == 1069092);
  assert(unsigned(flip_mask(0x105028, 52)) == 1069096);
  assert(unsigned(flip_mask(0x105034, 52)) == 1069108);
  assert(unsigned(flip_mask(0x105038, 52)) == 1069112);
  assert(unsigned(flip_mask(0x10503c, 52)) == 1069116);
  assert(unsigned(flip_mask(0x105040, 52)) == 1069120);
  assert(unsigned(flip_mask(0x105050, 52)) == 1069136);
  assert(unsigned(flip_mask(0x105054, 52)) == 1069140);
  assert(unsigned(flip_mask(0x105058, 52)) == 1069144);
  assert(unsigned(flip_mask(0x10505c, 52)) == 1069148);
  assert(unsigned(flip_mask(0x105060, 52)) == 1069152);
  assert(unsigned(flip_mask(0x105064, 52)) == 1069156);
  assert(unsigned(flip_mask(0x105068, 52)) == 1069160);
  assert(unsigned(flip_mask(0x10506c, 52)) == 1069164);
  assert(unsigned(flip_mask(0x105070, 52)) == 1069168);
  assert(unsigned(flip_mask(0x105074, 52)) == 1069172);
  assert(unsigned(flip_mask(0x105078, 52)) == 1069176);
  assert(unsigned(flip_mask(0x10507c, 52)) == 1069180);
  assert(unsigned(flip_mask(0x105080, 52)) == 1069184);
  assert(unsigned(flip_mask(0x105084, 52)) == 1069188);
  assert(unsigned(flip_mask(0x105088, 52)) == 1069192);
  assert(unsigned(flip_mask(0x10508c, 52)) == 1069196);
  assert(unsigned(flip_mask(0x105090, 52)) == 1069200);
  assert(unsigned(flip_mask(0x105094, 52)) == 1069204);
  assert(unsigned(flip_mask(0x105098, 52)) == 1069208);
  assert(unsigned(flip_mask(0x10509c, 52)) == 1069212);
  assert(unsigned(flip_mask(0x1050a0, 52)) == 1069216);
  assert(unsigned(flip_mask(0x1050a4, 52)) == 1069220);
  assert(unsigned(flip_mask(0x1050a8, 52)) == 1069224);
  assert(unsigned(flip_mask(0x1050ac, 52)) == 1069228);
  assert(unsigned(flip_mask(0x1050b0, 52)) == 1069232);
  assert(unsigned(flip_mask(0x1050b4, 52)) == 1069236);
  assert(unsigned(flip_mask(0x1050b8, 52)) == 1069240);
  assert(unsigned(flip_mask(0x1050bc, 52)) == 1069244);
  assert(unsigned(flip_mask(0x1050c0, 52)) == 1069248);
  assert(unsigned(flip_mask(0x1050c4, 52)) == 1069252);
  assert(unsigned(flip_mask(0x1050c8, 52)) == 1069256);
  assert(unsigned(flip_mask(0x1050cc, 52)) == 1069260);
  assert(unsigned(flip_mask(0x1050d0, 52)) == 1069264);
  assert(unsigned(flip_mask(0x1050d4, 52)) == 1069268);
  assert(unsigned(flip_mask(0x1050d8, 52)) == 1069272);
  assert(unsigned(flip_mask(0x1050dc, 52)) == 1069276);
  assert(unsigned(flip_mask(0x1050e0, 52)) == 1069280);
  assert(unsigned(flip_mask(0x1050e4, 52)) == 1069284);
  assert(unsigned(flip_mask(0x1050e8, 52)) == 1069288);
  assert(unsigned(flip_mask(0x1050ec, 52)) == 1069292);
  assert(unsigned(flip_mask(0x1050f0, 52)) == 1069296);
  assert(unsigned(flip_mask(0x1050f4, 52)) == 1069300);
  assert(unsigned(flip_mask(0x1050f8, 52)) == 1069304);
  assert(unsigned(flip_mask(0x1050fc, 52)) == 1069308);
  assert(unsigned(flip_mask(0x105100, 52)) == 1069312);
  assert(unsigned(flip_mask(0x105110, 52)) == 1069328);
  assert(unsigned(flip_mask(0x105114, 52)) == 1069332);
  assert(unsigned(flip_mask(0x105118, 52)) == 1069336);
  assert(unsigned(flip_mask(0x10511c, 52)) == 1069340);
  assert(unsigned(flip_mask(0x105120, 52)) == 1069344);
  assert(unsigned(flip_mask(0x105124, 52)) == 1069348);
  assert(unsigned(flip_mask(0x105128, 52)) == 1069352);
  assert(unsigned(flip_mask(0x105134, 52)) == 1069364);
  assert(unsigned(flip_mask(0x105138, 52)) == 1069368);
  assert(unsigned(flip_mask(0x10513c, 52)) == 1069372);
  assert(unsigned(flip_mask(0x105140, 52)) == 1069376);
  assert(unsigned(flip_mask(0x105150, 52)) == 1069392);
  assert(unsigned(flip_mask(0x105154, 52)) == 1069396);
  assert(unsigned(flip_mask(0x105158, 52)) == 1069400);
  assert(unsigned(flip_mask(0x10515c, 52)) == 1069404);
  assert(unsigned(flip_mask(0x105160, 52)) == 1069408);
  assert(unsigned(flip_mask(0x105164, 52)) == 1069412);
  assert(unsigned(flip_mask(0x105168, 52)) == 1069416);
  assert(unsigned(flip_mask(0x10516c, 52)) == 1069420);
  assert(unsigned(flip_mask(0x105170, 52)) == 1069424);
  assert(unsigned(flip_mask(0x105174, 52)) == 1069428);
  assert(unsigned(flip_mask(0x105178, 52)) == 1069432);
  assert(unsigned(flip_mask(0x10517c, 52)) == 1069436);
  assert(unsigned(flip_mask(0x105180, 52)) == 1069440);
  assert(unsigned(flip_mask(0x105184, 52)) == 1069444);
  assert(unsigned(flip_mask(0x105188, 52)) == 1069448);
  assert(unsigned(flip_mask(0x10518c, 52)) == 1069452);
  assert(unsigned(flip_mask(0x105190, 52)) == 1069456);
  assert(unsigned(flip_mask(0x105194, 52)) == 1069460);
  assert(unsigned(flip_mask(0x105198, 52)) == 1069464);
  assert(unsigned(flip_mask(0x10519c, 52)) == 1069468);
  assert(unsigned(flip_mask(0x1051a0, 52)) == 1069472);
  assert(unsigned(flip_mask(0x1051a4, 52)) == 1069476);
  assert(unsigned(flip_mask(0x1051a8, 52)) == 1069480);
  assert(unsigned(flip_mask(0x1051ac, 52)) == 1069484);
  assert(unsigned(flip_mask(0x1051b0, 52)) == 1069488);
  assert(unsigned(flip_mask(0x1051b4, 52)) == 1069492);
  assert(unsigned(flip_mask(0x1051b8, 52)) == 1069496);
  assert(unsigned(flip_mask(0x1051bc, 52)) == 1069500);
  assert(unsigned(flip_mask(0x1051c0, 52)) == 1069504);
  assert(unsigned(flip_mask(0x1051c4, 52)) == 1069508);
  assert(unsigned(flip_mask(0x1051c8, 52)) == 1069512);
  assert(unsigned(flip_mask(0x1051cc, 52)) == 1069516);
  assert(unsigned(flip_mask(0x1051d0, 52)) == 1069520);
  assert(unsigned(flip_mask(0x1051d4, 52)) == 1069524);
  assert(unsigned(flip_mask(0x1051d8, 52)) == 1069528);
  assert(unsigned(flip_mask(0x1051dc, 52)) == 1069532);
  assert(unsigned(flip_mask(0x1051e0, 52)) == 1069536);
  assert(unsigned(flip_mask(0x1051e4, 52)) == 1069540);
  assert(unsigned(flip_mask(0x1051e8, 52)) == 1069544);
  assert(unsigned(flip_mask(0x1051ec, 52)) == 1069548);
  assert(unsigned(flip_mask(0x1051f0, 52)) == 1069552);
  assert(unsigned(flip_mask(0x1051f4, 52)) == 1069556);
  assert(unsigned(flip_mask(0x1051f8, 52)) == 1069560);
  assert(unsigned(flip_mask(0x1051fc, 52)) == 1069564);
  assert(unsigned(flip_mask(0x105200, 52)) == 1069568);
  assert(unsigned(flip_mask(0x105208, 52)) == 1069576);
  assert(unsigned(flip_mask(0x10520c, 52)) == 1069580);
  assert(unsigned(flip_mask(0x105210, 52)) == 1069584);
  assert(unsigned(flip_mask(0x105214, 52)) == 1069588);
  assert(unsigned(flip_mask(0x105218, 52)) == 1069592);
  assert(unsigned(flip_mask(0x10521c, 52)) == 1069596);
  assert(unsigned(flip_mask(0x105220, 52)) == 1069600);
  assert(unsigned(flip_mask(0x105224, 52)) == 1069604);
  assert(unsigned(flip_mask(0x105228, 52)) == 1069608);
  assert(unsigned(flip_mask(0x105230, 52)) == 1069616);
  assert(unsigned(flip_mask(0x105238, 52)) == 1069624);
  assert(unsigned(flip_mask(0x105240, 52)) == 1069632);
  assert(unsigned(flip_mask(0x105248, 52)) == 1069640);
  assert(unsigned(flip_mask(0x10524c, 52)) == 1069644);
  assert(unsigned(flip_mask(0x105250, 52)) == 1069648);
  assert(unsigned(flip_mask(0x105254, 52)) == 1069652);
  assert(unsigned(flip_mask(0x105258, 52)) == 1069656);
  assert(unsigned(flip_mask(0x10525c, 52)) == 1069660);
  assert(unsigned(flip_mask(0x105260, 52)) == 1069664);
  assert(unsigned(flip_mask(0x105264, 52)) == 1069668);
  assert(unsigned(flip_mask(0x105268, 52)) == 1069672);
  assert(unsigned(flip_mask(0x10526c, 52)) == 1069676);
  assert(unsigned(flip_mask(0x105270, 52)) == 1069680);
  assert(unsigned(flip_mask(0x105274, 52)) == 1069684);
  assert(unsigned(flip_mask(0x105278, 52)) == 1069688);
  assert(unsigned(flip_mask(0x10527c, 52)) == 1069692);
  assert(unsigned(flip_mask(0x10532c, 52)) == 1069868);
  assert(unsigned(flip_mask(0x105330, 52)) == 1069872);
  assert(unsigned(flip_mask(0x105334, 52)) == 1069876);
  assert(unsigned(flip_mask(0x105338, 52)) == 1069880);
  assert(unsigned(flip_mask(0x10533c, 52)) == 1069884);
  assert(unsigned(flip_mask(0x105340, 52)) == 1069888);
  assert(unsigned(flip_mask(0x105344, 52)) == 1069892);
  assert(unsigned(flip_mask(0x105348, 52)) == 1069896);
  assert(unsigned(flip_mask(0x10534c, 52)) == 1069900);
  assert(unsigned(flip_mask(0x105350, 52)) == 1069904);
  assert(unsigned(flip_mask(0x105354, 52)) == 1069908);
  assert(unsigned(flip_mask(0x105358, 52)) == 1069912);
  assert(unsigned(flip_mask(0x10535c, 52)) == 1069916);
  assert(unsigned(flip_mask(0x105360, 52)) == 1069920);
  assert(unsigned(flip_mask(0x105364, 52)) == 1069924);
  assert(unsigned(flip_mask(0x105368, 52)) == 1069928);
  assert(unsigned(flip_mask(0x10536c, 52)) == 1069932);
  assert(unsigned(flip_mask(0x10537c, 52)) == 1069948);
  assert(unsigned(flip_mask(0x105380, 52)) == 1069952);
  assert(unsigned(flip_mask(0x105384, 52)) == 1069956);
  assert(unsigned(flip_mask(0x105388, 52)) == 1069960);
  assert(unsigned(flip_mask(0x10538c, 52)) == 1069964);
  assert(unsigned(flip_mask(0x105390, 52)) == 1069968);
  assert(unsigned(flip_mask(0x1053a0, 52)) == 1069984);
  assert(unsigned(flip_mask(0x1053a4, 52)) == 1069988);
  assert(unsigned(flip_mask(0x1053a8, 52)) == 1069992);
  assert(unsigned(flip_mask(0x1053ac, 52)) == 1069996);
  assert(unsigned(flip_mask(0x1053b0, 52)) == 1070000);
  assert(unsigned(flip_mask(0x1053b4, 52)) == 1070004);
  assert(unsigned(flip_mask(0x10544c, 52)) == 1070156);
  assert(unsigned(flip_mask(0x105450, 52)) == 1070160);
  assert(unsigned(flip_mask(0x105454, 52)) == 1070164);
  assert(unsigned(flip_mask(0x105458, 52)) == 1070168);
  assert(unsigned(flip_mask(0x10545c, 52)) == 1070172);
  assert(unsigned(flip_mask(0x105468, 52)) == 1070184);
  assert(unsigned(flip_mask(0x10546c, 52)) == 1070188);
  assert(unsigned(flip_mask(0x105470, 52)) == 1070192);
  assert(unsigned(flip_mask(0x105474, 52)) == 1070196);
  assert(unsigned(flip_mask(0x105478, 52)) == 1070200);
  assert(unsigned(flip_mask(0x10547c, 52)) == 1070204);
  assert(unsigned(flip_mask(0x105480, 52)) == 1070208);
  assert(unsigned(flip_mask(0x105484, 52)) == 1070212);
  assert(unsigned(flip_mask(0x105490, 52)) == 1070224);
  assert(unsigned(flip_mask(0x105494, 52)) == 1070228);
  assert(unsigned(flip_mask(0x105498, 52)) == 1070232);
  assert(unsigned(flip_mask(0x1054a0, 52)) == 1070240);
  assert(unsigned(flip_mask(0x1054a8, 52)) == 1070248);
  assert(unsigned(flip_mask(0x1054ac, 52)) == 1070252);
  assert(unsigned(flip_mask(0x1054b0, 52)) == 1070256);
  assert(unsigned(flip_mask(0x1054b4, 52)) == 1070260);
  assert(unsigned(flip_mask(0x1054b8, 52)) == 1070264);
  assert(unsigned(flip_mask(0x1054bc, 52)) == 1070268);
  assert(unsigned(flip_mask(0x1054c0, 52)) == 1070272);
  assert(unsigned(flip_mask(0x1054c4, 52)) == 1070276);
  assert(unsigned(flip_mask(0x1054c8, 52)) == 1070280);
  assert(unsigned(flip_mask(0x1054cc, 52)) == 1070284);
  assert(unsigned(flip_mask(0x1054d0, 52)) == 1070288);
  assert(unsigned(flip_mask(0x1054d4, 52)) == 1070292);
  assert(unsigned(flip_mask(0x1054d8, 52)) == 1070296);
  assert(unsigned(flip_mask(0x1054dc, 52)) == 1070300);
  assert(unsigned(flip_mask(0x1054e0, 52)) == 1070304);
  assert(unsigned(flip_mask(0x1054e4, 52)) == 1070308);
  assert(unsigned(flip_mask(0x1054e8, 52)) == 1070312);
  assert(unsigned(flip_mask(0x1054f0, 52)) == 1070320);
  assert(unsigned(flip_mask(0x1054f8, 52)) == 1070328);
  assert(unsigned(flip_mask(0x105500, 52)) == 1070336);
  assert(unsigned(flip_mask(0x105508, 52)) == 1070344);
  assert(unsigned(flip_mask(0x10550c, 52)) == 1070348);
  assert(unsigned(flip_mask(0x105510, 52)) == 1070352);
  assert(unsigned(flip_mask(0x105514, 52)) == 1070356);
  assert(unsigned(flip_mask(0x105518, 52)) == 1070360);
  assert(unsigned(flip_mask(0x10551c, 52)) == 1070364);
  assert(unsigned(flip_mask(0x105520, 52)) == 1070368);
  assert(unsigned(flip_mask(0x105524, 52)) == 1070372);
  assert(unsigned(flip_mask(0x105528, 52)) == 1070376);
  assert(unsigned(flip_mask(0x10552c, 52)) == 1070380);
  assert(unsigned(flip_mask(0x105530, 52)) == 1070384);
  assert(unsigned(flip_mask(0x105534, 52)) == 1070388);
  assert(unsigned(flip_mask(0x105538, 52)) == 1070392);
  assert(unsigned(flip_mask(0x10553c, 52)) == 1070396);
  assert(unsigned(flip_mask(0x105540, 52)) == 1070400);
  assert(unsigned(flip_mask(0x105544, 52)) == 1070404);
  assert(unsigned(flip_mask(0x105548, 52)) == 1070408);
  assert(unsigned(flip_mask(0x10554c, 52)) == 1070412);
  assert(unsigned(flip_mask(0x105550, 52)) == 1070416);
  assert(unsigned(flip_mask(0x105554, 52)) == 1070420);
  assert(unsigned(flip_mask(0x105558, 52)) == 1070424);
  assert(unsigned(flip_mask(0x105560, 52)) == 1070432);
  assert(unsigned(flip_mask(0x105568, 52)) == 1070440);
  assert(unsigned(flip_mask(0x105570, 52)) == 1070448);
  assert(unsigned(flip_mask(0x105574, 52)) == 1070452);
  assert(unsigned(flip_mask(0x105578, 52)) == 1070456);
  assert(unsigned(flip_mask(0x10557c, 52)) == 1070460);
  assert(unsigned(flip_mask(0x105580, 52)) == 1070464);
  assert(unsigned(flip_mask(0x105584, 52)) == 1070468);
  assert(unsigned(flip_mask(0x105588, 52)) == 1070472);
  assert(unsigned(flip_mask(0x10558c, 52)) == 1070476);
  assert(unsigned(flip_mask(0x105590, 52)) == 1070480);
  assert(unsigned(flip_mask(0x105594, 52)) == 1070484);
  assert(unsigned(flip_mask(0x105598, 52)) == 1070488);
  assert(unsigned(flip_mask(0x10559c, 52)) == 1070492);
  assert(unsigned(flip_mask(0x1055a0, 52)) == 1070496);
  assert(unsigned(flip_mask(0x1055a4, 52)) == 1070500);
  assert(unsigned(flip_mask(0x1055a8, 52)) == 1070504);
  assert(unsigned(flip_mask(0x1055ac, 52)) == 1070508);
  assert(unsigned(flip_mask(0x1055b0, 52)) == 1070512);
  assert(unsigned(flip_mask(0x1055b4, 52)) == 1070516);
  assert(unsigned(flip_mask(0x1055b8, 52)) == 1070520);
  assert(unsigned(flip_mask(0x1055bc, 52)) == 1070524);
  assert(unsigned(flip_mask(0x1055c0, 52)) == 1070528);
  assert(unsigned(flip_mask(0x1055c4, 52)) == 1070532);
  assert(unsigned(flip_mask(0x1055c8, 52)) == 1070536);
  assert(unsigned(flip_mask(0x1055cc, 52)) == 1070540);
  assert(unsigned(flip_mask(0x1055d0, 52)) == 1070544);
  assert(unsigned(flip_mask(0x1055dc, 52)) == 1070556);
  assert(unsigned(flip_mask(0x1055e0, 52)) == 1070560);
  assert(unsigned(flip_mask(0x1055e8, 52)) == 1070568);
  assert(unsigned(flip_mask(0x1055ec, 52)) == 1070572);
  assert(unsigned(flip_mask(0x1055f0, 52)) == 1070576);
  assert(unsigned(flip_mask(0x1055f4, 52)) == 1070580);
  assert(unsigned(flip_mask(0x1055f8, 52)) == 1070584);
  assert(unsigned(flip_mask(0x1055fc, 52)) == 1070588);
  assert(unsigned(flip_mask(0x105610, 52)) == 1070608);
  assert(unsigned(flip_mask(0x105614, 52)) == 1070612);
  assert(unsigned(flip_mask(0x105644, 52)) == 1070660);
  assert(unsigned(flip_mask(0x105648, 52)) == 1070664);
  assert(unsigned(flip_mask(0x10564c, 52)) == 1070668);
  assert(unsigned(flip_mask(0x10568c, 52)) == 1070732);
  assert(unsigned(flip_mask(0x105690, 52)) == 1070736);
  assert(unsigned(flip_mask(0x105694, 52)) == 1070740);
  assert(unsigned(flip_mask(0x105698, 52)) == 1070744);
  assert(unsigned(flip_mask(0x10569c, 52)) == 1070748);
  assert(unsigned(flip_mask(0x1056a0, 52)) == 1070752);
  assert(unsigned(flip_mask(0x1056a4, 52)) == 1070756);
  assert(unsigned(flip_mask(0x1056a8, 52)) == 1070760);
  assert(unsigned(flip_mask(0x1056ac, 52)) == 1070764);
  assert(unsigned(flip_mask(0x1056b0, 52)) == 1070768);
  assert(unsigned(flip_mask(0x1056b4, 52)) == 1070772);
  assert(unsigned(flip_mask(0x1056b8, 52)) == 1070776);
  assert(unsigned(flip_mask(0x1056bc, 52)) == 1070780);
  assert(unsigned(flip_mask(0x1056c0, 52)) == 1070784);
  assert(unsigned(flip_mask(0x1056c4, 52)) == 1070788);
  assert(unsigned(flip_mask(0x1056c8, 52)) == 1070792);
  assert(unsigned(flip_mask(0x1056cc, 52)) == 1070796);
  assert(unsigned(flip_mask(0x1056d0, 52)) == 1070800);
  assert(unsigned(flip_mask(0x1056d4, 52)) == 1070804);
  assert(unsigned(flip_mask(0x1056d8, 52)) == 1070808);
  assert(unsigned(flip_mask(0x1056dc, 52)) == 1070812);
  assert(unsigned(flip_mask(0x1056e0, 52)) == 1070816);
  assert(unsigned(flip_mask(0x1056e4, 52)) == 1070820);
  assert(unsigned(flip_mask(0x1056e8, 52)) == 1070824);
  assert(unsigned(flip_mask(0x1056ec, 52)) == 1070828);
  assert(unsigned(flip_mask(0x1056f0, 52)) == 1070832);
  assert(unsigned(flip_mask(0x1056f4, 52)) == 1070836);
  assert(unsigned(flip_mask(0x1056f8, 52)) == 1070840);
  assert(unsigned(flip_mask(0x1056fc, 52)) == 1070844);
  assert(unsigned(flip_mask(0x105700, 52)) == 1070848);
  assert(unsigned(flip_mask(0x105704, 52)) == 1070852);
  assert(unsigned(flip_mask(0x105708, 52)) == 1070856);
  assert(unsigned(flip_mask(0x10570c, 52)) == 1070860);
  assert(unsigned(flip_mask(0x105710, 52)) == 1070864);
  assert(unsigned(flip_mask(0x105714, 52)) == 1070868);
  assert(unsigned(flip_mask(0x105718, 52)) == 1070872);
  assert(unsigned(flip_mask(0x10571c, 52)) == 1070876);
  assert(unsigned(flip_mask(0x105720, 52)) == 1070880);
  assert(unsigned(flip_mask(0x105724, 52)) == 1070884);
  assert(unsigned(flip_mask(0x105728, 52)) == 1070888);
  assert(unsigned(flip_mask(0x10572c, 52)) == 1070892);
  assert(unsigned(flip_mask(0x105730, 52)) == 1070896);
  assert(unsigned(flip_mask(0x105734, 52)) == 1070900);
  assert(unsigned(flip_mask(0x105738, 52)) == 1070904);
  assert(unsigned(flip_mask(0x10573c, 52)) == 1070908);
  assert(unsigned(flip_mask(0x105740, 52)) == 1070912);
  assert(unsigned(flip_mask(0x105744, 52)) == 1070916);
  assert(unsigned(flip_mask(0x105748, 52)) == 1070920);
  assert(unsigned(flip_mask(0x10574c, 52)) == 1070924);
  assert(unsigned(flip_mask(0x105750, 52)) == 1070928);
  assert(unsigned(flip_mask(0x105754, 52)) == 1070932);
  assert(unsigned(flip_mask(0x105758, 52)) == 1070936);
  assert(unsigned(flip_mask(0x10575c, 52)) == 1070940);
  assert(unsigned(flip_mask(0x105760, 52)) == 1070944);
  assert(unsigned(flip_mask(0x105764, 52)) == 1070948);
  assert(unsigned(flip_mask(0x105768, 52)) == 1070952);
  assert(unsigned(flip_mask(0x10576c, 52)) == 1070956);
  assert(unsigned(flip_mask(0x105770, 52)) == 1070960);
  assert(unsigned(flip_mask(0x105774, 52)) == 1070964);
  assert(unsigned(flip_mask(0x105778, 52)) == 1070968);
  assert(unsigned(flip_mask(0x105780, 52)) == 1070976);
  assert(unsigned(flip_mask(0x1057a8, 52)) == 1071016);
  assert(unsigned(flip_mask(0x1057b0, 52)) == 1071024);
  assert(unsigned(flip_mask(0x1057b8, 52)) == 1071032);
  assert(unsigned(flip_mask(0x1057c0, 52)) == 1071040);
  assert(unsigned(flip_mask(0x1057c8, 52)) == 1071048);
  assert(unsigned(flip_mask(0x1057d0, 52)) == 1071056);
  assert(unsigned(flip_mask(0x1057d8, 52)) == 1071064);
  assert(unsigned(flip_mask(0x1057e0, 52)) == 1071072);
  assert(unsigned(flip_mask(0x1057e8, 52)) == 1071080);
  assert(unsigned(flip_mask(0x1057f0, 52)) == 1071088);
  assert(unsigned(flip_mask(0x1057f8, 52)) == 1071096);
  assert(unsigned(flip_mask(0x105800, 52)) == 1071104);
  assert(unsigned(flip_mask(0x105808, 52)) == 1071112);
  assert(unsigned(flip_mask(0x105810, 52)) == 1071120);
  assert(unsigned(flip_mask(0x105818, 52)) == 1071128);
  assert(unsigned(flip_mask(0x105820, 52)) == 1071136);
  assert(unsigned(flip_mask(0x105828, 52)) == 1071144);
  assert(unsigned(flip_mask(0x105830, 52)) == 1071152);
  assert(unsigned(flip_mask(0x105838, 52)) == 1071160);
  assert(unsigned(flip_mask(0x105840, 52)) == 1071168);
  assert(unsigned(flip_mask(0x105848, 52)) == 1071176);
  assert(unsigned(flip_mask(0x105850, 52)) == 1071184);
  assert(unsigned(flip_mask(0x105858, 52)) == 1071192);
  assert(unsigned(flip_mask(0x10585c, 52)) == 1071196);
  assert(unsigned(flip_mask(0x105860, 52)) == 1071200);
  assert(unsigned(flip_mask(0x105864, 52)) == 1071204);
  assert(unsigned(flip_mask(0x105868, 52)) == 1071208);
  assert(unsigned(flip_mask(0x10586c, 52)) == 1071212);
  assert(unsigned(flip_mask(0x105870, 52)) == 1071216);
  assert(unsigned(flip_mask(0x105874, 52)) == 1071220);
  assert(unsigned(flip_mask(0x105878, 52)) == 1071224);
  assert(unsigned(flip_mask(0x10587c, 52)) == 1071228);
  assert(unsigned(flip_mask(0x105880, 52)) == 1071232);
  assert(unsigned(flip_mask(0x105884, 52)) == 1071236);
  assert(unsigned(flip_mask(0x105888, 52)) == 1071240);
  assert(unsigned(flip_mask(0x10588c, 52)) == 1071244);
  assert(unsigned(flip_mask(0x105890, 52)) == 1071248);
  assert(unsigned(flip_mask(0x105894, 52)) == 1071252);
  assert(unsigned(flip_mask(0x105898, 52)) == 1071256);
  assert(unsigned(flip_mask(0x10589c, 52)) == 1071260);
  assert(unsigned(flip_mask(0x1058a0, 52)) == 1071264);
  assert(unsigned(flip_mask(0x1058a4, 52)) == 1071268);
  assert(unsigned(flip_mask(0x1058a8, 52)) == 1071272);
  assert(unsigned(flip_mask(0x12000, 52)) == 73728);
  assert(unsigned(flip_mask(0x13000000, 52)) == 318767104);
  assert(unsigned(flip_mask(0x1568000, 52)) == 22446080);
  assert(unsigned(flip_mask(0x1568008, 52)) == 22446088);
  assert(unsigned(flip_mask(0x1568010, 52)) == 22446096);
  assert(unsigned(flip_mask(0x1568018, 52)) == 22446104);
  assert(unsigned(flip_mask(0x1568020, 52)) == 22446112);
  assert(unsigned(flip_mask(0x1568028, 52)) == 22446120);
  assert(unsigned(flip_mask(0x1568030, 52)) == 22446128);
  assert(unsigned(flip_mask(0x1568038, 52)) == 22446136);
  assert(unsigned(flip_mask(0x1568040, 52)) == 22446144);
  assert(unsigned(flip_mask(0x1568048, 52)) == 22446152);
  assert(unsigned(flip_mask(0x1568050, 52)) == 22446160);
  assert(unsigned(flip_mask(0x1568058, 52)) == 22446168);
  assert(unsigned(flip_mask(0x1568060, 52)) == 22446176);
  assert(unsigned(flip_mask(0x1568068, 52)) == 22446184);
  assert(unsigned(flip_mask(0x1568070, 52)) == 22446192);
  assert(unsigned(flip_mask(0x1568078, 52)) == 22446200);
  assert(unsigned(flip_mask(0x1568080, 52)) == 22446208);
  assert(unsigned(flip_mask(0x1568088, 52)) == 22446216);
  assert(unsigned(flip_mask(0x1568090, 52)) == 22446224);
  assert(unsigned(flip_mask(0x1568098, 52)) == 22446232);
  assert(unsigned(flip_mask(0x15680a0, 52)) == 22446240);
  assert(unsigned(flip_mask(0x15680a8, 52)) == 22446248);
  assert(unsigned(flip_mask(0x15680b0, 52)) == 22446256);
  assert(unsigned(flip_mask(0x15680b8, 52)) == 22446264);
  assert(unsigned(flip_mask(0x15680c0, 52)) == 22446272);
  assert(unsigned(flip_mask(0x15680c8, 52)) == 22446280);
  assert(unsigned(flip_mask(0x15680d0, 52)) == 22446288);
  assert(unsigned(flip_mask(0x15680d8, 52)) == 22446296);
  assert(unsigned(flip_mask(0x15680e0, 52)) == 22446304);
  assert(unsigned(flip_mask(0x15680e8, 52)) == 22446312);
  assert(unsigned(flip_mask(0x15680f0, 52)) == 22446320);
  assert(unsigned(flip_mask(0x15680f8, 52)) == 22446328);
  assert(unsigned(flip_mask(0x1568100, 52)) == 22446336);
  assert(unsigned(flip_mask(0x1568108, 52)) == 22446344);
  assert(unsigned(flip_mask(0x1568110, 52)) == 22446352);
  assert(unsigned(flip_mask(0x1568118, 52)) == 22446360);
  assert(unsigned(flip_mask(0x1568120, 52)) == 22446368);
  assert(unsigned(flip_mask(0x1568128, 52)) == 22446376);
  assert(unsigned(flip_mask(0x1568130, 52)) == 22446384);
  assert(unsigned(flip_mask(0x1568138, 52)) == 22446392);
  assert(unsigned(flip_mask(0x1568140, 52)) == 22446400);
  assert(unsigned(flip_mask(0x1568148, 52)) == 22446408);
  assert(unsigned(flip_mask(0x1568150, 52)) == 22446416);
  assert(unsigned(flip_mask(0x1568158, 52)) == 22446424);
  assert(unsigned(flip_mask(0x1568160, 52)) == 22446432);
  assert(unsigned(flip_mask(0x1568168, 52)) == 22446440);
  assert(unsigned(flip_mask(0x1568170, 52)) == 22446448);
  assert(unsigned(flip_mask(0x1568178, 52)) == 22446456);
  assert(unsigned(flip_mask(0x1568180, 52)) == 22446464);
  assert(unsigned(flip_mask(0x1568188, 52)) == 22446472);
  assert(unsigned(flip_mask(0x1568190, 52)) == 22446480);
  assert(unsigned(flip_mask(0x1568198, 52)) == 22446488);
  assert(unsigned(flip_mask(0x15681a0, 52)) == 22446496);
  assert(unsigned(flip_mask(0x15681a8, 52)) == 22446504);
  assert(unsigned(flip_mask(0x15681b0, 52)) == 22446512);
  assert(unsigned(flip_mask(0x15681b8, 52)) == 22446520);
  assert(unsigned(flip_mask(0x15681c0, 52)) == 22446528);
  assert(unsigned(flip_mask(0x15681c8, 52)) == 22446536);
  assert(unsigned(flip_mask(0x15681d0, 52)) == 22446544);
  assert(unsigned(flip_mask(0x15681d8, 52)) == 22446552);
  assert(unsigned(flip_mask(0x15681e0, 52)) == 22446560);
  assert(unsigned(flip_mask(0x15681e8, 52)) == 22446568);
  assert(unsigned(flip_mask(0x15681f0, 52)) == 22446576);
  assert(unsigned(flip_mask(0x15681f8, 52)) == 22446584);
  assert(unsigned(flip_mask(0x1568200, 52)) == 22446592);
  assert(unsigned(flip_mask(0x1568208, 52)) == 22446600);
  assert(unsigned(flip_mask(0x1568210, 52)) == 22446608);
  assert(unsigned(flip_mask(0x1568218, 52)) == 22446616);
  assert(unsigned(flip_mask(0x1568220, 52)) == 22446624);
  assert(unsigned(flip_mask(0x1568228, 52)) == 22446632);
  assert(unsigned(flip_mask(0x1568230, 52)) == 22446640);
  assert(unsigned(flip_mask(0x1568238, 52)) == 22446648);
  assert(unsigned(flip_mask(0x1568240, 52)) == 22446656);
  assert(unsigned(flip_mask(0x1568248, 52)) == 22446664);
  assert(unsigned(flip_mask(0x1568250, 52)) == 22446672);
  assert(unsigned(flip_mask(0x1568258, 52)) == 22446680);
  assert(unsigned(flip_mask(0x1568260, 52)) == 22446688);
  assert(unsigned(flip_mask(0x1568268, 52)) == 22446696);
  assert(unsigned(flip_mask(0x1568270, 52)) == 22446704);
  assert(unsigned(flip_mask(0x1568278, 52)) == 22446712);
  assert(unsigned(flip_mask(0x1568280, 52)) == 22446720);
  assert(unsigned(flip_mask(0x1568288, 52)) == 22446728);
  assert(unsigned(flip_mask(0x1568290, 52)) == 22446736);
  assert(unsigned(flip_mask(0x1568298, 52)) == 22446744);
  assert(unsigned(flip_mask(0x15682a0, 52)) == 22446752);
  assert(unsigned(flip_mask(0x15682a8, 52)) == 22446760);
  assert(unsigned(flip_mask(0x15682b0, 52)) == 22446768);
  assert(unsigned(flip_mask(0x15682b8, 52)) == 22446776);
  assert(unsigned(flip_mask(0x15682c0, 52)) == 22446784);
  assert(unsigned(flip_mask(0x15682c8, 52)) == 22446792);
  assert(unsigned(flip_mask(0x15682d0, 52)) == 22446800);
  assert(unsigned(flip_mask(0x15682d8, 52)) == 22446808);
  assert(unsigned(flip_mask(0x15682e0, 52)) == 22446816);
  assert(unsigned(flip_mask(0x15682e8, 52)) == 22446824);
  assert(unsigned(flip_mask(0x15682f0, 52)) == 22446832);
  assert(unsigned(flip_mask(0x15682f8, 52)) == 22446840);
  assert(unsigned(flip_mask(0x1568300, 52)) == 22446848);
  assert(unsigned(flip_mask(0x1568308, 52)) == 22446856);
  assert(unsigned(flip_mask(0x1568310, 52)) == 22446864);
  assert(unsigned(flip_mask(0x1568318, 52)) == 22446872);
  assert(unsigned(flip_mask(0x1568320, 52)) == 22446880);
  assert(unsigned(flip_mask(0x1568328, 52)) == 22446888);
  assert(unsigned(flip_mask(0x1568330, 52)) == 22446896);
  assert(unsigned(flip_mask(0x1568338, 52)) == 22446904);
  assert(unsigned(flip_mask(0x1568340, 52)) == 22446912);
  assert(unsigned(flip_mask(0x1568348, 52)) == 22446920);
  assert(unsigned(flip_mask(0x1568350, 52)) == 22446928);
  assert(unsigned(flip_mask(0x1568358, 52)) == 22446936);
  assert(unsigned(flip_mask(0x1568360, 52)) == 22446944);
  assert(unsigned(flip_mask(0x1568368, 52)) == 22446952);
  assert(unsigned(flip_mask(0x1568370, 52)) == 22446960);
}