-rw-r--r-- 30472 high-ctidh-20210523/fp_sqrt1024.c
// DO NOT EDIT! generated by ./autogen
#include "fp.h"
// 174 mults, 1013 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 r28;
fp_mul3(&r28,&r1,&r27); // 55
fp r29;
fp_mul3(&r29,&r1,&r28); // 57
fp r30;
fp_mul3(&r30,&r1,&r29); // 59
fp_mul2(&r1,&r30); // 61
fp r31;
fp_mul3(&r31,&r26,&r1); // 112
fp_sq1_rep(&r31,3);
fp_mul2(&r26,&r31); // 947
fp_sq1_rep(&r26,6);
fp_mul2(&r26,&r19); // 60645
fp_sq1_rep(&r26,7);
fp_mul2(&r26,&r24); // 7762607
fp_sq1_rep(&r26,7);
fp_mul2(&r26,&r27); // 993613749
fp_sq1_rep(&r26,10);
fp_mul2(&r26,&r20); // 1017460479015
fp_sq1_rep(&r26,8);
fp_mul2(&r26,&r0); // 260469882627841
fp_sq1_rep(&r26,7);
fp_mul2(&r26,&r11); // 33340144976363669
fp_sq1_rep(&r26,7);
fp_mul2(&r26,&r20); // 4267538556974549671
fp_sq1_rep(&r26,7);
fp_mul2(&r26,&r25); // 546244935292742357937
fp_sq1_rep(&r26,7);
fp_mul2(&r26,&r15); // 69919351717471021815965
fp_sq1_rep(&r26,6);
fp_mul2(&r26,&r30); // 4474838509918145396221819
fp_sq1_rep(&r26,8);
fp_mul2(&r26,&r17); // 1145558658539045221432785697
fp_sq1_rep(&r26,6);
fp_mul2(&r26,&r29); // 73315754146498894171698284665
fp_sq1_rep(&r26,11);
fp_mul2(&r26,&r2); // 150150664492029735263638086993923
fp_sq1_rep(&r26,6);
fp_mul2(&r26,&r1); // 9609642527489903056872837567611133
fp_sq1_rep(&r26,7);
fp_mul2(&r26,&r1); // 1230034243518707591279723208654225085
fp_sq1_rep(&r26,7);
fp_mul2(&r26,&r29); // 157444383170394571683804570707740810937
fp_sq1_rep(&r26,10);
fp_mul2(&r26,&r23); // 161223048366484041404215880404726590399533
fp_sq1_rep(&r26,6);
fp_mul2(&r26,&r17); // 10318275095454978649869816345902501785570145
fp_sq1_rep(&r26,8);
fp_mul2(&r26,&r11); // 2641478424436474534366672984551040457105957141
fp_sq1_rep(&r26,6);
fp_mul2(&r26,&r29); // 169054619163934370199467071011266589254781257081
fp_sq1_rep(&r26,8);
fp_mul2(&r26,&r7); // 43277982505967198771063570178884246849224001812749
fp_sq1_rep(&r26,6);
fp_mul2(&r26,&r29); // 2769790880381900721348068491448591798350336116015993
fp_sq1_rep(&r26,8);
fp_mul2(&r26,&r7); // 709066465377766584665105533810839500377686045700094221
fp_sq1_rep(&r26,6);
fp_mul2(&r26,&r0); // 45380253784177061418566754163893728024171906924806030145
fp_sq1_rep(&r26,12);
fp_mul2(&r26,&r7); // 185877519499989243570449425055308709987008130764005499473933
fp_sq1_rep(&r26,9);
fp_mul2(&r26,&r8); // 95169289983994492708070105628318059513348162951170815730653711
fp_sq1_rep(&r26,6);
fp_mul2(&r26,&r8); // 6090834558975647533316486760212355808854282428874932206761837519
fp_sq1_rep(&r26,6);
fp_mul2(&r26,&r5); // 389813411774441442132255152653590771766674075447995661232757601225
fp_sq1_rep(&r26,7);
fp_mul2(&r26,&r30); // 49896116707128504592928659539659618786134281657343444637792972956859
fp_sq1_rep(&r26,6);
fp_mul2(&r26,&r13); // 3193351469256224293947434210538215602312594026069980456818750269239001
fp_sq1_rep(&r26,6);
fp_mul2(&r26,&r18); // 204374494032398354812635789474445798548006017668478749236400017231296099
fp_sq1_rep(&r26,7);
fp_mul2(&r26,&r23); // 26159935236146989416017381052729062214144770261565279902259202205605900717
fp_sq1_rep(&r26,7);
fp_mul2(&r26,&r23); // 3348471710226814645250224774749319963410530593480355827489177882317555291821
fp_sq1_rep(&r26,5);
fp_mul2(&r26,&r16); // 107151094727258068648007192791978238829136978991371386479653692234161769338303
fp_sq1_rep(&r26,9);
fp_mul2(&r26,&r7); // 54861360500356131147779682709492858280518133243582149877582690423890825901211149
fp_sq1_rep(&r26,6);
fp_mul2(&r26,&r24); // 3511127072022792393457899693407542929953160527589257592165292187129012857677513583
fp_sq1_rep(&r26,7);
fp_mul2(&r5,&r26); // 449424265218917426362611160756165495034004547531424971797157399952513645782721738633
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r4); // 28763152974010715287207114288394591682176291042011198195018073596960873330094191272519
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r4); // 1840841790336685778381255314457253867659282626688716684481156710205495893126028241441223
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r16); // 235627749163095779632800680250528495060388176216155735613588058906303474320131614904476575
fp_sq1_rep(&r5,8);
fp_mul2(&r5,&r20); // 60320703785752519585996974144135294735459373111335868317078543080013689425953693415546003239
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r2); // 3860525042288161253503806345224658863069399879125495572293026757120876123261036378594944207299
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r29); // 494147205412884640448487212188756334472883184528063433253507424911472143777412656460152858534329
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r7); // 31625421146424616988703181580080405406264523809796059728224475194334217201754410013449782946197069
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r14); // 2024026953371175487277003621125145946000929523826947822606366412437389900912282240860786108556612443
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r3); // 129537725015755231185728231752009340544059489524924660646807450395992953658386063415090310947623196357
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r19); // 8290414401008334795886606832128597794819807329595178281395676825343549034136708058565779900647884566885
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r11); // 1061173043329066853873485674512460517736935338188182820018646633643974276369498631496419827282929224561301
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r3); // 67915074773060278647903083168797473135163861644043700481193384553214353687647912415770868946107470371923269
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r14); // 4346564785475857833465797322803038280650487145218796830796376611405718636009466394609335612550878103803089243
fp_sq1_rep(&r5,11);
fp_mul2(&r5,&r23); // 8901764680654556842937952917100622398772197673408095909470979300158911766547387176159919334504198356588726769709
fp_sq1_rep(&r5,8);
fp_mul2(&r5,&r23); // 2278851758247566551792115946777759334085682604392472552824570700840681412236131117096939349633074779286714053045549
fp_sq1_rep(&r5,5);
fp_mul2(&r5,&r16); // 72923256263922129657347710296888298690741843340559121690386262426901805191556195747102059188258392937174849697457599
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r0); // 9334176801782032596140506918001702232414955947591567576369441590643431064519193055629063576097074295958380761274572673
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r4); // 597387315314050086152992442752108942874557180645860324887644261801179588129228355560260068870212754941336368721572651079
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r13); // 38232788180099205513791516336134972343971659561335060792809232755275493640270614755856644407693616316245527598180649669081
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r25); // 2446898443526349152882657045512638230014186211925443890739790896337631592977319344374825242092391444239713766283561578821233
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r2); // 313203000771372691568980101825617693441815835126456818014693234731216843901096876079977630987826104862683362084295882089117827
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r8); // 20044992049367852260414726516839532380276213448093236352940367022797878009670200069118568383220870711211735173394936453703540943
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r13); // 1282879491159542544666542497077730072337677660677967126588183489459064192618892804423588376526135725517551051097275933037026620377
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r2); // 164208574868421445717317439625949449259222740566779792203287486650760216655218278966219312195345372866246534540451319428739407408259
fp_sq1_rep(&r5,8);
fp_mul2(&r5,&r21); // 42037395166315890103633264544243059010361021585095626804041596582594615463735879415352143922008415453759112842355537773757288296514345
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r30); // 5380786581288433933265057861663111553326210762892240230917324362572110779358192565165074422017077178081166443821508835040932901953836219
fp_sq1_rep(&r5,10);
fp_mul2(&r5,&r18); // 5509925459239356347663419250343026230606039821201653996459340147273841438062789186729036208145487030355114438473225047081915291600728288291
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r23); // 705270458782637612500917664043907357517573097113811711546795538851051704072037015901316634642622339885454648124572806026485157324893220901293
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r10); // 45137309362088807200058730498810070881124678215283949538994914486467309060610369017684264617127829752669097479972659585695050068793166137682771
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r29); // 2888787799173683660803758751923844536391979405778172770495674527133907779879063617131792935496181104170822238718250213484483204402762632811697401
fp_sq1_rep(&r5,10);
fp_mul2(&r5,&r9); // 2958118706353852068663048961970016805265386911516848916987570715785121566596161143942955965948089450670921972447488218608110801308428935999178138641
fp_sq1_rep(&r5,11);
fp_mul2(&r5,&r29); // 6058227110612689036621924274114594417183512394786506581990544825927928968388938022795173818261687194974048199572455871709410921079662460926316827936825
fp_sq1_rep(&r5,12);
fp_mul2(&r5,&r0); // 24814498245069574294003401826773378732783666769045530959833271607000797054521090141369031959599870750613701425448779250521747132742297439954193727229235201
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r12); // 3176255775368905509632435433826992477796309346437827962858658765696102022978699538095236090828783456078553782457443744066783632991014072314136797085342105751
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r18); // 203280369623609952616475867764927518578963798172020989622954161004550529470636770438095109813042141189027442077276399620274152511424900628104755013461894768099
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r28); // 26019887311822073934908911073910722378107366166018686671738132608582467772241506616076174056069394072195512585891379151395091521462387280397408641723122530316727
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r28); // 1665272787956612731834170308730286232198871434625195946991240486949277937423456423428875139588441220620512805497048265689285857373592785945434153070279841940270583
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r14); // 106577458429223214837386899758738318860727771816012540607439391164753787995101211099448008933660238119712819551811089004114294871909938300507785796497909884177317339
fp_sq1_rep(&r5,8);
fp_mul2(&r5,&r17); // 27283829357881142998371046338237009628346309584899210395504484138176969726745910041458690287017020958646481805263638785053259487208944204929993163903464930349393238817
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r9); // 1746165078904393151895746965647168616214163813433549465312286984843326062511738242653356178369089341353374835536872882243408607181372429115519562489821755542361167284305
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r23); // 223509130099762323442655611602837582875412968119494331559972734059945736001502495059629590831243435693231978948719728927156301719215670926786503998697184709422229412391085
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r25); // 28609168652769577400659918285163210608052859919295274439676509959673054208192319367632587626399159768733693305436125302676006620059605878628672511833239642806045364786058929
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r29); // 3661973587554505907284469540500890957830766069669795128278593274838150938648616879056971216179092450397912743095824038742528847367629552464470081514654674279173806692615542969
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r16); // 234366309603488378066206050592057021301169028458866888209829969589641660073511480259646157835461916825466415558132738479521846231528291357726085216937899153867123628327394750047
fp_sq1_rep(&r5,8);
fp_mul2(&r5,&r11); // 59997775258493024784948748951566597453099271285469923381716472214948264978818938946469416405878250707319402382881981050757592635271242587577877815536102183389983648851813056012053
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r23); // 3839857616543553586236719932900262236998353362270075096429854221756688958644412092574042649976208045268441752504446787248485928657359525604984180194310539736958953526516035584771437
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r4); // 245750887458787429519150075705616783167894615185284806171510670192428093353242373924738729598477314897180272160284594383903099434071009638718987532435874543165373025697026277425371975
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r1); // 31456113594724790978451209690318948245490510743716455189953365784630795949215023862366557388605096306839074836516428081139596727561089233756030404151791941525167747289219363510447612861
fp_sq1_rep(&r5,12);
fp_mul2(&r5,&r1); // 128844241283992743847736154891546412013529132006262600458048986253847740207984737740253419063726474472812850530371289420347788196090221501464700535405739792487087092896642512938793422278717
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r24); // 8246031442175535606255113913058970368865864448400806429315135120246255373311023215376218820078494366260022433943762522902258444549774176093740834265967346719173573945385120828082779025837935
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r11); // 1055492024598468557600654580871548207214830649395303222952337295391520687783810971568156008970047278881282871544801602931489080902371094539998826786043820380054217465009295465994595715307255701
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r22); // 67551489574301987686441893175779085261749161561299406268949586905057324018163902180361984574083025848402103778867302587615301177751750050559924914306804504323469917760594909823654125779664364907
fp_sq1_rep(&r5,8);
fp_mul2(&r5,&r25); // 17293181331021308847729124652999445827007785359692648004851094247694674948649958958172668050965254617190938567390029462429517101504448012943340778062541953106808298946712296914855456199594077416241
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r16); // 1106763605185363766254663977791964532928498263020329472310470031852459196713597373323050755261776295500220068312961885595489094496284672828373809796002684998835731132589587002550749196774020954639455
fp_sq1_rep(&r5,8);
fp_mul2(&r5,&r11); // 283331482927453124161193978314742920429695555333204344911480328154229554358680927570700993347014731648056337488118242712445208191048876244063695307776687359701947169942934272652991794374149364387700501
fp_sq1_rep(&r5,10);
fp_mul2(&r5,&r25); // 290131438517711999141062633794296750520008248661201249189355856029931063663289269832397817187343085207609689587833080537543893187634049273921223995163327856334793902021564695196663597439128949133005313073
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r11); // 18568412065133567945028008562834992033280527914316879948118774785915588074450513269273460299989957453287020133621317154402809164008579153530958335690452982805426809729380140492586470236104252744512340036693
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r0); // 1188378372168548348481792548021439490129953786516280316679601586298597636764832849233501459199357277010369288551764297881779786496549065825981333484188990899547315822680328991525534095110672175648789762348353
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r1); // 76056215818787094302834723073372127368317042337041940267494501523110248752949302350944093388758865728663634467312915064433906335779140212862805342988095417571028212651541055457634182087083019241522544790294653
fp_sq1_rep(&r5,9);
fp_mul2(&r5,&r2); // 38940782499218992283051378213566529212578325676565473416957184779832447361510042803683375815044539253075780847264212512990160043918919788985756335609904853796366444877589020394308701228586505851659542932630862339
fp_sq1_rep(&r5,8);
fp_mul2(&r5,&r17); // 9968840319800062024461152822673031478420051373200761194741039303637106524546570957742944208651402048787399896899638403325480971243243465980353621916135642571869809888662789220943027514518145498024842990753500758817
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r22); // 1276011560934407939131027561302148029237766575769697432926853030865549635141961082591096858707379462244787186803153715625661564319135163645485263605265362249199335665748837020280707521858322623747179902816448097128619
fp_sq1_rep(&r5,8);
fp_mul2(&r5,&r21); // 326658959599208432417543055693349895484868243397042542829274375901580706596342037143320795829089142334665519821607351200169360465698601893244227482947932735795029930431702277191861125595730591679278055121010712864926505
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r7); // 20906173414349339674722755564374393311031567577410722741073560057701165222165890377172530933061705109418593268582870476810839069804710521167630558908667695090881915547628945740279112038126757867473795527744685623355296333
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r23); // 2675990197036715478364512712239922343812040649908572510857415687385749148437233968278083959431898254005579938378607421031787400935002946709456711540309464971632885190096505054755726340880225007036645827551319759789477930669
fp_sq1_rep(&r5,9);
fp_mul2(&r5,&r25); // 1370106980882798324922630508666840240031764812753189125558996831941503563999863791758378987229131906050856928449846999568275149278721508715241836308638446065476037217329410588034931886530675203602762663706275717012212700502577
fp_sq1_rep(&r5,8);
fp_mul2(&r5,&r28); // 350747387105996371180193410218711101448131792064816416143103188977024912383965130690145020730657767949019373683160831889478438215352706231101910095011442192761865527636329110536942562951852852122307241908806583555126451328659767
fp_sq1_rep(&r5,9);
fp_mul2(&r5,&r10); // 179582662198270142044259026031980083941443477537186005065268832756236755140590146913354250614096777189897919325778345927412960366260585590324177968645858402694075150149800504594914592231348660286621307857308970780224743080273800723
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r17); // 11493290380689289090832577666046725372252382562379904324177205296399152328997769402454672039302193740153466836849814139354429463440677477780747389993334937772420809609587232294074533902806314258343763702867774129934383557137523246305
fp_sq1_rep(&r5,6);
fp_mul2(&r5,&r13); // 735570584364114501813284970626990423824152483992313876747341138969545749055857241757099010515340399369821877558388104918683485660203358577967832959573436017434931815013582866820770169779604112534000876983537544315800547656801487763545
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r22); // 94153034798606656232100476240254774249491517951016176223659665788101855879149726944908673345963571119337200327473677429591486164506029897979882618825399810231671272321738606953058581731789326404352112253892805672422470100070590433733803
fp_sq1_rep(&r5,7);
fp_mul2(&r5,&r27); // 12051588454221651997708860958752611103934914297730070556628437220877037552531165048948310188283337103275161641916630710987710229056771826941424975209651175709653922857182541689991498461669033779757070368498279126070076172809035575517926837
fp_sq1_rep(&r5,8);
fp_mul2(&r4,&r5); // 3085206644280742911413468405440668442607338060218898062496879928544521613447978252530767408200534298438441380330657462012853818638533587697004793653670700981671404251438730672637823606187272647617810014335559456273939500239113107332589270279
fp_sq1_rep(&r4,6);
fp_mul2(&r4,&r3); // 197453225233967546330461977948202780326869635854009475999800315426849383260670608161969114124834195100060248341162077568822644392866149612608306793834924862826969872092078763048820710795985449447539840917475805201532128015303238869285713297861
fp_sq1_rep(&r4,9);
fp_mul2(&r4,&r16); // 101096051319791383721196532709479823527357253557252851711897761498546884229463351378928186431915107891230847150674983715237193929147468601655453078443481529767408574511144326680996203927544550117140398549747612263184449543835258301074285208504863
fp_sq1_rep(&r4,6);
fp_mul2(&r4,&r25); // 6470147284466648558156578093406708705750864227664182509561456735907000590685654488251403931642566905038774217643198957775180411465437990505948997020382817905114148768713236907583757051362851207496985507183847184843804770805456531268754253344311281
fp_sq1_rep(&r4,6);
fp_mul2(&r4,&r24); // 414089426205865507722020997978029357168055310570507680611933231098048037803881887248089851625124281922481549929164733297611546333788031392380735809304500345927305521197647162085360451287222477279807072459766219830003505331549218001200272214035922031
fp_sq1_rep(&r4,6);
fp_mul2(&r4,&r11); // 26501723277175392494209343870593878858755539876512491559163726790275074419448440783877750504007954043038819195466542931047138965362434009112367091795488022139347553356649418373463068882382238545907652637425038069120224341219149952076817421698299010005
fp_sq1_rep(&r4,6);
fp_mul2(&r4,&r3); // 1696110289739225119629398007718008246960354552096799459786478514577604762844700210168176032256509058754484428509858747587016893783195776583191493874911233416918243414825562775901636408472463266938089768795202436423694357838025596932916314988691136640325
fp_sq1_rep(&r4,7);
fp_mul2(&r4,&r12); // 217102117086620815312562944987905055610925382668390330852669249865933409644121626901526532128833159520574006849261919691138162404249059402648511215988637877365535157097672035315409460284475298168075490405785911862232877803267276407413288318552465489961623
fp_sq1_rep(&r4,7);
fp_mul2(&r4,&r20); // 27789070987087464360008056958451847118198448981553962349141663982839476434447568243395396112490644418633472876705525720465684787743879603539009435646545648302788500108502020520372410916412838165513662771940596718365808358818211380148900904774715582715087783
fp_sq1_rep(&r4,6);
fp_mul2(&r4,&r6); // 1778500543173597719040515645340918215564700734819453590345066494901726491804644367577305351199401242792542264109153646109803826415608294626496603881378921491378464006944129313303834298650421642592874417404198189975411734964365528329529657905581797293765618123
fp_sq1_rep(&r4,7);
fp_mul2(&r4,&r12); // 227648069526220508037186002603637531592281694056890059564168511347420990950994479049895084953523359077445409805971666702054889781197861712191565296816501950896443392888848552102890790227253970251887925427737368316852702075438787626179796211914470053601999119767
fp_sq1_rep(&r4,8);
fp_mul2(&r4,&r14); // 58277905798712450057519616666531208087624113678563855248427138904939773683454586636773141748101979923826024910328746675726051783986652598321040715985024499429489508579545229338340042298177016384483308909500766289114291731312329632302027830250104333722111774660379
fp_sq1_rep(&r4,9);
fp_mul2(&r4,&r20); // 29838287768940774429450043733263978540863546203424693887194695119329164125928748358027848575028213720998924754088318297971738513401166130340372846584332543707898628392727157421230101656666632388855454161664392340026517366431912771738638249088053418865721228626114087
fp_sq1_rep(&r4,6);
fp_mul2(&r4,&r1); // 1909650417212209563484802798928894626615266957019180408780460487637066504059439894913782308801805678143931184261652371070191264857674632341783862181397282797305512217134538074958726506026664472886749066346521109761697111451642417391272847941635418807406158632071301629
fp_sq1_rep(&r4,7);
fp_mul2(&r4,&r15); // 244435253403162824126054758262898512206754170498455092323898942417544512519608306548964135526631126802423191585491503496984481901782352939748334359218852198055105563793220873594716992771413052529503880492354702049497230265810229426082924536529333607347988304905126608541
fp_sq1_rep(&r4,10);
fp_mul2(&r4,&r30); // 250301699484838731905080072461208076499716270590418014539672517035565580820078905906139274779270273845681348183543299580912109467425129410302294383840104650808428097324258174560990200597926965790211973624171214898685163792189674932308914725406037613924340024222849647146043
fp_sq1_rep(&r4,7);
fp_mul2(&r0,&r4); // 32038617534059357683850249275034633791963682635573505861078082180552394344970099955985827171746595052247212567493542346356750011830416564518693681131533395303478796457505046343806745676534651621147132623893915507031700965400278391335541084851972814582315523100524754834693505
fp_sq1_rep(&r0,6);
fp_mul2(&r0,&r30); // 2050471522179798891766415953602216562685675688676704375108997259555353238078086397183092938991782083343821604319586710166832000757146660129196395592418137299422642973280322966003631723298217703753416487929210592450028861785617817045474629430526260133268193478433584309420384379
fp_sq1_rep(&r0,6);
fp_mul2(&r0,&r22); // 131230177419507129073050621030541860011883244075309080006975824611542607236997529419717948095474053334004582676453549450677248048457386248268569317914760787163049150289940669824232430291085933040218655227469477916801847154279540290910376283553680648529164382619749395802904600299
fp_sq1_rep(&r0,6);
fp_mul2(&r0,&r24); // 8398731354848456260675239745954679040760527620819781120446452775138726863167841882861948678110339413376293291293027164843343875101272719889188436346544690378435145618556202868750875538629499714573993934558046586675318217873890578618264082147435561505866520487663961331385894419183
fp_sq1_rep(&r0,10);
fp_mul2(&r0,&r1); // 8600300907364819210931445499857591337738780283719455867337167641742056307883870088050635446384987559297324330284059816799584128103703265166528958818861762947517589113401551737600896551556607707723769788987439704755525855102863952505102420118974014982007316979367896403339155885243453
fp_sq1_rep(&r0,6);
fp_mul2(&r0,&r7); // 550419258071348429499612511990885845615281938158045175509578729071491603704567685635240668568639203795028757138179828275173384198637008970657853364407152828641125703257699311206457379299622893294321266495196141104353654726583292960326554887614336958848468286679545369813705976655581005
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r10); // 140907330066265197951900803069666776477512176168459564930452154642301850548369327522621611153571636171527361827374036038444386354851074296488410461288231124132128180033971023668853089100703460683346244222770212122714535610005322997843598051229270261465207881389963614672308730023828737299
fp_sq1_rep(&r0,6);
fp_mul2(&r0,&r15); // 9018069124240972668921651396458673694560779274781412155548937897107318435095636961447783113828584714977751156951938306460440726710468754975258269522446791944456203522174145514806597702445021483734159630257293575853730279040340671861990275278673296733773304408957671339027758721525039187165
fp_sq1_rep(&r0,6);
fp_mul2(&r0,&r24); // 577156423951422250810985689373355116451889873586010377955132025414868379846120765532658119285029421758576074044924051613468206509470000318416529249436594684445197025419145312947622252956481374958986216336466788854638737858581802999167377617835090990961491482173290965697776558177602507978607
fp_sq1_rep(&r0,6);
fp_mul2(&r0,&r18); // 36938011132891024051903084119894727452920951909504664189128449626551576310151728994090119634241882992548868738875139303261965216606080020378657871963942059804492609626825300028647824189214807997375117845533874486696879222949235391946712167541445823421535454859090621804657699723366560510630883
fp_sq1_rep(&r0,6);
fp_mul2(&r0,&r10); // 2364032712505025539321797383673262556986940922208298508104220776099300883849710655621767656591480511523127599288008915408765773862789121304234103805692291827487527016116819201833460748109747711832007542114167967148600270268751065084589578722652532698978269110981799795498092782295459872680376531
fp_sq1_rep(&r0,6);
fp_mul2(&r0,&r3); // 151298093600321634516595032555088803647164219021331104518670129670355256566381481959793130021854752737480166354432570586161009527218503763470982643564306676959201729031476428917341487879023853557248482695306749897510417297200068165413733038249762092734609223102835186911877938066909431851544097989
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r18); // 19366155980841169218124164167051366866837020034730381378389776597805472840496829690853520642797408350397461293367369035028609219483968481724285778376231254650777821316028982901419710448515053255327805784999263986881333414041608725172957828895969547870029980557162903924720376072564407276997644542627
fp_sq1_rep(&r0,7);
fp_mul2(&r0,&r2); // 2478867965547669659919893013382574958955138564445488816433891404519100523583594200429250642278068268850875045551023236483661980093947965660708579632157600595299561128451709811381722937409926816681959140479905790320810676997325916822138602098684102127363837511316851702364208137288244131455698501456259
fp_sq1_rep(&r0,6);
fp_mul2(&r0,&r18); // 158647549795050858234873152856484797373128868124511284251769049889222433509350028827472041105796369206456002915265487134954366726012669802285349096458086438099171912220909427928430267994235316267645384990713970580531883327828858676616870534315782536151285600724278508951309320786447624413164704093200611
fp_sq1_rep(&r0,6);
fp_mul2(&r0,&r13); // 10153443186883254927031881782815027031880247559968722192113219192910235744598401844958210630770967629213184186576991176637079470464810867346262342173317532038347002382138203387419537151631060241129304639405694117154040532981046955303479714196210082313682278446353824572883796530332647962442541061964839129
fp_sq1_rep(&r0,8);
fp_mul2(&r0,&r11); // 2599281455842113261320161736400646920161343375351992881180984113385020350617190872309301921477367713078575151763709741219092344438991582040643159596369288201816832609827380067179401510817551421729101987687857693991434376443148020557690806834229781072302663282266579090658251911765157878385290511862998817045
*x = r0;
fp check; fp_sq2(&check,x);
return fp_isequal(&check,&origx);
}