packages feed

hsblst-0.0.3: c-source/src/pentaroot-addchain.h

/*
 * Copyright Supranational LLC
 * Licensed under the Apache License, Version 2.0, see LICENSE for details.
 * SPDX-License-Identifier: Apache-2.0
 */
/*
 * The "magic" number is 1/5 modulo BLS12_381_r-1. Exponentiation to which
 * yields 5th root of the base.
 *
 * Generated with 'addchain 20974350070050476191779096203274386335076221000211055129041463479975432473805'
 * https://github.com/kwantam/addchain
 * # Bos-Coster (win=4)           :  307 (15)
 * # Bos-Coster (win=10)          :  307 (18)
 * # Yacobi                       :  319 (16)
 * # Bos-Coster (win=2)           :  319 ( 5)
 * # Bos-Coster (win=5)           :  306 (19) <<<
 * # Bos-Coster (win=7)           :  311 (22)
 * # Bos-Coster (win=9)           :  313 (20)
 * # Bos-Coster (win=3)           :  314 ( 9)
 * # Bos-Coster (win=6)           :  309 (21)
 * # Bos-Coster (win=8)           :  309 (23)
 * # Bergeron-Berstel-Brlek-Duboc :  334 ( 5)
 */

#define PENTAROOT_MOD_BLS12_381_r(out, inp, ptype) do { \
ptype t[19]; \
vec_copy(t[1], inp, sizeof(ptype)); /*    0: 1 */\
sqr(t[7], t[1]);                    /*    1: 2 */\
sqr(t[0], t[7]);                    /*    2: 4 */\
sqr(t[2], t[0]);                    /*    3: 8 */\
mul(t[10], t[2], t[1]);             /*    4: 9 */\
mul(t[3], t[10], t[7]);             /*    5: b */\
mul(t[1], t[10], t[0]);             /*    6: d */\
mul(t[5], t[3], t[0]);              /*    7: f */\
mul(t[9], t[10], t[2]);             /*    8: 11 */\
mul(t[4], t[3], t[2]);              /*    9: 13 */\
mul(t[15], t[5], t[2]);             /*   10: 17 */\
mul(t[8], t[15], t[2]);             /*   11: 1f */\
mul(t[13], t[8], t[7]);             /*   12: 21 */\
mul(t[14], t[8], t[0]);             /*   13: 23 */\
mul(t[12], t[13], t[0]);            /*   14: 25 */\
mul(t[6], t[8], t[2]);              /*   15: 27 */\
mul(t[11], t[14], t[2]);            /*   16: 2b */\
sqr(t[0], t[15]);                   /*   17: 2e */\
mul(t[18], t[6], t[2]);             /*   18: 2f */\
mul(t[2], t[11], t[2]);             /*   19: 33 */\
mul(t[16], t[2], t[7]);             /*   20: 35 */\
mul(t[7], t[0], t[3]);              /*   21: 39 */\
mul(t[17], t[0], t[5]);             /*   22: 3d */\
/* sqr(t[0], t[0]); */              /*   23: 5c */\
/* sqr(t[0], t[0]); */              /*   24: b8 */\
/* sqr(t[0], t[0]); */              /*   25: 170 */\
/* sqr(t[0], t[0]); */              /*   26: 2e0 */\
/* sqr(t[0], t[0]); */              /*   27: 5c0 */\
/* sqr(t[0], t[0]); */              /*   28: b80 */\
/* sqr(t[0], t[0]); */              /*   29: 1700 */\
sqr_n_mul(t[0], t[0], 7, t[18]);    /*   30: 172f */\
/* sqr(t[0], t[0]); */              /*   31: 2e5e */\
/* sqr(t[0], t[0]); */              /*   32: 5cbc */\
/* sqr(t[0], t[0]); */              /*   33: b978 */\
/* sqr(t[0], t[0]); */              /*   34: 172f0 */\
/* sqr(t[0], t[0]); */              /*   35: 2e5e0 */\
/* sqr(t[0], t[0]); */              /*   36: 5cbc0 */\
sqr_n_mul(t[0], t[0], 6, t[13]);    /*   37: 5cbe1 */\
/* sqr(t[0], t[0]); */              /*   38: b97c2 */\
/* sqr(t[0], t[0]); */              /*   39: 172f84 */\
/* sqr(t[0], t[0]); */              /*   40: 2e5f08 */\
/* sqr(t[0], t[0]); */              /*   41: 5cbe10 */\
/* sqr(t[0], t[0]); */              /*   42: b97c20 */\
/* sqr(t[0], t[0]); */              /*   43: 172f840 */\
sqr_n_mul(t[0], t[0], 6, t[17]);    /*   44: 172f87d */\
/* sqr(t[0], t[0]); */              /*   45: 2e5f0fa */\
/* sqr(t[0], t[0]); */              /*   46: 5cbe1f4 */\
/* sqr(t[0], t[0]); */              /*   47: b97c3e8 */\
/* sqr(t[0], t[0]); */              /*   48: 172f87d0 */\
/* sqr(t[0], t[0]); */              /*   49: 2e5f0fa0 */\
/* sqr(t[0], t[0]); */              /*   50: 5cbe1f40 */\
sqr_n_mul(t[0], t[0], 6, t[16]);    /*   51: 5cbe1f75 */\
/* sqr(t[0], t[0]); */              /*   52: b97c3eea */\
/* sqr(t[0], t[0]); */              /*   53: 172f87dd4 */\
/* sqr(t[0], t[0]); */              /*   54: 2e5f0fba8 */\
/* sqr(t[0], t[0]); */              /*   55: 5cbe1f750 */\
/* sqr(t[0], t[0]); */              /*   56: b97c3eea0 */\
sqr_n_mul(t[0], t[0], 5, t[15]);    /*   57: b97c3eeb7 */\
/* sqr(t[0], t[0]); */              /*   58: 172f87dd6e */\
/* sqr(t[0], t[0]); */              /*   59: 2e5f0fbadc */\
/* sqr(t[0], t[0]); */              /*   60: 5cbe1f75b8 */\
/* sqr(t[0], t[0]); */              /*   61: b97c3eeb70 */\
/* sqr(t[0], t[0]); */              /*   62: 172f87dd6e0 */\
/* sqr(t[0], t[0]); */              /*   63: 2e5f0fbadc0 */\
sqr_n_mul(t[0], t[0], 6, t[15]);    /*   64: 2e5f0fbadd7 */\
/* sqr(t[0], t[0]); */              /*   65: 5cbe1f75bae */\
/* sqr(t[0], t[0]); */              /*   66: b97c3eeb75c */\
/* sqr(t[0], t[0]); */              /*   67: 172f87dd6eb8 */\
/* sqr(t[0], t[0]); */              /*   68: 2e5f0fbadd70 */\
/* sqr(t[0], t[0]); */              /*   69: 5cbe1f75bae0 */\
/* sqr(t[0], t[0]); */              /*   70: b97c3eeb75c0 */\
/* sqr(t[0], t[0]); */              /*   71: 172f87dd6eb80 */\
/* sqr(t[0], t[0]); */              /*   72: 2e5f0fbadd700 */\
sqr_n_mul(t[0], t[0], 8, t[14]);    /*   73: 2e5f0fbadd723 */\
/* sqr(t[0], t[0]); */              /*   74: 5cbe1f75bae46 */\
/* sqr(t[0], t[0]); */              /*   75: b97c3eeb75c8c */\
/* sqr(t[0], t[0]); */              /*   76: 172f87dd6eb918 */\
/* sqr(t[0], t[0]); */              /*   77: 2e5f0fbadd7230 */\
/* sqr(t[0], t[0]); */              /*   78: 5cbe1f75bae460 */\
/* sqr(t[0], t[0]); */              /*   79: b97c3eeb75c8c0 */\
/* sqr(t[0], t[0]); */              /*   80: 172f87dd6eb9180 */\
/* sqr(t[0], t[0]); */              /*   81: 2e5f0fbadd72300 */\
sqr_n_mul(t[0], t[0], 8, t[13]);    /*   82: 2e5f0fbadd72321 */\
/* sqr(t[0], t[0]); */              /*   83: 5cbe1f75bae4642 */\
/* sqr(t[0], t[0]); */              /*   84: b97c3eeb75c8c84 */\
/* sqr(t[0], t[0]); */              /*   85: 172f87dd6eb91908 */\
/* sqr(t[0], t[0]); */              /*   86: 2e5f0fbadd723210 */\
/* sqr(t[0], t[0]); */              /*   87: 5cbe1f75bae46420 */\
/* sqr(t[0], t[0]); */              /*   88: b97c3eeb75c8c840 */\
sqr_n_mul(t[0], t[0], 6, t[2]);     /*   89: b97c3eeb75c8c873 */\
/* sqr(t[0], t[0]); */              /*   90: 172f87dd6eb9190e6 */\
/* sqr(t[0], t[0]); */              /*   91: 2e5f0fbadd72321cc */\
/* sqr(t[0], t[0]); */              /*   92: 5cbe1f75bae464398 */\
/* sqr(t[0], t[0]); */              /*   93: b97c3eeb75c8c8730 */\
/* sqr(t[0], t[0]); */              /*   94: 172f87dd6eb9190e60 */\
/* sqr(t[0], t[0]); */              /*   95: 2e5f0fbadd72321cc0 */\
sqr_n_mul(t[0], t[0], 6, t[13]);    /*   96: 2e5f0fbadd72321ce1 */\
/* sqr(t[0], t[0]); */              /*   97: 5cbe1f75bae46439c2 */\
/* sqr(t[0], t[0]); */              /*   98: b97c3eeb75c8c87384 */\
/* sqr(t[0], t[0]); */              /*   99: 172f87dd6eb9190e708 */\
/* sqr(t[0], t[0]); */              /*  100: 2e5f0fbadd72321ce10 */\
/* sqr(t[0], t[0]); */              /*  101: 5cbe1f75bae46439c20 */\
/* sqr(t[0], t[0]); */              /*  102: b97c3eeb75c8c873840 */\
/* sqr(t[0], t[0]); */              /*  103: 172f87dd6eb9190e7080 */\
sqr_n_mul(t[0], t[0], 7, t[12]);    /*  104: 172f87dd6eb9190e70a5 */\
/* sqr(t[0], t[0]); */              /*  105: 2e5f0fbadd72321ce14a */\
/* sqr(t[0], t[0]); */              /*  106: 5cbe1f75bae46439c294 */\
/* sqr(t[0], t[0]); */              /*  107: b97c3eeb75c8c8738528 */\
/* sqr(t[0], t[0]); */              /*  108: 172f87dd6eb9190e70a50 */\
/* sqr(t[0], t[0]); */              /*  109: 2e5f0fbadd72321ce14a0 */\
/* sqr(t[0], t[0]); */              /*  110: 5cbe1f75bae46439c2940 */\
/* sqr(t[0], t[0]); */              /*  111: b97c3eeb75c8c87385280 */\
/* sqr(t[0], t[0]); */              /*  112: 172f87dd6eb9190e70a500 */\
sqr_n_mul(t[0], t[0], 8, t[11]);    /*  113: 172f87dd6eb9190e70a52b */\
/* sqr(t[0], t[0]); */              /*  114: 2e5f0fbadd72321ce14a56 */\
/* sqr(t[0], t[0]); */              /*  115: 5cbe1f75bae46439c294ac */\
/* sqr(t[0], t[0]); */              /*  116: b97c3eeb75c8c873852958 */\
/* sqr(t[0], t[0]); */              /*  117: 172f87dd6eb9190e70a52b0 */\
/* sqr(t[0], t[0]); */              /*  118: 2e5f0fbadd72321ce14a560 */\
/* sqr(t[0], t[0]); */              /*  119: 5cbe1f75bae46439c294ac0 */\
sqr_n_mul(t[0], t[0], 6, t[1]);     /*  120: 5cbe1f75bae46439c294acd */\
/* sqr(t[0], t[0]); */              /*  121: b97c3eeb75c8c873852959a */\
/* sqr(t[0], t[0]); */              /*  122: 172f87dd6eb9190e70a52b34 */\
/* sqr(t[0], t[0]); */              /*  123: 2e5f0fbadd72321ce14a5668 */\
/* sqr(t[0], t[0]); */              /*  124: 5cbe1f75bae46439c294acd0 */\
/* sqr(t[0], t[0]); */              /*  125: b97c3eeb75c8c873852959a0 */\
/* sqr(t[0], t[0]); */              /*  126: 172f87dd6eb9190e70a52b340 */\
/* sqr(t[0], t[0]); */              /*  127: 2e5f0fbadd72321ce14a56680 */\
/* sqr(t[0], t[0]); */              /*  128: 5cbe1f75bae46439c294acd00 */\
sqr_n_mul(t[0], t[0], 8, t[2]);     /*  129: 5cbe1f75bae46439c294acd33 */\
/* sqr(t[0], t[0]); */              /*  130: b97c3eeb75c8c873852959a66 */\
/* sqr(t[0], t[0]); */              /*  131: 172f87dd6eb9190e70a52b34cc */\
/* sqr(t[0], t[0]); */              /*  132: 2e5f0fbadd72321ce14a566998 */\
/* sqr(t[0], t[0]); */              /*  133: 5cbe1f75bae46439c294acd330 */\
/* sqr(t[0], t[0]); */              /*  134: b97c3eeb75c8c873852959a660 */\
/* sqr(t[0], t[0]); */              /*  135: 172f87dd6eb9190e70a52b34cc0 */\
sqr_n_mul(t[0], t[0], 6, t[11]);    /*  136: 172f87dd6eb9190e70a52b34ceb */\
/* sqr(t[0], t[0]); */              /*  137: 2e5f0fbadd72321ce14a56699d6 */\
/* sqr(t[0], t[0]); */              /*  138: 5cbe1f75bae46439c294acd33ac */\
/* sqr(t[0], t[0]); */              /*  139: b97c3eeb75c8c873852959a6758 */\
/* sqr(t[0], t[0]); */              /*  140: 172f87dd6eb9190e70a52b34ceb0 */\
sqr_n_mul(t[0], t[0], 4, t[10]);    /*  141: 172f87dd6eb9190e70a52b34ceb9 */\
/* sqr(t[0], t[0]); */              /*  142: 2e5f0fbadd72321ce14a56699d72 */\
/* sqr(t[0], t[0]); */              /*  143: 5cbe1f75bae46439c294acd33ae4 */\
/* sqr(t[0], t[0]); */              /*  144: b97c3eeb75c8c873852959a675c8 */\
/* sqr(t[0], t[0]); */              /*  145: 172f87dd6eb9190e70a52b34ceb90 */\
/* sqr(t[0], t[0]); */              /*  146: 2e5f0fbadd72321ce14a56699d720 */\
sqr_n_mul(t[0], t[0], 5, t[8]);     /*  147: 2e5f0fbadd72321ce14a56699d73f */\
/* sqr(t[0], t[0]); */              /*  148: 5cbe1f75bae46439c294acd33ae7e */\
/* sqr(t[0], t[0]); */              /*  149: b97c3eeb75c8c873852959a675cfc */\
/* sqr(t[0], t[0]); */              /*  150: 172f87dd6eb9190e70a52b34ceb9f8 */\
/* sqr(t[0], t[0]); */              /*  151: 2e5f0fbadd72321ce14a56699d73f0 */\
/* sqr(t[0], t[0]); */              /*  152: 5cbe1f75bae46439c294acd33ae7e0 */\
/* sqr(t[0], t[0]); */              /*  153: b97c3eeb75c8c873852959a675cfc0 */\
/* sqr(t[0], t[0]); */              /*  154: 172f87dd6eb9190e70a52b34ceb9f80 */\
/* sqr(t[0], t[0]); */              /*  155: 2e5f0fbadd72321ce14a56699d73f00 */\
/* sqr(t[0], t[0]); */              /*  156: 5cbe1f75bae46439c294acd33ae7e00 */\
/* sqr(t[0], t[0]); */              /*  157: b97c3eeb75c8c873852959a675cfc00 */\
/* sqr(t[0], t[0]); */              /*  158: 172f87dd6eb9190e70a52b34ceb9f800 */\
/* sqr(t[0], t[0]); */              /*  159: 2e5f0fbadd72321ce14a56699d73f000 */\
/* sqr(t[0], t[0]); */              /*  160: 5cbe1f75bae46439c294acd33ae7e000 */\
/* sqr(t[0], t[0]); */              /*  161: b97c3eeb75c8c873852959a675cfc000 */\
/* sqr(t[0], t[0]); */              /*  162: 172f87dd6eb9190e70a52b34ceb9f8000 */\
sqr_n_mul(t[0], t[0], 15, t[9]);    /*  163: 172f87dd6eb9190e70a52b34ceb9f8011 */\
/* sqr(t[0], t[0]); */              /*  164: 2e5f0fbadd72321ce14a56699d73f0022 */\
/* sqr(t[0], t[0]); */              /*  165: 5cbe1f75bae46439c294acd33ae7e0044 */\
/* sqr(t[0], t[0]); */              /*  166: b97c3eeb75c8c873852959a675cfc0088 */\
/* sqr(t[0], t[0]); */              /*  167: 172f87dd6eb9190e70a52b34ceb9f80110 */\
/* sqr(t[0], t[0]); */              /*  168: 2e5f0fbadd72321ce14a56699d73f00220 */\
/* sqr(t[0], t[0]); */              /*  169: 5cbe1f75bae46439c294acd33ae7e00440 */\
/* sqr(t[0], t[0]); */              /*  170: b97c3eeb75c8c873852959a675cfc00880 */\
/* sqr(t[0], t[0]); */              /*  171: 172f87dd6eb9190e70a52b34ceb9f801100 */\
sqr_n_mul(t[0], t[0], 8, t[3]);     /*  172: 172f87dd6eb9190e70a52b34ceb9f80110b */\
/* sqr(t[0], t[0]); */              /*  173: 2e5f0fbadd72321ce14a56699d73f002216 */\
/* sqr(t[0], t[0]); */              /*  174: 5cbe1f75bae46439c294acd33ae7e00442c */\
/* sqr(t[0], t[0]); */              /*  175: b97c3eeb75c8c873852959a675cfc008858 */\
/* sqr(t[0], t[0]); */              /*  176: 172f87dd6eb9190e70a52b34ceb9f80110b0 */\
/* sqr(t[0], t[0]); */              /*  177: 2e5f0fbadd72321ce14a56699d73f0022160 */\
sqr_n_mul(t[0], t[0], 5, t[8]);     /*  178: 2e5f0fbadd72321ce14a56699d73f002217f */\
/* sqr(t[0], t[0]); */              /*  179: 5cbe1f75bae46439c294acd33ae7e00442fe */\
/* sqr(t[0], t[0]); */              /*  180: b97c3eeb75c8c873852959a675cfc00885fc */\
/* sqr(t[0], t[0]); */              /*  181: 172f87dd6eb9190e70a52b34ceb9f80110bf8 */\
/* sqr(t[0], t[0]); */              /*  182: 2e5f0fbadd72321ce14a56699d73f002217f0 */\
/* sqr(t[0], t[0]); */              /*  183: 5cbe1f75bae46439c294acd33ae7e00442fe0 */\
/* sqr(t[0], t[0]); */              /*  184: b97c3eeb75c8c873852959a675cfc00885fc0 */\
/* sqr(t[0], t[0]); */              /*  185: 172f87dd6eb9190e70a52b34ceb9f80110bf80 */\
/* sqr(t[0], t[0]); */              /*  186: 2e5f0fbadd72321ce14a56699d73f002217f00 */\
/* sqr(t[0], t[0]); */              /*  187: 5cbe1f75bae46439c294acd33ae7e00442fe00 */\
/* sqr(t[0], t[0]); */              /*  188: b97c3eeb75c8c873852959a675cfc00885fc00 */\
sqr_n_mul(t[0], t[0], 10, t[7]);    /*  189: b97c3eeb75c8c873852959a675cfc00885fc39 */\
/* sqr(t[0], t[0]); */              /*  190: 172f87dd6eb9190e70a52b34ceb9f80110bf872 */\
/* sqr(t[0], t[0]); */              /*  191: 2e5f0fbadd72321ce14a56699d73f002217f0e4 */\
/* sqr(t[0], t[0]); */              /*  192: 5cbe1f75bae46439c294acd33ae7e00442fe1c8 */\
/* sqr(t[0], t[0]); */              /*  193: b97c3eeb75c8c873852959a675cfc00885fc390 */\
/* sqr(t[0], t[0]); */              /*  194: 172f87dd6eb9190e70a52b34ceb9f80110bf8720 */\
/* sqr(t[0], t[0]); */              /*  195: 2e5f0fbadd72321ce14a56699d73f002217f0e40 */\
sqr_n_mul(t[0], t[0], 6, t[6]);     /*  196: 2e5f0fbadd72321ce14a56699d73f002217f0e67 */\
/* sqr(t[0], t[0]); */              /*  197: 5cbe1f75bae46439c294acd33ae7e00442fe1cce */\
/* sqr(t[0], t[0]); */              /*  198: b97c3eeb75c8c873852959a675cfc00885fc399c */\
/* sqr(t[0], t[0]); */              /*  199: 172f87dd6eb9190e70a52b34ceb9f80110bf87338 */\
/* sqr(t[0], t[0]); */              /*  200: 2e5f0fbadd72321ce14a56699d73f002217f0e670 */\
/* sqr(t[0], t[0]); */              /*  201: 5cbe1f75bae46439c294acd33ae7e00442fe1cce0 */\
sqr_n_mul(t[0], t[0], 5, t[4]);     /*  202: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3 */\
/* sqr(t[0], t[0]); */              /*  203: b97c3eeb75c8c873852959a675cfc00885fc399e6 */\
/* sqr(t[0], t[0]); */              /*  204: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cc */\
/* sqr(t[0], t[0]); */              /*  205: 2e5f0fbadd72321ce14a56699d73f002217f0e6798 */\
/* sqr(t[0], t[0]); */              /*  206: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf30 */\
/* sqr(t[0], t[0]); */              /*  207: b97c3eeb75c8c873852959a675cfc00885fc399e60 */\
/* sqr(t[0], t[0]); */              /*  208: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cc0 */\
/* sqr(t[0], t[0]); */              /*  209: 2e5f0fbadd72321ce14a56699d73f002217f0e67980 */\
/* sqr(t[0], t[0]); */              /*  210: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf300 */\
sqr_n_mul(t[0], t[0], 8, t[2]);     /*  211: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf333 */\
/* sqr(t[0], t[0]); */              /*  212: b97c3eeb75c8c873852959a675cfc00885fc399e666 */\
/* sqr(t[0], t[0]); */              /*  213: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc */\
/* sqr(t[0], t[0]); */              /*  214: 2e5f0fbadd72321ce14a56699d73f002217f0e679998 */\
/* sqr(t[0], t[0]); */              /*  215: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3330 */\
/* sqr(t[0], t[0]); */              /*  216: b97c3eeb75c8c873852959a675cfc00885fc399e6660 */\
/* sqr(t[0], t[0]); */              /*  217: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc0 */\
/* sqr(t[0], t[0]); */              /*  218: 2e5f0fbadd72321ce14a56699d73f002217f0e6799980 */\
sqr_n_mul(t[0], t[0], 7, t[5]);     /*  219: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f */\
/* sqr(t[0], t[0]); */              /*  220: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e */\
/* sqr(t[0], t[0]); */              /*  221: b97c3eeb75c8c873852959a675cfc00885fc399e6663c */\
/* sqr(t[0], t[0]); */              /*  222: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78 */\
/* sqr(t[0], t[0]); */              /*  223: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f0 */\
/* sqr(t[0], t[0]); */              /*  224: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e0 */\
/* sqr(t[0], t[0]); */              /*  225: b97c3eeb75c8c873852959a675cfc00885fc399e6663c0 */\
/* sqr(t[0], t[0]); */              /*  226: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc780 */\
/* sqr(t[0], t[0]); */              /*  227: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f00 */\
/* sqr(t[0], t[0]); */              /*  228: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e00 */\
sqr_n_mul(t[0], t[0], 9, t[2]);     /*  229: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e33 */\
/* sqr(t[0], t[0]); */              /*  230: b97c3eeb75c8c873852959a675cfc00885fc399e6663c66 */\
/* sqr(t[0], t[0]); */              /*  231: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc */\
/* sqr(t[0], t[0]); */              /*  232: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f198 */\
/* sqr(t[0], t[0]); */              /*  233: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e330 */\
/* sqr(t[0], t[0]); */              /*  234: b97c3eeb75c8c873852959a675cfc00885fc399e6663c660 */\
/* sqr(t[0], t[0]); */              /*  235: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc0 */\
/* sqr(t[0], t[0]); */              /*  236: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f1980 */\
sqr_n_mul(t[0], t[0], 7, t[4]);     /*  237: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f1993 */\
/* sqr(t[0], t[0]); */              /*  238: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e3326 */\
/* sqr(t[0], t[0]); */              /*  239: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664c */\
/* sqr(t[0], t[0]); */              /*  240: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc98 */\
/* sqr(t[0], t[0]); */              /*  241: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f19930 */\
/* sqr(t[0], t[0]); */              /*  242: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e33260 */\
/* sqr(t[0], t[0]); */              /*  243: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664c0 */\
/* sqr(t[0], t[0]); */              /*  244: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc980 */\
/* sqr(t[0], t[0]); */              /*  245: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f199300 */\
sqr_n_mul(t[0], t[0], 8, t[2]);     /*  246: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f199333 */\
/* sqr(t[0], t[0]); */              /*  247: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e332666 */\
/* sqr(t[0], t[0]); */              /*  248: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664ccc */\
/* sqr(t[0], t[0]); */              /*  249: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc9998 */\
/* sqr(t[0], t[0]); */              /*  250: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f1993330 */\
/* sqr(t[0], t[0]); */              /*  251: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e3326660 */\
/* sqr(t[0], t[0]); */              /*  252: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664ccc0 */\
/* sqr(t[0], t[0]); */              /*  253: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc99980 */\
/* sqr(t[0], t[0]); */              /*  254: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f19933300 */\
sqr_n_mul(t[0], t[0], 8, t[2]);     /*  255: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f19933333 */\
/* sqr(t[0], t[0]); */              /*  256: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e33266666 */\
/* sqr(t[0], t[0]); */              /*  257: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664ccccc */\
/* sqr(t[0], t[0]); */              /*  258: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc999998 */\
/* sqr(t[0], t[0]); */              /*  259: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f199333330 */\
/* sqr(t[0], t[0]); */              /*  260: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e332666660 */\
/* sqr(t[0], t[0]); */              /*  261: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664ccccc0 */\
/* sqr(t[0], t[0]); */              /*  262: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc9999980 */\
/* sqr(t[0], t[0]); */              /*  263: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f1993333300 */\
sqr_n_mul(t[0], t[0], 8, t[2]);     /*  264: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f1993333333 */\
/* sqr(t[0], t[0]); */              /*  265: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e3326666666 */\
/* sqr(t[0], t[0]); */              /*  266: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664ccccccc */\
/* sqr(t[0], t[0]); */              /*  267: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc99999998 */\
/* sqr(t[0], t[0]); */              /*  268: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f19933333330 */\
/* sqr(t[0], t[0]); */              /*  269: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e33266666660 */\
/* sqr(t[0], t[0]); */              /*  270: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664ccccccc0 */\
sqr_n_mul(t[0], t[0], 6, t[3]);     /*  271: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664cccccccb */\
/* sqr(t[0], t[0]); */              /*  272: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc999999996 */\
/* sqr(t[0], t[0]); */              /*  273: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f19933333332c */\
/* sqr(t[0], t[0]); */              /*  274: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e332666666658 */\
/* sqr(t[0], t[0]); */              /*  275: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664cccccccb0 */\
/* sqr(t[0], t[0]); */              /*  276: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc9999999960 */\
/* sqr(t[0], t[0]); */              /*  277: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f19933333332c0 */\
/* sqr(t[0], t[0]); */              /*  278: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e3326666666580 */\
/* sqr(t[0], t[0]); */              /*  279: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664cccccccb00 */\
sqr_n_mul(t[0], t[0], 8, t[2]);     /*  280: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664cccccccb33 */\
/* sqr(t[0], t[0]); */              /*  281: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc99999999666 */\
/* sqr(t[0], t[0]); */              /*  282: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f19933333332ccc */\
/* sqr(t[0], t[0]); */              /*  283: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e33266666665998 */\
/* sqr(t[0], t[0]); */              /*  284: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664cccccccb330 */\
/* sqr(t[0], t[0]); */              /*  285: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc999999996660 */\
/* sqr(t[0], t[0]); */              /*  286: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f19933333332ccc0 */\
/* sqr(t[0], t[0]); */              /*  287: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e332666666659980 */\
/* sqr(t[0], t[0]); */              /*  288: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664cccccccb3300 */\
sqr_n_mul(t[0], t[0], 8, t[2]);     /*  289: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664cccccccb3333 */\
/* sqr(t[0], t[0]); */              /*  290: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc9999999966666 */\
/* sqr(t[0], t[0]); */              /*  291: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f19933333332ccccc */\
/* sqr(t[0], t[0]); */              /*  292: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e3326666666599998 */\
/* sqr(t[0], t[0]); */              /*  293: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664cccccccb33330 */\
/* sqr(t[0], t[0]); */              /*  294: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc99999999666660 */\
/* sqr(t[0], t[0]); */              /*  295: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f19933333332ccccc0 */\
/* sqr(t[0], t[0]); */              /*  296: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e33266666665999980 */\
/* sqr(t[0], t[0]); */              /*  297: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664cccccccb333300 */\
sqr_n_mul(t[0], t[0], 8, t[2]);     /*  298: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664cccccccb333333 */\
/* sqr(t[0], t[0]); */              /*  299: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc999999996666666 */\
/* sqr(t[0], t[0]); */              /*  300: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f19933333332ccccccc */\
/* sqr(t[0], t[0]); */              /*  301: 5cbe1f75bae46439c294acd33ae7e00442fe1ccf3331e332666666659999998 */\
/* sqr(t[0], t[0]); */              /*  302: b97c3eeb75c8c873852959a675cfc00885fc399e6663c664cccccccb3333330 */\
/* sqr(t[0], t[0]); */              /*  303: 172f87dd6eb9190e70a52b34ceb9f80110bf8733cccc78cc9999999966666660 */\
/* sqr(t[0], t[0]); */              /*  304: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f19933333332ccccccc0 */\
sqr_n_mul(out, t[0], 6, t[1]);      /*  305: 2e5f0fbadd72321ce14a56699d73f002217f0e679998f19933333332cccccccd */\
} while(0)