Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
I guess we need some way to deal with `(addcarry₆₄, [((#3 *₆₄ #7) >>₆₄ 32), (addcarry₆₄, [(#20 +₆₄ #26), (#3 *₆₄ #7 *₆₄ 2^32)])])` ≠ `(addcarry₆₄, [(((#3 *₆₄ #7) *ℤ 2^32-1) >>₆₄ 64), (addcarry₆₄, [(#3 *₆₄ #7 *₆₄ 2^32-1), (((#3 *₆₄ #7) *ℤ 2^64-1) >>₆₄ 64)]), (addcarry₆₄, [(#20 +₆₄ #26), ((#3 *₆₄ #7 *₆₄ 2^32-1) +₆₄ (((#3 *₆₄ #7) *ℤ 2^64-1) >>₆₄ 64)), (addcarry₆₄, [(#3 *₆₄ #7), (#3 *₆₄ #7 *₆₄ 2^64-1)])])])` ``` check_args /* Autogenerated: 'src/ExtractionOCaml/word_by_word_montgomery' p256 64 '2^256 - 2^224 + 2^192 + 2^96 - 1' mul --no-wide-int --shiftr-avoid-uint1 --hints-file 'fiat-amd64/boringssl_intel_manual_mul_p256.asm' */ /* curve description: p256 */ /* machine_wordsize = 64 (from "64") */ /* requested operations: mul */ /* m = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff (from "2^256 - 2^224 + 2^192 + 2^96 - 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] << 64) + (z[2] << 128) + (z[3] << 192) */ /* 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) */ /* twos_complement_eval z = let x1 := z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) in */ /* if x1 & (2^256-1) < 2^255 then x1 & (2^256-1) else (x1 & (2^256-1)) - 2^256 */ #include <stdint.h> #if defined(__GNUC__) || defined(__clang__) # define FIAT_P256_FIAT_INLINE __inline__ #else # define FIAT_P256_FIAT_INLINE #endif #if (-1 & 3) != 3 #error "This code only works on a two's complement system" #endif After rewriting PartialEvaluate: (λ x1 x2, let x3 := x1[1] in let x4 := x1[2] in let x5 := x1[3] in let x6 := x1[0] in let x7 := Z.mul_split((2^64), (0, x2[3])) in let x8 := Z.mul_split((2^64), (0, x2[2])) in let x9 := Z.mul_split((2^64), (0, x2[1])) in let x10 := Z.mul_split((2^64), (0, x2[0])) in let x11 := Z.mul_split((2^64), (0, x2[3])) in let x12 := Z.mul_split((2^64), (0, x2[2])) in let x13 := Z.mul_split((2^64), (0, x2[1])) in let x14 := Z.mul_split((2^64), (0, x2[0])) in let x15 := Z.mul_split((2^64), (0, x2[3])) in let x16 := Z.mul_split((2^64), (0, x2[2])) in let x17 := Z.mul_split((2^64), (0, x2[1])) in let x18 := Z.mul_split((2^64), (0, x2[0])) in let x19 := Z.mul_split((2^64), (x6, x2[3])) in let x20 := Z.mul_split((2^64), (x6, x2[2])) in let x21 := Z.mul_split((2^64), (x6, x2[1])) in let x22 := Z.mul_split((2^64), (x6, x2[0])) in let x23 := 2^192 * x7₂ in let x24 := 2^128 * x7₁ in let x25 := 2^128 * x8₂ in let x26 := 2^64 * x8₁ in let x27 := 2^64 * x9₂ in let x28 := 1 * x9₁ in let x29 := 1 * x10₂ in let x30 := 1 * x10₁ in let x31 := 2^128 * x11₂ in let x32 := 2^64 * x11₁ in let x33 := 2^64 * x12₂ in let x34 := 1 * x12₁ in let x35 := 1 * x13₂ in let x36 := 1 * x13₁ in let x37 := 1 * x14₂ in let x38 := 1 * x14₁ in let x39 := 2^64 * x15₂ in let x40 := 1 * x15₁ in let x41 := 1 * x16₂ in let x42 := 1 * x16₁ in let x43 := 1 * x17₂ in let x44 := 1 * x17₁ in let x45 := 1 * x18₂ in let x46 := 1 * x18₁ in let x47 := 1 * x19₂ in let x48 := 1 * x19₁ in let x49 := 1 * x20₂ in let x50 := 1 * x20₁ in let x51 := 1 * x21₂ in let x52 := 1 * x21₁ in let x53 := 1 * x22₂ in let x54 := 1 * x22₁ in let x55 := Z.add_with_get_carry((2^64), (0, (x54, 0))) in let x56 := Z.add_with_get_carry((2^64), (x55₂, (x53, 0))) in let x57 := Z.add_with_get_carry((2^64), (x56₂, (x51, 0))) in let x58 := Z.add_with_get_carry((2^64), (x57₂, (x49, 0))) in let x59 := Z.add_with_get_carry((2^64), (x58₂, (x47, x23))) in let x60 := Z.add_with_get_carry((2^64), (0, (x55₁, 0))) in let x61 := Z.add_with_get_carry((2^64), (x60₂, (x56₁, 0))) in let x62 := Z.add_with_get_carry((2^64), (x61₂, (x57₁, 0))) in let x63 := Z.add_with_get_carry((2^64), (x62₂, (x58₁, 0))) in let x64 := Z.add_with_get_carry((2^64), (x63₂, (x59₁, x24))) in let x65 := Z.add_with_get_carry((2^64), (0, (x60₁, 0))) in let x66 := Z.add_with_get_carry((2^64), (x65₂, (x61₁, 0))) in let x67 := Z.add_with_get_carry((2^64), (x66₂, (x62₁, 0))) in let x68 := Z.add_with_get_carry((2^64), (x67₂, (x63₁, 0))) in let x69 := Z.add_with_get_carry((2^64), (x68₂, (x64₁, x25))) in let x70 := Z.add_with_get_carry((2^64), (0, (x65₁, 0))) in let x71 := Z.add_with_get_carry((2^64), (x70₂, (x66₁, 0))) in let x72 := Z.add_with_get_carry((2^64), (x71₂, (x67₁, 0))) in let x73 := Z.add_with_get_carry((2^64), (x72₂, (x68₁, 0))) in let x74 := Z.add_with_get_carry((2^64), (x73₂, (x69₁, x26))) in let x75 := Z.add_with_get_carry((2^64), (0, (x70₁, 0))) in let x76 := Z.add_with_get_carry((2^64), (x75₂, (x71₁, 0))) in let x77 := Z.add_with_get_carry((2^64), (x76₂, (x72₁, 0))) in let x78 := Z.add_with_get_carry((2^64), (x77₂, (x73₁, 0))) in let x79 := Z.add_with_get_carry((2^64), (x78₂, (x74₁, x27))) in let x80 := Z.add_with_get_carry((2^64), (0, (x75₁, 0))) in let x81 := Z.add_with_get_carry((2^64), (x80₂, (x76₁, 0))) in let x82 := Z.add_with_get_carry((2^64), (x81₂, (x77₁, 0))) in let x83 := Z.add_with_get_carry((2^64), (x82₂, (x78₁, 0))) in let x84 := Z.add_with_get_carry((2^64), (x83₂, (x79₁, x28))) in let x85 := Z.add_with_get_carry((2^64), (0, (x80₁, 0))) in let x86 := Z.add_with_get_carry((2^64), (x85₂, (x81₁, 0))) in let x87 := Z.add_with_get_carry((2^64), (x86₂, (x82₁, 0))) in let x88 := Z.add_with_get_carry((2^64), (x87₂, (x83₁, 0))) in let x89 := Z.add_with_get_carry((2^64), (x88₂, (x84₁, x29))) in let x90 := Z.add_with_get_carry((2^64), (0, (x85₁, 0))) in let x91 := Z.add_with_get_carry((2^64), (x90₂, (x86₁, 0))) in let x92 := Z.add_with_get_carry((2^64), (x91₂, (x87₁, 0))) in let x93 := Z.add_with_get_carry((2^64), (x92₂, (x88₁, 0))) in let x94 := Z.add_with_get_carry((2^64), (x93₂, (x89₁, x31))) in let x95 := Z.add_with_get_carry((2^64), (0, (x90₁, 0))) in let x96 := Z.add_with_get_carry((2^64), (x95₂, (x91₁, 0))) in let x97 := Z.add_with_get_carry((2^64), (x96₂, (x92₁, 0))) in let x98 := Z.add_with_get_carry((2^64), (x97₂, (x93₁, 0))) in let x99 := Z.add_with_get_carry((2^64), (x98₂, (x94₁, x32))) in let x100 := Z.add_with_get_carry((2^64), (0, (x95₁, 0))) in let x101 := Z.add_with_get_carry((2^64), (x100₂, (x96₁, 0))) in let x102 := Z.add_with_get_carry((2^64), (x101₂, (x97₁, 0))) in let x103 := Z.add_with_get_carry((2^64), (x102₂, (x98₁, x30))) in let x104 := Z.add_with_get_carry((2^64), (x103₂, (x99₁, x33))) in let x105 := Z.add_with_get_carry((2^64), (0, (x100₁, 0))) in let x106 := Z.add_with_get_carry((2^64), (x105₂, (x101₁, 0))) in let x107 := Z.add_with_get_carry((2^64), (x106₂, (x102₁, 0))) in let x108 := Z.add_with_get_carry((2^64), (x107₂, (x103₁, x36))) in let x109 := Z.add_with_get_carry((2^64), (x108₂, (x104₁, x34))) in let x110 := Z.add_with_get_carry((2^64), (0, (x105₁, 0))) in let x111 := Z.add_with_get_carry((2^64), (x110₂, (x106₁, 0))) in let x112 := Z.add_with_get_carry((2^64), (x111₂, (x107₁, x38))) in let x113 := Z.add_with_get_carry((2^64), (x112₂, (x108₁, x37))) in let x114 := Z.add_with_get_carry((2^64), (x113₂, (x109₁, x35))) in let x115 := Z.add_with_get_carry((2^64), (0, (x110₁, 0))) in let x116 := Z.add_with_get_carry((2^64), (x115₂, (x111₁, 0))) in let x117 := Z.add_with_get_carry((2^64), (x116₂, (x112₁, x44))) in let x118 := Z.add_with_get_carry((2^64), (x117₂, (x113₁, x42))) in let x119 := Z.add_with_get_carry((2^64), (x118₂, (x114₁, x39))) in let x120 := Z.add_with_get_carry((2^64), (0, (x115₁, 0))) in let x121 := Z.add_with_get_carry((2^64), (x120₂, (x116₁, x46))) in let x122 := Z.add_with_get_carry((2^64), (x121₂, (x117₁, x45))) in let x123 := Z.add_with_get_carry((2^64), (x122₂, (x118₁, x43))) in let x124 := Z.add_with_get_carry((2^64), (x123₂, (x119₁, x40))) in let x125 := Z.add_with_get_carry((2^64), (0, (x120₁, 0))) in let x126 := Z.add_with_get_carry((2^64), (x125₂, (x121₁, x52))) in let x127 := Z.add_with_get_carry((2^64), (x126₂, (x122₁, x50))) in let x128 := Z.add_with_get_carry((2^64), (x127₂, (x123₁, x48))) in let x129 := Z.add_with_get_carry((2^64), (x128₂, (x124₁, x41))) in let x130 := Z.add_with_get_carry((2^64), (0, (0, x125₁))) in let x131 := Z.add_with_get_carry((2^64), (x130₂, (0, x126₁))) in let x132 := Z.add_with_get_carry((2^64), (x131₂, (0, x127₁))) in let x133 := Z.add_with_get_carry((2^64), (x132₂, (0, x128₁))) in let x134 := Z.add_with_get_carry((2^64), (x133₂, (0, x129₁))) in let x135 := 0 + x134₂ in let x136 := (Z.mul_split((2^64), (x130₁, 1)))₁ in let x137 := Z.mul_split((2^64), (x136, 0xffffffff00000001)) in let x138 := Z.mul_split((2^64), (x136, 0)) in let x139 := Z.mul_split((2^64), (x136, (2^32-1))) in let x140 := Z.mul_split((2^64), (x136, (2^64-1))) in let x141 := 1 * x137₂ in let x142 := 1 * x137₁ in let x143 := 1 * x138₂ in let x144 := 1 * x138₁ in let x145 := 1 * x139₂ in let x146 := 1 * x139₁ in let x147 := 1 * x140₂ in let x148 := 1 * x140₁ in let x149 := Z.add_with_get_carry((2^64), (0, (x148, 0))) in let x150 := Z.add_with_get_carry((2^64), (x149₂, (x147, 0))) in let x151 := Z.add_with_get_carry((2^64), (x150₂, (x145, 0))) in let x152 := Z.add_with_get_carry((2^64), (x151₂, (x143, 0))) in let x153 := Z.add_with_get_carry((2^64), (x152₂, (x141, 0))) in let x154 := Z.add_with_get_carry((2^64), (0, (x149₁, 0))) in let x155 := Z.add_with_get_carry((2^64), (x154₂, (x150₁, 0))) in let x156 := Z.add_with_get_carry((2^64), (x155₂, (x151₁, 0))) in let x157 := Z.add_with_get_carry((2^64), (x156₂, (x152₁, 0))) in let x158 := Z.add_with_get_carry((2^64), (x157₂, (x153₁, 0))) in let x159 := Z.add_with_get_carry((2^64), (0, (x154₁, 0))) in let x160 := Z.add_with_get_carry((2^64), (x159₂, (x155₁, 0))) in let x161 := Z.add_with_get_carry((2^64), (x160₂, (x156₁, 0))) in let x162 := Z.add_with_get_carry((2^64), (x161₂, (x157₁, 0))) in let x163 := Z.add_with_get_carry((2^64), (x162₂, (x158₁, 0))) in let x164 := Z.add_with_get_carry((2^64), (0, (x159₁, 0))) in let x165 := Z.add_with_get_carry((2^64), (x164₂, (x160₁, 0))) in let x166 := Z.add_with_get_carry((2^64), (x165₂, (x161₁, 0))) in let x167 := Z.add_with_get_carry((2^64), (x166₂, (x162₁, 0))) in let x168 := Z.add_with_get_carry((2^64), (x167₂, (x163₁, 0))) in let x169 := Z.add_with_get_carry((2^64), (0, (x164₁, 0))) in let x170 := Z.add_with_get_carry((2^64), (x169₂, (x165₁, 0))) in let x171 := Z.add_with_get_carry((2^64), (x170₂, (x166₁, 0))) in let x172 := Z.add_with_get_carry((2^64), (x171₂, (x167₁, 0))) in let x173 := Z.add_with_get_carry((2^64), (x172₂, (x168₁, 0))) in let x174 := Z.add_with_get_carry((2^64), (0, (x169₁, 0))) in let x175 := Z.add_with_get_carry((2^64), (x174₂, (x170₁, 0))) in let x176 := Z.add_with_get_carry((2^64), (x175₂, (x171₁, 0))) in let x177 := Z.add_with_get_carry((2^64), (x176₂, (x172₁, 0))) in let x178 := Z.add_with_get_carry((2^64), (x177₂, (x173₁, 0))) in let x179 := Z.add_with_get_carry((2^64), (0, (x174₁, 0))) in let x180 := Z.add_with_get_carry((2^64), (x179₂, (x175₁, 0))) in let x181 := Z.add_with_get_carry((2^64), (x180₂, (x176₁, 0))) in let x182 := Z.add_with_get_carry((2^64), (x181₂, (x177₁, 0))) in let x183 := Z.add_with_get_carry((2^64), (x182₂, (x178₁, 0))) in let x184 := Z.add_with_get_carry((2^64), (0, (x179₁, 0))) in let x185 := Z.add_with_get_carry((2^64), (x184₂, (x180₁, 0))) in let x186 := Z.add_with_get_carry((2^64), (x185₂, (x181₁, 0))) in let x187 := Z.add_with_get_carry((2^64), (x186₂, (x182₁, 0))) in let x188 := Z.add_with_get_carry((2^64), (x187₂, (x183₁, 0))) in let x189 := Z.add_with_get_carry((2^64), (0, (x184₁, 0))) in let x190 := Z.add_with_get_carry((2^64), (x189₂, (x185₁, 0))) in let x191 := Z.add_with_get_carry((2^64), (x190₂, (x186₁, 0))) in let x192 := Z.add_with_get_carry((2^64), (x191₂, (x187₁, 0))) in let x193 := Z.add_with_get_carry((2^64), (x192₂, (x188₁, 0))) in let x194 := Z.add_with_get_carry((2^64), (0, (x189₁, 0))) in let x195 := Z.add_with_get_carry((2^64), (x194₂, (x190₁, 0))) in let x196 := Z.add_with_get_carry((2^64), (x195₂, (x191₁, 0))) in let x197 := Z.add_with_get_carry((2^64), (x196₂, (x192₁, 0))) in let x198 := Z.add_with_get_carry((2^64), (x197₂, (x193₁, 0))) in let x199 := Z.add_with_get_carry((2^64), (0, (x194₁, 0))) in let x200 := Z.add_with_get_carry((2^64), (x199₂, (x195₁, 0))) in let x201 := Z.add_with_get_carry((2^64), (x200₂, (x196₁, 0))) in let x202 := Z.add_with_get_carry((2^64), (x201₂, (x197₁, 0))) in let x203 := Z.add_with_get_carry((2^64), (x202₂, (x198₁, 0))) in let x204 := Z.add_with_get_carry((2^64), (0, (x199₁, 0))) in let x205 := Z.add_with_get_carry((2^64), (x204₂, (x200₁, 0))) in let x206 := Z.add_with_get_carry((2^64), (x205₂, (x201₁, 0))) in let x207 := Z.add_with_get_carry((2^64), (x206₂, (x202₁, 0))) in let x208 := Z.add_with_get_carry((2^64), (x207₂, (x203₁, 0))) in let x209 := Z.add_with_get_carry((2^64), (0, (x204₁, 0))) in let x210 := Z.add_with_get_carry((2^64), (x209₂, (x205₁, 0))) in let x211 := Z.add_with_get_carry((2^64), (x210₂, (x206₁, 0))) in let x212 := Z.add_with_get_carry((2^64), (x211₂, (x207₁, 0))) in let x213 := Z.add_with_get_carry((2^64), (x212₂, (x208₁, 0))) in let x214 := Z.add_with_get_carry((2^64), (0, (x209₁, 0))) in let x215 := Z.add_with_get_carry((2^64), (x214₂, (x210₁, 0))) in let x216 := Z.add_with_get_carry((2^64), (x215₂, (x211₁, 0))) in let x217 := Z.add_with_get_carry((2^64), (x216₂, (x212₁, 0))) in let x218 := Z.add_with_get_carry((2^64), (x217₂, (x213₁, 0))) in let x219 := Z.add_with_get_carry((2^64), (0, (x214₁, 0))) in let x220 := Z.add_with_get_carry((2^64), (x219₂, (x215₁, x146))) in let x221 := Z.add_with_get_carry((2^64), (x220₂, (x216₁, x144))) in let x222 := Z.add_with_get_carry((2^64), (x221₂, (x217₁, x142))) in let x223 := Z.add_with_get_carry((2^64), (x222₂, (x218₁, 0))) in let x224 := Z.add_with_get_carry((2^64), (0, (x130₁, x219₁))) in let x225 := Z.add_with_get_carry((2^64), (x224₂, (x131₁, x220₁))) in let x226 := Z.add_with_get_carry((2^64), (x225₂, (x132₁, x221₁))) in let x227 := Z.add_with_get_carry((2^64), (x226₂, (x133₁, x222₁))) in let x228 := Z.add_with_get_carry((2^64), (x227₂, (x134₁, x223₁))) in let x229 := Z.add_with_get_carry((2^64), (x228₂, (x135, 0))) in let x230 := Z.mul_split((2^64), (0, x2[3])) in let x231 := Z.mul_split((2^64), (0, x2[2])) in let x232 := Z.mul_split((2^64), (0, x2[1])) in let x233 := Z.mul_split((2^64), (0, x2[0])) in let x234 := Z.mul_split((2^64), (0, x2[3])) in let x235 := Z.mul_split((2^64), (0, x2[2])) in let x236 := Z.mul_split((2^64), (0, x2[1])) in let x237 := Z.mul_split((2^64), (0, x2[0])) in let x238 := Z.mul_split((2^64), (0, x2[3])) in let x239 := Z.mul_split((2^64), (0, x2[2])) in let x240 := Z.mul_split((2^64), (0, x2[1])) in let x241 := Z.mul_split((2^64), (0, x2[0])) in let x242 := Z.mul_split((2^64), (x3, x2[3])) in let x243 := Z.mul_split((2^64), (x3, x2[2])) in let x244 := Z.mul_split((2^64), (x3, x2[1])) in let x245 := Z.mul_split((2^64), (x3, x2[0])) in let x246 := 2^192 * x230₂ in let x247 := 2^128 * x230₁ in let x248 := 2^128 * x231₂ in let x249 := 2^64 * x231₁ in let x250 := 2^64 * x232₂ in let x251 := 1 * x232₁ in let x252 := 1 * x233₂ in let x253 := 1 * x233₁ in let x254 := 2^128 * x234₂ in let x255 := 2^64 * x234₁ in let x256 := 2^64 * x235₂ in let x257 := 1 * x235₁ in let x258 := 1 * x236₂ in let x259 := 1 * x236₁ in let x260 := 1 * x237₂ in let x261 := 1 * x237₁ in let x262 := 2^64 * x238₂ in let x263 := 1 * x238₁ in let x264 := 1 * x239₂ in let x265 := 1 * x239₁ in let x266 := 1 * x240₂ in let x267 := 1 * x240₁ in let x268 := 1 * x241₂ in let x269 := 1 * x241₁ in let x270 := 1 * x242₂ in let x271 := 1 * x242₁ in let x272 := 1 * x243₂ in let x273 := 1 * x243₁ in let x274 := 1 * x244₂ in let x275 := 1 * x244₁ in let x276 := 1 * x245₂ in let x277 := 1 * x245₁ in let x278 := Z.add_with_get_carry((2^64), (0, (x277, 0))) in let x279 := Z.add_with_get_carry((2^64), (x278₂, (x276, 0))) in let x280 := Z.add_with_get_carry((2^64), (x279₂, (x274, 0))) in let x281 := Z.add_with_get_carry((2^64), (x280₂, (x272, 0))) in let x282 := Z.add_with_get_carry((2^64), (x281₂, (x270, x246))) in let x283 := Z.add_with_get_carry((2^64), (0, (x278₁, 0))) in let x284 := Z.add_with_get_carry((2^64), (x283₂, (x279₁, 0))) in let x285 := Z.add_with_get_carry((2^64), (x284₂, (x280₁, 0))) in let x286 := Z.add_with_get_carry((2^64), (x285₂, (x281₁, 0))) in let x287 := Z.add_with_get_carry((2^64), (x286₂, (x282₁, x247))) in let x288 := Z.add_with_get_carry((2^64), (0, (x283₁, 0))) in let x289 := Z.add_with_get_carry((2^64), (x288₂, (x284₁, 0))) in let x290 := Z.add_with_get_carry((2^64), (x289₂, (x285₁, 0))) in let x291 := Z.add_with_get_carry((2^64), (x290₂, (x286₁, 0))) in let x292 := Z.add_with_get_carry((2^64), (x291₂, (x287₁, x248))) in let x293 := Z.add_with_get_carry((2^64), (0, (x288₁, 0))) in let x294 := Z.add_with_get_carry((2^64), (x293₂, (x289₁, 0))) in let x295 := Z.add_with_get_carry((2^64), (x294₂, (x290₁, 0))) in let x296 := Z.add_with_get_carry((2^64), (x295₂, (x291₁, 0))) in let x297 := Z.add_with_get_carry((2^64), (x296₂, (x292₁, x249))) in let x298 := Z.add_with_get_carry((2^64), (0, (x293₁, 0))) in let x299 := Z.add_with_get_carry((2^64), (x298₂, (x294₁, 0))) in let x300 := Z.add_with_get_carry((2^64), (x299₂, (x295₁, 0))) in let x301 := Z.add_with_get_carry((2^64), (x300₂, (x296₁, 0))) in let x302 := Z.add_with_get_carry((2^64), (x301₂, (x297₁, x250))) in let x303 := Z.add_with_get_carry((2^64), (0, (x298₁, 0))) in let x304 := Z.add_with_get_carry((2^64), (x303₂, (x299₁, 0))) in let x305 := Z.add_with_get_carry((2^64), (x304₂, (x300₁, 0))) in let x306 := Z.add_with_get_carry((2^64), (x305₂, (x301₁, 0))) in let x307 := Z.add_with_get_carry((2^64), (x306₂, (x302₁, x251))) in let x308 := Z.add_with_get_carry((2^64), (0, (x303₁, 0))) in let x309 := Z.add_with_get_carry((2^64), (x308₂, (x304₁, 0))) in let x310 := Z.add_with_get_carry((2^64), (x309₂, (x305₁, 0))) in let x311 := Z.add_with_get_carry((2^64), (x310₂, (x306₁, 0))) in let x312 := Z.add_with_get_carry((2^64), (x311₂, (x307₁, x252))) in let x313 := Z.add_with_get_carry((2^64), (0, (x308₁, 0))) in let x314 := Z.add_with_get_carry((2^64), (x313₂, (x309₁, 0))) in let x315 := Z.add_with_get_carry((2^64), (x314₂, (x310₁, 0))) in let x316 := Z.add_with_get_carry((2^64), (x315₂, (x311₁, 0))) in let x317 := Z.add_with_get_carry((2^64), (x316₂, (x312₁, x254))) in let x318 := Z.add_with_get_carry((2^64), (0, (x313₁, 0))) in let x319 := Z.add_with_get_carry((2^64), (x318₂, (x314₁, 0))) in let x320 := Z.add_with_get_carry((2^64), (x319₂, (x315₁, 0))) in let x321 := Z.add_with_get_carry((2^64), (x320₂, (x316₁, 0))) in let x322 := Z.add_with_get_carry((2^64), (x321₂, (x317₁, x255))) in let x323 := Z.add_with_get_carry((2^64), (0, (x318₁, 0))) in let x324 := Z.add_with_get_carry((2^64), (x323₂, (x319₁, 0))) in let x325 := Z.add_with_get_carry((2^64), (x324₂, (x320₁, 0))) in let x326 := Z.add_with_get_carry((2^64), (x325₂, (x321₁, x253))) in let x327 := Z.add_with_get_carry((2^64), (x326₂, (x322₁, x256))) in let x328 := Z.add_with_get_carry((2^64), (0, (x323₁, 0))) in let x329 := Z.add_with_get_carry((2^64), (x328₂, (x324₁, 0))) in let x330 := Z.add_with_get_carry((2^64), (x329₂, (x325₁, 0))) in let x331 := Z.add_with_get_carry((2^64), (x330₂, (x326₁, x259))) in let x332 := Z.add_with_get_carry((2^64), (x331₂, (x327₁, x257))) in let x333 := Z.add_with_get_carry((2^64), (0, (x328₁, 0))) in let x334 := Z.add_with_get_carry((2^64), (x333₂, (x329₁, 0))) in let x335 := Z.add_with_get_carry((2^64), (x334₂, (x330₁, x261))) in let x336 := Z.add_with_get_carry((2^64), (x335₂, (x331₁, x260))) in let x337 := Z.add_with_get_carry((2^64), (x336₂, (x332₁, x258))) in let x338 := Z.add_with_get_carry((2^64), (0, (x333₁, 0))) in let x339 := Z.add_with_get_carry((2^64), (x338₂, (x334₁, 0))) in let x340 := Z.add_with_get_carry((2^64), (x339₂, (x335₁, x267))) in let x341 := Z.add_with_get_carry((2^64), (x340₂, (x336₁, x265))) in let x342 := Z.add_with_get_carry((2^64), (x341₂, (x337₁, x262))) in let x343 := Z.add_with_get_carry((2^64), (0, (x338₁, 0))) in let x344 := Z.add_with_get_carry((2^64), (x343₂, (x339₁, x269))) in let x345 := Z.add_with_get_carry((2^64), (x344₂, (x340₁, x268))) in let x346 := Z.add_with_get_carry((2^64), (x345₂, (x341₁, x266))) in let x347 := Z.add_with_get_carry((2^64), (x346₂, (x342₁, x263))) in let x348 := Z.add_with_get_carry((2^64), (0, (x343₁, 0))) in let x349 := Z.add_with_get_carry((2^64), (x348₂, (x344₁, x275))) in let x350 := Z.add_with_get_carry((2^64), (x349₂, (x345₁, x273))) in let x351 := Z.add_with_get_carry((2^64), (x350₂, (x346₁, x271))) in let x352 := Z.add_with_get_carry((2^64), (x351₂, (x347₁, x264))) in let x353 := Z.add_with_get_carry((2^64), (0, (x225₁, x348₁))) in let x354 := Z.add_with_get_carry((2^64), (x353₂, (x226₁, x349₁))) in let x355 := Z.add_with_get_carry((2^64), (x354₂, (x227₁, x350₁))) in let x356 := Z.add_with_get_carry((2^64), (x355₂, (x228₁, x351₁))) in let x357 := Z.add_with_get_carry((2^64), (x356₂, (x229₁, x352₁))) in let x358 := 0 + x357₂ in let x359 := (Z.mul_split((2^64), (x353₁, 1)))₁ in let x360 := Z.mul_split((2^64), (x359, 0xffffffff00000001)) in let x361 := Z.mul_split((2^64), (x359, 0)) in let x362 := Z.mul_split((2^64), (x359, (2^32-1))) in let x363 := Z.mul_split((2^64), (x359, (2^64-1))) in let x364 := 1 * x360₂ in let x365 := 1 * x360₁ in let x366 := 1 * x361₂ in let x367 := 1 * x361₁ in let x368 := 1 * x362₂ in let x369 := 1 * x362₁ in let x370 := 1 * x363₂ in let x371 := 1 * x363₁ in let x372 := Z.add_with_get_carry((2^64), (0, (x371, 0))) in let x373 := Z.add_with_get_carry((2^64), (x372₂, (x370, 0))) in let x374 := Z.add_with_get_carry((2^64), (x373₂, (x368, 0))) in let x375 := Z.add_with_get_carry((2^64), (x374₂, (x366, 0))) in let x376 := Z.add_with_get_carry((2^64), (x375₂, (x364, 0))) in let x377 := Z.add_with_get_carry((2^64), (0, (x372₁, 0))) in let x378 := Z.add_with_get_carry((2^64), (x377₂, (x373₁, 0))) in let x379 := Z.add_with_get_carry((2^64), (x378₂, (x374₁, 0))) in let x380 := Z.add_with_get_carry((2^64), (x379₂, (x375₁, 0))) in let x381 := Z.add_with_get_carry((2^64), (x380₂, (x376₁, 0))) in let x382 := Z.add_with_get_carry((2^64), (0, (x377₁, 0))) in let x383 := Z.add_with_get_carry((2^64), (x382₂, (x378₁, 0))) in let x384 := Z.add_with_get_carry((2^64), (x383₂, (x379₁, 0))) in let x385 := Z.add_with_get_carry((2^64), (x384₂, (x380₁, 0))) in let x386 := Z.add_with_get_carry((2^64), (x385₂, (x381₁, 0))) in let x387 := Z.add_with_get_carry((2^64), (0, (x382₁, 0))) in let x388 := Z.add_with_get_carry((2^64), (x387₂, (x383₁, 0))) in let x389 := Z.add_with_get_carry((2^64), (x388₂, (x384₁, 0))) in let x390 := Z.add_with_get_carry((2^64), (x389₂, (x385₁, 0))) in let x391 := Z.add_with_get_carry((2^64), (x390₂, (x386₁, 0))) in let x392 := Z.add_with_get_carry((2^64), (0, (x387₁, 0))) in let x393 := Z.add_with_get_carry((2^64), (x392₂, (x388₁, 0))) in let x394 := Z.add_with_get_carry((2^64), (x393₂, (x389₁, 0))) in let x395 := Z.add_with_get_carry((2^64), (x394₂, (x390₁, 0))) in let x396 := Z.add_with_get_carry((2^64), (x395₂, (x391₁, 0))) in let x397 := Z.add_with_get_carry((2^64), (0, (x392₁, 0))) in let x398 := Z.add_with_get_carry((2^64), (x397₂, (x393₁, 0))) in let x399 := Z.add_with_get_carry((2^64), (x398₂, (x394₁, 0))) in let x400 := Z.add_with_get_carry((2^64), (x399₂, (x395₁, 0))) in let x401 := Z.add_with_get_carry((2^64), (x400₂, (x396₁, 0))) in let x402 := Z.add_with_get_carry((2^64), (0, (x397₁, 0))) in let x403 := Z.add_with_get_carry((2^64), (x402₂, (x398₁, 0))) in let x404 := Z.add_with_get_carry((2^64), (x403₂, (x399₁, 0))) in let x405 := Z.add_with_get_carry((2^64), (x404₂, (x400₁, 0))) in let x406 := Z.add_with_get_carry((2^64), (x405₂, (x401₁, 0))) in let x407 := Z.add_with_get_carry((2^64), (0, (x402₁, 0))) in let x408 := Z.add_with_get_carry((2^64), (x407₂, (x403₁, 0))) in let x409 := Z.add_with_get_carry((2^64), (x408₂, (x404₁, 0))) in let x410 := Z.add_with_get_carry((2^64), (x409₂, (x405₁, 0))) in let x411 := Z.add_with_get_carry((2^64), (x410₂, (x406₁, 0))) in let x412 := Z.add_with_get_carry((2^64), (0, (x407₁, 0))) in let x413 := Z.add_with_get_carry((2^64), (x412₂, (x408₁, 0))) in let x414 := Z.add_with_get_carry((2^64), (x413₂, (x409₁, 0))) in let x415 := Z.add_with_get_carry((2^64), (x414₂, (x410₁, 0))) in let x416 := Z.add_with_get_carry((2^64), (x415₂, (x411₁, 0))) in let x417 := Z.add_with_get_carry((2^64), (0, (x412₁, 0))) in let x418 := Z.add_with_get_carry((2^64), (x417₂, (x413₁, 0))) in let x419 := Z.add_with_get_carry((2^64), (x418₂, (x414₁, 0))) in let x420 := Z.add_with_get_carry((2^64), (x419₂, (x415₁, 0))) in let x421 := Z.add_with_get_carry((2^64), (x420₂, (x416₁, 0))) in let x422 := Z.add_with_get_carry((2^64), (0, (x417₁, 0))) in let x423 := Z.add_with_get_carry((2^64), (x422₂, (x418₁, 0))) in let x424 := Z.add_with_get_carry((2^64), (x423₂, (x419₁, 0))) in let x425 := Z.add_with_get_carry((2^64), (x424₂, (x420₁, 0))) in let x426 := Z.add_with_get_carry((2^64), (x425₂, (x421₁, 0))) in let x427 := Z.add_with_get_carry((2^64), (0, (x422₁, 0))) in let x428 := Z.add_with_get_carry((2^64), (x427₂, (x423₁, 0))) in let x429 := Z.add_with_get_carry((2^64), (x428₂, (x424₁, 0))) in let x430 := Z.add_with_get_carry((2^64), (x429₂, (x425₁, 0))) in let x431 := Z.add_with_get_carry((2^64), (x430₂, (x426₁, 0))) in let x432 := Z.add_with_get_carry((2^64), (0, (x427₁, 0))) in let x433 := Z.add_with_get_carry((2^64), (x432₂, (x428₁, 0))) in let x434 := Z.add_with_get_carry((2^64), (x433₂, (x429₁, 0))) in let x435 := Z.add_with_get_carry((2^64), (x434₂, (x430₁, 0))) in let x436 := Z.add_with_get_carry((2^64), (x435₂, (x431₁, 0))) in let x437 := Z.add_with_get_carry((2^64), (0, (x432₁, 0))) in let x438 := Z.add_with_get_carry((2^64), (x437₂, (x433₁, 0))) in let x439 := Z.add_with_get_carry((2^64), (x438₂, (x434₁, 0))) in let x440 := Z.add_with_get_carry((2^64), (x439₂, (x435₁, 0))) in let x441 := Z.add_with_get_carry((2^64), (x440₂, (x436₁, 0))) in let x442 := Z.add_with_get_carry((2^64), (0, (x437₁, 0))) in let x443 := Z.add_with_get_carry((2^64), (x442₂, (x438₁, x369))) in let x444 := Z.add_with_get_carry((2^64), (x443₂, (x439₁, x367))) in let x445 := Z.add_with_get_carry((2^64), (x444₂, (x440₁, x365))) in let x446 := Z.add_with_get_carry((2^64), (x445₂, (x441₁, 0))) in let x447 := Z.add_with_get_carry((2^64), (0, (x353₁, x442₁))) in let x448 := Z.add_with_get_carry((2^64), (x447₂, (x354₁, x443₁))) in let x449 := Z.add_with_get_carry((2^64), (x448₂, (x355₁, x444₁))) in let x450 := Z.add_with_get_carry((2^64), (x449₂, (x356₁, x445₁))) in let x451 := Z.add_with_get_carry((2^64), (x450₂, (x357₁, x446₁))) in let x452 := Z.add_with_get_carry((2^64), (x451₂, (x358, 0))) in let x453 := Z.mul_split((2^64), (0, x2[3])) in let x454 := Z.mul_split((2^64), (0, x2[2])) in let x455 := Z.mul_split((2^64), (0, x2[1])) in let x456 := Z.mul_split((2^64), (0, x2[0])) in let x457 := Z.mul_split((2^64), (0, x2[3])) in let x458 := Z.mul_split((2^64), (0, x2[2])) in let x459 := Z.mul_split((2^64), (0, x2[1])) in let x460 := Z.mul_split((2^64), (0, x2[0])) in let x461 := Z.mul_split((2^64), (0, x2[3])) in let x462 := Z.mul_split((2^64), (0, x2[2])) in let x463 := Z.mul_split((2^64), (0, x2[1])) in let x464 := Z.mul_split((2^64), (0, x2[0])) in let x465 := Z.mul_split((2^64), (x4, x2[3])) in let x466 := Z.mul_split((2^64), (x4, x2[2])) in let x467 := Z.mul_split((2^64), (x4, x2[1])) in let x468 := Z.mul_split((2^64), (x4, x2[0])) in let x469 := 2^192 * x453₂ in let x470 := 2^128 * x453₁ in let x471 := 2^128 * x454₂ in let x472 := 2^64 * x454₁ in let x473 := 2^64 * x455₂ in let x474 := 1 * x455₁ in let x475 := 1 * x456₂ in let x476 := 1 * x456₁ in let x477 := 2^128 * x457₂ in let x478 := 2^64 * x457₁ in let x479 := 2^64 * x458₂ in let x480 := 1 * x458₁ in let x481 := 1 * x459₂ in let x482 := 1 * x459₁ in let x483 := 1 * x460₂ in let x484 := 1 * x460₁ in let x485 := 2^64 * x461₂ in let x486 := 1 * x461₁ in let x487 := 1 * x462₂ in let x488 := 1 * x462₁ in let x489 := 1 * x463₂ in let x490 := 1 * x463₁ in let x491 := 1 * x464₂ in let x492 := 1 * x464₁ in let x493 := 1 * x465₂ in let x494 := 1 * x465₁ in let x495 := 1 * x466₂ in let x496 := 1 * x466₁ in let x497 := 1 * x467₂ in let x498 := 1 * x467₁ in let x499 := 1 * x468₂ in let x500 := 1 * x468₁ in let x501 := Z.add_with_get_carry((2^64), (0, (x500, 0))) in let x502 := Z.add_with_get_carry((2^64), (x501₂, (x499, 0))) in let x503 := Z.add_with_get_carry((2^64), (x502₂, (x497, 0))) in let x504 := Z.add_with_get_carry((2^64), (x503₂, (x495, 0))) in let x505 := Z.add_with_get_carry((2^64), (x504₂, (x493, x469))) in let x506 := Z.add_with_get_carry((2^64), (0, (x501₁, 0))) in let x507 := Z.add_with_get_carry((2^64), (x506₂, (x502₁, 0))) in let x508 := Z.add_with_get_carry((2^64), (x507₂, (x503₁, 0))) in let x509 := Z.add_with_get_carry((2^64), (x508₂, (x504₁, 0))) in let x510 := Z.add_with_get_carry((2^64), (x509₂, (x505₁, x470))) in let x511 := Z.add_with_get_carry((2^64), (0, (x506₁, 0))) in let x512 := Z.add_with_get_carry((2^64), (x511₂, (x507₁, 0))) in let x513 := Z.add_with_get_carry((2^64), (x512₂, (x508₁, 0))) in let x514 := Z.add_with_get_carry((2^64), (x513₂, (x509₁, 0))) in let x515 := Z.add_with_get_carry((2^64), (x514₂, (x510₁, x471))) in let x516 := Z.add_with_get_carry((2^64), (0, (x511₁, 0))) in let x517 := Z.add_with_get_carry((2^64), (x516₂, (x512₁, 0))) in let x518 := Z.add_with_get_carry((2^64), (x517₂, (x513₁, 0))) in let x519 := Z.add_with_get_carry((2^64), (x518₂, (x514₁, 0))) in let x520 := Z.add_with_get_carry((2^64), (x519₂, (x515₁, x472))) in let x521 := Z.add_with_get_carry((2^64), (0, (x516₁, 0))) in let x522 := Z.add_with_get_carry((2^64), (x521₂, (x517₁, 0))) in let x523 := Z.add_with_get_carry((2^64), (x522₂, (x518₁, 0))) in let x524 := Z.add_with_get_carry((2^64), (x523₂, (x519₁, 0))) in let x525 := Z.add_with_get_carry((2^64), (x524₂, (x520₁, x473))) in let x526 := Z.add_with_get_carry((2^64), (0, (x521₁, 0))) in let x527 := Z.add_with_get_carry((2^64), (x526₂, (x522₁, 0))) in let x528 := Z.add_with_get_carry((2^64), (x527₂, (x523₁, 0))) in let x529 := Z.add_with_get_carry((2^64), (x528₂, (x524₁, 0))) in let x530 := Z.add_with_get_carry((2^64), (x529₂, (x525₁, x474))) in let x531 := Z.add_with_get_carry((2^64), (0, (x526₁, 0))) in let x532 := Z.add_with_get_carry((2^64), (x531₂, (x527₁, 0))) in let x533 := Z.add_with_get_carry((2^64), (x532₂, (x528₁, 0))) in let x534 := Z.add_with_get_carry((2^64), (x533₂, (x529₁, 0))) in let x535 := Z.add_with_get_carry((2^64), (x534₂, (x530₁, x475))) in let x536 := Z.add_with_get_carry((2^64), (0, (x531₁, 0))) in let x537 := Z.add_with_get_carry((2^64), (x536₂, (x532₁, 0))) in let x538 := Z.add_with_get_carry((2^64), (x537₂, (x533₁, 0))) in let x539 := Z.add_with_get_carry((2^64), (x538₂, (x534₁, 0))) in let x540 := Z.add_with_get_carry((2^64), (x539₂, (x535₁, x477))) in let x541 := Z.add_with_get_carry((2^64), (0, (x536₁, 0))) in let x542 := Z.add_with_get_carry((2^64), (x541₂, (x537₁, 0))) in let x543 := Z.add_with_get_carry((2^64), (x542₂, (x538₁, 0))) in let x544 := Z.add_with_get_carry((2^64), (x543₂, (x539₁, 0))) in let x545 := Z.add_with_get_carry((2^64), (x544₂, (x540₁, x478))) in let x546 := Z.add_with_get_carry((2^64), (0, (x541₁, 0))) in let x547 := Z.add_with_get_carry((2^64), (x546₂, (x542₁, 0))) in let x548 := Z.add_with_get_carry((2^64), (x547₂, (x543₁, 0))) in let x549 := Z.add_with_get_carry((2^64), (x548₂, (x544₁, x476))) in let x550 := Z.add_with_get_carry((2^64), (x549₂, (x545₁, x479))) in let x551 := Z.add_with_get_carry((2^64), (0, (x546₁, 0))) in let x552 := Z.add_with_get_carry((2^64), (x551₂, (x547₁, 0))) in let x553 := Z.add_with_get_carry((2^64), (x552₂, (x548₁, 0))) in let x554 := Z.add_with_get_carry((2^64), (x553₂, (x549₁, x482))) in let x555 := Z.add_with_get_carry((2^64), (x554₂, (x550₁, x480))) in let x556 := Z.add_with_get_carry((2^64), (0, (x551₁, 0))) in let x557 := Z.add_with_get_carry((2^64), (x556₂, (x552₁, 0))) in let x558 := Z.add_with_get_carry((2^64), (x557₂, (x553₁, x484))) in let x559 := Z.add_with_get_carry((2^64), (x558₂, (x554₁, x483))) in let x560 := Z.add_with_get_carry((2^64), (x559₂, (x555₁, x481))) in let x561 := Z.add_with_get_carry((2^64), (0, (x556₁, 0))) in let x562 := Z.add_with_get_carry((2^64), (x561₂, (x557₁, 0))) in let x563 := Z.add_with_get_carry((2^64), (x562₂, (x558₁, x490))) in let x564 := Z.add_with_get_carry((2^64), (x563₂, (x559₁, x488))) in let x565 := Z.add_with_get_carry((2^64), (x564₂, (x560₁, x485))) in let x566 := Z.add_with_get_carry((2^64), (0, (x561₁, 0))) in let x567 := Z.add_with_get_carry((2^64), (x566₂, (x562₁, x492))) in let x568 := Z.add_with_get_carry((2^64), (x567₂, (x563₁, x491))) in let x569 := Z.add_with_get_carry((2^64), (x568₂, (x564₁, x489))) in let x570 := Z.add_with_get_carry((2^64), (x569₂, (x565₁, x486))) in let x571 := Z.add_with_get_carry((2^64), (0, (x566₁, 0))) in let x572 := Z.add_with_get_carry((2^64), (x571₂, (x567₁, x498))) in let x573 := Z.add_with_get_carry((2^64), (x572₂, (x568₁, x496))) in let x574 := Z.add_with_get_carry((2^64), (x573₂, (x569₁, x494))) in let x575 := Z.add_with_get_carry((2^64), (x574₂, (x570₁, x487))) in let x576 := Z.add_with_get_carry((2^64), (0, (x448₁, x571₁))) in let x577 := Z.add_with_get_carry((2^64), (x576₂, (x449₁, x572₁))) in let x578 := Z.add_with_get_carry((2^64), (x577₂, (x450₁, x573₁))) in let x579 := Z.add_with_get_carry((2^64), (x578₂, (x451₁, x574₁))) in let x580 := Z.add_with_get_carry((2^64), (x579₂, (x452₁, x575₁))) in let x581 := 0 + x580₂ in let x582 := (Z.mul_split((2^64), (x576₁, 1)))₁ in let x583 := Z.mul_split((2^64), (x582, 0xffffffff00000001)) in let x584 := Z.mul_split((2^64), (x582, 0)) in let x585 := Z.mul_split((2^64), (x582, (2^32-1))) in let x586 := Z.mul_split((2^64), (x582, (2^64-1))) in let x587 := 1 * x583₂ in let x588 := 1 * x583₁ in let x589 := 1 * x584₂ in let x590 := 1 * x584₁ in let x591 := 1 * x585₂ in let x592 := 1 * x585₁ in let x593 := 1 * x586₂ in let x594 := 1 * x586₁ in let x595 := Z.add_with_get_carry((2^64), (0, (x594, 0))) in let x596 := Z.add_with_get_carry((2^64), (x595₂, (x593, 0))) in let x597 := Z.add_with_get_carry((2^64), (x596₂, (x591, 0))) in let x598 := Z.add_with_get_carry((2^64), (x597₂, (x589, 0))) in let x599 := Z.add_with_get_carry((2^64), (x598₂, (x587, 0))) in let x600 := Z.add_with_get_carry((2^64), (0, (x595₁, 0))) in let x601 := Z.add_with_get_carry((2^64), (x600₂, (x596₁, 0))) in let x602 := Z.add_with_get_carry((2^64), (x601₂, (x597₁, 0))) in let x603 := Z.add_with_get_carry((2^64), (x602₂, (x598₁, 0))) in let x604 := Z.add_with_get_carry((2^64), (x603₂, (x599₁, 0))) in let x605 := Z.add_with_get_carry((2^64), (0, (x600₁, 0))) in let x606 := Z.add_with_get_carry((2^64), (x605₂, (x601₁, 0))) in let x607 := Z.add_with_get_carry((2^64), (x606₂, (x602₁, 0))) in let x608 := Z.add_with_get_carry((2^64), (x607₂, (x603₁, 0))) in let x609 := Z.add_with_get_carry((2^64), (x608₂, (x604₁, 0))) in let x610 := Z.add_with_get_carry((2^64), (0, (x605₁, 0))) in let x611 := Z.add_with_get_carry((2^64), (x610₂, (x606₁, 0))) in let x612 := Z.add_with_get_carry((2^64), (x611₂, (x607₁, 0))) in let x613 := Z.add_with_get_carry((2^64), (x612₂, (x608₁, 0))) in let x614 := Z.add_with_get_carry((2^64), (x613₂, (x609₁, 0))) in let x615 := Z.add_with_get_carry((2^64), (0, (x610₁, 0))) in let x616 := Z.add_with_get_carry((2^64), (x615₂, (x611₁, 0))) in let x617 := Z.add_with_get_carry((2^64), (x616₂, (x612₁, 0))) in let x618 := Z.add_with_get_carry((2^64), (x617₂, (x613₁, 0))) in let x619 := Z.add_with_get_carry((2^64), (x618₂, (x614₁, 0))) in let x620 := Z.add_with_get_carry((2^64), (0, (x615₁, 0))) in let x621 := Z.add_with_get_carry((2^64), (x620₂, (x616₁, 0))) in let x622 := Z.add_with_get_carry((2^64), (x621₂, (x617₁, 0))) in let x623 := Z.add_with_get_carry((2^64), (x622₂, (x618₁, 0))) in let x624 := Z.add_with_get_carry((2^64), (x623₂, (x619₁, 0))) in let x625 := Z.add_with_get_carry((2^64), (0, (x620₁, 0))) in let x626 := Z.add_with_get_carry((2^64), (x625₂, (x621₁, 0))) in let x627 := Z.add_with_get_carry((2^64), (x626₂, (x622₁, 0))) in let x628 := Z.add_with_get_carry((2^64), (x627₂, (x623₁, 0))) in let x629 := Z.add_with_get_carry((2^64), (x628₂, (x624₁, 0))) in let x630 := Z.add_with_get_carry((2^64), (0, (x625₁, 0))) in let x631 := Z.add_with_get_carry((2^64), (x630₂, (x626₁, 0))) in let x632 := Z.add_with_get_carry((2^64), (x631₂, (x627₁, 0))) in let x633 := Z.add_with_get_carry((2^64), (x632₂, (x628₁, 0))) in let x634 := Z.add_with_get_carry((2^64), (x633₂, (x629₁, 0))) in let x635 := Z.add_with_get_carry((2^64), (0, (x630₁, 0))) in let x636 := Z.add_with_get_carry((2^64), (x635₂, (x631₁, 0))) in let x637 := Z.add_with_get_carry((2^64), (x636₂, (x632₁, 0))) in let x638 := Z.add_with_get_carry((2^64), (x637₂, (x633₁, 0))) in let x639 := Z.add_with_get_carry((2^64), (x638₂, (x634₁, 0))) in let x640 := Z.add_with_get_carry((2^64), (0, (x635₁, 0))) in let x641 := Z.add_with_get_carry((2^64), (x640₂, (x636₁, 0))) in let x642 := Z.add_with_get_carry((2^64), (x641₂, (x637₁, 0))) in let x643 := Z.add_with_get_carry((2^64), (x642₂, (x638₁, 0))) in let x644 := Z.add_with_get_carry((2^64), (x643₂, (x639₁, 0))) in let x645 := Z.add_with_get_carry((2^64), (0, (x640₁, 0))) in let x646 := Z.add_with_get_carry((2^64), (x645₂, (x641₁, 0))) in let x647 := Z.add_with_get_carry((2^64), (x646₂, (x642₁, 0))) in let x648 := Z.add_with_get_carry((2^64), (x647₂, (x643₁, 0))) in let x649 := Z.add_with_get_carry((2^64), (x648₂, (x644₁, 0))) in let x650 := Z.add_with_get_carry((2^64), (0, (x645₁, 0))) in let x651 := Z.add_with_get_carry((2^64), (x650₂, (x646₁, 0))) in let x652 := Z.add_with_get_carry((2^64), (x651₂, (x647₁, 0))) in let x653 := Z.add_with_get_carry((2^64), (x652₂, (x648₁, 0))) in let x654 := Z.add_with_get_carry((2^64), (x653₂, (x649₁, 0))) in let x655 := Z.add_with_get_carry((2^64), (0, (x650₁, 0))) in let x656 := Z.add_with_get_carry((2^64), (x655₂, (x651₁, 0))) in let x657 := Z.add_with_get_carry((2^64), (x656₂, (x652₁, 0))) in let x658 := Z.add_with_get_carry((2^64), (x657₂, (x653₁, 0))) in let x659 := Z.add_with_get_carry((2^64), (x658₂, (x654₁, 0))) in let x660 := Z.add_with_get_carry((2^64), (0, (x655₁, 0))) in let x661 := Z.add_with_get_carry((2^64), (x660₂, (x656₁, 0))) in let x662 := Z.add_with_get_carry((2^64), (x661₂, (x657₁, 0))) in let x663 := Z.add_with_get_carry((2^64), (x662₂, (x658₁, 0))) in let x664 := Z.add_with_get_carry((2^64), (x663₂, (x659₁, 0))) in let x665 := Z.add_with_get_carry((2^64), (0, (x660₁, 0))) in let x666 := Z.add_with_get_carry((2^64), (x665₂, (x661₁, x592))) in let x667 := Z.add_with_get_carry((2^64), (x666₂, (x662₁, x590))) in let x668 := Z.add_with_get_carry((2^64), (x667₂, (x663₁, x588))) in let x669 := Z.add_with_get_carry((2^64), (x668₂, (x664₁, 0))) in let x670 := Z.add_with_get_carry((2^64), (0, (x576₁, x665₁))) in let x671 := Z.add_with_get_carry((2^64), (x670₂, (x577₁, x666₁))) in let x672 := Z.add_with_get_carry((2^64), (x671₂, (x578₁, x667₁))) in let x673 := Z.add_with_get_carry((2^64), (x672₂, (x579₁, x668₁))) in let x674 := Z.add_with_get_carry((2^64), (x673₂, (x580₁, x669₁))) in let x675 := Z.add_with_get_carry((2^64), (x674₂, (x581, 0))) in let x676 := Z.mul_split((2^64), (0, x2[3])) in let x677 := Z.mul_split((2^64), (0, x2[2])) in let x678 := Z.mul_split((2^64), (0, x2[1])) in let x679 := Z.mul_split((2^64), (0, x2[0])) in let x680 := Z.mul_split((2^64), (0, x2[3])) in let x681 := Z.mul_split((2^64), (0, x2[2])) in let x682 := Z.mul_split((2^64), (0, x2[1])) in let x683 := Z.mul_split((2^64), (0, x2[0])) in let x684 := Z.mul_split((2^64), (0, x2[3])) in let x685 := Z.mul_split((2^64), (0, x2[2])) in let x686 := Z.mul_split((2^64), (0, x2[1])) in let x687 := Z.mul_split((2^64), (0, x2[0])) in let x688 := Z.mul_split((2^64), (x5, x2[3])) in let x689 := Z.mul_split((2^64), (x5, x2[2])) in let x690 := Z.mul_split((2^64), (x5, x2[1])) in let x691 := Z.mul_split((2^64), (x5, x2[0])) in let x692 := 2^192 * x676₂ in let x693 := 2^128 * x676₁ in let x694 := 2^128 * x677₂ in let x695 := 2^64 * x677₁ in let x696 := 2^64 * x678₂ in let x697 := 1 * x678₁ in let x698 := 1 * x679₂ in let x699 := 1 * x679₁ in let x700 := 2^128 * x680₂ in let x701 := 2^64 * x680₁ in let x702 := 2^64 * x681₂ in let x703 := 1 * x681₁ in let x704 := 1 * x682₂ in let x705 := 1 * x682₁ in let x706 := 1 * x683₂ in let x707 := 1 * x683₁ in let x708 := 2^64 * x684₂ in let x709 := 1 * x684₁ in let x710 := 1 * x685₂ in let x711 := 1 * x685₁ in let x712 := 1 * x686₂ in let x713 := 1 * x686₁ in let x714 := 1 * x687₂ in let x715 := 1 * x687₁ in let x716 := 1 * x688₂ in let x717 := 1 * x688₁ in let x718 := 1 * x689₂ in let x719 := 1 * x689₁ in let x720 := 1 * x690₂ in let x721 := 1 * x690₁ in let x722 := 1 * x691₂ in let x723 := 1 * x691₁ in let x724 := Z.add_with_get_carry((2^64), (0, (x723, 0))) in let x725 := Z.add_with_get_carry((2^64), (x724₂, (x722, 0))) in let x726 := Z.add_with_get_carry((2^64), (x725₂, (x720, 0))) in let x727 := Z.add_with_get_carry((2^64), (x726₂, (x718, 0))) in let x728 := Z.add_with_get_carry((2^64), (x727₂, (x716, x692))) in let x729 := Z.add_with_get_carry((2^64), (0, (x724₁, 0))) in let x730 := Z.add_with_get_carry((2^64), (x729₂, (x725₁, 0))) in let x731 := Z.add_with_get_carry((2^64), (x730₂, (x726₁, 0))) in let x732 := Z.add_with_get_carry((2^64), (x731₂, (x727₁, 0))) in let x733 := Z.add_with_get_carry((2^64), (x732₂, (x728₁, x693))) in let x734 := Z.add_with_get_carry((2^64), (0, (x729₁, 0))) in let x735 := Z.add_with_get_carry((2^64), (x734₂, (x730₁, 0))) in let x736 := Z.add_with_get_carry((2^64), (x735₂, (x731₁, 0))) in let x737 := Z.add_with_get_carry((2^64), (x736₂, (x732₁, 0))) in let x738 := Z.add_with_get_carry((2^64), (x737₂, (x733₁, x694))) in let x739 := Z.add_with_get_carry((2^64), (0, (x734₁, 0))) in let x740 := Z.add_with_get_carry((2^64), (x739₂, (x735₁, 0))) in let x741 := Z.add_with_get_carry((2^64), (x740₂, (x736₁, 0))) in let x742 := Z.add_with_get_carry((2^64), (x741₂, (x737₁, 0))) in let x743 := Z.add_with_get_carry((2^64), (x742₂, (x738₁, x695))) in let x744 := Z.add_with_get_carry((2^64), (0, (x739₁, 0))) in let x745 := Z.add_with_get_carry((2^64), (x744₂, (x740₁, 0))) in let x746 := Z.add_with_get_carry((2^64), (x745₂, (x741₁, 0))) in let x747 := Z.add_with_get_carry((2^64), (x746₂, (x742₁, 0))) in let x748 := Z.add_with_get_carry((2^64), (x747₂, (x743₁, x696))) in let x749 := Z.add_with_get_carry((2^64), (0, (x744₁, 0))) in let x750 := Z.add_with_get_carry((2^64), (x749₂, (x745₁, 0))) in let x751 := Z.add_with_get_carry((2^64), (x750₂, (x746₁, 0))) in let x752 := Z.add_with_get_carry((2^64), (x751₂, (x747₁, 0))) in let x753 := Z.add_with_get_carry((2^64), (x752₂, (x748₁, x697))) in let x754 := Z.add_with_get_carry((2^64), (0, (x749₁, 0))) in let x755 := Z.add_with_get_carry((2^64), (x754₂, (x750₁, 0))) in let x756 := Z.add_with_get_carry((2^64), (x755₂, (x751₁, 0))) in let x757 := Z.add_with_get_carry((2^64), (x756₂, (x752₁, 0))) in let x758 := Z.add_with_get_carry((2^64), (x757₂, (x753₁, x698))) in let x759 := Z.add_with_get_carry((2^64), (0, (x754₁, 0))) in let x760 := Z.add_with_get_carry((2^64), (x759₂, (x755₁, 0))) in let x761 := Z.add_with_get_carry((2^64), (x760₂, (x756₁, 0))) in let x762 := Z.add_with_get_carry((2^64), (x761₂, (x757₁, 0))) in let x763 := Z.add_with_get_carry((2^64), (x762₂, (x758₁, x700))) in let x764 := Z.add_with_get_carry((2^64), (0, (x759₁, 0))) in let x765 := Z.add_with_get_carry((2^64), (x764₂, (x760₁, 0))) in let x766 := Z.add_with_get_carry((2^64), (x765₂, (x761₁, 0))) in let x767 := Z.add_with_get_carry((2^64), (x766₂, (x762₁, 0))) in let x768 := Z.add_with_get_carry((2^64), (x767₂, (x763₁, x701))) in let x769 := Z.add_with_get_carry((2^64), (0, (x764₁, 0))) in let x770 := Z.add_with_get_carry((2^64), (x769₂, (x765₁, 0))) in let x771 := Z.add_with_get_carry((2^64), (x770₂, (x766₁, 0))) in let x772 := Z.add_with_get_carry((2^64), (x771₂, (x767₁, x699))) in let x773 := Z.add_with_get_carry((2^64), (x772₂, (x768₁, x702))) in let x774 := Z.add_with_get_carry((2^64), (0, (x769₁, 0))) in let x775 := Z.add_with_get_carry((2^64), (x774₂, (x770₁, 0))) in let x776 := Z.add_with_get_carry((2^64), (x775₂, (x771₁, 0))) in let x777 := Z.add_with_get_carry((2^64), (x776₂, (x772₁, x705))) in let x778 := Z.add_with_get_carry((2^64), (x777₂, (x773₁, x703))) in let x779 := Z.add_with_get_carry((2^64), (0, (x774₁, 0))) in let x780 := Z.add_with_get_carry((2^64), (x779₂, (x775₁, 0))) in let x781 := Z.add_with_get_carry((2^64), (x780₂, (x776₁, x707))) in let x782 := Z.add_with_get_carry((2^64), (x781₂, (x777₁, x706))) in let x783 := Z.add_with_get_carry((2^64), (x782₂, (x778₁, x704))) in let x784 := Z.add_with_get_carry((2^64), (0, (x779₁, 0))) in let x785 := Z.add_with_get_carry((2^64), (x784₂, (x780₁, 0))) in let x786 := Z.add_with_get_carry((2^64), (x785₂, (x781₁, x713))) in let x787 := Z.add_with_get_carry((2^64), (x786₂, (x782₁, x711))) in let x788 := Z.add_with_get_carry((2^64), (x787₂, (x783₁, x708))) in let x789 := Z.add_with_get_carry((2^64), (0, (x784₁, 0))) in let x790 := Z.add_with_get_carry((2^64), (x789₂, (x785₁, x715))) in let x791 := Z.add_with_get_carry((2^64), (x790₂, (x786₁, x714))) in let x792 := Z.add_with_get_carry((2^64), (x791₂, (x787₁, x712))) in let x793 := Z.add_with_get_carry((2^64), (x792₂, (x788₁, x709))) in let x794 := Z.add_with_get_carry((2^64), (0, (x789₁, 0))) in let x795 := Z.add_with_get_carry((2^64), (x794₂, (x790₁, x721))) in let x796 := Z.add_with_get_carry((2^64), (x795₂, (x791₁, x719))) in let x797 := Z.add_with_get_carry((2^64), (x796₂, (x792₁, x717))) in let x798 := Z.add_with_get_carry((2^64), (x797₂, (x793₁, x710))) in let x799 := Z.add_with_get_carry((2^64), (0, (x671₁, x794₁))) in let x800 := Z.add_with_get_carry((2^64), (x799₂, (x672₁, x795₁))) in let x801 := Z.add_with_get_carry((2^64), (x800₂, (x673₁, x796₁))) in let x802 := Z.add_with_get_carry((2^64), (x801₂, (x674₁, x797₁))) in let x803 := Z.add_with_get_carry((2^64), (x802₂, (x675₁, x798₁))) in let x804 := 0 + x803₂ in let x805 := (Z.mul_split((2^64), (x799₁, 1)))₁ in let x806 := Z.mul_split((2^64), (x805, 0xffffffff00000001)) in let x807 := Z.mul_split((2^64), (x805, 0)) in let x808 := Z.mul_split((2^64), (x805, (2^32-1))) in let x809 := Z.mul_split((2^64), (x805, (2^64-1))) in let x810 := 1 * x806₂ in let x811 := 1 * x806₁ in let x812 := 1 * x807₂ in let x813 := 1 * x807₁ in let x814 := 1 * x808₂ in let x815 := 1 * x808₁ in let x816 := 1 * x809₂ in let x817 := 1 * x809₁ in let x818 := Z.add_with_get_carry((2^64), (0, (x817, 0))) in let x819 := Z.add_with_get_carry((2^64), (x818₂, (x816, 0))) in let x820 := Z.add_with_get_carry((2^64), (x819₂, (x814, 0))) in let x821 := Z.add_with_get_carry((2^64), (x820₂, (x812, 0))) in let x822 := Z.add_with_get_carry((2^64), (x821₂, (x810, 0))) in let x823 := Z.add_with_get_carry((2^64), (0, (x818₁, 0))) in let x824 := Z.add_with_get_carry((2^64), (x823₂, (x819₁, 0))) in let x825 := Z.add_with_get_carry((2^64), (x824₂, (x820₁, 0))) in let x826 := Z.add_with_get_carry((2^64), (x825₂, (x821₁, 0))) in let x827 := Z.add_with_get_carry((2^64), (x826₂, (x822₁, 0))) in let x828 := Z.add_with_get_carry((2^64), (0, (x823₁, 0))) in let x829 := Z.add_with_get_carry((2^64), (x828₂, (x824₁, 0))) in let x830 := Z.add_with_get_carry((2^64), (x829₂, (x825₁, 0))) in let x831 := Z.add_with_get_carry((2^64), (x830₂, (x826₁, 0))) in let x832 := Z.add_with_get_carry((2^64), (x831₂, (x827₁, 0))) in let x833 := Z.add_with_get_carry((2^64), (0, (x828₁, 0))) in let x834 := Z.add_with_get_carry((2^64), (x833₂, (x829₁, 0))) in let x835 := Z.add_with_get_carry((2^64), (x834₂, (x830₁, 0))) in let x836 := Z.add_with_get_carry((2^64), (x835₂, (x831₁, 0))) in let x837 := Z.add_with_get_carry((2^64), (x836₂, (x832₁, 0))) in let x838 := Z.add_with_get_carry((2^64), (0, (x833₁, 0))) in let x839 := Z.add_with_get_carry((2^64), (x838₂, (x834₁, 0))) in let x840 := Z.add_with_get_carry((2^64), (x839₂, (x835₁, 0))) in let x841 := Z.add_with_get_carry((2^64), (x840₂, (x836₁, 0))) in let x842 := Z.add_with_get_carry((2^64), (x841₂, (x837₁, 0))) in let x843 := Z.add_with_get_carry((2^64), (0, (x838₁, 0))) in let x844 := Z.add_with_get_carry((2^64), (x843₂, (x839₁, 0))) in let x845 := Z.add_with_get_carry((2^64), (x844₂, (x840₁, 0))) in let x846 := Z.add_with_get_carry((2^64), (x845₂, (x841₁, 0))) in let x847 := Z.add_with_get_carry((2^64), (x846₂, (x842₁, 0))) in let x848 := Z.add_with_get_carry((2^64), (0, (x843₁, 0))) in let x849 := Z.add_with_get_carry((2^64), (x848₂, (x844₁, 0))) in let x850 := Z.add_with_get_carry((2^64), (x849₂, (x845₁, 0))) in let x851 := Z.add_with_get_carry((2^64), (x850₂, (x846₁, 0))) in let x852 := Z.add_with_get_carry((2^64), (x851₂, (x847₁, 0))) in let x853 := Z.add_with_get_carry((2^64), (0, (x848₁, 0))) in let x854 := Z.add_with_get_carry((2^64), (x853₂, (x849₁, 0))) in let x855 := Z.add_with_get_carry((2^64), (x854₂, (x850₁, 0))) in let x856 := Z.add_with_get_carry((2^64), (x855₂, (x851₁, 0))) in let x857 := Z.add_with_get_carry((2^64), (x856₂, (x852₁, 0))) in let x858 := Z.add_with_get_carry((2^64), (0, (x853₁, 0))) in let x859 := Z.add_with_get_carry((2^64), (x858₂, (x854₁, 0))) in let x860 := Z.add_with_get_carry((2^64), (x859₂, (x855₁, 0))) in let x861 := Z.add_with_get_carry((2^64), (x860₂, (x856₁, 0))) in let x862 := Z.add_with_get_carry((2^64), (x861₂, (x857₁, 0))) in let x863 := Z.add_with_get_carry((2^64), (0, (x858₁, 0))) in let x864 := Z.add_with_get_carry((2^64), (x863₂, (x859₁, 0))) in let x865 := Z.add_with_get_carry((2^64), (x864₂, (x860₁, 0))) in let x866 := Z.add_with_get_carry((2^64), (x865₂, (x861₁, 0))) in let x867 := Z.add_with_get_carry((2^64), (x866₂, (x862₁, 0))) in let x868 := Z.add_with_get_carry((2^64), (0, (x863₁, 0))) in let x869 := Z.add_with_get_carry((2^64), (x868₂, (x864₁, 0))) in let x870 := Z.add_with_get_carry((2^64), (x869₂, (x865₁, 0))) in let x871 := Z.add_with_get_carry((2^64), (x870₂, (x866₁, 0))) in let x872 := Z.add_with_get_carry((2^64), (x871₂, (x867₁, 0))) in let x873 := Z.add_with_get_carry((2^64), (0, (x868₁, 0))) in let x874 := Z.add_with_get_carry((2^64), (x873₂, (x869₁, 0))) in let x875 := Z.add_with_get_carry((2^64), (x874₂, (x870₁, 0))) in let x876 := Z.add_with_get_carry((2^64), (x875₂, (x871₁, 0))) in let x877 := Z.add_with_get_carry((2^64), (x876₂, (x872₁, 0))) in let x878 := Z.add_with_get_carry((2^64), (0, (x873₁, 0))) in let x879 := Z.add_with_get_carry((2^64), (x878₂, (x874₁, 0))) in let x880 := Z.add_with_get_carry((2^64), (x879₂, (x875₁, 0))) in let x881 := Z.add_with_get_carry((2^64), (x880₂, (x876₁, 0))) in let x882 := Z.add_with_get_carry((2^64), (x881₂, (x877₁, 0))) in let x883 := Z.add_with_get_carry((2^64), (0, (x878₁, 0))) in let x884 := Z.add_with_get_carry((2^64), (x883₂, (x879₁, 0))) in let x885 := Z.add_with_get_carry((2^64), (x884₂, (x880₁, 0))) in let x886 := Z.add_with_get_carry((2^64), (x885₂, (x881₁, 0))) in let x887 := Z.add_with_get_carry((2^64), (x886₂, (x882₁, 0))) in let x888 := Z.add_with_get_carry((2^64), (0, (x883₁, 0))) in let x889 := Z.add_with_get_carry((2^64), (x888₂, (x884₁, x815))) in let x890 := Z.add_with_get_carry((2^64), (x889₂, (x885₁, x813))) in let x891 := Z.add_with_get_carry((2^64), (x890₂, (x886₁, x811))) in let x892 := Z.add_with_get_carry((2^64), (x891₂, (x887₁, 0))) in let x893 := Z.add_with_get_carry((2^64), (0, (x799₁, x888₁))) in let x894 := Z.add_with_get_carry((2^64), (x893₂, (x800₁, x889₁))) in let x895 := Z.add_with_get_carry((2^64), (x894₂, (x801₁, x890₁))) in let x896 := Z.add_with_get_carry((2^64), (x895₂, (x802₁, x891₁))) in let x897 := Z.add_with_get_carry((2^64), (x896₂, (x803₁, x892₁))) in let x898 := Z.add_with_get_carry((2^64), (x897₂, (x804, 0))) in let x899 := Z.add_with_get_carry((2^64), (0, (x894₁, (-(2^64-1))))) in let x900 := Z.add_with_get_carry((2^64), (x899₂, (x895₁, (-(2^32-1))))) in let x901 := Z.add_with_get_carry((2^64), (x900₂, (x896₁, 0))) in let x902 := Z.add_with_get_carry((2^64), (x901₂, (x897₁, (-0xffffffff00000001)))) in let x903 := Z.add_with_get_carry((2^64), (x902₂, (x898₁, 0))) in Z.zselect((-(0 + x903₂)), (x899₁, x894₁)) :: Z.zselect((-(0 + x903₂)), (x900₁, x895₁)) :: Z.zselect((-(0 + x903₂)), (x901₁, x896₁)) :: Z.zselect((-(0 + x903₂)), (x902₁, x897₁)) :: [] ) After rewriting RewriteUnfoldValueBarrier: (λ x1 x2, let x3 := x1[1] in let x4 := x1[2] in let x5 := x1[3] in let x6 := x1[0] in let x7 := Z.mul_split((2^64), (0, x2[3])) in let x8 := Z.mul_split((2^64), (0, x2[2])) in let x9 := Z.mul_split((2^64), (0, x2[1])) in let x10 := Z.mul_split((2^64), (0, x2[0])) in let x11 := Z.mul_split((2^64), (0, x2[3])) in let x12 := Z.mul_split((2^64), (0, x2[2])) in let x13 := Z.mul_split((2^64), (0, x2[1])) in let x14 := Z.mul_split((2^64), (0, x2[0])) in let x15 := Z.mul_split((2^64), (0, x2[3])) in let x16 := Z.mul_split((2^64), (0, x2[2])) in let x17 := Z.mul_split((2^64), (0, x2[1])) in let x18 := Z.mul_split((2^64), (0, x2[0])) in let x19 := Z.mul_split((2^64), (x6, x2[3])) in let x20 := Z.mul_split((2^64), (x6, x2[2])) in let x21 := Z.mul_split((2^64), (x6, x2[1])) in let x22 := Z.mul_split((2^64), (x6, x2[0])) in let x23 := 2^192 * x7₂ in let x24 := 2^128 * x7₁ in let x25 := 2^128 * x8₂ in let x26 := 2^64 * x8₁ in let x27 := 2^64 * x9₂ in let x28 := 1 * x9₁ in let x29 := 1 * x10₂ in let x30 := 1 * x10₁ in let x31 := 2^128 * x11₂ in let x32 := 2^64 * x11₁ in let x33 := 2^64 * x12₂ in let x34 := 1 * x12₁ in let x35 := 1 * x13₂ in let x36 := 1 * x13₁ in let x37 := 1 * x14₂ in let x38 := 1 * x14₁ in let x39 := 2^64 * x15₂ in let x40 := 1 * x15₁ in let x41 := 1 * x16₂ in let x42 := 1 * x16₁ in let x43 := 1 * x17₂ in let x44 := 1 * x17₁ in let x45 := 1 * x18₂ in let x46 := 1 * x18₁ in let x47 := 1 * x19₂ in let x48 := 1 * x19₁ in let x49 := 1 * x20₂ in let x50 := 1 * x20₁ in let x51 := 1 * x21₂ in let x52 := 1 * x21₁ in let x53 := 1 * x22₂ in let x54 := 1 * x22₁ in let x55 := Z.add_with_get_carry((2^64), (0, (x54, 0))) in let x56 := Z.add_with_get_carry((2^64), (x55₂, (x53, 0))) in let x57 := Z.add_with_get_carry((2^64), (x56₂, (x51, 0))) in let x58 := Z.add_with_get_carry((2^64), (x57₂, (x49, 0))) in let x59 := Z.add_with_get_carry((2^64), (x58₂, (x47, x23))) in let x60 := Z.add_with_get_carry((2^64), (0, (x55₁, 0))) in let x61 := Z.add_with_get_carry((2^64), (x60₂, (x56₁, 0))) in let x62 := Z.add_with_get_carry((2^64), (x61₂, (x57₁, 0))) in let x63 := Z.add_with_get_carry((2^64), (x62₂, (x58₁, 0))) in let x64 := Z.add_with_get_carry((2^64), (x63₂, (x59₁, x24))) in let x65 := Z.add_with_get_carry((2^64), (0, (x60₁, 0))) in let x66 := Z.add_with_get_carry((2^64), (x65₂, (x61₁, 0))) in let x67 := Z.add_with_get_carry((2^64), (x66₂, (x62₁, 0))) in let x68 := Z.add_with_get_carry((2^64), (x67₂, (x63₁, 0))) in let x69 := Z.add_with_get_carry((2^64), (x68₂, (x64₁, x25))) in let x70 := Z.add_with_get_carry((2^64), (0, (x65₁, 0))) in let x71 := Z.add_with_get_carry((2^64), (x70₂, (x66₁, 0))) in let x72 := Z.add_with_get_carry((2^64), (x71₂, (x67₁, 0))) in let x73 := Z.add_with_get_carry((2^64), (x72₂, (x68₁, 0))) in let x74 := Z.add_with_get_carry((2^64), (x73₂, (x69₁, x26))) in let x75 := Z.add_with_get_carry((2^64), (0, (x70₁, 0))) in let x76 := Z.add_with_get_carry((2^64), (x75₂, (x71₁, 0))) in let x77 := Z.add_with_get_carry((2^64), (x76₂, (x72₁, 0))) in let x78 := Z.add_with_get_carry((2^64), (x77₂, (x73₁, 0))) in let x79 := Z.add_with_get_carry((2^64), (x78₂, (x74₁, x27))) in let x80 := Z.add_with_get_carry((2^64), (0, (x75₁, 0))) in let x81 := Z.add_with_get_carry((2^64), (x80₂, (x76₁, 0))) in let x82 := Z.add_with_get_carry((2^64), (x81₂, (x77₁, 0))) in let x83 := Z.add_with_get_carry((2^64), (x82₂, (x78₁, 0))) in let x84 := Z.add_with_get_carry((2^64), (x83₂, (x79₁, x28))) in let x85 := Z.add_with_get_carry((2^64), (0, (x80₁, 0))) in let x86 := Z.add_with_get_carry((2^64), (x85₂, (x81₁, 0))) in let x87 := Z.add_with_get_carry((2^64), (x86₂, (x82₁, 0))) in let x88 := Z.add_with_get_carry((2^64), (x87₂, (x83₁, 0))) in let x89 := Z.add_with_get_carry((2^64), (x88₂, (x84₁, x29))) in let x90 := Z.add_with_get_carry((2^64), (0, (x85₁, 0))) in let x91 := Z.add_with_get_carry((2^64), (x90₂, (x86₁, 0))) in let x92 := Z.add_with_get_carry((2^64), (x91₂, (x87₁, 0))) in let x93 := Z.add_with_get_carry((2^64), (x92₂, (x88₁, 0))) in let x94 := Z.add_with_get_carry((2^64), (x93₂, (x89₁, x31))) in let x95 := Z.add_with_get_carry((2^64), (0, (x90₁, 0))) in let x96 := Z.add_with_get_carry((2^64), (x95₂, (x91₁, 0))) in let x97 := Z.add_with_get_carry((2^64), (x96₂, (x92₁, 0))) in let x98 := Z.add_with_get_carry((2^64), (x97₂, (x93₁, 0))) in let x99 := Z.add_with_get_carry((2^64), (x98₂, (x94₁, x32))) in let x100 := Z.add_with_get_carry((2^64), (0, (x95₁, 0))) in let x101 := Z.add_with_get_carry((2^64), (x100₂, (x96₁, 0))) in let x102 := Z.add_with_get_carry((2^64), (x101₂, (x97₁, 0))) in let x103 := Z.add_with_get_carry((2^64), (x102₂, (x98₁, x30))) in let x104 := Z.add_with_get_carry((2^64), (x103₂, (x99₁, x33))) in let x105 := Z.add_with_get_carry((2^64), (0, (x100₁, 0))) in let x106 := Z.add_with_get_carry((2^64), (x105₂, (x101₁, 0))) in let x107 := Z.add_with_get_carry((2^64), (x106₂, (x102₁, 0))) in let x108 := Z.add_with_get_carry((2^64), (x107₂, (x103₁, x36))) in let x109 := Z.add_with_get_carry((2^64), (x108₂, (x104₁, x34))) in let x110 := Z.add_with_get_carry((2^64), (0, (x105₁, 0))) in let x111 := Z.add_with_get_carry((2^64), (x110₂, (x106₁, 0))) in let x112 := Z.add_with_get_carry((2^64), (x111₂, (x107₁, x38))) in let x113 := Z.add_with_get_carry((2^64), (x112₂, (x108₁, x37))) in let x114 := Z.add_with_get_carry((2^64), (x113₂, (x109₁, x35))) in let x115 := Z.add_with_get_carry((2^64), (0, (x110₁, 0))) in let x116 := Z.add_with_get_carry((2^64), (x115₂, (x111₁, 0))) in let x117 := Z.add_with_get_carry((2^64), (x116₂, (x112₁, x44))) in let x118 := Z.add_with_get_carry((2^64), (x117₂, (x113₁, x42))) in let x119 := Z.add_with_get_carry((2^64), (x118₂, (x114₁, x39))) in let x120 := Z.add_with_get_carry((2^64), (0, (x115₁, 0))) in let x121 := Z.add_with_get_carry((2^64), (x120₂, (x116₁, x46))) in let x122 := Z.add_with_get_carry((2^64), (x121₂, (x117₁, x45))) in let x123 := Z.add_with_get_carry((2^64), (x122₂, (x118₁, x43))) in let x124 := Z.add_with_get_carry((2^64), (x123₂, (x119₁, x40))) in let x125 := Z.add_with_get_carry((2^64), (0, (x120₁, 0))) in let x126 := Z.add_with_get_carry((2^64), (x125₂, (x121₁, x52))) in let x127 := Z.add_with_get_carry((2^64), (x126₂, (x122₁, x50))) in let x128 := Z.add_with_get_carry((2^64), (x127₂, (x123₁, x48))) in let x129 := Z.add_with_get_carry((2^64), (x128₂, (x124₁, x41))) in let x130 := Z.add_with_get_carry((2^64), (0, (0, x125₁))) in let x131 := Z.add_with_get_carry((2^64), (x130₂, (0, x126₁))) in let x132 := Z.add_with_get_carry((2^64), (x131₂, (0, x127₁))) in let x133 := Z.add_with_get_carry((2^64), (x132₂, (0, x128₁))) in let x134 := Z.add_with_get_carry((2^64), (x133₂, (0, x129₁))) in let x135 := 0 + x134₂ in let x136 := (Z.mul_split((2^64), (x130₁, 1)))₁ in let x137 := Z.mul_split((2^64), (x136, 0xffffffff00000001)) in let x138 := Z.mul_split((2^64), (x136, 0)) in let x139 := Z.mul_split((2^64), (x136, (2^32-1))) in let x140 := Z.mul_split((2^64), (x136, (2^64-1))) in let x141 := 1 * x137₂ in let x142 := 1 * x137₁ in let x143 := 1 * x138₂ in let x144 := 1 * x138₁ in let x145 := 1 * x139₂ in let x146 := 1 * x139₁ in let x147 := 1 * x140₂ in let x148 := 1 * x140₁ in let x149 := Z.add_with_get_carry((2^64), (0, (x148, 0))) in let x150 := Z.add_with_get_carry((2^64), (x149₂, (x147, 0))) in let x151 := Z.add_with_get_carry((2^64), (x150₂, (x145, 0))) in let x152 := Z.add_with_get_carry((2^64), (x151₂, (x143, 0))) in let x153 := Z.add_with_get_carry((2^64), (x152₂, (x141, 0))) in let x154 := Z.add_with_get_carry((2^64), (0, (x149₁, 0))) in let x155 := Z.add_with_get_carry((2^64), (x154₂, (x150₁, 0))) in let x156 := Z.add_with_get_carry((2^64), (x155₂, (x151₁, 0))) in let x157 := Z.add_with_get_carry((2^64), (x156₂, (x152₁, 0))) in let x158 := Z.add_with_get_carry((2^64), (x157₂, (x153₁, 0))) in let x159 := Z.add_with_get_carry((2^64), (0, (x154₁, 0))) in let x160 := Z.add_with_get_carry((2^64), (x159₂, (x155₁, 0))) in let x161 := Z.add_with_get_carry((2^64), (x160₂, (x156₁, 0))) in let x162 := Z.add_with_get_carry((2^64), (x161₂, (x157₁, 0))) in let x163 := Z.add_with_get_carry((2^64), (x162₂, (x158₁, 0))) in let x164 := Z.add_with_get_carry((2^64), (0, (x159₁, 0))) in let x165 := Z.add_with_get_carry((2^64), (x164₂, (x160₁, 0))) in let x166 := Z.add_with_get_carry((2^64), (x165₂, (x161₁, 0))) in let x167 := Z.add_with_get_carry((2^64), (x166₂, (x162₁, 0))) in let x168 := Z.add_with_get_carry((2^64), (x167₂, (x163₁, 0))) in let x169 := Z.add_with_get_carry((2^64), (0, (x164₁, 0))) in let x170 := Z.add_with_get_carry((2^64), (x169₂, (x165₁, 0))) in let x171 := Z.add_with_get_carry((2^64), (x170₂, (x166₁, 0))) in let x172 := Z.add_with_get_carry((2^64), (x171₂, (x167₁, 0))) in let x173 := Z.add_with_get_carry((2^64), (x172₂, (x168₁, 0))) in let x174 := Z.add_with_get_carry((2^64), (0, (x169₁, 0))) in let x175 := Z.add_with_get_carry((2^64), (x174₂, (x170₁, 0))) in let x176 := Z.add_with_get_carry((2^64), (x175₂, (x171₁, 0))) in let x177 := Z.add_with_get_carry((2^64), (x176₂, (x172₁, 0))) in let x178 := Z.add_with_get_carry((2^64), (x177₂, (x173₁, 0))) in let x179 := Z.add_with_get_carry((2^64), (0, (x174₁, 0))) in let x180 := Z.add_with_get_carry((2^64), (x179₂, (x175₁, 0))) in let x181 := Z.add_with_get_carry((2^64), (x180₂, (x176₁, 0))) in let x182 := Z.add_with_get_carry((2^64), (x181₂, (x177₁, 0))) in let x183 := Z.add_with_get_carry((2^64), (x182₂, (x178₁, 0))) in let x184 := Z.add_with_get_carry((2^64), (0, (x179₁, 0))) in let x185 := Z.add_with_get_carry((2^64), (x184₂, (x180₁, 0))) in let x186 := Z.add_with_get_carry((2^64), (x185₂, (x181₁, 0))) in let x187 := Z.add_with_get_carry((2^64), (x186₂, (x182₁, 0))) in let x188 := Z.add_with_get_carry((2^64), (x187₂, (x183₁, 0))) in let x189 := Z.add_with_get_carry((2^64), (0, (x184₁, 0))) in let x190 := Z.add_with_get_carry((2^64), (x189₂, (x185₁, 0))) in let x191 := Z.add_with_get_carry((2^64), (x190₂, (x186₁, 0))) in let x192 := Z.add_with_get_carry((2^64), (x191₂, (x187₁, 0))) in let x193 := Z.add_with_get_carry((2^64), (x192₂, (x188₁, 0))) in let x194 := Z.add_with_get_carry((2^64), (0, (x189₁, 0))) in let x195 := Z.add_with_get_carry((2^64), (x194₂, (x190₁, 0))) in let x196 := Z.add_with_get_carry((2^64), (x195₂, (x191₁, 0))) in let x197 := Z.add_with_get_carry((2^64), (x196₂, (x192₁, 0))) in let x198 := Z.add_with_get_carry(…
- Loading branch information