p384_fiat64.mx raw

   1  // Code generated by Fiat Cryptography. DO NOT EDIT.
   2  //
   3  // Autogenerated: word_by_word_montgomery --lang Go --no-wide-int --cmovznz-by-mul --relax-primitive-carry-to-bitwidth 32,64 --internal-static --public-function-case camelCase --public-type-case camelCase --private-function-case camelCase --private-type-case camelCase --doc-text-before-function-name '' --doc-newline-before-package-declaration --doc-prepend-header 'Code generated by Fiat Cryptography. DO NOT EDIT.' --package-name fiat --no-prefix-fiat p384 64 '2^384 - 2^128 - 2^96 + 2^32 - 1' mul square add sub one from_montgomery to_montgomery selectznz to_bytes from_bytes
   4  //
   5  // curve description: p384
   6  //
   7  // machine_wordsize = 64 (from "64")
   8  //
   9  // requested operations: mul, square, add, sub, one, from_montgomery, to_montgomery, selectznz, to_bytes, from_bytes
  10  //
  11  // m = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff (from "2^384 - 2^128 - 2^96 + 2^32 - 1")
  12  //
  13  //
  14  //
  15  // NOTE: In addition to the bounds specified above each function, all
  16  //
  17  //   functions synthesized for this Montgomery arithmetic require the
  18  //
  19  //   input to be strictly less than the prime modulus (m), and also
  20  //
  21  //   require the input to be in the unique saturated representation.
  22  //
  23  //   All functions also ensure that these two properties are true of
  24  //
  25  //   return values.
  26  //
  27  //
  28  //
  29  // Computed values:
  30  //
  31  //   eval z = z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) + (z[4] << 256) + (z[5] << 0x140)
  32  //
  33  //   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)
  34  //
  35  //   twos_complement_eval z = let x1 := z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) + (z[4] << 256) + (z[5] << 0x140) in
  36  //
  37  //                            if x1 & (2^384-1) < 2^383 then x1 & (2^384-1) else (x1 & (2^384-1)) - 2^384
  38  
  39  package fiat
  40  
  41  import "math/bits"
  42  
  43  type p384Uint1 uint64 // We use uint64 instead of a more narrow type for performance reasons; see https://github.com/mit-plv/fiat-crypto/pull/1006#issuecomment-892625927
  44  type p384Int1 int64   // We use uint64 instead of a more narrow type for performance reasons; see https://github.com/mit-plv/fiat-crypto/pull/1006#issuecomment-892625927
  45  
  46  // The type p384MontgomeryDomainFieldElement is a field element in the Montgomery domain.
  47  //
  48  // Bounds: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
  49  type p384MontgomeryDomainFieldElement [6]uint64
  50  
  51  // The type p384NonMontgomeryDomainFieldElement is a field element NOT in the Montgomery domain.
  52  //
  53  // Bounds: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
  54  type p384NonMontgomeryDomainFieldElement [6]uint64
  55  
  56  // p384CmovznzU64 is a single-word conditional move.
  57  //
  58  // Postconditions:
  59  //
  60  //	out1 = (if arg1 = 0 then arg2 else arg3)
  61  //
  62  // Input Bounds:
  63  //
  64  //	arg1: [0x0 ~> 0x1]
  65  //	arg2: [0x0 ~> 0xffffffffffffffff]
  66  //	arg3: [0x0 ~> 0xffffffffffffffff]
  67  //
  68  // Output Bounds:
  69  //
  70  //	out1: [0x0 ~> 0xffffffffffffffff]
  71  func p384CmovznzU64(out1 *uint64, arg1 p384Uint1, arg2 uint64, arg3 uint64) {
  72  	x1 := (uint64(arg1) * 0xffffffffffffffff)
  73  	x2 := ((x1 & arg3) | ((^x1) & arg2))
  74  	*out1 = x2
  75  }
  76  
  77  // p384Mul multiplies two field elements in the Montgomery domain.
  78  //
  79  // Preconditions:
  80  //
  81  //	0 ≤ eval arg1 < m
  82  //	0 ≤ eval arg2 < m
  83  //
  84  // Postconditions:
  85  //
  86  //	eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg2)) mod m
  87  //	0 ≤ eval out1 < m
  88  func p384Mul(out1 *p384MontgomeryDomainFieldElement, arg1 *p384MontgomeryDomainFieldElement, arg2 *p384MontgomeryDomainFieldElement) {
  89  	x1 := arg1[1]
  90  	x2 := arg1[2]
  91  	x3 := arg1[3]
  92  	x4 := arg1[4]
  93  	x5 := arg1[5]
  94  	x6 := arg1[0]
  95  	var x7 uint64
  96  	var x8 uint64
  97  	x8, x7 = bits.Mul64(x6, arg2[5])
  98  	var x9 uint64
  99  	var x10 uint64
 100  	x10, x9 = bits.Mul64(x6, arg2[4])
 101  	var x11 uint64
 102  	var x12 uint64
 103  	x12, x11 = bits.Mul64(x6, arg2[3])
 104  	var x13 uint64
 105  	var x14 uint64
 106  	x14, x13 = bits.Mul64(x6, arg2[2])
 107  	var x15 uint64
 108  	var x16 uint64
 109  	x16, x15 = bits.Mul64(x6, arg2[1])
 110  	var x17 uint64
 111  	var x18 uint64
 112  	x18, x17 = bits.Mul64(x6, arg2[0])
 113  	var x19 uint64
 114  	var x20 uint64
 115  	x19, x20 = bits.Add64(x18, x15, uint64(0x0))
 116  	var x21 uint64
 117  	var x22 uint64
 118  	x21, x22 = bits.Add64(x16, x13, uint64(p384Uint1(x20)))
 119  	var x23 uint64
 120  	var x24 uint64
 121  	x23, x24 = bits.Add64(x14, x11, uint64(p384Uint1(x22)))
 122  	var x25 uint64
 123  	var x26 uint64
 124  	x25, x26 = bits.Add64(x12, x9, uint64(p384Uint1(x24)))
 125  	var x27 uint64
 126  	var x28 uint64
 127  	x27, x28 = bits.Add64(x10, x7, uint64(p384Uint1(x26)))
 128  	x29 := (uint64(p384Uint1(x28)) + x8)
 129  	var x30 uint64
 130  	_, x30 = bits.Mul64(x17, 0x100000001)
 131  	var x32 uint64
 132  	var x33 uint64
 133  	x33, x32 = bits.Mul64(x30, 0xffffffffffffffff)
 134  	var x34 uint64
 135  	var x35 uint64
 136  	x35, x34 = bits.Mul64(x30, 0xffffffffffffffff)
 137  	var x36 uint64
 138  	var x37 uint64
 139  	x37, x36 = bits.Mul64(x30, 0xffffffffffffffff)
 140  	var x38 uint64
 141  	var x39 uint64
 142  	x39, x38 = bits.Mul64(x30, 0xfffffffffffffffe)
 143  	var x40 uint64
 144  	var x41 uint64
 145  	x41, x40 = bits.Mul64(x30, 0xffffffff00000000)
 146  	var x42 uint64
 147  	var x43 uint64
 148  	x43, x42 = bits.Mul64(x30, 0xffffffff)
 149  	var x44 uint64
 150  	var x45 uint64
 151  	x44, x45 = bits.Add64(x43, x40, uint64(0x0))
 152  	var x46 uint64
 153  	var x47 uint64
 154  	x46, x47 = bits.Add64(x41, x38, uint64(p384Uint1(x45)))
 155  	var x48 uint64
 156  	var x49 uint64
 157  	x48, x49 = bits.Add64(x39, x36, uint64(p384Uint1(x47)))
 158  	var x50 uint64
 159  	var x51 uint64
 160  	x50, x51 = bits.Add64(x37, x34, uint64(p384Uint1(x49)))
 161  	var x52 uint64
 162  	var x53 uint64
 163  	x52, x53 = bits.Add64(x35, x32, uint64(p384Uint1(x51)))
 164  	x54 := (uint64(p384Uint1(x53)) + x33)
 165  	var x56 uint64
 166  	_, x56 = bits.Add64(x17, x42, uint64(0x0))
 167  	var x57 uint64
 168  	var x58 uint64
 169  	x57, x58 = bits.Add64(x19, x44, uint64(p384Uint1(x56)))
 170  	var x59 uint64
 171  	var x60 uint64
 172  	x59, x60 = bits.Add64(x21, x46, uint64(p384Uint1(x58)))
 173  	var x61 uint64
 174  	var x62 uint64
 175  	x61, x62 = bits.Add64(x23, x48, uint64(p384Uint1(x60)))
 176  	var x63 uint64
 177  	var x64 uint64
 178  	x63, x64 = bits.Add64(x25, x50, uint64(p384Uint1(x62)))
 179  	var x65 uint64
 180  	var x66 uint64
 181  	x65, x66 = bits.Add64(x27, x52, uint64(p384Uint1(x64)))
 182  	var x67 uint64
 183  	var x68 uint64
 184  	x67, x68 = bits.Add64(x29, x54, uint64(p384Uint1(x66)))
 185  	var x69 uint64
 186  	var x70 uint64
 187  	x70, x69 = bits.Mul64(x1, arg2[5])
 188  	var x71 uint64
 189  	var x72 uint64
 190  	x72, x71 = bits.Mul64(x1, arg2[4])
 191  	var x73 uint64
 192  	var x74 uint64
 193  	x74, x73 = bits.Mul64(x1, arg2[3])
 194  	var x75 uint64
 195  	var x76 uint64
 196  	x76, x75 = bits.Mul64(x1, arg2[2])
 197  	var x77 uint64
 198  	var x78 uint64
 199  	x78, x77 = bits.Mul64(x1, arg2[1])
 200  	var x79 uint64
 201  	var x80 uint64
 202  	x80, x79 = bits.Mul64(x1, arg2[0])
 203  	var x81 uint64
 204  	var x82 uint64
 205  	x81, x82 = bits.Add64(x80, x77, uint64(0x0))
 206  	var x83 uint64
 207  	var x84 uint64
 208  	x83, x84 = bits.Add64(x78, x75, uint64(p384Uint1(x82)))
 209  	var x85 uint64
 210  	var x86 uint64
 211  	x85, x86 = bits.Add64(x76, x73, uint64(p384Uint1(x84)))
 212  	var x87 uint64
 213  	var x88 uint64
 214  	x87, x88 = bits.Add64(x74, x71, uint64(p384Uint1(x86)))
 215  	var x89 uint64
 216  	var x90 uint64
 217  	x89, x90 = bits.Add64(x72, x69, uint64(p384Uint1(x88)))
 218  	x91 := (uint64(p384Uint1(x90)) + x70)
 219  	var x92 uint64
 220  	var x93 uint64
 221  	x92, x93 = bits.Add64(x57, x79, uint64(0x0))
 222  	var x94 uint64
 223  	var x95 uint64
 224  	x94, x95 = bits.Add64(x59, x81, uint64(p384Uint1(x93)))
 225  	var x96 uint64
 226  	var x97 uint64
 227  	x96, x97 = bits.Add64(x61, x83, uint64(p384Uint1(x95)))
 228  	var x98 uint64
 229  	var x99 uint64
 230  	x98, x99 = bits.Add64(x63, x85, uint64(p384Uint1(x97)))
 231  	var x100 uint64
 232  	var x101 uint64
 233  	x100, x101 = bits.Add64(x65, x87, uint64(p384Uint1(x99)))
 234  	var x102 uint64
 235  	var x103 uint64
 236  	x102, x103 = bits.Add64(x67, x89, uint64(p384Uint1(x101)))
 237  	var x104 uint64
 238  	var x105 uint64
 239  	x104, x105 = bits.Add64(uint64(p384Uint1(x68)), x91, uint64(p384Uint1(x103)))
 240  	var x106 uint64
 241  	_, x106 = bits.Mul64(x92, 0x100000001)
 242  	var x108 uint64
 243  	var x109 uint64
 244  	x109, x108 = bits.Mul64(x106, 0xffffffffffffffff)
 245  	var x110 uint64
 246  	var x111 uint64
 247  	x111, x110 = bits.Mul64(x106, 0xffffffffffffffff)
 248  	var x112 uint64
 249  	var x113 uint64
 250  	x113, x112 = bits.Mul64(x106, 0xffffffffffffffff)
 251  	var x114 uint64
 252  	var x115 uint64
 253  	x115, x114 = bits.Mul64(x106, 0xfffffffffffffffe)
 254  	var x116 uint64
 255  	var x117 uint64
 256  	x117, x116 = bits.Mul64(x106, 0xffffffff00000000)
 257  	var x118 uint64
 258  	var x119 uint64
 259  	x119, x118 = bits.Mul64(x106, 0xffffffff)
 260  	var x120 uint64
 261  	var x121 uint64
 262  	x120, x121 = bits.Add64(x119, x116, uint64(0x0))
 263  	var x122 uint64
 264  	var x123 uint64
 265  	x122, x123 = bits.Add64(x117, x114, uint64(p384Uint1(x121)))
 266  	var x124 uint64
 267  	var x125 uint64
 268  	x124, x125 = bits.Add64(x115, x112, uint64(p384Uint1(x123)))
 269  	var x126 uint64
 270  	var x127 uint64
 271  	x126, x127 = bits.Add64(x113, x110, uint64(p384Uint1(x125)))
 272  	var x128 uint64
 273  	var x129 uint64
 274  	x128, x129 = bits.Add64(x111, x108, uint64(p384Uint1(x127)))
 275  	x130 := (uint64(p384Uint1(x129)) + x109)
 276  	var x132 uint64
 277  	_, x132 = bits.Add64(x92, x118, uint64(0x0))
 278  	var x133 uint64
 279  	var x134 uint64
 280  	x133, x134 = bits.Add64(x94, x120, uint64(p384Uint1(x132)))
 281  	var x135 uint64
 282  	var x136 uint64
 283  	x135, x136 = bits.Add64(x96, x122, uint64(p384Uint1(x134)))
 284  	var x137 uint64
 285  	var x138 uint64
 286  	x137, x138 = bits.Add64(x98, x124, uint64(p384Uint1(x136)))
 287  	var x139 uint64
 288  	var x140 uint64
 289  	x139, x140 = bits.Add64(x100, x126, uint64(p384Uint1(x138)))
 290  	var x141 uint64
 291  	var x142 uint64
 292  	x141, x142 = bits.Add64(x102, x128, uint64(p384Uint1(x140)))
 293  	var x143 uint64
 294  	var x144 uint64
 295  	x143, x144 = bits.Add64(x104, x130, uint64(p384Uint1(x142)))
 296  	x145 := (uint64(p384Uint1(x144)) + uint64(p384Uint1(x105)))
 297  	var x146 uint64
 298  	var x147 uint64
 299  	x147, x146 = bits.Mul64(x2, arg2[5])
 300  	var x148 uint64
 301  	var x149 uint64
 302  	x149, x148 = bits.Mul64(x2, arg2[4])
 303  	var x150 uint64
 304  	var x151 uint64
 305  	x151, x150 = bits.Mul64(x2, arg2[3])
 306  	var x152 uint64
 307  	var x153 uint64
 308  	x153, x152 = bits.Mul64(x2, arg2[2])
 309  	var x154 uint64
 310  	var x155 uint64
 311  	x155, x154 = bits.Mul64(x2, arg2[1])
 312  	var x156 uint64
 313  	var x157 uint64
 314  	x157, x156 = bits.Mul64(x2, arg2[0])
 315  	var x158 uint64
 316  	var x159 uint64
 317  	x158, x159 = bits.Add64(x157, x154, uint64(0x0))
 318  	var x160 uint64
 319  	var x161 uint64
 320  	x160, x161 = bits.Add64(x155, x152, uint64(p384Uint1(x159)))
 321  	var x162 uint64
 322  	var x163 uint64
 323  	x162, x163 = bits.Add64(x153, x150, uint64(p384Uint1(x161)))
 324  	var x164 uint64
 325  	var x165 uint64
 326  	x164, x165 = bits.Add64(x151, x148, uint64(p384Uint1(x163)))
 327  	var x166 uint64
 328  	var x167 uint64
 329  	x166, x167 = bits.Add64(x149, x146, uint64(p384Uint1(x165)))
 330  	x168 := (uint64(p384Uint1(x167)) + x147)
 331  	var x169 uint64
 332  	var x170 uint64
 333  	x169, x170 = bits.Add64(x133, x156, uint64(0x0))
 334  	var x171 uint64
 335  	var x172 uint64
 336  	x171, x172 = bits.Add64(x135, x158, uint64(p384Uint1(x170)))
 337  	var x173 uint64
 338  	var x174 uint64
 339  	x173, x174 = bits.Add64(x137, x160, uint64(p384Uint1(x172)))
 340  	var x175 uint64
 341  	var x176 uint64
 342  	x175, x176 = bits.Add64(x139, x162, uint64(p384Uint1(x174)))
 343  	var x177 uint64
 344  	var x178 uint64
 345  	x177, x178 = bits.Add64(x141, x164, uint64(p384Uint1(x176)))
 346  	var x179 uint64
 347  	var x180 uint64
 348  	x179, x180 = bits.Add64(x143, x166, uint64(p384Uint1(x178)))
 349  	var x181 uint64
 350  	var x182 uint64
 351  	x181, x182 = bits.Add64(x145, x168, uint64(p384Uint1(x180)))
 352  	var x183 uint64
 353  	_, x183 = bits.Mul64(x169, 0x100000001)
 354  	var x185 uint64
 355  	var x186 uint64
 356  	x186, x185 = bits.Mul64(x183, 0xffffffffffffffff)
 357  	var x187 uint64
 358  	var x188 uint64
 359  	x188, x187 = bits.Mul64(x183, 0xffffffffffffffff)
 360  	var x189 uint64
 361  	var x190 uint64
 362  	x190, x189 = bits.Mul64(x183, 0xffffffffffffffff)
 363  	var x191 uint64
 364  	var x192 uint64
 365  	x192, x191 = bits.Mul64(x183, 0xfffffffffffffffe)
 366  	var x193 uint64
 367  	var x194 uint64
 368  	x194, x193 = bits.Mul64(x183, 0xffffffff00000000)
 369  	var x195 uint64
 370  	var x196 uint64
 371  	x196, x195 = bits.Mul64(x183, 0xffffffff)
 372  	var x197 uint64
 373  	var x198 uint64
 374  	x197, x198 = bits.Add64(x196, x193, uint64(0x0))
 375  	var x199 uint64
 376  	var x200 uint64
 377  	x199, x200 = bits.Add64(x194, x191, uint64(p384Uint1(x198)))
 378  	var x201 uint64
 379  	var x202 uint64
 380  	x201, x202 = bits.Add64(x192, x189, uint64(p384Uint1(x200)))
 381  	var x203 uint64
 382  	var x204 uint64
 383  	x203, x204 = bits.Add64(x190, x187, uint64(p384Uint1(x202)))
 384  	var x205 uint64
 385  	var x206 uint64
 386  	x205, x206 = bits.Add64(x188, x185, uint64(p384Uint1(x204)))
 387  	x207 := (uint64(p384Uint1(x206)) + x186)
 388  	var x209 uint64
 389  	_, x209 = bits.Add64(x169, x195, uint64(0x0))
 390  	var x210 uint64
 391  	var x211 uint64
 392  	x210, x211 = bits.Add64(x171, x197, uint64(p384Uint1(x209)))
 393  	var x212 uint64
 394  	var x213 uint64
 395  	x212, x213 = bits.Add64(x173, x199, uint64(p384Uint1(x211)))
 396  	var x214 uint64
 397  	var x215 uint64
 398  	x214, x215 = bits.Add64(x175, x201, uint64(p384Uint1(x213)))
 399  	var x216 uint64
 400  	var x217 uint64
 401  	x216, x217 = bits.Add64(x177, x203, uint64(p384Uint1(x215)))
 402  	var x218 uint64
 403  	var x219 uint64
 404  	x218, x219 = bits.Add64(x179, x205, uint64(p384Uint1(x217)))
 405  	var x220 uint64
 406  	var x221 uint64
 407  	x220, x221 = bits.Add64(x181, x207, uint64(p384Uint1(x219)))
 408  	x222 := (uint64(p384Uint1(x221)) + uint64(p384Uint1(x182)))
 409  	var x223 uint64
 410  	var x224 uint64
 411  	x224, x223 = bits.Mul64(x3, arg2[5])
 412  	var x225 uint64
 413  	var x226 uint64
 414  	x226, x225 = bits.Mul64(x3, arg2[4])
 415  	var x227 uint64
 416  	var x228 uint64
 417  	x228, x227 = bits.Mul64(x3, arg2[3])
 418  	var x229 uint64
 419  	var x230 uint64
 420  	x230, x229 = bits.Mul64(x3, arg2[2])
 421  	var x231 uint64
 422  	var x232 uint64
 423  	x232, x231 = bits.Mul64(x3, arg2[1])
 424  	var x233 uint64
 425  	var x234 uint64
 426  	x234, x233 = bits.Mul64(x3, arg2[0])
 427  	var x235 uint64
 428  	var x236 uint64
 429  	x235, x236 = bits.Add64(x234, x231, uint64(0x0))
 430  	var x237 uint64
 431  	var x238 uint64
 432  	x237, x238 = bits.Add64(x232, x229, uint64(p384Uint1(x236)))
 433  	var x239 uint64
 434  	var x240 uint64
 435  	x239, x240 = bits.Add64(x230, x227, uint64(p384Uint1(x238)))
 436  	var x241 uint64
 437  	var x242 uint64
 438  	x241, x242 = bits.Add64(x228, x225, uint64(p384Uint1(x240)))
 439  	var x243 uint64
 440  	var x244 uint64
 441  	x243, x244 = bits.Add64(x226, x223, uint64(p384Uint1(x242)))
 442  	x245 := (uint64(p384Uint1(x244)) + x224)
 443  	var x246 uint64
 444  	var x247 uint64
 445  	x246, x247 = bits.Add64(x210, x233, uint64(0x0))
 446  	var x248 uint64
 447  	var x249 uint64
 448  	x248, x249 = bits.Add64(x212, x235, uint64(p384Uint1(x247)))
 449  	var x250 uint64
 450  	var x251 uint64
 451  	x250, x251 = bits.Add64(x214, x237, uint64(p384Uint1(x249)))
 452  	var x252 uint64
 453  	var x253 uint64
 454  	x252, x253 = bits.Add64(x216, x239, uint64(p384Uint1(x251)))
 455  	var x254 uint64
 456  	var x255 uint64
 457  	x254, x255 = bits.Add64(x218, x241, uint64(p384Uint1(x253)))
 458  	var x256 uint64
 459  	var x257 uint64
 460  	x256, x257 = bits.Add64(x220, x243, uint64(p384Uint1(x255)))
 461  	var x258 uint64
 462  	var x259 uint64
 463  	x258, x259 = bits.Add64(x222, x245, uint64(p384Uint1(x257)))
 464  	var x260 uint64
 465  	_, x260 = bits.Mul64(x246, 0x100000001)
 466  	var x262 uint64
 467  	var x263 uint64
 468  	x263, x262 = bits.Mul64(x260, 0xffffffffffffffff)
 469  	var x264 uint64
 470  	var x265 uint64
 471  	x265, x264 = bits.Mul64(x260, 0xffffffffffffffff)
 472  	var x266 uint64
 473  	var x267 uint64
 474  	x267, x266 = bits.Mul64(x260, 0xffffffffffffffff)
 475  	var x268 uint64
 476  	var x269 uint64
 477  	x269, x268 = bits.Mul64(x260, 0xfffffffffffffffe)
 478  	var x270 uint64
 479  	var x271 uint64
 480  	x271, x270 = bits.Mul64(x260, 0xffffffff00000000)
 481  	var x272 uint64
 482  	var x273 uint64
 483  	x273, x272 = bits.Mul64(x260, 0xffffffff)
 484  	var x274 uint64
 485  	var x275 uint64
 486  	x274, x275 = bits.Add64(x273, x270, uint64(0x0))
 487  	var x276 uint64
 488  	var x277 uint64
 489  	x276, x277 = bits.Add64(x271, x268, uint64(p384Uint1(x275)))
 490  	var x278 uint64
 491  	var x279 uint64
 492  	x278, x279 = bits.Add64(x269, x266, uint64(p384Uint1(x277)))
 493  	var x280 uint64
 494  	var x281 uint64
 495  	x280, x281 = bits.Add64(x267, x264, uint64(p384Uint1(x279)))
 496  	var x282 uint64
 497  	var x283 uint64
 498  	x282, x283 = bits.Add64(x265, x262, uint64(p384Uint1(x281)))
 499  	x284 := (uint64(p384Uint1(x283)) + x263)
 500  	var x286 uint64
 501  	_, x286 = bits.Add64(x246, x272, uint64(0x0))
 502  	var x287 uint64
 503  	var x288 uint64
 504  	x287, x288 = bits.Add64(x248, x274, uint64(p384Uint1(x286)))
 505  	var x289 uint64
 506  	var x290 uint64
 507  	x289, x290 = bits.Add64(x250, x276, uint64(p384Uint1(x288)))
 508  	var x291 uint64
 509  	var x292 uint64
 510  	x291, x292 = bits.Add64(x252, x278, uint64(p384Uint1(x290)))
 511  	var x293 uint64
 512  	var x294 uint64
 513  	x293, x294 = bits.Add64(x254, x280, uint64(p384Uint1(x292)))
 514  	var x295 uint64
 515  	var x296 uint64
 516  	x295, x296 = bits.Add64(x256, x282, uint64(p384Uint1(x294)))
 517  	var x297 uint64
 518  	var x298 uint64
 519  	x297, x298 = bits.Add64(x258, x284, uint64(p384Uint1(x296)))
 520  	x299 := (uint64(p384Uint1(x298)) + uint64(p384Uint1(x259)))
 521  	var x300 uint64
 522  	var x301 uint64
 523  	x301, x300 = bits.Mul64(x4, arg2[5])
 524  	var x302 uint64
 525  	var x303 uint64
 526  	x303, x302 = bits.Mul64(x4, arg2[4])
 527  	var x304 uint64
 528  	var x305 uint64
 529  	x305, x304 = bits.Mul64(x4, arg2[3])
 530  	var x306 uint64
 531  	var x307 uint64
 532  	x307, x306 = bits.Mul64(x4, arg2[2])
 533  	var x308 uint64
 534  	var x309 uint64
 535  	x309, x308 = bits.Mul64(x4, arg2[1])
 536  	var x310 uint64
 537  	var x311 uint64
 538  	x311, x310 = bits.Mul64(x4, arg2[0])
 539  	var x312 uint64
 540  	var x313 uint64
 541  	x312, x313 = bits.Add64(x311, x308, uint64(0x0))
 542  	var x314 uint64
 543  	var x315 uint64
 544  	x314, x315 = bits.Add64(x309, x306, uint64(p384Uint1(x313)))
 545  	var x316 uint64
 546  	var x317 uint64
 547  	x316, x317 = bits.Add64(x307, x304, uint64(p384Uint1(x315)))
 548  	var x318 uint64
 549  	var x319 uint64
 550  	x318, x319 = bits.Add64(x305, x302, uint64(p384Uint1(x317)))
 551  	var x320 uint64
 552  	var x321 uint64
 553  	x320, x321 = bits.Add64(x303, x300, uint64(p384Uint1(x319)))
 554  	x322 := (uint64(p384Uint1(x321)) + x301)
 555  	var x323 uint64
 556  	var x324 uint64
 557  	x323, x324 = bits.Add64(x287, x310, uint64(0x0))
 558  	var x325 uint64
 559  	var x326 uint64
 560  	x325, x326 = bits.Add64(x289, x312, uint64(p384Uint1(x324)))
 561  	var x327 uint64
 562  	var x328 uint64
 563  	x327, x328 = bits.Add64(x291, x314, uint64(p384Uint1(x326)))
 564  	var x329 uint64
 565  	var x330 uint64
 566  	x329, x330 = bits.Add64(x293, x316, uint64(p384Uint1(x328)))
 567  	var x331 uint64
 568  	var x332 uint64
 569  	x331, x332 = bits.Add64(x295, x318, uint64(p384Uint1(x330)))
 570  	var x333 uint64
 571  	var x334 uint64
 572  	x333, x334 = bits.Add64(x297, x320, uint64(p384Uint1(x332)))
 573  	var x335 uint64
 574  	var x336 uint64
 575  	x335, x336 = bits.Add64(x299, x322, uint64(p384Uint1(x334)))
 576  	var x337 uint64
 577  	_, x337 = bits.Mul64(x323, 0x100000001)
 578  	var x339 uint64
 579  	var x340 uint64
 580  	x340, x339 = bits.Mul64(x337, 0xffffffffffffffff)
 581  	var x341 uint64
 582  	var x342 uint64
 583  	x342, x341 = bits.Mul64(x337, 0xffffffffffffffff)
 584  	var x343 uint64
 585  	var x344 uint64
 586  	x344, x343 = bits.Mul64(x337, 0xffffffffffffffff)
 587  	var x345 uint64
 588  	var x346 uint64
 589  	x346, x345 = bits.Mul64(x337, 0xfffffffffffffffe)
 590  	var x347 uint64
 591  	var x348 uint64
 592  	x348, x347 = bits.Mul64(x337, 0xffffffff00000000)
 593  	var x349 uint64
 594  	var x350 uint64
 595  	x350, x349 = bits.Mul64(x337, 0xffffffff)
 596  	var x351 uint64
 597  	var x352 uint64
 598  	x351, x352 = bits.Add64(x350, x347, uint64(0x0))
 599  	var x353 uint64
 600  	var x354 uint64
 601  	x353, x354 = bits.Add64(x348, x345, uint64(p384Uint1(x352)))
 602  	var x355 uint64
 603  	var x356 uint64
 604  	x355, x356 = bits.Add64(x346, x343, uint64(p384Uint1(x354)))
 605  	var x357 uint64
 606  	var x358 uint64
 607  	x357, x358 = bits.Add64(x344, x341, uint64(p384Uint1(x356)))
 608  	var x359 uint64
 609  	var x360 uint64
 610  	x359, x360 = bits.Add64(x342, x339, uint64(p384Uint1(x358)))
 611  	x361 := (uint64(p384Uint1(x360)) + x340)
 612  	var x363 uint64
 613  	_, x363 = bits.Add64(x323, x349, uint64(0x0))
 614  	var x364 uint64
 615  	var x365 uint64
 616  	x364, x365 = bits.Add64(x325, x351, uint64(p384Uint1(x363)))
 617  	var x366 uint64
 618  	var x367 uint64
 619  	x366, x367 = bits.Add64(x327, x353, uint64(p384Uint1(x365)))
 620  	var x368 uint64
 621  	var x369 uint64
 622  	x368, x369 = bits.Add64(x329, x355, uint64(p384Uint1(x367)))
 623  	var x370 uint64
 624  	var x371 uint64
 625  	x370, x371 = bits.Add64(x331, x357, uint64(p384Uint1(x369)))
 626  	var x372 uint64
 627  	var x373 uint64
 628  	x372, x373 = bits.Add64(x333, x359, uint64(p384Uint1(x371)))
 629  	var x374 uint64
 630  	var x375 uint64
 631  	x374, x375 = bits.Add64(x335, x361, uint64(p384Uint1(x373)))
 632  	x376 := (uint64(p384Uint1(x375)) + uint64(p384Uint1(x336)))
 633  	var x377 uint64
 634  	var x378 uint64
 635  	x378, x377 = bits.Mul64(x5, arg2[5])
 636  	var x379 uint64
 637  	var x380 uint64
 638  	x380, x379 = bits.Mul64(x5, arg2[4])
 639  	var x381 uint64
 640  	var x382 uint64
 641  	x382, x381 = bits.Mul64(x5, arg2[3])
 642  	var x383 uint64
 643  	var x384 uint64
 644  	x384, x383 = bits.Mul64(x5, arg2[2])
 645  	var x385 uint64
 646  	var x386 uint64
 647  	x386, x385 = bits.Mul64(x5, arg2[1])
 648  	var x387 uint64
 649  	var x388 uint64
 650  	x388, x387 = bits.Mul64(x5, arg2[0])
 651  	var x389 uint64
 652  	var x390 uint64
 653  	x389, x390 = bits.Add64(x388, x385, uint64(0x0))
 654  	var x391 uint64
 655  	var x392 uint64
 656  	x391, x392 = bits.Add64(x386, x383, uint64(p384Uint1(x390)))
 657  	var x393 uint64
 658  	var x394 uint64
 659  	x393, x394 = bits.Add64(x384, x381, uint64(p384Uint1(x392)))
 660  	var x395 uint64
 661  	var x396 uint64
 662  	x395, x396 = bits.Add64(x382, x379, uint64(p384Uint1(x394)))
 663  	var x397 uint64
 664  	var x398 uint64
 665  	x397, x398 = bits.Add64(x380, x377, uint64(p384Uint1(x396)))
 666  	x399 := (uint64(p384Uint1(x398)) + x378)
 667  	var x400 uint64
 668  	var x401 uint64
 669  	x400, x401 = bits.Add64(x364, x387, uint64(0x0))
 670  	var x402 uint64
 671  	var x403 uint64
 672  	x402, x403 = bits.Add64(x366, x389, uint64(p384Uint1(x401)))
 673  	var x404 uint64
 674  	var x405 uint64
 675  	x404, x405 = bits.Add64(x368, x391, uint64(p384Uint1(x403)))
 676  	var x406 uint64
 677  	var x407 uint64
 678  	x406, x407 = bits.Add64(x370, x393, uint64(p384Uint1(x405)))
 679  	var x408 uint64
 680  	var x409 uint64
 681  	x408, x409 = bits.Add64(x372, x395, uint64(p384Uint1(x407)))
 682  	var x410 uint64
 683  	var x411 uint64
 684  	x410, x411 = bits.Add64(x374, x397, uint64(p384Uint1(x409)))
 685  	var x412 uint64
 686  	var x413 uint64
 687  	x412, x413 = bits.Add64(x376, x399, uint64(p384Uint1(x411)))
 688  	var x414 uint64
 689  	_, x414 = bits.Mul64(x400, 0x100000001)
 690  	var x416 uint64
 691  	var x417 uint64
 692  	x417, x416 = bits.Mul64(x414, 0xffffffffffffffff)
 693  	var x418 uint64
 694  	var x419 uint64
 695  	x419, x418 = bits.Mul64(x414, 0xffffffffffffffff)
 696  	var x420 uint64
 697  	var x421 uint64
 698  	x421, x420 = bits.Mul64(x414, 0xffffffffffffffff)
 699  	var x422 uint64
 700  	var x423 uint64
 701  	x423, x422 = bits.Mul64(x414, 0xfffffffffffffffe)
 702  	var x424 uint64
 703  	var x425 uint64
 704  	x425, x424 = bits.Mul64(x414, 0xffffffff00000000)
 705  	var x426 uint64
 706  	var x427 uint64
 707  	x427, x426 = bits.Mul64(x414, 0xffffffff)
 708  	var x428 uint64
 709  	var x429 uint64
 710  	x428, x429 = bits.Add64(x427, x424, uint64(0x0))
 711  	var x430 uint64
 712  	var x431 uint64
 713  	x430, x431 = bits.Add64(x425, x422, uint64(p384Uint1(x429)))
 714  	var x432 uint64
 715  	var x433 uint64
 716  	x432, x433 = bits.Add64(x423, x420, uint64(p384Uint1(x431)))
 717  	var x434 uint64
 718  	var x435 uint64
 719  	x434, x435 = bits.Add64(x421, x418, uint64(p384Uint1(x433)))
 720  	var x436 uint64
 721  	var x437 uint64
 722  	x436, x437 = bits.Add64(x419, x416, uint64(p384Uint1(x435)))
 723  	x438 := (uint64(p384Uint1(x437)) + x417)
 724  	var x440 uint64
 725  	_, x440 = bits.Add64(x400, x426, uint64(0x0))
 726  	var x441 uint64
 727  	var x442 uint64
 728  	x441, x442 = bits.Add64(x402, x428, uint64(p384Uint1(x440)))
 729  	var x443 uint64
 730  	var x444 uint64
 731  	x443, x444 = bits.Add64(x404, x430, uint64(p384Uint1(x442)))
 732  	var x445 uint64
 733  	var x446 uint64
 734  	x445, x446 = bits.Add64(x406, x432, uint64(p384Uint1(x444)))
 735  	var x447 uint64
 736  	var x448 uint64
 737  	x447, x448 = bits.Add64(x408, x434, uint64(p384Uint1(x446)))
 738  	var x449 uint64
 739  	var x450 uint64
 740  	x449, x450 = bits.Add64(x410, x436, uint64(p384Uint1(x448)))
 741  	var x451 uint64
 742  	var x452 uint64
 743  	x451, x452 = bits.Add64(x412, x438, uint64(p384Uint1(x450)))
 744  	x453 := (uint64(p384Uint1(x452)) + uint64(p384Uint1(x413)))
 745  	var x454 uint64
 746  	var x455 uint64
 747  	x454, x455 = bits.Sub64(x441, 0xffffffff, uint64(0x0))
 748  	var x456 uint64
 749  	var x457 uint64
 750  	x456, x457 = bits.Sub64(x443, 0xffffffff00000000, uint64(p384Uint1(x455)))
 751  	var x458 uint64
 752  	var x459 uint64
 753  	x458, x459 = bits.Sub64(x445, 0xfffffffffffffffe, uint64(p384Uint1(x457)))
 754  	var x460 uint64
 755  	var x461 uint64
 756  	x460, x461 = bits.Sub64(x447, 0xffffffffffffffff, uint64(p384Uint1(x459)))
 757  	var x462 uint64
 758  	var x463 uint64
 759  	x462, x463 = bits.Sub64(x449, 0xffffffffffffffff, uint64(p384Uint1(x461)))
 760  	var x464 uint64
 761  	var x465 uint64
 762  	x464, x465 = bits.Sub64(x451, 0xffffffffffffffff, uint64(p384Uint1(x463)))
 763  	var x467 uint64
 764  	_, x467 = bits.Sub64(x453, uint64(0x0), uint64(p384Uint1(x465)))
 765  	var x468 uint64
 766  	p384CmovznzU64(&x468, p384Uint1(x467), x454, x441)
 767  	var x469 uint64
 768  	p384CmovznzU64(&x469, p384Uint1(x467), x456, x443)
 769  	var x470 uint64
 770  	p384CmovznzU64(&x470, p384Uint1(x467), x458, x445)
 771  	var x471 uint64
 772  	p384CmovznzU64(&x471, p384Uint1(x467), x460, x447)
 773  	var x472 uint64
 774  	p384CmovznzU64(&x472, p384Uint1(x467), x462, x449)
 775  	var x473 uint64
 776  	p384CmovznzU64(&x473, p384Uint1(x467), x464, x451)
 777  	out1[0] = x468
 778  	out1[1] = x469
 779  	out1[2] = x470
 780  	out1[3] = x471
 781  	out1[4] = x472
 782  	out1[5] = x473
 783  }
 784  
 785  // p384Square squares a field element in the Montgomery domain.
 786  //
 787  // Preconditions:
 788  //
 789  //	0 ≤ eval arg1 < m
 790  //
 791  // Postconditions:
 792  //
 793  //	eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg1)) mod m
 794  //	0 ≤ eval out1 < m
 795  func p384Square(out1 *p384MontgomeryDomainFieldElement, arg1 *p384MontgomeryDomainFieldElement) {
 796  	x1 := arg1[1]
 797  	x2 := arg1[2]
 798  	x3 := arg1[3]
 799  	x4 := arg1[4]
 800  	x5 := arg1[5]
 801  	x6 := arg1[0]
 802  	var x7 uint64
 803  	var x8 uint64
 804  	x8, x7 = bits.Mul64(x6, arg1[5])
 805  	var x9 uint64
 806  	var x10 uint64
 807  	x10, x9 = bits.Mul64(x6, arg1[4])
 808  	var x11 uint64
 809  	var x12 uint64
 810  	x12, x11 = bits.Mul64(x6, arg1[3])
 811  	var x13 uint64
 812  	var x14 uint64
 813  	x14, x13 = bits.Mul64(x6, arg1[2])
 814  	var x15 uint64
 815  	var x16 uint64
 816  	x16, x15 = bits.Mul64(x6, arg1[1])
 817  	var x17 uint64
 818  	var x18 uint64
 819  	x18, x17 = bits.Mul64(x6, arg1[0])
 820  	var x19 uint64
 821  	var x20 uint64
 822  	x19, x20 = bits.Add64(x18, x15, uint64(0x0))
 823  	var x21 uint64
 824  	var x22 uint64
 825  	x21, x22 = bits.Add64(x16, x13, uint64(p384Uint1(x20)))
 826  	var x23 uint64
 827  	var x24 uint64
 828  	x23, x24 = bits.Add64(x14, x11, uint64(p384Uint1(x22)))
 829  	var x25 uint64
 830  	var x26 uint64
 831  	x25, x26 = bits.Add64(x12, x9, uint64(p384Uint1(x24)))
 832  	var x27 uint64
 833  	var x28 uint64
 834  	x27, x28 = bits.Add64(x10, x7, uint64(p384Uint1(x26)))
 835  	x29 := (uint64(p384Uint1(x28)) + x8)
 836  	var x30 uint64
 837  	_, x30 = bits.Mul64(x17, 0x100000001)
 838  	var x32 uint64
 839  	var x33 uint64
 840  	x33, x32 = bits.Mul64(x30, 0xffffffffffffffff)
 841  	var x34 uint64
 842  	var x35 uint64
 843  	x35, x34 = bits.Mul64(x30, 0xffffffffffffffff)
 844  	var x36 uint64
 845  	var x37 uint64
 846  	x37, x36 = bits.Mul64(x30, 0xffffffffffffffff)
 847  	var x38 uint64
 848  	var x39 uint64
 849  	x39, x38 = bits.Mul64(x30, 0xfffffffffffffffe)
 850  	var x40 uint64
 851  	var x41 uint64
 852  	x41, x40 = bits.Mul64(x30, 0xffffffff00000000)
 853  	var x42 uint64
 854  	var x43 uint64
 855  	x43, x42 = bits.Mul64(x30, 0xffffffff)
 856  	var x44 uint64
 857  	var x45 uint64
 858  	x44, x45 = bits.Add64(x43, x40, uint64(0x0))
 859  	var x46 uint64
 860  	var x47 uint64
 861  	x46, x47 = bits.Add64(x41, x38, uint64(p384Uint1(x45)))
 862  	var x48 uint64
 863  	var x49 uint64
 864  	x48, x49 = bits.Add64(x39, x36, uint64(p384Uint1(x47)))
 865  	var x50 uint64
 866  	var x51 uint64
 867  	x50, x51 = bits.Add64(x37, x34, uint64(p384Uint1(x49)))
 868  	var x52 uint64
 869  	var x53 uint64
 870  	x52, x53 = bits.Add64(x35, x32, uint64(p384Uint1(x51)))
 871  	x54 := (uint64(p384Uint1(x53)) + x33)
 872  	var x56 uint64
 873  	_, x56 = bits.Add64(x17, x42, uint64(0x0))
 874  	var x57 uint64
 875  	var x58 uint64
 876  	x57, x58 = bits.Add64(x19, x44, uint64(p384Uint1(x56)))
 877  	var x59 uint64
 878  	var x60 uint64
 879  	x59, x60 = bits.Add64(x21, x46, uint64(p384Uint1(x58)))
 880  	var x61 uint64
 881  	var x62 uint64
 882  	x61, x62 = bits.Add64(x23, x48, uint64(p384Uint1(x60)))
 883  	var x63 uint64
 884  	var x64 uint64
 885  	x63, x64 = bits.Add64(x25, x50, uint64(p384Uint1(x62)))
 886  	var x65 uint64
 887  	var x66 uint64
 888  	x65, x66 = bits.Add64(x27, x52, uint64(p384Uint1(x64)))
 889  	var x67 uint64
 890  	var x68 uint64
 891  	x67, x68 = bits.Add64(x29, x54, uint64(p384Uint1(x66)))
 892  	var x69 uint64
 893  	var x70 uint64
 894  	x70, x69 = bits.Mul64(x1, arg1[5])
 895  	var x71 uint64
 896  	var x72 uint64
 897  	x72, x71 = bits.Mul64(x1, arg1[4])
 898  	var x73 uint64
 899  	var x74 uint64
 900  	x74, x73 = bits.Mul64(x1, arg1[3])
 901  	var x75 uint64
 902  	var x76 uint64
 903  	x76, x75 = bits.Mul64(x1, arg1[2])
 904  	var x77 uint64
 905  	var x78 uint64
 906  	x78, x77 = bits.Mul64(x1, arg1[1])
 907  	var x79 uint64
 908  	var x80 uint64
 909  	x80, x79 = bits.Mul64(x1, arg1[0])
 910  	var x81 uint64
 911  	var x82 uint64
 912  	x81, x82 = bits.Add64(x80, x77, uint64(0x0))
 913  	var x83 uint64
 914  	var x84 uint64
 915  	x83, x84 = bits.Add64(x78, x75, uint64(p384Uint1(x82)))
 916  	var x85 uint64
 917  	var x86 uint64
 918  	x85, x86 = bits.Add64(x76, x73, uint64(p384Uint1(x84)))
 919  	var x87 uint64
 920  	var x88 uint64
 921  	x87, x88 = bits.Add64(x74, x71, uint64(p384Uint1(x86)))
 922  	var x89 uint64
 923  	var x90 uint64
 924  	x89, x90 = bits.Add64(x72, x69, uint64(p384Uint1(x88)))
 925  	x91 := (uint64(p384Uint1(x90)) + x70)
 926  	var x92 uint64
 927  	var x93 uint64
 928  	x92, x93 = bits.Add64(x57, x79, uint64(0x0))
 929  	var x94 uint64
 930  	var x95 uint64
 931  	x94, x95 = bits.Add64(x59, x81, uint64(p384Uint1(x93)))
 932  	var x96 uint64
 933  	var x97 uint64
 934  	x96, x97 = bits.Add64(x61, x83, uint64(p384Uint1(x95)))
 935  	var x98 uint64
 936  	var x99 uint64
 937  	x98, x99 = bits.Add64(x63, x85, uint64(p384Uint1(x97)))
 938  	var x100 uint64
 939  	var x101 uint64
 940  	x100, x101 = bits.Add64(x65, x87, uint64(p384Uint1(x99)))
 941  	var x102 uint64
 942  	var x103 uint64
 943  	x102, x103 = bits.Add64(x67, x89, uint64(p384Uint1(x101)))
 944  	var x104 uint64
 945  	var x105 uint64
 946  	x104, x105 = bits.Add64(uint64(p384Uint1(x68)), x91, uint64(p384Uint1(x103)))
 947  	var x106 uint64
 948  	_, x106 = bits.Mul64(x92, 0x100000001)
 949  	var x108 uint64
 950  	var x109 uint64
 951  	x109, x108 = bits.Mul64(x106, 0xffffffffffffffff)
 952  	var x110 uint64
 953  	var x111 uint64
 954  	x111, x110 = bits.Mul64(x106, 0xffffffffffffffff)
 955  	var x112 uint64
 956  	var x113 uint64
 957  	x113, x112 = bits.Mul64(x106, 0xffffffffffffffff)
 958  	var x114 uint64
 959  	var x115 uint64
 960  	x115, x114 = bits.Mul64(x106, 0xfffffffffffffffe)
 961  	var x116 uint64
 962  	var x117 uint64
 963  	x117, x116 = bits.Mul64(x106, 0xffffffff00000000)
 964  	var x118 uint64
 965  	var x119 uint64
 966  	x119, x118 = bits.Mul64(x106, 0xffffffff)
 967  	var x120 uint64
 968  	var x121 uint64
 969  	x120, x121 = bits.Add64(x119, x116, uint64(0x0))
 970  	var x122 uint64
 971  	var x123 uint64
 972  	x122, x123 = bits.Add64(x117, x114, uint64(p384Uint1(x121)))
 973  	var x124 uint64
 974  	var x125 uint64
 975  	x124, x125 = bits.Add64(x115, x112, uint64(p384Uint1(x123)))
 976  	var x126 uint64
 977  	var x127 uint64
 978  	x126, x127 = bits.Add64(x113, x110, uint64(p384Uint1(x125)))
 979  	var x128 uint64
 980  	var x129 uint64
 981  	x128, x129 = bits.Add64(x111, x108, uint64(p384Uint1(x127)))
 982  	x130 := (uint64(p384Uint1(x129)) + x109)
 983  	var x132 uint64
 984  	_, x132 = bits.Add64(x92, x118, uint64(0x0))
 985  	var x133 uint64
 986  	var x134 uint64
 987  	x133, x134 = bits.Add64(x94, x120, uint64(p384Uint1(x132)))
 988  	var x135 uint64
 989  	var x136 uint64
 990  	x135, x136 = bits.Add64(x96, x122, uint64(p384Uint1(x134)))
 991  	var x137 uint64
 992  	var x138 uint64
 993  	x137, x138 = bits.Add64(x98, x124, uint64(p384Uint1(x136)))
 994  	var x139 uint64
 995  	var x140 uint64
 996  	x139, x140 = bits.Add64(x100, x126, uint64(p384Uint1(x138)))
 997  	var x141 uint64
 998  	var x142 uint64
 999  	x141, x142 = bits.Add64(x102, x128, uint64(p384Uint1(x140)))
1000  	var x143 uint64
1001  	var x144 uint64
1002  	x143, x144 = bits.Add64(x104, x130, uint64(p384Uint1(x142)))
1003  	x145 := (uint64(p384Uint1(x144)) + uint64(p384Uint1(x105)))
1004  	var x146 uint64
1005  	var x147 uint64
1006  	x147, x146 = bits.Mul64(x2, arg1[5])
1007  	var x148 uint64
1008  	var x149 uint64
1009  	x149, x148 = bits.Mul64(x2, arg1[4])
1010  	var x150 uint64
1011  	var x151 uint64
1012  	x151, x150 = bits.Mul64(x2, arg1[3])
1013  	var x152 uint64
1014  	var x153 uint64
1015  	x153, x152 = bits.Mul64(x2, arg1[2])
1016  	var x154 uint64
1017  	var x155 uint64
1018  	x155, x154 = bits.Mul64(x2, arg1[1])
1019  	var x156 uint64
1020  	var x157 uint64
1021  	x157, x156 = bits.Mul64(x2, arg1[0])
1022  	var x158 uint64
1023  	var x159 uint64
1024  	x158, x159 = bits.Add64(x157, x154, uint64(0x0))
1025  	var x160 uint64
1026  	var x161 uint64
1027  	x160, x161 = bits.Add64(x155, x152, uint64(p384Uint1(x159)))
1028  	var x162 uint64
1029  	var x163 uint64
1030  	x162, x163 = bits.Add64(x153, x150, uint64(p384Uint1(x161)))
1031  	var x164 uint64
1032  	var x165 uint64
1033  	x164, x165 = bits.Add64(x151, x148, uint64(p384Uint1(x163)))
1034  	var x166 uint64
1035  	var x167 uint64
1036  	x166, x167 = bits.Add64(x149, x146, uint64(p384Uint1(x165)))
1037  	x168 := (uint64(p384Uint1(x167)) + x147)
1038  	var x169 uint64
1039  	var x170 uint64
1040  	x169, x170 = bits.Add64(x133, x156, uint64(0x0))
1041  	var x171 uint64
1042  	var x172 uint64
1043  	x171, x172 = bits.Add64(x135, x158, uint64(p384Uint1(x170)))
1044  	var x173 uint64
1045  	var x174 uint64
1046  	x173, x174 = bits.Add64(x137, x160, uint64(p384Uint1(x172)))
1047  	var x175 uint64
1048  	var x176 uint64
1049  	x175, x176 = bits.Add64(x139, x162, uint64(p384Uint1(x174)))
1050  	var x177 uint64
1051  	var x178 uint64
1052  	x177, x178 = bits.Add64(x141, x164, uint64(p384Uint1(x176)))
1053  	var x179 uint64
1054  	var x180 uint64
1055  	x179, x180 = bits.Add64(x143, x166, uint64(p384Uint1(x178)))
1056  	var x181 uint64
1057  	var x182 uint64
1058  	x181, x182 = bits.Add64(x145, x168, uint64(p384Uint1(x180)))
1059  	var x183 uint64
1060  	_, x183 = bits.Mul64(x169, 0x100000001)
1061  	var x185 uint64
1062  	var x186 uint64
1063  	x186, x185 = bits.Mul64(x183, 0xffffffffffffffff)
1064  	var x187 uint64
1065  	var x188 uint64
1066  	x188, x187 = bits.Mul64(x183, 0xffffffffffffffff)
1067  	var x189 uint64
1068  	var x190 uint64
1069  	x190, x189 = bits.Mul64(x183, 0xffffffffffffffff)
1070  	var x191 uint64
1071  	var x192 uint64
1072  	x192, x191 = bits.Mul64(x183, 0xfffffffffffffffe)
1073  	var x193 uint64
1074  	var x194 uint64
1075  	x194, x193 = bits.Mul64(x183, 0xffffffff00000000)
1076  	var x195 uint64
1077  	var x196 uint64
1078  	x196, x195 = bits.Mul64(x183, 0xffffffff)
1079  	var x197 uint64
1080  	var x198 uint64
1081  	x197, x198 = bits.Add64(x196, x193, uint64(0x0))
1082  	var x199 uint64
1083  	var x200 uint64
1084  	x199, x200 = bits.Add64(x194, x191, uint64(p384Uint1(x198)))
1085  	var x201 uint64
1086  	var x202 uint64
1087  	x201, x202 = bits.Add64(x192, x189, uint64(p384Uint1(x200)))
1088  	var x203 uint64
1089  	var x204 uint64
1090  	x203, x204 = bits.Add64(x190, x187, uint64(p384Uint1(x202)))
1091  	var x205 uint64
1092  	var x206 uint64
1093  	x205, x206 = bits.Add64(x188, x185, uint64(p384Uint1(x204)))
1094  	x207 := (uint64(p384Uint1(x206)) + x186)
1095  	var x209 uint64
1096  	_, x209 = bits.Add64(x169, x195, uint64(0x0))
1097  	var x210 uint64
1098  	var x211 uint64
1099  	x210, x211 = bits.Add64(x171, x197, uint64(p384Uint1(x209)))
1100  	var x212 uint64
1101  	var x213 uint64
1102  	x212, x213 = bits.Add64(x173, x199, uint64(p384Uint1(x211)))
1103  	var x214 uint64
1104  	var x215 uint64
1105  	x214, x215 = bits.Add64(x175, x201, uint64(p384Uint1(x213)))
1106  	var x216 uint64
1107  	var x217 uint64
1108  	x216, x217 = bits.Add64(x177, x203, uint64(p384Uint1(x215)))
1109  	var x218 uint64
1110  	var x219 uint64
1111  	x218, x219 = bits.Add64(x179, x205, uint64(p384Uint1(x217)))
1112  	var x220 uint64
1113  	var x221 uint64
1114  	x220, x221 = bits.Add64(x181, x207, uint64(p384Uint1(x219)))
1115  	x222 := (uint64(p384Uint1(x221)) + uint64(p384Uint1(x182)))
1116  	var x223 uint64
1117  	var x224 uint64
1118  	x224, x223 = bits.Mul64(x3, arg1[5])
1119  	var x225 uint64
1120  	var x226 uint64
1121  	x226, x225 = bits.Mul64(x3, arg1[4])
1122  	var x227 uint64
1123  	var x228 uint64
1124  	x228, x227 = bits.Mul64(x3, arg1[3])
1125  	var x229 uint64
1126  	var x230 uint64
1127  	x230, x229 = bits.Mul64(x3, arg1[2])
1128  	var x231 uint64
1129  	var x232 uint64
1130  	x232, x231 = bits.Mul64(x3, arg1[1])
1131  	var x233 uint64
1132  	var x234 uint64
1133  	x234, x233 = bits.Mul64(x3, arg1[0])
1134  	var x235 uint64
1135  	var x236 uint64
1136  	x235, x236 = bits.Add64(x234, x231, uint64(0x0))
1137  	var x237 uint64
1138  	var x238 uint64
1139  	x237, x238 = bits.Add64(x232, x229, uint64(p384Uint1(x236)))
1140  	var x239 uint64
1141  	var x240 uint64
1142  	x239, x240 = bits.Add64(x230, x227, uint64(p384Uint1(x238)))
1143  	var x241 uint64
1144  	var x242 uint64
1145  	x241, x242 = bits.Add64(x228, x225, uint64(p384Uint1(x240)))
1146  	var x243 uint64
1147  	var x244 uint64
1148  	x243, x244 = bits.Add64(x226, x223, uint64(p384Uint1(x242)))
1149  	x245 := (uint64(p384Uint1(x244)) + x224)
1150  	var x246 uint64
1151  	var x247 uint64
1152  	x246, x247 = bits.Add64(x210, x233, uint64(0x0))
1153  	var x248 uint64
1154  	var x249 uint64
1155  	x248, x249 = bits.Add64(x212, x235, uint64(p384Uint1(x247)))
1156  	var x250 uint64
1157  	var x251 uint64
1158  	x250, x251 = bits.Add64(x214, x237, uint64(p384Uint1(x249)))
1159  	var x252 uint64
1160  	var x253 uint64
1161  	x252, x253 = bits.Add64(x216, x239, uint64(p384Uint1(x251)))
1162  	var x254 uint64
1163  	var x255 uint64
1164  	x254, x255 = bits.Add64(x218, x241, uint64(p384Uint1(x253)))
1165  	var x256 uint64
1166  	var x257 uint64
1167  	x256, x257 = bits.Add64(x220, x243, uint64(p384Uint1(x255)))
1168  	var x258 uint64
1169  	var x259 uint64
1170  	x258, x259 = bits.Add64(x222, x245, uint64(p384Uint1(x257)))
1171  	var x260 uint64
1172  	_, x260 = bits.Mul64(x246, 0x100000001)
1173  	var x262 uint64
1174  	var x263 uint64
1175  	x263, x262 = bits.Mul64(x260, 0xffffffffffffffff)
1176  	var x264 uint64
1177  	var x265 uint64
1178  	x265, x264 = bits.Mul64(x260, 0xffffffffffffffff)
1179  	var x266 uint64
1180  	var x267 uint64
1181  	x267, x266 = bits.Mul64(x260, 0xffffffffffffffff)
1182  	var x268 uint64
1183  	var x269 uint64
1184  	x269, x268 = bits.Mul64(x260, 0xfffffffffffffffe)
1185  	var x270 uint64
1186  	var x271 uint64
1187  	x271, x270 = bits.Mul64(x260, 0xffffffff00000000)
1188  	var x272 uint64
1189  	var x273 uint64
1190  	x273, x272 = bits.Mul64(x260, 0xffffffff)
1191  	var x274 uint64
1192  	var x275 uint64
1193  	x274, x275 = bits.Add64(x273, x270, uint64(0x0))
1194  	var x276 uint64
1195  	var x277 uint64
1196  	x276, x277 = bits.Add64(x271, x268, uint64(p384Uint1(x275)))
1197  	var x278 uint64
1198  	var x279 uint64
1199  	x278, x279 = bits.Add64(x269, x266, uint64(p384Uint1(x277)))
1200  	var x280 uint64
1201  	var x281 uint64
1202  	x280, x281 = bits.Add64(x267, x264, uint64(p384Uint1(x279)))
1203  	var x282 uint64
1204  	var x283 uint64
1205  	x282, x283 = bits.Add64(x265, x262, uint64(p384Uint1(x281)))
1206  	x284 := (uint64(p384Uint1(x283)) + x263)
1207  	var x286 uint64
1208  	_, x286 = bits.Add64(x246, x272, uint64(0x0))
1209  	var x287 uint64
1210  	var x288 uint64
1211  	x287, x288 = bits.Add64(x248, x274, uint64(p384Uint1(x286)))
1212  	var x289 uint64
1213  	var x290 uint64
1214  	x289, x290 = bits.Add64(x250, x276, uint64(p384Uint1(x288)))
1215  	var x291 uint64
1216  	var x292 uint64
1217  	x291, x292 = bits.Add64(x252, x278, uint64(p384Uint1(x290)))
1218  	var x293 uint64
1219  	var x294 uint64
1220  	x293, x294 = bits.Add64(x254, x280, uint64(p384Uint1(x292)))
1221  	var x295 uint64
1222  	var x296 uint64
1223  	x295, x296 = bits.Add64(x256, x282, uint64(p384Uint1(x294)))
1224  	var x297 uint64
1225  	var x298 uint64
1226  	x297, x298 = bits.Add64(x258, x284, uint64(p384Uint1(x296)))
1227  	x299 := (uint64(p384Uint1(x298)) + uint64(p384Uint1(x259)))
1228  	var x300 uint64
1229  	var x301 uint64
1230  	x301, x300 = bits.Mul64(x4, arg1[5])
1231  	var x302 uint64
1232  	var x303 uint64
1233  	x303, x302 = bits.Mul64(x4, arg1[4])
1234  	var x304 uint64
1235  	var x305 uint64
1236  	x305, x304 = bits.Mul64(x4, arg1[3])
1237  	var x306 uint64
1238  	var x307 uint64
1239  	x307, x306 = bits.Mul64(x4, arg1[2])
1240  	var x308 uint64
1241  	var x309 uint64
1242  	x309, x308 = bits.Mul64(x4, arg1[1])
1243  	var x310 uint64
1244  	var x311 uint64
1245  	x311, x310 = bits.Mul64(x4, arg1[0])
1246  	var x312 uint64
1247  	var x313 uint64
1248  	x312, x313 = bits.Add64(x311, x308, uint64(0x0))
1249  	var x314 uint64
1250  	var x315 uint64
1251  	x314, x315 = bits.Add64(x309, x306, uint64(p384Uint1(x313)))
1252  	var x316 uint64
1253  	var x317 uint64
1254  	x316, x317 = bits.Add64(x307, x304, uint64(p384Uint1(x315)))
1255  	var x318 uint64
1256  	var x319 uint64
1257  	x318, x319 = bits.Add64(x305, x302, uint64(p384Uint1(x317)))
1258  	var x320 uint64
1259  	var x321 uint64
1260  	x320, x321 = bits.Add64(x303, x300, uint64(p384Uint1(x319)))
1261  	x322 := (uint64(p384Uint1(x321)) + x301)
1262  	var x323 uint64
1263  	var x324 uint64
1264  	x323, x324 = bits.Add64(x287, x310, uint64(0x0))
1265  	var x325 uint64
1266  	var x326 uint64
1267  	x325, x326 = bits.Add64(x289, x312, uint64(p384Uint1(x324)))
1268  	var x327 uint64
1269  	var x328 uint64
1270  	x327, x328 = bits.Add64(x291, x314, uint64(p384Uint1(x326)))
1271  	var x329 uint64
1272  	var x330 uint64
1273  	x329, x330 = bits.Add64(x293, x316, uint64(p384Uint1(x328)))
1274  	var x331 uint64
1275  	var x332 uint64
1276  	x331, x332 = bits.Add64(x295, x318, uint64(p384Uint1(x330)))
1277  	var x333 uint64
1278  	var x334 uint64
1279  	x333, x334 = bits.Add64(x297, x320, uint64(p384Uint1(x332)))
1280  	var x335 uint64
1281  	var x336 uint64
1282  	x335, x336 = bits.Add64(x299, x322, uint64(p384Uint1(x334)))
1283  	var x337 uint64
1284  	_, x337 = bits.Mul64(x323, 0x100000001)
1285  	var x339 uint64
1286  	var x340 uint64
1287  	x340, x339 = bits.Mul64(x337, 0xffffffffffffffff)
1288  	var x341 uint64
1289  	var x342 uint64
1290  	x342, x341 = bits.Mul64(x337, 0xffffffffffffffff)
1291  	var x343 uint64
1292  	var x344 uint64
1293  	x344, x343 = bits.Mul64(x337, 0xffffffffffffffff)
1294  	var x345 uint64
1295  	var x346 uint64
1296  	x346, x345 = bits.Mul64(x337, 0xfffffffffffffffe)
1297  	var x347 uint64
1298  	var x348 uint64
1299  	x348, x347 = bits.Mul64(x337, 0xffffffff00000000)
1300  	var x349 uint64
1301  	var x350 uint64
1302  	x350, x349 = bits.Mul64(x337, 0xffffffff)
1303  	var x351 uint64
1304  	var x352 uint64
1305  	x351, x352 = bits.Add64(x350, x347, uint64(0x0))
1306  	var x353 uint64
1307  	var x354 uint64
1308  	x353, x354 = bits.Add64(x348, x345, uint64(p384Uint1(x352)))
1309  	var x355 uint64
1310  	var x356 uint64
1311  	x355, x356 = bits.Add64(x346, x343, uint64(p384Uint1(x354)))
1312  	var x357 uint64
1313  	var x358 uint64
1314  	x357, x358 = bits.Add64(x344, x341, uint64(p384Uint1(x356)))
1315  	var x359 uint64
1316  	var x360 uint64
1317  	x359, x360 = bits.Add64(x342, x339, uint64(p384Uint1(x358)))
1318  	x361 := (uint64(p384Uint1(x360)) + x340)
1319  	var x363 uint64
1320  	_, x363 = bits.Add64(x323, x349, uint64(0x0))
1321  	var x364 uint64
1322  	var x365 uint64
1323  	x364, x365 = bits.Add64(x325, x351, uint64(p384Uint1(x363)))
1324  	var x366 uint64
1325  	var x367 uint64
1326  	x366, x367 = bits.Add64(x327, x353, uint64(p384Uint1(x365)))
1327  	var x368 uint64
1328  	var x369 uint64
1329  	x368, x369 = bits.Add64(x329, x355, uint64(p384Uint1(x367)))
1330  	var x370 uint64
1331  	var x371 uint64
1332  	x370, x371 = bits.Add64(x331, x357, uint64(p384Uint1(x369)))
1333  	var x372 uint64
1334  	var x373 uint64
1335  	x372, x373 = bits.Add64(x333, x359, uint64(p384Uint1(x371)))
1336  	var x374 uint64
1337  	var x375 uint64
1338  	x374, x375 = bits.Add64(x335, x361, uint64(p384Uint1(x373)))
1339  	x376 := (uint64(p384Uint1(x375)) + uint64(p384Uint1(x336)))
1340  	var x377 uint64
1341  	var x378 uint64
1342  	x378, x377 = bits.Mul64(x5, arg1[5])
1343  	var x379 uint64
1344  	var x380 uint64
1345  	x380, x379 = bits.Mul64(x5, arg1[4])
1346  	var x381 uint64
1347  	var x382 uint64
1348  	x382, x381 = bits.Mul64(x5, arg1[3])
1349  	var x383 uint64
1350  	var x384 uint64
1351  	x384, x383 = bits.Mul64(x5, arg1[2])
1352  	var x385 uint64
1353  	var x386 uint64
1354  	x386, x385 = bits.Mul64(x5, arg1[1])
1355  	var x387 uint64
1356  	var x388 uint64
1357  	x388, x387 = bits.Mul64(x5, arg1[0])
1358  	var x389 uint64
1359  	var x390 uint64
1360  	x389, x390 = bits.Add64(x388, x385, uint64(0x0))
1361  	var x391 uint64
1362  	var x392 uint64
1363  	x391, x392 = bits.Add64(x386, x383, uint64(p384Uint1(x390)))
1364  	var x393 uint64
1365  	var x394 uint64
1366  	x393, x394 = bits.Add64(x384, x381, uint64(p384Uint1(x392)))
1367  	var x395 uint64
1368  	var x396 uint64
1369  	x395, x396 = bits.Add64(x382, x379, uint64(p384Uint1(x394)))
1370  	var x397 uint64
1371  	var x398 uint64
1372  	x397, x398 = bits.Add64(x380, x377, uint64(p384Uint1(x396)))
1373  	x399 := (uint64(p384Uint1(x398)) + x378)
1374  	var x400 uint64
1375  	var x401 uint64
1376  	x400, x401 = bits.Add64(x364, x387, uint64(0x0))
1377  	var x402 uint64
1378  	var x403 uint64
1379  	x402, x403 = bits.Add64(x366, x389, uint64(p384Uint1(x401)))
1380  	var x404 uint64
1381  	var x405 uint64
1382  	x404, x405 = bits.Add64(x368, x391, uint64(p384Uint1(x403)))
1383  	var x406 uint64
1384  	var x407 uint64
1385  	x406, x407 = bits.Add64(x370, x393, uint64(p384Uint1(x405)))
1386  	var x408 uint64
1387  	var x409 uint64
1388  	x408, x409 = bits.Add64(x372, x395, uint64(p384Uint1(x407)))
1389  	var x410 uint64
1390  	var x411 uint64
1391  	x410, x411 = bits.Add64(x374, x397, uint64(p384Uint1(x409)))
1392  	var x412 uint64
1393  	var x413 uint64
1394  	x412, x413 = bits.Add64(x376, x399, uint64(p384Uint1(x411)))
1395  	var x414 uint64
1396  	_, x414 = bits.Mul64(x400, 0x100000001)
1397  	var x416 uint64
1398  	var x417 uint64
1399  	x417, x416 = bits.Mul64(x414, 0xffffffffffffffff)
1400  	var x418 uint64
1401  	var x419 uint64
1402  	x419, x418 = bits.Mul64(x414, 0xffffffffffffffff)
1403  	var x420 uint64
1404  	var x421 uint64
1405  	x421, x420 = bits.Mul64(x414, 0xffffffffffffffff)
1406  	var x422 uint64
1407  	var x423 uint64
1408  	x423, x422 = bits.Mul64(x414, 0xfffffffffffffffe)
1409  	var x424 uint64
1410  	var x425 uint64
1411  	x425, x424 = bits.Mul64(x414, 0xffffffff00000000)
1412  	var x426 uint64
1413  	var x427 uint64
1414  	x427, x426 = bits.Mul64(x414, 0xffffffff)
1415  	var x428 uint64
1416  	var x429 uint64
1417  	x428, x429 = bits.Add64(x427, x424, uint64(0x0))
1418  	var x430 uint64
1419  	var x431 uint64
1420  	x430, x431 = bits.Add64(x425, x422, uint64(p384Uint1(x429)))
1421  	var x432 uint64
1422  	var x433 uint64
1423  	x432, x433 = bits.Add64(x423, x420, uint64(p384Uint1(x431)))
1424  	var x434 uint64
1425  	var x435 uint64
1426  	x434, x435 = bits.Add64(x421, x418, uint64(p384Uint1(x433)))
1427  	var x436 uint64
1428  	var x437 uint64
1429  	x436, x437 = bits.Add64(x419, x416, uint64(p384Uint1(x435)))
1430  	x438 := (uint64(p384Uint1(x437)) + x417)
1431  	var x440 uint64
1432  	_, x440 = bits.Add64(x400, x426, uint64(0x0))
1433  	var x441 uint64
1434  	var x442 uint64
1435  	x441, x442 = bits.Add64(x402, x428, uint64(p384Uint1(x440)))
1436  	var x443 uint64
1437  	var x444 uint64
1438  	x443, x444 = bits.Add64(x404, x430, uint64(p384Uint1(x442)))
1439  	var x445 uint64
1440  	var x446 uint64
1441  	x445, x446 = bits.Add64(x406, x432, uint64(p384Uint1(x444)))
1442  	var x447 uint64
1443  	var x448 uint64
1444  	x447, x448 = bits.Add64(x408, x434, uint64(p384Uint1(x446)))
1445  	var x449 uint64
1446  	var x450 uint64
1447  	x449, x450 = bits.Add64(x410, x436, uint64(p384Uint1(x448)))
1448  	var x451 uint64
1449  	var x452 uint64
1450  	x451, x452 = bits.Add64(x412, x438, uint64(p384Uint1(x450)))
1451  	x453 := (uint64(p384Uint1(x452)) + uint64(p384Uint1(x413)))
1452  	var x454 uint64
1453  	var x455 uint64
1454  	x454, x455 = bits.Sub64(x441, 0xffffffff, uint64(0x0))
1455  	var x456 uint64
1456  	var x457 uint64
1457  	x456, x457 = bits.Sub64(x443, 0xffffffff00000000, uint64(p384Uint1(x455)))
1458  	var x458 uint64
1459  	var x459 uint64
1460  	x458, x459 = bits.Sub64(x445, 0xfffffffffffffffe, uint64(p384Uint1(x457)))
1461  	var x460 uint64
1462  	var x461 uint64
1463  	x460, x461 = bits.Sub64(x447, 0xffffffffffffffff, uint64(p384Uint1(x459)))
1464  	var x462 uint64
1465  	var x463 uint64
1466  	x462, x463 = bits.Sub64(x449, 0xffffffffffffffff, uint64(p384Uint1(x461)))
1467  	var x464 uint64
1468  	var x465 uint64
1469  	x464, x465 = bits.Sub64(x451, 0xffffffffffffffff, uint64(p384Uint1(x463)))
1470  	var x467 uint64
1471  	_, x467 = bits.Sub64(x453, uint64(0x0), uint64(p384Uint1(x465)))
1472  	var x468 uint64
1473  	p384CmovznzU64(&x468, p384Uint1(x467), x454, x441)
1474  	var x469 uint64
1475  	p384CmovznzU64(&x469, p384Uint1(x467), x456, x443)
1476  	var x470 uint64
1477  	p384CmovznzU64(&x470, p384Uint1(x467), x458, x445)
1478  	var x471 uint64
1479  	p384CmovznzU64(&x471, p384Uint1(x467), x460, x447)
1480  	var x472 uint64
1481  	p384CmovznzU64(&x472, p384Uint1(x467), x462, x449)
1482  	var x473 uint64
1483  	p384CmovznzU64(&x473, p384Uint1(x467), x464, x451)
1484  	out1[0] = x468
1485  	out1[1] = x469
1486  	out1[2] = x470
1487  	out1[3] = x471
1488  	out1[4] = x472
1489  	out1[5] = x473
1490  }
1491  
1492  // p384Add adds two field elements in the Montgomery domain.
1493  //
1494  // Preconditions:
1495  //
1496  //	0 ≤ eval arg1 < m
1497  //	0 ≤ eval arg2 < m
1498  //
1499  // Postconditions:
1500  //
1501  //	eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) + eval (from_montgomery arg2)) mod m
1502  //	0 ≤ eval out1 < m
1503  func p384Add(out1 *p384MontgomeryDomainFieldElement, arg1 *p384MontgomeryDomainFieldElement, arg2 *p384MontgomeryDomainFieldElement) {
1504  	var x1 uint64
1505  	var x2 uint64
1506  	x1, x2 = bits.Add64(arg1[0], arg2[0], uint64(0x0))
1507  	var x3 uint64
1508  	var x4 uint64
1509  	x3, x4 = bits.Add64(arg1[1], arg2[1], uint64(p384Uint1(x2)))
1510  	var x5 uint64
1511  	var x6 uint64
1512  	x5, x6 = bits.Add64(arg1[2], arg2[2], uint64(p384Uint1(x4)))
1513  	var x7 uint64
1514  	var x8 uint64
1515  	x7, x8 = bits.Add64(arg1[3], arg2[3], uint64(p384Uint1(x6)))
1516  	var x9 uint64
1517  	var x10 uint64
1518  	x9, x10 = bits.Add64(arg1[4], arg2[4], uint64(p384Uint1(x8)))
1519  	var x11 uint64
1520  	var x12 uint64
1521  	x11, x12 = bits.Add64(arg1[5], arg2[5], uint64(p384Uint1(x10)))
1522  	var x13 uint64
1523  	var x14 uint64
1524  	x13, x14 = bits.Sub64(x1, 0xffffffff, uint64(0x0))
1525  	var x15 uint64
1526  	var x16 uint64
1527  	x15, x16 = bits.Sub64(x3, 0xffffffff00000000, uint64(p384Uint1(x14)))
1528  	var x17 uint64
1529  	var x18 uint64
1530  	x17, x18 = bits.Sub64(x5, 0xfffffffffffffffe, uint64(p384Uint1(x16)))
1531  	var x19 uint64
1532  	var x20 uint64
1533  	x19, x20 = bits.Sub64(x7, 0xffffffffffffffff, uint64(p384Uint1(x18)))
1534  	var x21 uint64
1535  	var x22 uint64
1536  	x21, x22 = bits.Sub64(x9, 0xffffffffffffffff, uint64(p384Uint1(x20)))
1537  	var x23 uint64
1538  	var x24 uint64
1539  	x23, x24 = bits.Sub64(x11, 0xffffffffffffffff, uint64(p384Uint1(x22)))
1540  	var x26 uint64
1541  	_, x26 = bits.Sub64(uint64(p384Uint1(x12)), uint64(0x0), uint64(p384Uint1(x24)))
1542  	var x27 uint64
1543  	p384CmovznzU64(&x27, p384Uint1(x26), x13, x1)
1544  	var x28 uint64
1545  	p384CmovznzU64(&x28, p384Uint1(x26), x15, x3)
1546  	var x29 uint64
1547  	p384CmovznzU64(&x29, p384Uint1(x26), x17, x5)
1548  	var x30 uint64
1549  	p384CmovznzU64(&x30, p384Uint1(x26), x19, x7)
1550  	var x31 uint64
1551  	p384CmovznzU64(&x31, p384Uint1(x26), x21, x9)
1552  	var x32 uint64
1553  	p384CmovznzU64(&x32, p384Uint1(x26), x23, x11)
1554  	out1[0] = x27
1555  	out1[1] = x28
1556  	out1[2] = x29
1557  	out1[3] = x30
1558  	out1[4] = x31
1559  	out1[5] = x32
1560  }
1561  
1562  // p384Sub subtracts two field elements in the Montgomery domain.
1563  //
1564  // Preconditions:
1565  //
1566  //	0 ≤ eval arg1 < m
1567  //	0 ≤ eval arg2 < m
1568  //
1569  // Postconditions:
1570  //
1571  //	eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) - eval (from_montgomery arg2)) mod m
1572  //	0 ≤ eval out1 < m
1573  func p384Sub(out1 *p384MontgomeryDomainFieldElement, arg1 *p384MontgomeryDomainFieldElement, arg2 *p384MontgomeryDomainFieldElement) {
1574  	var x1 uint64
1575  	var x2 uint64
1576  	x1, x2 = bits.Sub64(arg1[0], arg2[0], uint64(0x0))
1577  	var x3 uint64
1578  	var x4 uint64
1579  	x3, x4 = bits.Sub64(arg1[1], arg2[1], uint64(p384Uint1(x2)))
1580  	var x5 uint64
1581  	var x6 uint64
1582  	x5, x6 = bits.Sub64(arg1[2], arg2[2], uint64(p384Uint1(x4)))
1583  	var x7 uint64
1584  	var x8 uint64
1585  	x7, x8 = bits.Sub64(arg1[3], arg2[3], uint64(p384Uint1(x6)))
1586  	var x9 uint64
1587  	var x10 uint64
1588  	x9, x10 = bits.Sub64(arg1[4], arg2[4], uint64(p384Uint1(x8)))
1589  	var x11 uint64
1590  	var x12 uint64
1591  	x11, x12 = bits.Sub64(arg1[5], arg2[5], uint64(p384Uint1(x10)))
1592  	var x13 uint64
1593  	p384CmovznzU64(&x13, p384Uint1(x12), uint64(0x0), 0xffffffffffffffff)
1594  	var x14 uint64
1595  	var x15 uint64
1596  	x14, x15 = bits.Add64(x1, (x13 & 0xffffffff), uint64(0x0))
1597  	var x16 uint64
1598  	var x17 uint64
1599  	x16, x17 = bits.Add64(x3, (x13 & 0xffffffff00000000), uint64(p384Uint1(x15)))
1600  	var x18 uint64
1601  	var x19 uint64
1602  	x18, x19 = bits.Add64(x5, (x13 & 0xfffffffffffffffe), uint64(p384Uint1(x17)))
1603  	var x20 uint64
1604  	var x21 uint64
1605  	x20, x21 = bits.Add64(x7, x13, uint64(p384Uint1(x19)))
1606  	var x22 uint64
1607  	var x23 uint64
1608  	x22, x23 = bits.Add64(x9, x13, uint64(p384Uint1(x21)))
1609  	var x24 uint64
1610  	x24, _ = bits.Add64(x11, x13, uint64(p384Uint1(x23)))
1611  	out1[0] = x14
1612  	out1[1] = x16
1613  	out1[2] = x18
1614  	out1[3] = x20
1615  	out1[4] = x22
1616  	out1[5] = x24
1617  }
1618  
1619  // p384SetOne returns the field element one in the Montgomery domain.
1620  //
1621  // Postconditions:
1622  //
1623  //	eval (from_montgomery out1) mod m = 1 mod m
1624  //	0 ≤ eval out1 < m
1625  func p384SetOne(out1 *p384MontgomeryDomainFieldElement) {
1626  	out1[0] = 0xffffffff00000001
1627  	out1[1] = 0xffffffff
1628  	out1[2] = uint64(0x1)
1629  	out1[3] = uint64(0x0)
1630  	out1[4] = uint64(0x0)
1631  	out1[5] = uint64(0x0)
1632  }
1633  
1634  // p384FromMontgomery translates a field element out of the Montgomery domain.
1635  //
1636  // Preconditions:
1637  //
1638  //	0 ≤ eval arg1 < m
1639  //
1640  // Postconditions:
1641  //
1642  //	eval out1 mod m = (eval arg1 * ((2^64)⁻¹ mod m)^6) mod m
1643  //	0 ≤ eval out1 < m
1644  func p384FromMontgomery(out1 *p384NonMontgomeryDomainFieldElement, arg1 *p384MontgomeryDomainFieldElement) {
1645  	x1 := arg1[0]
1646  	var x2 uint64
1647  	_, x2 = bits.Mul64(x1, 0x100000001)
1648  	var x4 uint64
1649  	var x5 uint64
1650  	x5, x4 = bits.Mul64(x2, 0xffffffffffffffff)
1651  	var x6 uint64
1652  	var x7 uint64
1653  	x7, x6 = bits.Mul64(x2, 0xffffffffffffffff)
1654  	var x8 uint64
1655  	var x9 uint64
1656  	x9, x8 = bits.Mul64(x2, 0xffffffffffffffff)
1657  	var x10 uint64
1658  	var x11 uint64
1659  	x11, x10 = bits.Mul64(x2, 0xfffffffffffffffe)
1660  	var x12 uint64
1661  	var x13 uint64
1662  	x13, x12 = bits.Mul64(x2, 0xffffffff00000000)
1663  	var x14 uint64
1664  	var x15 uint64
1665  	x15, x14 = bits.Mul64(x2, 0xffffffff)
1666  	var x16 uint64
1667  	var x17 uint64
1668  	x16, x17 = bits.Add64(x15, x12, uint64(0x0))
1669  	var x18 uint64
1670  	var x19 uint64
1671  	x18, x19 = bits.Add64(x13, x10, uint64(p384Uint1(x17)))
1672  	var x20 uint64
1673  	var x21 uint64
1674  	x20, x21 = bits.Add64(x11, x8, uint64(p384Uint1(x19)))
1675  	var x22 uint64
1676  	var x23 uint64
1677  	x22, x23 = bits.Add64(x9, x6, uint64(p384Uint1(x21)))
1678  	var x24 uint64
1679  	var x25 uint64
1680  	x24, x25 = bits.Add64(x7, x4, uint64(p384Uint1(x23)))
1681  	var x27 uint64
1682  	_, x27 = bits.Add64(x1, x14, uint64(0x0))
1683  	var x28 uint64
1684  	var x29 uint64
1685  	x28, x29 = bits.Add64(uint64(0x0), x16, uint64(p384Uint1(x27)))
1686  	var x30 uint64
1687  	var x31 uint64
1688  	x30, x31 = bits.Add64(uint64(0x0), x18, uint64(p384Uint1(x29)))
1689  	var x32 uint64
1690  	var x33 uint64
1691  	x32, x33 = bits.Add64(uint64(0x0), x20, uint64(p384Uint1(x31)))
1692  	var x34 uint64
1693  	var x35 uint64
1694  	x34, x35 = bits.Add64(uint64(0x0), x22, uint64(p384Uint1(x33)))
1695  	var x36 uint64
1696  	var x37 uint64
1697  	x36, x37 = bits.Add64(uint64(0x0), x24, uint64(p384Uint1(x35)))
1698  	var x38 uint64
1699  	var x39 uint64
1700  	x38, x39 = bits.Add64(uint64(0x0), (uint64(p384Uint1(x25)) + x5), uint64(p384Uint1(x37)))
1701  	var x40 uint64
1702  	var x41 uint64
1703  	x40, x41 = bits.Add64(x28, arg1[1], uint64(0x0))
1704  	var x42 uint64
1705  	var x43 uint64
1706  	x42, x43 = bits.Add64(x30, uint64(0x0), uint64(p384Uint1(x41)))
1707  	var x44 uint64
1708  	var x45 uint64
1709  	x44, x45 = bits.Add64(x32, uint64(0x0), uint64(p384Uint1(x43)))
1710  	var x46 uint64
1711  	var x47 uint64
1712  	x46, x47 = bits.Add64(x34, uint64(0x0), uint64(p384Uint1(x45)))
1713  	var x48 uint64
1714  	var x49 uint64
1715  	x48, x49 = bits.Add64(x36, uint64(0x0), uint64(p384Uint1(x47)))
1716  	var x50 uint64
1717  	var x51 uint64
1718  	x50, x51 = bits.Add64(x38, uint64(0x0), uint64(p384Uint1(x49)))
1719  	var x52 uint64
1720  	_, x52 = bits.Mul64(x40, 0x100000001)
1721  	var x54 uint64
1722  	var x55 uint64
1723  	x55, x54 = bits.Mul64(x52, 0xffffffffffffffff)
1724  	var x56 uint64
1725  	var x57 uint64
1726  	x57, x56 = bits.Mul64(x52, 0xffffffffffffffff)
1727  	var x58 uint64
1728  	var x59 uint64
1729  	x59, x58 = bits.Mul64(x52, 0xffffffffffffffff)
1730  	var x60 uint64
1731  	var x61 uint64
1732  	x61, x60 = bits.Mul64(x52, 0xfffffffffffffffe)
1733  	var x62 uint64
1734  	var x63 uint64
1735  	x63, x62 = bits.Mul64(x52, 0xffffffff00000000)
1736  	var x64 uint64
1737  	var x65 uint64
1738  	x65, x64 = bits.Mul64(x52, 0xffffffff)
1739  	var x66 uint64
1740  	var x67 uint64
1741  	x66, x67 = bits.Add64(x65, x62, uint64(0x0))
1742  	var x68 uint64
1743  	var x69 uint64
1744  	x68, x69 = bits.Add64(x63, x60, uint64(p384Uint1(x67)))
1745  	var x70 uint64
1746  	var x71 uint64
1747  	x70, x71 = bits.Add64(x61, x58, uint64(p384Uint1(x69)))
1748  	var x72 uint64
1749  	var x73 uint64
1750  	x72, x73 = bits.Add64(x59, x56, uint64(p384Uint1(x71)))
1751  	var x74 uint64
1752  	var x75 uint64
1753  	x74, x75 = bits.Add64(x57, x54, uint64(p384Uint1(x73)))
1754  	var x77 uint64
1755  	_, x77 = bits.Add64(x40, x64, uint64(0x0))
1756  	var x78 uint64
1757  	var x79 uint64
1758  	x78, x79 = bits.Add64(x42, x66, uint64(p384Uint1(x77)))
1759  	var x80 uint64
1760  	var x81 uint64
1761  	x80, x81 = bits.Add64(x44, x68, uint64(p384Uint1(x79)))
1762  	var x82 uint64
1763  	var x83 uint64
1764  	x82, x83 = bits.Add64(x46, x70, uint64(p384Uint1(x81)))
1765  	var x84 uint64
1766  	var x85 uint64
1767  	x84, x85 = bits.Add64(x48, x72, uint64(p384Uint1(x83)))
1768  	var x86 uint64
1769  	var x87 uint64
1770  	x86, x87 = bits.Add64(x50, x74, uint64(p384Uint1(x85)))
1771  	var x88 uint64
1772  	var x89 uint64
1773  	x88, x89 = bits.Add64((uint64(p384Uint1(x51)) + uint64(p384Uint1(x39))), (uint64(p384Uint1(x75)) + x55), uint64(p384Uint1(x87)))
1774  	var x90 uint64
1775  	var x91 uint64
1776  	x90, x91 = bits.Add64(x78, arg1[2], uint64(0x0))
1777  	var x92 uint64
1778  	var x93 uint64
1779  	x92, x93 = bits.Add64(x80, uint64(0x0), uint64(p384Uint1(x91)))
1780  	var x94 uint64
1781  	var x95 uint64
1782  	x94, x95 = bits.Add64(x82, uint64(0x0), uint64(p384Uint1(x93)))
1783  	var x96 uint64
1784  	var x97 uint64
1785  	x96, x97 = bits.Add64(x84, uint64(0x0), uint64(p384Uint1(x95)))
1786  	var x98 uint64
1787  	var x99 uint64
1788  	x98, x99 = bits.Add64(x86, uint64(0x0), uint64(p384Uint1(x97)))
1789  	var x100 uint64
1790  	var x101 uint64
1791  	x100, x101 = bits.Add64(x88, uint64(0x0), uint64(p384Uint1(x99)))
1792  	var x102 uint64
1793  	_, x102 = bits.Mul64(x90, 0x100000001)
1794  	var x104 uint64
1795  	var x105 uint64
1796  	x105, x104 = bits.Mul64(x102, 0xffffffffffffffff)
1797  	var x106 uint64
1798  	var x107 uint64
1799  	x107, x106 = bits.Mul64(x102, 0xffffffffffffffff)
1800  	var x108 uint64
1801  	var x109 uint64
1802  	x109, x108 = bits.Mul64(x102, 0xffffffffffffffff)
1803  	var x110 uint64
1804  	var x111 uint64
1805  	x111, x110 = bits.Mul64(x102, 0xfffffffffffffffe)
1806  	var x112 uint64
1807  	var x113 uint64
1808  	x113, x112 = bits.Mul64(x102, 0xffffffff00000000)
1809  	var x114 uint64
1810  	var x115 uint64
1811  	x115, x114 = bits.Mul64(x102, 0xffffffff)
1812  	var x116 uint64
1813  	var x117 uint64
1814  	x116, x117 = bits.Add64(x115, x112, uint64(0x0))
1815  	var x118 uint64
1816  	var x119 uint64
1817  	x118, x119 = bits.Add64(x113, x110, uint64(p384Uint1(x117)))
1818  	var x120 uint64
1819  	var x121 uint64
1820  	x120, x121 = bits.Add64(x111, x108, uint64(p384Uint1(x119)))
1821  	var x122 uint64
1822  	var x123 uint64
1823  	x122, x123 = bits.Add64(x109, x106, uint64(p384Uint1(x121)))
1824  	var x124 uint64
1825  	var x125 uint64
1826  	x124, x125 = bits.Add64(x107, x104, uint64(p384Uint1(x123)))
1827  	var x127 uint64
1828  	_, x127 = bits.Add64(x90, x114, uint64(0x0))
1829  	var x128 uint64
1830  	var x129 uint64
1831  	x128, x129 = bits.Add64(x92, x116, uint64(p384Uint1(x127)))
1832  	var x130 uint64
1833  	var x131 uint64
1834  	x130, x131 = bits.Add64(x94, x118, uint64(p384Uint1(x129)))
1835  	var x132 uint64
1836  	var x133 uint64
1837  	x132, x133 = bits.Add64(x96, x120, uint64(p384Uint1(x131)))
1838  	var x134 uint64
1839  	var x135 uint64
1840  	x134, x135 = bits.Add64(x98, x122, uint64(p384Uint1(x133)))
1841  	var x136 uint64
1842  	var x137 uint64
1843  	x136, x137 = bits.Add64(x100, x124, uint64(p384Uint1(x135)))
1844  	var x138 uint64
1845  	var x139 uint64
1846  	x138, x139 = bits.Add64((uint64(p384Uint1(x101)) + uint64(p384Uint1(x89))), (uint64(p384Uint1(x125)) + x105), uint64(p384Uint1(x137)))
1847  	var x140 uint64
1848  	var x141 uint64
1849  	x140, x141 = bits.Add64(x128, arg1[3], uint64(0x0))
1850  	var x142 uint64
1851  	var x143 uint64
1852  	x142, x143 = bits.Add64(x130, uint64(0x0), uint64(p384Uint1(x141)))
1853  	var x144 uint64
1854  	var x145 uint64
1855  	x144, x145 = bits.Add64(x132, uint64(0x0), uint64(p384Uint1(x143)))
1856  	var x146 uint64
1857  	var x147 uint64
1858  	x146, x147 = bits.Add64(x134, uint64(0x0), uint64(p384Uint1(x145)))
1859  	var x148 uint64
1860  	var x149 uint64
1861  	x148, x149 = bits.Add64(x136, uint64(0x0), uint64(p384Uint1(x147)))
1862  	var x150 uint64
1863  	var x151 uint64
1864  	x150, x151 = bits.Add64(x138, uint64(0x0), uint64(p384Uint1(x149)))
1865  	var x152 uint64
1866  	_, x152 = bits.Mul64(x140, 0x100000001)
1867  	var x154 uint64
1868  	var x155 uint64
1869  	x155, x154 = bits.Mul64(x152, 0xffffffffffffffff)
1870  	var x156 uint64
1871  	var x157 uint64
1872  	x157, x156 = bits.Mul64(x152, 0xffffffffffffffff)
1873  	var x158 uint64
1874  	var x159 uint64
1875  	x159, x158 = bits.Mul64(x152, 0xffffffffffffffff)
1876  	var x160 uint64
1877  	var x161 uint64
1878  	x161, x160 = bits.Mul64(x152, 0xfffffffffffffffe)
1879  	var x162 uint64
1880  	var x163 uint64
1881  	x163, x162 = bits.Mul64(x152, 0xffffffff00000000)
1882  	var x164 uint64
1883  	var x165 uint64
1884  	x165, x164 = bits.Mul64(x152, 0xffffffff)
1885  	var x166 uint64
1886  	var x167 uint64
1887  	x166, x167 = bits.Add64(x165, x162, uint64(0x0))
1888  	var x168 uint64
1889  	var x169 uint64
1890  	x168, x169 = bits.Add64(x163, x160, uint64(p384Uint1(x167)))
1891  	var x170 uint64
1892  	var x171 uint64
1893  	x170, x171 = bits.Add64(x161, x158, uint64(p384Uint1(x169)))
1894  	var x172 uint64
1895  	var x173 uint64
1896  	x172, x173 = bits.Add64(x159, x156, uint64(p384Uint1(x171)))
1897  	var x174 uint64
1898  	var x175 uint64
1899  	x174, x175 = bits.Add64(x157, x154, uint64(p384Uint1(x173)))
1900  	var x177 uint64
1901  	_, x177 = bits.Add64(x140, x164, uint64(0x0))
1902  	var x178 uint64
1903  	var x179 uint64
1904  	x178, x179 = bits.Add64(x142, x166, uint64(p384Uint1(x177)))
1905  	var x180 uint64
1906  	var x181 uint64
1907  	x180, x181 = bits.Add64(x144, x168, uint64(p384Uint1(x179)))
1908  	var x182 uint64
1909  	var x183 uint64
1910  	x182, x183 = bits.Add64(x146, x170, uint64(p384Uint1(x181)))
1911  	var x184 uint64
1912  	var x185 uint64
1913  	x184, x185 = bits.Add64(x148, x172, uint64(p384Uint1(x183)))
1914  	var x186 uint64
1915  	var x187 uint64
1916  	x186, x187 = bits.Add64(x150, x174, uint64(p384Uint1(x185)))
1917  	var x188 uint64
1918  	var x189 uint64
1919  	x188, x189 = bits.Add64((uint64(p384Uint1(x151)) + uint64(p384Uint1(x139))), (uint64(p384Uint1(x175)) + x155), uint64(p384Uint1(x187)))
1920  	var x190 uint64
1921  	var x191 uint64
1922  	x190, x191 = bits.Add64(x178, arg1[4], uint64(0x0))
1923  	var x192 uint64
1924  	var x193 uint64
1925  	x192, x193 = bits.Add64(x180, uint64(0x0), uint64(p384Uint1(x191)))
1926  	var x194 uint64
1927  	var x195 uint64
1928  	x194, x195 = bits.Add64(x182, uint64(0x0), uint64(p384Uint1(x193)))
1929  	var x196 uint64
1930  	var x197 uint64
1931  	x196, x197 = bits.Add64(x184, uint64(0x0), uint64(p384Uint1(x195)))
1932  	var x198 uint64
1933  	var x199 uint64
1934  	x198, x199 = bits.Add64(x186, uint64(0x0), uint64(p384Uint1(x197)))
1935  	var x200 uint64
1936  	var x201 uint64
1937  	x200, x201 = bits.Add64(x188, uint64(0x0), uint64(p384Uint1(x199)))
1938  	var x202 uint64
1939  	_, x202 = bits.Mul64(x190, 0x100000001)
1940  	var x204 uint64
1941  	var x205 uint64
1942  	x205, x204 = bits.Mul64(x202, 0xffffffffffffffff)
1943  	var x206 uint64
1944  	var x207 uint64
1945  	x207, x206 = bits.Mul64(x202, 0xffffffffffffffff)
1946  	var x208 uint64
1947  	var x209 uint64
1948  	x209, x208 = bits.Mul64(x202, 0xffffffffffffffff)
1949  	var x210 uint64
1950  	var x211 uint64
1951  	x211, x210 = bits.Mul64(x202, 0xfffffffffffffffe)
1952  	var x212 uint64
1953  	var x213 uint64
1954  	x213, x212 = bits.Mul64(x202, 0xffffffff00000000)
1955  	var x214 uint64
1956  	var x215 uint64
1957  	x215, x214 = bits.Mul64(x202, 0xffffffff)
1958  	var x216 uint64
1959  	var x217 uint64
1960  	x216, x217 = bits.Add64(x215, x212, uint64(0x0))
1961  	var x218 uint64
1962  	var x219 uint64
1963  	x218, x219 = bits.Add64(x213, x210, uint64(p384Uint1(x217)))
1964  	var x220 uint64
1965  	var x221 uint64
1966  	x220, x221 = bits.Add64(x211, x208, uint64(p384Uint1(x219)))
1967  	var x222 uint64
1968  	var x223 uint64
1969  	x222, x223 = bits.Add64(x209, x206, uint64(p384Uint1(x221)))
1970  	var x224 uint64
1971  	var x225 uint64
1972  	x224, x225 = bits.Add64(x207, x204, uint64(p384Uint1(x223)))
1973  	var x227 uint64
1974  	_, x227 = bits.Add64(x190, x214, uint64(0x0))
1975  	var x228 uint64
1976  	var x229 uint64
1977  	x228, x229 = bits.Add64(x192, x216, uint64(p384Uint1(x227)))
1978  	var x230 uint64
1979  	var x231 uint64
1980  	x230, x231 = bits.Add64(x194, x218, uint64(p384Uint1(x229)))
1981  	var x232 uint64
1982  	var x233 uint64
1983  	x232, x233 = bits.Add64(x196, x220, uint64(p384Uint1(x231)))
1984  	var x234 uint64
1985  	var x235 uint64
1986  	x234, x235 = bits.Add64(x198, x222, uint64(p384Uint1(x233)))
1987  	var x236 uint64
1988  	var x237 uint64
1989  	x236, x237 = bits.Add64(x200, x224, uint64(p384Uint1(x235)))
1990  	var x238 uint64
1991  	var x239 uint64
1992  	x238, x239 = bits.Add64((uint64(p384Uint1(x201)) + uint64(p384Uint1(x189))), (uint64(p384Uint1(x225)) + x205), uint64(p384Uint1(x237)))
1993  	var x240 uint64
1994  	var x241 uint64
1995  	x240, x241 = bits.Add64(x228, arg1[5], uint64(0x0))
1996  	var x242 uint64
1997  	var x243 uint64
1998  	x242, x243 = bits.Add64(x230, uint64(0x0), uint64(p384Uint1(x241)))
1999  	var x244 uint64
2000  	var x245 uint64
2001  	x244, x245 = bits.Add64(x232, uint64(0x0), uint64(p384Uint1(x243)))
2002  	var x246 uint64
2003  	var x247 uint64
2004  	x246, x247 = bits.Add64(x234, uint64(0x0), uint64(p384Uint1(x245)))
2005  	var x248 uint64
2006  	var x249 uint64
2007  	x248, x249 = bits.Add64(x236, uint64(0x0), uint64(p384Uint1(x247)))
2008  	var x250 uint64
2009  	var x251 uint64
2010  	x250, x251 = bits.Add64(x238, uint64(0x0), uint64(p384Uint1(x249)))
2011  	var x252 uint64
2012  	_, x252 = bits.Mul64(x240, 0x100000001)
2013  	var x254 uint64
2014  	var x255 uint64
2015  	x255, x254 = bits.Mul64(x252, 0xffffffffffffffff)
2016  	var x256 uint64
2017  	var x257 uint64
2018  	x257, x256 = bits.Mul64(x252, 0xffffffffffffffff)
2019  	var x258 uint64
2020  	var x259 uint64
2021  	x259, x258 = bits.Mul64(x252, 0xffffffffffffffff)
2022  	var x260 uint64
2023  	var x261 uint64
2024  	x261, x260 = bits.Mul64(x252, 0xfffffffffffffffe)
2025  	var x262 uint64
2026  	var x263 uint64
2027  	x263, x262 = bits.Mul64(x252, 0xffffffff00000000)
2028  	var x264 uint64
2029  	var x265 uint64
2030  	x265, x264 = bits.Mul64(x252, 0xffffffff)
2031  	var x266 uint64
2032  	var x267 uint64
2033  	x266, x267 = bits.Add64(x265, x262, uint64(0x0))
2034  	var x268 uint64
2035  	var x269 uint64
2036  	x268, x269 = bits.Add64(x263, x260, uint64(p384Uint1(x267)))
2037  	var x270 uint64
2038  	var x271 uint64
2039  	x270, x271 = bits.Add64(x261, x258, uint64(p384Uint1(x269)))
2040  	var x272 uint64
2041  	var x273 uint64
2042  	x272, x273 = bits.Add64(x259, x256, uint64(p384Uint1(x271)))
2043  	var x274 uint64
2044  	var x275 uint64
2045  	x274, x275 = bits.Add64(x257, x254, uint64(p384Uint1(x273)))
2046  	var x277 uint64
2047  	_, x277 = bits.Add64(x240, x264, uint64(0x0))
2048  	var x278 uint64
2049  	var x279 uint64
2050  	x278, x279 = bits.Add64(x242, x266, uint64(p384Uint1(x277)))
2051  	var x280 uint64
2052  	var x281 uint64
2053  	x280, x281 = bits.Add64(x244, x268, uint64(p384Uint1(x279)))
2054  	var x282 uint64
2055  	var x283 uint64
2056  	x282, x283 = bits.Add64(x246, x270, uint64(p384Uint1(x281)))
2057  	var x284 uint64
2058  	var x285 uint64
2059  	x284, x285 = bits.Add64(x248, x272, uint64(p384Uint1(x283)))
2060  	var x286 uint64
2061  	var x287 uint64
2062  	x286, x287 = bits.Add64(x250, x274, uint64(p384Uint1(x285)))
2063  	var x288 uint64
2064  	var x289 uint64
2065  	x288, x289 = bits.Add64((uint64(p384Uint1(x251)) + uint64(p384Uint1(x239))), (uint64(p384Uint1(x275)) + x255), uint64(p384Uint1(x287)))
2066  	var x290 uint64
2067  	var x291 uint64
2068  	x290, x291 = bits.Sub64(x278, 0xffffffff, uint64(0x0))
2069  	var x292 uint64
2070  	var x293 uint64
2071  	x292, x293 = bits.Sub64(x280, 0xffffffff00000000, uint64(p384Uint1(x291)))
2072  	var x294 uint64
2073  	var x295 uint64
2074  	x294, x295 = bits.Sub64(x282, 0xfffffffffffffffe, uint64(p384Uint1(x293)))
2075  	var x296 uint64
2076  	var x297 uint64
2077  	x296, x297 = bits.Sub64(x284, 0xffffffffffffffff, uint64(p384Uint1(x295)))
2078  	var x298 uint64
2079  	var x299 uint64
2080  	x298, x299 = bits.Sub64(x286, 0xffffffffffffffff, uint64(p384Uint1(x297)))
2081  	var x300 uint64
2082  	var x301 uint64
2083  	x300, x301 = bits.Sub64(x288, 0xffffffffffffffff, uint64(p384Uint1(x299)))
2084  	var x303 uint64
2085  	_, x303 = bits.Sub64(uint64(p384Uint1(x289)), uint64(0x0), uint64(p384Uint1(x301)))
2086  	var x304 uint64
2087  	p384CmovznzU64(&x304, p384Uint1(x303), x290, x278)
2088  	var x305 uint64
2089  	p384CmovznzU64(&x305, p384Uint1(x303), x292, x280)
2090  	var x306 uint64
2091  	p384CmovznzU64(&x306, p384Uint1(x303), x294, x282)
2092  	var x307 uint64
2093  	p384CmovznzU64(&x307, p384Uint1(x303), x296, x284)
2094  	var x308 uint64
2095  	p384CmovznzU64(&x308, p384Uint1(x303), x298, x286)
2096  	var x309 uint64
2097  	p384CmovznzU64(&x309, p384Uint1(x303), x300, x288)
2098  	out1[0] = x304
2099  	out1[1] = x305
2100  	out1[2] = x306
2101  	out1[3] = x307
2102  	out1[4] = x308
2103  	out1[5] = x309
2104  }
2105  
2106  // p384ToMontgomery translates a field element into the Montgomery domain.
2107  //
2108  // Preconditions:
2109  //
2110  //	0 ≤ eval arg1 < m
2111  //
2112  // Postconditions:
2113  //
2114  //	eval (from_montgomery out1) mod m = eval arg1 mod m
2115  //	0 ≤ eval out1 < m
2116  func p384ToMontgomery(out1 *p384MontgomeryDomainFieldElement, arg1 *p384NonMontgomeryDomainFieldElement) {
2117  	x1 := arg1[1]
2118  	x2 := arg1[2]
2119  	x3 := arg1[3]
2120  	x4 := arg1[4]
2121  	x5 := arg1[5]
2122  	x6 := arg1[0]
2123  	var x7 uint64
2124  	var x8 uint64
2125  	x8, x7 = bits.Mul64(x6, 0x200000000)
2126  	var x9 uint64
2127  	var x10 uint64
2128  	x10, x9 = bits.Mul64(x6, 0xfffffffe00000000)
2129  	var x11 uint64
2130  	var x12 uint64
2131  	x12, x11 = bits.Mul64(x6, 0x200000000)
2132  	var x13 uint64
2133  	var x14 uint64
2134  	x14, x13 = bits.Mul64(x6, 0xfffffffe00000001)
2135  	var x15 uint64
2136  	var x16 uint64
2137  	x15, x16 = bits.Add64(x14, x11, uint64(0x0))
2138  	var x17 uint64
2139  	var x18 uint64
2140  	x17, x18 = bits.Add64(x12, x9, uint64(p384Uint1(x16)))
2141  	var x19 uint64
2142  	var x20 uint64
2143  	x19, x20 = bits.Add64(x10, x7, uint64(p384Uint1(x18)))
2144  	var x21 uint64
2145  	var x22 uint64
2146  	x21, x22 = bits.Add64(x8, x6, uint64(p384Uint1(x20)))
2147  	var x23 uint64
2148  	_, x23 = bits.Mul64(x13, 0x100000001)
2149  	var x25 uint64
2150  	var x26 uint64
2151  	x26, x25 = bits.Mul64(x23, 0xffffffffffffffff)
2152  	var x27 uint64
2153  	var x28 uint64
2154  	x28, x27 = bits.Mul64(x23, 0xffffffffffffffff)
2155  	var x29 uint64
2156  	var x30 uint64
2157  	x30, x29 = bits.Mul64(x23, 0xffffffffffffffff)
2158  	var x31 uint64
2159  	var x32 uint64
2160  	x32, x31 = bits.Mul64(x23, 0xfffffffffffffffe)
2161  	var x33 uint64
2162  	var x34 uint64
2163  	x34, x33 = bits.Mul64(x23, 0xffffffff00000000)
2164  	var x35 uint64
2165  	var x36 uint64
2166  	x36, x35 = bits.Mul64(x23, 0xffffffff)
2167  	var x37 uint64
2168  	var x38 uint64
2169  	x37, x38 = bits.Add64(x36, x33, uint64(0x0))
2170  	var x39 uint64
2171  	var x40 uint64
2172  	x39, x40 = bits.Add64(x34, x31, uint64(p384Uint1(x38)))
2173  	var x41 uint64
2174  	var x42 uint64
2175  	x41, x42 = bits.Add64(x32, x29, uint64(p384Uint1(x40)))
2176  	var x43 uint64
2177  	var x44 uint64
2178  	x43, x44 = bits.Add64(x30, x27, uint64(p384Uint1(x42)))
2179  	var x45 uint64
2180  	var x46 uint64
2181  	x45, x46 = bits.Add64(x28, x25, uint64(p384Uint1(x44)))
2182  	var x48 uint64
2183  	_, x48 = bits.Add64(x13, x35, uint64(0x0))
2184  	var x49 uint64
2185  	var x50 uint64
2186  	x49, x50 = bits.Add64(x15, x37, uint64(p384Uint1(x48)))
2187  	var x51 uint64
2188  	var x52 uint64
2189  	x51, x52 = bits.Add64(x17, x39, uint64(p384Uint1(x50)))
2190  	var x53 uint64
2191  	var x54 uint64
2192  	x53, x54 = bits.Add64(x19, x41, uint64(p384Uint1(x52)))
2193  	var x55 uint64
2194  	var x56 uint64
2195  	x55, x56 = bits.Add64(x21, x43, uint64(p384Uint1(x54)))
2196  	var x57 uint64
2197  	var x58 uint64
2198  	x57, x58 = bits.Add64(uint64(p384Uint1(x22)), x45, uint64(p384Uint1(x56)))
2199  	var x59 uint64
2200  	var x60 uint64
2201  	x59, x60 = bits.Add64(uint64(0x0), (uint64(p384Uint1(x46)) + x26), uint64(p384Uint1(x58)))
2202  	var x61 uint64
2203  	var x62 uint64
2204  	x62, x61 = bits.Mul64(x1, 0x200000000)
2205  	var x63 uint64
2206  	var x64 uint64
2207  	x64, x63 = bits.Mul64(x1, 0xfffffffe00000000)
2208  	var x65 uint64
2209  	var x66 uint64
2210  	x66, x65 = bits.Mul64(x1, 0x200000000)
2211  	var x67 uint64
2212  	var x68 uint64
2213  	x68, x67 = bits.Mul64(x1, 0xfffffffe00000001)
2214  	var x69 uint64
2215  	var x70 uint64
2216  	x69, x70 = bits.Add64(x68, x65, uint64(0x0))
2217  	var x71 uint64
2218  	var x72 uint64
2219  	x71, x72 = bits.Add64(x66, x63, uint64(p384Uint1(x70)))
2220  	var x73 uint64
2221  	var x74 uint64
2222  	x73, x74 = bits.Add64(x64, x61, uint64(p384Uint1(x72)))
2223  	var x75 uint64
2224  	var x76 uint64
2225  	x75, x76 = bits.Add64(x62, x1, uint64(p384Uint1(x74)))
2226  	var x77 uint64
2227  	var x78 uint64
2228  	x77, x78 = bits.Add64(x49, x67, uint64(0x0))
2229  	var x79 uint64
2230  	var x80 uint64
2231  	x79, x80 = bits.Add64(x51, x69, uint64(p384Uint1(x78)))
2232  	var x81 uint64
2233  	var x82 uint64
2234  	x81, x82 = bits.Add64(x53, x71, uint64(p384Uint1(x80)))
2235  	var x83 uint64
2236  	var x84 uint64
2237  	x83, x84 = bits.Add64(x55, x73, uint64(p384Uint1(x82)))
2238  	var x85 uint64
2239  	var x86 uint64
2240  	x85, x86 = bits.Add64(x57, x75, uint64(p384Uint1(x84)))
2241  	var x87 uint64
2242  	var x88 uint64
2243  	x87, x88 = bits.Add64(x59, uint64(p384Uint1(x76)), uint64(p384Uint1(x86)))
2244  	var x89 uint64
2245  	_, x89 = bits.Mul64(x77, 0x100000001)
2246  	var x91 uint64
2247  	var x92 uint64
2248  	x92, x91 = bits.Mul64(x89, 0xffffffffffffffff)
2249  	var x93 uint64
2250  	var x94 uint64
2251  	x94, x93 = bits.Mul64(x89, 0xffffffffffffffff)
2252  	var x95 uint64
2253  	var x96 uint64
2254  	x96, x95 = bits.Mul64(x89, 0xffffffffffffffff)
2255  	var x97 uint64
2256  	var x98 uint64
2257  	x98, x97 = bits.Mul64(x89, 0xfffffffffffffffe)
2258  	var x99 uint64
2259  	var x100 uint64
2260  	x100, x99 = bits.Mul64(x89, 0xffffffff00000000)
2261  	var x101 uint64
2262  	var x102 uint64
2263  	x102, x101 = bits.Mul64(x89, 0xffffffff)
2264  	var x103 uint64
2265  	var x104 uint64
2266  	x103, x104 = bits.Add64(x102, x99, uint64(0x0))
2267  	var x105 uint64
2268  	var x106 uint64
2269  	x105, x106 = bits.Add64(x100, x97, uint64(p384Uint1(x104)))
2270  	var x107 uint64
2271  	var x108 uint64
2272  	x107, x108 = bits.Add64(x98, x95, uint64(p384Uint1(x106)))
2273  	var x109 uint64
2274  	var x110 uint64
2275  	x109, x110 = bits.Add64(x96, x93, uint64(p384Uint1(x108)))
2276  	var x111 uint64
2277  	var x112 uint64
2278  	x111, x112 = bits.Add64(x94, x91, uint64(p384Uint1(x110)))
2279  	var x114 uint64
2280  	_, x114 = bits.Add64(x77, x101, uint64(0x0))
2281  	var x115 uint64
2282  	var x116 uint64
2283  	x115, x116 = bits.Add64(x79, x103, uint64(p384Uint1(x114)))
2284  	var x117 uint64
2285  	var x118 uint64
2286  	x117, x118 = bits.Add64(x81, x105, uint64(p384Uint1(x116)))
2287  	var x119 uint64
2288  	var x120 uint64
2289  	x119, x120 = bits.Add64(x83, x107, uint64(p384Uint1(x118)))
2290  	var x121 uint64
2291  	var x122 uint64
2292  	x121, x122 = bits.Add64(x85, x109, uint64(p384Uint1(x120)))
2293  	var x123 uint64
2294  	var x124 uint64
2295  	x123, x124 = bits.Add64(x87, x111, uint64(p384Uint1(x122)))
2296  	var x125 uint64
2297  	var x126 uint64
2298  	x125, x126 = bits.Add64((uint64(p384Uint1(x88)) + uint64(p384Uint1(x60))), (uint64(p384Uint1(x112)) + x92), uint64(p384Uint1(x124)))
2299  	var x127 uint64
2300  	var x128 uint64
2301  	x128, x127 = bits.Mul64(x2, 0x200000000)
2302  	var x129 uint64
2303  	var x130 uint64
2304  	x130, x129 = bits.Mul64(x2, 0xfffffffe00000000)
2305  	var x131 uint64
2306  	var x132 uint64
2307  	x132, x131 = bits.Mul64(x2, 0x200000000)
2308  	var x133 uint64
2309  	var x134 uint64
2310  	x134, x133 = bits.Mul64(x2, 0xfffffffe00000001)
2311  	var x135 uint64
2312  	var x136 uint64
2313  	x135, x136 = bits.Add64(x134, x131, uint64(0x0))
2314  	var x137 uint64
2315  	var x138 uint64
2316  	x137, x138 = bits.Add64(x132, x129, uint64(p384Uint1(x136)))
2317  	var x139 uint64
2318  	var x140 uint64
2319  	x139, x140 = bits.Add64(x130, x127, uint64(p384Uint1(x138)))
2320  	var x141 uint64
2321  	var x142 uint64
2322  	x141, x142 = bits.Add64(x128, x2, uint64(p384Uint1(x140)))
2323  	var x143 uint64
2324  	var x144 uint64
2325  	x143, x144 = bits.Add64(x115, x133, uint64(0x0))
2326  	var x145 uint64
2327  	var x146 uint64
2328  	x145, x146 = bits.Add64(x117, x135, uint64(p384Uint1(x144)))
2329  	var x147 uint64
2330  	var x148 uint64
2331  	x147, x148 = bits.Add64(x119, x137, uint64(p384Uint1(x146)))
2332  	var x149 uint64
2333  	var x150 uint64
2334  	x149, x150 = bits.Add64(x121, x139, uint64(p384Uint1(x148)))
2335  	var x151 uint64
2336  	var x152 uint64
2337  	x151, x152 = bits.Add64(x123, x141, uint64(p384Uint1(x150)))
2338  	var x153 uint64
2339  	var x154 uint64
2340  	x153, x154 = bits.Add64(x125, uint64(p384Uint1(x142)), uint64(p384Uint1(x152)))
2341  	var x155 uint64
2342  	_, x155 = bits.Mul64(x143, 0x100000001)
2343  	var x157 uint64
2344  	var x158 uint64
2345  	x158, x157 = bits.Mul64(x155, 0xffffffffffffffff)
2346  	var x159 uint64
2347  	var x160 uint64
2348  	x160, x159 = bits.Mul64(x155, 0xffffffffffffffff)
2349  	var x161 uint64
2350  	var x162 uint64
2351  	x162, x161 = bits.Mul64(x155, 0xffffffffffffffff)
2352  	var x163 uint64
2353  	var x164 uint64
2354  	x164, x163 = bits.Mul64(x155, 0xfffffffffffffffe)
2355  	var x165 uint64
2356  	var x166 uint64
2357  	x166, x165 = bits.Mul64(x155, 0xffffffff00000000)
2358  	var x167 uint64
2359  	var x168 uint64
2360  	x168, x167 = bits.Mul64(x155, 0xffffffff)
2361  	var x169 uint64
2362  	var x170 uint64
2363  	x169, x170 = bits.Add64(x168, x165, uint64(0x0))
2364  	var x171 uint64
2365  	var x172 uint64
2366  	x171, x172 = bits.Add64(x166, x163, uint64(p384Uint1(x170)))
2367  	var x173 uint64
2368  	var x174 uint64
2369  	x173, x174 = bits.Add64(x164, x161, uint64(p384Uint1(x172)))
2370  	var x175 uint64
2371  	var x176 uint64
2372  	x175, x176 = bits.Add64(x162, x159, uint64(p384Uint1(x174)))
2373  	var x177 uint64
2374  	var x178 uint64
2375  	x177, x178 = bits.Add64(x160, x157, uint64(p384Uint1(x176)))
2376  	var x180 uint64
2377  	_, x180 = bits.Add64(x143, x167, uint64(0x0))
2378  	var x181 uint64
2379  	var x182 uint64
2380  	x181, x182 = bits.Add64(x145, x169, uint64(p384Uint1(x180)))
2381  	var x183 uint64
2382  	var x184 uint64
2383  	x183, x184 = bits.Add64(x147, x171, uint64(p384Uint1(x182)))
2384  	var x185 uint64
2385  	var x186 uint64
2386  	x185, x186 = bits.Add64(x149, x173, uint64(p384Uint1(x184)))
2387  	var x187 uint64
2388  	var x188 uint64
2389  	x187, x188 = bits.Add64(x151, x175, uint64(p384Uint1(x186)))
2390  	var x189 uint64
2391  	var x190 uint64
2392  	x189, x190 = bits.Add64(x153, x177, uint64(p384Uint1(x188)))
2393  	var x191 uint64
2394  	var x192 uint64
2395  	x191, x192 = bits.Add64((uint64(p384Uint1(x154)) + uint64(p384Uint1(x126))), (uint64(p384Uint1(x178)) + x158), uint64(p384Uint1(x190)))
2396  	var x193 uint64
2397  	var x194 uint64
2398  	x194, x193 = bits.Mul64(x3, 0x200000000)
2399  	var x195 uint64
2400  	var x196 uint64
2401  	x196, x195 = bits.Mul64(x3, 0xfffffffe00000000)
2402  	var x197 uint64
2403  	var x198 uint64
2404  	x198, x197 = bits.Mul64(x3, 0x200000000)
2405  	var x199 uint64
2406  	var x200 uint64
2407  	x200, x199 = bits.Mul64(x3, 0xfffffffe00000001)
2408  	var x201 uint64
2409  	var x202 uint64
2410  	x201, x202 = bits.Add64(x200, x197, uint64(0x0))
2411  	var x203 uint64
2412  	var x204 uint64
2413  	x203, x204 = bits.Add64(x198, x195, uint64(p384Uint1(x202)))
2414  	var x205 uint64
2415  	var x206 uint64
2416  	x205, x206 = bits.Add64(x196, x193, uint64(p384Uint1(x204)))
2417  	var x207 uint64
2418  	var x208 uint64
2419  	x207, x208 = bits.Add64(x194, x3, uint64(p384Uint1(x206)))
2420  	var x209 uint64
2421  	var x210 uint64
2422  	x209, x210 = bits.Add64(x181, x199, uint64(0x0))
2423  	var x211 uint64
2424  	var x212 uint64
2425  	x211, x212 = bits.Add64(x183, x201, uint64(p384Uint1(x210)))
2426  	var x213 uint64
2427  	var x214 uint64
2428  	x213, x214 = bits.Add64(x185, x203, uint64(p384Uint1(x212)))
2429  	var x215 uint64
2430  	var x216 uint64
2431  	x215, x216 = bits.Add64(x187, x205, uint64(p384Uint1(x214)))
2432  	var x217 uint64
2433  	var x218 uint64
2434  	x217, x218 = bits.Add64(x189, x207, uint64(p384Uint1(x216)))
2435  	var x219 uint64
2436  	var x220 uint64
2437  	x219, x220 = bits.Add64(x191, uint64(p384Uint1(x208)), uint64(p384Uint1(x218)))
2438  	var x221 uint64
2439  	_, x221 = bits.Mul64(x209, 0x100000001)
2440  	var x223 uint64
2441  	var x224 uint64
2442  	x224, x223 = bits.Mul64(x221, 0xffffffffffffffff)
2443  	var x225 uint64
2444  	var x226 uint64
2445  	x226, x225 = bits.Mul64(x221, 0xffffffffffffffff)
2446  	var x227 uint64
2447  	var x228 uint64
2448  	x228, x227 = bits.Mul64(x221, 0xffffffffffffffff)
2449  	var x229 uint64
2450  	var x230 uint64
2451  	x230, x229 = bits.Mul64(x221, 0xfffffffffffffffe)
2452  	var x231 uint64
2453  	var x232 uint64
2454  	x232, x231 = bits.Mul64(x221, 0xffffffff00000000)
2455  	var x233 uint64
2456  	var x234 uint64
2457  	x234, x233 = bits.Mul64(x221, 0xffffffff)
2458  	var x235 uint64
2459  	var x236 uint64
2460  	x235, x236 = bits.Add64(x234, x231, uint64(0x0))
2461  	var x237 uint64
2462  	var x238 uint64
2463  	x237, x238 = bits.Add64(x232, x229, uint64(p384Uint1(x236)))
2464  	var x239 uint64
2465  	var x240 uint64
2466  	x239, x240 = bits.Add64(x230, x227, uint64(p384Uint1(x238)))
2467  	var x241 uint64
2468  	var x242 uint64
2469  	x241, x242 = bits.Add64(x228, x225, uint64(p384Uint1(x240)))
2470  	var x243 uint64
2471  	var x244 uint64
2472  	x243, x244 = bits.Add64(x226, x223, uint64(p384Uint1(x242)))
2473  	var x246 uint64
2474  	_, x246 = bits.Add64(x209, x233, uint64(0x0))
2475  	var x247 uint64
2476  	var x248 uint64
2477  	x247, x248 = bits.Add64(x211, x235, uint64(p384Uint1(x246)))
2478  	var x249 uint64
2479  	var x250 uint64
2480  	x249, x250 = bits.Add64(x213, x237, uint64(p384Uint1(x248)))
2481  	var x251 uint64
2482  	var x252 uint64
2483  	x251, x252 = bits.Add64(x215, x239, uint64(p384Uint1(x250)))
2484  	var x253 uint64
2485  	var x254 uint64
2486  	x253, x254 = bits.Add64(x217, x241, uint64(p384Uint1(x252)))
2487  	var x255 uint64
2488  	var x256 uint64
2489  	x255, x256 = bits.Add64(x219, x243, uint64(p384Uint1(x254)))
2490  	var x257 uint64
2491  	var x258 uint64
2492  	x257, x258 = bits.Add64((uint64(p384Uint1(x220)) + uint64(p384Uint1(x192))), (uint64(p384Uint1(x244)) + x224), uint64(p384Uint1(x256)))
2493  	var x259 uint64
2494  	var x260 uint64
2495  	x260, x259 = bits.Mul64(x4, 0x200000000)
2496  	var x261 uint64
2497  	var x262 uint64
2498  	x262, x261 = bits.Mul64(x4, 0xfffffffe00000000)
2499  	var x263 uint64
2500  	var x264 uint64
2501  	x264, x263 = bits.Mul64(x4, 0x200000000)
2502  	var x265 uint64
2503  	var x266 uint64
2504  	x266, x265 = bits.Mul64(x4, 0xfffffffe00000001)
2505  	var x267 uint64
2506  	var x268 uint64
2507  	x267, x268 = bits.Add64(x266, x263, uint64(0x0))
2508  	var x269 uint64
2509  	var x270 uint64
2510  	x269, x270 = bits.Add64(x264, x261, uint64(p384Uint1(x268)))
2511  	var x271 uint64
2512  	var x272 uint64
2513  	x271, x272 = bits.Add64(x262, x259, uint64(p384Uint1(x270)))
2514  	var x273 uint64
2515  	var x274 uint64
2516  	x273, x274 = bits.Add64(x260, x4, uint64(p384Uint1(x272)))
2517  	var x275 uint64
2518  	var x276 uint64
2519  	x275, x276 = bits.Add64(x247, x265, uint64(0x0))
2520  	var x277 uint64
2521  	var x278 uint64
2522  	x277, x278 = bits.Add64(x249, x267, uint64(p384Uint1(x276)))
2523  	var x279 uint64
2524  	var x280 uint64
2525  	x279, x280 = bits.Add64(x251, x269, uint64(p384Uint1(x278)))
2526  	var x281 uint64
2527  	var x282 uint64
2528  	x281, x282 = bits.Add64(x253, x271, uint64(p384Uint1(x280)))
2529  	var x283 uint64
2530  	var x284 uint64
2531  	x283, x284 = bits.Add64(x255, x273, uint64(p384Uint1(x282)))
2532  	var x285 uint64
2533  	var x286 uint64
2534  	x285, x286 = bits.Add64(x257, uint64(p384Uint1(x274)), uint64(p384Uint1(x284)))
2535  	var x287 uint64
2536  	_, x287 = bits.Mul64(x275, 0x100000001)
2537  	var x289 uint64
2538  	var x290 uint64
2539  	x290, x289 = bits.Mul64(x287, 0xffffffffffffffff)
2540  	var x291 uint64
2541  	var x292 uint64
2542  	x292, x291 = bits.Mul64(x287, 0xffffffffffffffff)
2543  	var x293 uint64
2544  	var x294 uint64
2545  	x294, x293 = bits.Mul64(x287, 0xffffffffffffffff)
2546  	var x295 uint64
2547  	var x296 uint64
2548  	x296, x295 = bits.Mul64(x287, 0xfffffffffffffffe)
2549  	var x297 uint64
2550  	var x298 uint64
2551  	x298, x297 = bits.Mul64(x287, 0xffffffff00000000)
2552  	var x299 uint64
2553  	var x300 uint64
2554  	x300, x299 = bits.Mul64(x287, 0xffffffff)
2555  	var x301 uint64
2556  	var x302 uint64
2557  	x301, x302 = bits.Add64(x300, x297, uint64(0x0))
2558  	var x303 uint64
2559  	var x304 uint64
2560  	x303, x304 = bits.Add64(x298, x295, uint64(p384Uint1(x302)))
2561  	var x305 uint64
2562  	var x306 uint64
2563  	x305, x306 = bits.Add64(x296, x293, uint64(p384Uint1(x304)))
2564  	var x307 uint64
2565  	var x308 uint64
2566  	x307, x308 = bits.Add64(x294, x291, uint64(p384Uint1(x306)))
2567  	var x309 uint64
2568  	var x310 uint64
2569  	x309, x310 = bits.Add64(x292, x289, uint64(p384Uint1(x308)))
2570  	var x312 uint64
2571  	_, x312 = bits.Add64(x275, x299, uint64(0x0))
2572  	var x313 uint64
2573  	var x314 uint64
2574  	x313, x314 = bits.Add64(x277, x301, uint64(p384Uint1(x312)))
2575  	var x315 uint64
2576  	var x316 uint64
2577  	x315, x316 = bits.Add64(x279, x303, uint64(p384Uint1(x314)))
2578  	var x317 uint64
2579  	var x318 uint64
2580  	x317, x318 = bits.Add64(x281, x305, uint64(p384Uint1(x316)))
2581  	var x319 uint64
2582  	var x320 uint64
2583  	x319, x320 = bits.Add64(x283, x307, uint64(p384Uint1(x318)))
2584  	var x321 uint64
2585  	var x322 uint64
2586  	x321, x322 = bits.Add64(x285, x309, uint64(p384Uint1(x320)))
2587  	var x323 uint64
2588  	var x324 uint64
2589  	x323, x324 = bits.Add64((uint64(p384Uint1(x286)) + uint64(p384Uint1(x258))), (uint64(p384Uint1(x310)) + x290), uint64(p384Uint1(x322)))
2590  	var x325 uint64
2591  	var x326 uint64
2592  	x326, x325 = bits.Mul64(x5, 0x200000000)
2593  	var x327 uint64
2594  	var x328 uint64
2595  	x328, x327 = bits.Mul64(x5, 0xfffffffe00000000)
2596  	var x329 uint64
2597  	var x330 uint64
2598  	x330, x329 = bits.Mul64(x5, 0x200000000)
2599  	var x331 uint64
2600  	var x332 uint64
2601  	x332, x331 = bits.Mul64(x5, 0xfffffffe00000001)
2602  	var x333 uint64
2603  	var x334 uint64
2604  	x333, x334 = bits.Add64(x332, x329, uint64(0x0))
2605  	var x335 uint64
2606  	var x336 uint64
2607  	x335, x336 = bits.Add64(x330, x327, uint64(p384Uint1(x334)))
2608  	var x337 uint64
2609  	var x338 uint64
2610  	x337, x338 = bits.Add64(x328, x325, uint64(p384Uint1(x336)))
2611  	var x339 uint64
2612  	var x340 uint64
2613  	x339, x340 = bits.Add64(x326, x5, uint64(p384Uint1(x338)))
2614  	var x341 uint64
2615  	var x342 uint64
2616  	x341, x342 = bits.Add64(x313, x331, uint64(0x0))
2617  	var x343 uint64
2618  	var x344 uint64
2619  	x343, x344 = bits.Add64(x315, x333, uint64(p384Uint1(x342)))
2620  	var x345 uint64
2621  	var x346 uint64
2622  	x345, x346 = bits.Add64(x317, x335, uint64(p384Uint1(x344)))
2623  	var x347 uint64
2624  	var x348 uint64
2625  	x347, x348 = bits.Add64(x319, x337, uint64(p384Uint1(x346)))
2626  	var x349 uint64
2627  	var x350 uint64
2628  	x349, x350 = bits.Add64(x321, x339, uint64(p384Uint1(x348)))
2629  	var x351 uint64
2630  	var x352 uint64
2631  	x351, x352 = bits.Add64(x323, uint64(p384Uint1(x340)), uint64(p384Uint1(x350)))
2632  	var x353 uint64
2633  	_, x353 = bits.Mul64(x341, 0x100000001)
2634  	var x355 uint64
2635  	var x356 uint64
2636  	x356, x355 = bits.Mul64(x353, 0xffffffffffffffff)
2637  	var x357 uint64
2638  	var x358 uint64
2639  	x358, x357 = bits.Mul64(x353, 0xffffffffffffffff)
2640  	var x359 uint64
2641  	var x360 uint64
2642  	x360, x359 = bits.Mul64(x353, 0xffffffffffffffff)
2643  	var x361 uint64
2644  	var x362 uint64
2645  	x362, x361 = bits.Mul64(x353, 0xfffffffffffffffe)
2646  	var x363 uint64
2647  	var x364 uint64
2648  	x364, x363 = bits.Mul64(x353, 0xffffffff00000000)
2649  	var x365 uint64
2650  	var x366 uint64
2651  	x366, x365 = bits.Mul64(x353, 0xffffffff)
2652  	var x367 uint64
2653  	var x368 uint64
2654  	x367, x368 = bits.Add64(x366, x363, uint64(0x0))
2655  	var x369 uint64
2656  	var x370 uint64
2657  	x369, x370 = bits.Add64(x364, x361, uint64(p384Uint1(x368)))
2658  	var x371 uint64
2659  	var x372 uint64
2660  	x371, x372 = bits.Add64(x362, x359, uint64(p384Uint1(x370)))
2661  	var x373 uint64
2662  	var x374 uint64
2663  	x373, x374 = bits.Add64(x360, x357, uint64(p384Uint1(x372)))
2664  	var x375 uint64
2665  	var x376 uint64
2666  	x375, x376 = bits.Add64(x358, x355, uint64(p384Uint1(x374)))
2667  	var x378 uint64
2668  	_, x378 = bits.Add64(x341, x365, uint64(0x0))
2669  	var x379 uint64
2670  	var x380 uint64
2671  	x379, x380 = bits.Add64(x343, x367, uint64(p384Uint1(x378)))
2672  	var x381 uint64
2673  	var x382 uint64
2674  	x381, x382 = bits.Add64(x345, x369, uint64(p384Uint1(x380)))
2675  	var x383 uint64
2676  	var x384 uint64
2677  	x383, x384 = bits.Add64(x347, x371, uint64(p384Uint1(x382)))
2678  	var x385 uint64
2679  	var x386 uint64
2680  	x385, x386 = bits.Add64(x349, x373, uint64(p384Uint1(x384)))
2681  	var x387 uint64
2682  	var x388 uint64
2683  	x387, x388 = bits.Add64(x351, x375, uint64(p384Uint1(x386)))
2684  	var x389 uint64
2685  	var x390 uint64
2686  	x389, x390 = bits.Add64((uint64(p384Uint1(x352)) + uint64(p384Uint1(x324))), (uint64(p384Uint1(x376)) + x356), uint64(p384Uint1(x388)))
2687  	var x391 uint64
2688  	var x392 uint64
2689  	x391, x392 = bits.Sub64(x379, 0xffffffff, uint64(0x0))
2690  	var x393 uint64
2691  	var x394 uint64
2692  	x393, x394 = bits.Sub64(x381, 0xffffffff00000000, uint64(p384Uint1(x392)))
2693  	var x395 uint64
2694  	var x396 uint64
2695  	x395, x396 = bits.Sub64(x383, 0xfffffffffffffffe, uint64(p384Uint1(x394)))
2696  	var x397 uint64
2697  	var x398 uint64
2698  	x397, x398 = bits.Sub64(x385, 0xffffffffffffffff, uint64(p384Uint1(x396)))
2699  	var x399 uint64
2700  	var x400 uint64
2701  	x399, x400 = bits.Sub64(x387, 0xffffffffffffffff, uint64(p384Uint1(x398)))
2702  	var x401 uint64
2703  	var x402 uint64
2704  	x401, x402 = bits.Sub64(x389, 0xffffffffffffffff, uint64(p384Uint1(x400)))
2705  	var x404 uint64
2706  	_, x404 = bits.Sub64(uint64(p384Uint1(x390)), uint64(0x0), uint64(p384Uint1(x402)))
2707  	var x405 uint64
2708  	p384CmovznzU64(&x405, p384Uint1(x404), x391, x379)
2709  	var x406 uint64
2710  	p384CmovznzU64(&x406, p384Uint1(x404), x393, x381)
2711  	var x407 uint64
2712  	p384CmovznzU64(&x407, p384Uint1(x404), x395, x383)
2713  	var x408 uint64
2714  	p384CmovznzU64(&x408, p384Uint1(x404), x397, x385)
2715  	var x409 uint64
2716  	p384CmovznzU64(&x409, p384Uint1(x404), x399, x387)
2717  	var x410 uint64
2718  	p384CmovznzU64(&x410, p384Uint1(x404), x401, x389)
2719  	out1[0] = x405
2720  	out1[1] = x406
2721  	out1[2] = x407
2722  	out1[3] = x408
2723  	out1[4] = x409
2724  	out1[5] = x410
2725  }
2726  
2727  // p384Selectznz is a multi-limb conditional select.
2728  //
2729  // Postconditions:
2730  //
2731  //	eval out1 = (if arg1 = 0 then eval arg2 else eval arg3)
2732  //
2733  // Input Bounds:
2734  //
2735  //	arg1: [0x0 ~> 0x1]
2736  //	arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
2737  //	arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
2738  //
2739  // Output Bounds:
2740  //
2741  //	out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
2742  func p384Selectznz(out1 *[6]uint64, arg1 p384Uint1, arg2 *[6]uint64, arg3 *[6]uint64) {
2743  	var x1 uint64
2744  	p384CmovznzU64(&x1, arg1, arg2[0], arg3[0])
2745  	var x2 uint64
2746  	p384CmovznzU64(&x2, arg1, arg2[1], arg3[1])
2747  	var x3 uint64
2748  	p384CmovznzU64(&x3, arg1, arg2[2], arg3[2])
2749  	var x4 uint64
2750  	p384CmovznzU64(&x4, arg1, arg2[3], arg3[3])
2751  	var x5 uint64
2752  	p384CmovznzU64(&x5, arg1, arg2[4], arg3[4])
2753  	var x6 uint64
2754  	p384CmovznzU64(&x6, arg1, arg2[5], arg3[5])
2755  	out1[0] = x1
2756  	out1[1] = x2
2757  	out1[2] = x3
2758  	out1[3] = x4
2759  	out1[4] = x5
2760  	out1[5] = x6
2761  }
2762  
2763  // p384ToBytes serializes a field element NOT in the Montgomery domain to bytes in little-endian order.
2764  //
2765  // Preconditions:
2766  //
2767  //	0 ≤ eval arg1 < m
2768  //
2769  // Postconditions:
2770  //
2771  //	out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..47]
2772  //
2773  // Input Bounds:
2774  //
2775  //	arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
2776  //
2777  // Output Bounds:
2778  //
2779  //	out1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff]]
2780  func p384ToBytes(out1 *[48]uint8, arg1 *[6]uint64) {
2781  	x1 := arg1[5]
2782  	x2 := arg1[4]
2783  	x3 := arg1[3]
2784  	x4 := arg1[2]
2785  	x5 := arg1[1]
2786  	x6 := arg1[0]
2787  	x7 := (uint8(x6) & 0xff)
2788  	x8 := (x6 >> 8)
2789  	x9 := (uint8(x8) & 0xff)
2790  	x10 := (x8 >> 8)
2791  	x11 := (uint8(x10) & 0xff)
2792  	x12 := (x10 >> 8)
2793  	x13 := (uint8(x12) & 0xff)
2794  	x14 := (x12 >> 8)
2795  	x15 := (uint8(x14) & 0xff)
2796  	x16 := (x14 >> 8)
2797  	x17 := (uint8(x16) & 0xff)
2798  	x18 := (x16 >> 8)
2799  	x19 := (uint8(x18) & 0xff)
2800  	x20 := uint8((x18 >> 8))
2801  	x21 := (uint8(x5) & 0xff)
2802  	x22 := (x5 >> 8)
2803  	x23 := (uint8(x22) & 0xff)
2804  	x24 := (x22 >> 8)
2805  	x25 := (uint8(x24) & 0xff)
2806  	x26 := (x24 >> 8)
2807  	x27 := (uint8(x26) & 0xff)
2808  	x28 := (x26 >> 8)
2809  	x29 := (uint8(x28) & 0xff)
2810  	x30 := (x28 >> 8)
2811  	x31 := (uint8(x30) & 0xff)
2812  	x32 := (x30 >> 8)
2813  	x33 := (uint8(x32) & 0xff)
2814  	x34 := uint8((x32 >> 8))
2815  	x35 := (uint8(x4) & 0xff)
2816  	x36 := (x4 >> 8)
2817  	x37 := (uint8(x36) & 0xff)
2818  	x38 := (x36 >> 8)
2819  	x39 := (uint8(x38) & 0xff)
2820  	x40 := (x38 >> 8)
2821  	x41 := (uint8(x40) & 0xff)
2822  	x42 := (x40 >> 8)
2823  	x43 := (uint8(x42) & 0xff)
2824  	x44 := (x42 >> 8)
2825  	x45 := (uint8(x44) & 0xff)
2826  	x46 := (x44 >> 8)
2827  	x47 := (uint8(x46) & 0xff)
2828  	x48 := uint8((x46 >> 8))
2829  	x49 := (uint8(x3) & 0xff)
2830  	x50 := (x3 >> 8)
2831  	x51 := (uint8(x50) & 0xff)
2832  	x52 := (x50 >> 8)
2833  	x53 := (uint8(x52) & 0xff)
2834  	x54 := (x52 >> 8)
2835  	x55 := (uint8(x54) & 0xff)
2836  	x56 := (x54 >> 8)
2837  	x57 := (uint8(x56) & 0xff)
2838  	x58 := (x56 >> 8)
2839  	x59 := (uint8(x58) & 0xff)
2840  	x60 := (x58 >> 8)
2841  	x61 := (uint8(x60) & 0xff)
2842  	x62 := uint8((x60 >> 8))
2843  	x63 := (uint8(x2) & 0xff)
2844  	x64 := (x2 >> 8)
2845  	x65 := (uint8(x64) & 0xff)
2846  	x66 := (x64 >> 8)
2847  	x67 := (uint8(x66) & 0xff)
2848  	x68 := (x66 >> 8)
2849  	x69 := (uint8(x68) & 0xff)
2850  	x70 := (x68 >> 8)
2851  	x71 := (uint8(x70) & 0xff)
2852  	x72 := (x70 >> 8)
2853  	x73 := (uint8(x72) & 0xff)
2854  	x74 := (x72 >> 8)
2855  	x75 := (uint8(x74) & 0xff)
2856  	x76 := uint8((x74 >> 8))
2857  	x77 := (uint8(x1) & 0xff)
2858  	x78 := (x1 >> 8)
2859  	x79 := (uint8(x78) & 0xff)
2860  	x80 := (x78 >> 8)
2861  	x81 := (uint8(x80) & 0xff)
2862  	x82 := (x80 >> 8)
2863  	x83 := (uint8(x82) & 0xff)
2864  	x84 := (x82 >> 8)
2865  	x85 := (uint8(x84) & 0xff)
2866  	x86 := (x84 >> 8)
2867  	x87 := (uint8(x86) & 0xff)
2868  	x88 := (x86 >> 8)
2869  	x89 := (uint8(x88) & 0xff)
2870  	x90 := uint8((x88 >> 8))
2871  	out1[0] = x7
2872  	out1[1] = x9
2873  	out1[2] = x11
2874  	out1[3] = x13
2875  	out1[4] = x15
2876  	out1[5] = x17
2877  	out1[6] = x19
2878  	out1[7] = x20
2879  	out1[8] = x21
2880  	out1[9] = x23
2881  	out1[10] = x25
2882  	out1[11] = x27
2883  	out1[12] = x29
2884  	out1[13] = x31
2885  	out1[14] = x33
2886  	out1[15] = x34
2887  	out1[16] = x35
2888  	out1[17] = x37
2889  	out1[18] = x39
2890  	out1[19] = x41
2891  	out1[20] = x43
2892  	out1[21] = x45
2893  	out1[22] = x47
2894  	out1[23] = x48
2895  	out1[24] = x49
2896  	out1[25] = x51
2897  	out1[26] = x53
2898  	out1[27] = x55
2899  	out1[28] = x57
2900  	out1[29] = x59
2901  	out1[30] = x61
2902  	out1[31] = x62
2903  	out1[32] = x63
2904  	out1[33] = x65
2905  	out1[34] = x67
2906  	out1[35] = x69
2907  	out1[36] = x71
2908  	out1[37] = x73
2909  	out1[38] = x75
2910  	out1[39] = x76
2911  	out1[40] = x77
2912  	out1[41] = x79
2913  	out1[42] = x81
2914  	out1[43] = x83
2915  	out1[44] = x85
2916  	out1[45] = x87
2917  	out1[46] = x89
2918  	out1[47] = x90
2919  }
2920  
2921  // p384FromBytes deserializes a field element NOT in the Montgomery domain from bytes in little-endian order.
2922  //
2923  // Preconditions:
2924  //
2925  //	0 ≤ bytes_eval arg1 < m
2926  //
2927  // Postconditions:
2928  //
2929  //	eval out1 mod m = bytes_eval arg1 mod m
2930  //	0 ≤ eval out1 < m
2931  //
2932  // Input Bounds:
2933  //
2934  //	arg1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff]]
2935  //
2936  // Output Bounds:
2937  //
2938  //	out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
2939  func p384FromBytes(out1 *[6]uint64, arg1 *[48]uint8) {
2940  	x1 := (uint64(arg1[47]) << 56)
2941  	x2 := (uint64(arg1[46]) << 48)
2942  	x3 := (uint64(arg1[45]) << 40)
2943  	x4 := (uint64(arg1[44]) << 32)
2944  	x5 := (uint64(arg1[43]) << 24)
2945  	x6 := (uint64(arg1[42]) << 16)
2946  	x7 := (uint64(arg1[41]) << 8)
2947  	x8 := arg1[40]
2948  	x9 := (uint64(arg1[39]) << 56)
2949  	x10 := (uint64(arg1[38]) << 48)
2950  	x11 := (uint64(arg1[37]) << 40)
2951  	x12 := (uint64(arg1[36]) << 32)
2952  	x13 := (uint64(arg1[35]) << 24)
2953  	x14 := (uint64(arg1[34]) << 16)
2954  	x15 := (uint64(arg1[33]) << 8)
2955  	x16 := arg1[32]
2956  	x17 := (uint64(arg1[31]) << 56)
2957  	x18 := (uint64(arg1[30]) << 48)
2958  	x19 := (uint64(arg1[29]) << 40)
2959  	x20 := (uint64(arg1[28]) << 32)
2960  	x21 := (uint64(arg1[27]) << 24)
2961  	x22 := (uint64(arg1[26]) << 16)
2962  	x23 := (uint64(arg1[25]) << 8)
2963  	x24 := arg1[24]
2964  	x25 := (uint64(arg1[23]) << 56)
2965  	x26 := (uint64(arg1[22]) << 48)
2966  	x27 := (uint64(arg1[21]) << 40)
2967  	x28 := (uint64(arg1[20]) << 32)
2968  	x29 := (uint64(arg1[19]) << 24)
2969  	x30 := (uint64(arg1[18]) << 16)
2970  	x31 := (uint64(arg1[17]) << 8)
2971  	x32 := arg1[16]
2972  	x33 := (uint64(arg1[15]) << 56)
2973  	x34 := (uint64(arg1[14]) << 48)
2974  	x35 := (uint64(arg1[13]) << 40)
2975  	x36 := (uint64(arg1[12]) << 32)
2976  	x37 := (uint64(arg1[11]) << 24)
2977  	x38 := (uint64(arg1[10]) << 16)
2978  	x39 := (uint64(arg1[9]) << 8)
2979  	x40 := arg1[8]
2980  	x41 := (uint64(arg1[7]) << 56)
2981  	x42 := (uint64(arg1[6]) << 48)
2982  	x43 := (uint64(arg1[5]) << 40)
2983  	x44 := (uint64(arg1[4]) << 32)
2984  	x45 := (uint64(arg1[3]) << 24)
2985  	x46 := (uint64(arg1[2]) << 16)
2986  	x47 := (uint64(arg1[1]) << 8)
2987  	x48 := arg1[0]
2988  	x49 := (x47 + uint64(x48))
2989  	x50 := (x46 + x49)
2990  	x51 := (x45 + x50)
2991  	x52 := (x44 + x51)
2992  	x53 := (x43 + x52)
2993  	x54 := (x42 + x53)
2994  	x55 := (x41 + x54)
2995  	x56 := (x39 + uint64(x40))
2996  	x57 := (x38 + x56)
2997  	x58 := (x37 + x57)
2998  	x59 := (x36 + x58)
2999  	x60 := (x35 + x59)
3000  	x61 := (x34 + x60)
3001  	x62 := (x33 + x61)
3002  	x63 := (x31 + uint64(x32))
3003  	x64 := (x30 + x63)
3004  	x65 := (x29 + x64)
3005  	x66 := (x28 + x65)
3006  	x67 := (x27 + x66)
3007  	x68 := (x26 + x67)
3008  	x69 := (x25 + x68)
3009  	x70 := (x23 + uint64(x24))
3010  	x71 := (x22 + x70)
3011  	x72 := (x21 + x71)
3012  	x73 := (x20 + x72)
3013  	x74 := (x19 + x73)
3014  	x75 := (x18 + x74)
3015  	x76 := (x17 + x75)
3016  	x77 := (x15 + uint64(x16))
3017  	x78 := (x14 + x77)
3018  	x79 := (x13 + x78)
3019  	x80 := (x12 + x79)
3020  	x81 := (x11 + x80)
3021  	x82 := (x10 + x81)
3022  	x83 := (x9 + x82)
3023  	x84 := (x7 + uint64(x8))
3024  	x85 := (x6 + x84)
3025  	x86 := (x5 + x85)
3026  	x87 := (x4 + x86)
3027  	x88 := (x3 + x87)
3028  	x89 := (x2 + x88)
3029  	x90 := (x1 + x89)
3030  	out1[0] = x55
3031  	out1[1] = x62
3032  	out1[2] = x69
3033  	out1[3] = x76
3034  	out1[4] = x83
3035  	out1[5] = x90
3036  }
3037