-
Notifications
You must be signed in to change notification settings - Fork 147
/
p384_32.c
10522 lines (10469 loc) · 484 KB
/
p384_32.c
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
/* Autogenerated: 'src/ExtractionOCaml/bedrock2_word_by_word_montgomery' --lang bedrock2 --static --no-wide-int --widen-carry --widen-bytes --split-multiret --no-select --no-field-element-typedefs p384 32 '2^384 - 2^128 - 2^96 + 2^32 - 1' mul square add sub opp from_montgomery to_montgomery nonzero selectznz to_bytes from_bytes one msat divstep divstep_precomp */
/* curve description: p384 */
/* machine_wordsize = 32 (from "32") */
/* requested operations: mul, square, add, sub, opp, from_montgomery, to_montgomery, nonzero, selectznz, to_bytes, from_bytes, one, msat, divstep, divstep_precomp */
/* m = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff (from "2^384 - 2^128 - 2^96 + 2^32 - 1") */
/* */
/* NOTE: In addition to the bounds specified above each function, all */
/* functions synthesized for this Montgomery arithmetic require the */
/* input to be strictly less than the prime modulus (m), and also */
/* require the input to be in the unique saturated representation. */
/* All functions also ensure that these two properties are true of */
/* return values. */
/* */
/* Computed values: */
/* eval z = z[0] + (z[1] << 32) + (z[2] << 64) + (z[3] << 96) + (z[4] << 128) + (z[5] << 160) + (z[6] << 192) + (z[7] << 224) + (z[8] << 256) + (z[9] << 0x120) + (z[10] << 0x140) + (z[11] << 0x160) */
/* bytes_eval z = z[0] + (z[1] << 8) + (z[2] << 16) + (z[3] << 24) + (z[4] << 32) + (z[5] << 40) + (z[6] << 48) + (z[7] << 56) + (z[8] << 64) + (z[9] << 72) + (z[10] << 80) + (z[11] << 88) + (z[12] << 96) + (z[13] << 104) + (z[14] << 112) + (z[15] << 120) + (z[16] << 128) + (z[17] << 136) + (z[18] << 144) + (z[19] << 152) + (z[20] << 160) + (z[21] << 168) + (z[22] << 176) + (z[23] << 184) + (z[24] << 192) + (z[25] << 200) + (z[26] << 208) + (z[27] << 216) + (z[28] << 224) + (z[29] << 232) + (z[30] << 240) + (z[31] << 248) + (z[32] << 256) + (z[33] << 0x108) + (z[34] << 0x110) + (z[35] << 0x118) + (z[36] << 0x120) + (z[37] << 0x128) + (z[38] << 0x130) + (z[39] << 0x138) + (z[40] << 0x140) + (z[41] << 0x148) + (z[42] << 0x150) + (z[43] << 0x158) + (z[44] << 0x160) + (z[45] << 0x168) + (z[46] << 0x170) + (z[47] << 0x178) */
/* twos_complement_eval z = let x1 := z[0] + (z[1] << 32) + (z[2] << 64) + (z[3] << 96) + (z[4] << 128) + (z[5] << 160) + (z[6] << 192) + (z[7] << 224) + (z[8] << 256) + (z[9] << 0x120) + (z[10] << 0x140) + (z[11] << 0x160) in */
/* if x1 & (2^384-1) < 2^383 then x1 & (2^384-1) else (x1 & (2^384-1)) - 2^384 */
#include <stdint.h>
#include <string.h>
#include <assert.h>
static __attribute__((constructor)) void _br2_preconditions(void) {
static_assert(~(intptr_t)0 == -(intptr_t)1, "two's complement");
assert(((void)"two's complement", ~(intptr_t)0 == -(intptr_t)1));
uintptr_t u = 1;
assert(((void)"little-endian", 1 == *(unsigned char *)&u));
intptr_t i = 1;
assert(((void)"little-endian", 1 == *(unsigned char *)&i));
}
// We use memcpy to work around -fstrict-aliasing.
// A plain memcpy is enough on clang 10, but not on gcc 10, which fails
// to infer the bounds on an integer loaded by memcpy.
// Adding a range mask after memcpy in turn makes slower code in clang.
// Loading individual bytes, shifting them together, and or-ing is fast
// on clang and sometimes on GCC, but other times GCC inlines individual
// byte operations without reconstructing wider accesses.
// The little-endian idiom below seems fast in gcc 9+ and clang 10.
static inline __attribute__((always_inline, unused))
uintptr_t _br2_load(uintptr_t a, uintptr_t sz) {
switch (sz) {
case 1: { uint8_t r = 0; memcpy(&r, (void*)a, 1); return r; }
case 2: { uint16_t r = 0; memcpy(&r, (void*)a, 2); return r; }
case 4: { uint32_t r = 0; memcpy(&r, (void*)a, 4); return r; }
case 8: { uint64_t r = 0; memcpy(&r, (void*)a, 8); return r; }
default: __builtin_unreachable();
}
}
static inline __attribute__((always_inline, unused))
void _br2_store(uintptr_t a, uintptr_t v, uintptr_t sz) {
memcpy((void*)a, &v, sz);
}
static inline __attribute__((always_inline, unused))
uintptr_t _br2_mulhuu(uintptr_t a, uintptr_t b) {
#if (UINTPTR_MAX == (UINTMAX_C(1)<<31) - 1 + (UINTMAX_C(1)<<31))
return ((uint64_t)a * b) >> 32;
#elif (UINTPTR_MAX == (UINTMAX_C(1)<<63) - 1 + (UINTMAX_C(1)<<63))
return ((unsigned __int128)a * b) >> 64;
#else
#error "32-bit or 64-bit uintptr_t required"
#endif
}
static inline __attribute__((always_inline, unused))
uintptr_t _br2_divu(uintptr_t a, uintptr_t b) {
if (!b) return -1;
return a/b;
}
static inline __attribute__((always_inline, unused))
uintptr_t _br2_remu(uintptr_t a, uintptr_t b) {
if (!b) return a;
return a%b;
}
static inline __attribute__((always_inline, unused))
uintptr_t _br2_shamt(uintptr_t a) {
return a&(sizeof(uintptr_t)*8-1);
}
/*
* Input Bounds:
* in0: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]
* in1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]
* Output Bounds:
* out0: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]
*/
static
void internal_fiat_p384_mul(uintptr_t out0, uintptr_t in0, uintptr_t in1) {
uintptr_t x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x0, x35, x56, x59, x61, x57, x62, x54, x63, x65, x66, x55, x67, x52, x68, x70, x71, x53, x72, x50, x73, x75, x76, x51, x77, x48, x78, x80, x81, x49, x82, x46, x83, x85, x86, x47, x87, x44, x88, x90, x91, x45, x92, x42, x93, x95, x96, x43, x97, x40, x98, x100, x101, x41, x102, x38, x103, x105, x106, x39, x107, x36, x108, x110, x111, x37, x127, x130, x134, x128, x135, x125, x136, x138, x139, x126, x140, x123, x141, x143, x144, x124, x145, x121, x146, x148, x149, x122, x150, x119, x151, x153, x154, x120, x155, x117, x156, x158, x159, x118, x160, x115, x161, x163, x164, x116, x165, x113, x166, x168, x169, x114, x131, x171, x58, x172, x60, x173, x132, x174, x176, x177, x64, x179, x69, x180, x129, x181, x183, x184, x74, x185, x133, x186, x188, x189, x79, x190, x137, x191, x193, x194, x84, x195, x142, x196, x198, x199, x89, x200, x147, x201, x203, x204, x94, x205, x152, x206, x208, x209, x99, x210, x157, x211, x213, x214, x104, x215, x162, x216, x218, x219, x109, x220, x167, x221, x223, x224, x112, x225, x170, x226, x228, x24, x250, x253, x255, x251, x256, x248, x257, x259, x260, x249, x261, x246, x262, x264, x265, x247, x266, x244, x267, x269, x270, x245, x271, x242, x272, x274, x275, x243, x276, x240, x277, x279, x280, x241, x281, x238, x282, x284, x285, x239, x286, x236, x287, x289, x290, x237, x291, x234, x292, x294, x295, x235, x296, x232, x297, x299, x300, x233, x301, x230, x302, x304, x305, x231, x252, x175, x308, x178, x309, x254, x310, x312, x313, x182, x314, x258, x315, x317, x318, x187, x319, x263, x320, x322, x323, x192, x324, x268, x325, x327, x328, x197, x329, x273, x330, x332, x333, x202, x334, x278, x335, x337, x338, x207, x339, x283, x340, x342, x343, x212, x344, x288, x345, x347, x348, x217, x349, x293, x350, x352, x353, x222, x354, x298, x355, x357, x358, x227, x359, x303, x360, x362, x363, x229, x364, x306, x365, x367, x383, x386, x390, x384, x391, x381, x392, x394, x395, x382, x396, x379, x397, x399, x400, x380, x401, x377, x402, x404, x405, x378, x406, x375, x407, x409, x410, x376, x411, x373, x412, x414, x415, x374, x416, x371, x417, x419, x420, x372, x421, x369, x422, x424, x425, x370, x387, x427, x307, x428, x311, x429, x388, x430, x432, x433, x316, x435, x321, x436, x385, x437, x439, x440, x326, x441, x389, x442, x444, x445, x331, x446, x393, x447, x449, x450, x336, x451, x398, x452, x454, x455, x341, x456, x403, x457, x459, x460, x346, x461, x408, x462, x464, x465, x351, x466, x413, x467, x469, x470, x356, x471, x418, x472, x474, x475, x361, x476, x423, x477, x479, x480, x366, x481, x426, x482, x484, x485, x368, x25, x507, x510, x512, x508, x513, x505, x514, x516, x517, x506, x518, x503, x519, x521, x522, x504, x523, x501, x524, x526, x527, x502, x528, x499, x529, x531, x532, x500, x533, x497, x534, x536, x537, x498, x538, x495, x539, x541, x542, x496, x543, x493, x544, x546, x547, x494, x548, x491, x549, x551, x552, x492, x553, x489, x554, x556, x557, x490, x558, x487, x559, x561, x562, x488, x509, x431, x565, x434, x566, x511, x567, x569, x570, x438, x571, x515, x572, x574, x575, x443, x576, x520, x577, x579, x580, x448, x581, x525, x582, x584, x585, x453, x586, x530, x587, x589, x590, x458, x591, x535, x592, x594, x595, x463, x596, x540, x597, x599, x600, x468, x601, x545, x602, x604, x605, x473, x606, x550, x607, x609, x610, x478, x611, x555, x612, x614, x615, x483, x616, x560, x617, x619, x620, x486, x621, x563, x622, x624, x640, x643, x647, x641, x648, x638, x649, x651, x652, x639, x653, x636, x654, x656, x657, x637, x658, x634, x659, x661, x662, x635, x663, x632, x664, x666, x667, x633, x668, x630, x669, x671, x672, x631, x673, x628, x674, x676, x677, x629, x678, x626, x679, x681, x682, x627, x644, x684, x564, x685, x568, x686, x645, x687, x689, x690, x573, x692, x578, x693, x642, x694, x696, x697, x583, x698, x646, x699, x701, x702, x588, x703, x650, x704, x706, x707, x593, x708, x655, x709, x711, x712, x598, x713, x660, x714, x716, x717, x603, x718, x665, x719, x721, x722, x608, x723, x670, x724, x726, x727, x613, x728, x675, x729, x731, x732, x618, x733, x680, x734, x736, x737, x623, x738, x683, x739, x741, x742, x625, x26, x764, x767, x769, x765, x770, x762, x771, x773, x774, x763, x775, x760, x776, x778, x779, x761, x780, x758, x781, x783, x784, x759, x785, x756, x786, x788, x789, x757, x790, x754, x791, x793, x794, x755, x795, x752, x796, x798, x799, x753, x800, x750, x801, x803, x804, x751, x805, x748, x806, x808, x809, x749, x810, x746, x811, x813, x814, x747, x815, x744, x816, x818, x819, x745, x766, x688, x822, x691, x823, x768, x824, x826, x827, x695, x828, x772, x829, x831, x832, x700, x833, x777, x834, x836, x837, x705, x838, x782, x839, x841, x842, x710, x843, x787, x844, x846, x847, x715, x848, x792, x849, x851, x852, x720, x853, x797, x854, x856, x857, x725, x858, x802, x859, x861, x862, x730, x863, x807, x864, x866, x867, x735, x868, x812, x869, x871, x872, x740, x873, x817, x874, x876, x877, x743, x878, x820, x879, x881, x897, x900, x904, x898, x905, x895, x906, x908, x909, x896, x910, x893, x911, x913, x914, x894, x915, x891, x916, x918, x919, x892, x920, x889, x921, x923, x924, x890, x925, x887, x926, x928, x929, x888, x930, x885, x931, x933, x934, x886, x935, x883, x936, x938, x939, x884, x901, x941, x821, x942, x825, x943, x902, x944, x946, x947, x830, x949, x835, x950, x899, x951, x953, x954, x840, x955, x903, x956, x958, x959, x845, x960, x907, x961, x963, x964, x850, x965, x912, x966, x968, x969, x855, x970, x917, x971, x973, x974, x860, x975, x922, x976, x978, x979, x865, x980, x927, x981, x983, x984, x870, x985, x932, x986, x988, x989, x875, x990, x937, x991, x993, x994, x880, x995, x940, x996, x998, x999, x882, x27, x1021, x1024, x1026, x1022, x1027, x1019, x1028, x1030, x1031, x1020, x1032, x1017, x1033, x1035, x1036, x1018, x1037, x1015, x1038, x1040, x1041, x1016, x1042, x1013, x1043, x1045, x1046, x1014, x1047, x1011, x1048, x1050, x1051, x1012, x1052, x1009, x1053, x1055, x1056, x1010, x1057, x1007, x1058, x1060, x1061, x1008, x1062, x1005, x1063, x1065, x1066, x1006, x1067, x1003, x1068, x1070, x1071, x1004, x1072, x1001, x1073, x1075, x1076, x1002, x1023, x945, x1079, x948, x1080, x1025, x1081, x1083, x1084, x952, x1085, x1029, x1086, x1088, x1089, x957, x1090, x1034, x1091, x1093, x1094, x962, x1095, x1039, x1096, x1098, x1099, x967, x1100, x1044, x1101, x1103, x1104, x972, x1105, x1049, x1106, x1108, x1109, x977, x1110, x1054, x1111, x1113, x1114, x982, x1115, x1059, x1116, x1118, x1119, x987, x1120, x1064, x1121, x1123, x1124, x992, x1125, x1069, x1126, x1128, x1129, x997, x1130, x1074, x1131, x1133, x1134, x1000, x1135, x1077, x1136, x1138, x1154, x1157, x1161, x1155, x1162, x1152, x1163, x1165, x1166, x1153, x1167, x1150, x1168, x1170, x1171, x1151, x1172, x1148, x1173, x1175, x1176, x1149, x1177, x1146, x1178, x1180, x1181, x1147, x1182, x1144, x1183, x1185, x1186, x1145, x1187, x1142, x1188, x1190, x1191, x1143, x1192, x1140, x1193, x1195, x1196, x1141, x1158, x1198, x1078, x1199, x1082, x1200, x1159, x1201, x1203, x1204, x1087, x1206, x1092, x1207, x1156, x1208, x1210, x1211, x1097, x1212, x1160, x1213, x1215, x1216, x1102, x1217, x1164, x1218, x1220, x1221, x1107, x1222, x1169, x1223, x1225, x1226, x1112, x1227, x1174, x1228, x1230, x1231, x1117, x1232, x1179, x1233, x1235, x1236, x1122, x1237, x1184, x1238, x1240, x1241, x1127, x1242, x1189, x1243, x1245, x1246, x1132, x1247, x1194, x1248, x1250, x1251, x1137, x1252, x1197, x1253, x1255, x1256, x1139, x28, x1278, x1281, x1283, x1279, x1284, x1276, x1285, x1287, x1288, x1277, x1289, x1274, x1290, x1292, x1293, x1275, x1294, x1272, x1295, x1297, x1298, x1273, x1299, x1270, x1300, x1302, x1303, x1271, x1304, x1268, x1305, x1307, x1308, x1269, x1309, x1266, x1310, x1312, x1313, x1267, x1314, x1264, x1315, x1317, x1318, x1265, x1319, x1262, x1320, x1322, x1323, x1263, x1324, x1260, x1325, x1327, x1328, x1261, x1329, x1258, x1330, x1332, x1333, x1259, x1280, x1202, x1336, x1205, x1337, x1282, x1338, x1340, x1341, x1209, x1342, x1286, x1343, x1345, x1346, x1214, x1347, x1291, x1348, x1350, x1351, x1219, x1352, x1296, x1353, x1355, x1356, x1224, x1357, x1301, x1358, x1360, x1361, x1229, x1362, x1306, x1363, x1365, x1366, x1234, x1367, x1311, x1368, x1370, x1371, x1239, x1372, x1316, x1373, x1375, x1376, x1244, x1377, x1321, x1378, x1380, x1381, x1249, x1382, x1326, x1383, x1385, x1386, x1254, x1387, x1331, x1388, x1390, x1391, x1257, x1392, x1334, x1393, x1395, x1411, x1414, x1418, x1412, x1419, x1409, x1420, x1422, x1423, x1410, x1424, x1407, x1425, x1427, x1428, x1408, x1429, x1405, x1430, x1432, x1433, x1406, x1434, x1403, x1435, x1437, x1438, x1404, x1439, x1401, x1440, x1442, x1443, x1402, x1444, x1399, x1445, x1447, x1448, x1400, x1449, x1397, x1450, x1452, x1453, x1398, x1415, x1455, x1335, x1456, x1339, x1457, x1416, x1458, x1460, x1461, x1344, x1463, x1349, x1464, x1413, x1465, x1467, x1468, x1354, x1469, x1417, x1470, x1472, x1473, x1359, x1474, x1421, x1475, x1477, x1478, x1364, x1479, x1426, x1480, x1482, x1483, x1369, x1484, x1431, x1485, x1487, x1488, x1374, x1489, x1436, x1490, x1492, x1493, x1379, x1494, x1441, x1495, x1497, x1498, x1384, x1499, x1446, x1500, x1502, x1503, x1389, x1504, x1451, x1505, x1507, x1508, x1394, x1509, x1454, x1510, x1512, x1513, x1396, x29, x1535, x1538, x1540, x1536, x1541, x1533, x1542, x1544, x1545, x1534, x1546, x1531, x1547, x1549, x1550, x1532, x1551, x1529, x1552, x1554, x1555, x1530, x1556, x1527, x1557, x1559, x1560, x1528, x1561, x1525, x1562, x1564, x1565, x1526, x1566, x1523, x1567, x1569, x1570, x1524, x1571, x1521, x1572, x1574, x1575, x1522, x1576, x1519, x1577, x1579, x1580, x1520, x1581, x1517, x1582, x1584, x1585, x1518, x1586, x1515, x1587, x1589, x1590, x1516, x1537, x1459, x1593, x1462, x1594, x1539, x1595, x1597, x1598, x1466, x1599, x1543, x1600, x1602, x1603, x1471, x1604, x1548, x1605, x1607, x1608, x1476, x1609, x1553, x1610, x1612, x1613, x1481, x1614, x1558, x1615, x1617, x1618, x1486, x1619, x1563, x1620, x1622, x1623, x1491, x1624, x1568, x1625, x1627, x1628, x1496, x1629, x1573, x1630, x1632, x1633, x1501, x1634, x1578, x1635, x1637, x1638, x1506, x1639, x1583, x1640, x1642, x1643, x1511, x1644, x1588, x1645, x1647, x1648, x1514, x1649, x1591, x1650, x1652, x1668, x1671, x1675, x1669, x1676, x1666, x1677, x1679, x1680, x1667, x1681, x1664, x1682, x1684, x1685, x1665, x1686, x1662, x1687, x1689, x1690, x1663, x1691, x1660, x1692, x1694, x1695, x1661, x1696, x1658, x1697, x1699, x1700, x1659, x1701, x1656, x1702, x1704, x1705, x1657, x1706, x1654, x1707, x1709, x1710, x1655, x1672, x1712, x1592, x1713, x1596, x1714, x1673, x1715, x1717, x1718, x1601, x1720, x1606, x1721, x1670, x1722, x1724, x1725, x1611, x1726, x1674, x1727, x1729, x1730, x1616, x1731, x1678, x1732, x1734, x1735, x1621, x1736, x1683, x1737, x1739, x1740, x1626, x1741, x1688, x1742, x1744, x1745, x1631, x1746, x1693, x1747, x1749, x1750, x1636, x1751, x1698, x1752, x1754, x1755, x1641, x1756, x1703, x1757, x1759, x1760, x1646, x1761, x1708, x1762, x1764, x1765, x1651, x1766, x1711, x1767, x1769, x1770, x1653, x30, x1792, x1795, x1797, x1793, x1798, x1790, x1799, x1801, x1802, x1791, x1803, x1788, x1804, x1806, x1807, x1789, x1808, x1786, x1809, x1811, x1812, x1787, x1813, x1784, x1814, x1816, x1817, x1785, x1818, x1782, x1819, x1821, x1822, x1783, x1823, x1780, x1824, x1826, x1827, x1781, x1828, x1778, x1829, x1831, x1832, x1779, x1833, x1776, x1834, x1836, x1837, x1777, x1838, x1774, x1839, x1841, x1842, x1775, x1843, x1772, x1844, x1846, x1847, x1773, x1794, x1716, x1850, x1719, x1851, x1796, x1852, x1854, x1855, x1723, x1856, x1800, x1857, x1859, x1860, x1728, x1861, x1805, x1862, x1864, x1865, x1733, x1866, x1810, x1867, x1869, x1870, x1738, x1871, x1815, x1872, x1874, x1875, x1743, x1876, x1820, x1877, x1879, x1880, x1748, x1881, x1825, x1882, x1884, x1885, x1753, x1886, x1830, x1887, x1889, x1890, x1758, x1891, x1835, x1892, x1894, x1895, x1763, x1896, x1840, x1897, x1899, x1900, x1768, x1901, x1845, x1902, x1904, x1905, x1771, x1906, x1848, x1907, x1909, x1925, x1928, x1932, x1926, x1933, x1923, x1934, x1936, x1937, x1924, x1938, x1921, x1939, x1941, x1942, x1922, x1943, x1919, x1944, x1946, x1947, x1920, x1948, x1917, x1949, x1951, x1952, x1918, x1953, x1915, x1954, x1956, x1957, x1916, x1958, x1913, x1959, x1961, x1962, x1914, x1963, x1911, x1964, x1966, x1967, x1912, x1929, x1969, x1849, x1970, x1853, x1971, x1930, x1972, x1974, x1975, x1858, x1977, x1863, x1978, x1927, x1979, x1981, x1982, x1868, x1983, x1931, x1984, x1986, x1987, x1873, x1988, x1935, x1989, x1991, x1992, x1878, x1993, x1940, x1994, x1996, x1997, x1883, x1998, x1945, x1999, x2001, x2002, x1888, x2003, x1950, x2004, x2006, x2007, x1893, x2008, x1955, x2009, x2011, x2012, x1898, x2013, x1960, x2014, x2016, x2017, x1903, x2018, x1965, x2019, x2021, x2022, x1908, x2023, x1968, x2024, x2026, x2027, x1910, x31, x2049, x2052, x2054, x2050, x2055, x2047, x2056, x2058, x2059, x2048, x2060, x2045, x2061, x2063, x2064, x2046, x2065, x2043, x2066, x2068, x2069, x2044, x2070, x2041, x2071, x2073, x2074, x2042, x2075, x2039, x2076, x2078, x2079, x2040, x2080, x2037, x2081, x2083, x2084, x2038, x2085, x2035, x2086, x2088, x2089, x2036, x2090, x2033, x2091, x2093, x2094, x2034, x2095, x2031, x2096, x2098, x2099, x2032, x2100, x2029, x2101, x2103, x2104, x2030, x2051, x1973, x2107, x1976, x2108, x2053, x2109, x2111, x2112, x1980, x2113, x2057, x2114, x2116, x2117, x1985, x2118, x2062, x2119, x2121, x2122, x1990, x2123, x2067, x2124, x2126, x2127, x1995, x2128, x2072, x2129, x2131, x2132, x2000, x2133, x2077, x2134, x2136, x2137, x2005, x2138, x2082, x2139, x2141, x2142, x2010, x2143, x2087, x2144, x2146, x2147, x2015, x2148, x2092, x2149, x2151, x2152, x2020, x2153, x2097, x2154, x2156, x2157, x2025, x2158, x2102, x2159, x2161, x2162, x2028, x2163, x2105, x2164, x2166, x2182, x2185, x2189, x2183, x2190, x2180, x2191, x2193, x2194, x2181, x2195, x2178, x2196, x2198, x2199, x2179, x2200, x2176, x2201, x2203, x2204, x2177, x2205, x2174, x2206, x2208, x2209, x2175, x2210, x2172, x2211, x2213, x2214, x2173, x2215, x2170, x2216, x2218, x2219, x2171, x2220, x2168, x2221, x2223, x2224, x2169, x2186, x2226, x2106, x2227, x2110, x2228, x2187, x2229, x2231, x2232, x2115, x2234, x2120, x2235, x2184, x2236, x2238, x2239, x2125, x2240, x2188, x2241, x2243, x2244, x2130, x2245, x2192, x2246, x2248, x2249, x2135, x2250, x2197, x2251, x2253, x2254, x2140, x2255, x2202, x2256, x2258, x2259, x2145, x2260, x2207, x2261, x2263, x2264, x2150, x2265, x2212, x2266, x2268, x2269, x2155, x2270, x2217, x2271, x2273, x2274, x2160, x2275, x2222, x2276, x2278, x2279, x2165, x2280, x2225, x2281, x2283, x2284, x2167, x32, x2306, x2309, x2311, x2307, x2312, x2304, x2313, x2315, x2316, x2305, x2317, x2302, x2318, x2320, x2321, x2303, x2322, x2300, x2323, x2325, x2326, x2301, x2327, x2298, x2328, x2330, x2331, x2299, x2332, x2296, x2333, x2335, x2336, x2297, x2337, x2294, x2338, x2340, x2341, x2295, x2342, x2292, x2343, x2345, x2346, x2293, x2347, x2290, x2348, x2350, x2351, x2291, x2352, x2288, x2353, x2355, x2356, x2289, x2357, x2286, x2358, x2360, x2361, x2287, x2308, x2230, x2364, x2233, x2365, x2310, x2366, x2368, x2369, x2237, x2370, x2314, x2371, x2373, x2374, x2242, x2375, x2319, x2376, x2378, x2379, x2247, x2380, x2324, x2381, x2383, x2384, x2252, x2385, x2329, x2386, x2388, x2389, x2257, x2390, x2334, x2391, x2393, x2394, x2262, x2395, x2339, x2396, x2398, x2399, x2267, x2400, x2344, x2401, x2403, x2404, x2272, x2405, x2349, x2406, x2408, x2409, x2277, x2410, x2354, x2411, x2413, x2414, x2282, x2415, x2359, x2416, x2418, x2419, x2285, x2420, x2362, x2421, x2423, x2439, x2442, x2446, x2440, x2447, x2437, x2448, x2450, x2451, x2438, x2452, x2435, x2453, x2455, x2456, x2436, x2457, x2433, x2458, x2460, x2461, x2434, x2462, x2431, x2463, x2465, x2466, x2432, x2467, x2429, x2468, x2470, x2471, x2430, x2472, x2427, x2473, x2475, x2476, x2428, x2477, x2425, x2478, x2480, x2481, x2426, x2443, x2483, x2363, x2484, x2367, x2485, x2444, x2486, x2488, x2489, x2372, x2491, x2377, x2492, x2441, x2493, x2495, x2496, x2382, x2497, x2445, x2498, x2500, x2501, x2387, x2502, x2449, x2503, x2505, x2506, x2392, x2507, x2454, x2508, x2510, x2511, x2397, x2512, x2459, x2513, x2515, x2516, x2402, x2517, x2464, x2518, x2520, x2521, x2407, x2522, x2469, x2523, x2525, x2526, x2412, x2527, x2474, x2528, x2530, x2531, x2417, x2532, x2479, x2533, x2535, x2536, x2422, x2537, x2482, x2538, x2540, x2541, x2424, x33, x2563, x2566, x2568, x2564, x2569, x2561, x2570, x2572, x2573, x2562, x2574, x2559, x2575, x2577, x2578, x2560, x2579, x2557, x2580, x2582, x2583, x2558, x2584, x2555, x2585, x2587, x2588, x2556, x2589, x2553, x2590, x2592, x2593, x2554, x2594, x2551, x2595, x2597, x2598, x2552, x2599, x2549, x2600, x2602, x2603, x2550, x2604, x2547, x2605, x2607, x2608, x2548, x2609, x2545, x2610, x2612, x2613, x2546, x2614, x2543, x2615, x2617, x2618, x2544, x2565, x2487, x2621, x2490, x2622, x2567, x2623, x2625, x2626, x2494, x2627, x2571, x2628, x2630, x2631, x2499, x2632, x2576, x2633, x2635, x2636, x2504, x2637, x2581, x2638, x2640, x2641, x2509, x2642, x2586, x2643, x2645, x2646, x2514, x2647, x2591, x2648, x2650, x2651, x2519, x2652, x2596, x2653, x2655, x2656, x2524, x2657, x2601, x2658, x2660, x2661, x2529, x2662, x2606, x2663, x2665, x2666, x2534, x2667, x2611, x2668, x2670, x2671, x2539, x2672, x2616, x2673, x2675, x2676, x2542, x2677, x2619, x2678, x2680, x2696, x2699, x2703, x2697, x2704, x2694, x2705, x2707, x2708, x2695, x2709, x2692, x2710, x2712, x2713, x2693, x2714, x2690, x2715, x2717, x2718, x2691, x2719, x2688, x2720, x2722, x2723, x2689, x2724, x2686, x2725, x2727, x2728, x2687, x2729, x2684, x2730, x2732, x2733, x2685, x2734, x2682, x2735, x2737, x2738, x2683, x2700, x2740, x2620, x2741, x2624, x2742, x2701, x2743, x2745, x2746, x2629, x2748, x2634, x2749, x2698, x2750, x2752, x2753, x2639, x2754, x2702, x2755, x2757, x2758, x2644, x2759, x2706, x2760, x2762, x2763, x2649, x2764, x2711, x2765, x2767, x2768, x2654, x2769, x2716, x2770, x2772, x2773, x2659, x2774, x2721, x2775, x2777, x2778, x2664, x2779, x2726, x2780, x2782, x2783, x2669, x2784, x2731, x2785, x2787, x2788, x2674, x2789, x2736, x2790, x2792, x2793, x2679, x2794, x2739, x2795, x2797, x2798, x2681, x23, x22, x21, x20, x19, x18, x17, x16, x15, x14, x13, x34, x12, x2820, x2823, x2825, x2821, x2826, x2818, x2827, x2829, x2830, x2819, x2831, x2816, x2832, x2834, x2835, x2817, x2836, x2814, x2837, x2839, x2840, x2815, x2841, x2812, x2842, x2844, x2845, x2813, x2846, x2810, x2847, x2849, x2850, x2811, x2851, x2808, x2852, x2854, x2855, x2809, x2856, x2806, x2857, x2859, x2860, x2807, x2861, x2804, x2862, x2864, x2865, x2805, x2866, x2802, x2867, x2869, x2870, x2803, x2871, x2800, x2872, x2874, x2875, x2801, x2822, x2744, x2878, x2747, x2879, x2824, x2880, x2882, x2883, x2751, x2884, x2828, x2885, x2887, x2888, x2756, x2889, x2833, x2890, x2892, x2893, x2761, x2894, x2838, x2895, x2897, x2898, x2766, x2899, x2843, x2900, x2902, x2903, x2771, x2904, x2848, x2905, x2907, x2908, x2776, x2909, x2853, x2910, x2912, x2913, x2781, x2914, x2858, x2915, x2917, x2918, x2786, x2919, x2863, x2920, x2922, x2923, x2791, x2924, x2868, x2925, x2927, x2928, x2796, x2929, x2873, x2930, x2932, x2933, x2799, x2934, x2876, x2935, x2937, x2953, x2956, x2960, x2954, x2961, x2951, x2962, x2964, x2965, x2952, x2966, x2949, x2967, x2969, x2970, x2950, x2971, x2947, x2972, x2974, x2975, x2948, x2976, x2945, x2977, x2979, x2980, x2946, x2981, x2943, x2982, x2984, x2985, x2944, x2986, x2941, x2987, x2989, x2990, x2942, x2991, x2939, x2992, x2994, x2995, x2940, x2957, x2997, x2877, x2998, x2881, x2999, x2958, x3000, x3002, x3003, x2886, x3005, x2891, x3006, x2955, x3007, x3009, x3010, x2896, x3011, x2959, x3012, x3014, x3015, x2901, x3016, x2963, x3017, x3019, x3020, x2906, x3021, x2968, x3022, x3024, x3025, x2911, x3026, x2973, x3027, x3029, x3030, x2916, x3031, x2978, x3032, x3034, x3035, x2921, x3036, x2983, x3037, x3039, x3040, x2926, x3041, x2988, x3042, x3044, x3045, x2931, x3046, x2993, x3047, x3049, x3050, x2936, x3051, x2996, x3052, x3054, x3055, x2938, x3058, x3060, x3062, x3063, x3064, x3066, x3067, x3068, x3069, x3071, x3072, x3073, x3074, x3076, x3077, x3078, x3079, x3081, x3082, x3083, x3084, x3086, x3087, x3088, x3089, x3091, x3092, x3093, x3094, x3096, x3097, x3098, x3099, x3101, x3102, x3103, x3104, x3106, x3107, x3056, x3108, x3001, x3110, x3057, x3111, x3004, x3113, x3059, x3114, x3008, x3116, x3061, x3117, x3013, x3119, x3065, x3120, x3018, x3122, x3070, x3123, x3023, x3125, x3075, x3126, x3028, x3128, x3080, x3129, x3033, x3131, x3085, x3132, x3038, x3134, x3090, x3135, x3043, x3137, x3095, x3138, x3048, x3140, x3100, x3141, x3109, x3053, x3143, x3105, x3144, x3112, x3115, x3118, x3121, x3124, x3127, x3130, x3133, x3136, x3139, x3142, x3145, x3146, x3147, x3148, x3149, x3150, x3151, x3152, x3153, x3154, x3155, x3156, x3157;
x0 = _br2_load((in0)+((uintptr_t)(UINTMAX_C(0))), sizeof(uintptr_t));
x1 = _br2_load((in0)+((uintptr_t)(UINTMAX_C(4))), sizeof(uintptr_t));
x2 = _br2_load((in0)+((uintptr_t)(UINTMAX_C(8))), sizeof(uintptr_t));
x3 = _br2_load((in0)+((uintptr_t)(UINTMAX_C(12))), sizeof(uintptr_t));
x4 = _br2_load((in0)+((uintptr_t)(UINTMAX_C(16))), sizeof(uintptr_t));
x5 = _br2_load((in0)+((uintptr_t)(UINTMAX_C(20))), sizeof(uintptr_t));
x6 = _br2_load((in0)+((uintptr_t)(UINTMAX_C(24))), sizeof(uintptr_t));
x7 = _br2_load((in0)+((uintptr_t)(UINTMAX_C(28))), sizeof(uintptr_t));
x8 = _br2_load((in0)+((uintptr_t)(UINTMAX_C(32))), sizeof(uintptr_t));
x9 = _br2_load((in0)+((uintptr_t)(UINTMAX_C(36))), sizeof(uintptr_t));
x10 = _br2_load((in0)+((uintptr_t)(UINTMAX_C(40))), sizeof(uintptr_t));
x11 = _br2_load((in0)+((uintptr_t)(UINTMAX_C(44))), sizeof(uintptr_t));
/*skip*/
x12 = _br2_load((in1)+((uintptr_t)(UINTMAX_C(0))), sizeof(uintptr_t));
x13 = _br2_load((in1)+((uintptr_t)(UINTMAX_C(4))), sizeof(uintptr_t));
x14 = _br2_load((in1)+((uintptr_t)(UINTMAX_C(8))), sizeof(uintptr_t));
x15 = _br2_load((in1)+((uintptr_t)(UINTMAX_C(12))), sizeof(uintptr_t));
x16 = _br2_load((in1)+((uintptr_t)(UINTMAX_C(16))), sizeof(uintptr_t));
x17 = _br2_load((in1)+((uintptr_t)(UINTMAX_C(20))), sizeof(uintptr_t));
x18 = _br2_load((in1)+((uintptr_t)(UINTMAX_C(24))), sizeof(uintptr_t));
x19 = _br2_load((in1)+((uintptr_t)(UINTMAX_C(28))), sizeof(uintptr_t));
x20 = _br2_load((in1)+((uintptr_t)(UINTMAX_C(32))), sizeof(uintptr_t));
x21 = _br2_load((in1)+((uintptr_t)(UINTMAX_C(36))), sizeof(uintptr_t));
x22 = _br2_load((in1)+((uintptr_t)(UINTMAX_C(40))), sizeof(uintptr_t));
x23 = _br2_load((in1)+((uintptr_t)(UINTMAX_C(44))), sizeof(uintptr_t));
/*skip*/
/*skip*/
x24 = x1;
x25 = x2;
x26 = x3;
x27 = x4;
x28 = x5;
x29 = x6;
x30 = x7;
x31 = x8;
x32 = x9;
x33 = x10;
x34 = x11;
x35 = x0;
x36 = (x35)*(x23);
x37 = _br2_mulhuu((x35), (x23));
x38 = (x35)*(x22);
x39 = _br2_mulhuu((x35), (x22));
x40 = (x35)*(x21);
x41 = _br2_mulhuu((x35), (x21));
x42 = (x35)*(x20);
x43 = _br2_mulhuu((x35), (x20));
x44 = (x35)*(x19);
x45 = _br2_mulhuu((x35), (x19));
x46 = (x35)*(x18);
x47 = _br2_mulhuu((x35), (x18));
x48 = (x35)*(x17);
x49 = _br2_mulhuu((x35), (x17));
x50 = (x35)*(x16);
x51 = _br2_mulhuu((x35), (x16));
x52 = (x35)*(x15);
x53 = _br2_mulhuu((x35), (x15));
x54 = (x35)*(x14);
x55 = _br2_mulhuu((x35), (x14));
x56 = (x35)*(x13);
x57 = _br2_mulhuu((x35), (x13));
x58 = (x35)*(x12);
x59 = _br2_mulhuu((x35), (x12));
x60 = (x59)+(x56);
x61 = (uintptr_t)((x60)<(x59));
x62 = (x61)+(x57);
x63 = (uintptr_t)((x62)<(x57));
x64 = (x62)+(x54);
x65 = (uintptr_t)((x64)<(x54));
x66 = (x63)+(x65);
x67 = (x66)+(x55);
x68 = (uintptr_t)((x67)<(x55));
x69 = (x67)+(x52);
x70 = (uintptr_t)((x69)<(x52));
x71 = (x68)+(x70);
x72 = (x71)+(x53);
x73 = (uintptr_t)((x72)<(x53));
x74 = (x72)+(x50);
x75 = (uintptr_t)((x74)<(x50));
x76 = (x73)+(x75);
x77 = (x76)+(x51);
x78 = (uintptr_t)((x77)<(x51));
x79 = (x77)+(x48);
x80 = (uintptr_t)((x79)<(x48));
x81 = (x78)+(x80);
x82 = (x81)+(x49);
x83 = (uintptr_t)((x82)<(x49));
x84 = (x82)+(x46);
x85 = (uintptr_t)((x84)<(x46));
x86 = (x83)+(x85);
x87 = (x86)+(x47);
x88 = (uintptr_t)((x87)<(x47));
x89 = (x87)+(x44);
x90 = (uintptr_t)((x89)<(x44));
x91 = (x88)+(x90);
x92 = (x91)+(x45);
x93 = (uintptr_t)((x92)<(x45));
x94 = (x92)+(x42);
x95 = (uintptr_t)((x94)<(x42));
x96 = (x93)+(x95);
x97 = (x96)+(x43);
x98 = (uintptr_t)((x97)<(x43));
x99 = (x97)+(x40);
x100 = (uintptr_t)((x99)<(x40));
x101 = (x98)+(x100);
x102 = (x101)+(x41);
x103 = (uintptr_t)((x102)<(x41));
x104 = (x102)+(x38);
x105 = (uintptr_t)((x104)<(x38));
x106 = (x103)+(x105);
x107 = (x106)+(x39);
x108 = (uintptr_t)((x107)<(x39));
x109 = (x107)+(x36);
x110 = (uintptr_t)((x109)<(x36));
x111 = (x108)+(x110);
x112 = (x111)+(x37);
x113 = (x58)*((uintptr_t)(UINTMAX_C(4294967295)));
x114 = _br2_mulhuu((x58), ((uintptr_t)(UINTMAX_C(4294967295))));
x115 = (x58)*((uintptr_t)(UINTMAX_C(4294967295)));
x116 = _br2_mulhuu((x58), ((uintptr_t)(UINTMAX_C(4294967295))));
x117 = (x58)*((uintptr_t)(UINTMAX_C(4294967295)));
x118 = _br2_mulhuu((x58), ((uintptr_t)(UINTMAX_C(4294967295))));
x119 = (x58)*((uintptr_t)(UINTMAX_C(4294967295)));
x120 = _br2_mulhuu((x58), ((uintptr_t)(UINTMAX_C(4294967295))));
x121 = (x58)*((uintptr_t)(UINTMAX_C(4294967295)));
x122 = _br2_mulhuu((x58), ((uintptr_t)(UINTMAX_C(4294967295))));
x123 = (x58)*((uintptr_t)(UINTMAX_C(4294967295)));
x124 = _br2_mulhuu((x58), ((uintptr_t)(UINTMAX_C(4294967295))));
x125 = (x58)*((uintptr_t)(UINTMAX_C(4294967295)));
x126 = _br2_mulhuu((x58), ((uintptr_t)(UINTMAX_C(4294967295))));
x127 = (x58)*((uintptr_t)(UINTMAX_C(4294967294)));
x128 = _br2_mulhuu((x58), ((uintptr_t)(UINTMAX_C(4294967294))));
x129 = (x58)*((uintptr_t)(UINTMAX_C(4294967295)));
x130 = _br2_mulhuu((x58), ((uintptr_t)(UINTMAX_C(4294967295))));
x131 = (x58)*((uintptr_t)(UINTMAX_C(4294967295)));
x132 = _br2_mulhuu((x58), ((uintptr_t)(UINTMAX_C(4294967295))));
x133 = (x130)+(x127);
x134 = (uintptr_t)((x133)<(x130));
x135 = (x134)+(x128);
x136 = (uintptr_t)((x135)<(x128));
x137 = (x135)+(x125);
x138 = (uintptr_t)((x137)<(x125));
x139 = (x136)+(x138);
x140 = (x139)+(x126);
x141 = (uintptr_t)((x140)<(x126));
x142 = (x140)+(x123);
x143 = (uintptr_t)((x142)<(x123));
x144 = (x141)+(x143);
x145 = (x144)+(x124);
x146 = (uintptr_t)((x145)<(x124));
x147 = (x145)+(x121);
x148 = (uintptr_t)((x147)<(x121));
x149 = (x146)+(x148);
x150 = (x149)+(x122);
x151 = (uintptr_t)((x150)<(x122));
x152 = (x150)+(x119);
x153 = (uintptr_t)((x152)<(x119));
x154 = (x151)+(x153);
x155 = (x154)+(x120);
x156 = (uintptr_t)((x155)<(x120));
x157 = (x155)+(x117);
x158 = (uintptr_t)((x157)<(x117));
x159 = (x156)+(x158);
x160 = (x159)+(x118);
x161 = (uintptr_t)((x160)<(x118));
x162 = (x160)+(x115);
x163 = (uintptr_t)((x162)<(x115));
x164 = (x161)+(x163);
x165 = (x164)+(x116);
x166 = (uintptr_t)((x165)<(x116));
x167 = (x165)+(x113);
x168 = (uintptr_t)((x167)<(x113));
x169 = (x166)+(x168);
x170 = (x169)+(x114);
x171 = (x58)+(x131);
x172 = (uintptr_t)((x171)<(x58));
x173 = (x172)+(x60);
x174 = (uintptr_t)((x173)<(x60));
x175 = (x173)+(x132);
x176 = (uintptr_t)((x175)<(x132));
x177 = (x174)+(x176);
x178 = (x177)+(x64);
x179 = (uintptr_t)((x178)<(x64));
x180 = (x179)+(x69);
x181 = (uintptr_t)((x180)<(x69));
x182 = (x180)+(x129);
x183 = (uintptr_t)((x182)<(x129));
x184 = (x181)+(x183);
x185 = (x184)+(x74);
x186 = (uintptr_t)((x185)<(x74));
x187 = (x185)+(x133);
x188 = (uintptr_t)((x187)<(x133));
x189 = (x186)+(x188);
x190 = (x189)+(x79);
x191 = (uintptr_t)((x190)<(x79));
x192 = (x190)+(x137);
x193 = (uintptr_t)((x192)<(x137));
x194 = (x191)+(x193);
x195 = (x194)+(x84);
x196 = (uintptr_t)((x195)<(x84));
x197 = (x195)+(x142);
x198 = (uintptr_t)((x197)<(x142));
x199 = (x196)+(x198);
x200 = (x199)+(x89);
x201 = (uintptr_t)((x200)<(x89));
x202 = (x200)+(x147);
x203 = (uintptr_t)((x202)<(x147));
x204 = (x201)+(x203);
x205 = (x204)+(x94);
x206 = (uintptr_t)((x205)<(x94));
x207 = (x205)+(x152);
x208 = (uintptr_t)((x207)<(x152));
x209 = (x206)+(x208);
x210 = (x209)+(x99);
x211 = (uintptr_t)((x210)<(x99));
x212 = (x210)+(x157);
x213 = (uintptr_t)((x212)<(x157));
x214 = (x211)+(x213);
x215 = (x214)+(x104);
x216 = (uintptr_t)((x215)<(x104));
x217 = (x215)+(x162);
x218 = (uintptr_t)((x217)<(x162));
x219 = (x216)+(x218);
x220 = (x219)+(x109);
x221 = (uintptr_t)((x220)<(x109));
x222 = (x220)+(x167);
x223 = (uintptr_t)((x222)<(x167));
x224 = (x221)+(x223);
x225 = (x224)+(x112);
x226 = (uintptr_t)((x225)<(x112));
x227 = (x225)+(x170);
x228 = (uintptr_t)((x227)<(x170));
x229 = (x226)+(x228);
x230 = (x24)*(x23);
x231 = _br2_mulhuu((x24), (x23));
x232 = (x24)*(x22);
x233 = _br2_mulhuu((x24), (x22));
x234 = (x24)*(x21);
x235 = _br2_mulhuu((x24), (x21));
x236 = (x24)*(x20);
x237 = _br2_mulhuu((x24), (x20));
x238 = (x24)*(x19);
x239 = _br2_mulhuu((x24), (x19));
x240 = (x24)*(x18);
x241 = _br2_mulhuu((x24), (x18));
x242 = (x24)*(x17);
x243 = _br2_mulhuu((x24), (x17));
x244 = (x24)*(x16);
x245 = _br2_mulhuu((x24), (x16));
x246 = (x24)*(x15);
x247 = _br2_mulhuu((x24), (x15));
x248 = (x24)*(x14);
x249 = _br2_mulhuu((x24), (x14));
x250 = (x24)*(x13);
x251 = _br2_mulhuu((x24), (x13));
x252 = (x24)*(x12);
x253 = _br2_mulhuu((x24), (x12));
x254 = (x253)+(x250);
x255 = (uintptr_t)((x254)<(x253));
x256 = (x255)+(x251);
x257 = (uintptr_t)((x256)<(x251));
x258 = (x256)+(x248);
x259 = (uintptr_t)((x258)<(x248));
x260 = (x257)+(x259);
x261 = (x260)+(x249);
x262 = (uintptr_t)((x261)<(x249));
x263 = (x261)+(x246);
x264 = (uintptr_t)((x263)<(x246));
x265 = (x262)+(x264);
x266 = (x265)+(x247);
x267 = (uintptr_t)((x266)<(x247));
x268 = (x266)+(x244);
x269 = (uintptr_t)((x268)<(x244));
x270 = (x267)+(x269);
x271 = (x270)+(x245);
x272 = (uintptr_t)((x271)<(x245));
x273 = (x271)+(x242);
x274 = (uintptr_t)((x273)<(x242));
x275 = (x272)+(x274);
x276 = (x275)+(x243);
x277 = (uintptr_t)((x276)<(x243));
x278 = (x276)+(x240);
x279 = (uintptr_t)((x278)<(x240));
x280 = (x277)+(x279);
x281 = (x280)+(x241);
x282 = (uintptr_t)((x281)<(x241));
x283 = (x281)+(x238);
x284 = (uintptr_t)((x283)<(x238));
x285 = (x282)+(x284);
x286 = (x285)+(x239);
x287 = (uintptr_t)((x286)<(x239));
x288 = (x286)+(x236);
x289 = (uintptr_t)((x288)<(x236));
x290 = (x287)+(x289);
x291 = (x290)+(x237);
x292 = (uintptr_t)((x291)<(x237));
x293 = (x291)+(x234);
x294 = (uintptr_t)((x293)<(x234));
x295 = (x292)+(x294);
x296 = (x295)+(x235);
x297 = (uintptr_t)((x296)<(x235));
x298 = (x296)+(x232);
x299 = (uintptr_t)((x298)<(x232));
x300 = (x297)+(x299);
x301 = (x300)+(x233);
x302 = (uintptr_t)((x301)<(x233));
x303 = (x301)+(x230);
x304 = (uintptr_t)((x303)<(x230));
x305 = (x302)+(x304);
x306 = (x305)+(x231);
x307 = (x175)+(x252);
x308 = (uintptr_t)((x307)<(x175));
x309 = (x308)+(x178);
x310 = (uintptr_t)((x309)<(x178));
x311 = (x309)+(x254);
x312 = (uintptr_t)((x311)<(x254));
x313 = (x310)+(x312);
x314 = (x313)+(x182);
x315 = (uintptr_t)((x314)<(x182));
x316 = (x314)+(x258);
x317 = (uintptr_t)((x316)<(x258));
x318 = (x315)+(x317);
x319 = (x318)+(x187);
x320 = (uintptr_t)((x319)<(x187));
x321 = (x319)+(x263);
x322 = (uintptr_t)((x321)<(x263));
x323 = (x320)+(x322);
x324 = (x323)+(x192);
x325 = (uintptr_t)((x324)<(x192));
x326 = (x324)+(x268);
x327 = (uintptr_t)((x326)<(x268));
x328 = (x325)+(x327);
x329 = (x328)+(x197);
x330 = (uintptr_t)((x329)<(x197));
x331 = (x329)+(x273);
x332 = (uintptr_t)((x331)<(x273));
x333 = (x330)+(x332);
x334 = (x333)+(x202);
x335 = (uintptr_t)((x334)<(x202));
x336 = (x334)+(x278);
x337 = (uintptr_t)((x336)<(x278));
x338 = (x335)+(x337);
x339 = (x338)+(x207);
x340 = (uintptr_t)((x339)<(x207));
x341 = (x339)+(x283);
x342 = (uintptr_t)((x341)<(x283));
x343 = (x340)+(x342);
x344 = (x343)+(x212);
x345 = (uintptr_t)((x344)<(x212));
x346 = (x344)+(x288);
x347 = (uintptr_t)((x346)<(x288));
x348 = (x345)+(x347);
x349 = (x348)+(x217);
x350 = (uintptr_t)((x349)<(x217));
x351 = (x349)+(x293);
x352 = (uintptr_t)((x351)<(x293));
x353 = (x350)+(x352);
x354 = (x353)+(x222);
x355 = (uintptr_t)((x354)<(x222));
x356 = (x354)+(x298);
x357 = (uintptr_t)((x356)<(x298));
x358 = (x355)+(x357);
x359 = (x358)+(x227);
x360 = (uintptr_t)((x359)<(x227));
x361 = (x359)+(x303);
x362 = (uintptr_t)((x361)<(x303));
x363 = (x360)+(x362);
x364 = (x363)+(x229);
x365 = (uintptr_t)((x364)<(x229));
x366 = (x364)+(x306);
x367 = (uintptr_t)((x366)<(x306));
x368 = (x365)+(x367);
x369 = (x307)*((uintptr_t)(UINTMAX_C(4294967295)));
x370 = _br2_mulhuu((x307), ((uintptr_t)(UINTMAX_C(4294967295))));
x371 = (x307)*((uintptr_t)(UINTMAX_C(4294967295)));
x372 = _br2_mulhuu((x307), ((uintptr_t)(UINTMAX_C(4294967295))));
x373 = (x307)*((uintptr_t)(UINTMAX_C(4294967295)));
x374 = _br2_mulhuu((x307), ((uintptr_t)(UINTMAX_C(4294967295))));
x375 = (x307)*((uintptr_t)(UINTMAX_C(4294967295)));
x376 = _br2_mulhuu((x307), ((uintptr_t)(UINTMAX_C(4294967295))));
x377 = (x307)*((uintptr_t)(UINTMAX_C(4294967295)));
x378 = _br2_mulhuu((x307), ((uintptr_t)(UINTMAX_C(4294967295))));
x379 = (x307)*((uintptr_t)(UINTMAX_C(4294967295)));
x380 = _br2_mulhuu((x307), ((uintptr_t)(UINTMAX_C(4294967295))));
x381 = (x307)*((uintptr_t)(UINTMAX_C(4294967295)));
x382 = _br2_mulhuu((x307), ((uintptr_t)(UINTMAX_C(4294967295))));
x383 = (x307)*((uintptr_t)(UINTMAX_C(4294967294)));
x384 = _br2_mulhuu((x307), ((uintptr_t)(UINTMAX_C(4294967294))));
x385 = (x307)*((uintptr_t)(UINTMAX_C(4294967295)));
x386 = _br2_mulhuu((x307), ((uintptr_t)(UINTMAX_C(4294967295))));
x387 = (x307)*((uintptr_t)(UINTMAX_C(4294967295)));
x388 = _br2_mulhuu((x307), ((uintptr_t)(UINTMAX_C(4294967295))));
x389 = (x386)+(x383);
x390 = (uintptr_t)((x389)<(x386));
x391 = (x390)+(x384);
x392 = (uintptr_t)((x391)<(x384));
x393 = (x391)+(x381);
x394 = (uintptr_t)((x393)<(x381));
x395 = (x392)+(x394);
x396 = (x395)+(x382);
x397 = (uintptr_t)((x396)<(x382));
x398 = (x396)+(x379);
x399 = (uintptr_t)((x398)<(x379));
x400 = (x397)+(x399);
x401 = (x400)+(x380);
x402 = (uintptr_t)((x401)<(x380));
x403 = (x401)+(x377);
x404 = (uintptr_t)((x403)<(x377));
x405 = (x402)+(x404);
x406 = (x405)+(x378);
x407 = (uintptr_t)((x406)<(x378));
x408 = (x406)+(x375);
x409 = (uintptr_t)((x408)<(x375));
x410 = (x407)+(x409);
x411 = (x410)+(x376);
x412 = (uintptr_t)((x411)<(x376));
x413 = (x411)+(x373);
x414 = (uintptr_t)((x413)<(x373));
x415 = (x412)+(x414);
x416 = (x415)+(x374);
x417 = (uintptr_t)((x416)<(x374));
x418 = (x416)+(x371);
x419 = (uintptr_t)((x418)<(x371));
x420 = (x417)+(x419);
x421 = (x420)+(x372);
x422 = (uintptr_t)((x421)<(x372));
x423 = (x421)+(x369);
x424 = (uintptr_t)((x423)<(x369));
x425 = (x422)+(x424);
x426 = (x425)+(x370);
x427 = (x307)+(x387);
x428 = (uintptr_t)((x427)<(x307));
x429 = (x428)+(x311);
x430 = (uintptr_t)((x429)<(x311));
x431 = (x429)+(x388);
x432 = (uintptr_t)((x431)<(x388));
x433 = (x430)+(x432);
x434 = (x433)+(x316);
x435 = (uintptr_t)((x434)<(x316));
x436 = (x435)+(x321);
x437 = (uintptr_t)((x436)<(x321));
x438 = (x436)+(x385);
x439 = (uintptr_t)((x438)<(x385));
x440 = (x437)+(x439);
x441 = (x440)+(x326);
x442 = (uintptr_t)((x441)<(x326));
x443 = (x441)+(x389);
x444 = (uintptr_t)((x443)<(x389));
x445 = (x442)+(x444);
x446 = (x445)+(x331);
x447 = (uintptr_t)((x446)<(x331));
x448 = (x446)+(x393);
x449 = (uintptr_t)((x448)<(x393));
x450 = (x447)+(x449);
x451 = (x450)+(x336);
x452 = (uintptr_t)((x451)<(x336));
x453 = (x451)+(x398);
x454 = (uintptr_t)((x453)<(x398));
x455 = (x452)+(x454);
x456 = (x455)+(x341);
x457 = (uintptr_t)((x456)<(x341));
x458 = (x456)+(x403);
x459 = (uintptr_t)((x458)<(x403));
x460 = (x457)+(x459);
x461 = (x460)+(x346);
x462 = (uintptr_t)((x461)<(x346));
x463 = (x461)+(x408);
x464 = (uintptr_t)((x463)<(x408));
x465 = (x462)+(x464);
x466 = (x465)+(x351);
x467 = (uintptr_t)((x466)<(x351));
x468 = (x466)+(x413);
x469 = (uintptr_t)((x468)<(x413));
x470 = (x467)+(x469);
x471 = (x470)+(x356);
x472 = (uintptr_t)((x471)<(x356));
x473 = (x471)+(x418);
x474 = (uintptr_t)((x473)<(x418));
x475 = (x472)+(x474);
x476 = (x475)+(x361);
x477 = (uintptr_t)((x476)<(x361));
x478 = (x476)+(x423);
x479 = (uintptr_t)((x478)<(x423));
x480 = (x477)+(x479);
x481 = (x480)+(x366);
x482 = (uintptr_t)((x481)<(x366));
x483 = (x481)+(x426);
x484 = (uintptr_t)((x483)<(x426));
x485 = (x482)+(x484);
x486 = (x485)+(x368);
x487 = (x25)*(x23);
x488 = _br2_mulhuu((x25), (x23));
x489 = (x25)*(x22);
x490 = _br2_mulhuu((x25), (x22));
x491 = (x25)*(x21);
x492 = _br2_mulhuu((x25), (x21));
x493 = (x25)*(x20);
x494 = _br2_mulhuu((x25), (x20));
x495 = (x25)*(x19);
x496 = _br2_mulhuu((x25), (x19));
x497 = (x25)*(x18);
x498 = _br2_mulhuu((x25), (x18));
x499 = (x25)*(x17);
x500 = _br2_mulhuu((x25), (x17));
x501 = (x25)*(x16);
x502 = _br2_mulhuu((x25), (x16));
x503 = (x25)*(x15);
x504 = _br2_mulhuu((x25), (x15));
x505 = (x25)*(x14);
x506 = _br2_mulhuu((x25), (x14));
x507 = (x25)*(x13);
x508 = _br2_mulhuu((x25), (x13));
x509 = (x25)*(x12);
x510 = _br2_mulhuu((x25), (x12));
x511 = (x510)+(x507);
x512 = (uintptr_t)((x511)<(x510));
x513 = (x512)+(x508);
x514 = (uintptr_t)((x513)<(x508));
x515 = (x513)+(x505);
x516 = (uintptr_t)((x515)<(x505));
x517 = (x514)+(x516);
x518 = (x517)+(x506);
x519 = (uintptr_t)((x518)<(x506));
x520 = (x518)+(x503);
x521 = (uintptr_t)((x520)<(x503));
x522 = (x519)+(x521);
x523 = (x522)+(x504);
x524 = (uintptr_t)((x523)<(x504));
x525 = (x523)+(x501);
x526 = (uintptr_t)((x525)<(x501));
x527 = (x524)+(x526);
x528 = (x527)+(x502);
x529 = (uintptr_t)((x528)<(x502));
x530 = (x528)+(x499);
x531 = (uintptr_t)((x530)<(x499));
x532 = (x529)+(x531);
x533 = (x532)+(x500);
x534 = (uintptr_t)((x533)<(x500));
x535 = (x533)+(x497);
x536 = (uintptr_t)((x535)<(x497));
x537 = (x534)+(x536);
x538 = (x537)+(x498);
x539 = (uintptr_t)((x538)<(x498));
x540 = (x538)+(x495);
x541 = (uintptr_t)((x540)<(x495));
x542 = (x539)+(x541);
x543 = (x542)+(x496);
x544 = (uintptr_t)((x543)<(x496));
x545 = (x543)+(x493);
x546 = (uintptr_t)((x545)<(x493));
x547 = (x544)+(x546);
x548 = (x547)+(x494);
x549 = (uintptr_t)((x548)<(x494));
x550 = (x548)+(x491);
x551 = (uintptr_t)((x550)<(x491));
x552 = (x549)+(x551);
x553 = (x552)+(x492);
x554 = (uintptr_t)((x553)<(x492));
x555 = (x553)+(x489);
x556 = (uintptr_t)((x555)<(x489));
x557 = (x554)+(x556);
x558 = (x557)+(x490);
x559 = (uintptr_t)((x558)<(x490));
x560 = (x558)+(x487);
x561 = (uintptr_t)((x560)<(x487));
x562 = (x559)+(x561);
x563 = (x562)+(x488);
x564 = (x431)+(x509);
x565 = (uintptr_t)((x564)<(x431));
x566 = (x565)+(x434);
x567 = (uintptr_t)((x566)<(x434));
x568 = (x566)+(x511);
x569 = (uintptr_t)((x568)<(x511));
x570 = (x567)+(x569);
x571 = (x570)+(x438);
x572 = (uintptr_t)((x571)<(x438));
x573 = (x571)+(x515);
x574 = (uintptr_t)((x573)<(x515));
x575 = (x572)+(x574);
x576 = (x575)+(x443);
x577 = (uintptr_t)((x576)<(x443));
x578 = (x576)+(x520);
x579 = (uintptr_t)((x578)<(x520));
x580 = (x577)+(x579);
x581 = (x580)+(x448);
x582 = (uintptr_t)((x581)<(x448));
x583 = (x581)+(x525);
x584 = (uintptr_t)((x583)<(x525));
x585 = (x582)+(x584);
x586 = (x585)+(x453);
x587 = (uintptr_t)((x586)<(x453));
x588 = (x586)+(x530);
x589 = (uintptr_t)((x588)<(x530));
x590 = (x587)+(x589);
x591 = (x590)+(x458);
x592 = (uintptr_t)((x591)<(x458));
x593 = (x591)+(x535);
x594 = (uintptr_t)((x593)<(x535));
x595 = (x592)+(x594);
x596 = (x595)+(x463);
x597 = (uintptr_t)((x596)<(x463));
x598 = (x596)+(x540);
x599 = (uintptr_t)((x598)<(x540));
x600 = (x597)+(x599);
x601 = (x600)+(x468);
x602 = (uintptr_t)((x601)<(x468));
x603 = (x601)+(x545);
x604 = (uintptr_t)((x603)<(x545));
x605 = (x602)+(x604);
x606 = (x605)+(x473);
x607 = (uintptr_t)((x606)<(x473));
x608 = (x606)+(x550);
x609 = (uintptr_t)((x608)<(x550));
x610 = (x607)+(x609);
x611 = (x610)+(x478);
x612 = (uintptr_t)((x611)<(x478));
x613 = (x611)+(x555);
x614 = (uintptr_t)((x613)<(x555));
x615 = (x612)+(x614);
x616 = (x615)+(x483);
x617 = (uintptr_t)((x616)<(x483));
x618 = (x616)+(x560);
x619 = (uintptr_t)((x618)<(x560));
x620 = (x617)+(x619);
x621 = (x620)+(x486);
x622 = (uintptr_t)((x621)<(x486));
x623 = (x621)+(x563);
x624 = (uintptr_t)((x623)<(x563));
x625 = (x622)+(x624);
x626 = (x564)*((uintptr_t)(UINTMAX_C(4294967295)));
x627 = _br2_mulhuu((x564), ((uintptr_t)(UINTMAX_C(4294967295))));
x628 = (x564)*((uintptr_t)(UINTMAX_C(4294967295)));
x629 = _br2_mulhuu((x564), ((uintptr_t)(UINTMAX_C(4294967295))));
x630 = (x564)*((uintptr_t)(UINTMAX_C(4294967295)));
x631 = _br2_mulhuu((x564), ((uintptr_t)(UINTMAX_C(4294967295))));
x632 = (x564)*((uintptr_t)(UINTMAX_C(4294967295)));
x633 = _br2_mulhuu((x564), ((uintptr_t)(UINTMAX_C(4294967295))));
x634 = (x564)*((uintptr_t)(UINTMAX_C(4294967295)));
x635 = _br2_mulhuu((x564), ((uintptr_t)(UINTMAX_C(4294967295))));
x636 = (x564)*((uintptr_t)(UINTMAX_C(4294967295)));
x637 = _br2_mulhuu((x564), ((uintptr_t)(UINTMAX_C(4294967295))));
x638 = (x564)*((uintptr_t)(UINTMAX_C(4294967295)));
x639 = _br2_mulhuu((x564), ((uintptr_t)(UINTMAX_C(4294967295))));
x640 = (x564)*((uintptr_t)(UINTMAX_C(4294967294)));
x641 = _br2_mulhuu((x564), ((uintptr_t)(UINTMAX_C(4294967294))));
x642 = (x564)*((uintptr_t)(UINTMAX_C(4294967295)));
x643 = _br2_mulhuu((x564), ((uintptr_t)(UINTMAX_C(4294967295))));
x644 = (x564)*((uintptr_t)(UINTMAX_C(4294967295)));
x645 = _br2_mulhuu((x564), ((uintptr_t)(UINTMAX_C(4294967295))));
x646 = (x643)+(x640);
x647 = (uintptr_t)((x646)<(x643));
x648 = (x647)+(x641);
x649 = (uintptr_t)((x648)<(x641));
x650 = (x648)+(x638);
x651 = (uintptr_t)((x650)<(x638));
x652 = (x649)+(x651);
x653 = (x652)+(x639);
x654 = (uintptr_t)((x653)<(x639));
x655 = (x653)+(x636);
x656 = (uintptr_t)((x655)<(x636));
x657 = (x654)+(x656);
x658 = (x657)+(x637);
x659 = (uintptr_t)((x658)<(x637));
x660 = (x658)+(x634);
x661 = (uintptr_t)((x660)<(x634));
x662 = (x659)+(x661);
x663 = (x662)+(x635);
x664 = (uintptr_t)((x663)<(x635));
x665 = (x663)+(x632);
x666 = (uintptr_t)((x665)<(x632));
x667 = (x664)+(x666);
x668 = (x667)+(x633);
x669 = (uintptr_t)((x668)<(x633));
x670 = (x668)+(x630);
x671 = (uintptr_t)((x670)<(x630));
x672 = (x669)+(x671);
x673 = (x672)+(x631);
x674 = (uintptr_t)((x673)<(x631));
x675 = (x673)+(x628);
x676 = (uintptr_t)((x675)<(x628));
x677 = (x674)+(x676);
x678 = (x677)+(x629);
x679 = (uintptr_t)((x678)<(x629));
x680 = (x678)+(x626);
x681 = (uintptr_t)((x680)<(x626));
x682 = (x679)+(x681);
x683 = (x682)+(x627);
x684 = (x564)+(x644);
x685 = (uintptr_t)((x684)<(x564));
x686 = (x685)+(x568);
x687 = (uintptr_t)((x686)<(x568));
x688 = (x686)+(x645);
x689 = (uintptr_t)((x688)<(x645));
x690 = (x687)+(x689);
x691 = (x690)+(x573);
x692 = (uintptr_t)((x691)<(x573));
x693 = (x692)+(x578);
x694 = (uintptr_t)((x693)<(x578));
x695 = (x693)+(x642);
x696 = (uintptr_t)((x695)<(x642));
x697 = (x694)+(x696);
x698 = (x697)+(x583);
x699 = (uintptr_t)((x698)<(x583));
x700 = (x698)+(x646);
x701 = (uintptr_t)((x700)<(x646));
x702 = (x699)+(x701);
x703 = (x702)+(x588);
x704 = (uintptr_t)((x703)<(x588));
x705 = (x703)+(x650);
x706 = (uintptr_t)((x705)<(x650));
x707 = (x704)+(x706);
x708 = (x707)+(x593);
x709 = (uintptr_t)((x708)<(x593));
x710 = (x708)+(x655);
x711 = (uintptr_t)((x710)<(x655));
x712 = (x709)+(x711);
x713 = (x712)+(x598);
x714 = (uintptr_t)((x713)<(x598));
x715 = (x713)+(x660);
x716 = (uintptr_t)((x715)<(x660));
x717 = (x714)+(x716);
x718 = (x717)+(x603);
x719 = (uintptr_t)((x718)<(x603));
x720 = (x718)+(x665);
x721 = (uintptr_t)((x720)<(x665));
x722 = (x719)+(x721);
x723 = (x722)+(x608);
x724 = (uintptr_t)((x723)<(x608));
x725 = (x723)+(x670);
x726 = (uintptr_t)((x725)<(x670));
x727 = (x724)+(x726);
x728 = (x727)+(x613);
x729 = (uintptr_t)((x728)<(x613));
x730 = (x728)+(x675);
x731 = (uintptr_t)((x730)<(x675));
x732 = (x729)+(x731);
x733 = (x732)+(x618);
x734 = (uintptr_t)((x733)<(x618));
x735 = (x733)+(x680);
x736 = (uintptr_t)((x735)<(x680));
x737 = (x734)+(x736);
x738 = (x737)+(x623);
x739 = (uintptr_t)((x738)<(x623));
x740 = (x738)+(x683);
x741 = (uintptr_t)((x740)<(x683));
x742 = (x739)+(x741);
x743 = (x742)+(x625);
x744 = (x26)*(x23);
x745 = _br2_mulhuu((x26), (x23));
x746 = (x26)*(x22);
x747 = _br2_mulhuu((x26), (x22));
x748 = (x26)*(x21);
x749 = _br2_mulhuu((x26), (x21));
x750 = (x26)*(x20);
x751 = _br2_mulhuu((x26), (x20));
x752 = (x26)*(x19);
x753 = _br2_mulhuu((x26), (x19));
x754 = (x26)*(x18);
x755 = _br2_mulhuu((x26), (x18));
x756 = (x26)*(x17);
x757 = _br2_mulhuu((x26), (x17));
x758 = (x26)*(x16);
x759 = _br2_mulhuu((x26), (x16));
x760 = (x26)*(x15);
x761 = _br2_mulhuu((x26), (x15));
x762 = (x26)*(x14);
x763 = _br2_mulhuu((x26), (x14));
x764 = (x26)*(x13);
x765 = _br2_mulhuu((x26), (x13));
x766 = (x26)*(x12);
x767 = _br2_mulhuu((x26), (x12));
x768 = (x767)+(x764);
x769 = (uintptr_t)((x768)<(x767));
x770 = (x769)+(x765);
x771 = (uintptr_t)((x770)<(x765));
x772 = (x770)+(x762);
x773 = (uintptr_t)((x772)<(x762));
x774 = (x771)+(x773);
x775 = (x774)+(x763);
x776 = (uintptr_t)((x775)<(x763));
x777 = (x775)+(x760);
x778 = (uintptr_t)((x777)<(x760));
x779 = (x776)+(x778);
x780 = (x779)+(x761);
x781 = (uintptr_t)((x780)<(x761));
x782 = (x780)+(x758);
x783 = (uintptr_t)((x782)<(x758));
x784 = (x781)+(x783);
x785 = (x784)+(x759);
x786 = (uintptr_t)((x785)<(x759));
x787 = (x785)+(x756);
x788 = (uintptr_t)((x787)<(x756));
x789 = (x786)+(x788);
x790 = (x789)+(x757);
x791 = (uintptr_t)((x790)<(x757));
x792 = (x790)+(x754);
x793 = (uintptr_t)((x792)<(x754));
x794 = (x791)+(x793);
x795 = (x794)+(x755);
x796 = (uintptr_t)((x795)<(x755));
x797 = (x795)+(x752);
x798 = (uintptr_t)((x797)<(x752));
x799 = (x796)+(x798);
x800 = (x799)+(x753);
x801 = (uintptr_t)((x800)<(x753));
x802 = (x800)+(x750);
x803 = (uintptr_t)((x802)<(x750));
x804 = (x801)+(x803);
x805 = (x804)+(x751);
x806 = (uintptr_t)((x805)<(x751));
x807 = (x805)+(x748);
x808 = (uintptr_t)((x807)<(x748));
x809 = (x806)+(x808);
x810 = (x809)+(x749);
x811 = (uintptr_t)((x810)<(x749));
x812 = (x810)+(x746);
x813 = (uintptr_t)((x812)<(x746));
x814 = (x811)+(x813);
x815 = (x814)+(x747);
x816 = (uintptr_t)((x815)<(x747));
x817 = (x815)+(x744);
x818 = (uintptr_t)((x817)<(x744));
x819 = (x816)+(x818);
x820 = (x819)+(x745);
x821 = (x688)+(x766);
x822 = (uintptr_t)((x821)<(x688));
x823 = (x822)+(x691);
x824 = (uintptr_t)((x823)<(x691));
x825 = (x823)+(x768);
x826 = (uintptr_t)((x825)<(x768));
x827 = (x824)+(x826);
x828 = (x827)+(x695);
x829 = (uintptr_t)((x828)<(x695));
x830 = (x828)+(x772);
x831 = (uintptr_t)((x830)<(x772));
x832 = (x829)+(x831);
x833 = (x832)+(x700);
x834 = (uintptr_t)((x833)<(x700));
x835 = (x833)+(x777);
x836 = (uintptr_t)((x835)<(x777));
x837 = (x834)+(x836);
x838 = (x837)+(x705);
x839 = (uintptr_t)((x838)<(x705));
x840 = (x838)+(x782);
x841 = (uintptr_t)((x840)<(x782));
x842 = (x839)+(x841);
x843 = (x842)+(x710);
x844 = (uintptr_t)((x843)<(x710));
x845 = (x843)+(x787);
x846 = (uintptr_t)((x845)<(x787));
x847 = (x844)+(x846);
x848 = (x847)+(x715);
x849 = (uintptr_t)((x848)<(x715));
x850 = (x848)+(x792);
x851 = (uintptr_t)((x850)<(x792));
x852 = (x849)+(x851);
x853 = (x852)+(x720);
x854 = (uintptr_t)((x853)<(x720));
x855 = (x853)+(x797);
x856 = (uintptr_t)((x855)<(x797));
x857 = (x854)+(x856);
x858 = (x857)+(x725);
x859 = (uintptr_t)((x858)<(x725));
x860 = (x858)+(x802);
x861 = (uintptr_t)((x860)<(x802));
x862 = (x859)+(x861);
x863 = (x862)+(x730);
x864 = (uintptr_t)((x863)<(x730));
x865 = (x863)+(x807);
x866 = (uintptr_t)((x865)<(x807));
x867 = (x864)+(x866);
x868 = (x867)+(x735);
x869 = (uintptr_t)((x868)<(x735));
x870 = (x868)+(x812);
x871 = (uintptr_t)((x870)<(x812));
x872 = (x869)+(x871);
x873 = (x872)+(x740);
x874 = (uintptr_t)((x873)<(x740));
x875 = (x873)+(x817);
x876 = (uintptr_t)((x875)<(x817));
x877 = (x874)+(x876);
x878 = (x877)+(x743);
x879 = (uintptr_t)((x878)<(x743));
x880 = (x878)+(x820);
x881 = (uintptr_t)((x880)<(x820));
x882 = (x879)+(x881);
x883 = (x821)*((uintptr_t)(UINTMAX_C(4294967295)));
x884 = _br2_mulhuu((x821), ((uintptr_t)(UINTMAX_C(4294967295))));
x885 = (x821)*((uintptr_t)(UINTMAX_C(4294967295)));
x886 = _br2_mulhuu((x821), ((uintptr_t)(UINTMAX_C(4294967295))));
x887 = (x821)*((uintptr_t)(UINTMAX_C(4294967295)));
x888 = _br2_mulhuu((x821), ((uintptr_t)(UINTMAX_C(4294967295))));
x889 = (x821)*((uintptr_t)(UINTMAX_C(4294967295)));
x890 = _br2_mulhuu((x821), ((uintptr_t)(UINTMAX_C(4294967295))));
x891 = (x821)*((uintptr_t)(UINTMAX_C(4294967295)));
x892 = _br2_mulhuu((x821), ((uintptr_t)(UINTMAX_C(4294967295))));
x893 = (x821)*((uintptr_t)(UINTMAX_C(4294967295)));
x894 = _br2_mulhuu((x821), ((uintptr_t)(UINTMAX_C(4294967295))));
x895 = (x821)*((uintptr_t)(UINTMAX_C(4294967295)));
x896 = _br2_mulhuu((x821), ((uintptr_t)(UINTMAX_C(4294967295))));
x897 = (x821)*((uintptr_t)(UINTMAX_C(4294967294)));
x898 = _br2_mulhuu((x821), ((uintptr_t)(UINTMAX_C(4294967294))));
x899 = (x821)*((uintptr_t)(UINTMAX_C(4294967295)));
x900 = _br2_mulhuu((x821), ((uintptr_t)(UINTMAX_C(4294967295))));
x901 = (x821)*((uintptr_t)(UINTMAX_C(4294967295)));