-rw-r--r-- 93008 high-ctidh-20210523/fp_sqrt2048.c
// DO NOT EDIT! generated by ./autogen
#include "fp.h"
// 316 mults, 2040 squarings
long long fp_sqrt(fp *x)
{
fp origx = *x;
fp r0;
r0 = *x; // 1
fp r1;
fp_sq2(&r1,&r0);
fp r2;
fp_mul3(&r2,&r0,&r1); // 3
fp r3;
fp_mul3(&r3,&r1,&r2); // 5
fp r4;
fp_mul3(&r4,&r1,&r3); // 7
fp r5;
fp_mul3(&r5,&r1,&r4); // 9
fp r6;
fp_mul3(&r6,&r1,&r5); // 11
fp r7;
fp_mul3(&r7,&r1,&r6); // 13
fp r8;
fp_mul3(&r8,&r1,&r7); // 15
fp r9;
fp_mul3(&r9,&r1,&r8); // 17
fp r10;
fp_mul3(&r10,&r1,&r9); // 19
fp r11;
fp_mul3(&r11,&r1,&r10); // 21
fp r12;
fp_mul3(&r12,&r1,&r11); // 23
fp r13;
fp_mul3(&r13,&r1,&r12); // 25
fp r14;
fp_mul3(&r14,&r1,&r13); // 27
fp r15;
fp_mul3(&r15,&r1,&r14); // 29
fp r16;
fp_mul3(&r16,&r1,&r15); // 31
fp r17;
fp_mul3(&r17,&r1,&r16); // 33
fp r18;
fp_mul3(&r18,&r1,&r17); // 35
fp r19;
fp_mul3(&r19,&r1,&r18); // 37
fp r20;
fp_mul3(&r20,&r1,&r19); // 39
fp r21;
fp_mul3(&r21,&r1,&r20); // 41
fp r22;
fp_mul3(&r22,&r1,&r21); // 43
fp r23;
fp_mul3(&r23,&r1,&r22); // 45
fp r24;
fp_mul3(&r24,&r1,&r23); // 47
fp r25;
fp_mul3(&r25,&r1,&r24); // 49
fp r26;
fp_mul3(&r26,&r1,&r25); // 51
fp r27;
fp_mul3(&r27,&r1,&r26); // 53
fp_mul2(&r27,&r1); // 55
fp r28;
fp_mul3(&r28,&r1,&r27); // 57
fp r29;
fp_mul3(&r29,&r1,&r28); // 59
fp r30;
fp_mul3(&r30,&r1,&r29); // 61
fp r31;
fp_mul3(&r31,&r1,&r30); // 63
fp r32;
fp_mul3(&r32,&r1,&r31); // 65
fp r33;
fp_mul3(&r33,&r1,&r32); // 67
fp r34;
fp_mul3(&r34,&r1,&r33); // 69
fp r35;
fp_mul3(&r35,&r1,&r34); // 71
fp r36;
fp_mul3(&r36,&r1,&r35); // 73
fp r37;
fp_mul3(&r37,&r1,&r36); // 75
fp r38;
fp_mul3(&r38,&r1,&r37); // 77
fp r39;
fp_mul3(&r39,&r1,&r38); // 79
fp r40;
fp_mul3(&r40,&r1,&r39); // 81
fp r41;
fp_mul3(&r41,&r1,&r40); // 83
fp r42;
fp_mul3(&r42,&r1,&r41); // 85
fp r43;
fp_mul3(&r43,&r1,&r42); // 87
fp r44;
fp_mul3(&r44,&r1,&r43); // 89
fp r45;
fp_mul3(&r45,&r1,&r44); // 91
fp r46;
fp_mul3(&r46,&r1,&r45); // 93
fp r47;
fp_mul3(&r47,&r1,&r46); // 95
fp r48;
fp_mul3(&r48,&r1,&r47); // 97
fp r49;
fp_mul3(&r49,&r1,&r48); // 99
fp r50;
fp_mul3(&r50,&r1,&r49); // 101
fp r51;
fp_mul3(&r51,&r1,&r50); // 103
fp r52;
fp_mul3(&r52,&r1,&r51); // 105
fp r53;
fp_mul3(&r53,&r1,&r52); // 107
fp r54;
fp_mul3(&r54,&r1,&r53); // 109
fp r55;
fp_mul3(&r55,&r1,&r54); // 111
fp r56;
fp_mul3(&r56,&r1,&r55); // 113
fp r57;
fp_mul3(&r57,&r1,&r56); // 115
fp r58;
fp_mul3(&r58,&r1,&r57); // 117
fp r59;
fp_mul3(&r59,&r1,&r58); // 119
fp r60;
fp_mul3(&r60,&r1,&r59); // 121
fp r61;
fp_mul3(&r61,&r1,&r60); // 123
fp r62;
fp_mul3(&r62,&r1,&r61); // 125
fp_mul2(&r1,&r62); // 127
fp r63;
fp_sq2(&r63,&r33);
fp_sq1_rep(&r63,6);
fp_mul2(&r63,&r35); // 8647
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r31); // 1106879
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r11); // 141680533
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r25); // 18135108273
fp_sq1_rep(&r63,10);
fp_mul2(&r63,&r5); // 18570350871561
fp_sq1_rep(&r63,8);
fp_mul2(&r63,&r41); // 4754009823119699
fp_sq1_rep(&r63,8);
fp_mul2(&r63,&r13); // 1217026514718642969
fp_sq1_rep(&r63,9);
fp_mul2(&r63,&r37); // 623117575535945200203
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r1); // 79759049668600985626111
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r47); // 10209158357580926160142303
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r36); // 1306772269770358548498214857
fp_sq1_rep(&r63,9);
fp_mul2(&r63,&r15); // 669067402122423576831086006813
fp_sq1_rep(&r63,8);
fp_mul2(&r63,&r2); // 171281254943340435668758017744131
fp_sq1_rep(&r63,9);
fp_mul2(&r63,&r45); // 87696002530990303062404105084995163
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r45); // 11225088323966758791987725450879380955
fp_sq1_rep(&r63,9);
fp_mul2(&r63,&r41); // 5747245221870980501497715430850243049043
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r25); // 735647388399485504191707575148831110277553
fp_sq1_rep(&r63,9);
fp_mul2(&r63,&r11); // 376651462860536578146154278476201528462107157
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r15); // 48211387246148682002707747644953795643149716125
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r6); // 6171057567507031296346591698554085842323163664011
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r16); // 789895368640900005932363737414922987817364948993439
fp_sq1_rep(&r63,10);
fp_mul2(&r63,&r26); // 808852857488281606074740467112881139524981707769281587
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r34); // 103533165758500045577566779790448785859197658594468043205
fp_sq1_rep(&r63,8);
fp_mul2(&r63,&r30); // 26504490434176011667857095626354889179954600600183819060541
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r55); // 3392574775574529493485708240173425815034188876823528839749359
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r1); // 434249571273539775166170654742198504324376176233411691487918079
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r28); // 55583945123013091221269843807001408553520150557876696510453514169
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r56); // 7114744975745675676322540007296180294850579271408217153338049813745
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r43); // 910687356895446486569285120933911077740874146740251795627270376159447
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r28); // 116567981682617150280868495479540617950831890782752229840290608148409273
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r20); // 14920701655374995235951167421381199097706482020192285419557197842996386983
fp_sq1_rep(&r63,7);
fp_mul2(&r63,&r56); // 1909849811887999390201749429936793484506429698584612533703321323903537533937
fp_sq1_rep(&r63,9);
fp_mul2(&r45,&r63); // 977843103686655687783295708127638264067292005675321617256100517838611217375835
fp_sq1_rep(&r45,7);
fp_mul2(&r45,&r30); // 125163917271891928036261850640337697800613376726441167008780866283342235824106941
fp_sq1_rep(&r45,10);
fp_mul2(&r45,&r1); // 128167851286417334309132135055705802547828097767875755016991607074142449483885507711
fp_sq1_rep(&r45,10);
fp_mul2(&r45,&r17); // 131243879717291350332551306297042741808975972114304773137399405643921868271498759896097
fp_sq1_rep(&r45,8);
fp_mul2(&r45,&r26); // 33598433207626585685133134412042941903097848861262021923174247844843998277503682533400883
fp_sq1_rep(&r45,8);
fp_mul2(&r45,&r59); // 8601198901152405935394082409482993127193049308483077612332607448280063559040942728550626167
fp_sq1_rep(&r45,10);
fp_mul2(&r45,&r5); // 8807627674780063677843540387310584962245682491886671475028590027038785084457925354035841195017
fp_sq1_rep(&r45,8);
fp_mul2(&r45,&r38); // 2254752684743696301527946339151509750334894717922987897607319046921928981621228890633175345924429
fp_sq1_rep(&r45,8);
fp_mul2(&r45,&r48); // 577216687294386253191154262822786496085733047788284901787473676012013819295034596002092888556653921
fp_sq1_rep(&r45,7);
fp_mul2(&r45,&r15); // 73883735973681440408467745641316671498973830116900467428796630529537768869764428288267889735251701917
fp_sq1_rep(&r45,7);
fp_mul2(&r45,&r25); // 9457118204631224372283871442088533951868650254963259830885968707780834415329846820898289886112217845425
fp_sq1_rep(&r45,8);
fp_mul2(&r45,&r21); // 2421022260385593439304671089174664691678374465270594516706807989191893610324440786149962210844727768428841
fp_sq1_rep(&r45,7);
fp_mul2(&r45,&r13); // 309890849329355960230997899414357080534831931554636098138471422616562382121528420627195162988125154358891673
fp_sq1_rep(&r45,7);
fp_mul2(&r45,&r30); // 39666028714157562909567731125037706308458487238993420561724342094919984911555637840280980862480019757938134205
fp_sq1_rep(&r45,7);
fp_mul2(&r45,&r50); // 5077251675412168052424669584004826407482686366591157831900715788149758068679121643555965550397442529016081178341
fp_sq1_rep(&r45,8);
fp_mul2(&r45,&r43); // 1299776428905515021420715413505235560315567709847336404966583241766338065581855140750327180901745287428116781655383
fp_sq1_rep(&r45,7);
fp_mul2(&r45,&r26); // 166371382899905922741851572928670151720392666860459059835722654946091272394477458016041879155423396790798948051889075
fp_sq1_rep(&r45,9);
fp_mul2(&r45,&r58); // 85182148044751832443828005339479117680841045432555038635889999332398731465972458504213442127576779156889061402567206517
fp_sq1_rep(&r45,11);
fp_mul2(&r45,&r59); // 174453039195651752844959754935253233010362461045872719126302718632752602042311595016629129477277243713308797752457638946935
fp_sq1_rep(&r45,7);
fp_mul2(&r45,&r38); // 22329989017043424364154848631712413825326395013871708048166747984992333061415884162128528573091487195303526112314577785207757
fp_sq1_rep(&r45,11);
fp_mul2(&r45,&r61); // 45731817506904933097789129997747023514268456988409258082645499873264298109779730764039226517691365775981621478020255304105486459
fp_sq1_rep(&r45,9);
fp_mul2(&r45,&r34); // 23414690563535325746068034558846476039305449978065540138314495935111320632207222151188083977057979277302590196746370715702009067077
fp_sq1_rep(&r45,7);
fp_mul2(&r45,&r49); // 2997080392132521695496708423532348933031097597192389137704255479694249040922524435352074749063421347494731545183535451609857160585955
fp_sq1_rep(&r45,11);
fp_mul2(&r43,&r45); // 6138020643087404432377258851394250614847687879050012954018315222413822035809330043601049086081886919669210204535880604896987464880035927
fp_sq1_rep(&r43,10);
fp_mul2(&r43,&r21); // 6285333138521502138754313063827712629604032388147213264914754787751753764668753964647474264147852205741271249444741739414515164037156789289
fp_sq1_rep(&r43,7);
fp_mul2(&r8,&r43); // 804522641730752273760552072169947216589316145682843297909088612832224481877600507474876705810925082334882719928926942645057940996756069029007
fp_sq1_rep(&r8,7);
fp_mul2(&r8,&r23); // 102978898141536291041350665237753243723432466647403942132363342442524733680332864956784218343798410538864988150902648658567416447584776835712941
fp_sq1_rep(&r8,7);
fp_mul2(&r8,&r18); // 13181298962116645253292885150432415196599355730867704592942507832643165911082606714468379948006196548974718483315539028296629305290851434971256483
fp_sq1_rep(&r8,11);
fp_mul2(&r8,&r11); // 26995300274414889478743828788085586322635480536817059006346256041253203785897178551231242133516690532300223453830223929951496817235663738821133277205
fp_sq1_rep(&r8,7);
fp_mul2(&r8,&r24); // 3455398435125105853279210084874955049297341508712583552812320773280410084594838854557598993090136388134428602090268663033791592606164958569105059482287
fp_sq1_rep(&r8,7);
fp_mul2(&r8,&r50); // 442290999696013549219738890863994246310059713115210694759977058979892490828139373383372671115537457681206861067554388868325323853589114696845447613732837
fp_sq1_rep(&r8,11);
fp_mul2(&r8,&r38); // 905811967377435748802025248489460216443002292459951502868433016790819821216029436689147230444620713331111651466351388402330263252150506899139476712924850253
fp_sq1_rep(&r8,7);
fp_mul2(&r8,&r53); // 115943931824311775846659231806650907704704293434873792367159426149224937115651767896210845496911451306382291387692977715498273696275264883089853019254380832491
fp_sq1_rep(&r8,14);
fp_mul2(&r8,&r36); // 1899625379009524135471664853920168471833875143636972214143540038028901369702838565211518492621397218203767462095961746890723716239773939844544151867463775559532617
fp_sq1_rep(&r8,7);
fp_mul2(&r8,&r31); // 243152048513219089340373101301781564394736018385532443410373124867699375321963336347074367055538843930082235148283103602012635678691064300101651439035363271620175039
fp_sq1_rep(&r8,9);
fp_mul2(&r8,&r47); // 124493848838768173742271027866512160970104841413392611026111039932262080164845228209702075932435888092202104395920949044230469467489824921652045536786105995069529620063
fp_sq1_rep(&r8,10);
fp_mul2(&r1,&r8); // 127481701210898609912085532535308452833387357607314033690737704890636370088801513686734925754814349406414954901423051821292000734709580719771694629668972538951198330944639
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r42); // 32635315509990044137493896329038963925347163547472392624828852452002910742733187503804140993232473448042228454764301266250752188085652664261553825195256969971506772721827669
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r44); // 4177320385278725649599218730116987382444436934076466255978093113856372575069848000486930047133756601349405242209830562080096280074963541025478889624992892156352866908393941721
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r42); // 1069394018631353766297399994909948769905775855123575361530391837147231379217881088124654092066241689945447742005716623892504647699190666502522595743998180392026333928548849080661
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r62); // 136882434384813282086067199348473442547939309455817646275890155154845616539888779279955723784478936313017310976731727858240594905496405312322892255231767090179370742854252682324733
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r62); // 35041903202512200214033203033209201292272463220689317446627879719640477834211527495668665288826607696132431610043322331709592295807079759954660417339332375085918910170688686675131773
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r23); // 8970727219843123254792499976501555530821750584496465266336737208227962325558151038891178313939611570209902492171090516917655627726612418548393066838869088021995241003696303788833733933
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r44); // 1148253084139919776613439996992199107945184074815547554091102362653179177671443332978070824184270280986867518997899586165459920349006389574194312555375243266815390848473126884970717943513
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r7); // 146976394769909731406520319615001485816983561576390086923661102419606934741944746621193065495586595966319042431731147029178869804672817865496872007088031138152370028604560241276251896769677
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r29); // 18812978530548445620034600910720190184573895881777931126228621109709687646968927567512712383435084283688837431261586819734895334998120686783599616907267985683503363661383710883360242786518715
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r59); // 4816122503820402078728857833144368687250917345735150368314527004085680037624045457283254370159381576624342382402966225852133205759518895816601501928260604334976861097314229986140222153348791159
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r7); // 616463680489011466077293802642479191968117420254099247144259456522967044815877818532256559380400841807915824947579676909073050337218418664524992246817357354877038220456221438225948435628645268365
fp_sq1_rep(&r1,12);
fp_mul2(&r1,&r5); // 2525035235282990965052595415623594770301408953360790516302886733918073015565835544708122867222121848045223218985286356619563214181246642849894368242963895725576348550988683010973484792334931019223049
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r24); // 646409020232445687053464426399640261197160692060362372173539003883026691984853899445279454008863193099577144060233307294608182830399140569572958270198757305747545229053102850809212106837742340921100591
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r10); // 82740354589753047942843446579153953433236568583726383638212992497027416574061299128995770113134488716745874439709863333709847402291089992905338658585440935135685789318797164903579149675231019637900875667
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r13); // 10590765387488390136683961162131706039454280778716977105691263039619509321479846288511458574481214555743471928282862506714860467493259519091883348298936439697367781032806037107658131158429570513651312085401
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r46); // 1355617969598513937495547028752858373050147939675773069528481669071297193149420324929466697533595463135164406820206400859502139839137218443761068582263864281263075972199172749780240788278985025747367946931421
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r36); // 347038200217219567998860039360731743500837872556997905799291307282252081446251603181943474568600438562602088145972838620032547798819127921602833557059549256003347448882988223943741641799420166591326194414443849
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r20); // 44420889627804104703854085038173663168107247687295731942309287332128266425120205207288764744780856136013067282684523343364166118248848373965162695303622304768428473457022492664798930150325781323689752885048812711
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r20); // 11371747744717850804186645769772457771035455407947707377231177557024836204830772533065923774663899170819345224367237975901226526271705183735081649997727310020717689204997758122188526118483400018864576738572496054055
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r51); // 1455583711323884902935890658530874594692538292217306544285590727299179034218338884232438243156979093864876188719006460915356995362778263518090451199709095682651864218239713039640131343165875202414665822537279494919143
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r58); // 745258860197829070303176017167807792482579605615260950674222452377179665519789508727008380496373296058816608624131307988662781625742470921262311014251056989517754479738733076295747247700928103636308901139087101398601333
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r30); // 95393134105322120998806530197479397437770189518753401686300473904278997186533057117057072703535781895528525903888807422548836048095036277921575809824135294658272573406557833765855647705718797265447539345803148979020970685
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r24); // 48841284661924925951388943461109451488138337033601741663385842638990846559504925243933221224210320330510605262791069400345004056624658574295846814629957270865035557584157610888118091625328024199909140145051212277258736990767
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r49); // 6251684436726390521777784763022009790481707140301022932913387857790828359616630431223452316698921002305357473637256883244160519247956297509868392272634530670724551370772174193679115728041987097588369938566555171489118334818275
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r42); // 800215607900977986787556449666817253181658513958530935412913645797226030030928695196601896537461888295085756625568881055252546463738406081263154210897219925852742575458838296790926813189374348491311352136519061950607146856739285
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r18); // 204855195622650364617614451114705216814504579573383919465705893324089863687917745970330085513590243403541953696145633550144651894717031956803367477989688301018302099317462603978477264176479833213775706146948879859355429595325256995
fp_sq1_rep(&r1,11);
fp_mul2(&r1,&r19); // 419543440635187946736874395882916284036105378966290267065765669527736040832855543747236015131832818490453921169706257510696247080380481447533296594922881640485482699402163412947921437033430698421812646188951305951959919811226126325797
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r53); // 107403120802608114364639845346026568713242977015370308368836011399100426453211019199292419873749201533556203819444801922738239252577403250568523928300257699964283571046953833714667887880558258795984037424371534323701739471673888339404139
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r9); // 13747599462733838638673900204291400795295101057967399471211009459084854586011010457509429743839897796295194088888934646110494624329907616072771062822432985595428297094010090715477489648711457125885956790319556393433822652374257707443729809
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r21); // 1759692731229931345750259226149299301797772935419827132315009210762861387009409338561207007211506917925784843377783634702143311914228174857314696041271422156214822028033291611581118675035066512113402469160903218359529299503904986552797415593
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r60); // 225240669597431212256033180947110310630114935733737872936321178977646257537204395335834496923072885494500459952356305241874343925021206381736281093282742035995497219588261326282383190404488513550515516052595611950019750336499838278758069196025
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r57); // 28830805708471195168772247161230119760654711773918447735849110909138720964762162602986815606153329343296058873901607070959916022402714416862243979940190980607423644107297449764145048371774529734465986054732238329602528043071979299681032857091315
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r34); // 3690343130684312981602847636637455329363803107061561310188686196369756283489556813182312397587626155941895535859405705082869250867547445358367229432344445517750226445734073569810566191587139806011646215005726506189123589513213350359172205707688389
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r48); // 944727841455184123290328994979188564317133595407759695408303666270657608573326544174671973782432295921125257180007860501214528222092146011742010734680178052544057970107922833871504945046307790338981431041465985584415638915382617691948084661168227681
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r33); // 120925163706263567781162111357336136232593100212193241012262869282644173897385797654358012644151333877904032919041006144155459612427794689502977374039062790725639420173814122735552632965927397163389623173307646154805201781168975064569354836629533143235
fp_sq1_rep(&r1,11);
fp_mul2(&r1,&r52); // 247654735270427786815820004059824407004350669234571757593114356290855268141846113596125209895221931781947459418195980583230381286252123524102097662032000595406109532515971323362411792314219309390621948258934059325041053247834060932238038705417283877345385
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r29); // 31699806114614756712424960519657524096556885662025184971918637605229474322156302540304026866588407268089274805529085514653488804640271811085068500740096076211982020162044329390388709416220071601999609377143559593605254815722759799326468954293412336300209339
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r31); // 4057575182670688859190394946516163084359281364739223676405585613469372713236006725158915438923316130315427175107722945875646566993954791818888768094732297755133698580741674161969754805276169165055950000274375627981472616412513254313788026149556779046426795455
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r50); // 519369623381848173976370553154068874797988014686620630579914958524079707294208860820341176182184464680374678413788537072082760575226213352817762316125734112657113418334934292732128615075349653127161600035120080381628494900801696552164867347143267717942629818341
fp_sq1_rep(&r1,13);
fp_mul2(&r1,&r26); // 4254675954744100241214427571438132222345117816312796205710663340229260962154158987840234915284455134661629365565755695694501974632253139786283108893702013850887073122999781726061597614697264358417707827487703698486300630227367498155334593307797649145386023471849523
fp_sq1_rep(&r1,10);
fp_mul2(&r1,&r49); // 4356788177657958647003573833152647395681400643904303314647719260394763225245858803548400553251282057893508470339333832391170022023427215141153903507150862183308362877951776487487075957449998703019732815347408587249971845352824318111062623547184792724875288035173911651
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r9); // 557668886740218706816457450643538866647219282419750824274908065330529692831469926854195270816164103410369084203434730546069762818998683538067699648915310359463470448377827390398345722553599833986525800364468299167996396205161512718216015814039653468784036868502260691345
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r61); // 71381617502747994472506553682372974930844068149728105507188232362307800682428150637336994664469005236527242778039645509896929640831831492872665555061159726011324217392361905970988252486860778750275302446651942293503538714260673627931650024197075644004356719168289368492283
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r5); // 18273694080703486584961677742687481582296081446330395009840187484750796974701606563158270634104065340550974151178149250533613988052948862175402382095656889858898999652444647928572992636636359360070477426342897227136905910850732448750502406194451364865115320107082078334024457
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r56); // 2339032842330046282875094751063997642533898425130290561259543998048102012761805640084258641165320363590524691350803104068302590470777454358451504908244081901939071955512914934857343057489453998089021110571890845073523956588893753440064307992889774702734760973706506026755130609
fp_sq1_rep(&r1,12);
fp_mul2(&r1,&r22); // 9580678522183869574656388100358134343818847949333670138919092216005025844272355901785123394213152209266789135772889514263767410568304453052217364104167759470342438729780899573175677163476803576172630468902464901421154126188108814090503405538876517182401580948301848685589014974507
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r47); // 2452653701679070611112035353691682392017625075029419555563287607297286616133723110856991588918566965572298018757859715651524457105485939981367645210666946424407664314823910290732973353850061715500193400039031014763815456304155856407168871817952388398694804722765273263510787833473887
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r55); // 313939673814921038222340525272535346178256009603765703112100813734052686865116558189694923381576571593254146401006043603395130509502200317615058586965369142324181032297460517213820589292807899584024755204995969889768378406931949620117615592697905715032935004513954977729380842684657647
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r6); // 40184278248309892892459587234884524310816769229282009998348904157958743918734919448280950192841801163936530739328773581234576705216281640654727499131567250217495172134074946203369035429479411146755168666239484145890352436087289551375054795865331931524215680577786237149360747863636178827
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r42); // 5143587615783666290234827166065219111784546461348097279788659732218719221598069689379961624683750548983875934634083018398025818267684050003805119888840608027839382033161593114031236534973364626784661589278653970673965111819173062576007013870762487235099607113956638355118175726545430889941
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r49); // 658379214820309285150057877256348046308421947052556451812948445723996060364552920240635087959520070269936119633162626354947304738263558400487055345771597827563440900244683918595998276476590672228436683427667708246267534312854152009728897775457598366092749710586449709455126492997815153912547
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r53); // 337090157987998353996829633155250199709912036890908903328229604210685982906651095163205165035274275978207293252179264693733020025990941901049372337035058087712481740925278166321151117556014424180959581914965866622088977568181325828981195661034290363439487851820262251241024764414881358803224171
fp_sq1_rep(&r1,11);
fp_mul2(&r1,&r54); // 690360643559420628985507088701952409005899851552581434016214229423484892992821442894244177992241717203368536580463134092765225013229449013349114546247798963635162605414969684625717488754717540722605223761850094842038226059635355297753488713798226664324071120527897090541618717521677022829003102317
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r5); // 88366162375605840510144907353849908352755180998730423554075421366206066303081144690463254783006939802031172682299281163873948801693369473708686661919718267345300813493116119632091838560603845212493468641516812139780892935633325478112446555366173013033481103427570827589327195842774658922112397096585
fp_sq1_rep(&r1,10);
fp_mul2(&r1,&r9); // 90486950272620380682388385130342306153221305342699953719373231478995011894355092163034372897799106357279920826674463911806923572934010341077695141805791505761588033016950906503262042686058337497593311888913215631135634366088525289587145272694961165346284649909832527451471048543001250736243094626903057
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r17); // 11582329634895408727345713296683815187612327083865594076079773629311361522477451796868399730918285613731829865814331380711286217335553323657944978151141312737483268226169716032417541463815467199691943921780891600785361198859331237067154594904955029164324435188458563513788294213504160094239116112243591329
fp_sq1_rep(&r1,13);
fp_mul2(&r1,&r24); // 94882444369063188294416083326433814016920183471026946671245505571318673592135285119945930595682595747691150260751002670786856692412852827405885261014149633945462933308782313737564499671576307299876404607229063993633678941055641494054130441461391598914145773063852552304953706197026079492006839191499500167215
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r48); // 48579811516960352406741034663134112776663133937165796695677698852515160879173265981412316464989489022817868933504513367442870626515380647631813253639244612580077021854096544633633023831847069337536719158901280764740443617820488444955714786028232498644042635808692506780136297572877352699907501666047744085614177
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r20); // 24872863496683700432251409747524665741651524575828887908186981812487762370136712182483106030074618379682748893954310844130749760775874891587488385863293241640999435189297430852420108201905699500818800209357455751547107132324090083817325970446455039305749829534050563471429784357313204582352640853016444971834458663
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r12); // 3183726527575513655328180447683157214931395145706097652247933671998433583377499159357837571849551152599391858426151788048735969379311986123198513390501534930047927704230071149109773849843929536104806426797754336198029712937483530728617724217146245031135978180358472124343012397736090186541138029186104956394810708887
fp_sq1_rep(&r1,13);
fp_mul2(&r1,&r38); // 26081087713898607864448454227420423904717989033624351967215072641011167915028473113459405388591523042094218104227035447695245061155323790321242221694988574146952623753052742853507267377921470759770574248327203522134259408383865083728836396786862039295065933253496603642617957562254050808145002735092571802786289327202381
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r53); // 3338379227379021806649402141109814259803902596303917051803529298049429493123644558522803889739714949388059917341060537304991367827881445161119004376958537490809935840390751085248930224373948257250633503785882050833185204273134730717291058788718341029768439456447565266255098567968518503442560350091849190756645033881904875
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r53); // 427312541104514791251123474062056225254899532326901382630851750150326975119826503490918897886683513521671669419655748775038895081968824980623232560250692798823671787570016138911863068719865376928081088484592902506647706146961245531813255524955947651810360250425288354080652616699970368440647724811756696416850564336883824107
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r61); // 218784021045511573120575218719772787330508560551373507906996096076967411261351169787350475717981958923095894742863743372819914281968038390079095070848354712997719955235848263122873891184571072987177517304111566083403625547244157712288386828777445197726904448217747637289294139750384828641611635103619428565427488940484517942907
fp_sq1_rep(&r1,13);
fp_mul2(&r1,&r54); // 1792278700404830807003752191752378673811526128036851776774112019062517033052988782897975097081708207498001569733539785710140737797882170491527946820389721808877321873292068971502582916584006229910958221755281949355242500483024139979066464901344831059778801239799788644673897592835152516232082514768850358807981989400449170988294253
fp_sq1_rep(&r1,10);
fp_mul2(&r1,&r24); // 1835293389214546746371842244354435761983002755109736219416690707520017441846260513687526499411669204477953607407144740567184115505031342583324617544079075132290377598251078626818644906582022379428821219077408716139768320494616719338564060058977107005213492469554983572146071135063196176621652495123302767419373557146059951092013315119
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r2); // 234917553819461983535595807277367777533824352654046236085336410562562232556321345752003391924693658173178061748114526792599566784644011850665551045642121616933168332576138064232786548042498864566889116041908315665890345023310940075336199687549069696667327036103037897234697105288089110607571519375782754229679815314695673739777704335235
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r51); // 60138893777782267785112526663006151048659034279435836437846121104015931534418264512512868332721576492333583807517318858905489096868867033770381067684383133934891093139491344443593356298879709329123613706728528810467928325967600659286067120012561842346835721242377701692082458953750812315538308960200385082798032720562092477383092309820263
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r10); // 7697778403556130276494403412864787334228356387767787064044303501314039236405537857601647146588361791018698727362216813939902604399214980322608776663601041143666059921854892088779949606256602794127822554461251687739894825723852884388616591361607915820394972319024345816586554746080103976388903546905649290598148188231947837105035815656993683
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r44); // 985315635655184675391283636846692778781229617634276744197670848168197022259908845773010834763310309250393437102363752184307533363099517481293923412940933266389255669997426187363833549600845157648361286971040216030706537692653169201742923694285813225010556456835116264523079007498253308977779654003923109196562968093689323149444584404095191513
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r58); // 126120401363863638450084305516376675683997391057187423257301868565529218849268332258945386849703719584050359949102560279591364270476738237605622196856439458097824725759670551982570694348908180178990244732293147651930436824659605657823094232868584092801351226474894881858954112959776423549155795712502157977160059915992233363128906803724184513781
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r59); // 32286822749149091443221582212192428975103332110639980353869278352775480025412693058290019033524152213516892146970255431575389253242044988827039282395248501273043129794475661307538097753320494125821502651467045798894191827112859048402712123614357527757145913977573089755892252917702764428583883702400552442152975338494011740961000141753391235528055
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r18); // 16530853247564334818929450092642523635252906040647669941181070516621045773011298845844489745164365933320648779248770780966599297659927034279444112586367232651798082454771538589459506049700092992420609357551127449033826215481783832782188607290551054211658707956517421955016833493863815387434948455629082850382323373308934011372032072577736312590364195
fp_sq1_rep(&r1,10);
fp_mul2(&r1,&r52); // 16927593725505878854583756894865944202498975785623214019769416209019950871563570018144757499048310715720344349950741279709797680803765283102150771288440046235441236433686055515606534194892895224238703982132354507810638044653346644768961133865524279512738516947473840081937237497716546956733387218564180838791499134268348427644960842319601984092532935785
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r14); // 4333463993729504986773441765085681715839737801119542789060970549509107423120273924645057919756367543224408153587389767605708206285763912474150597449840651836272956527023630211995272753892581177405108219425882753999523339431256741060854050269574215555261060338553303060975932799415436020923747127952430294730623778372697197477109975633818107927688431560987
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r23); // 1109366782394753276614001091861934519254972877086602953999608460674331500318790124709134827457630091065448487318371780507061300809155561593382552947159206870085876870918049334270789824996500781415707704173025985023877974894401725711578636869010999182146831446669645583609838796650351621356479264755822155451039687263410482554140153762257435629488238479612717
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r34); // 283997896293056838813184279516655236929273056534170356223899765932628864081610271925538515829153303312754812753503175809807693007143823767905933554472756958741984478955020629573322195199104200042421172268294652166112761572966841782164131038466815790629588850347429269404118731942490015067258691777490471795466159939433083533859879363137903521148989050780855621
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r42); // 145406922902045101472350351112527481307787804945495222386636680157505978409784459225875720104526491296130464129793626014621538819657637769167837979890051562875896053224970562341540963941941350421719640201366861909049733925359022992468035091695009684802349491377883785934908790754554887714436450190075121559278673888989738769336258233926606602828282393999798078037
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r22); // 74448344525847091953843379769614070429587356132093553861957980240643060945809643123648368693517563543618797634454336519486227875664710537813933045703706400192458779251184927918868973538273971415920455783099833297433463769783819772143633966947844958618802939585476498398673300866332102509791462497318462238350681031162746249900164215770422580648080585727896615954987
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r16); // 19058776198616855540183905221021202029974363169815949788661242941604623602127268639653982385540496267166412194420310148988474336170165897680366859700148838449269447488303341547230457225798136682475636680473557324142966725064657861668770295538648309406413552533881983590060365021781018242506614399313526333017774343977663039974442039237228180645908629946341533684476703
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r10); // 4879046706845915018287079736581427719673436971472883145897278193050783642144580771751419490698367044394601521771599398141049430059562469806173916083238102643012978557005655436090997049804322990713762990201230674980599481616552412587205195657893967208041869448673787799055453445575940670081693286224262741252550232058281738233457162044730414245352609266263432623226035987
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r23); // 1249035956952554244681492412564845496236399864697058085349703217421000612389012677568363389618781963365017989573529445924108654095247992270380522517308954276611322510593447791639295244749906685622723325491515052795033467293837417622324530088420855605258718578860489676558196082067440811540913481273411261760652859406920124987765033483450986046810267972163438751545865212717
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r2); // 159876602489926943319231028808300223518259182681223434924762011829888078385793622728750513871204091310722302665411769078285907724191743010608706882215546147406249281355961317329829791327988055759708585662913926757764283813611189455657539851317869517473115978094142678599449098504632423877236925602996641505363566004085775998433924285881726213991714300436920160197870747227779
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r13); // 20464205118710648744861571687462428610337175383196599670369537514225674033381583709280065775514123687772454741172706442020596188696543105357914480923589906867999908013563048618218213289982471137242698964852982624993828328142232250324165100968687298236558845196050262860729484608592950256286326477183570112686536448522979327799542308592860955390939430455925780505327455645155737
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r37); // 2619418255194963039342281175995190862123158449049164757807300801820886276272842714787848419265807832034874206870106424578636312153157517485813053558219508079103988225736070223131931301117756305567065467501181775999210026002205728041493132923991974174279532185094433646173374029899897632804649789079496974423876665410941353958341415499886202290040247098358499904681914322579934411
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r30); // 335285536664955269035811990527384430351764281478293088999334502633073443362923867492844597666023402500463898479373622346065447955604162238184070855452097034125310492894216988560887206543072807112584379840151267327898883328282333189311121014270972694307780119692087506710191875827186896998995173002175612726256213172600493306667701183985433893125151628589887987799285033290231604669
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r24); // 171666194772457097746335739150020828340103312116886061567659265348133603001817020156336434005003982080237516021439294641185509353269331065950244277991473681472158972361839098143174249750053277241643202478157448871884228264080554592927293959306738019485583421282348803435618240423519691263485528577113913715843181144371452573013863006200542153280077633838022649753233937044598581590575
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r15); // 21973272930874508511530974611202666027533223950961415880660385964561101184232578580011063552640509706270402050744229714071745197218474376441631267582908631228436348462315404562326303968006819486930329917204153455601181217802310987894693626791262466494154677924140646839759134774210520481726147657870580955627927186479545929345774464793669395619849937131266899168413943941708618443593629
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r38); // 5625157870303874178951929500467882503048505331446122465449058806927641903163540116482832269475970484805222924990522806802366770487929440369057604501224609594479705206352743567955533815809745788654164458804263284633902391757391612901041568458563191422503597548580005590978338502197893243321893800414868724640749359738763757912518262987179365278681583905604326187113969649077406321559969101
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r55); // 720020207398895894905846976059888960390208682425103675577479527286738163604933134909802530492924222055068534398786919270702946622454968367239373376156750028093402266413151176698308328423647460947733050726945700433139506144946126451333320762696088502080460486218240715645227328281330335145202406453103196754015918046561761012802337662358958755671242739917353751950588115081908009159676045039
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r42); // 92162586547058674547948412935665786929946711350413270473917379492702484941431441268454723903094300423048772403044725666649977167674235951006639792148064003595955490100883350617383466038226875001309830493049049655441856786553104185770665057625099328266298942235934811602589098020010282898585908025997209184514037509959905409638699220781946720725919070709421280249675278730484225172438533765077
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r62); // 47187244312094041368549587423060882908132716211411594482645698300263672290012897929448818638384281816600971470358899541324788309849208806915399573579808769841129210931652275516100334611572160000670633212441113423586230674715189343114580509504050856072345058424798623540525618186245264844075984909310571102471187205099471569735014001040356721011670564203223695487833742710007923288288529287719549
fp_sq1_rep(&r1,10);
fp_mul2(&r1,&r22); // 48319738175584298361394777521214344097927901400485472750229195059470000424973207479755590285705504580199394785647513130316583229285589818281369163345724180317316311994011930128486742642249891840686728409539700145752300210908353887349330441732148076618081339826993790505498233022715151200333808547134024808930495698021858887408654337065325282315950657744101064179541752535048113447207453990624818219
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r26); // 6184926486474790190258531522715436044534771379262140512029336967612160054396570557408715556570304586265522532562881680680522653348555496740015252908252695080616487935233527056446303058207986155607901236421081618656294426996269297580714296541714953807114411497855205184703773826907539353642727494033155175543103449346797937588307755144361636136441684191244936214981344324486158521242554110799976732083
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r38); // 3166682361075092577412368139630303254801802946182215942159020527417425947851044125393262364963995948167947536672195420508427598514460414330887809489025379881275641822839565852900507165802488911671245433047593788752022746622089880361325719829358056349242578686901865054568332199376660149065076476944975449878068966065560544045213570633913157701858142305917407342070448294136913162876187704729588086826573
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r28); // 1621341368870447399635132487490715266458523108445294562385418510037722085299734592201350330861565925461989138776164055300314930439403732137414558458380994499213128613293857716685059668890874322775677661720368019841035646270510018744998768552631324850812200287693754907938986086080849996321319156195827430337571310625566998551149348164563536743351368860629712559140069526598099539392608104821549100455205433
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r60); // 415063390430834534306593916797623108213381915761995407970667138569656853836732055603545684700560876918269219526697998156880622192487355427178126965345534591798560925003227575471375275236063826630573481400414213079305125445250564798719684749473619161807923273649601256432380438036697599058257703986131822166418255520145151629094233130128265406297950428321206415139857798809113482084507674834316569716532590969
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r26); // 53128113975146820391244021350095757851312885217535412220245393736916077291101703117253847641671792245538460099417343764080719640638381494678800251564228427750215798400413129660336035230216169808713405619253019274151056056992072294236119647932623252711414179027148960823344696068697292679456986110224873237301536706578579408524061840656417972006137654825114421137901798247566525706816982378792520923716171644083
fp_sq1_rep(&r1,10);
fp_mul2(&r1,&r32); // 54403188710550344080633877862498056039744394462756262113531283186602063146088143992067939985071915259431383141803360014418656912013702650551091457601769910016220977562023044772184100075741357884122527354115091736730681402359882029297786519483006210776488119323800535883104968774346027703763953776870270194996773587536465314328639324832172003334284958540917167245211441405508122323780589955883541425885359763541057
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r51); // 13927216309900888084642272732799502346174564982465603101064008495770128165398564861969392636178410306414434084301660163691176169475507878541079413146053096964152570255877899461679129619389787618335367002653463484603054439004129799500233348987649589958780958546892937186074872006232583092163572166878789169919174038409335120468131667157036032853576949386474794814774128999810079314887831028706186605026652099466510695
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r23); // 1782683687667313674834210909798336300310344317755597196936193087458576405171016302332082257430836519221047562790612500952470549692865008453258164882694796411411528992752371131094928591281892815146926976339643326029190968192528614336029868670419147514723962694002295959817583616797770635796937237360485013749654276916394895419920853396100612205257849521468773736291088511975690152305642371674391885443411468731713369005
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r34); // 228183512021416150378778996454187046439724072672716441207832715194697779861890086698506528951147074460294088037198400121916230360686721082017045104984933940660675711072303504780150859684082280338806652971474345731736443928643662635011823189813650881884667224832293882856650702950114641382007966382142081759955747445298546613749869234700878362273004738748003038245259329532888339495122223574322161336756667997659311232709
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r12); // 29207489538741267248483711546135941944284681302107704474602587544921315822321931097408835705746825530917643268761395215605277486167900298498181773438071544404566491017254848611859310039562531883367251580348716253662264822866388817281513368296147312881237404778533617005651289977614674096897019696914186465274335672998213966559983262041712430370944606559744388895393194180209707455375644617513236651104853503700391837786775
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r40); // 7477117321917764415611830155810801137736878413339572345498262411499856850514414360936661940671187335914916676802917175194951036458982476415534534000146315367569021700417241244635983370128008162142016404569271360937539794653795537224067422283813712097596775623304605953446730234269356568805637042410031735110229932287542775439355715082678382174961819279294563557220657710133685108576165022083388582682842496947300310473414481
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r49); // 1914142034410947690396628519887565091260640873814930520447555177343963353731690076399785456811823957994218669261546796849907465333499513962376840704037456734097669555306813758626811742752770089508356199569733468400010187431371657529361260104656310296984774559565979124082362939972955281614243082856968124188218862665610950512475063061165665836790225735499408270648488373794223387795498245653347477166807679218508879481194107235
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r40); // 245010180404601304370768450545608331681362031848311106617287062700027309277656329779172538471913466623259989665477989996788155562687937787184235610116794461964501703079272161104231903072354571457069593544925883955201303991215572163758241293396007718014051143624445327882542456316538276046623114605691919896092014421198201665596808071829205227109148894143924258643006511845660593637823775443628477077351382939969136573592845726161
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r21); // 62722606183577933918916723339675732910428680153167643294025488051206991175080020423468169848809847455554557354362365439177767824048112073519164316189899382262912435988293673242683367186522770293009815947501026292531533821751186473922109771109377975811597092767858003937930868817033798667935517339057131493399555691826739626392782866388276538139942116900844610212609667032489111971282886513568890131801954032632098962839768505897257
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r12); // 8028493591497975541621340587478493812534871059605458341635262470554494870410242614203925740647660474310983341358382776214754281478158345410453032472307120929652791806501590175063470999874914597505256441280131365444036329184151868662030050702000380903884427874285824504055151208580326229495746219399312831155143128553822672178276206897699396881912590963308110107214037380158606332324209473736817936870650116176908667243490368754848919
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r59); // 1027647179711740869327531595197247208004463495629498667729313596230975343412511054618102494802900540711805867693872995355488548029204268212537988156455311478995557351232203542408124287983989068480672824483856814776836650135571439188739846489856048755697206767908585536519059354698281757375455516083112042387858320454889302038819354482905522800884811643303438093723396784660301610537498812638312695919443214870644309407166767200620661751
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r38); // 131538839003102831273924044185247642624571327440575829469352140317564843956801414991117119334771269211111151064815743405502534147738146331204862484026279869311431340957722053428239908861950600765526121533933672291435091217353144216158700350701574240729242466292298948674439597401380064944058306058638341425645865018225830660968877373811906918513255890342840075996594788436518606148799848017704025077688731503442471604117346201679444704205
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r27); // 16836971392397162403062277655711698255945129912393706172077073960648300026470581118862991274850722459022227336296415155904324370910482730394222397955363823271863211642588422838814708334329676897987343556343510053303691675821202459668313644889801502813343035685414265430328268467376648312839463175505707702482670722332906324604016303847924085569696753963883529727564132919874381587046380546266115209944157632440636365327020313814968922138295
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r59); // 4310264676453673575183943079862194753521953257572788780051730933925964806776468766428925766361784949509690198091882279911507038953083578980920933876573138757596982180502636246736565333588397285884759950423938573645745069010227829675088293091789184720215817135466051950164036727648421968086902572929461171835563704917224019098628173785068565905842369014754183610256418027487841686283873419844125493745704353904802909523717200336632044067403639
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r19); // 1103427757172140435247089428444721856901620033938633927693243119085046990534776004205804996188616947074480690711521863657345801971989396219115759072402723521944827438208674879164560725398629705186498547308528274853310737666618324396822603031498031288375249186679309299241993402277996023830247058669942059989904308458809348889248812488977552871895646467777071004225643015036887471688671595480096126398900314599629544838071603286177803281255331621
fp_sq1_rep(&r1,10);
fp_mul2(&r1,&r17); // 1129910023344271805693019574727395181467258914753161141957880953943088118307610628306744316097143753804268227288598388385122101219317141728374537290140388886471503296725683076264510182808196818110974512443932953449790195370617164182346345504253984039296255167159612722423801243932667928402172988078020669429662011861820773262590783988713014140821141983003720708327058447397772771009199713771618433432473922150020653914185321765046070560005459579937
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r46); // 289256965976133582257413011130213166455618282176809252341217524209430558286748320846526544920868800973892666185881187426591257912145188282463881546275939554936704843961774867523714606798898385436409475185646836083146290014877994030680664449089019914059841322792860856940493118446762989670956284947973291373993475036626117955223240701110531620050212347648952501331726962533829829378355126725534318958713324070405287402031442371851794063361397652463965
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r60); // 37024891644945098528948865424667285306319140118631584299675843098807111460703785068355397749871206524658261271792791990603681012754584100155376837923320263031898220027107183043035469670258993335860412823762795018642725121904383235927125049483394548999659689317486189688383119161185662677882404473340581295871164804688143098268574809742148047366427180499065920170461051204330218160429456220868392826715305481011876787460024623597029640110258899515387641
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r54); // 18956744522211890446821819097429650076835399740739371161434031666589241067880337954997963647934057740625029771157909499189084678530347059279552941016739974672331888653878877718034160471172604587960531365766551049545075262415044216794688025335498009087825760930552929120452157010527059291075791090350377623486036380000329266313510302587979800251610716415521751127276058216617071698139881585084617127278236406278080915179532607281679175736452556551878472301
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r53); // 2426463298843121977193192844470995209834931166814639508663556053323422856688683258239739346935559390800003810708212415896202838851884423587782776450142716758058481747696496347908372540310093387258948014818118534341769633589125659749720067242943745163241697399110774927417876097347463589257701259564848335806212656640042146088129318731261414432206171701186784144291335451726985177361904842890830992291614260003594357142980173732054934494265927238640444454635
fp_sq1_rep(&r1,9);
fp_mul2(&r1,&r49); // 1242349209007678452322914736369149547435484757409095428435740699301592502624605828218746545631006408089601951082604756938855853492164824876944781542473070980125942654820606130129086740638767814276581383586876689582986052397632337791856674428387197523579749068344716762837952561841901357699943044897202347932780880199701578797122211190405844189289559911007633481877163751284216410809295279560105468053306501121840310857205848950812126461064154746183907560773219
fp_sq1_rep(&r1,8);
fp_mul2(&r1,&r24); // 318041397505965683794666172510502284143484097896728429679549619021207680671899092023999115681537640470938099477146817776347098493994195168497864074873106170912241319634075169313046205603524560454804834198240432533244429413793878474715308653667122566036415761496247491286515855831526747571185419493683801070791905331123604172063286064743896112458127337217954171360553920328759401167179591567386999821646464287191119579444697331407904374032423615023080335557944111
fp_sq1_rep(&r1,7);
fp_mul2(&r1,&r9); // 40709298880763607525717270081344292370365964530781238998982351234714583126003083779071886807236817980280076733074792675372428607231256981567726601583757589876766888913161621672069914317251143738215018777374775364255286964965616444763559507669391688452661217471519678884674029546435423689111733695191526537061363882383821334024100616287218702394640299163898133934150901802081203349398987720625535977170747428760463306168921258420211759876150222722954282951416846225
fp_sq1_rep(&r1,7);
fp_mul2(&r0,&r1); // 5210790256737741763291810570412069423406843459939998591869740958043466640128394723721201511326312701475849821833573462447670861725600893640669005002720971504226161780884687574024949032608146398491522403503971246624676731515598904929735616981682136121940635836354518897238275781943734232206301912984515396743854576945129130755084878884763993906513958292978961143571315430666394028723070428240068605077855670881339303189621921077787105264147228508538148217781356316801
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r5); // 1333962305724861891402703506025489772392151925744639639518653685259127459872869049272627586899536051577817554389394806386603740601753828772011265280696568705081897415906480018950386952347685478013829735297016639135917243267993319662012317947310626847216802774106756837692998600177595963444813289724035941566426771697953057473301728994499582440067573323002614052754256750250596871353106029629457562899931051745622861616543211795913498947621690498185765943752027217101065
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r48); // 170747175132782322099546048771262690866195446495313873858387671713168314863727238306896331123140614601960646961842535217485278797024490082817441955929160794250482869236029442425649529900503741185770206118018129809397407138303144916737576697255760236443750755085664875224703820822732283320936101084676600520502626777337991356582621311295946552328649385344334598752544864032076399533197571792570568051191174623439726286917531109876927865295576383767778040800259483788936417
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r41); // 21855638416996137228741894242721624430873017151400175853873621979285544302557086503282730383761998669050962811115844507838115686019134730600632570358932581664061807262211768630483139827264478871778586383106320615602868113702802549342409817248737310264800096650965104028762089065309732265079820938838604866624336227499262893642575527845881158698067121324074828640325742596105779140249289189449032710552470351800284964725443982064246766757833777122275589222433213924983861459
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r39); // 2797521717375505565278962463068367927151746195379222509295823613348549670727307072420189489121535829638523239822828097003278807810449245516880969005943370452999911329563106384701841897889853295587659057037609038797167118553958726315828456607838375713894412371323533315681547400359645729930217080171341422927915037119905650386249667564272788313352591529481578065961695052301539729951909016249476186950716205030436475484856829704223586145002723471651275420471451382397934266831
fp_sq1_rep(&r0,9);
fp_mul2(&r0,&r29); // 1432331119296258849422828781091004378701694052034161924759461690034457431412381221079137018430226344774923898789287985665678749598950013704643056131043005671935954600736310468967343051719604887340881437203255827864149564699626867873704169783213248365513939134117649057628952268984138613724271145047726808539092499005391692997759829792907667616436526863094567969772387866778388341735377416319731807718766696975583475448246696808562476106241394417485453015281383107787742344617531
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r50); // 366676766539842265452244167959297120947633677320745452738422192648821102441569592596259076718137944262380518090057724330413759897331203508388622369547009452015604377788495480055639821240218851159265647924033491933222288563104478175668267464502591581571568418334118158753011780859939485113413413132218062986007679745380273407426516426984362909807750876952209400261731293895267415484256618577851342776004274425749369714751154382991993883197796970876275971912034075593662040222088037
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r36); // 46934626117099809977887253498790031481297110697055417950518040659049101112520907852321161819921656865584706315527388714292961266858394049073743663302017209857997360356927421447121897118748012948386002934276286967452452936077373206485538235456331722441160757546767124320385507950072254094516916880923912062208983007408674996150594102653998452455392112249882803233501605618594229181984847177964971875328547126495919323488147761022975217049318012272163324404740361675988741148427268809
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r9); // 12015264285977551354339136895690248059212060338446186995332618408716569884805352410194217425899944157589684816775011510858998084315748876562878377805316405723647324251373419890463205662399491314786816751174729463667827951635807540860297788276820920944937153931972383826018690035218497048196330721516521487925499649896620799014552090279423603828580380735969997627776411038360122670588120877559032800084108064382955346812965826821881655564625411141673811047613532589053117733997380815121
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r11); // 3075907657210253146710819045296703503158287446642223870805150312631441890510170217009719661030385704342959313094402946779903509584831712400096864718160999865253715008351595491958580649574269776585425088300730742698963955618766730460236233798866155761903911406584930259460784649015935244338260664708229500908927910373534924547725335111532442580116577468408319392710761225820191403670558944655112396821531664482036568784119251666401703824544105252268495628189064342797598139903329488670997
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r15); // 393716180122912402778984837797978048404260793170204655463059240016824561985301787777244116611889370155898792076083577187827649226858459187212398683924607982752475521069004222970698323145506531402934411302493535065467386319202141498910237926254867937523700660042871073210980435074039711275297365082653376116342772527812470342108842894276152650254921915956264882266977436904984499669831544915854386793156053053700680804367264213299418089541645472290367440408200235878092561907626174549887645
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r3); // 50395671055732787555710059238141190195745381525786195899271582722153543934118628835487246926321839379955045385738697880041939101037882775963187031542349821792316866696832540540249385362624836019575604646719172488379825448857874111860510454560623096003033684485487497371005495689477083043238062730579632142891874883559996203789931890467347539232630005242401904930173111923838015957738437749229361509523974790873687142959009819302325515461330620453167032372249630192395847924176150342385618565
fp_sq1_rep(&r0,9);
fp_mul2(&r0,&r28); // 25802583580535187228523550329928289380221635341202532300427050353742614494268737963769470426276781762536983237498213314581472819731395981293151760149683108757666235748778260756607685305663916042022709579120216314050470629815231545272581352735039025153553246456569598653954813793012266518137888118056771657160639940382718056340445127919281940087106562684109775324248633305005064170362080127605433092876275092927327817195013027482790663916201277672021520574591810658506674137178188975301436705337
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r57); // 3302730698308503965251014442230821040668369323673924134454662445279054655266398459362492214563428065604733854399771304266428520925618685605523425299159437920981278175843617376845783719124981253378906826127387688198460240616349637794890413150084995219654815546440908627706216165505570114321649679111266772116561912368987911211576976373668088331149640023566051241503825063040648213806346256333495435888163211894697960600961667517797204981273763542018754633547751764288854289558808188838583898283251
fp_sq1_rep(&r0,9);
fp_mul2(&r0,&r6); // 1690998117533954030208519394422180372822205093721049156840787171982875983496396011193596013856475169589623733452682907784411402713916767030027993753169632215542414426031932096945041264191990401730000294977222496357611643195571014550983891532843517552463265559777745217385582676738851898532684635704968587323679699132921810540327411903318061225548615692065818235649958432276811885468849283242749663174739564490085355827692373769112168950412166933513602372376448903315893396254109792685354955921024523
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r22); // 216447759044346115866690482486039087721242251996294292075620758013808125887538689432780289773628821707471837881943412196404659547381346179843583200405712923589429046532087308408965281816574771421440037757084479533774290329033089862525938116203970246715297991651551387825354582622573043012183633370235979177431001489013991749161908723624711836870222808584424734163194679331431921340012708255071956886366664254730925545944623842446357625652757367489741103664185459624434354720526053463725434357891138987
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r41); // 27705313157676302830936381758213003228319008255525669385679457025767440113604952247395877091024489178556395248888756761139796422064812311019978649651931254219446917956107175476347556072521570741944324832906813380323109162116235502403320078874108191579558142931398577641645386575689349505559505071390205334711168190593790943892724316623963115119388519498806365972888918954423285931521626656649210481454933024605558469880911851833133776083552943038686861269015738831927597404227334843356855597810065790419
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r55); // 3546280084182566762359856865051264413224833056707285681366970499298232334541433887666672267651134614855218591857760865425893942024295975810557267155447200540089205498381718460972487177282761054968873578612072112681357972750878144307624970095885848522183442295219017938130609481688236736711616649137946282843029528396005240818268712527867278735281730495847214844529781626166180599234768212051098941626231427149511484144756717034641123338694776708951918242434014570486732467741098859949677516519688421173743
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r44); // 453923850775368545582061678726561844892778631258532567214972223910173738821303537621334050259345230701467979757793390774514424579109884903751330195897241669131418303792859963004478358692193415036015818062345230423213820512112402471375996172273388610839480613788034296080718013656094302299086931089657124203907779634688670824738395203567011678116061503468443500099812048149271116702050331142540664528157622675137469970528859780434063787352931418745845535031553865022301755870860654073558722114520117910239193
fp_sq1_rep(&r0,11);
fp_mul2(&r0,&r55); // 929636046387954781352062318031998658340410636817474697656263114568035817106029645048492134931139032476606422543960864306205541538017044282882724241197550938381144686167777204233171678601612113993760395391683031906741904408806200261378040160815899874999256297037894238373310491967681131108530034871617790369603132691842397849064233376905239916781693959103372288204415074609707247005799078179923280953666811238681538499643104830328962636498803545591491655744622315565673996023522619542648262890537201480169867375
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r42); // 118993413937658212013063976708095828267572561512636761300001678664708584589571794566206993271185796157005622085626990631194309316866181668208988702873286520112786519829475482141845974861006350591201330610135428084062963764327193633456389140584435183999904806020850462511783742971863184781891844463567077167309200984555826924680221872243870709348056826765231652890165129550042527616742282007030179962069351838551236927954317418282107217471846853835710931935311656392406271491010895301458977649988761789461743024085
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r53); // 15231156984020251137672189018636266018249287873617505446400214869082698827465189704474495138711781908096719626960254800792871592558871253530750553967780674574436674538172861714156284782208812875673770318097334794760059361833880785082417809994807703551987815170668859201508319100398487652082156091336585877415577726023145846359068399647215450796551273825949651569941136582405443534943012096899863035144877035334558326778152629540109723836396397290970999287719892018228002750849394598586749139198561509051103107082987
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r55); // 1949588093954592145622040194385442050335908847823040697139227503242585449915544282172735377755108084236380112250912614501487563847535520451936070907875926345527894340886126299412004452122728048086242600716458853729287598314736740490549479679335386054654440341845613977793064844851006419466515979691082992309193948930962668333960755154843577701958563049721555400952465482547896772472705548403182468498544260522823465827603536581134044651058738853244287908828146178333184352108722508619103889817415873158541197706622447
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r4); // 249547276026187794639621144881336582442996332521349209233821120415050937589189668118110128352653834782256654368116814656190408172484546617847817076208118572227570475633424166324736569871709190155039052891706733277348812584286302782790333398954929414995768363756238589157512300140928821691714045400458623015576825463163221546746976659819977945850696070364359091321915581766130786876506310195607355967813665346921403625933252682385157715335518573215268852330002710826647597069916481103245297896629231764293273306447673223
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r61); // 31942051331352037713871506544811082552703530562732698781929103413126520011416277519118096429139690852128851759118952275992372246078021967084520585754639177245129020881078293289566280943578776339844998770138461859500648010788646756197162675066230965119458350560798539412161574418038889176539397811258703745993833659284892357983613012456957177068889097006637963689205194466064740720192807705037741563880149164405939664119456343345300187562946377371554413098240346985810892424949309581215398130768541665829538983225302172667
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r18); // 8177165140826121654751105675471637133492103824059570888173850473760389122922567044894232685859760858144986050334451782654047294995973623573637269953187629374753029345556043082128967921556166743000319685155446236032165890761893569586473644816955127070581337743564426089513363051017955629194085839682228158974421416776932443643804931188981037329635608833699318704436529783312573624369358772489661840353318186087920554014580823896396848016114272607117929753149528828367588460787023252791141921476746666452361979705677356202787
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r48); // 1046677138025743571808141526460369553086989289479625073686252860641329807734088581746461783790049389842558214442809828179718053759484623817425570554008016559968387756231173514512507893959189343104040919699897118212117234017522376907068626536570256265034411231176246539457710470530298320536842987479325204348725941347447352786407031192189572778193357930713512794167875812264009423919277922878676715565224727819253830913866345458738796546062626893711095008403139690031051322980738976357266165949023573305902333402326701593956833
fp_sq1_rep(&r0,12);
fp_mul2(&r0,&r16); // 4287189557353445670126147692381673689444308129708544301818891717186886892478826830833507466404042300795118446357749056224125148198849019156175136989216835829630516249522886715443232333656839549354151607090778596196832190535771655811353094293791769661580948402897905825618782087292101920918908876715316037012381455759144357013123199763208490099479994084202548404911619327033382600373362372111059826955160485147663691423196550998994110652672519756640645154419260170367186218929106847159362215727200556260975957615930169728847187999
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r24); // 548760263341241045776146904624854232248871440602693670632818139799921522237289834346688955699717414501775161133791879196688018969452674451990417534619754986192706079938929499576733738708075462317331405707619660313194520388578771943853196069605346516682361395570931945679204107173389045877620336219560452737584826337170477697679769569690686732733439242777926195828687273860272972847790383630215657850260542098900952502169158527871246163542082528850002579765665301806999836022925676436398363613081671201404922574839061725292440063919
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r41); // 140482627415357707718693607583962683455711088794289579682001443788779909692746197592752372659127658112454441250250721074352132856179884659709546888862657276465332756464365951891643837109267318353236839861150633040177797219476165617626418193818968708270684517266158578093876251436387595744670806072207475900821715542315642290606021009840815803579760446151149106132143942108229881049034338209335208409666698777318643840555304583135039017866773127385600660420010317262591958021868973167717981084948907827559660179158799801674864656363347
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r19); // 17981776309165786587992781770747223482331019365669066199296184804963828440671513291872303700368340238394168480032092297517073005591025236442822001774420131387562592827438841842130411149986216749214315502227281029142758044092949199056181528808827994658647618210068297996016160183857612255317863177242556915305179589416402213197570689259624422858209337107347085584914424589853424774276395290794906676437337443496786411591078986641284994286946960305356884533761320609611770626799228565467901578873460201927636502932326374614382676014508453
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r27); // 2301667367573220683263076066655644605738370478805640473509911655035370040405953701359654873647147550514453565444107814082185344715651230264681216227125776817608011881912171755792692627198235743899432384285091971730273029643897497479191235687529983316306895130888742143490068503533774368680686486687047285159062987445299483289289048225231926125850795149740426954869046347501238371107378597221748054583979192767588660683658110290084479268729210919085681220321449038030306640230301256379891402095802905846737472375337775950640982529857082039
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r59); // 589226846098744494915347473063845019069022842574243961218537383689054730343924147548071647653669772931700112753691600405039448247206714947758391354144198865307651041769515969482929312562748350438254690376983544762949895588837759354672956336007675728974565153507517988733457536904646238382255740591884105000720124785996667722057996345659373088217803558333549300446475864960317023003488920888767501973498673348502697135016476234261626692794677995285934392402290953735758499898957121633252198936525543896764792928086470643364091527643413002103
fp_sq1_rep(&r0,9);
fp_mul2(&r0,&r9); // 301684145202557181396657906208688649763339695398012908143891140448796021936089163544612683598678923741030457729890099407380197502569838053252296373321829819037517333385992176375259808032127155424386401473015574918630346541484932789592553644035929973234977358595849210231530258895178874051714939183044661760368703890430293873693694128977599021167515421866777241828595642859682315777786327495048961010431320754433380933128435831941952866710875133586398408909972968312708351948266046276225125855501078475143573979180272969402414862153427457076753
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r14); // 77231141171854638437544423989424294339414962021891304484836131954891781615638825867420847001261804477703797178851865448289330560657878541632587871570388433673604437346813997152066510856224551788642918777091987179169368714620142794135693732873198073148154203800537397819271746277165791757239024430859433410654388195950155231665585697018265349418883947997894973908120484572078672839113299838732534018670418113134945518880879572977139933877984034198117992680953079888053338098756107846713632219008276089636754938670149880167018204711277429011648795
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r7); // 19771172139994787440011372541292619350890230277604173948118049780452296093603539422059736832323021946292172077786077554762068623528416906657942495122019439020442735960784383270929026779193485257892587206935548717867358390942756555298737595615538706725927476172937573841733567046954442689853190254300014953127523378163239739306389938436675929451234290687461113320478844050452140246813004758715528708779627036962546052833505170682147823072763912754718206126323988451341654553281563608758689848066118678947009264299558369322756660406087021826982091533
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r9); // 2530710033919332792321455685285455276913949475533334265359110371897893899981253046023646314537346809125398025956617927009544783811637364052216639375618488194616670202980401058678915427736766113010251162487750235887021874040672839078238412238788954460918716950136009451741896582010168664301208352550401914000322992404894686631217912119894518969757989207995022505021292038457873951592064609115587674723792260731205894762688661847314921353313780832603930384169470521771731782820040141921112300552463190905217185830343471273312852531979138793853707716241
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r42); // 647861768683349194834292655433076550889971065736533571931932255205860838395200779782053456521560783136101894644894189314443464655779165197367459680158332977821867571962982671021802349500612124930624297596864060387077599754412246804029033533129972341995191539234818419645925524994603178061109338252902889984082686055653039777591785502692996856258045237246725761285450761845215731607568539933590444729290818747188709059248297432912619866448327893146606178347384453573563336401930276331804748941430576871735599572567928645968090248186659531226549175357781
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r49); // 82926306391468696938789459895433798513916296414276297207287328666350187314585699812102842434759780241421042514546456232248763475939733145263034839060266621161199049211261781890790700736078351991119910092398599729545932768564767590915716292240636459775384517022056757714678467199309206791821995296371569917962583815123589091531748544344703597601029790367580897444537697516187613645768773111499576925349224799640154759583782071412815342905385970322765590828465210057416107059447075370471007864503113839582156745288694866683915551767892419996998294445796067
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r44); // 10614567218107993208165050866615526209781285941027366042532778069292823976266969575949163831649251870901893441861946397727841724920285842593668459399714127508633478299041508082021209694218029054863348491827020765381879394376290251637211685406801466851249218178823264987478843801511578469353215397935560949499210728335819403716063813676122060492931813167050354872900825282072014546658402958271945846444700774353939809226724105140840363891889404201313995626043546887349261703609225647420289006656398571466516063396952942935541190626290229759615781689061896665
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r42); // 2717329207835646261290253021853574709704009200903005706888391185738962937924344211442985940902208478950884721116658277818327481579593175703979125606326816642210170444554626068997429681719815438045017213907717315937761124960330304419126191464141175513919799853778755836794584013186964088154423141871503603071797946453969767351312336301087247486190544170764890847462611272210435723944551157317618136689843398234608591162041370916055133156323687475536382880267148003161410996123961765739593985704038034295428112229619953391498544800330298818461640112399845546325
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r22); // 695636277205925442890304773594515125684226355431169460963428143549174512108632118129404400870965370611426488605864519121491835284375852980218656155219665060405803633805984273663341998520272752139524406760375632880066847989844557931296305014820140931563468762567361494219413507375862806567532324319104922386380274292216260441935958093078335356464779307715812056950428485685871545329805096273310242992599909948059799337482590954510114088018863993737314017348389888809321215007734212029336060340233736779629596730782708068223627468884556497526179868774360459859243
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r41); // 178082886964716913379918022040195872175161946990379382006637604748588675099809822241127526622967134876525181083101316895101909832800218362935975975736234255463885730254331974057815551621189824547718248130656162017297113085400206830411854083793956078480248003217244542520169857888220878481288275025690860130913350218807362673135605271828053851254983502775247886579309692335583115604430104645967422206105576946703308630395543284354589206532829182396752388441187811535186231041979958279510031447099836615585176763080373265465248632034446463366702046406236277723966291
fp_sq1_rep(&r0,13);
fp_mul2(&r0,&r7); // 1458855010014960954408288436553284584858926669745187897398375258100438426417642063799316698095346768908494283432765988004674845350299388829171515193231231020760151902243487531481624998880787042694907888686335279245697950395598494354733908654440088194910191642355667292325231475820305436518713549010459526192442164992469915018326878386815417149480824854734830686857704999613096883031491417259765122712416886347393504300200290585432794779916936662194195566110210552096245604695899818225746177614641861554873768043154417790691316793626185427900023164159887587114731855885
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r44); // 186733441281915002164260919878820426861942613727384050866992033036856118581458184166312537356204386420287268279394046464598380204838321770133953944733597570657299443487166404029647999856740741464948209751850915743449337650636607277405940307768331288948504530221525413417629628904999095874395334273338819352632597119036149122345840433512373395133545581406058327917786239950476401028030901409249935707189361452466368550425637194935397731829367892760857032462106950668319437401075176732895510734674158279023842309523765477208488549584151734771202965012465611150685677553369
fp_sq1_rep(&r0,10);
fp_mul2(&r0,&r5); // 191215043872680962216203181955912117106629236456841268087799841829740665427413180586304038252753291694374162718099503579748741329754441492617168839407203912353074630130858397726359551853302519260106966785895337721292121754251885852063682875154771239883268638946842023339652739998719074175380822295898951017095779449893016701282140603916670356616750675359803727787813109709287834652703643043071934164161906127325561395635852487613847277393272722187117601241197517484359103898700980974485002992306338077720414524952335848661492274774171376405711836172764785818302133814649865
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r56); // 24475525615703163163674007290356750989648542266475682315238379754206805174708887115046916896352421336879892827916736458207838890208568511054997611444122100781193552656749874908974022637222722465293691748594603228325391584544241389064151408019810718705058385785195778987475550719836041494448745253875065730188259769586306137764113997301333805646944086446054877156840078042788842835546066309513207573012723984297671858641389118414572451506338908439951052958873282237997965299033725564734080383015211273948213059193898988628671011171093936179931115030113892584742673128275182833
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r56); // 3132867278810004884950272933165664126675013410108887336350512608538471062362737550726005362733109931120626281973342266650603377946696769415039694264847628899992774740063983988348674897564508475557592543820109213225650122821662897800211380226535771994247473380505059710396870492139013311289439392496008413464097250507047185633806591654570727122808843065095024276075529989476971882949896487617690569345628669990101997906097807157065273792811380280313734778735780126463739558276316872285962289025947043065371271576819070544469889429900023831031182723854578250847062160419223402737
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r14); // 802014023375361250547269870890410016428803432987875158105731227785848591964860812985857372859676142366880328185175620262554464754354372970250161731800992998398150333456379901017260773776514169742743691217947958585766431442345701836854113337993157630527353185409295285861598845987587407690096484478978153846808896129804079522254487463570106143439063824664326214675335677306104802035173500830128785752480939517466111463961038632208710090959713351760316103356359712374717326918737119305206345990642443024735045523665682059384291694054406100743982777306772032216847913067321191100699
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r35); // 102657794992046240070050543473972482102886839422448020237533597156588619771502184062189743726038546222960682007702479393606971488557359740192020701670527103794963242682416627330209379043393813727071192475897338698978103224620249835117326507263124176707501207732389796590284652286411188184332350013309203692391538704614922178848574395336973586360200169557033755478442966695181414660502208106256484576317560258235662267387012944922714891642843309025320461229614043183963817845598351271066412286802232707166085827029207303601189336838963980895229795495266820123756532872617112460889543
fp_sq1_rep(&r0,11);
fp_mul2(&r0,&r16); // 210243164143710699663463513034695643346712247137173545446468806976693493292036472959364595150926942664623476751774677798107077608565472747913258397021239508572084721013589252772268808280870530513041802190637749655507155404022271662320284686874878313896962473435934303416902967882570113401512652827257249162017871267051360622281880361650121904865689947252805131219851195791731537224708522201613280412298363408866636323608602511201720098084543096883856304598249560440757898947785423403144012363370972584276143773755816557775235761846198232873430621174306447613453379323119846319901784095
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r33); // 26911125010394969556923329668441042348379167633558213817148007293016767141380668538798668179318648661071805024227158758157705933896380511732897074818718657097226844289739424354850407459951427905669350680401631955904915891714850772776996439919984424178811196599799590837363579888968974515393619561888927892738287522182574159652080686291215603822808313248359056796140953061341636764762690841806499892774190516334929449421901121433820172554821516401133606988575943736417011065316534195602433582511484490787346403040744519395230177516313373807799119510311225294522032553359340328947428364227
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r14); // 3444624001330556103286186197560453420592533457095451368594944933506146194096725572966229526952787028617191043101076321044186359538736705501810825576795988108445036069086646317420852154873782771925676887091408890355829234139500898915455544309758006294887833164774347627182538225788028737970383303921782770270500802839369492435466327845275597289319464095789959269906041991851729505889624427751231986275096386090870969526003343543528982087017154099345101694537720798261377416360516377037111498561470014820780339589215298482589462722088111847398287297319836837698820166829995562105270830621083
fp_sq1_rep(&r0,9);
fp_mul2(&r0,&r25); // 1763647488681244724882527333150952151343377130032871100720611805955146851377523493358709517799826958652001814067751076374623416083833193216927142695319545911523858467372362914519476303295376779225946566190801351862184567879424460244713238686596099222982570580364465985117459571603470713840836251607952778378496411053757180126958759856781105812131565617044459146191893499828085507015487707008630776972849349678525936397313711894286838828552782898864692067603313048709825237176584385043001087263472647588239533869678232823085804913709113265867923096227756460901795925416957727797898665277994545
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r14); // 225746878551199324784963498643321875371952272644207500892238311162258796976323007149914818278377850707456232200672137775951797258730648731766674265000901876675053883823662453058492966821808227740921160472422573038359624688566330911323294551884300700541769034286651646095034825165244251371627040205817955632447540614880919056250721261667981543952840398981690770712562367977994944897982426497104739452524716758851319858856155122468715370054756211054680584653224070234857630358602801285504139169724498891294660335318813801354983028954766498031094156317152826995429878453370589158131029155583301787
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r18); // 57791200909107027144950655652690400095219781796917120228413007657538252025938689830378193479264729781108795443372067270643660098235046075332268611840230880428813794258857587982974199506382906301675817080940178697820063920272980713298763405282380979338692872777382821400328915242302528351136522292689396641906570397409515278400184642987003275251927142139312837302415966202366705893883501183258813299846327490265937883867175711351991134734017590029998229671225361980123553371802317129089059627449471716171433045841616333146875655412420223495960104017191123710830048884062870824481543463829325257507
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r4); // 7397273716365699474553683923544371212188132070005391389236864980164896259320152298288408765345885411981925816751624610642388492574085897642530382315549552694888165665133771261820697536817012006614504586360342873320968181794941531302241715876144765355352687715505001139242101151014723628945474853464242770164041010868417955635223634302336419232246674193832043174709243673902938354417088151457128102380329918754040049134998491053054865245954251523839773397916846333455814831590696592523399632313532379669943429867726890642800083892789788607482893314200463834986246257160047465533637563370153632960903
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r60); // 1893702071389619065485743084427359030320161809921380195644637434922213442385958988361832643928546665467373009088415900324451454098965989796487777872780685489891370410274245443026098569425155073693313174108247775570167854539505032013373879264293059930970288055169280291645977894659769249010041562486846149161994498782314996642617250381398123323455148593621003052725566380519152218730774566773024794209364459201034252578559613709582045502964288390102981989866712661364688596887218327685990305872264289195505518046138084004556821476554185883515620688435318741756479041832972151176611216222759330037991289
fp_sq1_rep(&r0,11);
fp_mul2(&r0,&r53); // 3878301842205939846114801836907231294095691386718986640680217466720693130006444008165033254765663570877179922613075763864476577994682347103206969083454843883297526600241654667317449870182717590923905380573691444367703766096906305563389704733272186738627149936986686037290962728263207421972565119973060913483764733506181113124080128781103356566436144319735814251981959947303223743960626312751154778540778412443718149280890088877224029190070862622930907115247027530474882246425023135100908146426397264272395300958490796041332370383982972689439991169915532783117269077673926965609699770824211107917806159979
fp_sq1_rep(&r0,9);
fp_mul2(&r0,&r11); // 1985690543209441201210778540496502422576993990000121160028271342960994882563299332180497026440019748289116120377894791098612007933277361716841968170728880068248333619323727189666534333533551406553039554853730019516264328241616028448455528823435359610177100767737183251092972916870762200049953341426207187703687543555164729919529025935924918562015305891704736897014763493019250556907840672128591246612878547171183692431815725505138702945316281662940624443006478095603139710169611845171664970970315399307466394090747287573162173636599282016993275478996752784956041767769050606392166282661996087253916753909269
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r58); // 254168389530808473754979653183552310089855230720015508483618731899007344968102314519103619384322527781006863408370533260622337015459502299755771925853296648735786703273437080277316394692294580038789063021277442498081834014926851641402307689399726030102668898270359456139900533359457561606394027702554520026072005575061085429699715319798389575937959154138206322817889727106464071284203606032459679566448454037911512631272412864657753977000484052856399928704829196237201882901710316181973116284200371111355698443615652809364758225484708098175139261311584356474373346274438477618197284180735499168501344500386549
fp_sq1_rep(&r0,14);
fp_mul2(&r0,&r52); // 4164294894072766034001586637759321048512188100116734090995609303433336339957388321080993699992740295164016450082742816942036369661288485679198567233180412292887129346431993123263551810638554399355520008540609617888572768500561537292735409183125111277202127229261569329396130338561352689359159749878653256107163739341800823680200135799576814812167522781400372393048305288912307343920391881235819390016691470957142222950767212374552641159175930721999256431899921551150315649461621820325447537200338880288451763300198855628632198766341457480501481657328998096476132905360400017296544304017170418376726028294333218921
fp_sq1_rep(&r0,9);
fp_mul2(&r0,&r40); // 2132118985765256209408812358532772376838240307259767854589751963357868206058182820393468774396283031123976422442364322274322621266579704667749666423388371093958210225373180479110938527046939852470026244372792124358949257472287507093880529501760056973927489141381923496650818733343412576951889791937870467126867834543002021724262469529383329183829771664076990665240732307923101360087240643192739527688546033130056818150792812735770952273498076529663619293132759834188961612524350372006629139046573506707687302809701814081859685768366826230016758608552447025395780047544524808855830683656791254208883726486698608087633
*x = r0;
fp check; fp_sq2(&check,x);
return fp_isequal(&check,&origx);
}