github.com/consensys/gnark-crypto@v0.14.0/ecc/bw6-633/fp/element_exp.go (about)

     1  // Copyright 2020 ConsenSys Software Inc.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  // Code generated by consensys/gnark-crypto DO NOT EDIT
    16  
    17  package fp
    18  
    19  // expBySqrtExp is equivalent to z.Exp(x, 24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf57073844a7a6d37a6228fee79ae922dd48ae0001)
    20  //
    21  // uses github.com/mmcloughlin/addchain v0.4.0 to generate a shorter addition chain
    22  func (z *Element) expBySqrtExp(x Element) *Element {
    23  	// addition chain:
    24  	//
    25  	//	_10       = 2*1
    26  	//	_11       = 1 + _10
    27  	//	_101      = _10 + _11
    28  	//	_111      = _10 + _101
    29  	//	_1001     = _10 + _111
    30  	//	_1011     = _10 + _1001
    31  	//	_1101     = _10 + _1011
    32  	//	_1111     = _10 + _1101
    33  	//	_10001    = _10 + _1111
    34  	//	_10011    = _10 + _10001
    35  	//	_10101    = _10 + _10011
    36  	//	_10111    = _10 + _10101
    37  	//	_11001    = _10 + _10111
    38  	//	_11011    = _10 + _11001
    39  	//	_11101    = _10 + _11011
    40  	//	_11111    = _10 + _11101
    41  	//	_111110   = 2*_11111
    42  	//	_111111   = 1 + _111110
    43  	//	_1111110  = 2*_111111
    44  	//	_1111111  = 1 + _1111110
    45  	//	_10010000 = _10001 + _1111111
    46  	//	i36       = ((_10010000 << 3 + _11001) << 5 + _10001) << 5
    47  	//	i45       = 2*((_10011 + i36) << 5 + _11001) + 1
    48  	//	i69       = ((i45 << 10 + _1111) << 6 + _1101) << 6
    49  	//	i85       = ((_11111 + i69) << 3 + _11) << 10 + _1111111
    50  	//	i106      = ((2*i85 + 1) << 9 + _1101) << 9
    51  	//	i117      = ((_10111 + i106) << 6 + _10011) << 2 + _11
    52  	//	i142      = ((i117 << 12 + _11101) << 4 + _111) << 7
    53  	//	i155      = ((_10101 + i142) << 5 + _1011) << 5 + _1011
    54  	//	i177      = ((i155 << 4 + _101) << 9 + _111111) << 7
    55  	//	i193      = ((_11011 + i177) << 5 + _11) << 8 + _11101
    56  	//	i213      = ((i193 << 6 + _11101) << 5 + _1111) << 7
    57  	//	i230      = ((_11101 + i213) << 6 + _1011) << 8 + _11101
    58  	//	i250      = ((i230 << 5 + _111) << 6 + _1011) << 7
    59  	//	i264      = ((_10111 + i250) << 5 + _1101) << 6 + _1101
    60  	//	i284      = ((i264 << 6 + _11011) << 7 + _11011) << 5
    61  	//	i297      = ((_10111 + i284) << 4 + _1011) << 6 + _10001
    62  	//	i323      = ((i297 << 6 + _11111) << 11 + _10101) << 7
    63  	//	i344      = ((_10101 + i323) << 7 + _11011) << 11 + _11111
    64  	//	i360      = ((i344 << 5 + _1011) << 5 + _1111) << 4
    65  	//	i372      = ((_101 + i360) << 6 + _1001) << 3 + 1
    66  	//	i395      = ((i372 << 9 + _10111) << 8 + _11011) << 4
    67  	//	i411      = ((_101 + i395) << 7 + _11111) << 6 + _10111
    68  	//	i433      = ((i411 << 3 + _101) << 11 + _111111) << 6
    69  	//	i447      = ((_10101 + i433) << 4 + _1111) << 7 + _1001
    70  	//	i469      = ((i447 << 3 + 1) << 7 + _111111) << 10
    71  	//	i483      = ((_11101 + i469) << 4 + 1) << 7 + _101
    72  	//	i503      = ((i483 << 9 + _11101) << 4 + _1011) << 5
    73  	//	i514      = ((_1111 + i503) << 5 + _1101) << 3 + 1
    74  	//	i538      = ((i514 << 12 + _11111) << 6 + _10111) << 4
    75  	//	i552      = ((_1011 + i538) << 6 + _10111) << 5 + _111
    76  	//	i568      = ((i552 << 6 + _1111) << 6 + _10101) << 2
    77  	//	i584      = ((_11 + i568) << 8 + _111) << 5 + _111
    78  	//	i606      = ((i584 << 9 + _10001) << 5 + _101) << 6
    79  	//	i620      = ((_1111 + i606) << 6 + _10011) << 5 + _1101
    80  	//	i637      = ((i620 << 7 + _11011) << 4 + _1101) << 4
    81  	//	i650      = ((_11 + i637) << 8 + _10001) << 2 + 1
    82  	//	i672      = ((i650 << 10 + _1111111) << 4 + _111) << 6
    83  	//	i687      = ((_1111 + i672) << 6 + _1101) << 6 + _11101
    84  	//	i708      = ((i687 << 6 + _1001) << 7 + _1011) << 6
    85  	//	i724      = ((_11101 + i708) << 5 + _1001) << 8 + _10101
    86  	//	return      (i724 << 2 + _11) << 17 + 1
    87  	//
    88  	// Operations: 625 squares 120 multiplies
    89  
    90  	// Allocate Temporaries.
    91  	var (
    92  		t0  = new(Element)
    93  		t1  = new(Element)
    94  		t2  = new(Element)
    95  		t3  = new(Element)
    96  		t4  = new(Element)
    97  		t5  = new(Element)
    98  		t6  = new(Element)
    99  		t7  = new(Element)
   100  		t8  = new(Element)
   101  		t9  = new(Element)
   102  		t10 = new(Element)
   103  		t11 = new(Element)
   104  		t12 = new(Element)
   105  		t13 = new(Element)
   106  		t14 = new(Element)
   107  		t15 = new(Element)
   108  		t16 = new(Element)
   109  	)
   110  
   111  	// var t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16 Element
   112  	// Step 1: t7 = x^0x2
   113  	t7.Square(&x)
   114  
   115  	// Step 2: z = x^0x3
   116  	z.Mul(&x, t7)
   117  
   118  	// Step 3: t11 = x^0x5
   119  	t11.Mul(t7, z)
   120  
   121  	// Step 4: t6 = x^0x7
   122  	t6.Mul(t7, t11)
   123  
   124  	// Step 5: t1 = x^0x9
   125  	t1.Mul(t7, t6)
   126  
   127  	// Step 6: t3 = x^0xb
   128  	t3.Mul(t7, t1)
   129  
   130  	// Step 7: t4 = x^0xd
   131  	t4.Mul(t7, t3)
   132  
   133  	// Step 8: t5 = x^0xf
   134  	t5.Mul(t7, t4)
   135  
   136  	// Step 9: t8 = x^0x11
   137  	t8.Mul(t7, t5)
   138  
   139  	// Step 10: t10 = x^0x13
   140  	t10.Mul(t7, t8)
   141  
   142  	// Step 11: t0 = x^0x15
   143  	t0.Mul(t7, t10)
   144  
   145  	// Step 12: t12 = x^0x17
   146  	t12.Mul(t7, t0)
   147  
   148  	// Step 13: t15 = x^0x19
   149  	t15.Mul(t7, t12)
   150  
   151  	// Step 14: t9 = x^0x1b
   152  	t9.Mul(t7, t15)
   153  
   154  	// Step 15: t2 = x^0x1d
   155  	t2.Mul(t7, t9)
   156  
   157  	// Step 16: t13 = x^0x1f
   158  	t13.Mul(t7, t2)
   159  
   160  	// Step 17: t7 = x^0x3e
   161  	t7.Square(t13)
   162  
   163  	// Step 18: t14 = x^0x3f
   164  	t14.Mul(&x, t7)
   165  
   166  	// Step 19: t7 = x^0x7e
   167  	t7.Square(t14)
   168  
   169  	// Step 20: t7 = x^0x7f
   170  	t7.Mul(&x, t7)
   171  
   172  	// Step 21: t16 = x^0x90
   173  	t16.Mul(t8, t7)
   174  
   175  	// Step 24: t16 = x^0x480
   176  	for s := 0; s < 3; s++ {
   177  		t16.Square(t16)
   178  	}
   179  
   180  	// Step 25: t16 = x^0x499
   181  	t16.Mul(t15, t16)
   182  
   183  	// Step 30: t16 = x^0x9320
   184  	for s := 0; s < 5; s++ {
   185  		t16.Square(t16)
   186  	}
   187  
   188  	// Step 31: t16 = x^0x9331
   189  	t16.Mul(t8, t16)
   190  
   191  	// Step 36: t16 = x^0x126620
   192  	for s := 0; s < 5; s++ {
   193  		t16.Square(t16)
   194  	}
   195  
   196  	// Step 37: t16 = x^0x126633
   197  	t16.Mul(t10, t16)
   198  
   199  	// Step 42: t16 = x^0x24cc660
   200  	for s := 0; s < 5; s++ {
   201  		t16.Square(t16)
   202  	}
   203  
   204  	// Step 43: t15 = x^0x24cc679
   205  	t15.Mul(t15, t16)
   206  
   207  	// Step 44: t15 = x^0x4998cf2
   208  	t15.Square(t15)
   209  
   210  	// Step 45: t15 = x^0x4998cf3
   211  	t15.Mul(&x, t15)
   212  
   213  	// Step 55: t15 = x^0x126633cc00
   214  	for s := 0; s < 10; s++ {
   215  		t15.Square(t15)
   216  	}
   217  
   218  	// Step 56: t15 = x^0x126633cc0f
   219  	t15.Mul(t5, t15)
   220  
   221  	// Step 62: t15 = x^0x4998cf303c0
   222  	for s := 0; s < 6; s++ {
   223  		t15.Square(t15)
   224  	}
   225  
   226  	// Step 63: t15 = x^0x4998cf303cd
   227  	t15.Mul(t4, t15)
   228  
   229  	// Step 69: t15 = x^0x126633cc0f340
   230  	for s := 0; s < 6; s++ {
   231  		t15.Square(t15)
   232  	}
   233  
   234  	// Step 70: t15 = x^0x126633cc0f35f
   235  	t15.Mul(t13, t15)
   236  
   237  	// Step 73: t15 = x^0x93319e6079af8
   238  	for s := 0; s < 3; s++ {
   239  		t15.Square(t15)
   240  	}
   241  
   242  	// Step 74: t15 = x^0x93319e6079afb
   243  	t15.Mul(z, t15)
   244  
   245  	// Step 84: t15 = x^0x24cc67981e6bec00
   246  	for s := 0; s < 10; s++ {
   247  		t15.Square(t15)
   248  	}
   249  
   250  	// Step 85: t15 = x^0x24cc67981e6bec7f
   251  	t15.Mul(t7, t15)
   252  
   253  	// Step 86: t15 = x^0x4998cf303cd7d8fe
   254  	t15.Square(t15)
   255  
   256  	// Step 87: t15 = x^0x4998cf303cd7d8ff
   257  	t15.Mul(&x, t15)
   258  
   259  	// Step 96: t15 = x^0x93319e6079afb1fe00
   260  	for s := 0; s < 9; s++ {
   261  		t15.Square(t15)
   262  	}
   263  
   264  	// Step 97: t15 = x^0x93319e6079afb1fe0d
   265  	t15.Mul(t4, t15)
   266  
   267  	// Step 106: t15 = x^0x126633cc0f35f63fc1a00
   268  	for s := 0; s < 9; s++ {
   269  		t15.Square(t15)
   270  	}
   271  
   272  	// Step 107: t15 = x^0x126633cc0f35f63fc1a17
   273  	t15.Mul(t12, t15)
   274  
   275  	// Step 113: t15 = x^0x4998cf303cd7d8ff0685c0
   276  	for s := 0; s < 6; s++ {
   277  		t15.Square(t15)
   278  	}
   279  
   280  	// Step 114: t15 = x^0x4998cf303cd7d8ff0685d3
   281  	t15.Mul(t10, t15)
   282  
   283  	// Step 116: t15 = x^0x126633cc0f35f63fc1a174c
   284  	for s := 0; s < 2; s++ {
   285  		t15.Square(t15)
   286  	}
   287  
   288  	// Step 117: t15 = x^0x126633cc0f35f63fc1a174f
   289  	t15.Mul(z, t15)
   290  
   291  	// Step 129: t15 = x^0x126633cc0f35f63fc1a174f000
   292  	for s := 0; s < 12; s++ {
   293  		t15.Square(t15)
   294  	}
   295  
   296  	// Step 130: t15 = x^0x126633cc0f35f63fc1a174f01d
   297  	t15.Mul(t2, t15)
   298  
   299  	// Step 134: t15 = x^0x126633cc0f35f63fc1a174f01d0
   300  	for s := 0; s < 4; s++ {
   301  		t15.Square(t15)
   302  	}
   303  
   304  	// Step 135: t15 = x^0x126633cc0f35f63fc1a174f01d7
   305  	t15.Mul(t6, t15)
   306  
   307  	// Step 142: t15 = x^0x93319e6079afb1fe0d0ba780eb80
   308  	for s := 0; s < 7; s++ {
   309  		t15.Square(t15)
   310  	}
   311  
   312  	// Step 143: t15 = x^0x93319e6079afb1fe0d0ba780eb95
   313  	t15.Mul(t0, t15)
   314  
   315  	// Step 148: t15 = x^0x126633cc0f35f63fc1a174f01d72a0
   316  	for s := 0; s < 5; s++ {
   317  		t15.Square(t15)
   318  	}
   319  
   320  	// Step 149: t15 = x^0x126633cc0f35f63fc1a174f01d72ab
   321  	t15.Mul(t3, t15)
   322  
   323  	// Step 154: t15 = x^0x24cc67981e6bec7f8342e9e03ae5560
   324  	for s := 0; s < 5; s++ {
   325  		t15.Square(t15)
   326  	}
   327  
   328  	// Step 155: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b
   329  	t15.Mul(t3, t15)
   330  
   331  	// Step 159: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b0
   332  	for s := 0; s < 4; s++ {
   333  		t15.Square(t15)
   334  	}
   335  
   336  	// Step 160: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b5
   337  	t15.Mul(t11, t15)
   338  
   339  	// Step 169: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a00
   340  	for s := 0; s < 9; s++ {
   341  		t15.Square(t15)
   342  	}
   343  
   344  	// Step 170: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f
   345  	t15.Mul(t14, t15)
   346  
   347  	// Step 177: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f80
   348  	for s := 0; s < 7; s++ {
   349  		t15.Square(t15)
   350  	}
   351  
   352  	// Step 178: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b
   353  	t15.Mul(t9, t15)
   354  
   355  	// Step 183: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f360
   356  	for s := 0; s < 5; s++ {
   357  		t15.Square(t15)
   358  	}
   359  
   360  	// Step 184: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f363
   361  	t15.Mul(z, t15)
   362  
   363  	// Step 192: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f36300
   364  	for s := 0; s < 8; s++ {
   365  		t15.Square(t15)
   366  	}
   367  
   368  	// Step 193: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d
   369  	t15.Mul(t2, t15)
   370  
   371  	// Step 199: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c740
   372  	for s := 0; s < 6; s++ {
   373  		t15.Square(t15)
   374  	}
   375  
   376  	// Step 200: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d
   377  	t15.Mul(t2, t15)
   378  
   379  	// Step 205: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18eba0
   380  	for s := 0; s < 5; s++ {
   381  		t15.Square(t15)
   382  	}
   383  
   384  	// Step 206: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf
   385  	t15.Mul(t5, t15)
   386  
   387  	// Step 213: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d780
   388  	for s := 0; s < 7; s++ {
   389  		t15.Square(t15)
   390  	}
   391  
   392  	// Step 214: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d
   393  	t15.Mul(t2, t15)
   394  
   395  	// Step 220: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e740
   396  	for s := 0; s < 6; s++ {
   397  		t15.Square(t15)
   398  	}
   399  
   400  	// Step 221: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b
   401  	t15.Mul(t3, t15)
   402  
   403  	// Step 229: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b00
   404  	for s := 0; s < 8; s++ {
   405  		t15.Square(t15)
   406  	}
   407  
   408  	// Step 230: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d
   409  	t15.Mul(t2, t15)
   410  
   411  	// Step 235: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a0
   412  	for s := 0; s < 5; s++ {
   413  		t15.Square(t15)
   414  	}
   415  
   416  	// Step 236: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a7
   417  	t15.Mul(t6, t15)
   418  
   419  	// Step 242: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9c0
   420  	for s := 0; s < 6; s++ {
   421  		t15.Square(t15)
   422  	}
   423  
   424  	// Step 243: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb
   425  	t15.Mul(t3, t15)
   426  
   427  	// Step 250: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e580
   428  	for s := 0; s < 7; s++ {
   429  		t15.Square(t15)
   430  	}
   431  
   432  	// Step 251: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e597
   433  	t15.Mul(t12, t15)
   434  
   435  	// Step 256: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2e0
   436  	for s := 0; s < 5; s++ {
   437  		t15.Square(t15)
   438  	}
   439  
   440  	// Step 257: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed
   441  	t15.Mul(t4, t15)
   442  
   443  	// Step 263: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb40
   444  	for s := 0; s < 6; s++ {
   445  		t15.Square(t15)
   446  	}
   447  
   448  	// Step 264: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d
   449  	t15.Mul(t4, t15)
   450  
   451  	// Step 270: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed340
   452  	for s := 0; s < 6; s++ {
   453  		t15.Square(t15)
   454  	}
   455  
   456  	// Step 271: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b
   457  	t15.Mul(t9, t15)
   458  
   459  	// Step 278: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad80
   460  	for s := 0; s < 7; s++ {
   461  		t15.Square(t15)
   462  	}
   463  
   464  	// Step 279: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9b
   465  	t15.Mul(t9, t15)
   466  
   467  	// Step 284: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b360
   468  	for s := 0; s < 5; s++ {
   469  		t15.Square(t15)
   470  	}
   471  
   472  	// Step 285: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377
   473  	t15.Mul(t12, t15)
   474  
   475  	// Step 289: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b3770
   476  	for s := 0; s < 4; s++ {
   477  		t15.Square(t15)
   478  	}
   479  
   480  	// Step 290: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b
   481  	t15.Mul(t3, t15)
   482  
   483  	// Step 296: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cddec0
   484  	for s := 0; s < 6; s++ {
   485  		t15.Square(t15)
   486  	}
   487  
   488  	// Step 297: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded1
   489  	t15.Mul(t8, t15)
   490  
   491  	// Step 303: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b440
   492  	for s := 0; s < 6; s++ {
   493  		t15.Square(t15)
   494  	}
   495  
   496  	// Step 304: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f
   497  	t15.Mul(t13, t15)
   498  
   499  	// Step 315: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f800
   500  	for s := 0; s < 11; s++ {
   501  		t15.Square(t15)
   502  	}
   503  
   504  	// Step 316: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f815
   505  	t15.Mul(t0, t15)
   506  
   507  	// Step 323: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a80
   508  	for s := 0; s < 7; s++ {
   509  		t15.Square(t15)
   510  	}
   511  
   512  	// Step 324: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a95
   513  	t15.Mul(t0, t15)
   514  
   515  	// Step 331: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a80
   516  	for s := 0; s < 7; s++ {
   517  		t15.Square(t15)
   518  	}
   519  
   520  	// Step 332: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b
   521  	t15.Mul(t9, t15)
   522  
   523  	// Step 343: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d800
   524  	for s := 0; s < 11; s++ {
   525  		t15.Square(t15)
   526  	}
   527  
   528  	// Step 344: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f
   529  	t15.Mul(t13, t15)
   530  
   531  	// Step 349: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03e0
   532  	for s := 0; s < 5; s++ {
   533  		t15.Square(t15)
   534  	}
   535  
   536  	// Step 350: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb
   537  	t15.Mul(t3, t15)
   538  
   539  	// Step 355: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d60
   540  	for s := 0; s < 5; s++ {
   541  		t15.Square(t15)
   542  	}
   543  
   544  	// Step 356: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f
   545  	t15.Mul(t5, t15)
   546  
   547  	// Step 360: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f0
   548  	for s := 0; s < 4; s++ {
   549  		t15.Square(t15)
   550  	}
   551  
   552  	// Step 361: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f5
   553  	t15.Mul(t11, t15)
   554  
   555  	// Step 367: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd40
   556  	for s := 0; s < 6; s++ {
   557  		t15.Square(t15)
   558  	}
   559  
   560  	// Step 368: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd49
   561  	t15.Mul(t1, t15)
   562  
   563  	// Step 371: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea48
   564  	for s := 0; s < 3; s++ {
   565  		t15.Square(t15)
   566  	}
   567  
   568  	// Step 372: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea49
   569  	t15.Mul(&x, t15)
   570  
   571  	// Step 381: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd49200
   572  	for s := 0; s < 9; s++ {
   573  		t15.Square(t15)
   574  	}
   575  
   576  	// Step 382: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd49217
   577  	t15.Mul(t12, t15)
   578  
   579  	// Step 390: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd4921700
   580  	for s := 0; s < 8; s++ {
   581  		t15.Square(t15)
   582  	}
   583  
   584  	// Step 391: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b
   585  	t15.Mul(t9, t15)
   586  
   587  	// Step 395: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b0
   588  	for s := 0; s < 4; s++ {
   589  		t15.Square(t15)
   590  	}
   591  
   592  	// Step 396: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b5
   593  	t15.Mul(t11, t15)
   594  
   595  	// Step 403: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da80
   596  	for s := 0; s < 7; s++ {
   597  		t15.Square(t15)
   598  	}
   599  
   600  	// Step 404: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f
   601  	t15.Mul(t13, t15)
   602  
   603  	// Step 410: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7c0
   604  	for s := 0; s < 6; s++ {
   605  		t15.Square(t15)
   606  	}
   607  
   608  	// Step 411: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7
   609  	t15.Mul(t12, t15)
   610  
   611  	// Step 414: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53eb8
   612  	for s := 0; s < 3; s++ {
   613  		t15.Square(t15)
   614  	}
   615  
   616  	// Step 415: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd
   617  	t15.Mul(t11, t15)
   618  
   619  	// Step 426: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e800
   620  	for s := 0; s < 11; s++ {
   621  		t15.Square(t15)
   622  	}
   623  
   624  	// Step 427: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f
   625  	t15.Mul(t14, t15)
   626  
   627  	// Step 433: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fc0
   628  	for s := 0; s < 6; s++ {
   629  		t15.Square(t15)
   630  	}
   631  
   632  	// Step 434: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5
   633  	t15.Mul(t0, t15)
   634  
   635  	// Step 438: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd50
   636  	for s := 0; s < 4; s++ {
   637  		t15.Square(t15)
   638  	}
   639  
   640  	// Step 439: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f
   641  	t15.Mul(t5, t15)
   642  
   643  	// Step 446: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf80
   644  	for s := 0; s < 7; s++ {
   645  		t15.Square(t15)
   646  	}
   647  
   648  	// Step 447: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf89
   649  	t15.Mul(t1, t15)
   650  
   651  	// Step 450: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c48
   652  	for s := 0; s < 3; s++ {
   653  		t15.Square(t15)
   654  	}
   655  
   656  	// Step 451: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c49
   657  	t15.Mul(&x, t15)
   658  
   659  	// Step 458: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe2480
   660  	for s := 0; s < 7; s++ {
   661  		t15.Square(t15)
   662  	}
   663  
   664  	// Step 459: t14 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf
   665  	t14.Mul(t14, t15)
   666  
   667  	// Step 469: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc00
   668  	for s := 0; s < 10; s++ {
   669  		t14.Square(t14)
   670  	}
   671  
   672  	// Step 470: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d
   673  	t14.Mul(t2, t14)
   674  
   675  	// Step 474: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d0
   676  	for s := 0; s < 4; s++ {
   677  		t14.Square(t14)
   678  	}
   679  
   680  	// Step 475: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d1
   681  	t14.Mul(&x, t14)
   682  
   683  	// Step 482: t14 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e880
   684  	for s := 0; s < 7; s++ {
   685  		t14.Square(t14)
   686  	}
   687  
   688  	// Step 483: t14 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e885
   689  	t14.Mul(t11, t14)
   690  
   691  	// Step 492: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a00
   692  	for s := 0; s < 9; s++ {
   693  		t14.Square(t14)
   694  	}
   695  
   696  	// Step 493: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1d
   697  	t14.Mul(t2, t14)
   698  
   699  	// Step 497: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1d0
   700  	for s := 0; s < 4; s++ {
   701  		t14.Square(t14)
   702  	}
   703  
   704  	// Step 498: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db
   705  	t14.Mul(t3, t14)
   706  
   707  	// Step 503: t14 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b60
   708  	for s := 0; s < 5; s++ {
   709  		t14.Square(t14)
   710  	}
   711  
   712  	// Step 504: t14 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f
   713  	t14.Mul(t5, t14)
   714  
   715  	// Step 509: t14 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876de0
   716  	for s := 0; s < 5; s++ {
   717  		t14.Square(t14)
   718  	}
   719  
   720  	// Step 510: t14 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded
   721  	t14.Mul(t4, t14)
   722  
   723  	// Step 513: t14 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f68
   724  	for s := 0; s < 3; s++ {
   725  		t14.Square(t14)
   726  	}
   727  
   728  	// Step 514: t14 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f69
   729  	t14.Mul(&x, t14)
   730  
   731  	// Step 526: t14 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f69000
   732  	for s := 0; s < 12; s++ {
   733  		t14.Square(t14)
   734  	}
   735  
   736  	// Step 527: t13 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f
   737  	t13.Mul(t13, t14)
   738  
   739  	// Step 533: t13 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407c0
   740  	for s := 0; s < 6; s++ {
   741  		t13.Square(t13)
   742  	}
   743  
   744  	// Step 534: t13 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7
   745  	t13.Mul(t12, t13)
   746  
   747  	// Step 538: t13 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d70
   748  	for s := 0; s < 4; s++ {
   749  		t13.Square(t13)
   750  	}
   751  
   752  	// Step 539: t13 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b
   753  	t13.Mul(t3, t13)
   754  
   755  	// Step 545: t13 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ec0
   756  	for s := 0; s < 6; s++ {
   757  		t13.Square(t13)
   758  	}
   759  
   760  	// Step 546: t12 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed7
   761  	t12.Mul(t12, t13)
   762  
   763  	// Step 551: t12 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae0
   764  	for s := 0; s < 5; s++ {
   765  		t12.Square(t12)
   766  	}
   767  
   768  	// Step 552: t12 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae7
   769  	t12.Mul(t6, t12)
   770  
   771  	// Step 558: t12 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9c0
   772  	for s := 0; s < 6; s++ {
   773  		t12.Square(t12)
   774  	}
   775  
   776  	// Step 559: t12 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf
   777  	t12.Mul(t5, t12)
   778  
   779  	// Step 565: t12 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae73c0
   780  	for s := 0; s < 6; s++ {
   781  		t12.Square(t12)
   782  	}
   783  
   784  	// Step 566: t12 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae73d5
   785  	t12.Mul(t0, t12)
   786  
   787  	// Step 568: t12 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf54
   788  	for s := 0; s < 2; s++ {
   789  		t12.Square(t12)
   790  	}
   791  
   792  	// Step 569: t12 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf57
   793  	t12.Mul(z, t12)
   794  
   795  	// Step 577: t12 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf5700
   796  	for s := 0; s < 8; s++ {
   797  		t12.Square(t12)
   798  	}
   799  
   800  	// Step 578: t12 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf5707
   801  	t12.Mul(t6, t12)
   802  
   803  	// Step 583: t12 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e0
   804  	for s := 0; s < 5; s++ {
   805  		t12.Square(t12)
   806  	}
   807  
   808  	// Step 584: t12 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e7
   809  	t12.Mul(t6, t12)
   810  
   811  	// Step 593: t12 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae73d5c1ce00
   812  	for s := 0; s < 9; s++ {
   813  		t12.Square(t12)
   814  	}
   815  
   816  	// Step 594: t12 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae73d5c1ce11
   817  	t12.Mul(t8, t12)
   818  
   819  	// Step 599: t12 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c220
   820  	for s := 0; s < 5; s++ {
   821  		t12.Square(t12)
   822  	}
   823  
   824  	// Step 600: t11 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c225
   825  	t11.Mul(t11, t12)
   826  
   827  	// Step 606: t11 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e708940
   828  	for s := 0; s < 6; s++ {
   829  		t11.Square(t11)
   830  	}
   831  
   832  	// Step 607: t11 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f
   833  	t11.Mul(t5, t11)
   834  
   835  	// Step 613: t11 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253c0
   836  	for s := 0; s < 6; s++ {
   837  		t11.Square(t11)
   838  	}
   839  
   840  	// Step 614: t10 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d3
   841  	t10.Mul(t10, t11)
   842  
   843  	// Step 619: t10 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf57073844a7a60
   844  	for s := 0; s < 5; s++ {
   845  		t10.Square(t10)
   846  	}
   847  
   848  	// Step 620: t10 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf57073844a7a6d
   849  	t10.Mul(t4, t10)
   850  
   851  	// Step 627: t10 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d3680
   852  	for s := 0; s < 7; s++ {
   853  		t10.Square(t10)
   854  	}
   855  
   856  	// Step 628: t9 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369b
   857  	t9.Mul(t9, t10)
   858  
   859  	// Step 632: t9 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369b0
   860  	for s := 0; s < 4; s++ {
   861  		t9.Square(t9)
   862  	}
   863  
   864  	// Step 633: t9 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd
   865  	t9.Mul(t4, t9)
   866  
   867  	// Step 637: t9 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd0
   868  	for s := 0; s < 4; s++ {
   869  		t9.Square(t9)
   870  	}
   871  
   872  	// Step 638: t9 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd3
   873  	t9.Mul(z, t9)
   874  
   875  	// Step 646: t9 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd300
   876  	for s := 0; s < 8; s++ {
   877  		t9.Square(t9)
   878  	}
   879  
   880  	// Step 647: t8 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd311
   881  	t8.Mul(t8, t9)
   882  
   883  	// Step 649: t8 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c44
   884  	for s := 0; s < 2; s++ {
   885  		t8.Square(t8)
   886  	}
   887  
   888  	// Step 650: t8 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c45
   889  	t8.Mul(&x, t8)
   890  
   891  	// Step 660: t8 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd311400
   892  	for s := 0; s < 10; s++ {
   893  		t8.Square(t8)
   894  	}
   895  
   896  	// Step 661: t7 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f
   897  	t7.Mul(t7, t8)
   898  
   899  	// Step 665: t7 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f0
   900  	for s := 0; s < 4; s++ {
   901  		t7.Square(t7)
   902  	}
   903  
   904  	// Step 666: t6 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f7
   905  	t6.Mul(t6, t7)
   906  
   907  	// Step 672: t6 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdc0
   908  	for s := 0; s < 6; s++ {
   909  		t6.Square(t6)
   910  	}
   911  
   912  	// Step 673: t5 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf
   913  	t5.Mul(t5, t6)
   914  
   915  	// Step 679: t5 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f73c0
   916  	for s := 0; s < 6; s++ {
   917  		t5.Square(t5)
   918  	}
   919  
   920  	// Step 680: t4 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f73cd
   921  	t4.Mul(t4, t5)
   922  
   923  	// Step 686: t4 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf340
   924  	for s := 0; s < 6; s++ {
   925  		t4.Square(t4)
   926  	}
   927  
   928  	// Step 687: t4 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf35d
   929  	t4.Mul(t2, t4)
   930  
   931  	// Step 693: t4 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f73cd740
   932  	for s := 0; s < 6; s++ {
   933  		t4.Square(t4)
   934  	}
   935  
   936  	// Step 694: t4 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f73cd749
   937  	t4.Mul(t1, t4)
   938  
   939  	// Step 701: t4 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae73d5c1ce1129e9b4de988a3fb9e6ba480
   940  	for s := 0; s < 7; s++ {
   941  		t4.Square(t4)
   942  	}
   943  
   944  	// Step 702: t3 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae73d5c1ce1129e9b4de988a3fb9e6ba48b
   945  	t3.Mul(t3, t4)
   946  
   947  	// Step 708: t3 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf57073844a7a6d37a6228fee79ae922c0
   948  	for s := 0; s < 6; s++ {
   949  		t3.Square(t3)
   950  	}
   951  
   952  	// Step 709: t2 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf57073844a7a6d37a6228fee79ae922dd
   953  	t2.Mul(t2, t3)
   954  
   955  	// Step 714: t2 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf35d245ba0
   956  	for s := 0; s < 5; s++ {
   957  		t2.Square(t2)
   958  	}
   959  
   960  	// Step 715: t1 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf35d245ba9
   961  	t1.Mul(t1, t2)
   962  
   963  	// Step 723: t1 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf35d245ba900
   964  	for s := 0; s < 8; s++ {
   965  		t1.Square(t1)
   966  	}
   967  
   968  	// Step 724: t0 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf35d245ba915
   969  	t0.Mul(t0, t1)
   970  
   971  	// Step 726: t0 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f73cd74916ea454
   972  	for s := 0; s < 2; s++ {
   973  		t0.Square(t0)
   974  	}
   975  
   976  	// Step 727: z = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f73cd74916ea457
   977  	z.Mul(z, t0)
   978  
   979  	// Step 744: z = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf57073844a7a6d37a6228fee79ae922dd48ae0000
   980  	for s := 0; s < 17; s++ {
   981  		z.Square(z)
   982  	}
   983  
   984  	// Step 745: z = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf57073844a7a6d37a6228fee79ae922dd48ae0001
   985  	z.Mul(&x, z)
   986  
   987  	return z
   988  }
   989  
   990  // expByLegendreExp is equivalent to z.Exp(x, 93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae73d5c1ce1129e9b4de988a3fb9e6ba48b7522b80006)
   991  //
   992  // uses github.com/mmcloughlin/addchain v0.4.0 to generate a shorter addition chain
   993  func (z *Element) expByLegendreExp(x Element) *Element {
   994  	// addition chain:
   995  	//
   996  	//	_10       = 2*1
   997  	//	_11       = 1 + _10
   998  	//	_101      = _10 + _11
   999  	//	_111      = _10 + _101
  1000  	//	_1001     = _10 + _111
  1001  	//	_1011     = _10 + _1001
  1002  	//	_1101     = _10 + _1011
  1003  	//	_1111     = _10 + _1101
  1004  	//	_10001    = _10 + _1111
  1005  	//	_10011    = _10 + _10001
  1006  	//	_10101    = _10 + _10011
  1007  	//	_10111    = _10 + _10101
  1008  	//	_11001    = _10 + _10111
  1009  	//	_11011    = _10 + _11001
  1010  	//	_11101    = _10 + _11011
  1011  	//	_11111    = _10 + _11101
  1012  	//	_111110   = 2*_11111
  1013  	//	_111111   = 1 + _111110
  1014  	//	_1111110  = 2*_111111
  1015  	//	_1111111  = 1 + _1111110
  1016  	//	_10010000 = _10001 + _1111111
  1017  	//	i36       = ((_10010000 << 3 + _11001) << 5 + _10001) << 5
  1018  	//	i45       = 2*((_10011 + i36) << 5 + _11001) + 1
  1019  	//	i69       = ((i45 << 10 + _1111) << 6 + _1101) << 6
  1020  	//	i85       = ((_11111 + i69) << 3 + _11) << 10 + _1111111
  1021  	//	i106      = ((2*i85 + 1) << 9 + _1101) << 9
  1022  	//	i117      = ((_10111 + i106) << 6 + _10011) << 2 + _11
  1023  	//	i142      = ((i117 << 12 + _11101) << 4 + _111) << 7
  1024  	//	i155      = ((_10101 + i142) << 5 + _1011) << 5 + _1011
  1025  	//	i177      = ((i155 << 4 + _101) << 9 + _111111) << 7
  1026  	//	i193      = ((_11011 + i177) << 5 + _11) << 8 + _11101
  1027  	//	i213      = ((i193 << 6 + _11101) << 5 + _1111) << 7
  1028  	//	i230      = ((_11101 + i213) << 6 + _1011) << 8 + _11101
  1029  	//	i250      = ((i230 << 5 + _111) << 6 + _1011) << 7
  1030  	//	i264      = ((_10111 + i250) << 5 + _1101) << 6 + _1101
  1031  	//	i284      = ((i264 << 6 + _11011) << 7 + _11011) << 5
  1032  	//	i297      = ((_10111 + i284) << 4 + _1011) << 6 + _10001
  1033  	//	i323      = ((i297 << 6 + _11111) << 11 + _10101) << 7
  1034  	//	i344      = ((_10101 + i323) << 7 + _11011) << 11 + _11111
  1035  	//	i360      = ((i344 << 5 + _1011) << 5 + _1111) << 4
  1036  	//	i372      = ((_101 + i360) << 6 + _1001) << 3 + 1
  1037  	//	i395      = ((i372 << 9 + _10111) << 8 + _11011) << 4
  1038  	//	i411      = ((_101 + i395) << 7 + _11111) << 6 + _10111
  1039  	//	i433      = ((i411 << 3 + _101) << 11 + _111111) << 6
  1040  	//	i447      = ((_10101 + i433) << 4 + _1111) << 7 + _1001
  1041  	//	i469      = ((i447 << 3 + 1) << 7 + _111111) << 10
  1042  	//	i483      = ((_11101 + i469) << 4 + 1) << 7 + _101
  1043  	//	i503      = ((i483 << 9 + _11101) << 4 + _1011) << 5
  1044  	//	i514      = ((_1111 + i503) << 5 + _1101) << 3 + 1
  1045  	//	i538      = ((i514 << 12 + _11111) << 6 + _10111) << 4
  1046  	//	i552      = ((_1011 + i538) << 6 + _10111) << 5 + _111
  1047  	//	i568      = ((i552 << 6 + _1111) << 6 + _10101) << 2
  1048  	//	i584      = ((_11 + i568) << 8 + _111) << 5 + _111
  1049  	//	i606      = ((i584 << 9 + _10001) << 5 + _101) << 6
  1050  	//	i620      = ((_1111 + i606) << 6 + _10011) << 5 + _1101
  1051  	//	i637      = ((i620 << 7 + _11011) << 4 + _1101) << 4
  1052  	//	i650      = ((_11 + i637) << 8 + _10001) << 2 + 1
  1053  	//	i672      = ((i650 << 10 + _1111111) << 4 + _111) << 6
  1054  	//	i687      = ((_1111 + i672) << 6 + _1101) << 6 + _11101
  1055  	//	i708      = ((i687 << 6 + _1001) << 7 + _1011) << 6
  1056  	//	i724      = ((_11101 + i708) << 5 + _1001) << 8 + _10101
  1057  	//	return      2*((i724 << 2 + _11) << 18 + _11)
  1058  	//
  1059  	// Operations: 627 squares 120 multiplies
  1060  
  1061  	// Allocate Temporaries.
  1062  	var (
  1063  		t0  = new(Element)
  1064  		t1  = new(Element)
  1065  		t2  = new(Element)
  1066  		t3  = new(Element)
  1067  		t4  = new(Element)
  1068  		t5  = new(Element)
  1069  		t6  = new(Element)
  1070  		t7  = new(Element)
  1071  		t8  = new(Element)
  1072  		t9  = new(Element)
  1073  		t10 = new(Element)
  1074  		t11 = new(Element)
  1075  		t12 = new(Element)
  1076  		t13 = new(Element)
  1077  		t14 = new(Element)
  1078  		t15 = new(Element)
  1079  		t16 = new(Element)
  1080  	)
  1081  
  1082  	// var t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16 Element
  1083  	// Step 1: t7 = x^0x2
  1084  	t7.Square(&x)
  1085  
  1086  	// Step 2: z = x^0x3
  1087  	z.Mul(&x, t7)
  1088  
  1089  	// Step 3: t11 = x^0x5
  1090  	t11.Mul(t7, z)
  1091  
  1092  	// Step 4: t6 = x^0x7
  1093  	t6.Mul(t7, t11)
  1094  
  1095  	// Step 5: t1 = x^0x9
  1096  	t1.Mul(t7, t6)
  1097  
  1098  	// Step 6: t3 = x^0xb
  1099  	t3.Mul(t7, t1)
  1100  
  1101  	// Step 7: t4 = x^0xd
  1102  	t4.Mul(t7, t3)
  1103  
  1104  	// Step 8: t5 = x^0xf
  1105  	t5.Mul(t7, t4)
  1106  
  1107  	// Step 9: t8 = x^0x11
  1108  	t8.Mul(t7, t5)
  1109  
  1110  	// Step 10: t10 = x^0x13
  1111  	t10.Mul(t7, t8)
  1112  
  1113  	// Step 11: t0 = x^0x15
  1114  	t0.Mul(t7, t10)
  1115  
  1116  	// Step 12: t12 = x^0x17
  1117  	t12.Mul(t7, t0)
  1118  
  1119  	// Step 13: t15 = x^0x19
  1120  	t15.Mul(t7, t12)
  1121  
  1122  	// Step 14: t9 = x^0x1b
  1123  	t9.Mul(t7, t15)
  1124  
  1125  	// Step 15: t2 = x^0x1d
  1126  	t2.Mul(t7, t9)
  1127  
  1128  	// Step 16: t13 = x^0x1f
  1129  	t13.Mul(t7, t2)
  1130  
  1131  	// Step 17: t7 = x^0x3e
  1132  	t7.Square(t13)
  1133  
  1134  	// Step 18: t14 = x^0x3f
  1135  	t14.Mul(&x, t7)
  1136  
  1137  	// Step 19: t7 = x^0x7e
  1138  	t7.Square(t14)
  1139  
  1140  	// Step 20: t7 = x^0x7f
  1141  	t7.Mul(&x, t7)
  1142  
  1143  	// Step 21: t16 = x^0x90
  1144  	t16.Mul(t8, t7)
  1145  
  1146  	// Step 24: t16 = x^0x480
  1147  	for s := 0; s < 3; s++ {
  1148  		t16.Square(t16)
  1149  	}
  1150  
  1151  	// Step 25: t16 = x^0x499
  1152  	t16.Mul(t15, t16)
  1153  
  1154  	// Step 30: t16 = x^0x9320
  1155  	for s := 0; s < 5; s++ {
  1156  		t16.Square(t16)
  1157  	}
  1158  
  1159  	// Step 31: t16 = x^0x9331
  1160  	t16.Mul(t8, t16)
  1161  
  1162  	// Step 36: t16 = x^0x126620
  1163  	for s := 0; s < 5; s++ {
  1164  		t16.Square(t16)
  1165  	}
  1166  
  1167  	// Step 37: t16 = x^0x126633
  1168  	t16.Mul(t10, t16)
  1169  
  1170  	// Step 42: t16 = x^0x24cc660
  1171  	for s := 0; s < 5; s++ {
  1172  		t16.Square(t16)
  1173  	}
  1174  
  1175  	// Step 43: t15 = x^0x24cc679
  1176  	t15.Mul(t15, t16)
  1177  
  1178  	// Step 44: t15 = x^0x4998cf2
  1179  	t15.Square(t15)
  1180  
  1181  	// Step 45: t15 = x^0x4998cf3
  1182  	t15.Mul(&x, t15)
  1183  
  1184  	// Step 55: t15 = x^0x126633cc00
  1185  	for s := 0; s < 10; s++ {
  1186  		t15.Square(t15)
  1187  	}
  1188  
  1189  	// Step 56: t15 = x^0x126633cc0f
  1190  	t15.Mul(t5, t15)
  1191  
  1192  	// Step 62: t15 = x^0x4998cf303c0
  1193  	for s := 0; s < 6; s++ {
  1194  		t15.Square(t15)
  1195  	}
  1196  
  1197  	// Step 63: t15 = x^0x4998cf303cd
  1198  	t15.Mul(t4, t15)
  1199  
  1200  	// Step 69: t15 = x^0x126633cc0f340
  1201  	for s := 0; s < 6; s++ {
  1202  		t15.Square(t15)
  1203  	}
  1204  
  1205  	// Step 70: t15 = x^0x126633cc0f35f
  1206  	t15.Mul(t13, t15)
  1207  
  1208  	// Step 73: t15 = x^0x93319e6079af8
  1209  	for s := 0; s < 3; s++ {
  1210  		t15.Square(t15)
  1211  	}
  1212  
  1213  	// Step 74: t15 = x^0x93319e6079afb
  1214  	t15.Mul(z, t15)
  1215  
  1216  	// Step 84: t15 = x^0x24cc67981e6bec00
  1217  	for s := 0; s < 10; s++ {
  1218  		t15.Square(t15)
  1219  	}
  1220  
  1221  	// Step 85: t15 = x^0x24cc67981e6bec7f
  1222  	t15.Mul(t7, t15)
  1223  
  1224  	// Step 86: t15 = x^0x4998cf303cd7d8fe
  1225  	t15.Square(t15)
  1226  
  1227  	// Step 87: t15 = x^0x4998cf303cd7d8ff
  1228  	t15.Mul(&x, t15)
  1229  
  1230  	// Step 96: t15 = x^0x93319e6079afb1fe00
  1231  	for s := 0; s < 9; s++ {
  1232  		t15.Square(t15)
  1233  	}
  1234  
  1235  	// Step 97: t15 = x^0x93319e6079afb1fe0d
  1236  	t15.Mul(t4, t15)
  1237  
  1238  	// Step 106: t15 = x^0x126633cc0f35f63fc1a00
  1239  	for s := 0; s < 9; s++ {
  1240  		t15.Square(t15)
  1241  	}
  1242  
  1243  	// Step 107: t15 = x^0x126633cc0f35f63fc1a17
  1244  	t15.Mul(t12, t15)
  1245  
  1246  	// Step 113: t15 = x^0x4998cf303cd7d8ff0685c0
  1247  	for s := 0; s < 6; s++ {
  1248  		t15.Square(t15)
  1249  	}
  1250  
  1251  	// Step 114: t15 = x^0x4998cf303cd7d8ff0685d3
  1252  	t15.Mul(t10, t15)
  1253  
  1254  	// Step 116: t15 = x^0x126633cc0f35f63fc1a174c
  1255  	for s := 0; s < 2; s++ {
  1256  		t15.Square(t15)
  1257  	}
  1258  
  1259  	// Step 117: t15 = x^0x126633cc0f35f63fc1a174f
  1260  	t15.Mul(z, t15)
  1261  
  1262  	// Step 129: t15 = x^0x126633cc0f35f63fc1a174f000
  1263  	for s := 0; s < 12; s++ {
  1264  		t15.Square(t15)
  1265  	}
  1266  
  1267  	// Step 130: t15 = x^0x126633cc0f35f63fc1a174f01d
  1268  	t15.Mul(t2, t15)
  1269  
  1270  	// Step 134: t15 = x^0x126633cc0f35f63fc1a174f01d0
  1271  	for s := 0; s < 4; s++ {
  1272  		t15.Square(t15)
  1273  	}
  1274  
  1275  	// Step 135: t15 = x^0x126633cc0f35f63fc1a174f01d7
  1276  	t15.Mul(t6, t15)
  1277  
  1278  	// Step 142: t15 = x^0x93319e6079afb1fe0d0ba780eb80
  1279  	for s := 0; s < 7; s++ {
  1280  		t15.Square(t15)
  1281  	}
  1282  
  1283  	// Step 143: t15 = x^0x93319e6079afb1fe0d0ba780eb95
  1284  	t15.Mul(t0, t15)
  1285  
  1286  	// Step 148: t15 = x^0x126633cc0f35f63fc1a174f01d72a0
  1287  	for s := 0; s < 5; s++ {
  1288  		t15.Square(t15)
  1289  	}
  1290  
  1291  	// Step 149: t15 = x^0x126633cc0f35f63fc1a174f01d72ab
  1292  	t15.Mul(t3, t15)
  1293  
  1294  	// Step 154: t15 = x^0x24cc67981e6bec7f8342e9e03ae5560
  1295  	for s := 0; s < 5; s++ {
  1296  		t15.Square(t15)
  1297  	}
  1298  
  1299  	// Step 155: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b
  1300  	t15.Mul(t3, t15)
  1301  
  1302  	// Step 159: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b0
  1303  	for s := 0; s < 4; s++ {
  1304  		t15.Square(t15)
  1305  	}
  1306  
  1307  	// Step 160: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b5
  1308  	t15.Mul(t11, t15)
  1309  
  1310  	// Step 169: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a00
  1311  	for s := 0; s < 9; s++ {
  1312  		t15.Square(t15)
  1313  	}
  1314  
  1315  	// Step 170: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f
  1316  	t15.Mul(t14, t15)
  1317  
  1318  	// Step 177: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f80
  1319  	for s := 0; s < 7; s++ {
  1320  		t15.Square(t15)
  1321  	}
  1322  
  1323  	// Step 178: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b
  1324  	t15.Mul(t9, t15)
  1325  
  1326  	// Step 183: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f360
  1327  	for s := 0; s < 5; s++ {
  1328  		t15.Square(t15)
  1329  	}
  1330  
  1331  	// Step 184: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f363
  1332  	t15.Mul(z, t15)
  1333  
  1334  	// Step 192: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f36300
  1335  	for s := 0; s < 8; s++ {
  1336  		t15.Square(t15)
  1337  	}
  1338  
  1339  	// Step 193: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d
  1340  	t15.Mul(t2, t15)
  1341  
  1342  	// Step 199: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c740
  1343  	for s := 0; s < 6; s++ {
  1344  		t15.Square(t15)
  1345  	}
  1346  
  1347  	// Step 200: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d
  1348  	t15.Mul(t2, t15)
  1349  
  1350  	// Step 205: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18eba0
  1351  	for s := 0; s < 5; s++ {
  1352  		t15.Square(t15)
  1353  	}
  1354  
  1355  	// Step 206: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf
  1356  	t15.Mul(t5, t15)
  1357  
  1358  	// Step 213: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d780
  1359  	for s := 0; s < 7; s++ {
  1360  		t15.Square(t15)
  1361  	}
  1362  
  1363  	// Step 214: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d
  1364  	t15.Mul(t2, t15)
  1365  
  1366  	// Step 220: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e740
  1367  	for s := 0; s < 6; s++ {
  1368  		t15.Square(t15)
  1369  	}
  1370  
  1371  	// Step 221: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b
  1372  	t15.Mul(t3, t15)
  1373  
  1374  	// Step 229: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b00
  1375  	for s := 0; s < 8; s++ {
  1376  		t15.Square(t15)
  1377  	}
  1378  
  1379  	// Step 230: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d
  1380  	t15.Mul(t2, t15)
  1381  
  1382  	// Step 235: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a0
  1383  	for s := 0; s < 5; s++ {
  1384  		t15.Square(t15)
  1385  	}
  1386  
  1387  	// Step 236: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a7
  1388  	t15.Mul(t6, t15)
  1389  
  1390  	// Step 242: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9c0
  1391  	for s := 0; s < 6; s++ {
  1392  		t15.Square(t15)
  1393  	}
  1394  
  1395  	// Step 243: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb
  1396  	t15.Mul(t3, t15)
  1397  
  1398  	// Step 250: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e580
  1399  	for s := 0; s < 7; s++ {
  1400  		t15.Square(t15)
  1401  	}
  1402  
  1403  	// Step 251: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e597
  1404  	t15.Mul(t12, t15)
  1405  
  1406  	// Step 256: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2e0
  1407  	for s := 0; s < 5; s++ {
  1408  		t15.Square(t15)
  1409  	}
  1410  
  1411  	// Step 257: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed
  1412  	t15.Mul(t4, t15)
  1413  
  1414  	// Step 263: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb40
  1415  	for s := 0; s < 6; s++ {
  1416  		t15.Square(t15)
  1417  	}
  1418  
  1419  	// Step 264: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d
  1420  	t15.Mul(t4, t15)
  1421  
  1422  	// Step 270: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed340
  1423  	for s := 0; s < 6; s++ {
  1424  		t15.Square(t15)
  1425  	}
  1426  
  1427  	// Step 271: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b
  1428  	t15.Mul(t9, t15)
  1429  
  1430  	// Step 278: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad80
  1431  	for s := 0; s < 7; s++ {
  1432  		t15.Square(t15)
  1433  	}
  1434  
  1435  	// Step 279: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9b
  1436  	t15.Mul(t9, t15)
  1437  
  1438  	// Step 284: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b360
  1439  	for s := 0; s < 5; s++ {
  1440  		t15.Square(t15)
  1441  	}
  1442  
  1443  	// Step 285: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377
  1444  	t15.Mul(t12, t15)
  1445  
  1446  	// Step 289: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b3770
  1447  	for s := 0; s < 4; s++ {
  1448  		t15.Square(t15)
  1449  	}
  1450  
  1451  	// Step 290: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b
  1452  	t15.Mul(t3, t15)
  1453  
  1454  	// Step 296: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cddec0
  1455  	for s := 0; s < 6; s++ {
  1456  		t15.Square(t15)
  1457  	}
  1458  
  1459  	// Step 297: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded1
  1460  	t15.Mul(t8, t15)
  1461  
  1462  	// Step 303: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b440
  1463  	for s := 0; s < 6; s++ {
  1464  		t15.Square(t15)
  1465  	}
  1466  
  1467  	// Step 304: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f
  1468  	t15.Mul(t13, t15)
  1469  
  1470  	// Step 315: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f800
  1471  	for s := 0; s < 11; s++ {
  1472  		t15.Square(t15)
  1473  	}
  1474  
  1475  	// Step 316: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f815
  1476  	t15.Mul(t0, t15)
  1477  
  1478  	// Step 323: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a80
  1479  	for s := 0; s < 7; s++ {
  1480  		t15.Square(t15)
  1481  	}
  1482  
  1483  	// Step 324: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a95
  1484  	t15.Mul(t0, t15)
  1485  
  1486  	// Step 331: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a80
  1487  	for s := 0; s < 7; s++ {
  1488  		t15.Square(t15)
  1489  	}
  1490  
  1491  	// Step 332: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b
  1492  	t15.Mul(t9, t15)
  1493  
  1494  	// Step 343: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d800
  1495  	for s := 0; s < 11; s++ {
  1496  		t15.Square(t15)
  1497  	}
  1498  
  1499  	// Step 344: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f
  1500  	t15.Mul(t13, t15)
  1501  
  1502  	// Step 349: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03e0
  1503  	for s := 0; s < 5; s++ {
  1504  		t15.Square(t15)
  1505  	}
  1506  
  1507  	// Step 350: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb
  1508  	t15.Mul(t3, t15)
  1509  
  1510  	// Step 355: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d60
  1511  	for s := 0; s < 5; s++ {
  1512  		t15.Square(t15)
  1513  	}
  1514  
  1515  	// Step 356: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f
  1516  	t15.Mul(t5, t15)
  1517  
  1518  	// Step 360: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f0
  1519  	for s := 0; s < 4; s++ {
  1520  		t15.Square(t15)
  1521  	}
  1522  
  1523  	// Step 361: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f5
  1524  	t15.Mul(t11, t15)
  1525  
  1526  	// Step 367: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd40
  1527  	for s := 0; s < 6; s++ {
  1528  		t15.Square(t15)
  1529  	}
  1530  
  1531  	// Step 368: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd49
  1532  	t15.Mul(t1, t15)
  1533  
  1534  	// Step 371: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea48
  1535  	for s := 0; s < 3; s++ {
  1536  		t15.Square(t15)
  1537  	}
  1538  
  1539  	// Step 372: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea49
  1540  	t15.Mul(&x, t15)
  1541  
  1542  	// Step 381: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd49200
  1543  	for s := 0; s < 9; s++ {
  1544  		t15.Square(t15)
  1545  	}
  1546  
  1547  	// Step 382: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd49217
  1548  	t15.Mul(t12, t15)
  1549  
  1550  	// Step 390: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd4921700
  1551  	for s := 0; s < 8; s++ {
  1552  		t15.Square(t15)
  1553  	}
  1554  
  1555  	// Step 391: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b
  1556  	t15.Mul(t9, t15)
  1557  
  1558  	// Step 395: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b0
  1559  	for s := 0; s < 4; s++ {
  1560  		t15.Square(t15)
  1561  	}
  1562  
  1563  	// Step 396: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b5
  1564  	t15.Mul(t11, t15)
  1565  
  1566  	// Step 403: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da80
  1567  	for s := 0; s < 7; s++ {
  1568  		t15.Square(t15)
  1569  	}
  1570  
  1571  	// Step 404: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f
  1572  	t15.Mul(t13, t15)
  1573  
  1574  	// Step 410: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7c0
  1575  	for s := 0; s < 6; s++ {
  1576  		t15.Square(t15)
  1577  	}
  1578  
  1579  	// Step 411: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7
  1580  	t15.Mul(t12, t15)
  1581  
  1582  	// Step 414: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53eb8
  1583  	for s := 0; s < 3; s++ {
  1584  		t15.Square(t15)
  1585  	}
  1586  
  1587  	// Step 415: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd
  1588  	t15.Mul(t11, t15)
  1589  
  1590  	// Step 426: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e800
  1591  	for s := 0; s < 11; s++ {
  1592  		t15.Square(t15)
  1593  	}
  1594  
  1595  	// Step 427: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f
  1596  	t15.Mul(t14, t15)
  1597  
  1598  	// Step 433: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fc0
  1599  	for s := 0; s < 6; s++ {
  1600  		t15.Square(t15)
  1601  	}
  1602  
  1603  	// Step 434: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5
  1604  	t15.Mul(t0, t15)
  1605  
  1606  	// Step 438: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd50
  1607  	for s := 0; s < 4; s++ {
  1608  		t15.Square(t15)
  1609  	}
  1610  
  1611  	// Step 439: t15 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f
  1612  	t15.Mul(t5, t15)
  1613  
  1614  	// Step 446: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf80
  1615  	for s := 0; s < 7; s++ {
  1616  		t15.Square(t15)
  1617  	}
  1618  
  1619  	// Step 447: t15 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf89
  1620  	t15.Mul(t1, t15)
  1621  
  1622  	// Step 450: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c48
  1623  	for s := 0; s < 3; s++ {
  1624  		t15.Square(t15)
  1625  	}
  1626  
  1627  	// Step 451: t15 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c49
  1628  	t15.Mul(&x, t15)
  1629  
  1630  	// Step 458: t15 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe2480
  1631  	for s := 0; s < 7; s++ {
  1632  		t15.Square(t15)
  1633  	}
  1634  
  1635  	// Step 459: t14 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf
  1636  	t14.Mul(t14, t15)
  1637  
  1638  	// Step 469: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc00
  1639  	for s := 0; s < 10; s++ {
  1640  		t14.Square(t14)
  1641  	}
  1642  
  1643  	// Step 470: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d
  1644  	t14.Mul(t2, t14)
  1645  
  1646  	// Step 474: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d0
  1647  	for s := 0; s < 4; s++ {
  1648  		t14.Square(t14)
  1649  	}
  1650  
  1651  	// Step 475: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d1
  1652  	t14.Mul(&x, t14)
  1653  
  1654  	// Step 482: t14 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e880
  1655  	for s := 0; s < 7; s++ {
  1656  		t14.Square(t14)
  1657  	}
  1658  
  1659  	// Step 483: t14 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e885
  1660  	t14.Mul(t11, t14)
  1661  
  1662  	// Step 492: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a00
  1663  	for s := 0; s < 9; s++ {
  1664  		t14.Square(t14)
  1665  	}
  1666  
  1667  	// Step 493: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1d
  1668  	t14.Mul(t2, t14)
  1669  
  1670  	// Step 497: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1d0
  1671  	for s := 0; s < 4; s++ {
  1672  		t14.Square(t14)
  1673  	}
  1674  
  1675  	// Step 498: t14 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db
  1676  	t14.Mul(t3, t14)
  1677  
  1678  	// Step 503: t14 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b60
  1679  	for s := 0; s < 5; s++ {
  1680  		t14.Square(t14)
  1681  	}
  1682  
  1683  	// Step 504: t14 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f
  1684  	t14.Mul(t5, t14)
  1685  
  1686  	// Step 509: t14 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876de0
  1687  	for s := 0; s < 5; s++ {
  1688  		t14.Square(t14)
  1689  	}
  1690  
  1691  	// Step 510: t14 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded
  1692  	t14.Mul(t4, t14)
  1693  
  1694  	// Step 513: t14 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f68
  1695  	for s := 0; s < 3; s++ {
  1696  		t14.Square(t14)
  1697  	}
  1698  
  1699  	// Step 514: t14 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f69
  1700  	t14.Mul(&x, t14)
  1701  
  1702  	// Step 526: t14 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f69000
  1703  	for s := 0; s < 12; s++ {
  1704  		t14.Square(t14)
  1705  	}
  1706  
  1707  	// Step 527: t13 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f
  1708  	t13.Mul(t13, t14)
  1709  
  1710  	// Step 533: t13 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407c0
  1711  	for s := 0; s < 6; s++ {
  1712  		t13.Square(t13)
  1713  	}
  1714  
  1715  	// Step 534: t13 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7
  1716  	t13.Mul(t12, t13)
  1717  
  1718  	// Step 538: t13 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d70
  1719  	for s := 0; s < 4; s++ {
  1720  		t13.Square(t13)
  1721  	}
  1722  
  1723  	// Step 539: t13 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b
  1724  	t13.Mul(t3, t13)
  1725  
  1726  	// Step 545: t13 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ec0
  1727  	for s := 0; s < 6; s++ {
  1728  		t13.Square(t13)
  1729  	}
  1730  
  1731  	// Step 546: t12 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed7
  1732  	t12.Mul(t12, t13)
  1733  
  1734  	// Step 551: t12 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae0
  1735  	for s := 0; s < 5; s++ {
  1736  		t12.Square(t12)
  1737  	}
  1738  
  1739  	// Step 552: t12 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae7
  1740  	t12.Mul(t6, t12)
  1741  
  1742  	// Step 558: t12 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9c0
  1743  	for s := 0; s < 6; s++ {
  1744  		t12.Square(t12)
  1745  	}
  1746  
  1747  	// Step 559: t12 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf
  1748  	t12.Mul(t5, t12)
  1749  
  1750  	// Step 565: t12 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae73c0
  1751  	for s := 0; s < 6; s++ {
  1752  		t12.Square(t12)
  1753  	}
  1754  
  1755  	// Step 566: t12 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae73d5
  1756  	t12.Mul(t0, t12)
  1757  
  1758  	// Step 568: t12 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf54
  1759  	for s := 0; s < 2; s++ {
  1760  		t12.Square(t12)
  1761  	}
  1762  
  1763  	// Step 569: t12 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf57
  1764  	t12.Mul(z, t12)
  1765  
  1766  	// Step 577: t12 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf5700
  1767  	for s := 0; s < 8; s++ {
  1768  		t12.Square(t12)
  1769  	}
  1770  
  1771  	// Step 578: t12 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf5707
  1772  	t12.Mul(t6, t12)
  1773  
  1774  	// Step 583: t12 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e0
  1775  	for s := 0; s < 5; s++ {
  1776  		t12.Square(t12)
  1777  	}
  1778  
  1779  	// Step 584: t12 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e7
  1780  	t12.Mul(t6, t12)
  1781  
  1782  	// Step 593: t12 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae73d5c1ce00
  1783  	for s := 0; s < 9; s++ {
  1784  		t12.Square(t12)
  1785  	}
  1786  
  1787  	// Step 594: t12 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae73d5c1ce11
  1788  	t12.Mul(t8, t12)
  1789  
  1790  	// Step 599: t12 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c220
  1791  	for s := 0; s < 5; s++ {
  1792  		t12.Square(t12)
  1793  	}
  1794  
  1795  	// Step 600: t11 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c225
  1796  	t11.Mul(t11, t12)
  1797  
  1798  	// Step 606: t11 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e708940
  1799  	for s := 0; s < 6; s++ {
  1800  		t11.Square(t11)
  1801  	}
  1802  
  1803  	// Step 607: t11 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f
  1804  	t11.Mul(t5, t11)
  1805  
  1806  	// Step 613: t11 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253c0
  1807  	for s := 0; s < 6; s++ {
  1808  		t11.Square(t11)
  1809  	}
  1810  
  1811  	// Step 614: t10 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d3
  1812  	t10.Mul(t10, t11)
  1813  
  1814  	// Step 619: t10 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf57073844a7a60
  1815  	for s := 0; s < 5; s++ {
  1816  		t10.Square(t10)
  1817  	}
  1818  
  1819  	// Step 620: t10 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf57073844a7a6d
  1820  	t10.Mul(t4, t10)
  1821  
  1822  	// Step 627: t10 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d3680
  1823  	for s := 0; s < 7; s++ {
  1824  		t10.Square(t10)
  1825  	}
  1826  
  1827  	// Step 628: t9 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369b
  1828  	t9.Mul(t9, t10)
  1829  
  1830  	// Step 632: t9 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369b0
  1831  	for s := 0; s < 4; s++ {
  1832  		t9.Square(t9)
  1833  	}
  1834  
  1835  	// Step 633: t9 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd
  1836  	t9.Mul(t4, t9)
  1837  
  1838  	// Step 637: t9 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd0
  1839  	for s := 0; s < 4; s++ {
  1840  		t9.Square(t9)
  1841  	}
  1842  
  1843  	// Step 638: t9 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd3
  1844  	t9.Mul(z, t9)
  1845  
  1846  	// Step 646: t9 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd300
  1847  	for s := 0; s < 8; s++ {
  1848  		t9.Square(t9)
  1849  	}
  1850  
  1851  	// Step 647: t8 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd311
  1852  	t8.Mul(t8, t9)
  1853  
  1854  	// Step 649: t8 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c44
  1855  	for s := 0; s < 2; s++ {
  1856  		t8.Square(t8)
  1857  	}
  1858  
  1859  	// Step 650: t8 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c45
  1860  	t8.Mul(&x, t8)
  1861  
  1862  	// Step 660: t8 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd311400
  1863  	for s := 0; s < 10; s++ {
  1864  		t8.Square(t8)
  1865  	}
  1866  
  1867  	// Step 661: t7 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f
  1868  	t7.Mul(t7, t8)
  1869  
  1870  	// Step 665: t7 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f0
  1871  	for s := 0; s < 4; s++ {
  1872  		t7.Square(t7)
  1873  	}
  1874  
  1875  	// Step 666: t6 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f7
  1876  	t6.Mul(t6, t7)
  1877  
  1878  	// Step 672: t6 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdc0
  1879  	for s := 0; s < 6; s++ {
  1880  		t6.Square(t6)
  1881  	}
  1882  
  1883  	// Step 673: t5 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf
  1884  	t5.Mul(t5, t6)
  1885  
  1886  	// Step 679: t5 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f73c0
  1887  	for s := 0; s < 6; s++ {
  1888  		t5.Square(t5)
  1889  	}
  1890  
  1891  	// Step 680: t4 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f73cd
  1892  	t4.Mul(t4, t5)
  1893  
  1894  	// Step 686: t4 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf340
  1895  	for s := 0; s < 6; s++ {
  1896  		t4.Square(t4)
  1897  	}
  1898  
  1899  	// Step 687: t4 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf35d
  1900  	t4.Mul(t2, t4)
  1901  
  1902  	// Step 693: t4 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f73cd740
  1903  	for s := 0; s < 6; s++ {
  1904  		t4.Square(t4)
  1905  	}
  1906  
  1907  	// Step 694: t4 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f73cd749
  1908  	t4.Mul(t1, t4)
  1909  
  1910  	// Step 701: t4 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae73d5c1ce1129e9b4de988a3fb9e6ba480
  1911  	for s := 0; s < 7; s++ {
  1912  		t4.Square(t4)
  1913  	}
  1914  
  1915  	// Step 702: t3 = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae73d5c1ce1129e9b4de988a3fb9e6ba48b
  1916  	t3.Mul(t3, t4)
  1917  
  1918  	// Step 708: t3 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf57073844a7a6d37a6228fee79ae922c0
  1919  	for s := 0; s < 6; s++ {
  1920  		t3.Square(t3)
  1921  	}
  1922  
  1923  	// Step 709: t2 = x^0x24cc67981e6bec7f8342e9e03ae556b51f9b18ebaf3a58e9cb2ed35b377b45f02a54d81f5bd492171b53ebd07eaf892fc1d10a1db7b480faf6b9cf57073844a7a6d37a6228fee79ae922dd
  1924  	t2.Mul(t2, t3)
  1925  
  1926  	// Step 714: t2 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf35d245ba0
  1927  	for s := 0; s < 5; s++ {
  1928  		t2.Square(t2)
  1929  	}
  1930  
  1931  	// Step 715: t1 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf35d245ba9
  1932  	t1.Mul(t1, t2)
  1933  
  1934  	// Step 723: t1 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf35d245ba900
  1935  	for s := 0; s < 8; s++ {
  1936  		t1.Square(t1)
  1937  	}
  1938  
  1939  	// Step 724: t0 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf35d245ba915
  1940  	t0.Mul(t0, t1)
  1941  
  1942  	// Step 726: t0 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f73cd74916ea454
  1943  	for s := 0; s < 2; s++ {
  1944  		t0.Square(t0)
  1945  	}
  1946  
  1947  	// Step 727: t0 = x^0x126633cc0f35f63fc1a174f01d72ab5a8fcd8c75d79d2c74e59769ad9bbda2f8152a6c0fadea490b8da9f5e83f57c497e0e8850edbda407d7b5ce7ab839c2253d369bd31147f73cd74916ea457
  1948  	t0.Mul(z, t0)
  1949  
  1950  	// Step 745: t0 = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf35d245ba915c0000
  1951  	for s := 0; s < 18; s++ {
  1952  		t0.Square(t0)
  1953  	}
  1954  
  1955  	// Step 746: z = x^0x4998cf303cd7d8ff0685d3c075caad6a3f3631d75e74b1d3965da6b66ef68be054a9b03eb7a9242e36a7d7a0fd5f125f83a2143b6f6901f5ed739eae0e70894f4da6f4c451fdcf35d245ba915c0003
  1956  	z.Mul(z, t0)
  1957  
  1958  	// Step 747: z = x^0x93319e6079afb1fe0d0ba780eb955ad47e6c63aebce963a72cbb4d6cdded17c0a953607d6f52485c6d4faf41fabe24bf07442876ded203ebdae73d5c1ce1129e9b4de988a3fb9e6ba48b7522b80006
  1959  	z.Square(z)
  1960  
  1961  	return z
  1962  }