libsignal-protocol-worker.js 980 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112251132511425115251162511725118251192512025121251222512325124251252512625127251282512925130251312513225133251342513525136251372513825139251402514125142251432514425145251462514725148251492515025151251522515325154251552515625157251582515925160251612516225163251642516525166251672516825169251702517125172251732517425175251762517725178251792518025181251822518325184251852518625187251882518925190251912519225193251942519525196251972519825199252002520125202252032520425205252062520725208252092521025211252122521325214252152521625217252182521925220252212522225223252242522525226252272522825229252302523125232252332523425235252362523725238252392524025241252422524325244252452524625247252482524925250252512525225253252542525525256252572525825259252602526125262252632526425265252662526725268252692527025271252722527325274252752527625277252782527925280252812528225283252842528525286252872528825289252902529125292252932529425295252962529725298
  1. ;(function(){
  2. var Internal = {};
  3. var libsignal = {};
  4. // The Module object: Our interface to the outside world. We import
  5. // and export values on it, and do the work to get that through
  6. // closure compiler if necessary. There are various ways Module can be used:
  7. // 1. Not defined. We create it here
  8. // 2. A function parameter, function(Module) { ..generated code.. }
  9. // 3. pre-run appended it, var Module = {}; ..generated code..
  10. // 4. External script tag defines var Module.
  11. // We need to do an eval in order to handle the closure compiler
  12. // case, where this code here is minified but Module was defined
  13. // elsewhere (e.g. case 4 above). We also need to check if Module
  14. // already exists (e.g. case 3 above).
  15. // Note that if you want to run closure, and also to use Module
  16. // after the generated code, you will need to define var Module = {};
  17. // before the code. Then that object will be used in the code, and you
  18. // can continue to use Module afterwards as well.
  19. var Module;
  20. if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {};
  21. // Sometimes an existing Module object exists with properties
  22. // meant to overwrite the default module functionality. Here
  23. // we collect those properties and reapply _after_ we configure
  24. // the current environment's defaults to avoid having to be so
  25. // defensive during initialization.
  26. var moduleOverrides = {};
  27. for (var key in Module) {
  28. if (Module.hasOwnProperty(key)) {
  29. moduleOverrides[key] = Module[key];
  30. }
  31. }
  32. // The environment setup code below is customized to use Module.
  33. // *** Environment setup code ***
  34. var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function';
  35. var ENVIRONMENT_IS_WEB = typeof window === 'object';
  36. var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';
  37. var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
  38. if (ENVIRONMENT_IS_NODE) {
  39. // Expose functionality in the same simple way that the shells work
  40. // Note that we pollute the global namespace here, otherwise we break in node
  41. if (!Module['print']) Module['print'] = function print(x) {
  42. process['stdout'].write(x + '\n');
  43. };
  44. if (!Module['printErr']) Module['printErr'] = function printErr(x) {
  45. process['stderr'].write(x + '\n');
  46. };
  47. var nodeFS = require('fs');
  48. var nodePath = require('path');
  49. Module['read'] = function read(filename, binary) {
  50. filename = nodePath['normalize'](filename);
  51. var ret = nodeFS['readFileSync'](filename);
  52. // The path is absolute if the normalized version is the same as the resolved.
  53. if (!ret && filename != nodePath['resolve'](filename)) {
  54. filename = path.join(__dirname, '..', 'src', filename);
  55. ret = nodeFS['readFileSync'](filename);
  56. }
  57. if (ret && !binary) ret = ret.toString();
  58. return ret;
  59. };
  60. Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) };
  61. Module['load'] = function load(f) {
  62. globalEval(read(f));
  63. };
  64. if (process['argv'].length > 1) {
  65. Module['thisProgram'] = process['argv'][1].replace(/\\/g, '/');
  66. } else {
  67. Module['thisProgram'] = 'unknown-program';
  68. }
  69. Module['arguments'] = process['argv'].slice(2);
  70. if (typeof module !== 'undefined') {
  71. module['exports'] = Module;
  72. }
  73. process['on']('uncaughtException', function(ex) {
  74. // suppress ExitStatus exceptions from showing an error
  75. if (!(ex instanceof ExitStatus)) {
  76. throw ex;
  77. }
  78. });
  79. }
  80. else if (ENVIRONMENT_IS_SHELL) {
  81. if (!Module['print']) Module['print'] = print;
  82. if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm
  83. if (typeof read != 'undefined') {
  84. Module['read'] = read;
  85. } else {
  86. Module['read'] = function read() { throw 'no read() available (jsc?)' };
  87. }
  88. Module['readBinary'] = function readBinary(f) {
  89. if (typeof readbuffer === 'function') {
  90. return new Uint8Array(readbuffer(f));
  91. }
  92. var data = read(f, 'binary');
  93. assert(typeof data === 'object');
  94. return data;
  95. };
  96. if (typeof scriptArgs != 'undefined') {
  97. Module['arguments'] = scriptArgs;
  98. } else if (typeof arguments != 'undefined') {
  99. Module['arguments'] = arguments;
  100. }
  101. this['Module'] = Module;
  102. }
  103. else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
  104. Module['read'] = function read(url) {
  105. var xhr = new XMLHttpRequest();
  106. xhr.open('GET', url, false);
  107. xhr.send(null);
  108. return xhr.responseText;
  109. };
  110. if (typeof arguments != 'undefined') {
  111. Module['arguments'] = arguments;
  112. }
  113. if (typeof console !== 'undefined') {
  114. if (!Module['print']) Module['print'] = function print(x) {
  115. console.log(x);
  116. };
  117. if (!Module['printErr']) Module['printErr'] = function printErr(x) {
  118. console.log(x);
  119. };
  120. } else {
  121. // Probably a worker, and without console.log. We can do very little here...
  122. var TRY_USE_DUMP = false;
  123. if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) {
  124. dump(x);
  125. }) : (function(x) {
  126. // self.postMessage(x); // enable this if you want stdout to be sent as messages
  127. }));
  128. }
  129. if (ENVIRONMENT_IS_WEB) {
  130. window['Module'] = Module;
  131. } else {
  132. Module['load'] = importScripts;
  133. }
  134. }
  135. else {
  136. // Unreachable because SHELL is dependant on the others
  137. throw 'Unknown runtime environment. Where are we?';
  138. }
  139. function globalEval(x) {
  140. eval.call(null, x);
  141. }
  142. if (!Module['load'] && Module['read']) {
  143. Module['load'] = function load(f) {
  144. globalEval(Module['read'](f));
  145. };
  146. }
  147. if (!Module['print']) {
  148. Module['print'] = function(){};
  149. }
  150. if (!Module['printErr']) {
  151. Module['printErr'] = Module['print'];
  152. }
  153. if (!Module['arguments']) {
  154. Module['arguments'] = [];
  155. }
  156. if (!Module['thisProgram']) {
  157. Module['thisProgram'] = './this.program';
  158. }
  159. // *** Environment setup code ***
  160. // Closure helpers
  161. Module.print = Module['print'];
  162. Module.printErr = Module['printErr'];
  163. // Callbacks
  164. Module['preRun'] = [];
  165. Module['postRun'] = [];
  166. // Merge back in the overrides
  167. for (var key in moduleOverrides) {
  168. if (moduleOverrides.hasOwnProperty(key)) {
  169. Module[key] = moduleOverrides[key];
  170. }
  171. }
  172. // === Preamble library stuff ===
  173. // Documentation for the public APIs defined in this file must be updated in:
  174. // site/source/docs/api_reference/preamble.js.rst
  175. // A prebuilt local version of the documentation is available at:
  176. // site/build/text/docs/api_reference/preamble.js.txt
  177. // You can also build docs locally as HTML or other formats in site/
  178. // An online HTML version (which may be of a different version of Emscripten)
  179. // is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html
  180. //========================================
  181. // Runtime code shared with compiler
  182. //========================================
  183. var Runtime = {
  184. setTempRet0: function (value) {
  185. tempRet0 = value;
  186. },
  187. getTempRet0: function () {
  188. return tempRet0;
  189. },
  190. stackSave: function () {
  191. return STACKTOP;
  192. },
  193. stackRestore: function (stackTop) {
  194. STACKTOP = stackTop;
  195. },
  196. getNativeTypeSize: function (type) {
  197. switch (type) {
  198. case 'i1': case 'i8': return 1;
  199. case 'i16': return 2;
  200. case 'i32': return 4;
  201. case 'i64': return 8;
  202. case 'float': return 4;
  203. case 'double': return 8;
  204. default: {
  205. if (type[type.length-1] === '*') {
  206. return Runtime.QUANTUM_SIZE; // A pointer
  207. } else if (type[0] === 'i') {
  208. var bits = parseInt(type.substr(1));
  209. assert(bits % 8 === 0);
  210. return bits/8;
  211. } else {
  212. return 0;
  213. }
  214. }
  215. }
  216. },
  217. getNativeFieldSize: function (type) {
  218. return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE);
  219. },
  220. STACK_ALIGN: 16,
  221. getAlignSize: function (type, size, vararg) {
  222. // we align i64s and doubles on 64-bit boundaries, unlike x86
  223. if (!vararg && (type == 'i64' || type == 'double')) return 8;
  224. if (!type) return Math.min(size, 8); // align structures internally to 64 bits
  225. return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE);
  226. },
  227. dynCall: function (sig, ptr, args) {
  228. if (args && args.length) {
  229. if (!args.splice) args = Array.prototype.slice.call(args);
  230. args.splice(0, 0, ptr);
  231. return Module['dynCall_' + sig].apply(null, args);
  232. } else {
  233. return Module['dynCall_' + sig].call(null, ptr);
  234. }
  235. },
  236. functionPointers: [],
  237. addFunction: function (func) {
  238. for (var i = 0; i < Runtime.functionPointers.length; i++) {
  239. if (!Runtime.functionPointers[i]) {
  240. Runtime.functionPointers[i] = func;
  241. return 2*(1 + i);
  242. }
  243. }
  244. throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.';
  245. },
  246. removeFunction: function (index) {
  247. Runtime.functionPointers[(index-2)/2] = null;
  248. },
  249. getAsmConst: function (code, numArgs) {
  250. // code is a constant string on the heap, so we can cache these
  251. if (!Runtime.asmConstCache) Runtime.asmConstCache = {};
  252. var func = Runtime.asmConstCache[code];
  253. if (func) return func;
  254. var args = [];
  255. for (var i = 0; i < numArgs; i++) {
  256. args.push(String.fromCharCode(36) + i); // $0, $1 etc
  257. }
  258. var source = Pointer_stringify(code);
  259. if (source[0] === '"') {
  260. // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct
  261. if (source.indexOf('"', 1) === source.length-1) {
  262. source = source.substr(1, source.length-2);
  263. } else {
  264. // something invalid happened, e.g. EM_ASM("..code($0)..", input)
  265. abort('invalid EM_ASM input |' + source + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)');
  266. }
  267. }
  268. try {
  269. // Module is the only 'upvar', which we provide directly. We also provide FS for legacy support.
  270. var evalled = eval('(function(Module, FS) { return function(' + args.join(',') + '){ ' + source + ' } })')(Module, typeof FS !== 'undefined' ? FS : null);
  271. } catch(e) {
  272. Module.printErr('error in executing inline EM_ASM code: ' + e + ' on: \n\n' + source + '\n\nwith args |' + args + '| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)');
  273. throw e;
  274. }
  275. return Runtime.asmConstCache[code] = evalled;
  276. },
  277. warnOnce: function (text) {
  278. if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};
  279. if (!Runtime.warnOnce.shown[text]) {
  280. Runtime.warnOnce.shown[text] = 1;
  281. Module.printErr(text);
  282. }
  283. },
  284. funcWrappers: {},
  285. getFuncWrapper: function (func, sig) {
  286. assert(sig);
  287. if (!Runtime.funcWrappers[sig]) {
  288. Runtime.funcWrappers[sig] = {};
  289. }
  290. var sigCache = Runtime.funcWrappers[sig];
  291. if (!sigCache[func]) {
  292. sigCache[func] = function dynCall_wrapper() {
  293. return Runtime.dynCall(sig, func, arguments);
  294. };
  295. }
  296. return sigCache[func];
  297. },
  298. UTF8Processor: function () {
  299. var buffer = [];
  300. var needed = 0;
  301. this.processCChar = function (code) {
  302. code = code & 0xFF;
  303. if (buffer.length == 0) {
  304. if ((code & 0x80) == 0x00) { // 0xxxxxxx
  305. return String.fromCharCode(code);
  306. }
  307. buffer.push(code);
  308. if ((code & 0xE0) == 0xC0) { // 110xxxxx
  309. needed = 1;
  310. } else if ((code & 0xF0) == 0xE0) { // 1110xxxx
  311. needed = 2;
  312. } else { // 11110xxx
  313. needed = 3;
  314. }
  315. return '';
  316. }
  317. if (needed) {
  318. buffer.push(code);
  319. needed--;
  320. if (needed > 0) return '';
  321. }
  322. var c1 = buffer[0];
  323. var c2 = buffer[1];
  324. var c3 = buffer[2];
  325. var c4 = buffer[3];
  326. var ret;
  327. if (buffer.length == 2) {
  328. ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F));
  329. } else if (buffer.length == 3) {
  330. ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F));
  331. } else {
  332. // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
  333. var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) |
  334. ((c3 & 0x3F) << 6) | (c4 & 0x3F);
  335. ret = String.fromCharCode(
  336. (((codePoint - 0x10000) / 0x400)|0) + 0xD800,
  337. (codePoint - 0x10000) % 0x400 + 0xDC00);
  338. }
  339. buffer.length = 0;
  340. return ret;
  341. }
  342. this.processJSString = function processJSString(string) {
  343. /* TODO: use TextEncoder when present,
  344. var encoder = new TextEncoder();
  345. encoder['encoding'] = "utf-8";
  346. var utf8Array = encoder['encode'](aMsg.data);
  347. */
  348. string = unescape(encodeURIComponent(string));
  349. var ret = [];
  350. for (var i = 0; i < string.length; i++) {
  351. ret.push(string.charCodeAt(i));
  352. }
  353. return ret;
  354. }
  355. },
  356. getCompilerSetting: function (name) {
  357. throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work';
  358. },
  359. stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+15)&-16); return ret; },
  360. staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = (((STATICTOP)+15)&-16); return ret; },
  361. dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = (((DYNAMICTOP)+15)&-16); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; },
  362. alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 16))*(quantum ? quantum : 16); return ret; },
  363. makeBigInt: function (low,high,unsigned) { var ret = (unsigned ? ((+((low>>>0)))+((+((high>>>0)))*4294967296.0)) : ((+((low>>>0)))+((+((high|0)))*4294967296.0))); return ret; },
  364. GLOBAL_BASE: 8,
  365. QUANTUM_SIZE: 4,
  366. __dummy__: 0
  367. }
  368. Module['Runtime'] = Runtime;
  369. //========================================
  370. // Runtime essentials
  371. //========================================
  372. var __THREW__ = 0; // Used in checking for thrown exceptions.
  373. var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort()
  374. var EXITSTATUS = 0;
  375. var undef = 0;
  376. // tempInt is used for 32-bit signed values or smaller. tempBigInt is used
  377. // for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt
  378. var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat;
  379. var tempI64, tempI64b;
  380. var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;
  381. function assert(condition, text) {
  382. if (!condition) {
  383. abort('Assertion failed: ' + text);
  384. }
  385. }
  386. var globalScope = this;
  387. // Returns the C function with a specified identifier (for C++, you need to do manual name mangling)
  388. function getCFunc(ident) {
  389. var func = Module['_' + ident]; // closure exported function
  390. if (!func) {
  391. try {
  392. func = eval('_' + ident); // explicit lookup
  393. } catch(e) {}
  394. }
  395. assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)');
  396. return func;
  397. }
  398. var cwrap, ccall;
  399. (function(){
  400. var JSfuncs = {
  401. // Helpers for cwrap -- it can't refer to Runtime directly because it might
  402. // be renamed by closure, instead it calls JSfuncs['stackSave'].body to find
  403. // out what the minified function name is.
  404. 'stackSave': function() {
  405. Runtime.stackSave()
  406. },
  407. 'stackRestore': function() {
  408. Runtime.stackRestore()
  409. },
  410. // type conversion from js to c
  411. 'arrayToC' : function(arr) {
  412. var ret = Runtime.stackAlloc(arr.length);
  413. writeArrayToMemory(arr, ret);
  414. return ret;
  415. },
  416. 'stringToC' : function(str) {
  417. var ret = 0;
  418. if (str !== null && str !== undefined && str !== 0) { // null string
  419. // at most 4 bytes per UTF-8 code point, +1 for the trailing '\0'
  420. ret = Runtime.stackAlloc((str.length << 2) + 1);
  421. writeStringToMemory(str, ret);
  422. }
  423. return ret;
  424. }
  425. };
  426. // For fast lookup of conversion functions
  427. var toC = {'string' : JSfuncs['stringToC'], 'array' : JSfuncs['arrayToC']};
  428. // C calling interface.
  429. ccall = function ccallFunc(ident, returnType, argTypes, args) {
  430. var func = getCFunc(ident);
  431. var cArgs = [];
  432. var stack = 0;
  433. if (args) {
  434. for (var i = 0; i < args.length; i++) {
  435. var converter = toC[argTypes[i]];
  436. if (converter) {
  437. if (stack === 0) stack = Runtime.stackSave();
  438. cArgs[i] = converter(args[i]);
  439. } else {
  440. cArgs[i] = args[i];
  441. }
  442. }
  443. }
  444. var ret = func.apply(null, cArgs);
  445. if (returnType === 'string') ret = Pointer_stringify(ret);
  446. if (stack !== 0) Runtime.stackRestore(stack);
  447. return ret;
  448. }
  449. var sourceRegex = /^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;
  450. function parseJSFunc(jsfunc) {
  451. // Match the body and the return value of a javascript function source
  452. var parsed = jsfunc.toString().match(sourceRegex).slice(1);
  453. return {arguments : parsed[0], body : parsed[1], returnValue: parsed[2]}
  454. }
  455. var JSsource = {};
  456. for (var fun in JSfuncs) {
  457. if (JSfuncs.hasOwnProperty(fun)) {
  458. // Elements of toCsource are arrays of three items:
  459. // the code, and the return value
  460. JSsource[fun] = parseJSFunc(JSfuncs[fun]);
  461. }
  462. }
  463. cwrap = function cwrap(ident, returnType, argTypes) {
  464. argTypes = argTypes || [];
  465. var cfunc = getCFunc(ident);
  466. // When the function takes numbers and returns a number, we can just return
  467. // the original function
  468. var numericArgs = argTypes.every(function(type){ return type === 'number'});
  469. var numericRet = (returnType !== 'string');
  470. if ( numericRet && numericArgs) {
  471. return cfunc;
  472. }
  473. // Creation of the arguments list (["$1","$2",...,"$nargs"])
  474. var argNames = argTypes.map(function(x,i){return '$'+i});
  475. var funcstr = "(function(" + argNames.join(',') + ") {";
  476. var nargs = argTypes.length;
  477. if (!numericArgs) {
  478. // Generate the code needed to convert the arguments from javascript
  479. // values to pointers
  480. funcstr += 'var stack = ' + JSsource['stackSave'].body + ';';
  481. for (var i = 0; i < nargs; i++) {
  482. var arg = argNames[i], type = argTypes[i];
  483. if (type === 'number') continue;
  484. var convertCode = JSsource[type + 'ToC']; // [code, return]
  485. funcstr += 'var ' + convertCode.arguments + ' = ' + arg + ';';
  486. funcstr += convertCode.body + ';';
  487. funcstr += arg + '=' + convertCode.returnValue + ';';
  488. }
  489. }
  490. // When the code is compressed, the name of cfunc is not literally 'cfunc' anymore
  491. var cfuncname = parseJSFunc(function(){return cfunc}).returnValue;
  492. // Call the function
  493. funcstr += 'var ret = ' + cfuncname + '(' + argNames.join(',') + ');';
  494. if (!numericRet) { // Return type can only by 'string' or 'number'
  495. // Convert the result to a string
  496. var strgfy = parseJSFunc(function(){return Pointer_stringify}).returnValue;
  497. funcstr += 'ret = ' + strgfy + '(ret);';
  498. }
  499. if (!numericArgs) {
  500. // If we had a stack, restore it
  501. funcstr += JSsource['stackRestore'].body.replace('()', '(stack)') + ';';
  502. }
  503. funcstr += 'return ret})';
  504. return eval(funcstr);
  505. };
  506. })();
  507. Module["cwrap"] = cwrap;
  508. Module["ccall"] = ccall;
  509. function setValue(ptr, value, type, noSafe) {
  510. type = type || 'i8';
  511. if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit
  512. switch(type) {
  513. case 'i1': HEAP8[((ptr)>>0)]=value; break;
  514. case 'i8': HEAP8[((ptr)>>0)]=value; break;
  515. case 'i16': HEAP16[((ptr)>>1)]=value; break;
  516. case 'i32': HEAP32[((ptr)>>2)]=value; break;
  517. case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math_abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break;
  518. case 'float': HEAPF32[((ptr)>>2)]=value; break;
  519. case 'double': HEAPF64[((ptr)>>3)]=value; break;
  520. default: abort('invalid type for setValue: ' + type);
  521. }
  522. }
  523. Module['setValue'] = setValue;
  524. function getValue(ptr, type, noSafe) {
  525. type = type || 'i8';
  526. if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit
  527. switch(type) {
  528. case 'i1': return HEAP8[((ptr)>>0)];
  529. case 'i8': return HEAP8[((ptr)>>0)];
  530. case 'i16': return HEAP16[((ptr)>>1)];
  531. case 'i32': return HEAP32[((ptr)>>2)];
  532. case 'i64': return HEAP32[((ptr)>>2)];
  533. case 'float': return HEAPF32[((ptr)>>2)];
  534. case 'double': return HEAPF64[((ptr)>>3)];
  535. default: abort('invalid type for setValue: ' + type);
  536. }
  537. return null;
  538. }
  539. Module['getValue'] = getValue;
  540. var ALLOC_NORMAL = 0; // Tries to use _malloc()
  541. var ALLOC_STACK = 1; // Lives for the duration of the current function call
  542. var ALLOC_STATIC = 2; // Cannot be freed
  543. var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk
  544. var ALLOC_NONE = 4; // Do not allocate
  545. Module['ALLOC_NORMAL'] = ALLOC_NORMAL;
  546. Module['ALLOC_STACK'] = ALLOC_STACK;
  547. Module['ALLOC_STATIC'] = ALLOC_STATIC;
  548. Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC;
  549. Module['ALLOC_NONE'] = ALLOC_NONE;
  550. // allocate(): This is for internal use. You can use it yourself as well, but the interface
  551. // is a little tricky (see docs right below). The reason is that it is optimized
  552. // for multiple syntaxes to save space in generated code. So you should
  553. // normally not use allocate(), and instead allocate memory using _malloc(),
  554. // initialize it with setValue(), and so forth.
  555. // @slab: An array of data, or a number. If a number, then the size of the block to allocate,
  556. // in *bytes* (note that this is sometimes confusing: the next parameter does not
  557. // affect this!)
  558. // @types: Either an array of types, one for each byte (or 0 if no type at that position),
  559. // or a single type which is used for the entire block. This only matters if there
  560. // is initial data - if @slab is a number, then this does not matter at all and is
  561. // ignored.
  562. // @allocator: How to allocate memory, see ALLOC_*
  563. function allocate(slab, types, allocator, ptr) {
  564. var zeroinit, size;
  565. if (typeof slab === 'number') {
  566. zeroinit = true;
  567. size = slab;
  568. } else {
  569. zeroinit = false;
  570. size = slab.length;
  571. }
  572. var singleType = typeof types === 'string' ? types : null;
  573. var ret;
  574. if (allocator == ALLOC_NONE) {
  575. ret = ptr;
  576. } else {
  577. ret = [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));
  578. }
  579. if (zeroinit) {
  580. var ptr = ret, stop;
  581. assert((ret & 3) == 0);
  582. stop = ret + (size & ~3);
  583. for (; ptr < stop; ptr += 4) {
  584. HEAP32[((ptr)>>2)]=0;
  585. }
  586. stop = ret + size;
  587. while (ptr < stop) {
  588. HEAP8[((ptr++)>>0)]=0;
  589. }
  590. return ret;
  591. }
  592. if (singleType === 'i8') {
  593. if (slab.subarray || slab.slice) {
  594. HEAPU8.set(slab, ret);
  595. } else {
  596. HEAPU8.set(new Uint8Array(slab), ret);
  597. }
  598. return ret;
  599. }
  600. var i = 0, type, typeSize, previousType;
  601. while (i < size) {
  602. var curr = slab[i];
  603. if (typeof curr === 'function') {
  604. curr = Runtime.getFunctionIndex(curr);
  605. }
  606. type = singleType || types[i];
  607. if (type === 0) {
  608. i++;
  609. continue;
  610. }
  611. if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later
  612. setValue(ret+i, curr, type);
  613. // no need to look up size unless type changes, so cache it
  614. if (previousType !== type) {
  615. typeSize = Runtime.getNativeTypeSize(type);
  616. previousType = type;
  617. }
  618. i += typeSize;
  619. }
  620. return ret;
  621. }
  622. Module['allocate'] = allocate;
  623. function Pointer_stringify(ptr, /* optional */ length) {
  624. if (length === 0 || !ptr) return '';
  625. // TODO: use TextDecoder
  626. // Find the length, and check for UTF while doing so
  627. var hasUtf = false;
  628. var t;
  629. var i = 0;
  630. while (1) {
  631. t = HEAPU8[(((ptr)+(i))>>0)];
  632. if (t >= 128) hasUtf = true;
  633. else if (t == 0 && !length) break;
  634. i++;
  635. if (length && i == length) break;
  636. }
  637. if (!length) length = i;
  638. var ret = '';
  639. if (!hasUtf) {
  640. var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack
  641. var curr;
  642. while (length > 0) {
  643. curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
  644. ret = ret ? ret + curr : curr;
  645. ptr += MAX_CHUNK;
  646. length -= MAX_CHUNK;
  647. }
  648. return ret;
  649. }
  650. var utf8 = new Runtime.UTF8Processor();
  651. for (i = 0; i < length; i++) {
  652. t = HEAPU8[(((ptr)+(i))>>0)];
  653. ret += utf8.processCChar(t);
  654. }
  655. return ret;
  656. }
  657. Module['Pointer_stringify'] = Pointer_stringify;
  658. function UTF16ToString(ptr) {
  659. var i = 0;
  660. var str = '';
  661. while (1) {
  662. var codeUnit = HEAP16[(((ptr)+(i*2))>>1)];
  663. if (codeUnit == 0)
  664. return str;
  665. ++i;
  666. // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through.
  667. str += String.fromCharCode(codeUnit);
  668. }
  669. }
  670. Module['UTF16ToString'] = UTF16ToString;
  671. function stringToUTF16(str, outPtr) {
  672. for(var i = 0; i < str.length; ++i) {
  673. // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.
  674. var codeUnit = str.charCodeAt(i); // possibly a lead surrogate
  675. HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit;
  676. }
  677. // Null-terminate the pointer to the HEAP.
  678. HEAP16[(((outPtr)+(str.length*2))>>1)]=0;
  679. }
  680. Module['stringToUTF16'] = stringToUTF16;
  681. function UTF32ToString(ptr) {
  682. var i = 0;
  683. var str = '';
  684. while (1) {
  685. var utf32 = HEAP32[(((ptr)+(i*4))>>2)];
  686. if (utf32 == 0)
  687. return str;
  688. ++i;
  689. // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing.
  690. if (utf32 >= 0x10000) {
  691. var ch = utf32 - 0x10000;
  692. str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));
  693. } else {
  694. str += String.fromCharCode(utf32);
  695. }
  696. }
  697. }
  698. Module['UTF32ToString'] = UTF32ToString;
  699. function stringToUTF32(str, outPtr) {
  700. var iChar = 0;
  701. for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) {
  702. // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.
  703. var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate
  704. if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) {
  705. var trailSurrogate = str.charCodeAt(++iCodeUnit);
  706. codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF);
  707. }
  708. HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit;
  709. ++iChar;
  710. }
  711. // Null-terminate the pointer to the HEAP.
  712. HEAP32[(((outPtr)+(iChar*4))>>2)]=0;
  713. }
  714. Module['stringToUTF32'] = stringToUTF32;
  715. function demangle(func) {
  716. var hasLibcxxabi = !!Module['___cxa_demangle'];
  717. if (hasLibcxxabi) {
  718. try {
  719. var buf = _malloc(func.length);
  720. writeStringToMemory(func.substr(1), buf);
  721. var status = _malloc(4);
  722. var ret = Module['___cxa_demangle'](buf, 0, 0, status);
  723. if (getValue(status, 'i32') === 0 && ret) {
  724. return Pointer_stringify(ret);
  725. }
  726. // otherwise, libcxxabi failed, we can try ours which may return a partial result
  727. } catch(e) {
  728. // failure when using libcxxabi, we can try ours which may return a partial result
  729. } finally {
  730. if (buf) _free(buf);
  731. if (status) _free(status);
  732. if (ret) _free(ret);
  733. }
  734. }
  735. var i = 3;
  736. // params, etc.
  737. var basicTypes = {
  738. 'v': 'void',
  739. 'b': 'bool',
  740. 'c': 'char',
  741. 's': 'short',
  742. 'i': 'int',
  743. 'l': 'long',
  744. 'f': 'float',
  745. 'd': 'double',
  746. 'w': 'wchar_t',
  747. 'a': 'signed char',
  748. 'h': 'unsigned char',
  749. 't': 'unsigned short',
  750. 'j': 'unsigned int',
  751. 'm': 'unsigned long',
  752. 'x': 'long long',
  753. 'y': 'unsigned long long',
  754. 'z': '...'
  755. };
  756. var subs = [];
  757. var first = true;
  758. function dump(x) {
  759. //return;
  760. if (x) Module.print(x);
  761. Module.print(func);
  762. var pre = '';
  763. for (var a = 0; a < i; a++) pre += ' ';
  764. Module.print (pre + '^');
  765. }
  766. function parseNested() {
  767. i++;
  768. if (func[i] === 'K') i++; // ignore const
  769. var parts = [];
  770. while (func[i] !== 'E') {
  771. if (func[i] === 'S') { // substitution
  772. i++;
  773. var next = func.indexOf('_', i);
  774. var num = func.substring(i, next) || 0;
  775. parts.push(subs[num] || '?');
  776. i = next+1;
  777. continue;
  778. }
  779. if (func[i] === 'C') { // constructor
  780. parts.push(parts[parts.length-1]);
  781. i += 2;
  782. continue;
  783. }
  784. var size = parseInt(func.substr(i));
  785. var pre = size.toString().length;
  786. if (!size || !pre) { i--; break; } // counter i++ below us
  787. var curr = func.substr(i + pre, size);
  788. parts.push(curr);
  789. subs.push(curr);
  790. i += pre + size;
  791. }
  792. i++; // skip E
  793. return parts;
  794. }
  795. function parse(rawList, limit, allowVoid) { // main parser
  796. limit = limit || Infinity;
  797. var ret = '', list = [];
  798. function flushList() {
  799. return '(' + list.join(', ') + ')';
  800. }
  801. var name;
  802. if (func[i] === 'N') {
  803. // namespaced N-E
  804. name = parseNested().join('::');
  805. limit--;
  806. if (limit === 0) return rawList ? [name] : name;
  807. } else {
  808. // not namespaced
  809. if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L'
  810. var size = parseInt(func.substr(i));
  811. if (size) {
  812. var pre = size.toString().length;
  813. name = func.substr(i + pre, size);
  814. i += pre + size;
  815. }
  816. }
  817. first = false;
  818. if (func[i] === 'I') {
  819. i++;
  820. var iList = parse(true);
  821. var iRet = parse(true, 1, true);
  822. ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>';
  823. } else {
  824. ret = name;
  825. }
  826. paramLoop: while (i < func.length && limit-- > 0) {
  827. //dump('paramLoop');
  828. var c = func[i++];
  829. if (c in basicTypes) {
  830. list.push(basicTypes[c]);
  831. } else {
  832. switch (c) {
  833. case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer
  834. case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference
  835. case 'L': { // literal
  836. i++; // skip basic type
  837. var end = func.indexOf('E', i);
  838. var size = end - i;
  839. list.push(func.substr(i, size));
  840. i += size + 2; // size + 'EE'
  841. break;
  842. }
  843. case 'A': { // array
  844. var size = parseInt(func.substr(i));
  845. i += size.toString().length;
  846. if (func[i] !== '_') throw '?';
  847. i++; // skip _
  848. list.push(parse(true, 1, true)[0] + ' [' + size + ']');
  849. break;
  850. }
  851. case 'E': break paramLoop;
  852. default: ret += '?' + c; break paramLoop;
  853. }
  854. }
  855. }
  856. if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void)
  857. if (rawList) {
  858. if (ret) {
  859. list.push(ret + '?');
  860. }
  861. return list;
  862. } else {
  863. return ret + flushList();
  864. }
  865. }
  866. var parsed = func;
  867. try {
  868. // Special-case the entry point, since its name differs from other name mangling.
  869. if (func == 'Object._main' || func == '_main') {
  870. return 'main()';
  871. }
  872. if (typeof func === 'number') func = Pointer_stringify(func);
  873. if (func[0] !== '_') return func;
  874. if (func[1] !== '_') return func; // C function
  875. if (func[2] !== 'Z') return func;
  876. switch (func[3]) {
  877. case 'n': return 'operator new()';
  878. case 'd': return 'operator delete()';
  879. }
  880. parsed = parse();
  881. } catch(e) {
  882. parsed += '?';
  883. }
  884. if (parsed.indexOf('?') >= 0 && !hasLibcxxabi) {
  885. Runtime.warnOnce('warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling');
  886. }
  887. return parsed;
  888. }
  889. function demangleAll(text) {
  890. return text.replace(/__Z[\w\d_]+/g, function(x) { var y = demangle(x); return x === y ? x : (x + ' [' + y + ']') });
  891. }
  892. function jsStackTrace() {
  893. var err = new Error();
  894. if (!err.stack) {
  895. // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown,
  896. // so try that as a special-case.
  897. try {
  898. throw new Error(0);
  899. } catch(e) {
  900. err = e;
  901. }
  902. if (!err.stack) {
  903. return '(no stack trace available)';
  904. }
  905. }
  906. return err.stack.toString();
  907. }
  908. function stackTrace() {
  909. return demangleAll(jsStackTrace());
  910. }
  911. Module['stackTrace'] = stackTrace;
  912. // Memory management
  913. var PAGE_SIZE = 4096;
  914. function alignMemoryPage(x) {
  915. return (x+4095)&-4096;
  916. }
  917. var HEAP;
  918. var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
  919. var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area
  920. var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area
  921. var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk
  922. function enlargeMemory() {
  923. abort('Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value ' + TOTAL_MEMORY + ', (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.');
  924. }
  925. var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;
  926. var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 16777216;
  927. var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152;
  928. var totalMemory = 64*1024;
  929. while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) {
  930. if (totalMemory < 16*1024*1024) {
  931. totalMemory *= 2;
  932. } else {
  933. totalMemory += 16*1024*1024
  934. }
  935. }
  936. if (totalMemory !== TOTAL_MEMORY) {
  937. Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be compliant with the asm.js spec');
  938. TOTAL_MEMORY = totalMemory;
  939. }
  940. // Initialize the runtime's memory
  941. // check for full engine support (use string 'subarray' to avoid closure compiler confusion)
  942. assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']),
  943. 'JS engine does not provide full typed array support');
  944. var buffer = new ArrayBuffer(TOTAL_MEMORY);
  945. HEAP8 = new Int8Array(buffer);
  946. HEAP16 = new Int16Array(buffer);
  947. HEAP32 = new Int32Array(buffer);
  948. HEAPU8 = new Uint8Array(buffer);
  949. HEAPU16 = new Uint16Array(buffer);
  950. HEAPU32 = new Uint32Array(buffer);
  951. HEAPF32 = new Float32Array(buffer);
  952. HEAPF64 = new Float64Array(buffer);
  953. // Endianness check (note: assumes compiler arch was little-endian)
  954. HEAP32[0] = 255;
  955. assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system');
  956. Module['HEAP'] = HEAP;
  957. Module['buffer'] = buffer;
  958. Module['HEAP8'] = HEAP8;
  959. Module['HEAP16'] = HEAP16;
  960. Module['HEAP32'] = HEAP32;
  961. Module['HEAPU8'] = HEAPU8;
  962. Module['HEAPU16'] = HEAPU16;
  963. Module['HEAPU32'] = HEAPU32;
  964. Module['HEAPF32'] = HEAPF32;
  965. Module['HEAPF64'] = HEAPF64;
  966. function callRuntimeCallbacks(callbacks) {
  967. while(callbacks.length > 0) {
  968. var callback = callbacks.shift();
  969. if (typeof callback == 'function') {
  970. callback();
  971. continue;
  972. }
  973. var func = callback.func;
  974. if (typeof func === 'number') {
  975. if (callback.arg === undefined) {
  976. Runtime.dynCall('v', func);
  977. } else {
  978. Runtime.dynCall('vi', func, [callback.arg]);
  979. }
  980. } else {
  981. func(callback.arg === undefined ? null : callback.arg);
  982. }
  983. }
  984. }
  985. var __ATPRERUN__ = []; // functions called before the runtime is initialized
  986. var __ATINIT__ = []; // functions called during startup
  987. var __ATMAIN__ = []; // functions called when main() is to be run
  988. var __ATEXIT__ = []; // functions called during shutdown
  989. var __ATPOSTRUN__ = []; // functions called after the runtime has exited
  990. var runtimeInitialized = false;
  991. var runtimeExited = false;
  992. function preRun() {
  993. // compatibility - merge in anything from Module['preRun'] at this time
  994. if (Module['preRun']) {
  995. if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
  996. while (Module['preRun'].length) {
  997. addOnPreRun(Module['preRun'].shift());
  998. }
  999. }
  1000. callRuntimeCallbacks(__ATPRERUN__);
  1001. }
  1002. function ensureInitRuntime() {
  1003. if (runtimeInitialized) return;
  1004. runtimeInitialized = true;
  1005. callRuntimeCallbacks(__ATINIT__);
  1006. }
  1007. function preMain() {
  1008. callRuntimeCallbacks(__ATMAIN__);
  1009. }
  1010. function exitRuntime() {
  1011. callRuntimeCallbacks(__ATEXIT__);
  1012. runtimeExited = true;
  1013. }
  1014. function postRun() {
  1015. // compatibility - merge in anything from Module['postRun'] at this time
  1016. if (Module['postRun']) {
  1017. if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];
  1018. while (Module['postRun'].length) {
  1019. addOnPostRun(Module['postRun'].shift());
  1020. }
  1021. }
  1022. callRuntimeCallbacks(__ATPOSTRUN__);
  1023. }
  1024. function addOnPreRun(cb) {
  1025. __ATPRERUN__.unshift(cb);
  1026. }
  1027. Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun;
  1028. function addOnInit(cb) {
  1029. __ATINIT__.unshift(cb);
  1030. }
  1031. Module['addOnInit'] = Module.addOnInit = addOnInit;
  1032. function addOnPreMain(cb) {
  1033. __ATMAIN__.unshift(cb);
  1034. }
  1035. Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain;
  1036. function addOnExit(cb) {
  1037. __ATEXIT__.unshift(cb);
  1038. }
  1039. Module['addOnExit'] = Module.addOnExit = addOnExit;
  1040. function addOnPostRun(cb) {
  1041. __ATPOSTRUN__.unshift(cb);
  1042. }
  1043. Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun;
  1044. // Tools
  1045. function intArrayFromString(stringy, dontAddNull, length /* optional */) {
  1046. var ret = (new Runtime.UTF8Processor()).processJSString(stringy);
  1047. if (length) {
  1048. ret.length = length;
  1049. }
  1050. if (!dontAddNull) {
  1051. ret.push(0);
  1052. }
  1053. return ret;
  1054. }
  1055. Module['intArrayFromString'] = intArrayFromString;
  1056. function intArrayToString(array) {
  1057. var ret = [];
  1058. for (var i = 0; i < array.length; i++) {
  1059. var chr = array[i];
  1060. if (chr > 0xFF) {
  1061. chr &= 0xFF;
  1062. }
  1063. ret.push(String.fromCharCode(chr));
  1064. }
  1065. return ret.join('');
  1066. }
  1067. Module['intArrayToString'] = intArrayToString;
  1068. function writeStringToMemory(string, buffer, dontAddNull) {
  1069. var array = intArrayFromString(string, dontAddNull);
  1070. var i = 0;
  1071. while (i < array.length) {
  1072. var chr = array[i];
  1073. HEAP8[(((buffer)+(i))>>0)]=chr;
  1074. i = i + 1;
  1075. }
  1076. }
  1077. Module['writeStringToMemory'] = writeStringToMemory;
  1078. function writeArrayToMemory(array, buffer) {
  1079. for (var i = 0; i < array.length; i++) {
  1080. HEAP8[(((buffer)+(i))>>0)]=array[i];
  1081. }
  1082. }
  1083. Module['writeArrayToMemory'] = writeArrayToMemory;
  1084. function writeAsciiToMemory(str, buffer, dontAddNull) {
  1085. for (var i = 0; i < str.length; i++) {
  1086. HEAP8[(((buffer)+(i))>>0)]=str.charCodeAt(i);
  1087. }
  1088. if (!dontAddNull) HEAP8[(((buffer)+(str.length))>>0)]=0;
  1089. }
  1090. Module['writeAsciiToMemory'] = writeAsciiToMemory;
  1091. function unSign(value, bits, ignore) {
  1092. if (value >= 0) {
  1093. return value;
  1094. }
  1095. return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts
  1096. : Math.pow(2, bits) + value;
  1097. }
  1098. function reSign(value, bits, ignore) {
  1099. if (value <= 0) {
  1100. return value;
  1101. }
  1102. var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32
  1103. : Math.pow(2, bits-1);
  1104. if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that
  1105. // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors
  1106. // TODO: In i64 mode 1, resign the two parts separately and safely
  1107. value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts
  1108. }
  1109. return value;
  1110. }
  1111. // check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 )
  1112. if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) {
  1113. var ah = a >>> 16;
  1114. var al = a & 0xffff;
  1115. var bh = b >>> 16;
  1116. var bl = b & 0xffff;
  1117. return (al*bl + ((ah*bl + al*bh) << 16))|0;
  1118. };
  1119. Math.imul = Math['imul'];
  1120. var Math_abs = Math.abs;
  1121. var Math_cos = Math.cos;
  1122. var Math_sin = Math.sin;
  1123. var Math_tan = Math.tan;
  1124. var Math_acos = Math.acos;
  1125. var Math_asin = Math.asin;
  1126. var Math_atan = Math.atan;
  1127. var Math_atan2 = Math.atan2;
  1128. var Math_exp = Math.exp;
  1129. var Math_log = Math.log;
  1130. var Math_sqrt = Math.sqrt;
  1131. var Math_ceil = Math.ceil;
  1132. var Math_floor = Math.floor;
  1133. var Math_pow = Math.pow;
  1134. var Math_imul = Math.imul;
  1135. var Math_fround = Math.fround;
  1136. var Math_min = Math.min;
  1137. // A counter of dependencies for calling run(). If we need to
  1138. // do asynchronous work before running, increment this and
  1139. // decrement it. Incrementing must happen in a place like
  1140. // PRE_RUN_ADDITIONS (used by emcc to add file preloading).
  1141. // Note that you can add dependencies in preRun, even though
  1142. // it happens right before run - run will be postponed until
  1143. // the dependencies are met.
  1144. var runDependencies = 0;
  1145. var runDependencyWatcher = null;
  1146. var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled
  1147. function addRunDependency(id) {
  1148. runDependencies++;
  1149. if (Module['monitorRunDependencies']) {
  1150. Module['monitorRunDependencies'](runDependencies);
  1151. }
  1152. }
  1153. Module['addRunDependency'] = addRunDependency;
  1154. function removeRunDependency(id) {
  1155. runDependencies--;
  1156. if (Module['monitorRunDependencies']) {
  1157. Module['monitorRunDependencies'](runDependencies);
  1158. }
  1159. if (runDependencies == 0) {
  1160. if (runDependencyWatcher !== null) {
  1161. clearInterval(runDependencyWatcher);
  1162. runDependencyWatcher = null;
  1163. }
  1164. if (dependenciesFulfilled) {
  1165. var callback = dependenciesFulfilled;
  1166. dependenciesFulfilled = null;
  1167. callback(); // can add another dependenciesFulfilled
  1168. }
  1169. }
  1170. }
  1171. Module['removeRunDependency'] = removeRunDependency;
  1172. Module["preloadedImages"] = {}; // maps url to image data
  1173. Module["preloadedAudios"] = {}; // maps url to audio data
  1174. var memoryInitializer = null;
  1175. // === Body ===
  1176. STATIC_BASE = 8;
  1177. STATICTOP = STATIC_BASE + 33040;
  1178. /* global initializers */ __ATINIT__.push();
  1179. /* memory initializer */ allocate([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,59,140,1,189,241,36,255,248,37,195,1,96,220,55,0,183,76,62,255,195,66,61,0,50,76,164,1,225,164,76,255,76,61,163,255,117,62,31,0,81,145,64,255,118,65,14,0,162,115,214,255,6,138,46,0,124,230,244,255,10,138,143,0,52,26,194,0,184,244,76,0,129,143,41,1,190,244,19,255,123,170,122,255,98,129,68,0,121,213,147,0,86,101,30,255,161,103,155,0,140,89,67,255,239,229,190,1,67,11,181,0,198,240,137,254,238,69,188,255,67,151,238,0,19,42,108,255,229,85,113,1,50,68,135,255,17,106,9,0,50,103,1,255,80,1,168,1,35,152,30,255,16,168,185,1,56,89,232,255,101,210,252,0,41,250,71,0,204,170,79,255,14,46,239,255,80,77,239,0,189,214,75,255,17,141,249,0,38,80,76,255,190,85,117,0,86,228,170,0,156,216,208,1,195,207,164,255,150,66,76,255,175,225,16,255,141,80,98,1,76,219,242,0,198,162,114,0,46,218,152,0,155,43,241,254,155,160,104,255,51,187,165,0,2,17,175,0,66,84,160,1,247,58,30,0,35,65,53,254,69,236,191,0,45,134,245,1,163,123,221,0,32,110,20,255,52,23,165,0,186,214,71,0,233,176,96,0,242,239,54,1,57,89,138,0,83,0,84,255,136,160,100,0,92,142,120,254,104,124,190,0,181,177,62,255,250,41,85,0,152,130,42,1,96,252,246,0,151,151,63,254,239,133,62,0,32,56,156,0,45,167,189,255,142,133,179,1,131,86,211,0,187,179,150,254,250,170,14,255,210,163,78,0,37,52,151,0,99,77,26,0,238,156,213,255,213,192,209,1,73,46,84,0,20,65,41,1,54,206,79,0,201,131,146,254,170,111,24,255,177,33,50,254,171,38,203,255,78,247,116,0,209,221,153,0,133,128,178,1,58,44,25,0,201,39,59,1,189,19,252,0,49,229,210,1,117,187,117,0,181,179,184,1,0,114,219,0,48,94,147,0,245,41,56,0,125,13,204,254,244,173,119,0,44,221,32,254,84,234,20,0,249,160,198,1,236,126,234,255,47,99,168,254,170,226,153,255,102,179,216,0,226,141,122,255,122,66,153,254,182,245,134,0,227,228,25,1,214,57,235,255,216,173,56,255,181,231,210,0,119,128,157,255,129,95,136,255,110,126,51,0,2,169,183,255,7,130,98,254,69,176,94,255,116,4,227,1,217,242,145,255,202,173,31,1,105,1,39,255,46,175,69,0,228,47,58,255,215,224,69,254,207,56,69,255,16,254,139,255,23,207,212,255,202,20,126,255,95,213,96,255,9,176,33,0,200,5,207,255,241,42,128,254,35,33,192,255,248,229,196,1,129,17,120,0,251,103,151,255,7,52,112,255,140,56,66,255,40,226,245,255,217,70,37,254,172,214,9,255,72,67,134,1,146,192,214,255,44,38,112,0,68,184,75,255,206,90,251,0,149,235,141,0,181,170,58,0,116,244,239,0,92,157,2,0,102,173,98,0,233,137,96,1,127,49,203,0,5,155,148,0,23,148,9,255,211,122,12,0,34,134,26,255,219,204,136,0,134,8,41,255,224,83,43,254,85,25,247,0,109,127,0,254,169,136,48,0,238,119,219,255,231,173,213,0,206,18,254,254,8,186,7,255,126,9,7,1,111,42,72,0,111,52,236,254,96,63,141,0,147,191,127,254,205,78,192,255,14,106,237,1,187,219,76,0,175,243,187,254,105,89,173,0,85,25,89,1,162,243,148,0,2,118,209,254,33,158,9,0,139,163,46,255,93,70,40,0,108,42,142,254,111,252,142,255,155,223,144,0,51,229,167,255,73,252,155,255,94,116,12,255,152,160,218,255,156,238,37,255,179,234,207,255,197,0,179,255,154,164,141,0,225,196,104,0,10,35,25,254,209,212,242,255,97,253,222,254,184,101,229,0,222,18,127,1,164,136,135,255,30,207,140,254,146,97,243,0,129,192,26,254,201,84,33,255,111,10,78,255,147,81,178,255,4,4,24,0,161,238,215,255,6,141,33,0,53,215,14,255,41,181,208,255,231,139,157,0,179,203,221,255,255,185,113,0,189,226,172,255,113,66,214,255,202,62,45,255,102,64,8,255,78,174,16,254,133,117,68,255,182,120,89,255,133,114,211,0,189,110,21,255,15,10,106,0,41,192,1,0,152,232,121,255,188,60,160,255,153,113,206,255,0,183,226,254,180,13,72,255,176,160,14,254,211,201,134,255,158,24,143,0,127,105,53,0,96,12,189,0,167,215,251,255,159,76,128,254,106,101,225,255,30,252,4,0,146,12,174,0,89,241,178,254,10,229,166,255,123,221,42,254,30,20,212,0,82,128,3,0,48,209,243,0,119,121,64,255,50,227,156,255,0,110,197,1,103,27,144,0,133,59,140,1,189,241,36,255,248,37,195,1,96,220,55,0,183,76,62,255,195,66,61,0,50,76,164,1,225,164,76,255,76,61,163,255,117,62,31,0,81,145,64,255,118,65,14,0,162,115,214,255,6,138,46,0,124,230,244,255,10,138,143,0,52,26,194,0,184,244,76,0,129,143,41,1,190,244,19,255,123,170,122,255,98,129,68,0,121,213,147,0,86,101,30,255,161,103,155,0,140,89,67,255,239,229,190,1,67,11,181,0,198,240,137,254,238,69,188,255,234,113,60,255,37,255,57,255,69,178,182,254,128,208,179,0,118,26,125,254,3,7,214,255,241,50,77,255,85,203,197,255,211,135,250,255,25,48,100,255,187,213,180,254,17,88,105,0,83,209,158,1,5,115,98,0,4,174,60,254,171,55,110,255,217,181,17,255,20,188,170,0,146,156,102,254,87,214,174,255,114,122,155,1,233,44,170,0,127,8,239,1,214,236,234,0,175,5,219,0,49,106,61,255,6,66,208,255,2,106,110,255,81,234,19,255,215,107,192,255,67,151,238,0,19,42,108,255,229,85,113,1,50,68,135,255,17,106,9,0,50,103,1,255,80,1,168,1,35,152,30,255,16,168,185,1,56,89,232,255,101,210,252,0,41,250,71,0,204,170,79,255,14,46,239,255,80,77,239,0,189,214,75,255,17,141,249,0,38,80,76,255,190,85,117,0,86,228,170,0,156,216,208,1,195,207,164,255,150,66,76,255,175,225,16,255,141,80,98,1,76,219,242,0,198,162,114,0,46,218,152,0,155,43,241,254,155,160,104,255,178,9,252,254,100,110,212,0,14,5,167,0,233,239,163,255,28,151,157,1,101,146,10,255,254,158,70,254,71,249,228,0,88,30,50,0,68,58,160,255,191,24,104,1,129,66,129,255,192,50,85,255,8,179,138,255,38,250,201,0,115,80,160,0,131,230,113,0,125,88,147,0,90,68,199,0,253,76,158,0,28,255,118,0,113,250,254,0,66,75,46,0,230,218,43,0,229,120,186,1,148,68,43,0,136,124,238,1,187,107,197,255,84,53,246,255,51,116,254,255,51,187,165,0,2,17,175,0,66,84,160,1,247,58,30,0,35,65,53,254,69,236,191,0,45,134,245,1,163,123,221,0,32,110,20,255,52,23,165,0,186,214,71,0,233,176,96,0,242,239,54,1,57,89,138,0,83,0,84,255,136,160,100,0,92,142,120,254,104,124,190,0,181,177,62,255,250,41,85,0,152,130,42,1,96,252,246,0,151,151,63,254,239,133,62,0,32,56,156,0,45,167,189,255,142,133,179,1,131,86,211,0,187,179,150,254,250,170,14,255,68,113,21,255,222,186,59,255,66,7,241,1,69,6,72,0,86,156,108,254,55,167,89,0,109,52,219,254,13,176,23,255,196,44,106,255,239,149,71,255,164,140,125,255,159,173,1,0,51,41,231,0,145,62,33,0,138,111,93,1,185,83,69,0,144,115,46,0,97,151,16,255,24,228,26,0,49,217,226,0,113,75,234,254,193,153,12,255,182,48,96,255,14,13,26,0,128,195,249,254,69,193,59,0,132,37,81,254,125,106,60,0,214,240,169,1,164,227,66,0,210,163,78,0,37,52,151,0,99,77,26,0,238,156,213,255,213,192,209,1,73,46,84,0,20,65,41,1,54,206,79,0,201,131,146,254,170,111,24,255,177,33,50,254,171,38,203,255,78,247,116,0,209,221,153,0,133,128,178,1,58,44,25,0,201,39,59,1,189,19,252,0,49,229,210,1,117,187,117,0,181,179,184,1,0,114,219,0,48,94,147,0,245,41,56,0,125,13,204,254,244,173,119,0,44,221,32,254,84,234,20,0,249,160,198,1,236,126,234,255,143,62,221,0,129,89,214,255,55,139,5,254,68,20,191,255,14,204,178,1,35,195,217,0,47,51,206,1,38,246,165,0,206,27,6,254,158,87,36,0,217,52,146,255,125,123,215,255,85,60,31,255,171,13,7,0,218,245,88,254,252,35,60,0,55,214,160,255,133,101,56,0,224,32,19,254,147,64,234,0,26,145,162,1,114,118,125,0,248,252,250,0,101,94,196,255,198,141,226,254,51,42,182,0,135,12,9,254,109,172,210,255,197,236,194,1,241,65,154,0,48,156,47,255,153,67,55,255,218,165,34,254,74,180,179,0,218,66,71,1,88,122,99,0,212,181,219,255,92,42,231,255,239,0,154,0,245,77,183,255,94,81,170,1,18,213,216,0,171,93,71,0,52,94,248,0,18,151,161,254,197,209,66,255,174,244,15,254,162,48,183,0,49,61,240,254,182,93,195,0,199,228,6,1,200,5,17,255,137,45,237,255,108,148,4,0,90,79,237,255,39,63,77,255,53,82,207,1,142,22,118,255,101,232,18,1,92,26,67,0,5,200,88,255,33,168,138,255,149,225,72,0,2,209,27,255,44,245,168,1,220,237,17,255,30,211,105,254,141,238,221,0,128,80,245,254,111,254,14,0,222,95,190,1,223,9,241,0,146,76,212,255,108,205,104,255,63,117,153,0,144,69,48,0,35,228,111,0,192,33,193,255,112,214,190,254,115,152,151,0,23,102,88,0,51,74,248,0,226,199,143,254,204,162,101,255,208,97,189,1,245,104,18,0,230,246,30,255,23,148,69,0,110,88,52,254,226,181,89,255,208,47,90,254,114,161,80,255,33,116,248,0,179,152,87,255,69,144,177,1,88,238,26,255,58,32,113,1,1,77,69,0,59,121,52,255,152,238,83,0,52,8,193,0,231,39,233,255,199,34,138,0,222,68,173,0,91,57,242,254,220,210,127,255,192,7,246,254,151,35,187,0,195,236,165,0,111,93,206,0,212,247,133,1,154,133,209,255,155,231,10,0,64,78,38,0,122,249,100,1,30,19,97,255,62,91,249,1,248,133,77,0,197,63,168,254,116,10,82,0,184,236,113,254,212,203,194,255,61,100,252,254,36,5,202,255,119,91,153,255,129,79,29,0,103,103,171,254,237,215,111,255,216,53,69,0,239,240,23,0,194,149,221,255,38,225,222,0,232,255,180,254,118,82,133,255,57,209,177,1,139,232,133,0,158,176,46,254,194,115,46,0,88,247,229,1,28,103,191,0,221,222,175,254,149,235,44,0,151,228,25,254,218,105,103,0,142,85,210,0,149,129,190,255,213,65,94,254,117,134,224,255,82,198,117,0,157,221,220,0,163,101,36,0,197,114,37,0,104,172,166,254,11,182,0,0,81,72,188,255,97,188,16,255,69,6,10,0,199,147,145,255,8,9,115,1,65,214,175,255,217,173,209,0,80,127,166,0,247,229,4,254,167,183,124,255,90,28,204,254,175,59,240,255,11,41,248,1,108,40,51,255,144,177,195,254,150,250,126,0,138,91,65,1,120,60,222,255,245,193,239,0,29,214,189,255,128,2,25,0,80,154,162,0,77,220,107,1,234,205,74,255,54,166,103,255,116,72,9,0,228,94,47,255,30,200,25,255,35,214,89,255,61,176,140,255,83,226,163,255,75,130,172,0,128,38,17,0,95,137,152,255,215,124,159,1,79,93,0,0,148,82,157,254,195,130,251,255,40,202,76,255,251,126,224,0,157,99,62,254,207,7,225,255,96,68,195,0,140,186,157,255,131,19,231,255,42,128,254,0,52,219,61,254,102,203,72,0,141,7,11,255,186,164,213,0,31,122,119,0,133,242,145,0,208,252,232,255,91,213,182,255,143,4,250,254,249,215,74,0,165,30,111,1,171,9,223,0,229,123,34,1,92,130,26,255,77,155,45,1,195,139,28,255,59,224,78,0,136,17,247,0,108,121,32,0,79,250,189,255,96,227,252,254,38,241,62,0,62,174,125,255,155,111,93,255,10,230,206,1,97,197,40,255,0,49,57,254,65,250,13,0,18,251,150,255,220,109,210,255,5,174,166,254,44,129,189,0,235,35,147,255,37,247,141,255,72,141,4,255,103,107,255,0,247,90,4,0,53,44,42,0,2,30,240,0,4,59,63,0,88,78,36,0,113,167,180,0,190,71,193,255,199,158,164,255,58,8,172,0,77,33,12,0,65,63,3,0,153,77,33,255,172,254,102,1,228,221,4,255,87,30,254,1,146,41,86,255,138,204,239,254,108,141,17,255,187,242,135,0,210,208,127,0,68,45,14,254,73,96,62,0,81,60,24,255,170,6,36,255,3,249,26,0,35,213,109,0,22,129,54,255,21,35,225,255,234,61,56,255,58,217,6,0,143,124,88,0,236,126,66,0,209,38,183,255,34,238,6,255,174,145,102,0,95,22,211,0,196,15,153,254,46,84,232,255,117,34,146,1,231,250,74,255,27,134,100,1,92,187,195,255,170,198,112,0,120,28,42,0,209,70,67,0,29,81,31,0,29,168,100,1,169,173,160,0,107,35,117,0,62,96,59,255,81,12,69,1,135,239,190,255,220,252,18,0,163,220,58,255,137,137,188,255,83,102,109,0,96,6,76,0,234,222,210,255,185,174,205,1,60,158,213,255,13,241,214,0,172,129,140,0,93,104,242,0,192,156,251,0,43,117,30,0,225,81,158,0,127,232,218,0,226,28,203,0,233,27,151,255,117,43,5,255,242,14,47,255,33,20,6,0,137,251,44,254,27,31,245,255,183,214,125,254,40,121,149,0,186,158,213,255,89,8,227,0,69,88,0,254,203,135,225,0,201,174,203,0,147,71,184,0,18,121,41,254,94,5,78,0,224,214,240,254,36,5,180,0,251,135,231,1,163,138,212,0,210,249,116,254,88,129,187,0,19,8,49,254,62,14,144,255,159,76,211,0,214,51,82,0,109,117,228,254,103,223,203,255,75,252,15,1,154,71,220,255,23,13,91,1,141,168,96,255,181,182,133,0,250,51,55,0,234,234,212,254,175,63,158,0,39,240,52,1,158,189,36,255,213,40,85,1,32,180,247,255,19,102,26,1,84,24,97,255,69,21,222,0,148,139,122,255,220,213,235,1,232,203,255,0,121,57,147,0,227,7,154,0,53,22,147,1,72,1,225,0,82,134,48,254,83,60,157,255,145,72,169,0,34,103,239,0,198,233,47,0,116,19,4,255,184,106,9,255,183,129,83,0,36,176,230,1,34,103,72,0,219,162,134,0,245,42,158,0,32,149,96,254,165,44,144,0,202,239,72,254,215,150,5,0,42,66,36,1,132,215,175,0,86,174,86,255,26,197,156,255,49,232,135,254,103,182,82,0,253,128,176,1,153,178,122,0,245,250,10,0,236,24,178,0,137,106,132,0,40,29,41,0,50,30,152,255,124,105,38,0,230,191,75,0,143,43,170,0,44,131,20,255,44,13,23,255,237,255,155,1,159,109,100,255,112,181,24,255,104,220,108,0,55,211,131,0,99,12,213,255,152,151,145,255,238,5,159,0,97,155,8,0,33,108,81,0,1,3,103,0,62,109,34,255,250,155,180,0,32,71,195,255,38,70,145,1,159,95,245,0,69,229,101,1,136,28,240,0,79,224,25,0,78,110,121,255,248,168,124,0,187,128,247,0,2,147,235,254,79,11,132,0,70,58,12,1,181,8,163,255,79,137,133,255,37,170,11,255,141,243,85,255,176,231,215,255,204,150,164,255,239,215,39,255,46,87,156,254,8,163,88,255,172,34,232,0,66,44,102,255,27,54,41,254,236,99,87,255,41,123,169,1,52,114,43,0,117,134,40,0,155,134,26,0,231,207,91,254,35,132,38,255,19,102,125,254,36,227,133,255,118,3,113,255,29,13,124,0,152,96,74,1,88,146,206,255,167,191,220,254,162,18,88,255,182,100,23,0,31,117,52,0,81,46,106,1,12,2,7,0,69,80,201,1,209,246,172,0,12,48,141,1,224,211,88,0,116,226,159,0,122,98,130,0,65,236,234,1,225,226,9,255,207,226,123,1,89,214,59,0,112,135,88,1,90,244,203,255,49,11,38,1,129,108,186,0,89,112,15,1,101,46,204,255,127,204,45,254,79,255,221,255,51,73,18,255,127,42,101,255,241,21,202,0,160,227,7,0,105,50,236,0,79,52,197,255,104,202,208,1,180,15,16,0,101,197,78,255,98,77,203,0,41,185,241,1,35,193,124,0,35,155,23,255,207,53,192,0,11,125,163,1,249,158,185,255,4,131,48,0,21,93,111,255,61,121,231,1,69,200,36,255,185,48,185,255,111,238,21,255,39,50,25,255,99,215,163,255,87,212,30,255,164,147,5,255,128,6,35,1,108,223,110,255,194,76,178,0,74,101,180,0,243,47,48,0,174,25,43,255,82,173,253,1,54,114,192,255,40,55,91,0,215,108,176,255,11,56,7,0,224,233,76,0,209,98,202,254,242,25,125,0,44,193,93,254,203,8,177,0,135,176,19,0,112,71,213,255,206,59,176,1,4,67,26,0,14,143,213,254,42,55,208,255,60,67,120,0,193,21,163,0,99,164,115,0,10,20,118,0,156,212,222,254,160,7,217,255,114,245,76,1,117,59,123,0,176,194,86,254,213,15,176,0,78,206,207,254,213,129,59,0,233,251,22,1,96,55,152,255,236,255,15,255,197,89,84,255,93,149,133,0,174,160,113,0,234,99,169,255,152,116,88,0,144,164,83,255,95,29,198,255,34,47,15,255,99,120,134,255,5,236,193,0,249,247,126,255,147,187,30,0,50,230,117,255,108,217,219,255,163,81,166,255,72,25,169,254,155,121,79,255,28,155,89,254,7,126,17,0,147,65,33,1,47,234,253,0,26,51,18,0,105,83,199,255,163,196,230,0,113,248,164,0,226,254,218,0,189,209,203,255,164,247,222,254,255,35,165,0,4,188,243,1,127,179,71,0,37,237,254,255,100,186,240,0,5,57,71,254,103,72,73,255,244,18,81,254,229,210,132,255,238,6,180,255,11,229,174,255,227,221,192,1,17,49,28,0,163,215,196,254,9,118,4,255,51,240,71,0,113,129,109,255,76,240,231,0,188,177,127,0,125,71,44,1,26,175,243,0,94,169,25,254,27,230,29,0,15,139,119,1,168,170,186,255,172,197,76,255,252,75,188,0,137,124,196,0,72,22,96,255,45,151,249,1,220,145,100,0,64,192,159,255,120,239,226,0,129,178,146,0,0,192,125,0,235,138,234,0,183,157,146,0,83,199,192,255,184,172,72,255,73,225,128,0,77,6,250,255,186,65,67,0,104,246,207,0,188,32,138,255,218,24,242,0,67,138,81,254,237,129,121,255,20,207,150,1,41,199,16,255,6,20,128,0,159,118,5,0,181,16,143,255,220,38,15,0,23,64,147,254,73,26,13,0,87,228,57,1,204,124,128,0,43,24,223,0,219,99,199,0,22,75,20,255,19,27,126,0,157,62,215,0,110,29,230,0,179,167,255,1,54,252,190,0,221,204,182,254,179,158,65,255,81,157,3,0,194,218,159,0,170,223,0,0,224,11,32,255,38,197,98,0,168,164,37,0,23,88,7,1,164,186,110,0,96,36,134,0,234,242,229,0,250,121,19,0,242,254,112,255,3,47,94,1,9,239,6,255,81,134,153,254,214,253,168,255,67,124,224,0,245,95,74,0,28,30,44,254,1,109,220,255,178,89,89,0,252,36,76,0,24,198,46,255,76,77,111,0,134,234,136,255,39,94,29,0,185,72,234,255,70,68,135,255,231,102,7,254,77,231,140,0,167,47,58,1,148,97,118,255,16,27,225,1,166,206,143,255,110,178,214,255,180,131,162,0,143,141,225,1,13,218,78,255,114,153,33,1,98,104,204,0,175,114,117,1,167,206,75,0,202,196,83,1,58,64,67,0,138,47,111,1,196,247,128,255,137,224,224,254,158,112,207,0,154,100,255,1,134,37,107,0,198,128,79,255,127,209,155,255,163,254,185,254,60,14,243,0,31,219,112,254,29,217,65,0,200,13,116,254,123,60,196,255,224,59,184,254,242,89,196,0,123,16,75,254,149,16,206,0,69,254,48,1,231,116,223,255,209,160,65,1,200,80,98,0,37,194,184,254,148,63,34,0,139,240,65,255,217,144,132,255,56,38,45,254,199,120,210,0,108,177,166,255,160,222,4,0,220,126,119,254,165,107,160,255,82,220,248,1,241,175,136,0,144,141,23,255,169,138,84,0,160,137,78,255,226,118,80,255,52,27,132,255,63,96,139,255,152,250,39,0,188,155,15,0,232,51,150,254,40,15,232,255,240,229,9,255,137,175,27,255,75,73,97,1,218,212,11,0,135,5,162,1,107,185,213,0,2,249,107,255,40,242,70,0,219,200,25,0,25,157,13,0,67,82,80,255,196,249,23,255,145,20,149,0,50,72,146,0,94,76,148,1,24,251,65,0,31,192,23,0,184,212,201,255,123,233,162,1,247,173,72,0,162,87,219,254,126,134,89,0,159,11,12,254,166,105,29,0,73,27,228,1,113,120,183,255,66,163,109,1,212,143,11,255,159,231,168,1,255,128,90,0,57,14,58,254,89,52,10,255,253,8,163,1,0,145,210,255,10,129,85,1,46,181,27,0,103,136,160,254,126,188,209,255,34,35,111,0,215,219,24,255,212,11,214,254,101,5,118,0,232,197,133,255,223,167,109,255,237,80,86,255,70,139,94,0,158,193,191,1,155,15,51,255,15,190,115,0,78,135,207,255,249,10,27,1,181,125,233,0,95,172,13,254,170,213,161,255,39,236,138,255,95,93,87,255,190,128,95,0,125,15,206,0,166,150,159,0,227,15,158,255,206,158,120,255,42,141,128,0,101,178,120,1,156,109,131,0,218,14,44,254,247,168,206,255,212,112,28,0,112,17,228,255,90,16,37,1,197,222,108,0,254,207,83,255,9,90,243,255,243,244,172,0,26,88,115,255,205,116,122,0,191,230,193,0,180,100,11,1,217,37,96,255,154,78,156,0,235,234,31,255,206,178,178,255,149,192,251,0,182,250,135,0,246,22,105,0,124,193,109,255,2,210,149,255,169,17,170,0,0,96,110,255,117,9,8,1,50,123,40,255,193,189,99,0,34,227,160,0,48,80,70,254,211,51,236,0,45,122,245,254,44,174,8,0,173,37,233,255,158,65,171,0,122,69,215,255,90,80,2,255,131,106,96,254,227,114,135,0,205,49,119,254,176,62,64,255,82,51,17,255,241,20,243,255,130,13,8,254,128,217,243,255,162,27,1,254,90,118,241,0,246,198,246,255,55,16,118,255,200,159,157,0,163,17,1,0,140,107,121,0,85,161,118,255,38,0,149,0,156,47,238,0,9,166,166,1,75,98,181,255,50,74,25,0,66,15,47,0,139,225,159,0,76,3,142,255,14,238,184,0,11,207,53,255,183,192,186,1,171,32,174,255,191,76,221,1,247,170,219,0,25,172,50,254,217,9,233,0,203,126,68,255,183,92,48,0,127,167,183,1,65,49,254,0,16,63,127,1,254,21,170,255,59,224,127,254,22,48,63,255,27,78,130,254,40,195,29,0,250,132,112,254,35,203,144,0,104,169,168,0,207,253,30,255,104,40,38,254,94,228,88,0,206,16,128,255,212,55,122,255,223,22,234,0,223,197,127,0,253,181,181,1,145,102,118,0,236,153,36,255,212,217,72,255,20,38,24,254,138,62,62,0,152,140,4,0,230,220,99,255,1,21,212,255,148,201,231,0,244,123,9,254,0,171,210,0,51,58,37,255,1,255,14,255,244,183,145,254,0,242,166,0,22,74,132,0,121,216,41,0,95,195,114,254,133,24,151,255,156,226,231,255,247,5,77,255,246,148,115,254,225,92,81,255,222,80,246,254,170,123,89,255,74,199,141,0,29,20,8,255,138,136,70,255,93,75,92,0,221,147,49,254,52,126,226,0,229,124,23,0,46,9,181,0,205,64,52,1,131,254,28,0,151,158,212,0,131,64,78,0,206,25,171,0,0,230,139,0,191,253,110,254,103,247,167,0,64,40,40,1,42,165,241,255,59,75,228,254,124,243,189,255,196,92,178,255,130,140,86,255,141,89,56,1,147,198,5,255,203,248,158,254,144,162,141,0,11,172,226,0,130,42,21,255,1,167,143,255,144,36,36,255,48,88,164,254,168,170,220,0,98,71,214,0,91,208,79,0,159,76,201,1,166,42,214,255,69,255,0,255,6,128,125,255,190,1,140,0,146,83,218,255,215,238,72,1,122,127,53,0,189,116,165,255,84,8,66,255,214,3,208,255,213,110,133,0,195,168,44,1,158,231,69,0,162,64,200,254,91,58,104,0,182,58,187,254,249,228,136,0,203,134,76,254,99,221,233,0,75,254,214,254,80,69,154,0,64,152,248,254,236,136,202,255,157,105,153,254,149,175,20,0,22,35,19,255,124,121,233,0,186,250,198,254,132,229,139,0,137,80,174,255,165,125,68,0,144,202,148,254,235,239,248,0,135,184,118,0,101,94,17,255,122,72,70,254,69,130,146,0,127,222,248,1,69,127,118,255,30,82,215,254,188,74,19,255,229,167,194,254,117,25,66,255,65,234,56,254,213,22,156,0,151,59,93,254,45,28,27,255,186,126,164,255,32,6,239,0,127,114,99,1,219,52,2,255,99,96,166,254,62,190,126,255,108,222,168,1,75,226,174,0,230,226,199,0,60,117,218,255,252,248,20,1,214,188,204,0,31,194,134,254,123,69,192,255,169,173,36,254,55,98,91,0,223,42,102,254,137,1,102,0,157,90,25,0,239,122,64,255,252,6,233,0,7,54,20,255,82,116,174,0,135,37,54,255,15,186,125,0,227,112,175,255,100,180,225,255,42,237,244,255,244,173,226,254,248,18,33,0,171,99,150,255,74,235,50,255,117,82,32,254,106,168,237,0,207,109,208,1,228,9,186,0,135,60,169,254,179,92,143,0,244,170,104,255,235,45,124,255,70,99,186,0,117,137,183,0,224,31,215,0,40,9,100,0,26,16,95,1,68,217,87,0,8,151,20,255,26,100,58,255,176,165,203,1,52,118,70,0,7,32,254,254,244,254,245,255,167,144,194,255,125,113,23,255,176,121,181,0,136,84,209,0,138,6,30,255,89,48,28,0,33,155,14,255,25,240,154,0,141,205,109,1,70,115,62,255,20,40,107,254,138,154,199,255,94,223,226,255,157,171,38,0,163,177,25,254,45,118,3,255,14,222,23,1,209,190,81,255,118,123,232,1,13,213,101,255,123,55,123,254,27,246,165,0,50,99,76,255,140,214,32,255,97,65,67,255,24,12,28,0,174,86,78,1,64,247,96,0,160,135,67,0,66,55,243,255,147,204,96,255,26,6,33,255,98,51,83,1,153,213,208,255,2,184,54,255,25,218,11,0,49,67,246,254,18,149,72,255,13,25,72,0,42,79,214,0,42,4,38,1,27,139,144,255,149,187,23,0,18,164,132,0,245,84,184,254,120,198,104,255,126,218,96,0,56,117,234,255,13,29,214,254,68,47,10,255,167,154,132,254,152,38,198,0,66,178,89,255,200,46,171,255,13,99,83,255,210,187,253,255,170,45,42,1,138,209,124,0,214,162,141,0,12,230,156,0,102,36,112,254,3,147,67,0,52,215,123,255,233,171,54,255,98,137,62,0,247,218,39,255,231,218,236,0,247,191,127,0,195,146,84,0,165,176,92,255,19,212,94,255,17,74,227,0,88,40,153,1,198,147,1,255,206,67,245,254,240,3,218,255,61,141,213,255,97,183,106,0,195,232,235,254,95,86,154,0,209,48,205,254,118,209,241,255,240,120,223,1,213,29,159,0,163,127,147,255,13,218,93,0,85,24,68,254,70,20,80,255,189,5,140,1,82,97,254,255,99,99,191,255,132,84,133,255,107,218,116,255,112,122,46,0,105,17,32,0,194,160,63,255,68,222,39,1,216,253,92,0,177,105,205,255,149,201,195,0,42,225,11,255,40,162,115,0,9,7,81,0,165,218,219,0,180,22,0,254,29,146,252,255,146,207,225,1,180,135,96,0,31,163,112,0,177,11,219,255,133,12,193,254,43,78,50,0,65,113,121,1,59,217,6,255,110,94,24,1,112,172,111,0,7,15,96,0,36,85,123,0,71,150,21,255,208,73,188,0,192,11,167,1,213,245,34,0,9,230,92,0,162,142,39,255,215,90,27,0,98,97,89,0,94,79,211,0,90,157,240,0,95,220,126,1,102,176,226,0,36,30,224,254,35,31,127,0,231,232,115,1,85,83,130,0,210,73,245,255,47,143,114,255,68,65,197,0,59,72,62,255,183,133,173,254,93,121,118,255,59,177,81,255,234,69,173,255,205,128,177,0,220,244,51,0,26,244,209,1,73,222,77,255,163,8,96,254,150,149,211,0,158,254,203,1,54,127,139,0,161,224,59,0,4,109,22,255,222,42,45,255,208,146,102,255,236,142,187,0,50,205,245,255,10,74,89,254,48,79,142,0,222,76,130,255,30,166,63,0,236,12,13,255,49,184,244,0,187,113,102,0,218,101,253,0,153,57,182,254,32,150,42,0,25,198,146,1,237,241,56,0,140,68,5,0,91,164,172,255,78,145,186,254,67,52,205,0,219,207,129,1,109,115,17,0,54,143,58,1,21,248,120,255,179,255,30,0,193,236,66,255,1,255,7,255,253,192,48,255,19,69,217,1,3,214,0,255,64,101,146,1,223,125,35,255,235,73,179,255,249,167,226,0,225,175,10,1,97,162,58,0,106,112,171,1,84,172,5,255,133,140,178,255,134,245,142,0,97,90,125,255,186,203,185,255,223,77,23,255,192,92,106,0,15,198,115,255,217,152,248,0,171,178,120,255,228,134,53,0,176,54,193,1,250,251,53,0,213,10,100,1,34,199,106,0,151,31,244,254,172,224,87,255,14,237,23,255,253,85,26,255,127,39,116,255,172,104,100,0,251,14,70,255,212,208,138,255,253,211,250,0,176,49,165,0,15,76,123,255,37,218,160,255,92,135,16,1,10,126,114,255,70,5,224,255,247,249,141,0,68,20,60,1,241,210,189,255,195,217,187,1,151,3,113,0,151,92,174,0,231,62,178,255,219,183,225,0,23,23,33,255,205,181,80,0,57,184,248,255,67,180,1,255,90,123,93,255,39,0,162,255,96,248,52,255,84,66,140,0,34,127,228,255,194,138,7,1,166,110,188,0,21,17,155,1,154,190,198,255,214,80,59,255,18,7,143,0,72,29,226,1,199,217,249,0,232,161,71,1,149,190,201,0,217,175,95,254,113,147,67,255,138,143,199,255,127,204,1,0,29,182,83,1,206,230,155,255,186,204,60,0,10,125,85,255,232,96,25,255,255,89,247,255,213,254,175,1,232,193,81,0,28,43,156,254,12,69,8,0,147,24,248,0,18,198,49,0,134,60,35,0,118,246,18,255,49,88,254,254,228,21,186,255,182,65,112,1,219,22,1,255,22,126,52,255,189,53,49,255,112,25,143,0,38,127,55,255,226,101,163,254,208,133,61,255,137,69,174,1,190,118,145,255,60,98,219,255,217,13,245,255,250,136,10,0,84,254,226,0,201,31,125,1,240,51,251,255,31,131,130,255,2,138,50,255,215,215,177,1,223,12,238,255,252,149,56,255,124,91,68,255,72,126,170,254,119,255,100,0,130,135,232,255,14,79,178,0,250,131,197,0,138,198,208,0,121,216,139,254,119,18,36,255,29,193,122,0,16,42,45,255,213,240,235,1,230,190,169,255,198,35,228,254,110,173,72,0,214,221,241,255,56,148,135,0,192,117,78,254,141,93,207,255,143,65,149,0,21,18,98,255,95,44,244,1,106,191,77,0,254,85,8,254,214,110,176,255,73,173,19,254,160,196,199,255,237,90,144,0,193,172,113,255,200,155,136,254,228,90,221,0,137,49,74,1,164,221,215,255,209,189,5,255,105,236,55,255,42,31,129,1,193,255,236,0,46,217,60,0,138,88,187,255,226,82,236,255,81,69,151,255,142,190,16,1,13,134,8,0,127,122,48,255,81,64,156,0,171,243,139,0,237,35,246,0,122,143,193,254,212,122,146,0,95,41,255,1,87,132,77,0,4,212,31,0,17,31,78,0,39,45,173,254,24,142,217,255,95,9,6,255,227,83,6,0,98,59,130,254,62,30,33,0,8,115,211,1,162,97,128,255,7,184,23,254,116,28,168,255,248,138,151,255,98,244,240,0,186,118,130,0,114,248,235,255,105,173,200,1,160,124,71,255,94,36,164,1,175,65,146,255,238,241,170,254,202,198,197,0,228,71,138,254,45,246,109,255,194,52,158,0,133,187,176,0,83,252,154,254,89,189,221,255,170,73,252,0,148,58,125,0,36,68,51,254,42,69,177,255,168,76,86,255,38,100,204,255,38,53,35,0,175,19,97,0,225,238,253,255,81,81,135,0,210,27,255,254,235,73,107,0,8,207,115,0,82,127,136,0,84,99,21,254,207,19,136,0,100,164,101,0,80,208,77,255,132,207,237,255,15,3,15,255,33,166,110,0,156,95,85,255,37,185,111,1,150,106,35,255,166,151,76,0,114,87,135,255,159,194,64,0,12,122,31,255,232,7,101,254,173,119,98,0,154,71,220,254,191,57,53,255,168,232,160,255,224,32,99,255,218,156,165,0,151,153,163,0,217,13,148,1,197,113,89,0,149,28,161,254,207,23,30,0,105,132,227,255,54,230,94,255,133,173,204,255,92,183,157,255,88,144,252,254,102,33,90,0,159,97,3,0,181,218,155,255,240,114,119,0,106,214,53,255,165,190,115,1,152,91,225,255,88,106,44,255,208,61,113,0,151,52,124,0,191,27,156,255,110,54,236,1,14,30,166,255,39,127,207,1,229,199,28,0,188,228,188,254,100,157,235,0,246,218,183,1,107,22,193,255,206,160,95,0,76,239,147,0,207,161,117,0,51,166,2,255,52,117,10,254,73,56,227,255,152,193,225,0,132,94,136,255,101,191,209,0,32,107,229,255,198,43,180,1,100,210,118,0,114,67,153,255,23,88,26,255,89,154,92,1,220,120,140,255,144,114,207,255,252,115,250,255,34,206,72,0,138,133,127,255,8,178,124,1,87,75,97,0,15,229,92,254,240,67,131,255,118,123,227,254,146,120,104,255,145,213,255,1,129,187,70,255,219,119,54,0,1,19,173,0,45,150,148,1,248,83,72,0,203,233,169,1,142,107,56,0,247,249,38,1,45,242,80,255,30,233,103,0,96,82,70,0,23,201,111,0,81,39,30,255,161,183,78,255,194,234,33,255,68,227,140,254,216,206,116,0,70,27,235,255,104,144,79,0,164,230,93,254,214,135,156,0,154,187,242,254,188,20,131,255,36,109,174,0,159,112,241,0,5,110,149,1,36,165,218,0,166,29,19,1,178,46,73,0,93,43,32,254,248,189,237,0,102,155,141,0,201,93,195,255,241,139,253,255,15,111,98,255,108,65,163,254,155,79,190,255,73,174,193,254,246,40,48,255,107,88,11,254,202,97,85,255,253,204,18,255,113,242,66,0,110,160,194,254,208,18,186,0,81,21,60,0,188,104,167,255,124,166,97,254,210,133,142,0,56,242,137,254,41,111,130,0,111,151,58,1,111,213,141,255,183,172,241,255,38,6,196,255,185,7,123,255,46,11,246,0,245,105,119,1,15,2,161,255,8,206,45,255,18,202,74,255,83,124,115,1,212,141,157,0,83,8,209,254,139,15,232,255,172,54,173,254,50,247,132,0,214,189,213,0,144,184,105,0,223,254,248,0,255,147,240,255,23,188,72,0,7,51,54,0,188,25,180,254,220,180,0,255,83,160,20,0,163,189,243,255,58,209,194,255,87,73,60,0,106,24,49,0,245,249,220,0,22,173,167,0,118,11,195,255,19,126,237,0,110,159,37,255,59,82,47,0,180,187,86,0,188,148,208,1,100,37,133,255,7,112,193,0,129,188,156,255,84,106,129,255,133,225,202,0,14,236,111,255,40,20,101,0,172,172,49,254,51,54,74,255,251,185,184,255,93,155,224,255,180,249,224,1,230,178,146,0,72,57,54,254,178,62,184,0,119,205,72,0,185,239,253,255,61,15,218,0,196,67,56,255,234,32,171,1,46,219,228,0,208,108,234,255,20,63,232,255,165,53,199,1,133,228,5,255,52,205,107,0,74,238,140,255,150,156,219,254,239,172,178,255,251,189,223,254,32,142,211,255,218,15,138,1,241,196,80,0,28,36,98,254,22,234,199,0,61,237,220,255,246,57,37,0,142,17,142,255,157,62,26,0,43,238,95,254,3,217,6,255,213,25,240,1,39,220,174,255,154,205,48,254,19,13,192,255,244,34,54,254,140,16,155,0,240,181,5,254,155,193,60,0,166,128,4,255,36,145,56,255,150,240,219,0,120,51,145,0,82,153,42,1,140,236,146,0,107,92,248,1,189,10,3,0,63,136,242,0,211,39,24,0,19,202,161,1,173,27,186,255,210,204,239,254,41,209,162,255,182,254,159,255,172,116,52,0,195,103,222,254,205,69,59,0,53,22,41,1,218,48,194,0,80,210,242,0,210,188,207,0,187,161,161,254,216,17,1,0,136,225,113,0,250,184,63,0,223,30,98,254,77,168,162,0,59,53,175,0,19,201,10,255,139,224,194,0,147,193,154,255,212,189,12,254,1,200,174,255,50,133,113,1,94,179,90,0,173,182,135,0,94,177,113,0,43,89,215,255,136,252,106,255,123,134,83,254,5,245,66,255,82,49,39,1,220,2,224,0,97,129,177,0,77,59,89,0,61,29,155,1,203,171,220,255,92,78,139,0,145,33,181,255,169,24,141,1,55,150,179,0,139,60,80,255,218,39,97,0,2,147,107,255,60,248,72,0,173,230,47,1,6,83,182,255,16,105,162,254,137,212,81,255,180,184,134,1,39,222,164,255,221,105,251,1,239,112,125,0,63,7,97,0,63,104,227,255,148,58,12,0,90,60,224,255,84,212,252,0,79,215,168,0,248,221,199,1,115,121,1,0,36,172,120,0,32,162,187,255,57,107,49,255,147,42,21,0,106,198,43,1,57,74,87,0,126,203,81,255,129,135,195,0,140,31,177,0,221,139,194,0,3,222,215,0,131,68,231,0,177,86,178,254,124,151,180,0,184,124,38,1,70,163,17,0,249,251,181,1,42,55,227,0,226,161,44,0,23,236,110,0,51,149,142,1,93,5,236,0,218,183,106,254,67,24,77,0,40,245,209,255,222,121,153,0,165,57,30,0,83,125,60,0,70,38,82,1,229,6,188,0,109,222,157,255,55,118,63,255,205,151,186,0,227,33,149,255,254,176,246,1,227,177,227,0,34,106,163,254,176,43,79,0,106,95,78,1,185,241,122,255,185,14,61,0,36,1,202,0,13,178,162,255,247,11,132,0,161,230,92,1,65,1,185,255,212,50,165,1,141,146,64,255,158,242,218,0,21,164,125,0,213,139,122,1,67,71,87,0,203,158,178,1,151,92,43,0,152,111,5,255,39,3,239,255,217,255,250,255,176,63,71,255,74,245,77,1,250,174,18,255,34,49,227,255,246,46,251,255,154,35,48,1,125,157,61,255,106,36,78,255,97,236,153,0,136,187,120,255,113,134,171,255,19,213,217,254,216,94,209,255,252,5,61,0,94,3,202,0,3,26,183,255,64,191,43,255,30,23,21,0,129,141,77,255,102,120,7,1,194,76,140,0,188,175,52,255,17,81,148,0,232,86,55,1,225,48,172,0,134,42,42,255,238,50,47,0,169,18,254,0,20,147,87,255,14,195,239,255,69,247,23,0,238,229,128,255,177,49,112,0,168,98,251,255,121,71,248,0,243,8,145,254,246,227,153,255,219,169,177,254,251,139,165,255,12,163,185,255,164,40,171,255,153,159,27,254,243,109,91,255,222,24,112,1,18,214,231,0,107,157,181,254,195,147,0,255,194,99,104,255,89,140,190,255,177,66,126,254,106,185,66,0,49,218,31,0,252,174,158,0,188,79,230,1,238,41,224,0,212,234,8,1,136,11,181,0,166,117,83,255,68,195,94,0,46,132,201,0,240,152,88,0,164,57,69,254,160,224,42,255,59,215,67,255,119,195,141,255,36,180,121,254,207,47,8,255,174,210,223,0,101,197,68,255,255,82,141,1,250,137,233,0,97,86,133,1,16,80,69,0,132,131,159,0,116,93,100,0,45,141,139,0,152,172,157,255,90,43,91,0,71,153,46,0,39,16,112,255,217,136,97,255,220,198,25,254,177,53,49,0,222,88,134,255,128,15,60,0,207,192,169,255,192,116,209,255,106,78,211,1,200,213,183,255,7,12,122,254,222,203,60,255,33,110,199,254,251,106,117,0,228,225,4,1,120,58,7,255,221,193,84,254,112,133,27,0,189,200,201,255,139,135,150,0,234,55,176,255,61,50,65,0,152,108,169,255,220,85,1,255,112,135,227,0,162,26,186,0,207,96,185,254,244,136,107,0,93,153,50,1,198,97,151,0,110,11,86,255,143,117,174,255,115,212,200,0,5,202,183,0,237,164,10,254,185,239,62,0,236,120,18,254,98,123,99,255,168,201,194,254,46,234,214,0,191,133,49,255,99,169,119,0,190,187,35,1,115,21,45,255,249,131,72,0,112,6,123,255,214,49,181,254,166,233,34,0,92,197,102,254,253,228,205,255,3,59,201,1,42,98,46,0,219,37,35,255,169,195,38,0,94,124,193,1,156,43,223,0,95,72,133,254,120,206,191,0,122,197,239,255,177,187,79,255,254,46,2,1,250,167,190,0,84,129,19,0,203,113,166,255,249,31,189,254,72,157,202,255,208,71,73,255,207,24,72,0,10,16,18,1,210,81,76,255,88,208,192,255,126,243,107,255,238,141,120,255,199,121,234,255,137,12,59,255,36,220,123,255,148,179,60,254,240,12,29,0,66,0,97,1,36,30,38,255,115,1,93,255,96,103,231,255,197,158,59,1,192,164,240,0,202,202,57,255,24,174,48,0,89,77,155,1,42,76,215,0,244,151,233,0,23,48,81,0,239,127,52,254,227,130,37,255,248,116,93,1,124,132,118,0,173,254,192,1,6,235,83,255,110,175,231,1,251,28,182,0,129,249,93,254,84,184,128,0,76,181,62,0,175,128,186,0,100,53,136,254,109,29,226,0,221,233,58,1,20,99,74,0,0,22,160,0,134,13,21,0,9,52,55,255,17,89,140,0,175,34,59,0,84,165,119,255,224,226,234,255,7,72,166,255,123,115,255,1,18,214,246,0,250,7,71,1,217,220,185,0,212,35,76,255,38,125,175,0,189,97,210,0,114,238,44,255,41,188,169,254,45,186,154,0,81,92,22,0,132,160,193,0,121,208,98,255,13,81,44,255,203,156,82,0,71,58,21,255,208,114,191,254,50,38,147,0,154,216,195,0,101,25,18,0,60,250,215,255,233,132,235,255,103,175,142,1,16,14,92,0,141,31,110,254,238,241,45,255,153,217,239,1,97,168,47,255,249,85,16,1,28,175,62,255,57,254,54,0,222,231,126,0,166,45,117,254,18,189,96,255,228,76,50,0,200,244,94,0,198,152,120,1,68,34,69,255,12,65,160,254,101,19,90,0,167,197,120,255,68,54,185,255,41,218,188,0,113,168,48,0,88,105,189,1,26,82,32,255,185,93,164,1,228,240,237,255,66,182,53,0,171,197,92,255,107,9,233,1,199,120,144,255,78,49,10,255,109,170,105,255,90,4,31,255,28,244,113,255,74,58,11,0,62,220,246,255,121,154,200,254,144,210,178,255,126,57,129,1,43,250,14,255,101,111,28,1,47,86,241,255,61,70,150,255,53,73,5,255,30,26,158,0,209,26,86,0,138,237,74,0,164,95,188,0,142,60,29,254,162,116,248,255,187,175,160,0,151,18,16,0,209,111,65,254,203,134,39,255,88,108,49,255,131,26,71,255,221,27,215,254,104,105,93,255,31,236,31,254,135,0,211,255,143,127,110,1,212,73,229,0,233,67,167,254,195,1,208,255,132,17,221,255,51,217,90,0,67,235,50,255,223,210,143,0,179,53,130,1,233,106,198,0,217,173,220,255,112,229,24,255,175,154,93,254,71,203,246,255,48,66,133,255,3,136,230,255,23,221,113,254,235,111,213,0,170,120,95,254,251,221,2,0,45,130,158,254,105,94,217,255,242,52,180,254,213,68,45,255,104,38,28,0,244,158,76,0,161,200,96,255,207,53,13,255,187,67,148,0,170,54,248,0,119,162,178,255,83,20,11,0,42,42,192,1,146,159,163,255,183,232,111,0,77,229,21,255,71,53,143,0,27,76,34,0,246,136,47,255,219,39,182,255,92,224,201,1,19,142,14,255,69,182,241,255,163,118,245,0,9,109,106,1,170,181,247,255,78,47,238,255,84,210,176,255,213,107,139,0,39,38,11,0,72,21,150,0,72,130,69,0,205,77,155,254,142,133,21], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
  1180. /* memory initializer */ allocate([71,111,172,254,226,42,59,255,179,0,215,1,33,128,241,0,234,252,13,1,184,79,8,0,110,30,73,255,246,141,189,0,170,207,218,1,74,154,69,255,138,246,49,255,155,32,100,0,125,74,105,255,90,85,61,255,35,229,177,255,62,125,193,255,153,86,188,1,73,120,212,0,209,123,246,254,135,209,38,255,151,58,44,1,92,69,214,255,14,12,88,255,252,153,166,255,253,207,112,255,60,78,83,255,227,124,110,0,180,96,252,255,53,117,33,254,164,220,82,255,41,1,27,255,38,164,166,255,164,99,169,254,61,144,70,255,192,166,18,0,107,250,66,0,197,65,50,0,1,179,18,255,255,104,1,255,43,153,35,255,80,111,168,0,110,175,168,0,41,105,45,255,219,14,205,255,164,233,140,254,43,1,118,0,233,67,195,0,178,82,159,255,138,87,122,255,212,238,90,255,144,35,124,254,25,140,164,0,251,215,44,254,133,70,107,255,101,227,80,254,92,169,55,0,215,42,49,0,114,180,85,255,33,232,27,1,172,213,25,0,62,176,123,254,32,133,24,255,225,191,62,0,93,70,153,0,181,42,104,1,22,191,224,255,200,200,140,255,249,234,37,0,149,57,141,0,195,56,208,255,254,130,70,255,32,173,240,255,29,220,199,0,110,100,115,255,132,229,249,0,228,233,223,255,37,216,209,254,178,177,209,255,183,45,165,254,224,97,114,0,137,97,168,255,225,222,172,0,165,13,49,1,210,235,204,255,252,4,28,254,70,160,151,0,232,190,52,254,83,248,93,255,62,215,77,1,175,175,179,255,160,50,66,0,121,48,208,0,63,169,209,255,0,210,200,0,224,187,44,1,73,162,82,0,9,176,143,255,19,76,193,255,29,59,167,1,24,43,154,0,28,190,190,0,141,188,129,0,232,235,203,255,234,0,109,255,54,65,159,0,60,88,232,255,121,253,150,254,252,233,131,255,198,110,41,1,83,77,71,255,200,22,59,254,106,253,242,255,21,12,207,255,237,66,189,0,90,198,202,1,225,172,127,0,53,22,202,0,56,230,132,0,1,86,183,0,109,190,42,0,243,68,174,1,109,228,154,0,200,177,122,1,35,160,183,255,177,48,85,255,90,218,169,255,248,152,78,0,202,254,110,0,6,52,43,0,142,98,65,255,63,145,22,0,70,106,93,0,232,138,107,1,110,179,61,255,211,129,218,1,242,209,92,0,35,90,217,1,182,143,106,255,116,101,217,255,114,250,221,255,173,204,6,0,60,150,163,0,73,172,44,255,239,110,80,255,237,76,153,254,161,140,249,0,149,232,229,0,133,31,40,255,174,164,119,0,113,51,214,0,129,228,2,254,64,34,243,0,107,227,244,255,174,106,200,255,84,153,70,1,50,35,16,0,250,74,216,254,236,189,66,255,153,249,13,0,230,178,4,255,221,41,238,0,118,227,121,255,94,87,140,254,254,119,92,0,73,239,246,254,117,87,128,0,19,211,145,255,177,46,252,0,229,91,246,1,69,128,247,255,202,77,54,1,8,11,9,255,153,96,166,0,217,214,173,255,134,192,2,1,0,207,0,0,189,174,107,1,140,134,100,0,158,193,243,1,182,102,171,0,235,154,51,0,142,5,123,255,60,168,89,1,217,14,92,255,19,214,5,1,211,167,254,0,44,6,202,254,120,18,236,255,15,113,184,255,184,223,139,0,40,177,119,254,182,123,90,255,176,165,176,0,247,77,194,0,27,234,120,0,231,0,214,255,59,39,30,0,125,99,145,255,150,68,68,1,141,222,248,0,153,123,210,255,110,127,152,255,229,33,214,1,135,221,197,0,137,97,2,0,12,143,204,255,81,41,188,0,115,79,130,255,94,3,132,0,152,175,187,255,124,141,10,255,126,192,179,255,11,103,198,0,149,6,45,0,219,85,187,1,230,18,178,255,72,182,152,0,3,198,184,255,128,112,224,1,97,161,230,0,254,99,38,255,58,159,197,0,151,66,219,0,59,69,143,255,185,112,249,0,119,136,47,255,123,130,132,0,168,71,95,255,113,176,40,1,232,185,173,0,207,93,117,1,68,157,108,255,102,5,147,254,49,97,33,0,89,65,111,254,247,30,163,255,124,217,221,1,102,250,216,0,198,174,75,254,57,55,18,0,227,5,236,1,229,213,173,0,201,109,218,1,49,233,239,0,30,55,158,1,25,178,106,0,155,111,188,1,94,126,140,0,215,31,238,1,77,240,16,0,213,242,25,1,38,71,168,0,205,186,93,254,49,211,140,255,219,0,180,255,134,118,165,0,160,147,134,255,110,186,35,255,198,243,42,0,243,146,119,0,134,235,163,1,4,241,135,255,193,46,193,254,103,180,79,255,225,4,184,254,242,118,130,0,146,135,176,1,234,111,30,0,69,66,213,254,41,96,123,0,121,94,42,255,178,191,195,255,46,130,42,0,117,84,8,255,233,49,214,254,238,122,109,0,6,71,89,1,236,211,123,0,244,13,48,254,119,148,14,0,114,28,86,255,75,237,25,255,145,229,16,254,129,100,53,255,134,150,120,254,168,157,50,0,23,72,104,255,224,49,14,0,255,123,22,255,151,185,151,255,170,80,184,1,134,182,20,0,41,100,101,1,153,33,16,0,76,154,111,1,86,206,234,255,192,160,164,254,165,123,93,255,1,216,164,254,67,17,175,255,169,11,59,255,158,41,61,255,73,188,14,255,195,6,137,255,22,147,29,255,20,103,3,255,246,130,227,255,122,40,128,0,226,47,24,254,35,36,32,0,152,186,183,255,69,202,20,0,195,133,195,0,222,51,247,0,169,171,94,1,183,0,160,255,64,205,18,1,156,83,15,255,197,58,249,254,251,89,110,255,50,10,88,254,51,43,216,0,98,242,198,1,245,151,113,0,171,236,194,1,197,31,199,255,229,81,38,1,41,59,20,0,253,104,230,0,152,93,14,255,246,242,146,254,214,169,240,255,240,102,108,254,160,167,236,0,154,218,188,0,150,233,202,255,27,19,250,1,2,71,133,255,175,12,63,1,145,183,198,0,104,120,115,255,130,251,247,0,17,212,167,255,62,123,132,255,247,100,189,0,155,223,152,0,143,197,33,0,155,59,44,255,150,93,240,1,127,3,87,255,95,71,207,1,167,85,1,255,188,152,116,255,10,23,23,0,137,195,93,1,54,98,97,0,240,0,168,255,148,188,127,0,134,107,151,0,76,253,171,0,90,132,192,0,146,22,54,0,224,66,54,254,230,186,229,255,39,182,196,0,148,251,130,255,65,131,108,254,128,1,160,0,169,49,167,254,199,254,148,255,251,6,131,0,187,254,129,255,85,82,62,0,178,23,58,255,254,132,5,0,164,213,39,0,134,252,146,254,37,53,81,255,155,134,82,0,205,167,238,255,94,45,180,255,132,40,161,0,254,111,112,1,54,75,217,0,179,230,221,1,235,94,191,255,23,243,48,1,202,145,203,255,39,118,42,255,117,141,253,0,254,0,222,0,43,251,50,0,54,169,234,1,80,68,208,0,148,203,243,254,145,7,135,0,6,254,0,0,252,185,127,0,98,8,129,255,38,35,72,255,211,36,220,1,40,26,89,0,168,64,197,254,3,222,239,255,2,83,215,254,180,159,105,0,58,115,194,0,186,116,106,255,229,247,219,255,129,118,193,0,202,174,183,1,166,161,72,0,201,107,147,254,237,136,74,0,233,230,106,1,105,111,168,0,64,224,30,1,1,229,3,0,102,151,175,255,194,238,228,255,254,250,212,0,187,237,121,0,67,251,96,1,197,30,11,0,183,95,204,0,205,89,138,0,64,221,37,1,255,223,30,255,178,48,211,255,241,200,90,255,167,209,96,255,57,130,221,0,46,114,200,255,61,184,66,0,55,182,24,254,110,182,33,0,171,190,232,255,114,94,31,0,18,221,8,0,47,231,254,0,255,112,83,0,118,15,215,255,173,25,40,254,192,193,31,255,238,21,146,255,171,193,118,255,101,234,53,254,131,212,112,0,89,192,107,1,8,208,27,0,181,217,15,255,231,149,232,0,140,236,126,0,144,9,199,255,12,79,181,254,147,182,202,255,19,109,182,255,49,212,225,0,74,163,203,0,175,233,148,0,26,112,51,0,193,193,9,255,15,135,249,0,150,227,130,0,204,0,219,1,24,242,205,0,238,208,117,255,22,244,112,0,26,229,34,0,37,80,188,255,38,45,206,254,240,90,225,255,29,3,47,255,42,224,76,0,186,243,167,0,32,132,15,255,5,51,125,0,139,135,24,0,6,241,219,0,172,229,133,255,246,214,50,0,231,11,207,255,191,126,83,1,180,163,170,255,245,56,24,1,178,164,211,255,3,16,202,1,98,57,118,255,141,131,89,254,33,51,24,0,243,149,91,255,253,52,14,0,35,169,67,254,49,30,88,255,179,27,36,255,165,140,183,0,58,189,151,0,88,31,0,0,75,169,66,0,66,101,199,255,24,216,199,1,121,196,26,255,14,79,203,254,240,226,81,255,94,28,10,255,83,193,240,255,204,193,131,255,94,15,86,0,218,40,157,0,51,193,209,0,0,242,177,0,102,185,247,0,158,109,116,0,38,135,91,0,223,175,149,0,220,66,1,255,86,60,232,0,25,96,37,255,225,122,162,1,215,187,168,255,158,157,46,0,56,171,162,0,232,240,101,1,122,22,9,0,51,9,21,255,53,25,238,255,217,30,232,254,125,169,148,0,13,232,102,0,148,9,37,0,165,97,141,1,228,131,41,0,222,15,243,255,254,18,17,0,6,60,237,1,106,3,113,0,59,132,189,0,92,112,30,0,105,208,213,0,48,84,179,255,187,121,231,254,27,216,109,255,162,221,107,254,73,239,195,255,250,31,57,255,149,135,89,255,185,23,115,1,3,163,157,255,18,112,250,0,25,57,187,255,161,96,164,0,47,16,243,0,12,141,251,254,67,234,184,255,41,18,161,0,175,6,96,255,160,172,52,254,24,176,183,255,198,193,85,1,124,121,137,255,151,50,114,255,220,203,60,255,207,239,5,1,0,38,107,255,55,238,94,254,70,152,94,0,213,220,77,1,120,17,69,255,85,164,190,255,203,234,81,0,38,49,37,254,61,144,124,0,137,78,49,254,168,247,48,0,95,164,252,0,105,169,135,0,253,228,134,0,64,166,75,0,81,73,20,255,207,210,10,0,234,106,150,255,94,34,90,255,254,159,57,254,220,133,99,0,139,147,180,254,24,23,185,0,41,57,30,255,189,97,76,0,65,187,223,255,224,172,37,255,34,62,95,1,231,144,240,0,77,106,126,254,64,152,91,0,29,98,155,0,226,251,53,255,234,211,5,255,144,203,222,255,164,176,221,254,5,231,24,0,179,122,205,0,36,1,134,255,125,70,151,254,97,228,252,0,172,129,23,254,48,90,209,255,150,224,82,1,84,134,30,0,241,196,46,0,103,113,234,255,46,101,121,254,40,124,250,255,135,45,242,254,9,249,168,255,140,108,131,255,143,163,171,0,50,173,199,255,88,222,142,255,200,95,158,0,142,192,163,255,7,117,135,0,111,124,22,0,236,12,65,254,68,38,65,255,227,174,254,0,244,245,38,0,240,50,208,255,161,63,250,0,60,209,239,0,122,35,19,0,14,33,230,254,2,159,113,0,106,20,127,255,228,205,96,0,137,210,174,254,180,212,144,255,89,98,154,1,34,88,139,0,167,162,112,1,65,110,197,0,241,37,169,0,66,56,131,255,10,201,83,254,133,253,187,255,177,112,45,254,196,251,0,0,196,250,151,255,238,232,214,255,150,209,205,0,28,240,118,0,71,76,83,1,236,99,91,0,42,250,131,1,96,18,64,255,118,222,35,0,113,214,203,255,122,119,184,255,66,19,36,0,204,64,249,0,146,89,139,0,134,62,135,1,104,233,101,0,188,84,26,0,49,249,129,0,208,214,75,255,207,130,77,255,115,175,235,0,171,2,137,255,175,145,186,1,55,245,135,255,154,86,181,1,100,58,246,255,109,199,60,255,82,204,134,255,215,49,230,1,140,229,192,255,222,193,251,255,81,136,15,255,179,149,162,255,23,39,29,255,7,95,75,254,191,81,222,0,241,81,90,255,107,49,201,255,244,211,157,0,222,140,149,255,65,219,56,254,189,246,90,255,178,59,157,1,48,219,52,0,98,34,215,0,28,17,187,255,175,169,24,0,92,79,161,255,236,200,194,1,147,143,234,0,229,225,7,1,197,168,14,0,235,51,53,1,253,120,174,0,197,6,168,255,202,117,171,0,163,21,206,0,114,85,90,255,15,41,10,255,194,19,99,0,65,55,216,254,162,146,116,0,50,206,212,255,64,146,29,255,158,158,131,1,100,165,130,255,172,23,129,255,125,53,9,255,15,193,18,1,26,49,11,255,181,174,201,1,135,201,14,255,100,19,149,0,219,98,79,0,42,99,143,254,96,0,48,255,197,249,83,254,104,149,79,255,235,110,136,254,82,128,44,255,65,41,36,254,88,211,10,0,187,121,187,0,98,134,199,0,171,188,179,254,210,11,238,255,66,123,130,254,52,234,61,0,48,113,23,254,6,86,120,255,119,178,245,0,87,129,201,0,242,141,209,0,202,114,85,0,148,22,161,0,103,195,48,0,25,49,171,255,138,67,130,0,182,73,122,254,148,24,130,0,211,229,154,0,32,155,158,0,84,105,61,0,177,194,9,255,166,89,86,1,54,83,187,0,249,40,117,255,109,3,215,255,53,146,44,1,63,47,179,0,194,216,3,254,14,84,136,0,136,177,13,255,72,243,186,255,117,17,125,255,211,58,211,255,93,79,223,0,90,88,245,255,139,209,111,255,70,222,47,0,10,246,79,255,198,217,178,0,227,225,11,1,78,126,179,255,62,43,126,0,103,148,35,0,129,8,165,254,245,240,148,0,61,51,142,0,81,208,134,0,15,137,115,255,211,119,236,255,159,245,248,255,2,134,136,255,230,139,58,1,160,164,254,0,114,85,141,255,49,166,182,255,144,70,84,1,85,182,7,0,46,53,93,0,9,166,161,255,55,162,178,255,45,184,188,0,146,28,44,254,169,90,49,0,120,178,241,1,14,123,127,255,7,241,199,1,189,66,50,255,198,143,101,254,189,243,135,255,141,24,24,254,75,97,87,0,118,251,154,1,237,54,156,0,171,146,207,255,131,196,246,255,136,64,113,1,151,232,57,0,240,218,115,0,49,61,27,255,64,129,73,1,252,169,27,255,40,132,10,1,90,201,193,255,252,121,240,1,186,206,41,0,43,198,97,0,145,100,183,0,204,216,80,254,172,150,65,0,249,229,196,254,104,123,73,255,77,104,96,254,130,180,8,0,104,123,57,0,220,202,229,255,102,249,211,0,86,14,232,255,182,78,209,0,239,225,164,0,106,13,32,255,120,73,17,255,134,67,233,0,83,254,181,0,183,236,112,1,48,64,131,255,241,216,243,255,65,193,226,0,206,241,100,254,100,134,166,255,237,202,197,0,55,13,81,0,32,124,102,255,40,228,177,0,118,181,31,1,231,160,134,255,119,187,202,0,0,142,60,255,128,38,189,255,166,201,150,0,207,120,26,1,54,184,172,0,12,242,204,254,133,66,230,0,34,38,31,1,184,112,80,0,32,51,165,254,191,243,55,0,58,73,146,254,155,167,205,255,100,104,152,255,197,254,207,255,173,19,247,0,238,10,202,0,239,151,242,0,94,59,39,255,240,29,102,255,10,92,154,255,229,84,219,255,161,129,80,0,208,90,204,1,240,219,174,255,158,102,145,1,53,178,76,255,52,108,168,1,83,222,107,0,211,36,109,0,118,58,56,0,8,29,22,0,237,160,199,0,170,209,157,0,137,71,47,0,143,86,32,0,198,242,2,0,212,48,136,1,92,172,186,0,230,151,105,1,96,191,229,0,138,80,191,254,240,216,130,255,98,43,6,254,168,196,49,0,253,18,91,1,144,73,121,0,61,146,39,1,63,104,24,255,184,165,112,254,126,235,98,0,80,213,98,255,123,60,87,255,82,140,245,1,223,120,173,255,15,198,134,1,206,60,239,0,231,234,92,255,33,238,19,255,165,113,142,1,176,119,38,0,160,43,166,254,239,91,105,0,107,61,194,1,25,4,68,0,15,139,51,0,164,132,106,255,34,116,46,254,168,95,197,0,137,212,23,0,72,156,58,0,137,112,69,254,150,105,154,255,236,201,157,0,23,212,154,255,136,82,227,254,226,59,221,255,95,149,192,0,81,118,52,255,33,43,215,1,14,147,75,255,89,156,121,254,14,18,79,0,147,208,139,1,151,218,62,255,156,88,8,1,210,184,98,255,20,175,123,255,102,83,229,0,220,65,116,1,150,250,4,255,92,142,220,255,34,247,66,255,204,225,179,254,151,81,151,0,71,40,236,255,138,63,62,0,6,79,240,255,183,185,181,0,118,50,27,0,63,227,192,0,123,99,58,1,50,224,155,255,17,225,223,254,220,224,77,255,14,44,123,1,141,128,175,0,248,212,200,0,150,59,183,255,147,97,29,0,150,204,181,0,253,37,71,0,145,85,119,0,154,200,186,0,2,128,249,255,83,24,124,0,14,87,143,0,168,51,245,1,124,151,231,255,208,240,197,1,124,190,185,0,48,58,246,0,20,233,232,0,125,18,98,255,13,254,31,255,245,177,130,255,108,142,35,0,171,125,242,254,140,12,34,255,165,161,162,0,206,205,101,0,247,25,34,1,100,145,57,0,39,70,57,0,118,204,203,255,242,0,162,0,165,244,30,0,198,116,226,0,128,111,153,255,140,54,182,1,60,122,15,255,155,58,57,1,54,50,198,0,171,211,29,255,107,138,167,255,173,107,199,255,109,161,193,0,89,72,242,255,206,115,89,255,250,254,142,254,177,202,94,255,81,89,50,0,7,105,66,255,25,254,255,254,203,64,23,255,79,222,108,255,39,249,75,0,241,124,50,0,239,152,133,0,221,241,105,0,147,151,98,0,213,161,121,254,242,49,137,0,233,37,249,254,42,183,27,0,184,119,230,255,217,32,163,255,208,251,228,1,137,62,131,255,79,64,9,254,94,48,113,0,17,138,50,254,193,255,22,0,247,18,197,1,67,55,104,0,16,205,95,255,48,37,66,0,55,156,63,1,64,82,74,255,200,53,71,254,239,67,125,0,26,224,222,0,223,137,93,255,30,224,202,255,9,220,132,0,198,38,235,1,102,141,86,0,60,43,81,1,136,28,26,0,233,36,8,254,207,242,148,0,164,162,63,0,51,46,224,255,114,48,79,255,9,175,226,0,222,3,193,255,47,160,232,255,255,93,105,254,14,42,230,0,26,138,82,1,208,43,244,0,27,39,38,255,98,208,127,255,64,149,182,255,5,250,209,0,187,60,28,254,49,25,218,255,169,116,205,255,119,18,120,0,156,116,147,255,132,53,109,255,13,10,202,0,110,83,167,0,157,219,137,255,6,3,130,255,50,167,30,255,60,159,47,255,129,128,157,254,94,3,189,0,3,166,68,0,83,223,215,0,150,90,194,1,15,168,65,0,227,83,51,255,205,171,66,255,54,187,60,1,152,102,45,255,119,154,225,0,240,247,136,0,100,197,178,255,139,71,223,255,204,82,16,1,41,206,42,255,156,192,221,255,216,123,244,255,218,218,185,255,187,186,239,255,252,172,160,255,195,52,22,0,144,174,181,254,187,100,115,255,211,78,176,255,27,7,193,0,147,213,104,255,90,201,10,255,80,123,66,1,22,33,186,0,1,7,99,254,30,206,10,0,229,234,5,0,53,30,210,0,138,8,220,254,71,55,167,0,72,225,86,1,118,190,188,0,254,193,101,1,171,249,172,255,94,158,183,254,93,2,108,255,176,93,76,255,73,99,79,255,74,64,129,254,246,46,65,0,99,241,127,254,246,151,102,255,44,53,208,254,59,102,234,0,154,175,164,255,88,242,32,0,111,38,1,0,255,182,190,255,115,176,15,254,169,60,129,0,122,237,241,0,90,76,63,0,62,74,120,255,122,195,110,0,119,4,178,0,222,242,210,0,130,33,46,254,156,40,41,0,167,146,112,1,49,163,111,255,121,176,235,0,76,207,14,255,3,25,198,1,41,235,213,0,85,36,214,1,49,92,109,255,200,24,30,254,168,236,195,0,145,39,124,1,236,195,149,0,90,36,184,255,67,85,170,255,38,35,26,254,131,124,68,255,239,155,35,255,54,201,164,0,196,22,117,255,49,15,205,0,24,224,29,1,126,113,144,0,117,21,182,0,203,159,141,0,223,135,77,0,176,230,176,255,190,229,215,255,99,37,181,255,51,21,138,255,25,189,89,255,49,48,165,254,152,45,247,0,170,108,222,0,80,202,5,0,27,69,103,254,204,22,129,255,180,252,62,254,210,1,91,255,146,110,254,255,219,162,28,0,223,252,213,1,59,8,33,0,206,16,244,0,129,211,48,0,107,160,208,0,112,59,209,0,109,77,216,254,34,21,185,255,246,99,56,255,179,139,19,255,185,29,50,255,84,89,19,0,74,250,98,255,225,42,200,255,192,217,205,255,210,16,167,0,99,132,95,1,43,230,57,0,254,11,203,255,99,188,63,255,119,193,251,254,80,105,54,0,232,181,189,1,183,69,112,255,208,171,165,255,47,109,180,255,123,83,165,0,146,162,52,255,154,11,4,255,151,227,90,255,146,137,97,254,61,233,41,255,94,42,55,255,108,164,236,0,152,68,254,0,10,140,131,255,10,106,79,254,243,158,137,0,67,178,66,254,177,123,198,255,15,62,34,0,197,88,42,255,149,95,177,255,152,0,198,255,149,254,113,255,225,90,163,255,125,217,247,0,18,17,224,0,128,66,120,254,192,25,9,255,50,221,205,0,49,212,70,0,233,255,164,0,2,209,9,0,221,52,219,254,172,224,244,255,94,56,206,1,242,179,2,255,31,91,164,1,230,46,138,255,189,230,220,0,57,47,61,255,111,11,157,0,177,91,152,0,28,230,98,0,97,87,126,0,198,89,145,255,167,79,107,0,249,77,160,1,29,233,230,255,150,21,86,254,60,11,193,0,151,37,36,254,185,150,243,255,228,212,83,1,172,151,180,0,201,169,155,0,244,60,234,0,142,235,4,1,67,218,60,0,192,113,75,1,116,243,207,255,65,172,155,0,81,30,156,255,80,72,33,254,18,231,109,255,142,107,21,254,125,26,132,255,176,16,59,255,150,201,58,0,206,169,201,0,208,121,226,0,40,172,14,255,150,61,94,255,56,57,156,255,141,60,145,255,45,108,149,255,238,145,155,255,209,85,31,254,192,12,210,0,99,98,93,254,152,16,151,0,225,185,220,0,141,235,44,255,160,172,21,254,71,26,31,255,13,64,93,254,28,56,198,0,177,62,248,1,182,8,241,0,166,101,148,255,78,81,133,255,129,222,215,1,188,169,129,255,232,7,97,0,49,112,60,255,217,229,251,0,119,108,138,0,39,19,123,254,131,49,235,0,132,84,145,0,130,230,148,255,25,74,187,0,5,245,54,255,185,219,241,1,18,194,228,255,241,202,102,0,105,113,202,0,155,235,79,0,21,9,178,255,156,1,239,0,200,148,61,0,115,247,210,255,49,221,135,0,58,189,8,1,35,46,9,0,81,65,5,255,52,158,185,255,125,116,46,255,74,140,13,255,210,92,172,254,147,23,71,0,217,224,253,254,115,108,180,255,145,58,48,254,219,177,24,255,156,255,60,1,154,147,242,0,253,134,87,0,53,75,229,0,48,195,222,255,31,175,50,255,156,210,120,255,208,35,222,255,18,248,179,1,2,10,101,255,157,194,248,255,158,204,101,255,104,254,197,255,79,62,4,0,178,172,101,1,96,146,251,255,65,10,156,0,2,137,165,255,116,4,231,0,242,215,1,0,19,35,29,255,43,161,79,0,59,149,246,1,251,66,176,0,200,33,3,255,80,110,142,255,195,161,17,1,228,56,66,255,123,47,145,254,132,4,164,0,67,174,172,0,25,253,114,0,87,97,87,1,250,220,84,0,96,91,200,255,37,125,59,0,19,65,118,0,161,52,241,255,237,172,6,255,176,191,255,255,1,65,130,254,223,190,230,0,101,253,231,255,146,35,109,0,250,29,77,1,49,0,19,0,123,90,155,1,22,86,32,255,218,213,65,0,111,93,127,0,60,93,169,255,8,127,182,0,17,186,14,254,253,137,246,255,213,25,48,254,76,238,0,255,248,92,70,255,99,224,139,0,184,9,255,1,7,164,208,0,205,131,198,1,87,214,199,0,130,214,95,0,221,149,222,0,23,38,171,254,197,110,213,0,43,115,140,254,215,177,118,0,96,52,66,1,117,158,237,0,14,64,182,255,46,63,174,255,158,95,190,255,225,205,177,255,43,5,142,255,172,99,212,255,244,187,147,0,29,51,153,255,228,116,24,254,30,101,207,0,19,246,150,255,134,231,5,0,125,134,226,1,77,65,98,0,236,130,33,255,5,110,62,0,69,108,127,255,7,113,22,0,145,20,83,254,194,161,231,255,131,181,60,0,217,209,177,255,229,148,212,254,3,131,184,0,117,177,187,1,28,14,31,255,176,102,80,0,50,84,151,255,125,31,54,255,21,157,133,255,19,179,139,1,224,232,26,0,34,117,170,255,167,252,171,255,73,141,206,254,129,250,35,0,72,79,236,1,220,229,20,255,41,202,173,255,99,76,238,255,198,22,224,255,108,198,195,255,36,141,96,1,236,158,59,255,106,100,87,0,110,226,2,0,227,234,222,0,154,93,119,255,74,112,164,255,67,91,2,255,21,145,33,255,102,214,137,255,175,230,103,254,163,246,166,0,93,247,116,254,167,224,28,255,220,2,57,1,171,206,84,0,123,228,17,255,27,120,119,0,119,11,147,1,180,47,225,255,104,200,185,254,165,2,114,0,77,78,212,0,45,154,177,255,24,196,121,254,82,157,182,0,90,16,190,1,12,147,197,0,95,239,152,255,11,235,71,0,86,146,119,255,172,134,214,0,60,131,196,0,161,225,129,0,31,130,120,254,95,200,51,0,105,231,210,255,58,9,148,255,43,168,221,255,124,237,142,0,198,211,50,254,46,245,103,0,164,248,84,0,152,70,208,255,180,117,177,0,70,79,185,0,243,74,32,0,149,156,207,0,197,196,161,1,245,53,239,0,15,93,246,254,139,240,49,255,196,88,36,255,162,38,123,0,128,200,157,1,174,76,103,255,173,169,34,254,216,1,171,255,114,51,17,0,136,228,194,0,110,150,56,254,106,246,159,0,19,184,79,255,150,77,240,255,155,80,162,0,0,53,169,255,29,151,86,0,68,94,16,0,92,7,110,254,98,117,149,255,249,77,230,255,253,10,140,0,214,124,92,254,35,118,235,0,89,48,57,1,22,53,166,0,184,144,61,255,179,255,194,0,214,248,61,254,59,110,246,0,121,21,81,254,166,3,228,0,106,64,26,255,69,232,134,255,242,220,53,254,46,220,85,0,113,149,247,255,97,179,103,255,190,127,11,0,135,209,182,0,95,52,129,1,170,144,206,255,122,200,204,255,168,100,146,0,60,144,149,254,70,60,40,0,122,52,177,255,246,211,101,255,174,237,8,0,7,51,120,0,19,31,173,0,126,239,156,255,143,189,203,0,196,128,88,255,233,133,226,255,30,125,173,255,201,108,50,0,123,100,59,255,254,163,3,1,221,148,181,255,214,136,57,254,222,180,137,255,207,88,54,255,28,33,251,255,67,214,52,1,210,208,100,0,81,170,94,0,145,40,53,0,224,111,231,254,35,28,244,255,226,199,195,254,238,17,230,0,217,217,164,254,169,157,221,0,218,46,162,1,199,207,163,255,108,115,162,1,14,96,187,255,118,60,76,0,184,159,152,0,209,231,71,254,42,164,186,255,186,153,51,254,221,171,182,255,162,142,173,0,235,47,193,0,7,139,16,1,95,164,64,255,16,221,166,0,219,197,16,0,132,29,44,255,100,69,117,255,60,235,88,254,40,81,173,0,71,190,61,255,187,88,157,0,231,11,23,0,237,117,164,0,225,168,223,255,154,114,116,255,163,152,242,1,24,32,170,0,125,98,113,254,168,19,76,0,17,157,220,254,155,52,5,0,19,111,161,255,71,90,252,255,173,110,240,0,10,198,121,255,253,255,240,255,66,123,210,0,221,194,215,254,121,163,17,255,225,7,99,0,190,49,182,0,115,9,133,1,232,26,138,255,213,68,132,0,44,119,122,255,179,98,51,0,149,90,106,0,71,50,230,255,10,153,118,255,177,70,25,0,165,87,205,0,55,138,234,0,238,30,97,0,113,155,207,0,98,153,127,0,34,107,219,254,117,114,172,255,76,180,255,254,242,57,179,255,221,34,172,254,56,162,49,255,83,3,255,255,113,221,189,255,188,25,228,254,16,88,89,255,71,28,198,254,22,17,149,255,243,121,254,255,107,202,99,255,9,206,14,1,220,47,153,0,107,137,39,1,97,49,194,255,149,51,197,254,186,58,11,255,107,43,232,1,200,6,14,255,181,133,65,254,221,228,171,255,123,62,231,1,227,234,179,255,34,189,212,254,244,187,249,0,190,13,80,1,130,89,1,0,223,133,173,0,9,222,198,255,66,127,74,0,167,216,93,255,155,168,198,1,66,145,0,0,68,102,46,1,172,90,154,0,216,128,75,255,160,40,51,0,158,17,27,1,124,240,49,0,236,202,176,255,151,124,192,255,38,193,190,0,95,182,61,0,163,147,124,255,255,165,51,255,28,40,17,254,215,96,78,0,86,145,218,254,31,36,202,255,86,9,5,0,111,41,200,255,237,108,97,0,57,62,44,0,117,184,15,1,45,241,116,0,152,1,220,255,157,165,188,0,250,15,131,1,60,44,125,255,65,220,251,255,75,50,184,0,53,90,128,255,231,80,194,255,136,129,127,1,21,18,187,255,45,58,161,255,71,147,34,0,174,249,11,254,35,141,29,0,239,68,177,255,115,110,58,0,238,190,177,1,87,245,166,255,190,49,247,255,146,83,184,255,173,14,39,255,146,215,104,0,142,223,120,0,149,200,155,255,212,207,145,1,16,181,217,0,173,32,87,255,255,35,181,0,119,223,161,1,200,223,94,255,70,6,186,255,192,67,85,255,50,169,152,0,144,26,123,255,56,243,179,254,20,68,136,0,39,140,188,254,253,208,5,255,200,115,135,1,43,172,229,255,156,104,187,0,151,251,167,0,52,135,23,0,151,153,72,0,147,197,107,254,148,158,5,255,238,143,206,0,126,153,137,255,88,152,197,254,7,68,167,0,252,159,165,255,239,78,54,255,24,63,55,255,38,222,94,0,237,183,12,255,206,204,210,0,19,39,246,254,30,74,231,0,135,108,29,1,179,115,0,0,117,118,116,1,132,6,252,255,145,129,161,1,105,67,141,0,82,37,226,255,238,226,228,255,204,214,129,254,162,123,100,255,185,121,234,0,45,108,231,0,66,8,56,255,132,136,128,0,172,224,66,254,175,157,188,0,230,223,226,254,242,219,69,0,184,14,119,1,82,162,56,0,114,123,20,0,162,103,85,255,49,239,99,254,156,135,215,0,111,255,167,254,39,196,214,0,144,38,79,1,249,168,125,0,155,97,156,255,23,52,219,255,150,22,144,0,44,149,165,255,40,127,183,0,196,77,233,255,118,129,210,255,170,135,230,255,214,119,198,0,233,240,35,0,253,52,7,255,117,102,48,255,21,204,154,255,179,136,177,255,23,2,3,1,149,130,89,255,252,17,159,1,70,60,26,0,144,107,17,0,180,190,60,255,56,182,59,255,110,71,54,255,198,18,129,255,149,224,87,255,223,21,152,255,138,22,182,255,250,156,205,0,236,45,208,255,79,148,242,1,101,70,209,0,103,78,174,0,101,144,172,255,152,136,237,1,191,194,136,0,113,80,125,1,152,4,141,0,155,150,53,255,196,116,245,0,239,114,73,254,19,82,17,255,124,125,234,255,40,52,191,0,42,210,158,255,155,132,165,0,178,5,42,1,64,92,40,255,36,85,77,255,178,228,118,0,137,66,96,254,115,226,66,0,110,240,69,254,151,111,80,0,167,174,236,255,227,108,107,255,188,242,65,255,183,81,255,0,57,206,181,255,47,34,181,255,213,240,158,1,71,75,95,0,156,40,24,255,102,210,81,0,171,199,228,255,154,34,41,0,227,175,75,0,21,239,195,0,138,229,95,1,76,192,49,0,117,123,87,1,227,225,130,0,125,62,63,255,2,198,171,0,254,36,13,254,145,186,206,0,148,255,244,255,35,0,166,0,30,150,219,1,92,228,212,0,92,198,60,254,62,133,200,255,201,41,59,0,125,238,109,255,180,163,238,1,140,122,82,0,9,22,88,255,197,157,47,255,153,94,57,0,88,30,182,0,84,161,85,0,178,146,124,0,166,166,7,255,21,208,223,0,156,182,242,0,155,121,185,0,83,156,174,254,154,16,118,255,186,83,232,1,223,58,121,255,29,23,88,0,35,125,127,255,170,5,149,254,164,12,130,255,155,196,29,0,161,96,136,0,7,35,29,1,162,37,251,0,3,46,242,255,0,217,188,0,57,174,226,1,206,233,2,0,57,187,136,254,123,189,9,255,201,117,127,255,186,36,204,0,231,25,216,0,80,78,105,0,19,134,129,255,148,203,68,0,141,81,125,254,248,165,200,255,214,144,135,0,151,55,166,255,38,235,91,0,21,46,154,0,223,254,150,255,35,153,180,255,125,176,29,1,43,98,30,255,216,122,230,255,233,160,12,0,57,185,12,254,240,113,7,255,5,9,16,254,26,91,108,0,109,198,203,0,8,147,40,0,129,134,228,255,124,186,40,255,114,98,132,254,166,132,23,0,99,69,44,0,9,242,238,255,184,53,59,0,132,129,102,255,52,32,243,254,147,223,200,255,123,83,179,254,135,144,201,255,141,37,56,1,151,60,227,255,90,73,156,1,203,172,187,0,80,151,47,255,94,137,231,255,36,191,59,255,225,209,181,255,74,215,213,254,6,118,179,255,153,54,193,1,50,0,231,0,104,157,72,1,140,227,154,255,182,226,16,254,96,225,92,255,115,20,170,254,6,250,78,0,248,75,173,255,53,89,6,255,0,180,118,0,72,173,1,0,64,8,206,1,174,133,223,0,185,62,133,255,214,11,98,0,197,31,208,0,171,167,244,255,22,231,181,1,150,218,185,0,247,169,97,1,165,139,247,255,47,120,149,1,103,248,51,0,60,69,28,254,25,179,196,0,124,7,218,254,58,107,81,0,184,233,156,255,252,74,36,0,118,188,67,0,141,95,53,255,222,94,165,254,46,61,53,0,206,59,115,255,47,236,250,255,74,5,32,1,129,154,238,255,106,32,226,0,121,187,61,255,3,166,241,254,67,170,172,255,29,216,178,255,23,201,252,0,253,110,243,0,200,125,57,0,109,192,96,255,52,115,238,0,38,121,243,255,201,56,33,0,194,118,130,0,75,96,25,255,170,30,230,254,39,63,253,0,36,45,250,255,251,1,239,0,160,212,92,1,45,209,237,0,243,33,87,254,237,84,201,255,212,18,157,254,212,99,127,255,217,98,16,254,139,172,239,0,168,201,130,255,143,193,169,255,238,151,193,1,215,104,41,0,239,61,165,254,2,3,242,0,22,203,177,254,177,204,22,0,149,129,213,254,31,11,41,255,0,159,121,254,160,25,114,255,162,80,200,0,157,151,11,0,154,134,78,1,216,54,252,0,48,103,133,0,105,220,197,0,253,168,77,254,53,179,23,0,24,121,240,1,255,46,96,255,107,60,135,254,98,205,249,255,63,249,119,255,120,59,211,255,114,180,55,254,91,85,237,0,149,212,77,1,56,73,49,0,86,198,150,0,93,209,160,0,69,205,182,255,244,90,43,0,20,36,176,0,122,116,221,0,51,167,39,1,231,1,63,255,13,197,134,0,3,209,34,255,135,59,202,0,167,100,78,0,47,223,76,0,185,60,62,0,178,166,123,1,132,12,161,255,61,174,43,0,195,69,144,0,127,47,191,1,34,44,78,0,57,234,52,1,255,22,40,255,246,94,146,0,83,228,128,0,60,78,224,255,0,96,210,255,153,175,236,0,159,21,73,0,180,115,196,254,131,225,106,0,255,167,134,0,159,8,112,255,120,68,194,255,176,196,198,255,118,48,168,255,93,169,1,0,112,200,102,1,74,24,254,0,19,141,4,254,142,62,63,0,131,179,187,255,77,156,155,255,119,86,164,0,170,208,146,255,208,133,154,255,148,155,58,255,162,120,232,254,252,213,155,0,241,13,42,0,94,50,131,0,179,170,112,0,140,83,151,255,55,119,84,1,140,35,239,255,153,45,67,1,236,175,39,0,54,151,103,255,158,42,65,255,196,239,135,254,86,53,203,0,149,97,47,254,216,35,17,255,70,3,70,1,103,36,90,255,40,26,173,0,184,48,13,0,163,219,217,255,81,6,1,255,221,170,108,254,233,208,93,0,100,201,249,254,86,36,35,255,209,154,30,1,227,201,251,255,2,189,167,254,100,57,3,0,13,128,41,0,197,100,75,0,150,204,235,255,145,174,59,0,120,248,149,255,85,55,225,0,114,210,53,254,199,204,119,0,14,247,74,1,63,251,129,0,67,104,151,1,135,130,80,0,79,89,55,255,117,230,157,255,25,96,143,0,213,145,5,0,69,241,120,1,149,243,95,255,114,42,20,0,131,72,2,0,154,53,20,255,73,62,109,0,196,102,152,0,41,12,204,255,122,38,11,1,250,10,145,0,207,125,148,0,246,244,222,255,41,32,85,1,112,213,126,0,162,249,86,1,71,198,127,255,81,9,21,1,98,39,4,255,204,71,45,1,75,111,137,0,234,59,231,0,32,48,95,255,204,31,114,1,29,196,181,255,51,241,167,254,93,109,142,0,104,144,45,0,235,12,181,255,52,112,164,0,76,254,202,255,174,14,162,0,61,235,147,255,43,64,185,254,233,125,217,0,243,88,167,254,74,49,8,0,156,204,66,0,124,214,123,0,38,221,118,1,146,112,236,0,114,98,177,0,151,89,199,0,87,197,112,0,185,149,161,0,44,96,165,0,248,179,20,255,188,219,216,254,40,62,13,0,243,142,141,0,229,227,206,255,172,202,35,255,117,176,225,255,82,110,38,1,42,245,14,255,20,83,97,0,49,171,10,0,242,119,120,0,25,232,61,0,212,240,147,255,4,115,56,255,145,17,239,254,202,17,251,255,249,18,245,255,99,117,239,0,184,4,179,255,246,237,51,255,37,239,137,255,166,112,166,255,81,188,33,255,185,250,142,255,54,187,173,0,208,112,201,0,246,43,228,1,104,184,88,255,212,52,196,255,51,117,108,255,254,117,155,0,46,91,15,255,87,14,144,255,87,227,204,0,83,26,83,1,159,76,227,0,159,27,213,1,24,151,108,0,117,144,179,254,137,209,82,0,38,159,10,0,115,133,201,0,223,182,156,1,110,196,93,255,57,60,233,0,5,167,105,255,154,197,164,0,96,34,186,255,147,133,37,1,220,99,190,0,1,167,84,255,20,145,171,0,194,197,251,254,95,78,133,255,252,248,243,255,225,93,131,255,187,134,196,255,216,153,170,0,20,118,158,254,140,1,118,0,86,158,15,1,45,211,41,255,147,1,100,254,113,116,76,255,211,127,108,1,103,15,48,0,193,16,102,1,69,51,95,255,107,128,157,0,137,171,233,0,90,124,144,1,106,161,182,0,175,76,236,1,200,141,172,255,163,58,104,0,233,180,52,255,240,253,14,255,162,113,254,255,38,239,138,254,52,46,166,0,241,101,33,254,131,186,156,0,111,208,62,255,124,94,160,255,31,172,254,0,112,174,56,255,188,99,27,255,67,138,251,0,125,58,128,1,156,152,174,255,178,12,247,255,252,84,158,0,82,197,14,254,172,200,83,255,37,39,46,1,106,207,167,0,24,189,34,0,131,178,144,0,206,213,4,0,161,226,210,0,72,51,105,255,97,45,187,255,78,184,223,255,176,29,251,0,79,160,86,255,116,37,178,0,82,77,213,1,82,84,141,255,226,101,212,1,175,88,199,255,245,94,247,1,172,118,109,255,166,185,190,0,131,181,120,0,87,254,93,255,134,240,73,255,32,245,143,255,139,162,103,255,179,98,18,254,217,204,112,0,147,223,120,255,53,10,243,0,166,140,150,0,125,80,200,255,14,109,219,255,91,218,1,255,252,252,47,254,109,156,116,255,115,49,127,1,204,87,211,255,148,202,217,255,26,85,249,255,14,245,134,1,76,89,169,255,242,45,230,0,59,98,172,255,114,73,132,254,78,155,49,255,158,126,84,0,49,175,43,255,16,182,84,255,157,103,35,0,104,193,109,255,67,221,154,0,201,172,1,254,8,162,88,0,165,1,29,255,125,155,229,255,30,154,220,1,103,239,92,0,220,1,109,255,202,198,1,0,94,2,142,1,36,54,44,0,235,226,158,255,170,251,214,255,185,77,9,0,97,74,242,0,219,163,149,255,240,35,118,255,223,114,88,254,192,199,3,0,106,37,24,255,201,161,118,255,97,89,99,1,224,58,103,255,101,199,147,254,222,60,99,0,234,25,59,1,52,135,27,0,102,3,91,254,168,216,235,0,229,232,136,0,104,60,129,0,46,168,238,0,39,191,67,0,75,163,47,0,143,97,98,255,56,216,168,1,168,233,252,255,35,111,22,255,92,84,43,0,26,200,87,1,91,253,152,0,202,56,70,0,142,8,77,0,80,10,175,1,252,199,76,0,22,110,82,255,129,1,194,0,11,128,61,1,87,14,145,255,253,222,190,1,15,72,174,0,85,163,86,254,58,99,44,255,45,24,188,254,26,205,15,0,19,229,210,254,248,67,195,0,99,71,184,0,154,199,37,255,151,243,121,255,38,51,75,255,201,85,130,254,44,65,250,0,57,147,243,254,146,43,59,255,89,28,53,0,33,84,24,255,179,51,18,254,189,70,83,0,11,156,179,1,98,134,119,0,158,111,111,0,119,154,73,255,200,63,140,254,45,13,13,255,154,192,2,254,81,72,42,0,46,160,185,254,44,112,6,0,146,215,149,1,26,176,104,0,68,28,87,1,236,50,153,255,179,128,250,254,206,193,191,255,166,92,137,254,53,40,239,0,210,1,204,254,168,173,35,0,141,243,45,1,36,50,109,255,15,242,194,255,227,159,122,255,176,175,202,254,70,57,72,0,40,223,56,0,208,162,58,255,183,98,93,0,15,111,12,0,30,8,76,255,132,127,246,255,45,242,103,0,69,181,15,255,10,209,30,0,3,179,121,0,241,232,218,1,123,199,88,255,2,210,202,1,188,130,81,255,94,101,208,1,103,36,45,0,76,193,24,1,95,26,241,255,165,162,187,0,36,114,140,0,202,66,5,255,37,56,147,0,152,11,243,1,127,85,232,255,250,135,212,1,185,177,113,0,90,220,75,255,69,248,146,0,50,111,50,0,92,22,80,0,244,36,115,254,163,100,82,255,25,193,6,1,127,61,36,0,253,67,30,254,65,236,170,255,161,17,215,254,63,175,140,0,55,127,4,0,79,112,233,0,109,160,40,0,143,83,7,255,65,26,238,255,217,169,140,255,78,94,189,255,0,147,190,255,147,71,186,254,106,77,127,255,233,157,233,1,135,87,237,255,208,13,236,1,155,109,36,255,180,100,218,0,180,163,18,0,190,110,9,1,17,63,123,255,179,136,180,255,165,123,123,255,144,188,81,254,71,240,108,255,25,112,11,255,227,218,51,255,167,50,234,255,114,79,108,255,31,19,115,255,183,240,99,0,227,87,143,255,72,217,248,255,102,169,95,1,129,149,149,0,238,133,12,1,227,204,35,0,208,115,26,1,102,8,234,0,112,88,143,1,144,249,14,0,240,158,172,254,100,112,119,0,194,141,153,254,40,56,83,255,121,176,46,0,42,53,76,255,158,191,154,0,91,209,92,0,173,13,16,1,5,72,226,255,204,254,149,0,80,184,207,0,100,9,122,254,118,101,171,255,252,203,0,254,160,207,54,0,56,72,249,1,56,140,13,255,10,64,107,254,91,101,52,255,225,181,248,1,139,255,132,0,230,145,17,0,233,56,23,0,119,1,241,255,213,169,151,255,99,99,9,254,185,15,191,255,173,103,109,1,174,13,251,255,178,88,7,254,27,59,68,255,10,33,2,255,248,97,59,0,26,30,146,1,176,147,10,0,95,121,207,1,188,88,24,0,185,94,254,254,115,55,201,0,24,50,70,0,120,53,6,0,142,66,146,0,228,226,249,255,104,192,222,1,173,68,219,0,162,184,36,255,143,102,137,255,157,11,23,0,125,45,98,0,235,93,225,254,56,112,160,255,70,116,243,1,153,249,55,255,129,39,17,1,241,80,244,0,87,69,21,1,94,228,73,255,78,66,65,255,194,227,231,0,61,146,87,255,173,155,23,255,112,116,219,254,216,38,11,255,131,186,133,0,94,212,187,0,100,47,91,0,204,254,175,255,222,18,215,254,173,68,108,255,227,228,79,255,38,221,213,0,163,227,150,254,31,190,18,0,160,179,11,1,10,90,94,255,220,174,88,0,163,211,229,255,199,136,52,0,130,95,221,255,140,188,231,254,139,113,128,255,117,171,236,254,49,220,20,255,59,20,171,255,228,109,188,0,20,225,32,254,195,16,174,0,227,254,136,1,135,39,105,0,150,77,206,255,210,238,226,0,55,212,132,254,239,57,124,0,170,194,93,255,249,16,247,255,24,151,62,255,10,151,10,0,79,139,178,255,120,242,202,0,26,219,213,0,62,125,35,255,144,2,108,255,230,33,83,255,81,45,216,1,224,62,17,0,214,217,125,0,98,153,153,255], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);
  1181. /* memory initializer */ allocate([179,176,106,254,131,93,138,255,109,62,36,255,178,121,32,255,120,252,70,0,220,248,37,0,204,88,103,1,128,220,251,255,236,227,7,1,106,49,198,255,60,56,107,0,99,114,238,0,220,204,94,1,73,187,1,0,89,154,34,0,78,217,165,255,14,195,249,255,9,230,253,255,205,135,245,0,26,252,7,255,84,205,27,1,134,2,112,0,37,158,32,0,231,91,237,255,191,170,204,255,152,7,222,0,109,192,49,0,193,166,146,255,232,19,181,255,105,142,52,255,103,16,27,1,253,200,165,0,195,217,4,255,52,189,144,255,123,155,160,254,87,130,54,255,78,120,61,255,14,56,41,0,25,41,125,255,87,168,245,0,214,165,70,0,212,169,6,255,219,211,194,254,72,93,164,255,197,33,103,255,43,142,141,0,131,225,172,0,244,105,28,0,68,68,225,0,136,84,13,255,130,57,40,254,139,77,56,0,84,150,53,0,54,95,157,0,144,13,177,254,95,115,186,0,117,23,118,255,244,166,241,255,11,186,135,0,178,106,203,255,97,218,93,0,43,253,45,0,164,152,4,0,139,118,239,0,96,1,24,254,235,153,211,255,168,110,20,255,50,239,176,0,114,41,232,0,193,250,53,0,254,160,111,254,136,122,41,255,97,108,67,0,215,152,23,255,140,209,212,0,42,189,163,0,202,42,50,255,106,106,189,255,190,68,217,255,233,58,117,0,229,220,243,1,197,3,4,0,37,120,54,254,4,156,134,255,36,61,171,254,165,136,100,255,212,232,14,0,90,174,10,0,216,198,65,255,12,3,64,0,116,113,115,255,248,103,8,0,231,125,18,255,160,28,197,0,30,184,35,1,223,73,249,255,123,20,46,254,135,56,37,255,173,13,229,1,119,161,34,255,245,61,73,0,205,125,112,0,137,104,134,0,217,246,30,255,237,142,143,0,65,159,102,255,108,164,190,0,219,117,173,255,34,37,120,254,200,69,80,0,31,124,218,254,74,27,160,255,186,154,199,255,71,199,252,0,104,81,159,1,17,200,39,0,211,61,192,1,26,238,91,0,148,217,12,0,59,91,213,255,11,81,183,255,129,230,122,255,114,203,145,1,119,180,66,255,72,138,180,0,224,149,106,0,119,82,104,255,208,140,43,0,98,9,182,255,205,101,134,255,18,101,38,0,95,197,166,255,203,241,147,0,62,208,145,255,133,246,251,0,2,169,14,0,13,247,184,0,142,7,254,0,36,200,23,255,88,205,223,0,91,129,52,255,21,186,30,0,143,228,210,1,247,234,248,255,230,69,31,254,176,186,135,255,238,205,52,1,139,79,43,0,17,176,217,254,32,243,67,0,242,111,233,0,44,35,9,255,227,114,81,1,4,71,12,255,38,105,191,0,7,117,50,255,81,79,16,0,63,68,65,255,157,36,110,255,77,241,3,255,226,45,251,1,142,25,206,0,120,123,209,1,28,254,238,255,5,128,126,255,91,222,215,255,162,15,191,0,86,240,73,0,135,185,81,254,44,241,163,0,212,219,210,255,112,162,155,0,207,101,118,0,168,72,56,255,196,5,52,0,72,172,242,255,126,22,157,255,146,96,59,255,162,121,152,254,140,16,95,0,195,254,200,254,82,150,162,0,119,43,145,254,204,172,78,255,166,224,159,0,104,19,237,255,245,126,208,255,226,59,213,0,117,217,197,0,152,72,237,0,220,31,23,254,14,90,231,255,188,212,64,1,60,101,246,255,85,24,86,0,1,177,109,0,146,83,32,1,75,182,192,0,119,241,224,0,185,237,27,255,184,101,82,1,235,37,77,255,253,134,19,0,232,246,122,0,60,106,179,0,195,11,12,0,109,66,235,1,125,113,59,0,61,40,164,0,175,104,240,0,2,47,187,255,50,12,141,0,194,139,181,255,135,250,104,0,97,92,222,255,217,149,201,255,203,241,118,255,79,151,67,0,122,142,218,255,149,245,239,0,138,42,200,254,80,37,97,255,124,112,167,255,36,138,87,255,130,29,147,255,241,87,78,255,204,97,19,1,177,209,22,255,247,227,127,254,99,119,83,255,212,25,198,1,16,179,179,0,145,77,172,254,89,153,14,255,218,189,167,0,107,233,59,255,35,33,243,254,44,112,112,255,161,127,79,1,204,175,10,0,40,21,138,254,104,116,228,0,199,95,137,255,133,190,168,255,146,165,234,1,183,99,39,0,183,220,54,254,255,222,133,0,162,219,121,254,63,239,6,0,225,102,54,255,251,18,246,0,4,34,129,1,135,36,131,0,206,50,59,1,15,97,183,0,171,216,135,255,101,152,43,255,150,251,91,0,38,145,95,0,34,204,38,254,178,140,83,255,25,129,243,255,76,144,37,0,106,36,26,254,118,144,172,255,68,186,229,255,107,161,213,255,46,163,68,255,149,170,253,0,187,17,15,0,218,160,165,255,171,35,246,1,96,13,19,0,165,203,117,0,214,107,192,255,244,123,177,1,100,3,104,0,178,242,97,255,251,76,130,255,211,77,42,1,250,79,70,255,63,244,80,1,105,101,246,0,61,136,58,1,238,91,213,0,14,59,98,255,167,84,77,0,17,132,46,254,57,175,197,255,185,62,184,0,76,64,207,0,172,175,208,254,175,74,37,0,138,27,211,254,148,125,194,0,10,89,81,0,168,203,101,255,43,213,209,1,235,245,54,0,30,35,226,255,9,126,70,0,226,125,94,254,156,117,20,255,57,248,112,1,230,48,64,255,164,92,166,1,224,214,230,255,36,120,143,0,55,8,43,255,251,1,245,1,106,98,165,0,74,107,106,254,53,4,54,255,90,178,150,1,3,120,123,255,244,5,89,1,114,250,61,255,254,153,82,1,77,15,17,0,57,238,90,1,95,223,230,0,236,52,47,254,103,148,164,255,121,207,36,1,18,16,185,255,75,20,74,0,187,11,101,0,46,48,129,255,22,239,210,255,77,236,129,255,111,77,204,255,61,72,97,255,199,217,251,255,42,215,204,0,133,145,201,255,57,230,146,1,235,100,198,0,146,73,35,254,108,198,20,255,182,79,210,255,82,103,136,0,246,108,176,0,34,17,60,255,19,74,114,254,168,170,78,255,157,239,20,255,149,41,168,0,58,121,28,0,79,179,134,255,231,121,135,255,174,209,98,255,243,122,190,0,171,166,205,0,212,116,48,0,29,108,66,255,162,222,182,1,14,119,21,0,213,39,249,255,254,223,228,255,183,165,198,0,133,190,48,0,124,208,109,255,119,175,85,255,9,209,121,1,48,171,189,255,195,71,134,1,136,219,51,255,182,91,141,254,49,159,72,0,35,118,245,255,112,186,227,255,59,137,31,0,137,44,163,0,114,103,60,254,8,213,150,0,162,10,113,255,194,104,72,0,220,131,116,255,178,79,92,0,203,250,213,254,93,193,189,255,130,255,34,254,212,188,151,0,136,17,20,255,20,101,83,255,212,206,166,0,229,238,73,255,151,74,3,255,168,87,215,0,155,188,133,255,166,129,73,0,240,79,133,255,178,211,81,255,203,72,163,254,193,168,165,0,14,164,199,254,30,255,204,0,65,72,91,1,166,74,102,255,200,42,0,255,194,113,227,255,66,23,208,0,229,216,100,255,24,239,26,0,10,233,62,255,123,10,178,1,26,36,174,255,119,219,199,1,45,163,190,0,16,168,42,0,166,57,198,255,28,26,26,0,126,165,231,0,251,108,100,255,61,229,121,255,58,118,138,0,76,207,17,0,13,34,112,254,89,16,168,0,37,208,105,255,35,201,215,255,40,106,101,254,6,239,114,0,40,103,226,254,246,127,110,255,63,167,58,0,132,240,142,0,5,158,88,255,129,73,158,255,94,89,146,0,230,54,146,0,8,45,173,0,79,169,1,0,115,186,247,0,84,64,131,0,67,224,253,255,207,189,64,0,154,28,81,1,45,184,54,255,87,212,224,255,0,96,73,255,129,33,235,1,52,66,80,255,251,174,155,255,4,179,37,0,234,164,93,254,93,175,253,0,198,69,87,255,224,106,46,0,99,29,210,0,62,188,114,255,44,234,8,0,169,175,247,255,23,109,137,255,229,182,39,0,192,165,94,254,245,101,217,0,191,88,96,0,196,94,99,255,106,238,11,254,53,126,243,0,94,1,101,255,46,147,2,0,201,124,124,255,141,12,218,0,13,166,157,1,48,251,237,255,155,250,124,255,106,148,146,255,182,13,202,0,28,61,167,0,217,152,8,254,220,130,45,255,200,230,255,1,55,65,87,255,93,191,97,254,114,251,14,0,32,105,92,1,26,207,141,0,24,207,13,254,21,50,48,255,186,148,116,255,211,43,225,0,37,34,162,254,164,210,42,255,68,23,96,255,182,214,8,255,245,117,137,255,66,195,50,0,75,12,83,254,80,140,164,0,9,165,36,1,228,110,227,0,241,17,90,1,25,52,212,0,6,223,12,255,139,243,57,0,12,113,75,1,246,183,191,255,213,191,69,255,230,15,142,0,1,195,196,255,138,171,47,255,64,63,106,1,16,169,214,255,207,174,56,1,88,73,133,255,182,133,140,0,177,14,25,255,147,184,53,255,10,227,161,255,120,216,244,255,73,77,233,0,157,238,139,1,59,65,233,0,70,251,216,1,41,184,153,255,32,203,112,0,146,147,253,0,87,101,109,1,44,82,133,255,244,150,53,255,94,152,232,255,59,93,39,255,88,147,220,255,78,81,13,1,32,47,252,255,160,19,114,255,93,107,39,255,118,16,211,1,185,119,209,255,227,219,127,254,88,105,236,255,162,110,23,255,36,166,110,255,91,236,221,255,66,234,116,0,111,19,244,254,10,233,26,0,32,183,6,254,2,191,242,0,218,156,53,254,41,60,70,255,168,236,111,0,121,185,126,255,238,142,207,255,55,126,52,0,220,129,208,254,80,204,164,255,67,23,144,254,218,40,108,255,127,202,164,0,203,33,3,255,2,158,0,0,37,96,188,255,192,49,74,0,109,4,0,0,111,167,10,254,91,218,135,255,203,66,173,255,150,194,226,0,201,253,6,255,174,102,121,0,205,191,110,0,53,194,4,0,81,40,45,254,35,102,143,255,12,108,198,255,16,27,232,255,252,71,186,1,176,110,114,0,142,3,117,1,113,77,142,0,19,156,197,1,92,47,252,0,53,232,22,1,54,18,235,0,46,35,189,255,236,212,129,0,2,96,208,254,200,238,199,255,59,175,164,255,146,43,231,0,194,217,52,255,3,223,12,0,138,54,178,254,85,235,207,0,232,207,34,0,49,52,50,255,166,113,89,255,10,45,216,255,62,173,28,0,111,165,246,0,118,115,91,255,128,84,60,0,167,144,203,0,87,13,243,0,22,30,228,1,177,113,146,255,129,170,230,254,252,153,129,255,145,225,43,0,70,231,5,255,122,105,126,254,86,246,148,255,110,37,154,254,209,3,91,0,68,145,62,0,228,16,165,255,55,221,249,254,178,210,91,0,83,146,226,254,69,146,186,0,93,210,104,254,16,25,173,0,231,186,38,0,189,122,140,255,251,13,112,255,105,110,93,0,251,72,170,0,192,23,223,255,24,3,202,1,225,93,228,0,153,147,199,254,109,170,22,0,248,101,246,255,178,124,12,255,178,254,102,254,55,4,65,0,125,214,180,0,183,96,147,0,45,117,23,254,132,191,249,0,143,176,203,254,136,183,54,255,146,234,177,0,146,101,86,255,44,123,143,1,33,209,152,0,192,90,41,254,83,15,125,255,213,172,82,0,215,169,144,0,16,13,34,0,32,209,100,255,84,18,249,1,197,17,236,255,217,186,230,0,49,160,176,255,111,118,97,255,237,104,235,0,79,59,92,254,69,249,11,255,35,172,74,1,19,118,68,0,222,124,165,255,180,66,35,255,86,174,246,0,43,74,111,255,126,144,86,255,228,234,91,0,242,213,24,254,69,44,235,255,220,180,35,0,8,248,7,255,102,47,92,255,240,205,102,255,113,230,171,1,31,185,201,255,194,246,70,255,122,17,187,0,134,70,199,255,149,3,150,255,117,63,103,0,65,104,123,255,212,54,19,1,6,141,88,0,83,134,243,255,136,53,103,0,169,27,180,0,177,49,24,0,111,54,167,0,195,61,215,255,31,1,108,1,60,42,70,0,185,3,162,255,194,149,40,255,246,127,38,254,190,119,38,255,61,119,8,1,96,161,219,255,42,203,221,1,177,242,164,255,245,159,10,0,116,196,0,0,5,93,205,254,128,127,179,0,125,237,246,255,149,162,217,255,87,37,20,254,140,238,192,0,9,9,193,0,97,1,226,0,29,38,10,0,0,136,63,255,229,72,210,254,38,134,92,255,78,218,208,1,104,36,84,255,12,5,193,255,242,175,61,255,191,169,46,1,179,147,147,255,113,190,139,254,125,172,31,0,3,75,252,254,215,36,15,0,193,27,24,1,255,69,149,255,110,129,118,0,203,93,249,0,138,137,64,254,38,70,6,0,153,116,222,0,161,74,123,0,193,99,79,255,118,59,94,255,61,12,43,1,146,177,157,0,46,147,191,0,16,255,38,0,11,51,31,1,60,58,98,255,111,194,77,1,154,91,244,0,140,40,144,1,173,10,251,0,203,209,50,254,108,130,78,0,228,180,90,0,174,7,250,0,31,174,60,0,41,171,30,0,116,99,82,255,118,193,139,255,187,173,198,254,218,111,56,0,185,123,216,0,249,158,52,0,52,180,93,255,201,9,91,255,56,45,166,254,132,155,203,255,58,232,110,0,52,211,89,255,253,0,162,1,9,87,183,0,145,136,44,1,94,122,245,0,85,188,171,1,147,92,198,0,0,8,104,0,30,95,174,0,221,230,52,1,247,247,235,255,137,174,53,255,35,21,204,255,71,227,214,1,232,82,194,0,11,48,227,255,170,73,184,255,198,251,252,254,44,112,34,0,131,101,131,255,72,168,187,0,132,135,125,255,138,104,97,255,238,184,168,255,243,104,84,255,135,216,226,255,139,144,237,0,188,137,150,1,80,56,140,255,86,169,167,255,194,78,25,255,220,17,180,255,17,13,193,0,117,137,212,255,141,224,151,0,49,244,175,0,193,99,175,255,19,99,154,1,255,65,62,255,156,210,55,255,242,244,3,255,250,14,149,0,158,88,217,255,157,207,134,254,251,232,28,0,46,156,251,255,171,56,184,255,239,51,234,0,142,138,131,255,25,254,243,1,10,201,194,0,63,97,75,0,210,239,162,0,192,200,31,1,117,214,243,0,24,71,222,254,54,40,232,255,76,183,111,254,144,14,87,255,214,79,136,255,216,196,212,0,132,27,140,254,131,5,253,0,124,108,19,255,28,215,75,0,76,222,55,254,233,182,63,0,68,171,191,254,52,111,222,255,10,105,77,255,80,170,235,0,143,24,88,255,45,231,121,0,148,129,224,1,61,246,84,0,253,46,219,255,239,76,33,0,49,148,18,254,230,37,69,0,67,134,22,254,142,155,94,0,31,157,211,254,213,42,30,255,4,228,247,254,252,176,13,255,39,0,31,254,241,244,255,255,170,45,10,254,253,222,249,0,222,114,132,0,255,47,6,255,180,163,179,1,84,94,151,255,89,209,82,254,229,52,169,255,213,236,0,1,214,56,228,255,135,119,151,255,112,201,193,0,83,160,53,254,6,151,66,0,18,162,17,0,233,97,91,0,131,5,78,1,181,120,53,255,117,95,63,255,237,117,185,0,191,126,136,255,144,119,233,0,183,57,97,1,47,201,187,255,167,165,119,1,45,100,126,0,21,98,6,254,145,150,95,255,120,54,152,0,209,98,104,0,143,111,30,254,184,148,249,0,235,216,46,0,248,202,148,255,57,95,22,0,242,225,163,0,233,247,232,255,71,171,19,255,103,244,49,255,84,103,93,255,68,121,244,1,82,224,13,0,41,79,43,255,249,206,167,255,215,52,21,254,192,32,22,255,247,111,60,0,101,74,38,255,22,91,84,254,29,28,13,255,198,231,215,254,244,154,200,0,223,137,237,0,211,132,14,0,95,64,206,255,17,62,247,255,233,131,121,1,93,23,77,0,205,204,52,254,81,189,136,0,180,219,138,1,143,18,94,0,204,43,140,254,188,175,219,0,111,98,143,255,151,63,162,255,211,50,71,254,19,146,53,0,146,45,83,254,178,82,238,255,16,133,84,255,226,198,93,255,201,97,20,255,120,118,35,255,114,50,231,255,162,229,156,255,211,26,12,0,114,39,115,255,206,212,134,0,197,217,160,255,116,129,94,254,199,215,219,255,75,223,249,1,253,116,181,255,232,215,104,255,228,130,246,255,185,117,86,0,14,5,8,0,239,29,61,1,237,87,133,255,125,146,137,254,204,168,223,0,46,168,245,0,154,105,22,0,220,212,161,255,107,69,24,255,137,218,181,255,241,84,198,255,130,122,211,255,141,8,153,255,190,177,118,0,96,89,178,0,255,16,48,254,122,96,105,255,117,54,232,255,34,126,105,255,204,67,166,0,232,52,138,255,211,147,12,0,25,54,7,0,44,15,215,254,51,236,45,0,190,68,129,1,106,147,225,0,28,93,45,254,236,141,15,255,17,61,161,0,220,115,192,0,236,145,24,254,111,168,169,0,224,58,63,255,127,164,188,0,82,234,75,1,224,158,134,0,209,68,110,1,217,166,217,0,70,225,166,1,187,193,143,255,16,7,88,255,10,205,140,0,117,192,156,1,17,56,38,0,27,124,108,1,171,215,55,255,95,253,212,0,155,135,168,255,246,178,153,254,154,68,74,0,232,61,96,254,105,132,59,0,33,76,199,1,189,176,130,255,9,104,25,254,75,198,102,255,233,1,112,0,108,220,20,255,114,230,70,0,140,194,133,255,57,158,164,254,146,6,80,255,169,196,97,1,85,183,130,0,70,158,222,1,59,237,234,255,96,25,26,255,232,175,97,255,11,121,248,254,88,35,194,0,219,180,252,254,74,8,227,0,195,227,73,1,184,110,161,255,49,233,164,1,128,53,47,0,82,14,121,255,193,190,58,0,48,174,117,255,132,23,32,0,40,10,134,1,22,51,25,255,240,11,176,255,110,57,146,0,117,143,239,1,157,101,118,255,54,84,76,0,205,184,18,255,47,4,72,255,78,112,85,255,193,50,66,1,93,16,52,255,8,105,134,0,12,109,72,255,58,156,251,0,144,35,204,0,44,160,117,254,50,107,194,0,1,68,165,255,111,110,162,0,158,83,40,254,76,214,234,0,58,216,205,255,171,96,147,255,40,227,114,1,176,227,241,0,70,249,183,1,136,84,139,255,60,122,247,254,143,9,117,255,177,174,137,254,73,247,143,0,236,185,126,255,62,25,247,255,45,64,56,255,161,244,6,0,34,57,56,1,105,202,83,0,128,147,208,0,6,103,10,255,74,138,65,255,97,80,100,255,214,174,33,255,50,134,74,255,110,151,130,254,111,84,172,0,84,199,75,254,248,59,112,255,8,216,178,1,9,183,95,0,238,27,8,254,170,205,220,0,195,229,135,0,98,76,237,255,226,91,26,1,82,219,39,255,225,190,199,1,217,200,121,255,81,179,8,255,140,65,206,0,178,207,87,254,250,252,46,255,104,89,110,1,253,189,158,255,144,214,158,255,160,245,54,255,53,183,92,1,21,200,194,255,146,33,113,1,209,1,255,0,235,106,43,255,167,52,232,0,157,229,221,0,51,30,25,0,250,221,27,1,65,147,87,255,79,123,196,0,65,196,223,255,76,44,17,1,85,241,68,0,202,183,249,255,65,212,212,255,9,33,154,1,71,59,80,0,175,194,59,255,141,72,9,0,100,160,244,0,230,208,56,0,59,25,75,254,80,194,194,0,18,3,200,254,160,159,115,0,132,143,247,1,111,93,57,255,58,237,11,1,134,222,135,255,122,163,108,1,123,43,190,255,251,189,206,254,80,182,72,255,208,246,224,1,17,60,9,0,161,207,38,0,141,109,91,0,216,15,211,255,136,78,110,0,98,163,104,255,21,80,121,255,173,178,183,1,127,143,4,0,104,60,82,254,214,16,13,255,96,238,33,1,158,148,230,255,127,129,62,255,51,255,210,255,62,141,236,254,157,55,224,255,114,39,244,0,192,188,250,255,228,76,53,0,98,84,81,255,173,203,61,254,147,50,55,255,204,235,191,0,52,197,244,0,88,43,211,254,27,191,119,0,188,231,154,0,66,81,161,0,92,193,160,1,250,227,120,0,123,55,226,0,184,17,72,0,133,168,10,254,22,135,156,255,41,25,103,255,48,202,58,0,186,149,81,255,188,134,239,0,235,181,189,254,217,139,188,255,74,48,82,0,46,218,229,0,189,253,251,0,50,229,12,255,211,141,191,1,128,244,25,255,169,231,122,254,86,47,189,255,132,183,23,255,37,178,150,255,51,137,253,0,200,78,31,0,22,105,50,0,130,60,0,0,132,163,91,254,23,231,187,0,192,79,239,0,157,102,164,255,192,82,20,1,24,181,103,255,240,9,234,0,1,123,164,255,133,233,0,255,202,242,242,0,60,186,245,0,241,16,199,255,224,116,158,254,191,125,91,255,224,86,207,0,121,37,231,255,227,9,198,255,15,153,239,255,121,232,217,254,75,112,82,0,95,12,57,254,51,214,105,255,148,220,97,1,199,98,36,0,156,209,12,254,10,212,52,0,217,180,55,254,212,170,232,255,216,20,84,255,157,250,135,0,157,99,127,254,1,206,41,0,149,36,70,1,54,196,201,255,87,116,0,254,235,171,150,0,27,163,234,0,202,135,180,0,208,95,0,254,123,156,93,0,183,62,75,0,137,235,182,0,204,225,255,255,214,139,210,255,2,115,8,255,29,12,111,0,52,156,1,0,253,21,251,255,37,165,31,254,12,130,211,0,106,18,53,254,42,99,154,0,14,217,61,254,216,11,92,255,200,197,112,254,147,38,199,0,36,252,120,254,107,169,77,0,1,123,159,255,207,75,102,0,163,175,196,0,44,1,240,0,120,186,176,254,13,98,76,255,237,124,241,255,232,146,188,255,200,96,224,0,204,31,41,0,208,200,13,0,21,225,96,255,175,156,196,0,247,208,126,0,62,184,244,254,2,171,81,0,85,115,158,0,54,64,45,255,19,138,114,0,135,71,205,0,227,47,147,1,218,231,66,0,253,209,28,0,244,15,173,255,6,15,118,254,16,150,208,255,185,22,50,255,86,112,207,255,75,113,215,1,63,146,43,255,4,225,19,254,227,23,62,255,14,255,214,254,45,8,205,255,87,197,151,254,210,82,215,255,245,248,247,255,128,248,70,0,225,247,87,0,90,120,70,0,213,245,92,0,13,133,226,0,47,181,5,1,92,163,105,255,6,30,133,254,232,178,61,255,230,149,24,255,18,49,158,0,228,100,61,254,116,243,251,255,77,75,92,1,81,219,147,255,76,163,254,254,141,213,246,0,232,37,152,254,97,44,100,0,201,37,50,1,212,244,57,0,174,171,183,255,249,74,112,0,166,156,30,0,222,221,97,255,243,93,73,254,251,101,100,255,216,217,93,255,254,138,187,255,142,190,52,255,59,203,177,255,200,94,52,0,115,114,158,255,165,152,104,1,126,99,226,255,118,157,244,1,107,200,16,0,193,90,229,0,121,6,88,0,156,32,93,254,125,241,211,255,14,237,157,255,165,154,21,255,184,224,22,255,250,24,152,255,113,77,31,0,247,171,23,255,237,177,204,255,52,137,145,255,194,182,114,0,224,234,149,0,10,111,103,1,201,129,4,0,238,142,78,0,52,6,40,255,110,213,165,254,60,207,253,0,62,215,69,0,96,97,0,255,49,45,202,0,120,121,22,255,235,139,48,1,198,45,34,255,182,50,27,1,131,210,91,255,46,54,128,0,175,123,105,255,198,141,78,254,67,244,239,255,245,54,103,254,78,38,242,255,2,92,249,254,251,174,87,255,139,63,144,0,24,108,27,255,34,102,18,1,34,22,152,0,66,229,118,254,50,143,99,0,144,169,149,1,118,30,152,0,178,8,121,1,8,159,18,0,90,101,230,255,129,29,119,0,68,36,11,1,232,183,55,0,23,255,96,255,161,41,193,255,63,139,222,0,15,179,243,0,255,100,15,255,82,53,135,0,137,57,149,1,99,240,170,255,22,230,228,254,49,180,82,255,61,82,43,0,110,245,217,0,199,125,61,0,46,253,52,0,141,197,219,0,211,159,193,0,55,121,105,254,183,20,129,0,169,119,170,255,203,178,139,255,135,40,182,255,172,13,202,255,65,178,148,0,8,207,43,0,122,53,127,1,74,161,48,0,227,214,128,254,86,11,243,255,100,86,7,1,245,68,134,255,61,43,21,1,152,84,94,255,190,60,250,254,239,118,232,255,214,136,37,1,113,76,107,255,93,104,100,1,144,206,23,255,110,150,154,1,228,103,185,0,218,49,50,254,135,77,139,255,185,1,78,0,0,161,148,255,97,29,233,255,207,148,149,255,160,168,0,0,91,128,171,255,6,28,19,254,11,111,247,0,39,187,150,255,138,232,149,0,117,62,68,255,63,216,188,255,235,234,32,254,29,57,160,255,25,12,241,1,169,60,191,0,32,131,141,255,237,159,123,255,94,197,94,254,116,254,3,255,92,179,97,254,121,97,92,255,170,112,14,0,21,149,248,0,248,227,3,0,80,96,109,0,75,192,74,1,12,90,226,255,161,106,68,1,208,114,127,255,114,42,255,254,74,26,74,255,247,179,150,254,121,140,60,0,147,70,200,255,214,40,161,255,161,188,201,255,141,65,135,255,242,115,252,0,62,47,202,0,180,149,255,254,130,55,237,0,165,17,186,255,10,169,194,0,156,109,218,255,112,140,123,255,104,128,223,254,177,142,108,255,121,37,219,255,128,77,18,255,111,108,23,1,91,192,75,0,174,245,22,255,4,236,62,255,43,64,153,1,227,173,254,0,237,122,132,1,127,89,186,255,142,82,128,254,252,84,174,0,90,179,177,1,243,214,87,255,103,60,162,255,208,130,14,255,11,130,139,0,206,129,219,255,94,217,157,255,239,230,230,255,116,115,159,254,164,107,95,0,51,218,2,1,216,125,198,255,140,202,128,254,11,95,68,255,55,9,93,254,174,153,6,255,204,172,96,0,69,160,110,0,213,38,49,254,27,80,213,0,118,125,114,0,70,70,67,255,15,142,73,255,131,122,185,255,243,20,50,254,130,237,40,0,210,159,140,1,197,151,65,255,84,153,66,0,195,126,90,0,16,238,236,1,118,187,102,255,3,24,133,255,187,69,230,0,56,197,92,1,213,69,94,255,80,138,229,1,206,7,230,0,222,111,230,1,91,233,119,255,9,89,7,1,2,98,1,0,148,74,133,255,51,246,180,255,228,177,112,1,58,189,108,255,194,203,237,254,21,209,195,0,147,10,35,1,86,157,226,0,31,163,139,254,56,7,75,255,62,90,116,0,181,60,169,0,138,162,212,254,81,167,31,0,205,90,112,255,33,112,227,0,83,151,117,1,177,224,73,255,174,144,217,255,230,204,79,255,22,77,232,255,114,78,234,0,224,57,126,254,9,49,141,0,242,147,165,1,104,182,140,255,167,132,12,1,123,68,127,0,225,87,39,1,251,108,8,0,198,193,143,1,121,135,207,255,172,22,70,0,50,68,116,255,101,175,40,255,248,105,233,0,166,203,7,0,110,197,218,0,215,254,26,254,168,226,253,0,31,143,96,0,11,103,41,0,183,129,203,254,100,247,74,255,213,126,132,0,210,147,44,0,199,234,27,1,148,47,181,0,155,91,158,1,54,105,175,255,2,78,145,254,102,154,95,0,128,207,127,254,52,124,236,255,130,84,71,0,221,243,211,0,152,170,207,0,222,106,199,0,183,84,94,254,92,200,56,255,138,182,115,1,142,96,146,0,133,136,228,0,97,18,150,0,55,251,66,0,140,102,4,0,202,103,151,0,30,19,248,255,51,184,207,0,202,198,89,0,55,197,225,254,169,95,249,255,66,65,68,255,188,234,126,0,166,223,100,1,112,239,244,0,144,23,194,0,58,39,182,0,244,44,24,254,175,68,179,255,152,118,154,1,176,162,130,0,217,114,204,254,173,126,78,255,33,222,30,255,36,2,91,255,2,143,243,0,9,235,215,0,3,171,151,1,24,215,245,255,168,47,164,254,241,146,207,0,69,129,180,0,68,243,113,0,144,53,72,254,251,45,14,0,23,110,168,0,68,68,79,255,110,70,95,254,174,91,144,255,33,206,95,255,137,41,7,255,19,187,153,254,35,255,112,255,9,145,185,254,50,157,37,0,11,112,49,1,102,8,190,255,234,243,169,1,60,85,23,0,74,39,189,0,116,49,239,0,173,213,210,0,46,161,108,255,159,150,37,0,196,120,185,255,34,98,6,255,153,195,62,255,97,230,71,255,102,61,76,0,26,212,236,255,164,97,16,0,198,59,146,0,163,23,196,0,56,24,61,0,181,98,193,0,251,147,229,255,98,189,24,255,46,54,206,255,234,82,246,0,183,103,38,1,109,62,204,0,10,240,224,0,146,22,117,255,142,154,120,0,69,212,35,0,208,99,118,1,121,255,3,255,72,6,194,0,117,17,197,255,125,15,23,0,154,79,153,0,214,94,197,255,185,55,147,255,62,254,78,254,127,82,153,0,110,102,63,255,108,82,161,255,105,187,212,1,80,138,39,0,60,255,93,255,72,12,186,0,210,251,31,1,190,167,144,255,228,44,19,254,128,67,232,0,214,249,107,254,136,145,86,255,132,46,176,0,189,187,227,255,208,22,140,0,217,211,116,0,50,81,186,254,139,250,31,0,30,64,198,1,135,155,100,0,160,206,23,254,187,162,211,255,16,188,63,0,254,208,49,0,85,84,191,0,241,192,242,255,153,126,145,1,234,162,162,255,230,97,216,1,64,135,126,0,190,148,223,1,52,0,43,255,28,39,189,1,64,136,238,0,175,196,185,0,98,226,213,255,127,159,244,1,226,175,60,0,160,233,142,1,180,243,207,255,69,152,89,1,31,101,21,0,144,25,164,254,139,191,209,0,91,25,121,0,32,147,5,0,39,186,123,255,63,115,230,255,93,167,198,255,143,213,220,255,179,156,19,255,25,66,122,0,214,160,217,255,2,45,62,255,106,79,146,254,51,137,99,255,87,100,231,255,175,145,232,255,101,184,1,255,174,9,125,0,82,37,161,1,36,114,141,255,48,222,142,255,245,186,154,0,5,174,221,254,63,114,155,255,135,55,160,1,80,31,135,0,126,250,179,1,236,218,45,0,20,28,145,1,16,147,73,0,249,189,132,1,17,189,192,255,223,142,198,255,72,20,15,255,250,53,237,254,15,11,18,0,27,211,113,254,213,107,56,255,174,147,146,255,96,126,48,0,23,193,109,1,37,162,94,0,199,157,249,254,24,128,187,255,205,49,178,254,93,164,42,255,43,119,235,1,88,183,237,255,218,210,1,255,107,254,42,0,230,10,99,255,162,0,226,0,219,237,91,0,129,178,203,0,208,50,95,254,206,208,95,255,247,191,89,254,110,234,79,255,165,61,243,0,20,122,112,255,246,246,185,254,103,4,123,0,233,99,230,1,219,91,252,255,199,222,22,255,179,245,233,255,211,241,234,0,111,250,192,255,85,84,136,0,101,58,50,255,131,173,156,254,119,45,51,255,118,233,16,254,242,90,214,0,94,159,219,1,3,3,234,255,98,76,92,254,80,54,230,0,5,228,231,254,53,24,223,255,113,56,118,1,20,132,1,255,171,210,236,0,56,241,158,255,186,115,19,255,8,229,174,0,48,44,0,1,114,114,166,255,6,73,226,255,205,89,244,0,137,227,75,1,248,173,56,0,74,120,246,254,119,3,11,255,81,120,198,255,136,122,98,255,146,241,221,1,109,194,78,255,223,241,70,1,214,200,169,255,97,190,47,255,47,103,174,255,99,92,72,254,118,233,180,255,193,35,233,254,26,229,32,255,222,252,198,0,204,43,71,255,199,84,172,0,134,102,190,0,111,238,97,254,230,40,230,0,227,205,64,254,200,12,225,0,166,25,222,0,113,69,51,255,143,159,24,0,167,184,74,0,29,224,116,254,158,208,233,0,193,116,126,255,212,11,133,255,22,58,140,1,204,36,51,255,232,30,43,0,235,70,181,255,64,56,146,254,169,18,84,255,226,1,13,255,200,50,176,255,52,213,245,254,168,209,97,0,191,71,55,0,34,78,156,0,232,144,58,1,185,74,189,0,186,142,149,254,64,69,127,255,161,203,147,255,176,151,191,0,136,231,203,254,163,182,137,0,161,126,251,254,233,32,66,0,68,207,66,0,30,28,37,0,93,114,96,1,254,92,247,255,44,171,69,0,202,119,11,255,188,118,50,1,255,83,136,255,71,82,26,0,70,227,2,0,32,235,121,1,181,41,154,0,71,134,229,254,202,255,36,0,41,152,5,0,154,63,73,255,34,182,124,0,121,221,150,255,26,204,213,1,41,172,87,0,90,157,146,255,109,130,20,0,71,107,200,255,243,102,189,0,1,195,145,254,46,88,117,0,8,206,227,0,191,110,253,255,109,128,20,254,134,85,51,255,137,177,112,1,216,34,22,255,131,16,208,255,121,149,170,0,114,19,23,1,166,80,31,255,113,240,122,0,232,179,250,0,68,110,180,254,210,170,119,0,223,108,164,255,207,79,233,255,27,229,226,254,209,98,81,255,79,68,7,0,131,185,100,0,170,29,162,255,17,162,107,255,57,21,11,1,100,200,181,255,127,65,166,1,165,134,204,0,104,167,168,0,1,164,79,0,146,135,59,1,70,50,128,255,102,119,13,254,227,6,135,0,162,142,179,255,160,100,222,0,27,224,219,1,158,93,195,255,234,141,137,0,16,24,125,255,238,206,47,255,97,17,98,255,116,110,12,255,96,115,77,0,91,227,232,255,248,254,79,255,92,229,6,254,88,198,139,0,206,75,129,0,250,77,206,255,141,244,123,1,138,69,220,0,32,151,6,1,131,167,22,255,237,68,167,254,199,189,150,0,163,171,138,255,51,188,6,255,95,29,137,254,148,226,179,0,181,107,208,255,134,31,82,255,151,101,45,255,129,202,225,0,224,72,147,0,48,138,151,255,195,64,206,254,237,218,158,0,106,29,137,254,253,189,233,255,103,15,17,255,194,97,255,0,178,45,169,254,198,225,155,0,39,48,117,255,135,106,115,0,97,38,181,0,150,47,65,255,83,130,229,254,246,38,129,0,92,239,154,254,91,99,127,0,161,111,33,255,238,217,242,255,131,185,195,255,213,191,158,255,41,150,218,0,132,169,131,0,89,84,252,1,171,70,128,255,163,248,203,254,1,50,180,255,124,76,85,1,251,111,80,0,99,66,239,255,154,237,182,255,221,126,133,254,74,204,99,255,65,147,119,255,99,56,167,255,79,248,149,255,116,155,228,255,237,43,14,254,69,137,11,255,22,250,241,1,91,122,143,255,205,249,243,0,212,26,60,255,48,182,176,1,48,23,191,255,203,121,152,254,45,74,213,255,62,90,18,254,245,163,230,255,185,106,116,255,83,35,159,0,12,33,2,255,80,34,62,0,16,87,174,255,173,101,85,0,202,36,81,254,160,69,204,255,64,225,187,0,58,206,94,0,86,144,47,0,229,86,245,0,63,145,190,1,37,5,39,0,109,251,26,0,137,147,234,0,162,121,145,255,144,116,206,255,197,232,185,255,183,190,140,255,73,12,254,255,139,20,242,255,170,90,239,255,97,66,187,255,245,181,135,254,222,136,52,0,245,5,51,254,203,47,78,0,152,101,216,0,73,23,125,0,254,96,33,1,235,210,73,255,43,209,88,1,7,129,109,0,122,104,228,254,170,242,203,0,242,204,135,255,202,28,233,255,65,6,127,0,159,144,71,0,100,140,95,0,78,150,13,0,251,107,118,1,182,58,125,255,1,38,108,255,141,189,209,255,8,155,125,1,113,163,91,255,121,79,190,255,134,239,108,255,76,47,248,0,163,228,239,0,17,111,10,0,88,149,75,255,215,235,239,0,167,159,24,255,47,151,108,255,107,209,188,0,233,231,99,254,28,202,148,255,174,35,138,255,110,24,68,255,2,69,181,0,107,102,82,0,102,237,7,0,92,36,237,255,221,162,83,1,55,202,6,255,135,234,135,255,24,250,222,0,65,94,168,254,245,248,210,255,167,108,201,254,255,161,111,0,205,8,254,0,136,13,116,0,100,176,132,255,43,215,126,255,177,133,130,255,158,79,148,0,67,224,37,1,12,206,21,255,62,34,110,1,237,104,175,255,80,132,111,255,142,174,72,0,84,229,180,254,105,179,140,0,64,248,15,255,233,138,16,0,245,67,123,254,218,121,212,255,63,95,218,1,213,133,137,255,143,182,82,255,48,28,11,0,244,114,141,1,209,175,76,255,157,181,150,255,186,229,3,255,164,157,111,1,231,189,139,0,119,202,190,255,218,106,64,255,68,235,63,254,96,26,172,255,187,47,11,1,215,18,251,255,81,84,89,0,68,58,128,0,94,113,5,1,92,129,208,255,97,15,83,254,9,28,188,0,239,9,164,0,60,205,152,0,192,163,98,255,184,18,60,0,217,182,139,0,109,59,120,255,4,192,251,0,169,210,240,255,37,172,92,254,148,211,245,255,179,65,52,0,253,13,115,0,185,174,206,1,114,188,149,255,237,90,173,0,43,199,192,255,88,108,113,0,52,35,76,0,66,25,148,255,221,4,7,255,151,241,114,255,190,209,232,0,98,50,199,0,151,150,213,255,18,74,36,1,53,40,7,0,19,135,65,255,26,172,69,0,174,237,85,0,99,95,41,0,3,56,16,0,39,160,177,255,200,106,218,254,185,68,84,255,91,186,61,254,67,143,141,255,13,244,166,255,99,114,198,0,199,110,163,255,193,18,186,0,124,239,246,1,110,68,22,0,2,235,46,1,212,60,107,0,105,42,105,1,14,230,152,0,7,5,131,0,141,104,154,255,213,3,6,0,131,228,162,255,179,100,28,1,231,123,85,255,206,14,223,1,253,96,230,0,38,152,149,1,98,137,122,0,214,205,3,255,226,152,179,255,6,133,137,0,158,69,140,255,113,162,154,255,180,243,172,255,27,189,115,255,143,46,220,255,213,134,225,255,126,29,69,0,188,43,137,1,242,70,9,0,90,204,255,255,231,170,147,0,23,56,19,254,56,125,157,255,48,179,218,255,79,182,253,255,38,212,191,1,41,235,124,0,96,151,28,0,135,148,190,0,205,249,39,254,52,96,136,255,212,44,136,255,67,209,131,255,252,130,23,255,219,128,20,255,198,129,118,0,108,101,11,0,178,5,146,1,62,7,100,255,181,236,94,254,28,26,164,0,76,22,112,255,120,102,79,0,202,192,229,1,200,176,215,0,41,64,244,255,206,184,78,0,167,45,63,1,160,35,0,255,59,12,142,255,204,9,144,255,219,94,229,1,122,27,112,0,189,105,109,255,64,208,74,255,251,127,55,1,2,226,198,0,44,76,209,0,151,152,77,255,210,23,46,1,201,171,69,255,44,211,231,0,190,37,224,255,245,196,62,255,169,181,222,255,34,211,17,0,119,241,197,255,229,35,152,1,21,69,40,255,178,226,161,0,148,179,193,0,219,194,254,1,40,206,51,255,231,92,250,1,67,153,170,0,21,148,241,0,170,69,82,255,121,18,231,255,92,114,3,0,184,62,230,0,225,201,87,255,146,96,162,255,181,242,220,0,173,187,221,1,226,62,170,255,56,126,217,1,117,13,227,255,179,44,239,0,157,141,155,255,144,221,83,0,235,209,208,0,42,17,165,1,251,81,133,0,124,245,201,254,97,211,24,255,83,214,166,0,154,36,9,255,248,47,127,0,90,219,140,255,161,217,38,254,212,147,63,255,66,84,148,1,207,3,1,0,230,134,89,1,127,78,122,255,224,155,1,255,82,136,74,0,178,156,208,255,186,25,49,255,222,3,210,1,229,150,190,255,85,162,52,255,41,84,141,255,73,123,84,254,93,17,150,0,119,19,28,1,32,22,215,255,28,23,204,255,142,241,52,255,228,52,125,0,29,76,207,0,215,167,250,254,175,164,230,0,55,207,105,1,109,187,245,255,161,44,220,1,41,101,128,255,167,16,94,0,93,214,107,255,118,72,0,254,80,61,234,255,121,175,125,0,139,169,251,0,97,39,147,254,250,196,49,255,165,179,110,254,223,70,187,255,22,142,125,1,154,179,138,255,118,176,42,1,10,174,153,0,156,92,102,0,168,13,161,255,143,16,32,0,250,197,180,255,203,163,44,1,87,32,36,0,161,153,20,255,123,252,15,0,25,227,80,0,60,88,142,0,17,22,201,1,154,205,77,255,39,63,47,0,8,122,141,0,128,23,182,254,204,39,19,255,4,112,29,255,23,36,140,255,210,234,116,254,53,50,63,255,121,171,104,255,160,219,94,0,87,82,14,254,231,42,5,0,165,139,127,254,86,78,38,0,130,60,66,254,203,30,45,255,46,196,122,1,249,53,162,255,136,143,103,254,215,210,114,0,231,7,160,254,169,152,42,255,111,45,246,0,142,131,135,255,131,71,204,255,36,226,11,0,0,28,242,255,225,138,213,255,247,46,216,254,245,3,183,0,108,252,74,1,206,26,48,255,205,54,246,255,211,198,36,255,121,35,50,0,52,216,202,255,38,139,129,254,242,73,148,0,67,231,141,255,42,47,204,0,78,116,25,1,4,225,191,255,6,147,228,0,58,88,177,0,122,165,229,255,252,83,201,255,224,167,96,1,177,184,158,255,242,105,179,1,248,198,240,0,133,66,203,1,254,36,47,0,45,24,115,255,119,62,254,0,196,225,186,254,123,141,172,0,26,85,41,255,226,111,183,0,213,231,151,0,4,59,7,255,238,138,148,0,66,147,33,255,31,246,141,255,209,141,116,255,104,112,31,0,88,161,172,0,83,215,230,254,47,111,151,0,45,38,52,1,132,45,204,0,138,128,109,254,233,117,134,255,243,190,173,254,241,236,240,0,82,127,236,254,40,223,161,255,110,182,225,255,123,174,239,0,135,242,145,1,51,209,154,0,150,3,115,254,217,164,252,255,55,156,69,1,84,94,255,255,232,73,45,1,20,19,212,255,96,197,59,254,96,251,33,0,38,199,73,1,64,172,247,255,117,116,56,255,228,17,18,0,62,138,103,1,246,229,164,255,244,118,201,254,86,32,159,255,109,34,137,1,85,211,186,0,10,193,193,254,122,194,177,0,122,238,102,255,162,218,171,0,108,217,161,1,158,170,34,0,176,47,155,1,181,228,11,255,8,156,0,0,16,75,93,0,206,98,255,1,58,154,35,0,12,243,184,254,67,117,66,255,230,229,123,0,201,42,110,0,134,228,178,254,186,108,118,255,58,19,154,255,82,169,62,255,114,143,115,1,239,196,50,255,173,48,193,255,147,2,84,255,150,134,147,254,95,232,73,0,109,227,52,254,191,137,10,0,40,204,30,254,76,52,97,255,164,235,126,0,254,124,188,0,74,182,21,1,121,29,35,255,241,30,7,254,85,218,214,255,7,84,150,254,81,27,117,255,160,159,152,254,66,24,221,255,227,10,60,1,141,135,102,0,208,189,150,1,117,179,92,0,132,22,136,255,120,199,28,0,21,129,79,254,182,9,65,0,218,163,169,0,246,147,198,255,107,38,144,1,78,175,205,255,214,5,250,254,47,88,29,255,164,47,204,255,43,55,6,255,131,134,207,254,116,100,214,0,96,140,75,1,106,220,144,0,195,32,28,1,172,81,5,255,199,179,52,255,37,84,203,0,170,112,174,0,11,4,91,0,69,244,27,1,117,131,92,0,33,152,175,255,140,153,107,255,251,135,43,254,87,138,4,255,198,234,147,254,121,152,84,255,205,101,155,1,157,9,25,0,72,106,17,254,108,153,0,255,189,229,186,0,193,8,176,255,174,149,209,0,238,130,29,0,233,214,126,1,61,226,102,0,57,163,4,1,198,111,51,255,45,79,78,1,115,210,10,255,218,9,25,255,158,139,198,255,211,82,187,254,80,133,83,0,157,129,230,1,243,133,134,255,40,136,16,0,77,107,79,255,183,85,92,1,177,204,202,0,163,71,147,255,152,69,190,0,172,51,188,1,250,210,172,255,211,242,113,1,89,89,26,255,64,66,111,254,116,152,42,0,161,39,27,255,54,80,254,0,106,209,115,1,103,124,97,0,221,230,98,255,31,231,6,0,178,192,120,254,15,217,203,255,124,158,79,0,112,145,247,0,92,250,48,1,163,181,193,255,37,47,142,254,144,189,165,255,46,146,240,0,6,75,128,0,41,157,200,254,87,121,213,0,1,113,236,0,5,45,250,0,144,12,82,0,31,108,231,0,225,239,119,255,167,7,189,255,187,228,132,255,110,189,34,0,94,44,204,1,162,52,197,0,78,188,241,254,57,20,141,0,244,146,47,1,206,100,51,0,125,107,148,254,27,195,77,0,152,253,90,1,7,143,144,255,51,37,31,0,34,119,38,255,7,197,118,0,153,188,211,0,151,20,116,254,245,65,52,255,180,253,110,1,47,177,209,0,161,99,17,255,118,222,202,0,125,179,252,1,123,54,126,255,145,57,191,0,55,186,121,0,10,243,138,0,205,211,229,255,125,156,241,254,148,156,185,255,227,19,188,255,124,41,32,255,31,34,206,254,17,57,83,0,204,22,37,255,42,96,98,0,119,102,184,1,3,190,28,0,110,82,218,255,200,204,192,255,201,145,118,0,117,204,146,0,132,32,98,1,192,194,121,0,106,161,248,1,237,88,124,0,23,212,26,0,205,171,90,255,248,48,216,1,141,37,230,255,124,203,0,254,158,168,30,255,214,248,21,0,112,187,7,255], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+20480);
  1182. /* memory initializer */ allocate([75,133,239,255,74,227,243,255,250,147,70,0,214,120,162,0,167,9,179,255,22,158,18,0,218,77,209,1,97,109,81,255,244,33,179,255,57,52,57,255,65,172,210,255,249,71,209,255,142,169,238,0,158,189,153,255,174,254,103,254,98,33,14,0,141,76,230,255,113,139,52,255,15,58,212,0,168,215,201,255,248,204,215,1,223,68,160,255,57,154,183,254,47,231,121,0,106,166,137,0,81,136,138,0,165,43,51,0,231,139,61,0,57,95,59,254,118,98,25,255,151,63,236,1,94,190,250,255,169,185,114,1,5,250,58,255,75,105,97,1,215,223,134,0,113,99,163,1,128,62,112,0,99,106,147,0,163,195,10,0,33,205,182,0,214,14,174,255,129,38,231,255,53,182,223,0,98,42,159,255,247,13,40,0,188,210,177,1,6,21,0,255,255,61,148,254,137,45,129,255,89,26,116,254,126,38,114,0,251,50,242,254,121,134,128,255,204,249,167,254,165,235,215,0,202,177,243,0,133,141,62,0,240,130,190,1,110,175,255,0,0,20,146,1,37,210,121,255,7,39,130,0,142,250,84,255,141,200,207,0,9,95,104,255,11,244,174,0,134,232,126,0,167,1,123,254,16,193,149,255,232,233,239,1,213,70,112,255,252,116,160,254,242,222,220,255,205,85,227,0,7,185,58,0,118,247,63,1,116,77,177,255,62,245,200,254,63,18,37,255,107,53,232,254,50,221,211,0,162,219,7,254,2,94,43,0,182,62,182,254,160,78,200,255,135,140,170,0,235,184,228,0,175,53,138,254,80,58,77,255,152,201,2,1,63,196,34,0,5,30,184,0,171,176,154,0,121,59,206,0,38,99,39,0,172,80,77,254,0,134,151,0,186,33,241,254,94,253,223,255,44,114,252,0,108,126,57,255,201,40,13,255,39,229,27,255,39,239,23,1,151,121,51,255,153,150,248,0,10,234,174,255,118,246,4,254,200,245,38,0,69,161,242,1,16,178,150,0,113,56,130,0,171,31,105,0,26,88,108,255,49,42,106,0,251,169,66,0,69,93,149,0,20,57,254,0,164,25,111,0,90,188,90,255,204,4,197,0,40,213,50,1,212,96,132,255,88,138,180,254,228,146,124,255,184,246,247,0,65,117,86,255,253,102,210,254,254,121,36,0,137,115,3,255,60,24,216,0,134,18,29,0,59,226,97,0,176,142,71,0,7,209,161,0,189,84,51,254,155,250,72,0,213,84,235,255,45,222,224,0,238,148,143,255,170,42,53,255,78,167,117,0,186,0,40,255,125,177,103,255,69,225,66,0,227,7,88,1,75,172,6,0,169,45,227,1,16,36,70,255,50,2,9,255,139,193,22,0,143,183,231,254,218,69,50,0,236,56,161,1,213,131,42,0,138,145,44,254,136,229,40,255,49,63,35,255,61,145,245,255,101,192,2,254,232,167,113,0,152,104,38,1,121,185,218,0,121,139,211,254,119,240,35,0,65,189,217,254,187,179,162,255,160,187,230,0,62,248,14,255,60,78,97,0,255,247,163,255,225,59,91,255,107,71,58,255,241,47,33,1,50,117,236,0,219,177,63,254,244,90,179,0,35,194,215,255,189,67,50,255,23,135,129,0,104,189,37,255,185,57,194,0,35,62,231,255,220,248,108,0,12,231,178,0,143,80,91,1,131,93,101,255,144,39,2,1,255,250,178,0,5,17,236,254,139,32,46,0,204,188,38,254,245,115,52,255,191,113,73,254,191,108,69,255,22,69,245,1,23,203,178,0,170,99,170,0,65,248,111,0,37,108,153,255,64,37,69,0,0,88,62,254,89,148,144,255,191,68,224,1,241,39,53,0,41,203,237,255,145,126,194,255,221,42,253,255,25,99,151,0,97,253,223,1,74,115,49,255,6,175,72,255,59,176,203,0,124,183,249,1,228,228,99,0,129,12,207,254,168,192,195,255,204,176,16,254,152,234,171,0,77,37,85,255,33,120,135,255,142,194,227,1,31,214,58,0,213,187,125,255,232,46,60,255,190,116,42,254,151,178,19,255,51,62,237,254,204,236,193,0,194,232,60,0,172,34,157,255,189,16,184,254,103,3,95,255,141,233,36,254,41,25,11,255,21,195,166,0,118,245,45,0,67,213,149,255,159,12,18,255,187,164,227,1,160,25,5,0,12,78,195,1,43,197,225,0,48,142,41,254,196,155,60,255,223,199,18,1,145,136,156,0,252,117,169,254,145,226,238,0,239,23,107,0,109,181,188,255,230,112,49,254,73,170,237,255,231,183,227,255,80,220,20,0,194,107,127,1,127,205,101,0,46,52,197,1,210,171,36,255,88,3,90,255,56,151,141,0,96,187,255,255,42,78,200,0,254,70,70,1,244,125,168,0,204,68,138,1,124,215,70,0,102,66,200,254,17,52,228,0,117,220,143,254,203,248,123,0,56,18,174,255,186,151,164,255,51,232,208,1,160,228,43,255,249,29,25,1,68,190,63,0,8,201,188,243,103,230,9,106,59,167,202,132,133,174,103,187,43,248,148,254,114,243,110,60,241,54,29,95,58,245,79,165,209,130,230,173,127,82,14,81,31,108,62,43,140,104,5,155,107,189,65,251,171,217,131,31,121,33,126,19,25,205,224,91,34,174,40,215,152,47,138,66,205,101,239,35,145,68,55,113,47,59,77,236,207,251,192,181,188,219,137,129,165,219,181,233,56,181,72,243,91,194,86,57,25,208,5,182,241,17,241,89,155,79,25,175,164,130,63,146,24,129,109,218,213,94,28,171,66,2,3,163,152,170,7,216,190,111,112,69,1,91,131,18,140,178,228,78,190,133,49,36,226,180,255,213,195,125,12,85,111,137,123,242,116,93,190,114,177,150,22,59,254,177,222,128,53,18,199,37,167,6,220,155,148,38,105,207,116,241,155,193,210,74,241,158,193,105,155,228,227,37,79,56,134,71,190,239,181,213,140,139,198,157,193,15,101,156,172,119,204,161,12,36,117,2,43,89,111,44,233,45,131,228,166,110,170,132,116,74,212,251,65,189,220,169,176,92,181,83,17,131,218,136,249,118,171,223,102,238,82,81,62,152,16,50,180,45,109,198,49,168,63,33,251,152,200,39,3,176,228,14,239,190,199,127,89,191,194,143,168,61,243,11,224,198,37,167,10,147,71,145,167,213,111,130,3,224,81,99,202,6,112,110,14,10,103,41,41,20,252,47,210,70,133,10,183,39,38,201,38,92,56,33,27,46,237,42,196,90,252,109,44,77,223,179,149,157,19,13,56,83,222,99,175,139,84,115,10,101,168,178,119,60,187,10,106,118,230,174,237,71,46,201,194,129,59,53,130,20,133,44,114,146,100,3,241,76,161,232,191,162,1,48,66,188,75,102,26,168,145,151,248,208,112,139,75,194,48,190,84,6,163,81,108,199,24,82,239,214,25,232,146,209,16,169,101,85,36,6,153,214,42,32,113,87,133,53,14,244,184,209,187,50,112,160,106,16,200,208,210,184,22,193,164,25,83,171,65,81,8,108,55,30,153,235,142,223,76,119,72,39,168,72,155,225,181,188,176,52,99,90,201,197,179,12,28,57,203,138,65,227,74,170,216,78,115,227,99,119,79,202,156,91,163,184,178,214,243,111,46,104,252,178,239,93,238,130,143,116,96,47,23,67,111,99,165,120,114,171,240,161,20,120,200,132,236,57,100,26,8,2,199,140,40,30,99,35,250,255,190,144,233,189,130,222,235,108,80,164,21,121,198,178,247,163,249,190,43,83,114,227,242,120,113,198,156,97,38,234,206,62,39,202,7,194,192,33,199,184,134,209,30,235,224,205,214,125,218,234,120,209,110,238,127,79,125,245,186,111,23,114,170,103,240,6,166,152,200,162,197,125,99,10,174,13,249,190,4,152,63,17,27,71,28,19,53,11,113,27,132,125,4,35,245,119,219,40,147,36,199,64,123,171,202,50,188,190,201,21,10,190,158,60,76,13,16,156,196,103,29,67,182,66,62,203,190,212,197,76,42,126,101,252,156,41,127,89,236,250,214,58,171,111,203,95,23,88,71,74,140,25,68,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+30720);
  1183. var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
  1184. assert(tempDoublePtr % 8 == 0);
  1185. function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much
  1186. HEAP8[tempDoublePtr] = HEAP8[ptr];
  1187. HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
  1188. HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
  1189. HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
  1190. }
  1191. function copyTempDouble(ptr) {
  1192. HEAP8[tempDoublePtr] = HEAP8[ptr];
  1193. HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
  1194. HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
  1195. HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
  1196. HEAP8[tempDoublePtr+4] = HEAP8[ptr+4];
  1197. HEAP8[tempDoublePtr+5] = HEAP8[ptr+5];
  1198. HEAP8[tempDoublePtr+6] = HEAP8[ptr+6];
  1199. HEAP8[tempDoublePtr+7] = HEAP8[ptr+7];
  1200. }
  1201. Module["_bitshift64Ashr"] = _bitshift64Ashr;
  1202. Module["_i64Subtract"] = _i64Subtract;
  1203. Module["_i64Add"] = _i64Add;
  1204. Module["_memset"] = _memset;
  1205. Module["_bitshift64Lshr"] = _bitshift64Lshr;
  1206. Module["_bitshift64Shl"] = _bitshift64Shl;
  1207. function _abort() {
  1208. Module['abort']();
  1209. }
  1210. Module["_strlen"] = _strlen;
  1211. function _emscripten_memcpy_big(dest, src, num) {
  1212. HEAPU8.set(HEAPU8.subarray(src, src+num), dest);
  1213. return dest;
  1214. }
  1215. Module["_memcpy"] = _memcpy;
  1216. var ___errno_state=0;function ___setErrNo(value) {
  1217. // For convenient setting and returning of errno.
  1218. HEAP32[((___errno_state)>>2)]=value;
  1219. return value;
  1220. }
  1221. var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(name) {
  1222. // long sysconf(int name);
  1223. // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
  1224. switch(name) {
  1225. case 30: return PAGE_SIZE;
  1226. case 132:
  1227. case 133:
  1228. case 12:
  1229. case 137:
  1230. case 138:
  1231. case 15:
  1232. case 235:
  1233. case 16:
  1234. case 17:
  1235. case 18:
  1236. case 19:
  1237. case 20:
  1238. case 149:
  1239. case 13:
  1240. case 10:
  1241. case 236:
  1242. case 153:
  1243. case 9:
  1244. case 21:
  1245. case 22:
  1246. case 159:
  1247. case 154:
  1248. case 14:
  1249. case 77:
  1250. case 78:
  1251. case 139:
  1252. case 80:
  1253. case 81:
  1254. case 79:
  1255. case 82:
  1256. case 68:
  1257. case 67:
  1258. case 164:
  1259. case 11:
  1260. case 29:
  1261. case 47:
  1262. case 48:
  1263. case 95:
  1264. case 52:
  1265. case 51:
  1266. case 46:
  1267. return 200809;
  1268. case 27:
  1269. case 246:
  1270. case 127:
  1271. case 128:
  1272. case 23:
  1273. case 24:
  1274. case 160:
  1275. case 161:
  1276. case 181:
  1277. case 182:
  1278. case 242:
  1279. case 183:
  1280. case 184:
  1281. case 243:
  1282. case 244:
  1283. case 245:
  1284. case 165:
  1285. case 178:
  1286. case 179:
  1287. case 49:
  1288. case 50:
  1289. case 168:
  1290. case 169:
  1291. case 175:
  1292. case 170:
  1293. case 171:
  1294. case 172:
  1295. case 97:
  1296. case 76:
  1297. case 32:
  1298. case 173:
  1299. case 35:
  1300. return -1;
  1301. case 176:
  1302. case 177:
  1303. case 7:
  1304. case 155:
  1305. case 8:
  1306. case 157:
  1307. case 125:
  1308. case 126:
  1309. case 92:
  1310. case 93:
  1311. case 129:
  1312. case 130:
  1313. case 131:
  1314. case 94:
  1315. case 91:
  1316. return 1;
  1317. case 74:
  1318. case 60:
  1319. case 69:
  1320. case 70:
  1321. case 4:
  1322. return 1024;
  1323. case 31:
  1324. case 42:
  1325. case 72:
  1326. return 32;
  1327. case 87:
  1328. case 26:
  1329. case 33:
  1330. return 2147483647;
  1331. case 34:
  1332. case 1:
  1333. return 47839;
  1334. case 38:
  1335. case 36:
  1336. return 99;
  1337. case 43:
  1338. case 37:
  1339. return 2048;
  1340. case 0: return 2097152;
  1341. case 3: return 65536;
  1342. case 28: return 32768;
  1343. case 44: return 32767;
  1344. case 75: return 16384;
  1345. case 39: return 1000;
  1346. case 89: return 700;
  1347. case 71: return 256;
  1348. case 40: return 255;
  1349. case 2: return 100;
  1350. case 180: return 64;
  1351. case 25: return 20;
  1352. case 5: return 16;
  1353. case 6: return 6;
  1354. case 73: return 4;
  1355. case 84: {
  1356. if (typeof navigator === 'object') return navigator['hardwareConcurrency'] || 1;
  1357. return 1;
  1358. }
  1359. }
  1360. ___setErrNo(ERRNO_CODES.EINVAL);
  1361. return -1;
  1362. }
  1363. function _sbrk(bytes) {
  1364. // Implement a Linux-like 'memory area' for our 'process'.
  1365. // Changes the size of the memory area by |bytes|; returns the
  1366. // address of the previous top ('break') of the memory area
  1367. // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP
  1368. var self = _sbrk;
  1369. if (!self.called) {
  1370. DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned
  1371. self.called = true;
  1372. assert(Runtime.dynamicAlloc);
  1373. self.alloc = Runtime.dynamicAlloc;
  1374. Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') };
  1375. }
  1376. var ret = DYNAMICTOP;
  1377. if (bytes != 0) self.alloc(bytes);
  1378. return ret; // Previous break location.
  1379. }
  1380. Module["_memmove"] = _memmove;
  1381. function ___errno_location() {
  1382. return ___errno_state;
  1383. }
  1384. var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};
  1385. var TTY={ttys:[],init:function () {
  1386. // https://github.com/kripken/emscripten/pull/1555
  1387. // if (ENVIRONMENT_IS_NODE) {
  1388. // // currently, FS.init does not distinguish if process.stdin is a file or TTY
  1389. // // device, it always assumes it's a TTY device. because of this, we're forcing
  1390. // // process.stdin to UTF8 encoding to at least make stdin reading compatible
  1391. // // with text files until FS.init can be refactored.
  1392. // process['stdin']['setEncoding']('utf8');
  1393. // }
  1394. },shutdown:function () {
  1395. // https://github.com/kripken/emscripten/pull/1555
  1396. // if (ENVIRONMENT_IS_NODE) {
  1397. // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)?
  1398. // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation
  1399. // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists?
  1400. // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle
  1401. // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call
  1402. // process['stdin']['pause']();
  1403. // }
  1404. },register:function (dev, ops) {
  1405. TTY.ttys[dev] = { input: [], output: [], ops: ops };
  1406. FS.registerDevice(dev, TTY.stream_ops);
  1407. },stream_ops:{open:function (stream) {
  1408. var tty = TTY.ttys[stream.node.rdev];
  1409. if (!tty) {
  1410. throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
  1411. }
  1412. stream.tty = tty;
  1413. stream.seekable = false;
  1414. },close:function (stream) {
  1415. // flush any pending line data
  1416. stream.tty.ops.flush(stream.tty);
  1417. },flush:function (stream) {
  1418. stream.tty.ops.flush(stream.tty);
  1419. },read:function (stream, buffer, offset, length, pos /* ignored */) {
  1420. if (!stream.tty || !stream.tty.ops.get_char) {
  1421. throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
  1422. }
  1423. var bytesRead = 0;
  1424. for (var i = 0; i < length; i++) {
  1425. var result;
  1426. try {
  1427. result = stream.tty.ops.get_char(stream.tty);
  1428. } catch (e) {
  1429. throw new FS.ErrnoError(ERRNO_CODES.EIO);
  1430. }
  1431. if (result === undefined && bytesRead === 0) {
  1432. throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
  1433. }
  1434. if (result === null || result === undefined) break;
  1435. bytesRead++;
  1436. buffer[offset+i] = result;
  1437. }
  1438. if (bytesRead) {
  1439. stream.node.timestamp = Date.now();
  1440. }
  1441. return bytesRead;
  1442. },write:function (stream, buffer, offset, length, pos) {
  1443. if (!stream.tty || !stream.tty.ops.put_char) {
  1444. throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
  1445. }
  1446. for (var i = 0; i < length; i++) {
  1447. try {
  1448. stream.tty.ops.put_char(stream.tty, buffer[offset+i]);
  1449. } catch (e) {
  1450. throw new FS.ErrnoError(ERRNO_CODES.EIO);
  1451. }
  1452. }
  1453. if (length) {
  1454. stream.node.timestamp = Date.now();
  1455. }
  1456. return i;
  1457. }},default_tty_ops:{get_char:function (tty) {
  1458. if (!tty.input.length) {
  1459. var result = null;
  1460. if (ENVIRONMENT_IS_NODE) {
  1461. result = process['stdin']['read']();
  1462. if (!result) {
  1463. if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) {
  1464. return null; // EOF
  1465. }
  1466. return undefined; // no data available
  1467. }
  1468. } else if (typeof window != 'undefined' &&
  1469. typeof window.prompt == 'function') {
  1470. // Browser.
  1471. result = window.prompt('Input: '); // returns null on cancel
  1472. if (result !== null) {
  1473. result += '\n';
  1474. }
  1475. } else if (typeof readline == 'function') {
  1476. // Command line.
  1477. result = readline();
  1478. if (result !== null) {
  1479. result += '\n';
  1480. }
  1481. }
  1482. if (!result) {
  1483. return null;
  1484. }
  1485. tty.input = intArrayFromString(result, true);
  1486. }
  1487. return tty.input.shift();
  1488. },flush:function (tty) {
  1489. if (tty.output && tty.output.length > 0) {
  1490. Module['print'](tty.output.join(''));
  1491. tty.output = [];
  1492. }
  1493. },put_char:function (tty, val) {
  1494. if (val === null || val === 10) {
  1495. Module['print'](tty.output.join(''));
  1496. tty.output = [];
  1497. } else {
  1498. tty.output.push(TTY.utf8.processCChar(val));
  1499. }
  1500. }},default_tty1_ops:{put_char:function (tty, val) {
  1501. if (val === null || val === 10) {
  1502. Module['printErr'](tty.output.join(''));
  1503. tty.output = [];
  1504. } else {
  1505. tty.output.push(TTY.utf8.processCChar(val));
  1506. }
  1507. },flush:function (tty) {
  1508. if (tty.output && tty.output.length > 0) {
  1509. Module['printErr'](tty.output.join(''));
  1510. tty.output = [];
  1511. }
  1512. }}};
  1513. var MEMFS={ops_table:null,mount:function (mount) {
  1514. return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0);
  1515. },createNode:function (parent, name, mode, dev) {
  1516. if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
  1517. // no supported
  1518. throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  1519. }
  1520. if (!MEMFS.ops_table) {
  1521. MEMFS.ops_table = {
  1522. dir: {
  1523. node: {
  1524. getattr: MEMFS.node_ops.getattr,
  1525. setattr: MEMFS.node_ops.setattr,
  1526. lookup: MEMFS.node_ops.lookup,
  1527. mknod: MEMFS.node_ops.mknod,
  1528. rename: MEMFS.node_ops.rename,
  1529. unlink: MEMFS.node_ops.unlink,
  1530. rmdir: MEMFS.node_ops.rmdir,
  1531. readdir: MEMFS.node_ops.readdir,
  1532. symlink: MEMFS.node_ops.symlink
  1533. },
  1534. stream: {
  1535. llseek: MEMFS.stream_ops.llseek
  1536. }
  1537. },
  1538. file: {
  1539. node: {
  1540. getattr: MEMFS.node_ops.getattr,
  1541. setattr: MEMFS.node_ops.setattr
  1542. },
  1543. stream: {
  1544. llseek: MEMFS.stream_ops.llseek,
  1545. read: MEMFS.stream_ops.read,
  1546. write: MEMFS.stream_ops.write,
  1547. allocate: MEMFS.stream_ops.allocate,
  1548. mmap: MEMFS.stream_ops.mmap
  1549. }
  1550. },
  1551. link: {
  1552. node: {
  1553. getattr: MEMFS.node_ops.getattr,
  1554. setattr: MEMFS.node_ops.setattr,
  1555. readlink: MEMFS.node_ops.readlink
  1556. },
  1557. stream: {}
  1558. },
  1559. chrdev: {
  1560. node: {
  1561. getattr: MEMFS.node_ops.getattr,
  1562. setattr: MEMFS.node_ops.setattr
  1563. },
  1564. stream: FS.chrdev_stream_ops
  1565. }
  1566. };
  1567. }
  1568. var node = FS.createNode(parent, name, mode, dev);
  1569. if (FS.isDir(node.mode)) {
  1570. node.node_ops = MEMFS.ops_table.dir.node;
  1571. node.stream_ops = MEMFS.ops_table.dir.stream;
  1572. node.contents = {};
  1573. } else if (FS.isFile(node.mode)) {
  1574. node.node_ops = MEMFS.ops_table.file.node;
  1575. node.stream_ops = MEMFS.ops_table.file.stream;
  1576. node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.buffer.byteLength which gives the whole capacity.
  1577. // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred
  1578. // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size
  1579. // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme.
  1580. node.contents = null;
  1581. } else if (FS.isLink(node.mode)) {
  1582. node.node_ops = MEMFS.ops_table.link.node;
  1583. node.stream_ops = MEMFS.ops_table.link.stream;
  1584. } else if (FS.isChrdev(node.mode)) {
  1585. node.node_ops = MEMFS.ops_table.chrdev.node;
  1586. node.stream_ops = MEMFS.ops_table.chrdev.stream;
  1587. }
  1588. node.timestamp = Date.now();
  1589. // add the new node to the parent
  1590. if (parent) {
  1591. parent.contents[name] = node;
  1592. }
  1593. return node;
  1594. },getFileDataAsRegularArray:function (node) {
  1595. if (node.contents && node.contents.subarray) {
  1596. var arr = [];
  1597. for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);
  1598. return arr; // Returns a copy of the original data.
  1599. }
  1600. return node.contents; // No-op, the file contents are already in a JS array. Return as-is.
  1601. },getFileDataAsTypedArray:function (node) {
  1602. if (!node.contents) return new Uint8Array;
  1603. if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes.
  1604. return new Uint8Array(node.contents);
  1605. },expandFileStorage:function (node, newCapacity) {
  1606. // If we are asked to expand the size of a file that already exists, revert to using a standard JS array to store the file
  1607. // instead of a typed array. This makes resizing the array more flexible because we can just .push() elements at the back to
  1608. // increase the size.
  1609. if (node.contents && node.contents.subarray && newCapacity > node.contents.length) {
  1610. node.contents = MEMFS.getFileDataAsRegularArray(node);
  1611. node.usedBytes = node.contents.length; // We might be writing to a lazy-loaded file which had overridden this property, so force-reset it.
  1612. }
  1613. if (!node.contents || node.contents.subarray) { // Keep using a typed array if creating a new storage, or if old one was a typed array as well.
  1614. var prevCapacity = node.contents ? node.contents.buffer.byteLength : 0;
  1615. if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough.
  1616. // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity.
  1617. // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to
  1618. // avoid overshooting the allocation cap by a very large margin.
  1619. var CAPACITY_DOUBLING_MAX = 1024 * 1024;
  1620. newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) | 0);
  1621. if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding.
  1622. var oldContents = node.contents;
  1623. node.contents = new Uint8Array(newCapacity); // Allocate new storage.
  1624. if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage.
  1625. return;
  1626. }
  1627. // Not using a typed array to back the file storage. Use a standard JS array instead.
  1628. if (!node.contents && newCapacity > 0) node.contents = [];
  1629. while (node.contents.length < newCapacity) node.contents.push(0);
  1630. },resizeFileStorage:function (node, newSize) {
  1631. if (node.usedBytes == newSize) return;
  1632. if (newSize == 0) {
  1633. node.contents = null; // Fully decommit when requesting a resize to zero.
  1634. node.usedBytes = 0;
  1635. return;
  1636. }
  1637. if (!node.contents || node.contents.subarray) { // Resize a typed array if that is being used as the backing store.
  1638. var oldContents = node.contents;
  1639. node.contents = new Uint8Array(new ArrayBuffer(newSize)); // Allocate new storage.
  1640. if (oldContents) {
  1641. node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage.
  1642. }
  1643. node.usedBytes = newSize;
  1644. return;
  1645. }
  1646. // Backing with a JS array.
  1647. if (!node.contents) node.contents = [];
  1648. if (node.contents.length > newSize) node.contents.length = newSize;
  1649. else while (node.contents.length < newSize) node.contents.push(0);
  1650. node.usedBytes = newSize;
  1651. },node_ops:{getattr:function (node) {
  1652. var attr = {};
  1653. // device numbers reuse inode numbers.
  1654. attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
  1655. attr.ino = node.id;
  1656. attr.mode = node.mode;
  1657. attr.nlink = 1;
  1658. attr.uid = 0;
  1659. attr.gid = 0;
  1660. attr.rdev = node.rdev;
  1661. if (FS.isDir(node.mode)) {
  1662. attr.size = 4096;
  1663. } else if (FS.isFile(node.mode)) {
  1664. attr.size = node.usedBytes;
  1665. } else if (FS.isLink(node.mode)) {
  1666. attr.size = node.link.length;
  1667. } else {
  1668. attr.size = 0;
  1669. }
  1670. attr.atime = new Date(node.timestamp);
  1671. attr.mtime = new Date(node.timestamp);
  1672. attr.ctime = new Date(node.timestamp);
  1673. // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
  1674. // but this is not required by the standard.
  1675. attr.blksize = 4096;
  1676. attr.blocks = Math.ceil(attr.size / attr.blksize);
  1677. return attr;
  1678. },setattr:function (node, attr) {
  1679. if (attr.mode !== undefined) {
  1680. node.mode = attr.mode;
  1681. }
  1682. if (attr.timestamp !== undefined) {
  1683. node.timestamp = attr.timestamp;
  1684. }
  1685. if (attr.size !== undefined) {
  1686. MEMFS.resizeFileStorage(node, attr.size);
  1687. }
  1688. },lookup:function (parent, name) {
  1689. throw FS.genericErrors[ERRNO_CODES.ENOENT];
  1690. },mknod:function (parent, name, mode, dev) {
  1691. return MEMFS.createNode(parent, name, mode, dev);
  1692. },rename:function (old_node, new_dir, new_name) {
  1693. // if we're overwriting a directory at new_name, make sure it's empty.
  1694. if (FS.isDir(old_node.mode)) {
  1695. var new_node;
  1696. try {
  1697. new_node = FS.lookupNode(new_dir, new_name);
  1698. } catch (e) {
  1699. }
  1700. if (new_node) {
  1701. for (var i in new_node.contents) {
  1702. throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
  1703. }
  1704. }
  1705. }
  1706. // do the internal rewiring
  1707. delete old_node.parent.contents[old_node.name];
  1708. old_node.name = new_name;
  1709. new_dir.contents[new_name] = old_node;
  1710. old_node.parent = new_dir;
  1711. },unlink:function (parent, name) {
  1712. delete parent.contents[name];
  1713. },rmdir:function (parent, name) {
  1714. var node = FS.lookupNode(parent, name);
  1715. for (var i in node.contents) {
  1716. throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
  1717. }
  1718. delete parent.contents[name];
  1719. },readdir:function (node) {
  1720. var entries = ['.', '..']
  1721. for (var key in node.contents) {
  1722. if (!node.contents.hasOwnProperty(key)) {
  1723. continue;
  1724. }
  1725. entries.push(key);
  1726. }
  1727. return entries;
  1728. },symlink:function (parent, newname, oldpath) {
  1729. var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0);
  1730. node.link = oldpath;
  1731. return node;
  1732. },readlink:function (node) {
  1733. if (!FS.isLink(node.mode)) {
  1734. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  1735. }
  1736. return node.link;
  1737. }},stream_ops:{read:function (stream, buffer, offset, length, position) {
  1738. var contents = stream.node.contents;
  1739. if (position >= stream.node.usedBytes) return 0;
  1740. var size = Math.min(stream.node.usedBytes - position, length);
  1741. assert(size >= 0);
  1742. if (size > 8 && contents.subarray) { // non-trivial, and typed array
  1743. buffer.set(contents.subarray(position, position + size), offset);
  1744. } else
  1745. {
  1746. for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];
  1747. }
  1748. return size;
  1749. },write:function (stream, buffer, offset, length, position, canOwn) {
  1750. if (!length) return 0;
  1751. var node = stream.node;
  1752. node.timestamp = Date.now();
  1753. if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array?
  1754. if (canOwn) { // Can we just reuse the buffer we are given?
  1755. node.contents = buffer.subarray(offset, offset + length);
  1756. node.usedBytes = length;
  1757. return length;
  1758. } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data.
  1759. node.contents = new Uint8Array(buffer.subarray(offset, offset + length));
  1760. node.usedBytes = length;
  1761. return length;
  1762. } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file?
  1763. node.contents.set(buffer.subarray(offset, offset + length), position);
  1764. return length;
  1765. }
  1766. }
  1767. // Appending to an existing file and we need to reallocate, or source data did not come as a typed array.
  1768. MEMFS.expandFileStorage(node, position+length);
  1769. if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); // Use typed array write if available.
  1770. else
  1771. for (var i = 0; i < length; i++) {
  1772. node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not.
  1773. }
  1774. node.usedBytes = Math.max(node.usedBytes, position+length);
  1775. return length;
  1776. },llseek:function (stream, offset, whence) {
  1777. var position = offset;
  1778. if (whence === 1) { // SEEK_CUR.
  1779. position += stream.position;
  1780. } else if (whence === 2) { // SEEK_END.
  1781. if (FS.isFile(stream.node.mode)) {
  1782. position += stream.node.usedBytes;
  1783. }
  1784. }
  1785. if (position < 0) {
  1786. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  1787. }
  1788. return position;
  1789. },allocate:function (stream, offset, length) {
  1790. MEMFS.expandFileStorage(stream.node, offset + length);
  1791. stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);
  1792. },mmap:function (stream, buffer, offset, length, position, prot, flags) {
  1793. if (!FS.isFile(stream.node.mode)) {
  1794. throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
  1795. }
  1796. var ptr;
  1797. var allocated;
  1798. var contents = stream.node.contents;
  1799. // Only make a new copy when MAP_PRIVATE is specified.
  1800. if ( !(flags & 2) &&
  1801. (contents.buffer === buffer || contents.buffer === buffer.buffer) ) {
  1802. // We can't emulate MAP_SHARED when the file is not backed by the buffer
  1803. // we're mapping to (e.g. the HEAP buffer).
  1804. allocated = false;
  1805. ptr = contents.byteOffset;
  1806. } else {
  1807. // Try to avoid unnecessary slices.
  1808. if (position > 0 || position + length < stream.node.usedBytes) {
  1809. if (contents.subarray) {
  1810. contents = contents.subarray(position, position + length);
  1811. } else {
  1812. contents = Array.prototype.slice.call(contents, position, position + length);
  1813. }
  1814. }
  1815. allocated = true;
  1816. ptr = _malloc(length);
  1817. if (!ptr) {
  1818. throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
  1819. }
  1820. buffer.set(contents, ptr);
  1821. }
  1822. return { ptr: ptr, allocated: allocated };
  1823. }}};
  1824. var IDBFS={dbs:{},indexedDB:function () {
  1825. if (typeof indexedDB !== 'undefined') return indexedDB;
  1826. var ret = null;
  1827. if (typeof window === 'object') ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
  1828. assert(ret, 'IDBFS used, but indexedDB not supported');
  1829. return ret;
  1830. },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) {
  1831. // reuse all of the core MEMFS functionality
  1832. return MEMFS.mount.apply(null, arguments);
  1833. },syncfs:function (mount, populate, callback) {
  1834. IDBFS.getLocalSet(mount, function(err, local) {
  1835. if (err) return callback(err);
  1836. IDBFS.getRemoteSet(mount, function(err, remote) {
  1837. if (err) return callback(err);
  1838. var src = populate ? remote : local;
  1839. var dst = populate ? local : remote;
  1840. IDBFS.reconcile(src, dst, callback);
  1841. });
  1842. });
  1843. },getDB:function (name, callback) {
  1844. // check the cache first
  1845. var db = IDBFS.dbs[name];
  1846. if (db) {
  1847. return callback(null, db);
  1848. }
  1849. var req;
  1850. try {
  1851. req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
  1852. } catch (e) {
  1853. return callback(e);
  1854. }
  1855. req.onupgradeneeded = function(e) {
  1856. var db = e.target.result;
  1857. var transaction = e.target.transaction;
  1858. var fileStore;
  1859. if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {
  1860. fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);
  1861. } else {
  1862. fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME);
  1863. }
  1864. fileStore.createIndex('timestamp', 'timestamp', { unique: false });
  1865. };
  1866. req.onsuccess = function() {
  1867. db = req.result;
  1868. // add to the cache
  1869. IDBFS.dbs[name] = db;
  1870. callback(null, db);
  1871. };
  1872. req.onerror = function() {
  1873. callback(this.error);
  1874. };
  1875. },getLocalSet:function (mount, callback) {
  1876. var entries = {};
  1877. function isRealDir(p) {
  1878. return p !== '.' && p !== '..';
  1879. };
  1880. function toAbsolute(root) {
  1881. return function(p) {
  1882. return PATH.join2(root, p);
  1883. }
  1884. };
  1885. var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));
  1886. while (check.length) {
  1887. var path = check.pop();
  1888. var stat;
  1889. try {
  1890. stat = FS.stat(path);
  1891. } catch (e) {
  1892. return callback(e);
  1893. }
  1894. if (FS.isDir(stat.mode)) {
  1895. check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));
  1896. }
  1897. entries[path] = { timestamp: stat.mtime };
  1898. }
  1899. return callback(null, { type: 'local', entries: entries });
  1900. },getRemoteSet:function (mount, callback) {
  1901. var entries = {};
  1902. IDBFS.getDB(mount.mountpoint, function(err, db) {
  1903. if (err) return callback(err);
  1904. var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');
  1905. transaction.onerror = function() { callback(this.error); };
  1906. var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
  1907. var index = store.index('timestamp');
  1908. index.openKeyCursor().onsuccess = function(event) {
  1909. var cursor = event.target.result;
  1910. if (!cursor) {
  1911. return callback(null, { type: 'remote', db: db, entries: entries });
  1912. }
  1913. entries[cursor.primaryKey] = { timestamp: cursor.key };
  1914. cursor.continue();
  1915. };
  1916. });
  1917. },loadLocalEntry:function (path, callback) {
  1918. var stat, node;
  1919. try {
  1920. var lookup = FS.lookupPath(path);
  1921. node = lookup.node;
  1922. stat = FS.stat(path);
  1923. } catch (e) {
  1924. return callback(e);
  1925. }
  1926. if (FS.isDir(stat.mode)) {
  1927. return callback(null, { timestamp: stat.mtime, mode: stat.mode });
  1928. } else if (FS.isFile(stat.mode)) {
  1929. // Performance consideration: storing a normal JavaScript array to a IndexedDB is much slower than storing a typed array.
  1930. // Therefore always convert the file contents to a typed array first before writing the data to IndexedDB.
  1931. node.contents = MEMFS.getFileDataAsTypedArray(node);
  1932. return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents });
  1933. } else {
  1934. return callback(new Error('node type not supported'));
  1935. }
  1936. },storeLocalEntry:function (path, entry, callback) {
  1937. try {
  1938. if (FS.isDir(entry.mode)) {
  1939. FS.mkdir(path, entry.mode);
  1940. } else if (FS.isFile(entry.mode)) {
  1941. FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true });
  1942. } else {
  1943. return callback(new Error('node type not supported'));
  1944. }
  1945. FS.chmod(path, entry.mode);
  1946. FS.utime(path, entry.timestamp, entry.timestamp);
  1947. } catch (e) {
  1948. return callback(e);
  1949. }
  1950. callback(null);
  1951. },removeLocalEntry:function (path, callback) {
  1952. try {
  1953. var lookup = FS.lookupPath(path);
  1954. var stat = FS.stat(path);
  1955. if (FS.isDir(stat.mode)) {
  1956. FS.rmdir(path);
  1957. } else if (FS.isFile(stat.mode)) {
  1958. FS.unlink(path);
  1959. }
  1960. } catch (e) {
  1961. return callback(e);
  1962. }
  1963. callback(null);
  1964. },loadRemoteEntry:function (store, path, callback) {
  1965. var req = store.get(path);
  1966. req.onsuccess = function(event) { callback(null, event.target.result); };
  1967. req.onerror = function() { callback(this.error); };
  1968. },storeRemoteEntry:function (store, path, entry, callback) {
  1969. var req = store.put(entry, path);
  1970. req.onsuccess = function() { callback(null); };
  1971. req.onerror = function() { callback(this.error); };
  1972. },removeRemoteEntry:function (store, path, callback) {
  1973. var req = store.delete(path);
  1974. req.onsuccess = function() { callback(null); };
  1975. req.onerror = function() { callback(this.error); };
  1976. },reconcile:function (src, dst, callback) {
  1977. var total = 0;
  1978. var create = [];
  1979. Object.keys(src.entries).forEach(function (key) {
  1980. var e = src.entries[key];
  1981. var e2 = dst.entries[key];
  1982. if (!e2 || e.timestamp > e2.timestamp) {
  1983. create.push(key);
  1984. total++;
  1985. }
  1986. });
  1987. var remove = [];
  1988. Object.keys(dst.entries).forEach(function (key) {
  1989. var e = dst.entries[key];
  1990. var e2 = src.entries[key];
  1991. if (!e2) {
  1992. remove.push(key);
  1993. total++;
  1994. }
  1995. });
  1996. if (!total) {
  1997. return callback(null);
  1998. }
  1999. var errored = false;
  2000. var completed = 0;
  2001. var db = src.type === 'remote' ? src.db : dst.db;
  2002. var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');
  2003. var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
  2004. function done(err) {
  2005. if (err) {
  2006. if (!done.errored) {
  2007. done.errored = true;
  2008. return callback(err);
  2009. }
  2010. return;
  2011. }
  2012. if (++completed >= total) {
  2013. return callback(null);
  2014. }
  2015. };
  2016. transaction.onerror = function() { done(this.error); };
  2017. // sort paths in ascending order so directory entries are created
  2018. // before the files inside them
  2019. create.sort().forEach(function (path) {
  2020. if (dst.type === 'local') {
  2021. IDBFS.loadRemoteEntry(store, path, function (err, entry) {
  2022. if (err) return done(err);
  2023. IDBFS.storeLocalEntry(path, entry, done);
  2024. });
  2025. } else {
  2026. IDBFS.loadLocalEntry(path, function (err, entry) {
  2027. if (err) return done(err);
  2028. IDBFS.storeRemoteEntry(store, path, entry, done);
  2029. });
  2030. }
  2031. });
  2032. // sort paths in descending order so files are deleted before their
  2033. // parent directories
  2034. remove.sort().reverse().forEach(function(path) {
  2035. if (dst.type === 'local') {
  2036. IDBFS.removeLocalEntry(path, done);
  2037. } else {
  2038. IDBFS.removeRemoteEntry(store, path, done);
  2039. }
  2040. });
  2041. }};
  2042. var NODEFS={isWindows:false,staticInit:function () {
  2043. NODEFS.isWindows = !!process.platform.match(/^win/);
  2044. },mount:function (mount) {
  2045. assert(ENVIRONMENT_IS_NODE);
  2046. return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0);
  2047. },createNode:function (parent, name, mode, dev) {
  2048. if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
  2049. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  2050. }
  2051. var node = FS.createNode(parent, name, mode);
  2052. node.node_ops = NODEFS.node_ops;
  2053. node.stream_ops = NODEFS.stream_ops;
  2054. return node;
  2055. },getMode:function (path) {
  2056. var stat;
  2057. try {
  2058. stat = fs.lstatSync(path);
  2059. if (NODEFS.isWindows) {
  2060. // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so
  2061. // propagate write bits to execute bits.
  2062. stat.mode = stat.mode | ((stat.mode & 146) >> 1);
  2063. }
  2064. } catch (e) {
  2065. if (!e.code) throw e;
  2066. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2067. }
  2068. return stat.mode;
  2069. },realPath:function (node) {
  2070. var parts = [];
  2071. while (node.parent !== node) {
  2072. parts.push(node.name);
  2073. node = node.parent;
  2074. }
  2075. parts.push(node.mount.opts.root);
  2076. parts.reverse();
  2077. return PATH.join.apply(null, parts);
  2078. },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) {
  2079. if (flags in NODEFS.flagsToPermissionStringMap) {
  2080. return NODEFS.flagsToPermissionStringMap[flags];
  2081. } else {
  2082. return flags;
  2083. }
  2084. },node_ops:{getattr:function (node) {
  2085. var path = NODEFS.realPath(node);
  2086. var stat;
  2087. try {
  2088. stat = fs.lstatSync(path);
  2089. } catch (e) {
  2090. if (!e.code) throw e;
  2091. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2092. }
  2093. // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096.
  2094. // See http://support.microsoft.com/kb/140365
  2095. if (NODEFS.isWindows && !stat.blksize) {
  2096. stat.blksize = 4096;
  2097. }
  2098. if (NODEFS.isWindows && !stat.blocks) {
  2099. stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0;
  2100. }
  2101. return {
  2102. dev: stat.dev,
  2103. ino: stat.ino,
  2104. mode: stat.mode,
  2105. nlink: stat.nlink,
  2106. uid: stat.uid,
  2107. gid: stat.gid,
  2108. rdev: stat.rdev,
  2109. size: stat.size,
  2110. atime: stat.atime,
  2111. mtime: stat.mtime,
  2112. ctime: stat.ctime,
  2113. blksize: stat.blksize,
  2114. blocks: stat.blocks
  2115. };
  2116. },setattr:function (node, attr) {
  2117. var path = NODEFS.realPath(node);
  2118. try {
  2119. if (attr.mode !== undefined) {
  2120. fs.chmodSync(path, attr.mode);
  2121. // update the common node structure mode as well
  2122. node.mode = attr.mode;
  2123. }
  2124. if (attr.timestamp !== undefined) {
  2125. var date = new Date(attr.timestamp);
  2126. fs.utimesSync(path, date, date);
  2127. }
  2128. if (attr.size !== undefined) {
  2129. fs.truncateSync(path, attr.size);
  2130. }
  2131. } catch (e) {
  2132. if (!e.code) throw e;
  2133. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2134. }
  2135. },lookup:function (parent, name) {
  2136. var path = PATH.join2(NODEFS.realPath(parent), name);
  2137. var mode = NODEFS.getMode(path);
  2138. return NODEFS.createNode(parent, name, mode);
  2139. },mknod:function (parent, name, mode, dev) {
  2140. var node = NODEFS.createNode(parent, name, mode, dev);
  2141. // create the backing node for this in the fs root as well
  2142. var path = NODEFS.realPath(node);
  2143. try {
  2144. if (FS.isDir(node.mode)) {
  2145. fs.mkdirSync(path, node.mode);
  2146. } else {
  2147. fs.writeFileSync(path, '', { mode: node.mode });
  2148. }
  2149. } catch (e) {
  2150. if (!e.code) throw e;
  2151. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2152. }
  2153. return node;
  2154. },rename:function (oldNode, newDir, newName) {
  2155. var oldPath = NODEFS.realPath(oldNode);
  2156. var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
  2157. try {
  2158. fs.renameSync(oldPath, newPath);
  2159. } catch (e) {
  2160. if (!e.code) throw e;
  2161. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2162. }
  2163. },unlink:function (parent, name) {
  2164. var path = PATH.join2(NODEFS.realPath(parent), name);
  2165. try {
  2166. fs.unlinkSync(path);
  2167. } catch (e) {
  2168. if (!e.code) throw e;
  2169. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2170. }
  2171. },rmdir:function (parent, name) {
  2172. var path = PATH.join2(NODEFS.realPath(parent), name);
  2173. try {
  2174. fs.rmdirSync(path);
  2175. } catch (e) {
  2176. if (!e.code) throw e;
  2177. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2178. }
  2179. },readdir:function (node) {
  2180. var path = NODEFS.realPath(node);
  2181. try {
  2182. return fs.readdirSync(path);
  2183. } catch (e) {
  2184. if (!e.code) throw e;
  2185. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2186. }
  2187. },symlink:function (parent, newName, oldPath) {
  2188. var newPath = PATH.join2(NODEFS.realPath(parent), newName);
  2189. try {
  2190. fs.symlinkSync(oldPath, newPath);
  2191. } catch (e) {
  2192. if (!e.code) throw e;
  2193. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2194. }
  2195. },readlink:function (node) {
  2196. var path = NODEFS.realPath(node);
  2197. try {
  2198. return fs.readlinkSync(path);
  2199. } catch (e) {
  2200. if (!e.code) throw e;
  2201. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2202. }
  2203. }},stream_ops:{open:function (stream) {
  2204. var path = NODEFS.realPath(stream.node);
  2205. try {
  2206. if (FS.isFile(stream.node.mode)) {
  2207. stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));
  2208. }
  2209. } catch (e) {
  2210. if (!e.code) throw e;
  2211. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2212. }
  2213. },close:function (stream) {
  2214. try {
  2215. if (FS.isFile(stream.node.mode) && stream.nfd) {
  2216. fs.closeSync(stream.nfd);
  2217. }
  2218. } catch (e) {
  2219. if (!e.code) throw e;
  2220. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2221. }
  2222. },read:function (stream, buffer, offset, length, position) {
  2223. if (length === 0) return 0; // node errors on 0 length reads
  2224. // FIXME this is terrible.
  2225. var nbuffer = new Buffer(length);
  2226. var res;
  2227. try {
  2228. res = fs.readSync(stream.nfd, nbuffer, 0, length, position);
  2229. } catch (e) {
  2230. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2231. }
  2232. if (res > 0) {
  2233. for (var i = 0; i < res; i++) {
  2234. buffer[offset + i] = nbuffer[i];
  2235. }
  2236. }
  2237. return res;
  2238. },write:function (stream, buffer, offset, length, position) {
  2239. // FIXME this is terrible.
  2240. var nbuffer = new Buffer(buffer.subarray(offset, offset + length));
  2241. var res;
  2242. try {
  2243. res = fs.writeSync(stream.nfd, nbuffer, 0, length, position);
  2244. } catch (e) {
  2245. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2246. }
  2247. return res;
  2248. },llseek:function (stream, offset, whence) {
  2249. var position = offset;
  2250. if (whence === 1) { // SEEK_CUR.
  2251. position += stream.position;
  2252. } else if (whence === 2) { // SEEK_END.
  2253. if (FS.isFile(stream.node.mode)) {
  2254. try {
  2255. var stat = fs.fstatSync(stream.nfd);
  2256. position += stat.size;
  2257. } catch (e) {
  2258. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  2259. }
  2260. }
  2261. }
  2262. if (position < 0) {
  2263. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  2264. }
  2265. return position;
  2266. }}};
  2267. var _stdin=allocate(1, "i32*", ALLOC_STATIC);
  2268. var _stdout=allocate(1, "i32*", ALLOC_STATIC);
  2269. var _stderr=allocate(1, "i32*", ALLOC_STATIC);
  2270. function _fflush(stream) {
  2271. // int fflush(FILE *stream);
  2272. // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html
  2273. /*
  2274. // Disabled, see https://github.com/kripken/emscripten/issues/2770
  2275. stream = FS.getStreamFromPtr(stream);
  2276. if (stream.stream_ops.flush) {
  2277. stream.stream_ops.flush(stream);
  2278. }
  2279. */
  2280. }var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},handleFSError:function (e) {
  2281. if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace();
  2282. return ___setErrNo(e.errno);
  2283. },lookupPath:function (path, opts) {
  2284. path = PATH.resolve(FS.cwd(), path);
  2285. opts = opts || {};
  2286. if (!path) return { path: '', node: null };
  2287. var defaults = {
  2288. follow_mount: true,
  2289. recurse_count: 0
  2290. };
  2291. for (var key in defaults) {
  2292. if (opts[key] === undefined) {
  2293. opts[key] = defaults[key];
  2294. }
  2295. }
  2296. if (opts.recurse_count > 8) { // max recursive lookup of 8
  2297. throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
  2298. }
  2299. // split the path
  2300. var parts = PATH.normalizeArray(path.split('/').filter(function(p) {
  2301. return !!p;
  2302. }), false);
  2303. // start at the root
  2304. var current = FS.root;
  2305. var current_path = '/';
  2306. for (var i = 0; i < parts.length; i++) {
  2307. var islast = (i === parts.length-1);
  2308. if (islast && opts.parent) {
  2309. // stop resolving
  2310. break;
  2311. }
  2312. current = FS.lookupNode(current, parts[i]);
  2313. current_path = PATH.join2(current_path, parts[i]);
  2314. // jump to the mount's root node if this is a mountpoint
  2315. if (FS.isMountpoint(current)) {
  2316. if (!islast || (islast && opts.follow_mount)) {
  2317. current = current.mounted.root;
  2318. }
  2319. }
  2320. // by default, lookupPath will not follow a symlink if it is the final path component.
  2321. // setting opts.follow = true will override this behavior.
  2322. if (!islast || opts.follow) {
  2323. var count = 0;
  2324. while (FS.isLink(current.mode)) {
  2325. var link = FS.readlink(current_path);
  2326. current_path = PATH.resolve(PATH.dirname(current_path), link);
  2327. var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count });
  2328. current = lookup.node;
  2329. if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX).
  2330. throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
  2331. }
  2332. }
  2333. }
  2334. }
  2335. return { path: current_path, node: current };
  2336. },getPath:function (node) {
  2337. var path;
  2338. while (true) {
  2339. if (FS.isRoot(node)) {
  2340. var mount = node.mount.mountpoint;
  2341. if (!path) return mount;
  2342. return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path;
  2343. }
  2344. path = path ? node.name + '/' + path : node.name;
  2345. node = node.parent;
  2346. }
  2347. },hashName:function (parentid, name) {
  2348. var hash = 0;
  2349. for (var i = 0; i < name.length; i++) {
  2350. hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;
  2351. }
  2352. return ((parentid + hash) >>> 0) % FS.nameTable.length;
  2353. },hashAddNode:function (node) {
  2354. var hash = FS.hashName(node.parent.id, node.name);
  2355. node.name_next = FS.nameTable[hash];
  2356. FS.nameTable[hash] = node;
  2357. },hashRemoveNode:function (node) {
  2358. var hash = FS.hashName(node.parent.id, node.name);
  2359. if (FS.nameTable[hash] === node) {
  2360. FS.nameTable[hash] = node.name_next;
  2361. } else {
  2362. var current = FS.nameTable[hash];
  2363. while (current) {
  2364. if (current.name_next === node) {
  2365. current.name_next = node.name_next;
  2366. break;
  2367. }
  2368. current = current.name_next;
  2369. }
  2370. }
  2371. },lookupNode:function (parent, name) {
  2372. var err = FS.mayLookup(parent);
  2373. if (err) {
  2374. throw new FS.ErrnoError(err, parent);
  2375. }
  2376. var hash = FS.hashName(parent.id, name);
  2377. for (var node = FS.nameTable[hash]; node; node = node.name_next) {
  2378. var nodeName = node.name;
  2379. if (node.parent.id === parent.id && nodeName === name) {
  2380. return node;
  2381. }
  2382. }
  2383. // if we failed to find it in the cache, call into the VFS
  2384. return FS.lookup(parent, name);
  2385. },createNode:function (parent, name, mode, rdev) {
  2386. if (!FS.FSNode) {
  2387. FS.FSNode = function(parent, name, mode, rdev) {
  2388. if (!parent) {
  2389. parent = this; // root node sets parent to itself
  2390. }
  2391. this.parent = parent;
  2392. this.mount = parent.mount;
  2393. this.mounted = null;
  2394. this.id = FS.nextInode++;
  2395. this.name = name;
  2396. this.mode = mode;
  2397. this.node_ops = {};
  2398. this.stream_ops = {};
  2399. this.rdev = rdev;
  2400. };
  2401. FS.FSNode.prototype = {};
  2402. // compatibility
  2403. var readMode = 292 | 73;
  2404. var writeMode = 146;
  2405. // NOTE we must use Object.defineProperties instead of individual calls to
  2406. // Object.defineProperty in order to make closure compiler happy
  2407. Object.defineProperties(FS.FSNode.prototype, {
  2408. read: {
  2409. get: function() { return (this.mode & readMode) === readMode; },
  2410. set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; }
  2411. },
  2412. write: {
  2413. get: function() { return (this.mode & writeMode) === writeMode; },
  2414. set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; }
  2415. },
  2416. isFolder: {
  2417. get: function() { return FS.isDir(this.mode); }
  2418. },
  2419. isDevice: {
  2420. get: function() { return FS.isChrdev(this.mode); }
  2421. }
  2422. });
  2423. }
  2424. var node = new FS.FSNode(parent, name, mode, rdev);
  2425. FS.hashAddNode(node);
  2426. return node;
  2427. },destroyNode:function (node) {
  2428. FS.hashRemoveNode(node);
  2429. },isRoot:function (node) {
  2430. return node === node.parent;
  2431. },isMountpoint:function (node) {
  2432. return !!node.mounted;
  2433. },isFile:function (mode) {
  2434. return (mode & 61440) === 32768;
  2435. },isDir:function (mode) {
  2436. return (mode & 61440) === 16384;
  2437. },isLink:function (mode) {
  2438. return (mode & 61440) === 40960;
  2439. },isChrdev:function (mode) {
  2440. return (mode & 61440) === 8192;
  2441. },isBlkdev:function (mode) {
  2442. return (mode & 61440) === 24576;
  2443. },isFIFO:function (mode) {
  2444. return (mode & 61440) === 4096;
  2445. },isSocket:function (mode) {
  2446. return (mode & 49152) === 49152;
  2447. },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) {
  2448. var flags = FS.flagModes[str];
  2449. if (typeof flags === 'undefined') {
  2450. throw new Error('Unknown file open mode: ' + str);
  2451. }
  2452. return flags;
  2453. },flagsToPermissionString:function (flag) {
  2454. var accmode = flag & 2097155;
  2455. var perms = ['r', 'w', 'rw'][accmode];
  2456. if ((flag & 512)) {
  2457. perms += 'w';
  2458. }
  2459. return perms;
  2460. },nodePermissions:function (node, perms) {
  2461. if (FS.ignorePermissions) {
  2462. return 0;
  2463. }
  2464. // return 0 if any user, group or owner bits are set.
  2465. if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {
  2466. return ERRNO_CODES.EACCES;
  2467. } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {
  2468. return ERRNO_CODES.EACCES;
  2469. } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {
  2470. return ERRNO_CODES.EACCES;
  2471. }
  2472. return 0;
  2473. },mayLookup:function (dir) {
  2474. var err = FS.nodePermissions(dir, 'x');
  2475. if (err) return err;
  2476. if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES;
  2477. return 0;
  2478. },mayCreate:function (dir, name) {
  2479. try {
  2480. var node = FS.lookupNode(dir, name);
  2481. return ERRNO_CODES.EEXIST;
  2482. } catch (e) {
  2483. }
  2484. return FS.nodePermissions(dir, 'wx');
  2485. },mayDelete:function (dir, name, isdir) {
  2486. var node;
  2487. try {
  2488. node = FS.lookupNode(dir, name);
  2489. } catch (e) {
  2490. return e.errno;
  2491. }
  2492. var err = FS.nodePermissions(dir, 'wx');
  2493. if (err) {
  2494. return err;
  2495. }
  2496. if (isdir) {
  2497. if (!FS.isDir(node.mode)) {
  2498. return ERRNO_CODES.ENOTDIR;
  2499. }
  2500. if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
  2501. return ERRNO_CODES.EBUSY;
  2502. }
  2503. } else {
  2504. if (FS.isDir(node.mode)) {
  2505. return ERRNO_CODES.EISDIR;
  2506. }
  2507. }
  2508. return 0;
  2509. },mayOpen:function (node, flags) {
  2510. if (!node) {
  2511. return ERRNO_CODES.ENOENT;
  2512. }
  2513. if (FS.isLink(node.mode)) {
  2514. return ERRNO_CODES.ELOOP;
  2515. } else if (FS.isDir(node.mode)) {
  2516. if ((flags & 2097155) !== 0 || // opening for write
  2517. (flags & 512)) {
  2518. return ERRNO_CODES.EISDIR;
  2519. }
  2520. }
  2521. return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
  2522. },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) {
  2523. fd_start = fd_start || 0;
  2524. fd_end = fd_end || FS.MAX_OPEN_FDS;
  2525. for (var fd = fd_start; fd <= fd_end; fd++) {
  2526. if (!FS.streams[fd]) {
  2527. return fd;
  2528. }
  2529. }
  2530. throw new FS.ErrnoError(ERRNO_CODES.EMFILE);
  2531. },getStream:function (fd) {
  2532. return FS.streams[fd];
  2533. },createStream:function (stream, fd_start, fd_end) {
  2534. if (!FS.FSStream) {
  2535. FS.FSStream = function(){};
  2536. FS.FSStream.prototype = {};
  2537. // compatibility
  2538. Object.defineProperties(FS.FSStream.prototype, {
  2539. object: {
  2540. get: function() { return this.node; },
  2541. set: function(val) { this.node = val; }
  2542. },
  2543. isRead: {
  2544. get: function() { return (this.flags & 2097155) !== 1; }
  2545. },
  2546. isWrite: {
  2547. get: function() { return (this.flags & 2097155) !== 0; }
  2548. },
  2549. isAppend: {
  2550. get: function() { return (this.flags & 1024); }
  2551. }
  2552. });
  2553. }
  2554. // clone it, so we can return an instance of FSStream
  2555. var newStream = new FS.FSStream();
  2556. for (var p in stream) {
  2557. newStream[p] = stream[p];
  2558. }
  2559. stream = newStream;
  2560. var fd = FS.nextfd(fd_start, fd_end);
  2561. stream.fd = fd;
  2562. FS.streams[fd] = stream;
  2563. return stream;
  2564. },closeStream:function (fd) {
  2565. FS.streams[fd] = null;
  2566. },getStreamFromPtr:function (ptr) {
  2567. return FS.streams[ptr - 1];
  2568. },getPtrForStream:function (stream) {
  2569. return stream ? stream.fd + 1 : 0;
  2570. },chrdev_stream_ops:{open:function (stream) {
  2571. var device = FS.getDevice(stream.node.rdev);
  2572. // override node's stream ops with the device's
  2573. stream.stream_ops = device.stream_ops;
  2574. // forward the open call
  2575. if (stream.stream_ops.open) {
  2576. stream.stream_ops.open(stream);
  2577. }
  2578. },llseek:function () {
  2579. throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
  2580. }},major:function (dev) {
  2581. return ((dev) >> 8);
  2582. },minor:function (dev) {
  2583. return ((dev) & 0xff);
  2584. },makedev:function (ma, mi) {
  2585. return ((ma) << 8 | (mi));
  2586. },registerDevice:function (dev, ops) {
  2587. FS.devices[dev] = { stream_ops: ops };
  2588. },getDevice:function (dev) {
  2589. return FS.devices[dev];
  2590. },getMounts:function (mount) {
  2591. var mounts = [];
  2592. var check = [mount];
  2593. while (check.length) {
  2594. var m = check.pop();
  2595. mounts.push(m);
  2596. check.push.apply(check, m.mounts);
  2597. }
  2598. return mounts;
  2599. },syncfs:function (populate, callback) {
  2600. if (typeof(populate) === 'function') {
  2601. callback = populate;
  2602. populate = false;
  2603. }
  2604. var mounts = FS.getMounts(FS.root.mount);
  2605. var completed = 0;
  2606. function done(err) {
  2607. if (err) {
  2608. if (!done.errored) {
  2609. done.errored = true;
  2610. return callback(err);
  2611. }
  2612. return;
  2613. }
  2614. if (++completed >= mounts.length) {
  2615. callback(null);
  2616. }
  2617. };
  2618. // sync all mounts
  2619. mounts.forEach(function (mount) {
  2620. if (!mount.type.syncfs) {
  2621. return done(null);
  2622. }
  2623. mount.type.syncfs(mount, populate, done);
  2624. });
  2625. },mount:function (type, opts, mountpoint) {
  2626. var root = mountpoint === '/';
  2627. var pseudo = !mountpoint;
  2628. var node;
  2629. if (root && FS.root) {
  2630. throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
  2631. } else if (!root && !pseudo) {
  2632. var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
  2633. mountpoint = lookup.path; // use the absolute path
  2634. node = lookup.node;
  2635. if (FS.isMountpoint(node)) {
  2636. throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
  2637. }
  2638. if (!FS.isDir(node.mode)) {
  2639. throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
  2640. }
  2641. }
  2642. var mount = {
  2643. type: type,
  2644. opts: opts,
  2645. mountpoint: mountpoint,
  2646. mounts: []
  2647. };
  2648. // create a root node for the fs
  2649. var mountRoot = type.mount(mount);
  2650. mountRoot.mount = mount;
  2651. mount.root = mountRoot;
  2652. if (root) {
  2653. FS.root = mountRoot;
  2654. } else if (node) {
  2655. // set as a mountpoint
  2656. node.mounted = mount;
  2657. // add the new mount to the current mount's children
  2658. if (node.mount) {
  2659. node.mount.mounts.push(mount);
  2660. }
  2661. }
  2662. return mountRoot;
  2663. },unmount:function (mountpoint) {
  2664. var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
  2665. if (!FS.isMountpoint(lookup.node)) {
  2666. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  2667. }
  2668. // destroy the nodes for this mount, and all its child mounts
  2669. var node = lookup.node;
  2670. var mount = node.mounted;
  2671. var mounts = FS.getMounts(mount);
  2672. Object.keys(FS.nameTable).forEach(function (hash) {
  2673. var current = FS.nameTable[hash];
  2674. while (current) {
  2675. var next = current.name_next;
  2676. if (mounts.indexOf(current.mount) !== -1) {
  2677. FS.destroyNode(current);
  2678. }
  2679. current = next;
  2680. }
  2681. });
  2682. // no longer a mountpoint
  2683. node.mounted = null;
  2684. // remove this mount from the child mounts
  2685. var idx = node.mount.mounts.indexOf(mount);
  2686. assert(idx !== -1);
  2687. node.mount.mounts.splice(idx, 1);
  2688. },lookup:function (parent, name) {
  2689. return parent.node_ops.lookup(parent, name);
  2690. },mknod:function (path, mode, dev) {
  2691. var lookup = FS.lookupPath(path, { parent: true });
  2692. var parent = lookup.node;
  2693. var name = PATH.basename(path);
  2694. if (!name || name === '.' || name === '..') {
  2695. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  2696. }
  2697. var err = FS.mayCreate(parent, name);
  2698. if (err) {
  2699. throw new FS.ErrnoError(err);
  2700. }
  2701. if (!parent.node_ops.mknod) {
  2702. throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  2703. }
  2704. return parent.node_ops.mknod(parent, name, mode, dev);
  2705. },create:function (path, mode) {
  2706. mode = mode !== undefined ? mode : 438 /* 0666 */;
  2707. mode &= 4095;
  2708. mode |= 32768;
  2709. return FS.mknod(path, mode, 0);
  2710. },mkdir:function (path, mode) {
  2711. mode = mode !== undefined ? mode : 511 /* 0777 */;
  2712. mode &= 511 | 512;
  2713. mode |= 16384;
  2714. return FS.mknod(path, mode, 0);
  2715. },mkdev:function (path, mode, dev) {
  2716. if (typeof(dev) === 'undefined') {
  2717. dev = mode;
  2718. mode = 438 /* 0666 */;
  2719. }
  2720. mode |= 8192;
  2721. return FS.mknod(path, mode, dev);
  2722. },symlink:function (oldpath, newpath) {
  2723. if (!PATH.resolve(oldpath)) {
  2724. throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  2725. }
  2726. var lookup = FS.lookupPath(newpath, { parent: true });
  2727. var parent = lookup.node;
  2728. if (!parent) {
  2729. throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  2730. }
  2731. var newname = PATH.basename(newpath);
  2732. var err = FS.mayCreate(parent, newname);
  2733. if (err) {
  2734. throw new FS.ErrnoError(err);
  2735. }
  2736. if (!parent.node_ops.symlink) {
  2737. throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  2738. }
  2739. return parent.node_ops.symlink(parent, newname, oldpath);
  2740. },rename:function (old_path, new_path) {
  2741. var old_dirname = PATH.dirname(old_path);
  2742. var new_dirname = PATH.dirname(new_path);
  2743. var old_name = PATH.basename(old_path);
  2744. var new_name = PATH.basename(new_path);
  2745. // parents must exist
  2746. var lookup, old_dir, new_dir;
  2747. try {
  2748. lookup = FS.lookupPath(old_path, { parent: true });
  2749. old_dir = lookup.node;
  2750. lookup = FS.lookupPath(new_path, { parent: true });
  2751. new_dir = lookup.node;
  2752. } catch (e) {
  2753. throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
  2754. }
  2755. if (!old_dir || !new_dir) throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  2756. // need to be part of the same mount
  2757. if (old_dir.mount !== new_dir.mount) {
  2758. throw new FS.ErrnoError(ERRNO_CODES.EXDEV);
  2759. }
  2760. // source must exist
  2761. var old_node = FS.lookupNode(old_dir, old_name);
  2762. // old path should not be an ancestor of the new path
  2763. var relative = PATH.relative(old_path, new_dirname);
  2764. if (relative.charAt(0) !== '.') {
  2765. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  2766. }
  2767. // new path should not be an ancestor of the old path
  2768. relative = PATH.relative(new_path, old_dirname);
  2769. if (relative.charAt(0) !== '.') {
  2770. throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
  2771. }
  2772. // see if the new path already exists
  2773. var new_node;
  2774. try {
  2775. new_node = FS.lookupNode(new_dir, new_name);
  2776. } catch (e) {
  2777. // not fatal
  2778. }
  2779. // early out if nothing needs to change
  2780. if (old_node === new_node) {
  2781. return;
  2782. }
  2783. // we'll need to delete the old entry
  2784. var isdir = FS.isDir(old_node.mode);
  2785. var err = FS.mayDelete(old_dir, old_name, isdir);
  2786. if (err) {
  2787. throw new FS.ErrnoError(err);
  2788. }
  2789. // need delete permissions if we'll be overwriting.
  2790. // need create permissions if new doesn't already exist.
  2791. err = new_node ?
  2792. FS.mayDelete(new_dir, new_name, isdir) :
  2793. FS.mayCreate(new_dir, new_name);
  2794. if (err) {
  2795. throw new FS.ErrnoError(err);
  2796. }
  2797. if (!old_dir.node_ops.rename) {
  2798. throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  2799. }
  2800. if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {
  2801. throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
  2802. }
  2803. // if we are going to change the parent, check write permissions
  2804. if (new_dir !== old_dir) {
  2805. err = FS.nodePermissions(old_dir, 'w');
  2806. if (err) {
  2807. throw new FS.ErrnoError(err);
  2808. }
  2809. }
  2810. try {
  2811. if (FS.trackingDelegate['willMovePath']) {
  2812. FS.trackingDelegate['willMovePath'](old_path, new_path);
  2813. }
  2814. } catch(e) {
  2815. console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message);
  2816. }
  2817. // remove the node from the lookup hash
  2818. FS.hashRemoveNode(old_node);
  2819. // do the underlying fs rename
  2820. try {
  2821. old_dir.node_ops.rename(old_node, new_dir, new_name);
  2822. } catch (e) {
  2823. throw e;
  2824. } finally {
  2825. // add the node back to the hash (in case node_ops.rename
  2826. // changed its name)
  2827. FS.hashAddNode(old_node);
  2828. }
  2829. try {
  2830. if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path);
  2831. } catch(e) {
  2832. console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message);
  2833. }
  2834. },rmdir:function (path) {
  2835. var lookup = FS.lookupPath(path, { parent: true });
  2836. var parent = lookup.node;
  2837. var name = PATH.basename(path);
  2838. var node = FS.lookupNode(parent, name);
  2839. var err = FS.mayDelete(parent, name, true);
  2840. if (err) {
  2841. throw new FS.ErrnoError(err);
  2842. }
  2843. if (!parent.node_ops.rmdir) {
  2844. throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  2845. }
  2846. if (FS.isMountpoint(node)) {
  2847. throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
  2848. }
  2849. try {
  2850. if (FS.trackingDelegate['willDeletePath']) {
  2851. FS.trackingDelegate['willDeletePath'](path);
  2852. }
  2853. } catch(e) {
  2854. console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message);
  2855. }
  2856. parent.node_ops.rmdir(parent, name);
  2857. FS.destroyNode(node);
  2858. try {
  2859. if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);
  2860. } catch(e) {
  2861. console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message);
  2862. }
  2863. },readdir:function (path) {
  2864. var lookup = FS.lookupPath(path, { follow: true });
  2865. var node = lookup.node;
  2866. if (!node.node_ops.readdir) {
  2867. throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
  2868. }
  2869. return node.node_ops.readdir(node);
  2870. },unlink:function (path) {
  2871. var lookup = FS.lookupPath(path, { parent: true });
  2872. var parent = lookup.node;
  2873. var name = PATH.basename(path);
  2874. var node = FS.lookupNode(parent, name);
  2875. var err = FS.mayDelete(parent, name, false);
  2876. if (err) {
  2877. // POSIX says unlink should set EPERM, not EISDIR
  2878. if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM;
  2879. throw new FS.ErrnoError(err);
  2880. }
  2881. if (!parent.node_ops.unlink) {
  2882. throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  2883. }
  2884. if (FS.isMountpoint(node)) {
  2885. throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
  2886. }
  2887. try {
  2888. if (FS.trackingDelegate['willDeletePath']) {
  2889. FS.trackingDelegate['willDeletePath'](path);
  2890. }
  2891. } catch(e) {
  2892. console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message);
  2893. }
  2894. parent.node_ops.unlink(parent, name);
  2895. FS.destroyNode(node);
  2896. try {
  2897. if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path);
  2898. } catch(e) {
  2899. console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message);
  2900. }
  2901. },readlink:function (path) {
  2902. var lookup = FS.lookupPath(path);
  2903. var link = lookup.node;
  2904. if (!link) {
  2905. throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  2906. }
  2907. if (!link.node_ops.readlink) {
  2908. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  2909. }
  2910. return link.node_ops.readlink(link);
  2911. },stat:function (path, dontFollow) {
  2912. var lookup = FS.lookupPath(path, { follow: !dontFollow });
  2913. var node = lookup.node;
  2914. if (!node) {
  2915. throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  2916. }
  2917. if (!node.node_ops.getattr) {
  2918. throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  2919. }
  2920. return node.node_ops.getattr(node);
  2921. },lstat:function (path) {
  2922. return FS.stat(path, true);
  2923. },chmod:function (path, mode, dontFollow) {
  2924. var node;
  2925. if (typeof path === 'string') {
  2926. var lookup = FS.lookupPath(path, { follow: !dontFollow });
  2927. node = lookup.node;
  2928. } else {
  2929. node = path;
  2930. }
  2931. if (!node.node_ops.setattr) {
  2932. throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  2933. }
  2934. node.node_ops.setattr(node, {
  2935. mode: (mode & 4095) | (node.mode & ~4095),
  2936. timestamp: Date.now()
  2937. });
  2938. },lchmod:function (path, mode) {
  2939. FS.chmod(path, mode, true);
  2940. },fchmod:function (fd, mode) {
  2941. var stream = FS.getStream(fd);
  2942. if (!stream) {
  2943. throw new FS.ErrnoError(ERRNO_CODES.EBADF);
  2944. }
  2945. FS.chmod(stream.node, mode);
  2946. },chown:function (path, uid, gid, dontFollow) {
  2947. var node;
  2948. if (typeof path === 'string') {
  2949. var lookup = FS.lookupPath(path, { follow: !dontFollow });
  2950. node = lookup.node;
  2951. } else {
  2952. node = path;
  2953. }
  2954. if (!node.node_ops.setattr) {
  2955. throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  2956. }
  2957. node.node_ops.setattr(node, {
  2958. timestamp: Date.now()
  2959. // we ignore the uid / gid for now
  2960. });
  2961. },lchown:function (path, uid, gid) {
  2962. FS.chown(path, uid, gid, true);
  2963. },fchown:function (fd, uid, gid) {
  2964. var stream = FS.getStream(fd);
  2965. if (!stream) {
  2966. throw new FS.ErrnoError(ERRNO_CODES.EBADF);
  2967. }
  2968. FS.chown(stream.node, uid, gid);
  2969. },truncate:function (path, len) {
  2970. if (len < 0) {
  2971. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  2972. }
  2973. var node;
  2974. if (typeof path === 'string') {
  2975. var lookup = FS.lookupPath(path, { follow: true });
  2976. node = lookup.node;
  2977. } else {
  2978. node = path;
  2979. }
  2980. if (!node.node_ops.setattr) {
  2981. throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  2982. }
  2983. if (FS.isDir(node.mode)) {
  2984. throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
  2985. }
  2986. if (!FS.isFile(node.mode)) {
  2987. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  2988. }
  2989. var err = FS.nodePermissions(node, 'w');
  2990. if (err) {
  2991. throw new FS.ErrnoError(err);
  2992. }
  2993. node.node_ops.setattr(node, {
  2994. size: len,
  2995. timestamp: Date.now()
  2996. });
  2997. },ftruncate:function (fd, len) {
  2998. var stream = FS.getStream(fd);
  2999. if (!stream) {
  3000. throw new FS.ErrnoError(ERRNO_CODES.EBADF);
  3001. }
  3002. if ((stream.flags & 2097155) === 0) {
  3003. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  3004. }
  3005. FS.truncate(stream.node, len);
  3006. },utime:function (path, atime, mtime) {
  3007. var lookup = FS.lookupPath(path, { follow: true });
  3008. var node = lookup.node;
  3009. node.node_ops.setattr(node, {
  3010. timestamp: Math.max(atime, mtime)
  3011. });
  3012. },open:function (path, flags, mode, fd_start, fd_end) {
  3013. if (path === "") {
  3014. throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  3015. }
  3016. flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;
  3017. mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode;
  3018. if ((flags & 64)) {
  3019. mode = (mode & 4095) | 32768;
  3020. } else {
  3021. mode = 0;
  3022. }
  3023. var node;
  3024. if (typeof path === 'object') {
  3025. node = path;
  3026. } else {
  3027. path = PATH.normalize(path);
  3028. try {
  3029. var lookup = FS.lookupPath(path, {
  3030. follow: !(flags & 131072)
  3031. });
  3032. node = lookup.node;
  3033. } catch (e) {
  3034. // ignore
  3035. }
  3036. }
  3037. // perhaps we need to create the node
  3038. var created = false;
  3039. if ((flags & 64)) {
  3040. if (node) {
  3041. // if O_CREAT and O_EXCL are set, error out if the node already exists
  3042. if ((flags & 128)) {
  3043. throw new FS.ErrnoError(ERRNO_CODES.EEXIST);
  3044. }
  3045. } else {
  3046. // node doesn't exist, try to create it
  3047. node = FS.mknod(path, mode, 0);
  3048. created = true;
  3049. }
  3050. }
  3051. if (!node) {
  3052. throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  3053. }
  3054. // can't truncate a device
  3055. if (FS.isChrdev(node.mode)) {
  3056. flags &= ~512;
  3057. }
  3058. // check permissions, if this is not a file we just created now (it is ok to
  3059. // create and write to a file with read-only permissions; it is read-only
  3060. // for later use)
  3061. if (!created) {
  3062. var err = FS.mayOpen(node, flags);
  3063. if (err) {
  3064. throw new FS.ErrnoError(err);
  3065. }
  3066. }
  3067. // do truncation if necessary
  3068. if ((flags & 512)) {
  3069. FS.truncate(node, 0);
  3070. }
  3071. // we've already handled these, don't pass down to the underlying vfs
  3072. flags &= ~(128 | 512);
  3073. // register the stream with the filesystem
  3074. var stream = FS.createStream({
  3075. node: node,
  3076. path: FS.getPath(node), // we want the absolute path to the node
  3077. flags: flags,
  3078. seekable: true,
  3079. position: 0,
  3080. stream_ops: node.stream_ops,
  3081. // used by the file family libc calls (fopen, fwrite, ferror, etc.)
  3082. ungotten: [],
  3083. error: false
  3084. }, fd_start, fd_end);
  3085. // call the new stream's open function
  3086. if (stream.stream_ops.open) {
  3087. stream.stream_ops.open(stream);
  3088. }
  3089. if (Module['logReadFiles'] && !(flags & 1)) {
  3090. if (!FS.readFiles) FS.readFiles = {};
  3091. if (!(path in FS.readFiles)) {
  3092. FS.readFiles[path] = 1;
  3093. Module['printErr']('read file: ' + path);
  3094. }
  3095. }
  3096. try {
  3097. if (FS.trackingDelegate['onOpenFile']) {
  3098. var trackingFlags = 0;
  3099. if ((flags & 2097155) !== 1) {
  3100. trackingFlags |= FS.tracking.openFlags.READ;
  3101. }
  3102. if ((flags & 2097155) !== 0) {
  3103. trackingFlags |= FS.tracking.openFlags.WRITE;
  3104. }
  3105. FS.trackingDelegate['onOpenFile'](path, trackingFlags);
  3106. }
  3107. } catch(e) {
  3108. console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: " + e.message);
  3109. }
  3110. return stream;
  3111. },close:function (stream) {
  3112. try {
  3113. if (stream.stream_ops.close) {
  3114. stream.stream_ops.close(stream);
  3115. }
  3116. } catch (e) {
  3117. throw e;
  3118. } finally {
  3119. FS.closeStream(stream.fd);
  3120. }
  3121. },llseek:function (stream, offset, whence) {
  3122. if (!stream.seekable || !stream.stream_ops.llseek) {
  3123. throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
  3124. }
  3125. stream.position = stream.stream_ops.llseek(stream, offset, whence);
  3126. stream.ungotten = [];
  3127. return stream.position;
  3128. },read:function (stream, buffer, offset, length, position) {
  3129. if (length < 0 || position < 0) {
  3130. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  3131. }
  3132. if ((stream.flags & 2097155) === 1) {
  3133. throw new FS.ErrnoError(ERRNO_CODES.EBADF);
  3134. }
  3135. if (FS.isDir(stream.node.mode)) {
  3136. throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
  3137. }
  3138. if (!stream.stream_ops.read) {
  3139. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  3140. }
  3141. var seeking = true;
  3142. if (typeof position === 'undefined') {
  3143. position = stream.position;
  3144. seeking = false;
  3145. } else if (!stream.seekable) {
  3146. throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
  3147. }
  3148. var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
  3149. if (!seeking) stream.position += bytesRead;
  3150. return bytesRead;
  3151. },write:function (stream, buffer, offset, length, position, canOwn) {
  3152. if (length < 0 || position < 0) {
  3153. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  3154. }
  3155. if ((stream.flags & 2097155) === 0) {
  3156. throw new FS.ErrnoError(ERRNO_CODES.EBADF);
  3157. }
  3158. if (FS.isDir(stream.node.mode)) {
  3159. throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
  3160. }
  3161. if (!stream.stream_ops.write) {
  3162. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  3163. }
  3164. if (stream.flags & 1024) {
  3165. // seek to the end before writing in append mode
  3166. FS.llseek(stream, 0, 2);
  3167. }
  3168. var seeking = true;
  3169. if (typeof position === 'undefined') {
  3170. position = stream.position;
  3171. seeking = false;
  3172. } else if (!stream.seekable) {
  3173. throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
  3174. }
  3175. var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
  3176. if (!seeking) stream.position += bytesWritten;
  3177. try {
  3178. if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path);
  3179. } catch(e) {
  3180. console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: " + e.message);
  3181. }
  3182. return bytesWritten;
  3183. },allocate:function (stream, offset, length) {
  3184. if (offset < 0 || length <= 0) {
  3185. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  3186. }
  3187. if ((stream.flags & 2097155) === 0) {
  3188. throw new FS.ErrnoError(ERRNO_CODES.EBADF);
  3189. }
  3190. if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
  3191. throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
  3192. }
  3193. if (!stream.stream_ops.allocate) {
  3194. throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
  3195. }
  3196. stream.stream_ops.allocate(stream, offset, length);
  3197. },mmap:function (stream, buffer, offset, length, position, prot, flags) {
  3198. // TODO if PROT is PROT_WRITE, make sure we have write access
  3199. if ((stream.flags & 2097155) === 1) {
  3200. throw new FS.ErrnoError(ERRNO_CODES.EACCES);
  3201. }
  3202. if (!stream.stream_ops.mmap) {
  3203. throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
  3204. }
  3205. return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);
  3206. },ioctl:function (stream, cmd, arg) {
  3207. if (!stream.stream_ops.ioctl) {
  3208. throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
  3209. }
  3210. return stream.stream_ops.ioctl(stream, cmd, arg);
  3211. },readFile:function (path, opts) {
  3212. opts = opts || {};
  3213. opts.flags = opts.flags || 'r';
  3214. opts.encoding = opts.encoding || 'binary';
  3215. if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
  3216. throw new Error('Invalid encoding type "' + opts.encoding + '"');
  3217. }
  3218. var ret;
  3219. var stream = FS.open(path, opts.flags);
  3220. var stat = FS.stat(path);
  3221. var length = stat.size;
  3222. var buf = new Uint8Array(length);
  3223. FS.read(stream, buf, 0, length, 0);
  3224. if (opts.encoding === 'utf8') {
  3225. ret = '';
  3226. var utf8 = new Runtime.UTF8Processor();
  3227. for (var i = 0; i < length; i++) {
  3228. ret += utf8.processCChar(buf[i]);
  3229. }
  3230. } else if (opts.encoding === 'binary') {
  3231. ret = buf;
  3232. }
  3233. FS.close(stream);
  3234. return ret;
  3235. },writeFile:function (path, data, opts) {
  3236. opts = opts || {};
  3237. opts.flags = opts.flags || 'w';
  3238. opts.encoding = opts.encoding || 'utf8';
  3239. if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
  3240. throw new Error('Invalid encoding type "' + opts.encoding + '"');
  3241. }
  3242. var stream = FS.open(path, opts.flags, opts.mode);
  3243. if (opts.encoding === 'utf8') {
  3244. var utf8 = new Runtime.UTF8Processor();
  3245. var buf = new Uint8Array(utf8.processJSString(data));
  3246. FS.write(stream, buf, 0, buf.length, 0, opts.canOwn);
  3247. } else if (opts.encoding === 'binary') {
  3248. FS.write(stream, data, 0, data.length, 0, opts.canOwn);
  3249. }
  3250. FS.close(stream);
  3251. },cwd:function () {
  3252. return FS.currentPath;
  3253. },chdir:function (path) {
  3254. var lookup = FS.lookupPath(path, { follow: true });
  3255. if (!FS.isDir(lookup.node.mode)) {
  3256. throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
  3257. }
  3258. var err = FS.nodePermissions(lookup.node, 'x');
  3259. if (err) {
  3260. throw new FS.ErrnoError(err);
  3261. }
  3262. FS.currentPath = lookup.path;
  3263. },createDefaultDirectories:function () {
  3264. FS.mkdir('/tmp');
  3265. FS.mkdir('/home');
  3266. FS.mkdir('/home/web_user');
  3267. },createDefaultDevices:function () {
  3268. // create /dev
  3269. FS.mkdir('/dev');
  3270. // setup /dev/null
  3271. FS.registerDevice(FS.makedev(1, 3), {
  3272. read: function() { return 0; },
  3273. write: function() { return 0; }
  3274. });
  3275. FS.mkdev('/dev/null', FS.makedev(1, 3));
  3276. // setup /dev/tty and /dev/tty1
  3277. // stderr needs to print output using Module['printErr']
  3278. // so we register a second tty just for it.
  3279. TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
  3280. TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
  3281. FS.mkdev('/dev/tty', FS.makedev(5, 0));
  3282. FS.mkdev('/dev/tty1', FS.makedev(6, 0));
  3283. // setup /dev/[u]random
  3284. var random_device;
  3285. if (typeof crypto !== 'undefined') {
  3286. // for modern web browsers
  3287. var randomBuffer = new Uint8Array(1);
  3288. random_device = function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; };
  3289. } else if (ENVIRONMENT_IS_NODE) {
  3290. // for nodejs
  3291. random_device = function() { return require('crypto').randomBytes(1)[0]; };
  3292. } else {
  3293. // default for ES5 platforms
  3294. random_device = function() { return (Math.random()*256)|0; };
  3295. }
  3296. FS.createDevice('/dev', 'random', random_device);
  3297. FS.createDevice('/dev', 'urandom', random_device);
  3298. // we're not going to emulate the actual shm device,
  3299. // just create the tmp dirs that reside in it commonly
  3300. FS.mkdir('/dev/shm');
  3301. FS.mkdir('/dev/shm/tmp');
  3302. },createStandardStreams:function () {
  3303. // TODO deprecate the old functionality of a single
  3304. // input / output callback and that utilizes FS.createDevice
  3305. // and instead require a unique set of stream ops
  3306. // by default, we symlink the standard streams to the
  3307. // default tty devices. however, if the standard streams
  3308. // have been overwritten we create a unique device for
  3309. // them instead.
  3310. if (Module['stdin']) {
  3311. FS.createDevice('/dev', 'stdin', Module['stdin']);
  3312. } else {
  3313. FS.symlink('/dev/tty', '/dev/stdin');
  3314. }
  3315. if (Module['stdout']) {
  3316. FS.createDevice('/dev', 'stdout', null, Module['stdout']);
  3317. } else {
  3318. FS.symlink('/dev/tty', '/dev/stdout');
  3319. }
  3320. if (Module['stderr']) {
  3321. FS.createDevice('/dev', 'stderr', null, Module['stderr']);
  3322. } else {
  3323. FS.symlink('/dev/tty1', '/dev/stderr');
  3324. }
  3325. // open default streams for the stdin, stdout and stderr devices
  3326. var stdin = FS.open('/dev/stdin', 'r');
  3327. HEAP32[((_stdin)>>2)]=FS.getPtrForStream(stdin);
  3328. assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')');
  3329. var stdout = FS.open('/dev/stdout', 'w');
  3330. HEAP32[((_stdout)>>2)]=FS.getPtrForStream(stdout);
  3331. assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')');
  3332. var stderr = FS.open('/dev/stderr', 'w');
  3333. HEAP32[((_stderr)>>2)]=FS.getPtrForStream(stderr);
  3334. assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')');
  3335. },ensureErrnoError:function () {
  3336. if (FS.ErrnoError) return;
  3337. FS.ErrnoError = function ErrnoError(errno, node) {
  3338. this.node = node;
  3339. this.setErrno = function(errno) {
  3340. this.errno = errno;
  3341. for (var key in ERRNO_CODES) {
  3342. if (ERRNO_CODES[key] === errno) {
  3343. this.code = key;
  3344. break;
  3345. }
  3346. }
  3347. };
  3348. this.setErrno(errno);
  3349. this.message = ERRNO_MESSAGES[errno];
  3350. };
  3351. FS.ErrnoError.prototype = new Error();
  3352. FS.ErrnoError.prototype.constructor = FS.ErrnoError;
  3353. // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info)
  3354. [ERRNO_CODES.ENOENT].forEach(function(code) {
  3355. FS.genericErrors[code] = new FS.ErrnoError(code);
  3356. FS.genericErrors[code].stack = '<generic error, no stack>';
  3357. });
  3358. },staticInit:function () {
  3359. FS.ensureErrnoError();
  3360. FS.nameTable = new Array(4096);
  3361. FS.mount(MEMFS, {}, '/');
  3362. FS.createDefaultDirectories();
  3363. FS.createDefaultDevices();
  3364. },init:function (input, output, error) {
  3365. assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');
  3366. FS.init.initialized = true;
  3367. FS.ensureErrnoError();
  3368. // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here
  3369. Module['stdin'] = input || Module['stdin'];
  3370. Module['stdout'] = output || Module['stdout'];
  3371. Module['stderr'] = error || Module['stderr'];
  3372. FS.createStandardStreams();
  3373. },quit:function () {
  3374. FS.init.initialized = false;
  3375. for (var i = 0; i < FS.streams.length; i++) {
  3376. var stream = FS.streams[i];
  3377. if (!stream) {
  3378. continue;
  3379. }
  3380. FS.close(stream);
  3381. }
  3382. },getMode:function (canRead, canWrite) {
  3383. var mode = 0;
  3384. if (canRead) mode |= 292 | 73;
  3385. if (canWrite) mode |= 146;
  3386. return mode;
  3387. },joinPath:function (parts, forceRelative) {
  3388. var path = PATH.join.apply(null, parts);
  3389. if (forceRelative && path[0] == '/') path = path.substr(1);
  3390. return path;
  3391. },absolutePath:function (relative, base) {
  3392. return PATH.resolve(base, relative);
  3393. },standardizePath:function (path) {
  3394. return PATH.normalize(path);
  3395. },findObject:function (path, dontResolveLastLink) {
  3396. var ret = FS.analyzePath(path, dontResolveLastLink);
  3397. if (ret.exists) {
  3398. return ret.object;
  3399. } else {
  3400. ___setErrNo(ret.error);
  3401. return null;
  3402. }
  3403. },analyzePath:function (path, dontResolveLastLink) {
  3404. // operate from within the context of the symlink's target
  3405. try {
  3406. var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
  3407. path = lookup.path;
  3408. } catch (e) {
  3409. }
  3410. var ret = {
  3411. isRoot: false, exists: false, error: 0, name: null, path: null, object: null,
  3412. parentExists: false, parentPath: null, parentObject: null
  3413. };
  3414. try {
  3415. var lookup = FS.lookupPath(path, { parent: true });
  3416. ret.parentExists = true;
  3417. ret.parentPath = lookup.path;
  3418. ret.parentObject = lookup.node;
  3419. ret.name = PATH.basename(path);
  3420. lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
  3421. ret.exists = true;
  3422. ret.path = lookup.path;
  3423. ret.object = lookup.node;
  3424. ret.name = lookup.node.name;
  3425. ret.isRoot = lookup.path === '/';
  3426. } catch (e) {
  3427. ret.error = e.errno;
  3428. };
  3429. return ret;
  3430. },createFolder:function (parent, name, canRead, canWrite) {
  3431. var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
  3432. var mode = FS.getMode(canRead, canWrite);
  3433. return FS.mkdir(path, mode);
  3434. },createPath:function (parent, path, canRead, canWrite) {
  3435. parent = typeof parent === 'string' ? parent : FS.getPath(parent);
  3436. var parts = path.split('/').reverse();
  3437. while (parts.length) {
  3438. var part = parts.pop();
  3439. if (!part) continue;
  3440. var current = PATH.join2(parent, part);
  3441. try {
  3442. FS.mkdir(current);
  3443. } catch (e) {
  3444. // ignore EEXIST
  3445. }
  3446. parent = current;
  3447. }
  3448. return current;
  3449. },createFile:function (parent, name, properties, canRead, canWrite) {
  3450. var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
  3451. var mode = FS.getMode(canRead, canWrite);
  3452. return FS.create(path, mode);
  3453. },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) {
  3454. var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent;
  3455. var mode = FS.getMode(canRead, canWrite);
  3456. var node = FS.create(path, mode);
  3457. if (data) {
  3458. if (typeof data === 'string') {
  3459. var arr = new Array(data.length);
  3460. for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
  3461. data = arr;
  3462. }
  3463. // make sure we can write to the file
  3464. FS.chmod(node, mode | 146);
  3465. var stream = FS.open(node, 'w');
  3466. FS.write(stream, data, 0, data.length, 0, canOwn);
  3467. FS.close(stream);
  3468. FS.chmod(node, mode);
  3469. }
  3470. return node;
  3471. },createDevice:function (parent, name, input, output) {
  3472. var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
  3473. var mode = FS.getMode(!!input, !!output);
  3474. if (!FS.createDevice.major) FS.createDevice.major = 64;
  3475. var dev = FS.makedev(FS.createDevice.major++, 0);
  3476. // Create a fake device that a set of stream ops to emulate
  3477. // the old behavior.
  3478. FS.registerDevice(dev, {
  3479. open: function(stream) {
  3480. stream.seekable = false;
  3481. },
  3482. close: function(stream) {
  3483. // flush any pending line data
  3484. if (output && output.buffer && output.buffer.length) {
  3485. output(10);
  3486. }
  3487. },
  3488. read: function(stream, buffer, offset, length, pos /* ignored */) {
  3489. var bytesRead = 0;
  3490. for (var i = 0; i < length; i++) {
  3491. var result;
  3492. try {
  3493. result = input();
  3494. } catch (e) {
  3495. throw new FS.ErrnoError(ERRNO_CODES.EIO);
  3496. }
  3497. if (result === undefined && bytesRead === 0) {
  3498. throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
  3499. }
  3500. if (result === null || result === undefined) break;
  3501. bytesRead++;
  3502. buffer[offset+i] = result;
  3503. }
  3504. if (bytesRead) {
  3505. stream.node.timestamp = Date.now();
  3506. }
  3507. return bytesRead;
  3508. },
  3509. write: function(stream, buffer, offset, length, pos) {
  3510. for (var i = 0; i < length; i++) {
  3511. try {
  3512. output(buffer[offset+i]);
  3513. } catch (e) {
  3514. throw new FS.ErrnoError(ERRNO_CODES.EIO);
  3515. }
  3516. }
  3517. if (length) {
  3518. stream.node.timestamp = Date.now();
  3519. }
  3520. return i;
  3521. }
  3522. });
  3523. return FS.mkdev(path, mode, dev);
  3524. },createLink:function (parent, name, target, canRead, canWrite) {
  3525. var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
  3526. return FS.symlink(target, path);
  3527. },forceLoadFile:function (obj) {
  3528. if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
  3529. var success = true;
  3530. if (typeof XMLHttpRequest !== 'undefined') {
  3531. throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
  3532. } else if (Module['read']) {
  3533. // Command-line.
  3534. try {
  3535. // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as
  3536. // read() will try to parse UTF8.
  3537. obj.contents = intArrayFromString(Module['read'](obj.url), true);
  3538. obj.usedBytes = obj.contents.length;
  3539. } catch (e) {
  3540. success = false;
  3541. }
  3542. } else {
  3543. throw new Error('Cannot load without read() or XMLHttpRequest.');
  3544. }
  3545. if (!success) ___setErrNo(ERRNO_CODES.EIO);
  3546. return success;
  3547. },createLazyFile:function (parent, name, url, canRead, canWrite) {
  3548. // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.
  3549. function LazyUint8Array() {
  3550. this.lengthKnown = false;
  3551. this.chunks = []; // Loaded chunks. Index is the chunk number
  3552. }
  3553. LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
  3554. if (idx > this.length-1 || idx < 0) {
  3555. return undefined;
  3556. }
  3557. var chunkOffset = idx % this.chunkSize;
  3558. var chunkNum = (idx / this.chunkSize)|0;
  3559. return this.getter(chunkNum)[chunkOffset];
  3560. }
  3561. LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
  3562. this.getter = getter;
  3563. }
  3564. LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
  3565. // Find length
  3566. var xhr = new XMLHttpRequest();
  3567. xhr.open('HEAD', url, false);
  3568. xhr.send(null);
  3569. if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
  3570. var datalength = Number(xhr.getResponseHeader("Content-length"));
  3571. var header;
  3572. var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
  3573. var chunkSize = 1024*1024; // Chunk size in bytes
  3574. if (!hasByteServing) chunkSize = datalength;
  3575. // Function to get a range from the remote URL.
  3576. var doXHR = (function(from, to) {
  3577. if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
  3578. if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!");
  3579. // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.
  3580. var xhr = new XMLHttpRequest();
  3581. xhr.open('GET', url, false);
  3582. if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
  3583. // Some hints to the browser that we want binary data.
  3584. if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';
  3585. if (xhr.overrideMimeType) {
  3586. xhr.overrideMimeType('text/plain; charset=x-user-defined');
  3587. }
  3588. xhr.send(null);
  3589. if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
  3590. if (xhr.response !== undefined) {
  3591. return new Uint8Array(xhr.response || []);
  3592. } else {
  3593. return intArrayFromString(xhr.responseText || '', true);
  3594. }
  3595. });
  3596. var lazyArray = this;
  3597. lazyArray.setDataGetter(function(chunkNum) {
  3598. var start = chunkNum * chunkSize;
  3599. var end = (chunkNum+1) * chunkSize - 1; // including this byte
  3600. end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block
  3601. if (typeof(lazyArray.chunks[chunkNum]) === "undefined") {
  3602. lazyArray.chunks[chunkNum] = doXHR(start, end);
  3603. }
  3604. if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!");
  3605. return lazyArray.chunks[chunkNum];
  3606. });
  3607. this._length = datalength;
  3608. this._chunkSize = chunkSize;
  3609. this.lengthKnown = true;
  3610. }
  3611. if (typeof XMLHttpRequest !== 'undefined') {
  3612. if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';
  3613. var lazyArray = new LazyUint8Array();
  3614. Object.defineProperty(lazyArray, "length", {
  3615. get: function() {
  3616. if(!this.lengthKnown) {
  3617. this.cacheLength();
  3618. }
  3619. return this._length;
  3620. }
  3621. });
  3622. Object.defineProperty(lazyArray, "chunkSize", {
  3623. get: function() {
  3624. if(!this.lengthKnown) {
  3625. this.cacheLength();
  3626. }
  3627. return this._chunkSize;
  3628. }
  3629. });
  3630. var properties = { isDevice: false, contents: lazyArray };
  3631. } else {
  3632. var properties = { isDevice: false, url: url };
  3633. }
  3634. var node = FS.createFile(parent, name, properties, canRead, canWrite);
  3635. // This is a total hack, but I want to get this lazy file code out of the
  3636. // core of MEMFS. If we want to keep this lazy file concept I feel it should
  3637. // be its own thin LAZYFS proxying calls to MEMFS.
  3638. if (properties.contents) {
  3639. node.contents = properties.contents;
  3640. } else if (properties.url) {
  3641. node.contents = null;
  3642. node.url = properties.url;
  3643. }
  3644. // Add a function that defers querying the file size until it is asked the first time.
  3645. Object.defineProperty(node, "usedBytes", {
  3646. get: function() { return this.contents.length; }
  3647. });
  3648. // override each stream op with one that tries to force load the lazy file first
  3649. var stream_ops = {};
  3650. var keys = Object.keys(node.stream_ops);
  3651. keys.forEach(function(key) {
  3652. var fn = node.stream_ops[key];
  3653. stream_ops[key] = function forceLoadLazyFile() {
  3654. if (!FS.forceLoadFile(node)) {
  3655. throw new FS.ErrnoError(ERRNO_CODES.EIO);
  3656. }
  3657. return fn.apply(null, arguments);
  3658. };
  3659. });
  3660. // use a custom read function
  3661. stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
  3662. if (!FS.forceLoadFile(node)) {
  3663. throw new FS.ErrnoError(ERRNO_CODES.EIO);
  3664. }
  3665. var contents = stream.node.contents;
  3666. if (position >= contents.length)
  3667. return 0;
  3668. var size = Math.min(contents.length - position, length);
  3669. assert(size >= 0);
  3670. if (contents.slice) { // normal array
  3671. for (var i = 0; i < size; i++) {
  3672. buffer[offset + i] = contents[position + i];
  3673. }
  3674. } else {
  3675. for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR
  3676. buffer[offset + i] = contents.get(position + i);
  3677. }
  3678. }
  3679. return size;
  3680. };
  3681. node.stream_ops = stream_ops;
  3682. return node;
  3683. },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) {
  3684. Browser.init();
  3685. // TODO we should allow people to just pass in a complete filename instead
  3686. // of parent and name being that we just join them anyways
  3687. var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;
  3688. function processData(byteArray) {
  3689. function finish(byteArray) {
  3690. if (!dontCreateFile) {
  3691. FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
  3692. }
  3693. if (onload) onload();
  3694. removeRunDependency('cp ' + fullname);
  3695. }
  3696. var handled = false;
  3697. Module['preloadPlugins'].forEach(function(plugin) {
  3698. if (handled) return;
  3699. if (plugin['canHandle'](fullname)) {
  3700. plugin['handle'](byteArray, fullname, finish, function() {
  3701. if (onerror) onerror();
  3702. removeRunDependency('cp ' + fullname);
  3703. });
  3704. handled = true;
  3705. }
  3706. });
  3707. if (!handled) finish(byteArray);
  3708. }
  3709. addRunDependency('cp ' + fullname);
  3710. if (typeof url == 'string') {
  3711. Browser.asyncLoad(url, function(byteArray) {
  3712. processData(byteArray);
  3713. }, onerror);
  3714. } else {
  3715. processData(url);
  3716. }
  3717. },indexedDB:function () {
  3718. return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
  3719. },DB_NAME:function () {
  3720. return 'EM_FS_' + window.location.pathname;
  3721. },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) {
  3722. onload = onload || function(){};
  3723. onerror = onerror || function(){};
  3724. var indexedDB = FS.indexedDB();
  3725. try {
  3726. var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
  3727. } catch (e) {
  3728. return onerror(e);
  3729. }
  3730. openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
  3731. console.log('creating db');
  3732. var db = openRequest.result;
  3733. db.createObjectStore(FS.DB_STORE_NAME);
  3734. };
  3735. openRequest.onsuccess = function openRequest_onsuccess() {
  3736. var db = openRequest.result;
  3737. var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');
  3738. var files = transaction.objectStore(FS.DB_STORE_NAME);
  3739. var ok = 0, fail = 0, total = paths.length;
  3740. function finish() {
  3741. if (fail == 0) onload(); else onerror();
  3742. }
  3743. paths.forEach(function(path) {
  3744. var putRequest = files.put(FS.analyzePath(path).object.contents, path);
  3745. putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() };
  3746. putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() };
  3747. });
  3748. transaction.onerror = onerror;
  3749. };
  3750. openRequest.onerror = onerror;
  3751. },loadFilesFromDB:function (paths, onload, onerror) {
  3752. onload = onload || function(){};
  3753. onerror = onerror || function(){};
  3754. var indexedDB = FS.indexedDB();
  3755. try {
  3756. var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
  3757. } catch (e) {
  3758. return onerror(e);
  3759. }
  3760. openRequest.onupgradeneeded = onerror; // no database to load from
  3761. openRequest.onsuccess = function openRequest_onsuccess() {
  3762. var db = openRequest.result;
  3763. try {
  3764. var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');
  3765. } catch(e) {
  3766. onerror(e);
  3767. return;
  3768. }
  3769. var files = transaction.objectStore(FS.DB_STORE_NAME);
  3770. var ok = 0, fail = 0, total = paths.length;
  3771. function finish() {
  3772. if (fail == 0) onload(); else onerror();
  3773. }
  3774. paths.forEach(function(path) {
  3775. var getRequest = files.get(path);
  3776. getRequest.onsuccess = function getRequest_onsuccess() {
  3777. if (FS.analyzePath(path).exists) {
  3778. FS.unlink(path);
  3779. }
  3780. FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
  3781. ok++;
  3782. if (ok + fail == total) finish();
  3783. };
  3784. getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() };
  3785. });
  3786. transaction.onerror = onerror;
  3787. };
  3788. openRequest.onerror = onerror;
  3789. }};var PATH={splitPath:function (filename) {
  3790. var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
  3791. return splitPathRe.exec(filename).slice(1);
  3792. },normalizeArray:function (parts, allowAboveRoot) {
  3793. // if the path tries to go above the root, `up` ends up > 0
  3794. var up = 0;
  3795. for (var i = parts.length - 1; i >= 0; i--) {
  3796. var last = parts[i];
  3797. if (last === '.') {
  3798. parts.splice(i, 1);
  3799. } else if (last === '..') {
  3800. parts.splice(i, 1);
  3801. up++;
  3802. } else if (up) {
  3803. parts.splice(i, 1);
  3804. up--;
  3805. }
  3806. }
  3807. // if the path is allowed to go above the root, restore leading ..s
  3808. if (allowAboveRoot) {
  3809. for (; up--; up) {
  3810. parts.unshift('..');
  3811. }
  3812. }
  3813. return parts;
  3814. },normalize:function (path) {
  3815. var isAbsolute = path.charAt(0) === '/',
  3816. trailingSlash = path.substr(-1) === '/';
  3817. // Normalize the path
  3818. path = PATH.normalizeArray(path.split('/').filter(function(p) {
  3819. return !!p;
  3820. }), !isAbsolute).join('/');
  3821. if (!path && !isAbsolute) {
  3822. path = '.';
  3823. }
  3824. if (path && trailingSlash) {
  3825. path += '/';
  3826. }
  3827. return (isAbsolute ? '/' : '') + path;
  3828. },dirname:function (path) {
  3829. var result = PATH.splitPath(path),
  3830. root = result[0],
  3831. dir = result[1];
  3832. if (!root && !dir) {
  3833. // No dirname whatsoever
  3834. return '.';
  3835. }
  3836. if (dir) {
  3837. // It has a dirname, strip trailing slash
  3838. dir = dir.substr(0, dir.length - 1);
  3839. }
  3840. return root + dir;
  3841. },basename:function (path) {
  3842. // EMSCRIPTEN return '/'' for '/', not an empty string
  3843. if (path === '/') return '/';
  3844. var lastSlash = path.lastIndexOf('/');
  3845. if (lastSlash === -1) return path;
  3846. return path.substr(lastSlash+1);
  3847. },extname:function (path) {
  3848. return PATH.splitPath(path)[3];
  3849. },join:function () {
  3850. var paths = Array.prototype.slice.call(arguments, 0);
  3851. return PATH.normalize(paths.join('/'));
  3852. },join2:function (l, r) {
  3853. return PATH.normalize(l + '/' + r);
  3854. },resolve:function () {
  3855. var resolvedPath = '',
  3856. resolvedAbsolute = false;
  3857. for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
  3858. var path = (i >= 0) ? arguments[i] : FS.cwd();
  3859. // Skip empty and invalid entries
  3860. if (typeof path !== 'string') {
  3861. throw new TypeError('Arguments to path.resolve must be strings');
  3862. } else if (!path) {
  3863. return ''; // an invalid portion invalidates the whole thing
  3864. }
  3865. resolvedPath = path + '/' + resolvedPath;
  3866. resolvedAbsolute = path.charAt(0) === '/';
  3867. }
  3868. // At this point the path should be resolved to a full absolute path, but
  3869. // handle relative paths to be safe (might happen when process.cwd() fails)
  3870. resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) {
  3871. return !!p;
  3872. }), !resolvedAbsolute).join('/');
  3873. return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
  3874. },relative:function (from, to) {
  3875. from = PATH.resolve(from).substr(1);
  3876. to = PATH.resolve(to).substr(1);
  3877. function trim(arr) {
  3878. var start = 0;
  3879. for (; start < arr.length; start++) {
  3880. if (arr[start] !== '') break;
  3881. }
  3882. var end = arr.length - 1;
  3883. for (; end >= 0; end--) {
  3884. if (arr[end] !== '') break;
  3885. }
  3886. if (start > end) return [];
  3887. return arr.slice(start, end - start + 1);
  3888. }
  3889. var fromParts = trim(from.split('/'));
  3890. var toParts = trim(to.split('/'));
  3891. var length = Math.min(fromParts.length, toParts.length);
  3892. var samePartsLength = length;
  3893. for (var i = 0; i < length; i++) {
  3894. if (fromParts[i] !== toParts[i]) {
  3895. samePartsLength = i;
  3896. break;
  3897. }
  3898. }
  3899. var outputParts = [];
  3900. for (var i = samePartsLength; i < fromParts.length; i++) {
  3901. outputParts.push('..');
  3902. }
  3903. outputParts = outputParts.concat(toParts.slice(samePartsLength));
  3904. return outputParts.join('/');
  3905. }};
  3906. function _emscripten_set_main_loop_timing(mode, value) {
  3907. Browser.mainLoop.timingMode = mode;
  3908. Browser.mainLoop.timingValue = value;
  3909. if (!Browser.mainLoop.func) {
  3910. return 1; // Return non-zero on failure, can't set timing mode when there is no main loop.
  3911. }
  3912. if (mode == 0 /*EM_TIMING_SETTIMEOUT*/) {
  3913. Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler() {
  3914. setTimeout(Browser.mainLoop.runner, value); // doing this each time means that on exception, we stop
  3915. };
  3916. Browser.mainLoop.method = 'timeout';
  3917. } else if (mode == 1 /*EM_TIMING_RAF*/) {
  3918. Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler() {
  3919. Browser.requestAnimationFrame(Browser.mainLoop.runner);
  3920. };
  3921. Browser.mainLoop.method = 'rAF';
  3922. }
  3923. return 0;
  3924. }function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop, arg) {
  3925. Module['noExitRuntime'] = true;
  3926. assert(!Browser.mainLoop.func, 'emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.');
  3927. Browser.mainLoop.func = func;
  3928. Browser.mainLoop.arg = arg;
  3929. var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop;
  3930. Browser.mainLoop.runner = function Browser_mainLoop_runner() {
  3931. if (ABORT) return;
  3932. if (Browser.mainLoop.queue.length > 0) {
  3933. var start = Date.now();
  3934. var blocker = Browser.mainLoop.queue.shift();
  3935. blocker.func(blocker.arg);
  3936. if (Browser.mainLoop.remainingBlockers) {
  3937. var remaining = Browser.mainLoop.remainingBlockers;
  3938. var next = remaining%1 == 0 ? remaining-1 : Math.floor(remaining);
  3939. if (blocker.counted) {
  3940. Browser.mainLoop.remainingBlockers = next;
  3941. } else {
  3942. // not counted, but move the progress along a tiny bit
  3943. next = next + 0.5; // do not steal all the next one's progress
  3944. Browser.mainLoop.remainingBlockers = (8*remaining + next)/9;
  3945. }
  3946. }
  3947. console.log('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + ' ms'); //, left: ' + Browser.mainLoop.remainingBlockers);
  3948. Browser.mainLoop.updateStatus();
  3949. setTimeout(Browser.mainLoop.runner, 0);
  3950. return;
  3951. }
  3952. // catch pauses from non-main loop sources
  3953. if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;
  3954. // Implement very basic swap interval control
  3955. Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0;
  3956. if (Browser.mainLoop.timingMode == 1/*EM_TIMING_RAF*/ && Browser.mainLoop.timingValue > 1 && Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0) {
  3957. // Not the scheduled time to render this frame - skip.
  3958. Browser.mainLoop.scheduler();
  3959. return;
  3960. }
  3961. // Signal GL rendering layer that processing of a new frame is about to start. This helps it optimize
  3962. // VBO double-buffering and reduce GPU stalls.
  3963. if (Browser.mainLoop.method === 'timeout' && Module.ctx) {
  3964. Module.printErr('Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!');
  3965. Browser.mainLoop.method = ''; // just warn once per call to set main loop
  3966. }
  3967. Browser.mainLoop.runIter(function() {
  3968. if (typeof arg !== 'undefined') {
  3969. Runtime.dynCall('vi', func, [arg]);
  3970. } else {
  3971. Runtime.dynCall('v', func);
  3972. }
  3973. });
  3974. // catch pauses from the main loop itself
  3975. if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;
  3976. // Queue new audio data. This is important to be right after the main loop invocation, so that we will immediately be able
  3977. // to queue the newest produced audio samples.
  3978. // TODO: Consider adding pre- and post- rAF callbacks so that GL.newRenderingFrameStarted() and SDL.audio.queueNewAudioData()
  3979. // do not need to be hardcoded into this function, but can be more generic.
  3980. if (typeof SDL === 'object' && SDL.audio && SDL.audio.queueNewAudioData) SDL.audio.queueNewAudioData();
  3981. Browser.mainLoop.scheduler();
  3982. }
  3983. if (fps && fps > 0) _emscripten_set_main_loop_timing(0/*EM_TIMING_SETTIMEOUT*/, 1000.0 / fps);
  3984. else _emscripten_set_main_loop_timing(1/*EM_TIMING_RAF*/, 1); // Do rAF by rendering each frame (no decimating)
  3985. Browser.mainLoop.scheduler();
  3986. if (simulateInfiniteLoop) {
  3987. throw 'SimulateInfiniteLoop';
  3988. }
  3989. }var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function () {
  3990. Browser.mainLoop.scheduler = null;
  3991. Browser.mainLoop.currentlyRunningMainloop++; // Incrementing this signals the previous main loop that it's now become old, and it must return.
  3992. },resume:function () {
  3993. Browser.mainLoop.currentlyRunningMainloop++;
  3994. var timingMode = Browser.mainLoop.timingMode;
  3995. var timingValue = Browser.mainLoop.timingValue;
  3996. var func = Browser.mainLoop.func;
  3997. Browser.mainLoop.func = null;
  3998. _emscripten_set_main_loop(func, 0, false, Browser.mainLoop.arg);
  3999. _emscripten_set_main_loop_timing(timingMode, timingValue);
  4000. },updateStatus:function () {
  4001. if (Module['setStatus']) {
  4002. var message = Module['statusMessage'] || 'Please wait...';
  4003. var remaining = Browser.mainLoop.remainingBlockers;
  4004. var expected = Browser.mainLoop.expectedBlockers;
  4005. if (remaining) {
  4006. if (remaining < expected) {
  4007. Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')');
  4008. } else {
  4009. Module['setStatus'](message);
  4010. }
  4011. } else {
  4012. Module['setStatus']('');
  4013. }
  4014. }
  4015. },runIter:function (func) {
  4016. if (ABORT) return;
  4017. if (Module['preMainLoop']) {
  4018. var preRet = Module['preMainLoop']();
  4019. if (preRet === false) {
  4020. return; // |return false| skips a frame
  4021. }
  4022. }
  4023. try {
  4024. func();
  4025. } catch (e) {
  4026. if (e instanceof ExitStatus) {
  4027. return;
  4028. } else {
  4029. if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]);
  4030. throw e;
  4031. }
  4032. }
  4033. if (Module['postMainLoop']) Module['postMainLoop']();
  4034. }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () {
  4035. if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers
  4036. if (Browser.initted) return;
  4037. Browser.initted = true;
  4038. try {
  4039. new Blob();
  4040. Browser.hasBlobConstructor = true;
  4041. } catch(e) {
  4042. Browser.hasBlobConstructor = false;
  4043. console.log("warning: no blob constructor, cannot create blobs with mimetypes");
  4044. }
  4045. Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null));
  4046. Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined;
  4047. if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') {
  4048. console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");
  4049. Module.noImageDecoding = true;
  4050. }
  4051. // Support for plugins that can process preloaded files. You can add more of these to
  4052. // your app by creating and appending to Module.preloadPlugins.
  4053. //
  4054. // Each plugin is asked if it can handle a file based on the file's name. If it can,
  4055. // it is given the file's raw data. When it is done, it calls a callback with the file's
  4056. // (possibly modified) data. For example, a plugin might decompress a file, or it
  4057. // might create some side data structure for use later (like an Image element, etc.).
  4058. var imagePlugin = {};
  4059. imagePlugin['canHandle'] = function imagePlugin_canHandle(name) {
  4060. return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name);
  4061. };
  4062. imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) {
  4063. var b = null;
  4064. if (Browser.hasBlobConstructor) {
  4065. try {
  4066. b = new Blob([byteArray], { type: Browser.getMimetype(name) });
  4067. if (b.size !== byteArray.length) { // Safari bug #118630
  4068. // Safari's Blob can only take an ArrayBuffer
  4069. b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) });
  4070. }
  4071. } catch(e) {
  4072. Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder');
  4073. }
  4074. }
  4075. if (!b) {
  4076. var bb = new Browser.BlobBuilder();
  4077. bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range
  4078. b = bb.getBlob();
  4079. }
  4080. var url = Browser.URLObject.createObjectURL(b);
  4081. var img = new Image();
  4082. img.onload = function img_onload() {
  4083. assert(img.complete, 'Image ' + name + ' could not be decoded');
  4084. var canvas = document.createElement('canvas');
  4085. canvas.width = img.width;
  4086. canvas.height = img.height;
  4087. var ctx = canvas.getContext('2d');
  4088. ctx.drawImage(img, 0, 0);
  4089. Module["preloadedImages"][name] = canvas;
  4090. Browser.URLObject.revokeObjectURL(url);
  4091. if (onload) onload(byteArray);
  4092. };
  4093. img.onerror = function img_onerror(event) {
  4094. console.log('Image ' + url + ' could not be decoded');
  4095. if (onerror) onerror();
  4096. };
  4097. img.src = url;
  4098. };
  4099. Module['preloadPlugins'].push(imagePlugin);
  4100. var audioPlugin = {};
  4101. audioPlugin['canHandle'] = function audioPlugin_canHandle(name) {
  4102. return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 };
  4103. };
  4104. audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) {
  4105. var done = false;
  4106. function finish(audio) {
  4107. if (done) return;
  4108. done = true;
  4109. Module["preloadedAudios"][name] = audio;
  4110. if (onload) onload(byteArray);
  4111. }
  4112. function fail() {
  4113. if (done) return;
  4114. done = true;
  4115. Module["preloadedAudios"][name] = new Audio(); // empty shim
  4116. if (onerror) onerror();
  4117. }
  4118. if (Browser.hasBlobConstructor) {
  4119. try {
  4120. var b = new Blob([byteArray], { type: Browser.getMimetype(name) });
  4121. } catch(e) {
  4122. return fail();
  4123. }
  4124. var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this!
  4125. var audio = new Audio();
  4126. audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926
  4127. audio.onerror = function audio_onerror(event) {
  4128. if (done) return;
  4129. console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach');
  4130. function encode64(data) {
  4131. var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
  4132. var PAD = '=';
  4133. var ret = '';
  4134. var leftchar = 0;
  4135. var leftbits = 0;
  4136. for (var i = 0; i < data.length; i++) {
  4137. leftchar = (leftchar << 8) | data[i];
  4138. leftbits += 8;
  4139. while (leftbits >= 6) {
  4140. var curr = (leftchar >> (leftbits-6)) & 0x3f;
  4141. leftbits -= 6;
  4142. ret += BASE[curr];
  4143. }
  4144. }
  4145. if (leftbits == 2) {
  4146. ret += BASE[(leftchar&3) << 4];
  4147. ret += PAD + PAD;
  4148. } else if (leftbits == 4) {
  4149. ret += BASE[(leftchar&0xf) << 2];
  4150. ret += PAD;
  4151. }
  4152. return ret;
  4153. }
  4154. audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray);
  4155. finish(audio); // we don't wait for confirmation this worked - but it's worth trying
  4156. };
  4157. audio.src = url;
  4158. // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror
  4159. Browser.safeSetTimeout(function() {
  4160. finish(audio); // try to use it even though it is not necessarily ready to play
  4161. }, 10000);
  4162. } else {
  4163. return fail();
  4164. }
  4165. };
  4166. Module['preloadPlugins'].push(audioPlugin);
  4167. // Canvas event setup
  4168. var canvas = Module['canvas'];
  4169. function pointerLockChange() {
  4170. Browser.pointerLock = document['pointerLockElement'] === canvas ||
  4171. document['mozPointerLockElement'] === canvas ||
  4172. document['webkitPointerLockElement'] === canvas ||
  4173. document['msPointerLockElement'] === canvas;
  4174. }
  4175. if (canvas) {
  4176. // forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module
  4177. // Module['forcedAspectRatio'] = 4 / 3;
  4178. canvas.requestPointerLock = canvas['requestPointerLock'] ||
  4179. canvas['mozRequestPointerLock'] ||
  4180. canvas['webkitRequestPointerLock'] ||
  4181. canvas['msRequestPointerLock'] ||
  4182. function(){};
  4183. canvas.exitPointerLock = document['exitPointerLock'] ||
  4184. document['mozExitPointerLock'] ||
  4185. document['webkitExitPointerLock'] ||
  4186. document['msExitPointerLock'] ||
  4187. function(){}; // no-op if function does not exist
  4188. canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
  4189. document.addEventListener('pointerlockchange', pointerLockChange, false);
  4190. document.addEventListener('mozpointerlockchange', pointerLockChange, false);
  4191. document.addEventListener('webkitpointerlockchange', pointerLockChange, false);
  4192. document.addEventListener('mspointerlockchange', pointerLockChange, false);
  4193. if (Module['elementPointerLock']) {
  4194. canvas.addEventListener("click", function(ev) {
  4195. if (!Browser.pointerLock && canvas.requestPointerLock) {
  4196. canvas.requestPointerLock();
  4197. ev.preventDefault();
  4198. }
  4199. }, false);
  4200. }
  4201. }
  4202. },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) {
  4203. if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx; // no need to recreate GL context if it's already been created for this canvas.
  4204. var ctx;
  4205. var contextHandle;
  4206. if (useWebGL) {
  4207. // For GLES2/desktop GL compatibility, adjust a few defaults to be different to WebGL defaults, so that they align better with the desktop defaults.
  4208. var contextAttributes = {
  4209. antialias: false,
  4210. alpha: false
  4211. };
  4212. if (webGLContextAttributes) {
  4213. for (var attribute in webGLContextAttributes) {
  4214. contextAttributes[attribute] = webGLContextAttributes[attribute];
  4215. }
  4216. }
  4217. contextHandle = GL.createContext(canvas, contextAttributes);
  4218. if (contextHandle) {
  4219. ctx = GL.getContext(contextHandle).GLctx;
  4220. }
  4221. // Set the background of the WebGL canvas to black
  4222. canvas.style.backgroundColor = "black";
  4223. } else {
  4224. ctx = canvas.getContext('2d');
  4225. }
  4226. if (!ctx) return null;
  4227. if (setInModule) {
  4228. if (!useWebGL) assert(typeof GLctx === 'undefined', 'cannot set in module if GLctx is used, but we are a non-GL context that would replace it');
  4229. Module.ctx = ctx;
  4230. if (useWebGL) GL.makeContextCurrent(contextHandle);
  4231. Module.useWebGL = useWebGL;
  4232. Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() });
  4233. Browser.init();
  4234. }
  4235. return ctx;
  4236. },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) {
  4237. Browser.lockPointer = lockPointer;
  4238. Browser.resizeCanvas = resizeCanvas;
  4239. if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true;
  4240. if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false;
  4241. var canvas = Module['canvas'];
  4242. function fullScreenChange() {
  4243. Browser.isFullScreen = false;
  4244. var canvasContainer = canvas.parentNode;
  4245. if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] ||
  4246. document['mozFullScreenElement'] || document['mozFullscreenElement'] ||
  4247. document['fullScreenElement'] || document['fullscreenElement'] ||
  4248. document['msFullScreenElement'] || document['msFullscreenElement'] ||
  4249. document['webkitCurrentFullScreenElement']) === canvasContainer) {
  4250. canvas.cancelFullScreen = document['cancelFullScreen'] ||
  4251. document['mozCancelFullScreen'] ||
  4252. document['webkitCancelFullScreen'] ||
  4253. document['msExitFullscreen'] ||
  4254. document['exitFullscreen'] ||
  4255. function() {};
  4256. canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document);
  4257. if (Browser.lockPointer) canvas.requestPointerLock();
  4258. Browser.isFullScreen = true;
  4259. if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize();
  4260. } else {
  4261. // remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen
  4262. canvasContainer.parentNode.insertBefore(canvas, canvasContainer);
  4263. canvasContainer.parentNode.removeChild(canvasContainer);
  4264. if (Browser.resizeCanvas) Browser.setWindowedCanvasSize();
  4265. }
  4266. if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen);
  4267. Browser.updateCanvasDimensions(canvas);
  4268. }
  4269. if (!Browser.fullScreenHandlersInstalled) {
  4270. Browser.fullScreenHandlersInstalled = true;
  4271. document.addEventListener('fullscreenchange', fullScreenChange, false);
  4272. document.addEventListener('mozfullscreenchange', fullScreenChange, false);
  4273. document.addEventListener('webkitfullscreenchange', fullScreenChange, false);
  4274. document.addEventListener('MSFullscreenChange', fullScreenChange, false);
  4275. }
  4276. // create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root
  4277. var canvasContainer = document.createElement("div");
  4278. canvas.parentNode.insertBefore(canvasContainer, canvas);
  4279. canvasContainer.appendChild(canvas);
  4280. // use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size)
  4281. canvasContainer.requestFullScreen = canvasContainer['requestFullScreen'] ||
  4282. canvasContainer['mozRequestFullScreen'] ||
  4283. canvasContainer['msRequestFullscreen'] ||
  4284. (canvasContainer['webkitRequestFullScreen'] ? function() { canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null);
  4285. canvasContainer.requestFullScreen();
  4286. },nextRAF:0,fakeRequestAnimationFrame:function (func) {
  4287. // try to keep 60fps between calls to here
  4288. var now = Date.now();
  4289. if (Browser.nextRAF === 0) {
  4290. Browser.nextRAF = now + 1000/60;
  4291. } else {
  4292. while (now + 2 >= Browser.nextRAF) { // fudge a little, to avoid timer jitter causing us to do lots of delay:0
  4293. Browser.nextRAF += 1000/60;
  4294. }
  4295. }
  4296. var delay = Math.max(Browser.nextRAF - now, 0);
  4297. setTimeout(func, delay);
  4298. },requestAnimationFrame:function requestAnimationFrame(func) {
  4299. if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js)
  4300. Browser.fakeRequestAnimationFrame(func);
  4301. } else {
  4302. if (!window.requestAnimationFrame) {
  4303. window.requestAnimationFrame = window['requestAnimationFrame'] ||
  4304. window['mozRequestAnimationFrame'] ||
  4305. window['webkitRequestAnimationFrame'] ||
  4306. window['msRequestAnimationFrame'] ||
  4307. window['oRequestAnimationFrame'] ||
  4308. Browser.fakeRequestAnimationFrame;
  4309. }
  4310. window.requestAnimationFrame(func);
  4311. }
  4312. },safeCallback:function (func) {
  4313. return function() {
  4314. if (!ABORT) return func.apply(null, arguments);
  4315. };
  4316. },safeRequestAnimationFrame:function (func) {
  4317. return Browser.requestAnimationFrame(function() {
  4318. if (!ABORT) func();
  4319. });
  4320. },safeSetTimeout:function (func, timeout) {
  4321. Module['noExitRuntime'] = true;
  4322. return setTimeout(function() {
  4323. if (!ABORT) func();
  4324. }, timeout);
  4325. },safeSetInterval:function (func, timeout) {
  4326. Module['noExitRuntime'] = true;
  4327. return setInterval(function() {
  4328. if (!ABORT) func();
  4329. }, timeout);
  4330. },getMimetype:function (name) {
  4331. return {
  4332. 'jpg': 'image/jpeg',
  4333. 'jpeg': 'image/jpeg',
  4334. 'png': 'image/png',
  4335. 'bmp': 'image/bmp',
  4336. 'ogg': 'audio/ogg',
  4337. 'wav': 'audio/wav',
  4338. 'mp3': 'audio/mpeg'
  4339. }[name.substr(name.lastIndexOf('.')+1)];
  4340. },getUserMedia:function (func) {
  4341. if(!window.getUserMedia) {
  4342. window.getUserMedia = navigator['getUserMedia'] ||
  4343. navigator['mozGetUserMedia'];
  4344. }
  4345. window.getUserMedia(func);
  4346. },getMovementX:function (event) {
  4347. return event['movementX'] ||
  4348. event['mozMovementX'] ||
  4349. event['webkitMovementX'] ||
  4350. 0;
  4351. },getMovementY:function (event) {
  4352. return event['movementY'] ||
  4353. event['mozMovementY'] ||
  4354. event['webkitMovementY'] ||
  4355. 0;
  4356. },getMouseWheelDelta:function (event) {
  4357. var delta = 0;
  4358. switch (event.type) {
  4359. case 'DOMMouseScroll':
  4360. delta = event.detail;
  4361. break;
  4362. case 'mousewheel':
  4363. delta = event.wheelDelta;
  4364. break;
  4365. case 'wheel':
  4366. delta = event['deltaY'];
  4367. break;
  4368. default:
  4369. throw 'unrecognized mouse wheel event: ' + event.type;
  4370. }
  4371. return delta;
  4372. },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup
  4373. if (Browser.pointerLock) {
  4374. // When the pointer is locked, calculate the coordinates
  4375. // based on the movement of the mouse.
  4376. // Workaround for Firefox bug 764498
  4377. if (event.type != 'mousemove' &&
  4378. ('mozMovementX' in event)) {
  4379. Browser.mouseMovementX = Browser.mouseMovementY = 0;
  4380. } else {
  4381. Browser.mouseMovementX = Browser.getMovementX(event);
  4382. Browser.mouseMovementY = Browser.getMovementY(event);
  4383. }
  4384. // check if SDL is available
  4385. if (typeof SDL != "undefined") {
  4386. Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;
  4387. Browser.mouseY = SDL.mouseY + Browser.mouseMovementY;
  4388. } else {
  4389. // just add the mouse delta to the current absolut mouse position
  4390. // FIXME: ideally this should be clamped against the canvas size and zero
  4391. Browser.mouseX += Browser.mouseMovementX;
  4392. Browser.mouseY += Browser.mouseMovementY;
  4393. }
  4394. } else {
  4395. // Otherwise, calculate the movement based on the changes
  4396. // in the coordinates.
  4397. var rect = Module["canvas"].getBoundingClientRect();
  4398. var cw = Module["canvas"].width;
  4399. var ch = Module["canvas"].height;
  4400. // Neither .scrollX or .pageXOffset are defined in a spec, but
  4401. // we prefer .scrollX because it is currently in a spec draft.
  4402. // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/)
  4403. var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset);
  4404. var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset);
  4405. if (event.type === 'touchstart' || event.type === 'touchend' || event.type === 'touchmove') {
  4406. var touch = event.touch;
  4407. if (touch === undefined) {
  4408. return; // the "touch" property is only defined in SDL
  4409. }
  4410. var adjustedX = touch.pageX - (scrollX + rect.left);
  4411. var adjustedY = touch.pageY - (scrollY + rect.top);
  4412. adjustedX = adjustedX * (cw / rect.width);
  4413. adjustedY = adjustedY * (ch / rect.height);
  4414. var coords = { x: adjustedX, y: adjustedY };
  4415. if (event.type === 'touchstart') {
  4416. Browser.lastTouches[touch.identifier] = coords;
  4417. Browser.touches[touch.identifier] = coords;
  4418. } else if (event.type === 'touchend' || event.type === 'touchmove') {
  4419. Browser.lastTouches[touch.identifier] = Browser.touches[touch.identifier];
  4420. Browser.touches[touch.identifier] = { x: adjustedX, y: adjustedY };
  4421. }
  4422. return;
  4423. }
  4424. var x = event.pageX - (scrollX + rect.left);
  4425. var y = event.pageY - (scrollY + rect.top);
  4426. // the canvas might be CSS-scaled compared to its backbuffer;
  4427. // SDL-using content will want mouse coordinates in terms
  4428. // of backbuffer units.
  4429. x = x * (cw / rect.width);
  4430. y = y * (ch / rect.height);
  4431. Browser.mouseMovementX = x - Browser.mouseX;
  4432. Browser.mouseMovementY = y - Browser.mouseY;
  4433. Browser.mouseX = x;
  4434. Browser.mouseY = y;
  4435. }
  4436. },xhrLoad:function (url, onload, onerror) {
  4437. var xhr = new XMLHttpRequest();
  4438. xhr.open('GET', url, true);
  4439. xhr.responseType = 'arraybuffer';
  4440. xhr.onload = function xhr_onload() {
  4441. if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
  4442. onload(xhr.response);
  4443. } else {
  4444. onerror();
  4445. }
  4446. };
  4447. xhr.onerror = onerror;
  4448. xhr.send(null);
  4449. },asyncLoad:function (url, onload, onerror, noRunDep) {
  4450. Browser.xhrLoad(url, function(arrayBuffer) {
  4451. assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).');
  4452. onload(new Uint8Array(arrayBuffer));
  4453. if (!noRunDep) removeRunDependency('al ' + url);
  4454. }, function(event) {
  4455. if (onerror) {
  4456. onerror();
  4457. } else {
  4458. throw 'Loading data file "' + url + '" failed.';
  4459. }
  4460. });
  4461. if (!noRunDep) addRunDependency('al ' + url);
  4462. },resizeListeners:[],updateResizeListeners:function () {
  4463. var canvas = Module['canvas'];
  4464. Browser.resizeListeners.forEach(function(listener) {
  4465. listener(canvas.width, canvas.height);
  4466. });
  4467. },setCanvasSize:function (width, height, noUpdates) {
  4468. var canvas = Module['canvas'];
  4469. Browser.updateCanvasDimensions(canvas, width, height);
  4470. if (!noUpdates) Browser.updateResizeListeners();
  4471. },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () {
  4472. // check if SDL is available
  4473. if (typeof SDL != "undefined") {
  4474. var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
  4475. flags = flags | 0x00800000; // set SDL_FULLSCREEN flag
  4476. HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
  4477. }
  4478. Browser.updateResizeListeners();
  4479. },setWindowedCanvasSize:function () {
  4480. // check if SDL is available
  4481. if (typeof SDL != "undefined") {
  4482. var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
  4483. flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag
  4484. HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
  4485. }
  4486. Browser.updateResizeListeners();
  4487. },updateCanvasDimensions:function (canvas, wNative, hNative) {
  4488. if (wNative && hNative) {
  4489. canvas.widthNative = wNative;
  4490. canvas.heightNative = hNative;
  4491. } else {
  4492. wNative = canvas.widthNative;
  4493. hNative = canvas.heightNative;
  4494. }
  4495. var w = wNative;
  4496. var h = hNative;
  4497. if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) {
  4498. if (w/h < Module['forcedAspectRatio']) {
  4499. w = Math.round(h * Module['forcedAspectRatio']);
  4500. } else {
  4501. h = Math.round(w / Module['forcedAspectRatio']);
  4502. }
  4503. }
  4504. if (((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] ||
  4505. document['mozFullScreenElement'] || document['mozFullscreenElement'] ||
  4506. document['fullScreenElement'] || document['fullscreenElement'] ||
  4507. document['msFullScreenElement'] || document['msFullscreenElement'] ||
  4508. document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) {
  4509. var factor = Math.min(screen.width / w, screen.height / h);
  4510. w = Math.round(w * factor);
  4511. h = Math.round(h * factor);
  4512. }
  4513. if (Browser.resizeCanvas) {
  4514. if (canvas.width != w) canvas.width = w;
  4515. if (canvas.height != h) canvas.height = h;
  4516. if (typeof canvas.style != 'undefined') {
  4517. canvas.style.removeProperty( "width");
  4518. canvas.style.removeProperty("height");
  4519. }
  4520. } else {
  4521. if (canvas.width != wNative) canvas.width = wNative;
  4522. if (canvas.height != hNative) canvas.height = hNative;
  4523. if (typeof canvas.style != 'undefined') {
  4524. if (w != wNative || h != hNative) {
  4525. canvas.style.setProperty( "width", w + "px", "important");
  4526. canvas.style.setProperty("height", h + "px", "important");
  4527. } else {
  4528. canvas.style.removeProperty( "width");
  4529. canvas.style.removeProperty("height");
  4530. }
  4531. }
  4532. }
  4533. },wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function () {
  4534. var handle = Browser.nextWgetRequestHandle;
  4535. Browser.nextWgetRequestHandle++;
  4536. return handle;
  4537. }};
  4538. function _time(ptr) {
  4539. var ret = (Date.now()/1000)|0;
  4540. if (ptr) {
  4541. HEAP32[((ptr)>>2)]=ret;
  4542. }
  4543. return ret;
  4544. }
  4545. ___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0;
  4546. Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) };
  4547. Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) };
  4548. Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) };
  4549. Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() };
  4550. Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() };
  4551. Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() }
  4552. FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice;
  4553. __ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor();
  4554. if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); }
  4555. STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
  4556. staticSealed = true; // seal the static portion of memory
  4557. STACK_MAX = STACK_BASE + TOTAL_STACK;
  4558. DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
  4559. assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack");
  4560. var ctlz_i8 = allocate([8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_DYNAMIC);
  4561. var cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_DYNAMIC);
  4562. Module.asmGlobalArg = { "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array };
  4563. Module.asmLibraryArg = { "abort": abort, "assert": assert, "min": Math_min, "_fflush": _fflush, "_sysconf": _sysconf, "_abort": _abort, "___setErrNo": ___setErrNo, "_sbrk": _sbrk, "_time": _time, "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_emscripten_set_main_loop": _emscripten_set_main_loop, "___errno_location": ___errno_location, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "cttz_i8": cttz_i8, "ctlz_i8": ctlz_i8, "NaN": NaN, "Infinity": Infinity };
  4564. // EMSCRIPTEN_START_ASM
  4565. var asm = (function(global, env, buffer) {
  4566. 'use asm';
  4567. var HEAP8 = new global.Int8Array(buffer);
  4568. var HEAP16 = new global.Int16Array(buffer);
  4569. var HEAP32 = new global.Int32Array(buffer);
  4570. var HEAPU8 = new global.Uint8Array(buffer);
  4571. var HEAPU16 = new global.Uint16Array(buffer);
  4572. var HEAPU32 = new global.Uint32Array(buffer);
  4573. var HEAPF32 = new global.Float32Array(buffer);
  4574. var HEAPF64 = new global.Float64Array(buffer);
  4575. var STACKTOP=env.STACKTOP|0;
  4576. var STACK_MAX=env.STACK_MAX|0;
  4577. var tempDoublePtr=env.tempDoublePtr|0;
  4578. var ABORT=env.ABORT|0;
  4579. var cttz_i8=env.cttz_i8|0;
  4580. var ctlz_i8=env.ctlz_i8|0;
  4581. var __THREW__ = 0;
  4582. var threwValue = 0;
  4583. var setjmpId = 0;
  4584. var undef = 0;
  4585. var nan = +env.NaN, inf = +env.Infinity;
  4586. var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0;
  4587. var tempRet0 = 0;
  4588. var tempRet1 = 0;
  4589. var tempRet2 = 0;
  4590. var tempRet3 = 0;
  4591. var tempRet4 = 0;
  4592. var tempRet5 = 0;
  4593. var tempRet6 = 0;
  4594. var tempRet7 = 0;
  4595. var tempRet8 = 0;
  4596. var tempRet9 = 0;
  4597. var Math_floor=global.Math.floor;
  4598. var Math_abs=global.Math.abs;
  4599. var Math_sqrt=global.Math.sqrt;
  4600. var Math_pow=global.Math.pow;
  4601. var Math_cos=global.Math.cos;
  4602. var Math_sin=global.Math.sin;
  4603. var Math_tan=global.Math.tan;
  4604. var Math_acos=global.Math.acos;
  4605. var Math_asin=global.Math.asin;
  4606. var Math_atan=global.Math.atan;
  4607. var Math_atan2=global.Math.atan2;
  4608. var Math_exp=global.Math.exp;
  4609. var Math_log=global.Math.log;
  4610. var Math_ceil=global.Math.ceil;
  4611. var Math_imul=global.Math.imul;
  4612. var abort=env.abort;
  4613. var assert=env.assert;
  4614. var Math_min=env.min;
  4615. var _fflush=env._fflush;
  4616. var _sysconf=env._sysconf;
  4617. var _abort=env._abort;
  4618. var ___setErrNo=env.___setErrNo;
  4619. var _sbrk=env._sbrk;
  4620. var _time=env._time;
  4621. var _emscripten_set_main_loop_timing=env._emscripten_set_main_loop_timing;
  4622. var _emscripten_memcpy_big=env._emscripten_memcpy_big;
  4623. var _emscripten_set_main_loop=env._emscripten_set_main_loop;
  4624. var ___errno_location=env.___errno_location;
  4625. var tempFloat = 0.0;
  4626. // EMSCRIPTEN_START_FUNCS
  4627. function stackAlloc(size) {
  4628. size = size|0;
  4629. var ret = 0;
  4630. ret = STACKTOP;
  4631. STACKTOP = (STACKTOP + size)|0;
  4632. STACKTOP = (STACKTOP + 15)&-16;
  4633. return ret|0;
  4634. }
  4635. function stackSave() {
  4636. return STACKTOP|0;
  4637. }
  4638. function stackRestore(top) {
  4639. top = top|0;
  4640. STACKTOP = top;
  4641. }
  4642. function setThrew(threw, value) {
  4643. threw = threw|0;
  4644. value = value|0;
  4645. if ((__THREW__|0) == 0) {
  4646. __THREW__ = threw;
  4647. threwValue = value;
  4648. }
  4649. }
  4650. function copyTempFloat(ptr) {
  4651. ptr = ptr|0;
  4652. HEAP8[tempDoublePtr>>0] = HEAP8[ptr>>0];
  4653. HEAP8[tempDoublePtr+1>>0] = HEAP8[ptr+1>>0];
  4654. HEAP8[tempDoublePtr+2>>0] = HEAP8[ptr+2>>0];
  4655. HEAP8[tempDoublePtr+3>>0] = HEAP8[ptr+3>>0];
  4656. }
  4657. function copyTempDouble(ptr) {
  4658. ptr = ptr|0;
  4659. HEAP8[tempDoublePtr>>0] = HEAP8[ptr>>0];
  4660. HEAP8[tempDoublePtr+1>>0] = HEAP8[ptr+1>>0];
  4661. HEAP8[tempDoublePtr+2>>0] = HEAP8[ptr+2>>0];
  4662. HEAP8[tempDoublePtr+3>>0] = HEAP8[ptr+3>>0];
  4663. HEAP8[tempDoublePtr+4>>0] = HEAP8[ptr+4>>0];
  4664. HEAP8[tempDoublePtr+5>>0] = HEAP8[ptr+5>>0];
  4665. HEAP8[tempDoublePtr+6>>0] = HEAP8[ptr+6>>0];
  4666. HEAP8[tempDoublePtr+7>>0] = HEAP8[ptr+7>>0];
  4667. }
  4668. function setTempRet0(value) {
  4669. value = value|0;
  4670. tempRet0 = value;
  4671. }
  4672. function getTempRet0() {
  4673. return tempRet0|0;
  4674. }
  4675. function _crypto_verify_32_ref($x,$y) {
  4676. $x = $x|0;
  4677. $y = $y|0;
  4678. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0;
  4679. var $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0;
  4680. var $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0;
  4681. var $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0;
  4682. var $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0;
  4683. var $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0;
  4684. var $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0;
  4685. var $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0;
  4686. var $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0;
  4687. var $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
  4688. sp = STACKTOP;
  4689. $0 = HEAP8[$x>>0]|0;
  4690. $1 = HEAP8[$y>>0]|0;
  4691. $2 = $1 ^ $0;
  4692. $3 = (($x) + 1|0);
  4693. $4 = HEAP8[$3>>0]|0;
  4694. $5 = (($y) + 1|0);
  4695. $6 = HEAP8[$5>>0]|0;
  4696. $7 = $6 ^ $4;
  4697. $8 = $7 | $2;
  4698. $9 = (($x) + 2|0);
  4699. $10 = HEAP8[$9>>0]|0;
  4700. $11 = (($y) + 2|0);
  4701. $12 = HEAP8[$11>>0]|0;
  4702. $13 = $12 ^ $10;
  4703. $14 = $8 | $13;
  4704. $15 = (($x) + 3|0);
  4705. $16 = HEAP8[$15>>0]|0;
  4706. $17 = (($y) + 3|0);
  4707. $18 = HEAP8[$17>>0]|0;
  4708. $19 = $18 ^ $16;
  4709. $20 = $14 | $19;
  4710. $21 = (($x) + 4|0);
  4711. $22 = HEAP8[$21>>0]|0;
  4712. $23 = (($y) + 4|0);
  4713. $24 = HEAP8[$23>>0]|0;
  4714. $25 = $24 ^ $22;
  4715. $26 = $20 | $25;
  4716. $27 = (($x) + 5|0);
  4717. $28 = HEAP8[$27>>0]|0;
  4718. $29 = (($y) + 5|0);
  4719. $30 = HEAP8[$29>>0]|0;
  4720. $31 = $30 ^ $28;
  4721. $32 = $26 | $31;
  4722. $33 = (($x) + 6|0);
  4723. $34 = HEAP8[$33>>0]|0;
  4724. $35 = (($y) + 6|0);
  4725. $36 = HEAP8[$35>>0]|0;
  4726. $37 = $36 ^ $34;
  4727. $38 = $32 | $37;
  4728. $39 = (($x) + 7|0);
  4729. $40 = HEAP8[$39>>0]|0;
  4730. $41 = (($y) + 7|0);
  4731. $42 = HEAP8[$41>>0]|0;
  4732. $43 = $42 ^ $40;
  4733. $44 = $38 | $43;
  4734. $45 = (($x) + 8|0);
  4735. $46 = HEAP8[$45>>0]|0;
  4736. $47 = (($y) + 8|0);
  4737. $48 = HEAP8[$47>>0]|0;
  4738. $49 = $48 ^ $46;
  4739. $50 = $44 | $49;
  4740. $51 = (($x) + 9|0);
  4741. $52 = HEAP8[$51>>0]|0;
  4742. $53 = (($y) + 9|0);
  4743. $54 = HEAP8[$53>>0]|0;
  4744. $55 = $54 ^ $52;
  4745. $56 = $50 | $55;
  4746. $57 = (($x) + 10|0);
  4747. $58 = HEAP8[$57>>0]|0;
  4748. $59 = (($y) + 10|0);
  4749. $60 = HEAP8[$59>>0]|0;
  4750. $61 = $60 ^ $58;
  4751. $62 = $56 | $61;
  4752. $63 = (($x) + 11|0);
  4753. $64 = HEAP8[$63>>0]|0;
  4754. $65 = (($y) + 11|0);
  4755. $66 = HEAP8[$65>>0]|0;
  4756. $67 = $66 ^ $64;
  4757. $68 = $62 | $67;
  4758. $69 = (($x) + 12|0);
  4759. $70 = HEAP8[$69>>0]|0;
  4760. $71 = (($y) + 12|0);
  4761. $72 = HEAP8[$71>>0]|0;
  4762. $73 = $72 ^ $70;
  4763. $74 = $68 | $73;
  4764. $75 = (($x) + 13|0);
  4765. $76 = HEAP8[$75>>0]|0;
  4766. $77 = (($y) + 13|0);
  4767. $78 = HEAP8[$77>>0]|0;
  4768. $79 = $78 ^ $76;
  4769. $80 = $74 | $79;
  4770. $81 = (($x) + 14|0);
  4771. $82 = HEAP8[$81>>0]|0;
  4772. $83 = (($y) + 14|0);
  4773. $84 = HEAP8[$83>>0]|0;
  4774. $85 = $84 ^ $82;
  4775. $86 = $80 | $85;
  4776. $87 = (($x) + 15|0);
  4777. $88 = HEAP8[$87>>0]|0;
  4778. $89 = (($y) + 15|0);
  4779. $90 = HEAP8[$89>>0]|0;
  4780. $91 = $90 ^ $88;
  4781. $92 = $86 | $91;
  4782. $93 = (($x) + 16|0);
  4783. $94 = HEAP8[$93>>0]|0;
  4784. $95 = (($y) + 16|0);
  4785. $96 = HEAP8[$95>>0]|0;
  4786. $97 = $96 ^ $94;
  4787. $98 = $92 | $97;
  4788. $99 = (($x) + 17|0);
  4789. $100 = HEAP8[$99>>0]|0;
  4790. $101 = (($y) + 17|0);
  4791. $102 = HEAP8[$101>>0]|0;
  4792. $103 = $102 ^ $100;
  4793. $104 = $98 | $103;
  4794. $105 = (($x) + 18|0);
  4795. $106 = HEAP8[$105>>0]|0;
  4796. $107 = (($y) + 18|0);
  4797. $108 = HEAP8[$107>>0]|0;
  4798. $109 = $108 ^ $106;
  4799. $110 = $104 | $109;
  4800. $111 = (($x) + 19|0);
  4801. $112 = HEAP8[$111>>0]|0;
  4802. $113 = (($y) + 19|0);
  4803. $114 = HEAP8[$113>>0]|0;
  4804. $115 = $114 ^ $112;
  4805. $116 = $110 | $115;
  4806. $117 = (($x) + 20|0);
  4807. $118 = HEAP8[$117>>0]|0;
  4808. $119 = (($y) + 20|0);
  4809. $120 = HEAP8[$119>>0]|0;
  4810. $121 = $120 ^ $118;
  4811. $122 = $116 | $121;
  4812. $123 = (($x) + 21|0);
  4813. $124 = HEAP8[$123>>0]|0;
  4814. $125 = (($y) + 21|0);
  4815. $126 = HEAP8[$125>>0]|0;
  4816. $127 = $126 ^ $124;
  4817. $128 = $122 | $127;
  4818. $129 = (($x) + 22|0);
  4819. $130 = HEAP8[$129>>0]|0;
  4820. $131 = (($y) + 22|0);
  4821. $132 = HEAP8[$131>>0]|0;
  4822. $133 = $132 ^ $130;
  4823. $134 = $128 | $133;
  4824. $135 = (($x) + 23|0);
  4825. $136 = HEAP8[$135>>0]|0;
  4826. $137 = (($y) + 23|0);
  4827. $138 = HEAP8[$137>>0]|0;
  4828. $139 = $138 ^ $136;
  4829. $140 = $134 | $139;
  4830. $141 = (($x) + 24|0);
  4831. $142 = HEAP8[$141>>0]|0;
  4832. $143 = (($y) + 24|0);
  4833. $144 = HEAP8[$143>>0]|0;
  4834. $145 = $144 ^ $142;
  4835. $146 = $140 | $145;
  4836. $147 = (($x) + 25|0);
  4837. $148 = HEAP8[$147>>0]|0;
  4838. $149 = (($y) + 25|0);
  4839. $150 = HEAP8[$149>>0]|0;
  4840. $151 = $150 ^ $148;
  4841. $152 = $146 | $151;
  4842. $153 = (($x) + 26|0);
  4843. $154 = HEAP8[$153>>0]|0;
  4844. $155 = (($y) + 26|0);
  4845. $156 = HEAP8[$155>>0]|0;
  4846. $157 = $156 ^ $154;
  4847. $158 = $152 | $157;
  4848. $159 = (($x) + 27|0);
  4849. $160 = HEAP8[$159>>0]|0;
  4850. $161 = (($y) + 27|0);
  4851. $162 = HEAP8[$161>>0]|0;
  4852. $163 = $162 ^ $160;
  4853. $164 = $158 | $163;
  4854. $165 = (($x) + 28|0);
  4855. $166 = HEAP8[$165>>0]|0;
  4856. $167 = (($y) + 28|0);
  4857. $168 = HEAP8[$167>>0]|0;
  4858. $169 = $168 ^ $166;
  4859. $170 = $164 | $169;
  4860. $171 = (($x) + 29|0);
  4861. $172 = HEAP8[$171>>0]|0;
  4862. $173 = (($y) + 29|0);
  4863. $174 = HEAP8[$173>>0]|0;
  4864. $175 = $174 ^ $172;
  4865. $176 = $170 | $175;
  4866. $177 = (($x) + 30|0);
  4867. $178 = HEAP8[$177>>0]|0;
  4868. $179 = (($y) + 30|0);
  4869. $180 = HEAP8[$179>>0]|0;
  4870. $181 = $180 ^ $178;
  4871. $182 = $176 | $181;
  4872. $183 = (($x) + 31|0);
  4873. $184 = HEAP8[$183>>0]|0;
  4874. $185 = (($y) + 31|0);
  4875. $186 = HEAP8[$185>>0]|0;
  4876. $187 = $186 ^ $184;
  4877. $188 = $182 | $187;
  4878. $189 = $188&255;
  4879. $190 = (($189) + 511)|0;
  4880. $191 = $190 >>> 8;
  4881. $192 = $191 & 1;
  4882. $193 = (($192) + -1)|0;
  4883. STACKTOP = sp;return ($193|0);
  4884. }
  4885. function _curve25519_sign($signature_out,$curve25519_privkey,$msg,$msg_len) {
  4886. $signature_out = $signature_out|0;
  4887. $curve25519_privkey = $curve25519_privkey|0;
  4888. $msg = $msg|0;
  4889. $msg_len = $msg_len|0;
  4890. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $ed_keypair = 0, $ed_pubkey_point = 0, $sigbuf_out_len = 0, dest = 0;
  4891. var label = 0, sp = 0, src = 0, stop = 0;
  4892. sp = STACKTOP;
  4893. STACKTOP = STACKTOP + 240|0;
  4894. $ed_pubkey_point = sp + 8|0;
  4895. $ed_keypair = sp + 168|0;
  4896. $sigbuf_out_len = sp;
  4897. $0 = (($msg_len) + 64)|0;
  4898. $1 = STACKTOP; STACKTOP = STACKTOP + ((((1*$0)|0)+15)&-16)|0;;
  4899. $2 = $sigbuf_out_len;
  4900. $3 = $2;
  4901. HEAP32[$3>>2] = 0;
  4902. $4 = (($2) + 4)|0;
  4903. $5 = $4;
  4904. HEAP32[$5>>2] = 0;
  4905. dest=$ed_keypair+0|0; src=$curve25519_privkey+0|0; stop=dest+32|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
  4906. _crypto_sign_ed25519_ref10_ge_scalarmult_base($ed_pubkey_point,$curve25519_privkey);
  4907. $6 = (($ed_keypair) + 32|0);
  4908. _crypto_sign_ed25519_ref10_ge_p3_tobytes($6,$ed_pubkey_point);
  4909. $7 = (($ed_keypair) + 63|0);
  4910. $8 = HEAP8[$7>>0]|0;
  4911. $9 = $8&255;
  4912. $10 = $9 & 128;
  4913. (_crypto_sign_modified($1,$sigbuf_out_len,$msg,$msg_len,0,$ed_keypair)|0);
  4914. dest=$signature_out+0|0; src=$1+0|0; stop=dest+64|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
  4915. $11 = (($signature_out) + 63|0);
  4916. $12 = HEAP8[$11>>0]|0;
  4917. $13 = $12&255;
  4918. $14 = $13 | $10;
  4919. $15 = $14&255;
  4920. HEAP8[$11>>0] = $15;
  4921. STACKTOP = sp;return;
  4922. }
  4923. function _curve25519_verify($signature,$curve25519_pubkey,$msg,$msg_len) {
  4924. $signature = $signature|0;
  4925. $curve25519_pubkey = $curve25519_pubkey|0;
  4926. $msg = $msg|0;
  4927. $msg_len = $msg_len|0;
  4928. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $ed_pubkey = 0, $ed_y = 0;
  4929. var $inv_mont_x_plus_one = 0, $mont_x = 0, $mont_x_minus_one = 0, $mont_x_plus_one = 0, $one = 0, $some_retval = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  4930. sp = STACKTOP;
  4931. STACKTOP = STACKTOP + 288|0;
  4932. $mont_x = sp + 208|0;
  4933. $mont_x_minus_one = sp + 168|0;
  4934. $mont_x_plus_one = sp + 128|0;
  4935. $inv_mont_x_plus_one = sp + 88|0;
  4936. $one = sp + 48|0;
  4937. $ed_y = sp + 8|0;
  4938. $ed_pubkey = sp + 248|0;
  4939. $some_retval = sp;
  4940. $0 = (($msg_len) + 64)|0;
  4941. $1 = STACKTOP; STACKTOP = STACKTOP + ((((1*$0)|0)+15)&-16)|0;;
  4942. $2 = STACKTOP; STACKTOP = STACKTOP + ((((1*$0)|0)+15)&-16)|0;;
  4943. _crypto_sign_ed25519_ref10_fe_frombytes($mont_x,$curve25519_pubkey);
  4944. _crypto_sign_ed25519_ref10_fe_1($one);
  4945. _crypto_sign_ed25519_ref10_fe_sub($mont_x_minus_one,$mont_x,$one);
  4946. _crypto_sign_ed25519_ref10_fe_add($mont_x_plus_one,$mont_x,$one);
  4947. _crypto_sign_ed25519_ref10_fe_invert($inv_mont_x_plus_one,$mont_x_plus_one);
  4948. _crypto_sign_ed25519_ref10_fe_mul($ed_y,$mont_x_minus_one,$inv_mont_x_plus_one);
  4949. _crypto_sign_ed25519_ref10_fe_tobytes($ed_pubkey,$ed_y);
  4950. $3 = (($signature) + 63|0);
  4951. $4 = HEAP8[$3>>0]|0;
  4952. $5 = $4&255;
  4953. $6 = $5 & 128;
  4954. $7 = (($ed_pubkey) + 31|0);
  4955. $8 = HEAP8[$7>>0]|0;
  4956. $9 = $8&255;
  4957. $10 = $9 | $6;
  4958. $11 = $10&255;
  4959. HEAP8[$7>>0] = $11;
  4960. $12 = HEAP8[$3>>0]|0;
  4961. $13 = $12&255;
  4962. $14 = $13 & 127;
  4963. $15 = $14&255;
  4964. HEAP8[$3>>0] = $15;
  4965. dest=$1+0|0; src=$signature+0|0; stop=dest+64|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
  4966. $16 = (($1) + 64|0);
  4967. _memcpy(($16|0),($msg|0),($msg_len|0))|0;
  4968. $17 = (_crypto_sign_edwards25519sha512batch_ref10_open($2,$some_retval,$1,$0,0,$ed_pubkey)|0);
  4969. STACKTOP = sp;return ($17|0);
  4970. }
  4971. function _crypto_hash_sha512_ref($output,$input,$0,$1) {
  4972. $output = $output|0;
  4973. $input = $input|0;
  4974. $0 = $0|0;
  4975. $1 = $1|0;
  4976. var $ctx = 0, label = 0, sp = 0;
  4977. sp = STACKTOP;
  4978. STACKTOP = STACKTOP + 208|0;
  4979. $ctx = sp;
  4980. _sph_sha512_init($ctx);
  4981. _sph_sha384($ctx,$input,$0);
  4982. _sph_sha512_close($ctx,$output);
  4983. STACKTOP = sp;return 0;
  4984. }
  4985. function _crypto_sign_modified($sm,$smlen,$m,$0,$1,$sk) {
  4986. $sm = $sm|0;
  4987. $smlen = $smlen|0;
  4988. $m = $m|0;
  4989. $0 = $0|0;
  4990. $1 = $1|0;
  4991. $sk = $sk|0;
  4992. var $10 = 0, $11 = 0, $12 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $R = 0, $hram = 0, $nonce = 0, $pk1 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  4993. sp = STACKTOP;
  4994. STACKTOP = STACKTOP + 320|0;
  4995. $pk1 = sp + 288|0;
  4996. $nonce = sp + 224|0;
  4997. $hram = sp + 160|0;
  4998. $R = sp;
  4999. $2 = (($sk) + 32|0);
  5000. dest=$pk1+0|0; src=$2+0|0; stop=dest+32|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
  5001. $3 = (_i64Add(($0|0),($1|0),64,0)|0);
  5002. $4 = tempRet0;
  5003. $5 = $smlen;
  5004. $6 = $5;
  5005. HEAP32[$6>>2] = $3;
  5006. $7 = (($5) + 4)|0;
  5007. $8 = $7;
  5008. HEAP32[$8>>2] = $4;
  5009. $9 = (($sm) + 64|0);
  5010. _memmove(($9|0),($m|0),($0|0))|0;
  5011. $10 = (($sm) + 32|0);
  5012. _memmove(($10|0),($sk|0),32)|0;
  5013. $11 = (_i64Add(($0|0),($1|0),32,0)|0);
  5014. $12 = tempRet0;
  5015. (_crypto_hash_sha512_ref($nonce,$10,$11,$12)|0);
  5016. dest=$10+0|0; src=$pk1+0|0; stop=dest+32|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
  5017. _crypto_sign_ed25519_ref10_sc_reduce($nonce);
  5018. _crypto_sign_ed25519_ref10_ge_scalarmult_base($R,$nonce);
  5019. _crypto_sign_ed25519_ref10_ge_p3_tobytes($sm,$R);
  5020. (_crypto_hash_sha512_ref($hram,$sm,$3,$4)|0);
  5021. _crypto_sign_ed25519_ref10_sc_reduce($hram);
  5022. _crypto_sign_ed25519_ref10_sc_muladd($10,$hram,$sk,$nonce);
  5023. STACKTOP = sp;return 0;
  5024. }
  5025. function _curve25519_donna($mypublic,$secret,$basepoint) {
  5026. $mypublic = $mypublic|0;
  5027. $secret = $secret|0;
  5028. $basepoint = $basepoint|0;
  5029. var $bp = 0, $e = 0, $x = 0, $z = 0, $zmone = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  5030. sp = STACKTOP;
  5031. STACKTOP = STACKTOP + 368|0;
  5032. $bp = sp + 248|0;
  5033. $x = sp + 168|0;
  5034. $z = sp + 80|0;
  5035. $zmone = sp;
  5036. $e = sp + 328|0;
  5037. dest=$e+0|0; src=$secret+0|0; stop=dest+32|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
  5038. _fexpand($bp,$basepoint);
  5039. _cmult($x,$z,$e,$bp);
  5040. _crecip($zmone,$z);
  5041. _fmul($z,$x,$zmone);
  5042. _fcontract($mypublic,$z);
  5043. STACKTOP = sp;return 0;
  5044. }
  5045. function _fexpand($output,$input) {
  5046. $output = $output|0;
  5047. $input = $input|0;
  5048. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0;
  5049. var $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0;
  5050. var $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0;
  5051. var $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0;
  5052. var $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0;
  5053. var $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0;
  5054. var $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0;
  5055. var $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0;
  5056. var $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0;
  5057. var $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0;
  5058. var $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $3 = 0, $30 = 0, $31 = 0;
  5059. var $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0;
  5060. var $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0;
  5061. var $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0;
  5062. var $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
  5063. sp = STACKTOP;
  5064. $0 = HEAP8[$input>>0]|0;
  5065. $1 = $0&255;
  5066. $2 = (($input) + 1|0);
  5067. $3 = HEAP8[$2>>0]|0;
  5068. $4 = $3&255;
  5069. $5 = (_bitshift64Shl(($4|0),0,8)|0);
  5070. $6 = tempRet0;
  5071. $7 = $5 | $1;
  5072. $8 = (($input) + 2|0);
  5073. $9 = HEAP8[$8>>0]|0;
  5074. $10 = $9&255;
  5075. $11 = (_bitshift64Shl(($10|0),0,16)|0);
  5076. $12 = tempRet0;
  5077. $13 = $7 | $11;
  5078. $14 = $6 | $12;
  5079. $15 = (($input) + 3|0);
  5080. $16 = HEAP8[$15>>0]|0;
  5081. $17 = $16&255;
  5082. $18 = (_bitshift64Shl(($17|0),0,24)|0);
  5083. $19 = tempRet0;
  5084. $20 = $18 & 50331648;
  5085. $21 = $13 | $20;
  5086. $22 = $output;
  5087. $23 = $22;
  5088. HEAP32[$23>>2] = $21;
  5089. $24 = (($22) + 4)|0;
  5090. $25 = $24;
  5091. HEAP32[$25>>2] = $14;
  5092. $26 = HEAP8[$15>>0]|0;
  5093. $27 = $26&255;
  5094. $28 = (($input) + 4|0);
  5095. $29 = HEAP8[$28>>0]|0;
  5096. $30 = $29&255;
  5097. $31 = (_bitshift64Shl(($30|0),0,8)|0);
  5098. $32 = tempRet0;
  5099. $33 = $31 | $27;
  5100. $34 = (($input) + 5|0);
  5101. $35 = HEAP8[$34>>0]|0;
  5102. $36 = $35&255;
  5103. $37 = (_bitshift64Shl(($36|0),0,16)|0);
  5104. $38 = tempRet0;
  5105. $39 = $33 | $37;
  5106. $40 = $32 | $38;
  5107. $41 = (($input) + 6|0);
  5108. $42 = HEAP8[$41>>0]|0;
  5109. $43 = $42&255;
  5110. $44 = (_bitshift64Shl(($43|0),0,24)|0);
  5111. $45 = tempRet0;
  5112. $46 = $39 | $44;
  5113. $47 = $40 | $45;
  5114. $48 = (_bitshift64Lshr(($46|0),($47|0),2)|0);
  5115. $49 = tempRet0;
  5116. $50 = $48 & 33554431;
  5117. $51 = (($output) + 8|0);
  5118. $52 = $51;
  5119. $53 = $52;
  5120. HEAP32[$53>>2] = $50;
  5121. $54 = (($52) + 4)|0;
  5122. $55 = $54;
  5123. HEAP32[$55>>2] = 0;
  5124. $56 = HEAP8[$41>>0]|0;
  5125. $57 = $56&255;
  5126. $58 = (($input) + 7|0);
  5127. $59 = HEAP8[$58>>0]|0;
  5128. $60 = $59&255;
  5129. $61 = (_bitshift64Shl(($60|0),0,8)|0);
  5130. $62 = tempRet0;
  5131. $63 = $61 | $57;
  5132. $64 = (($input) + 8|0);
  5133. $65 = HEAP8[$64>>0]|0;
  5134. $66 = $65&255;
  5135. $67 = (_bitshift64Shl(($66|0),0,16)|0);
  5136. $68 = tempRet0;
  5137. $69 = $63 | $67;
  5138. $70 = $62 | $68;
  5139. $71 = (($input) + 9|0);
  5140. $72 = HEAP8[$71>>0]|0;
  5141. $73 = $72&255;
  5142. $74 = (_bitshift64Shl(($73|0),0,24)|0);
  5143. $75 = tempRet0;
  5144. $76 = $69 | $74;
  5145. $77 = $70 | $75;
  5146. $78 = (_bitshift64Lshr(($76|0),($77|0),3)|0);
  5147. $79 = tempRet0;
  5148. $80 = $78 & 67108863;
  5149. $81 = (($output) + 16|0);
  5150. $82 = $81;
  5151. $83 = $82;
  5152. HEAP32[$83>>2] = $80;
  5153. $84 = (($82) + 4)|0;
  5154. $85 = $84;
  5155. HEAP32[$85>>2] = 0;
  5156. $86 = HEAP8[$71>>0]|0;
  5157. $87 = $86&255;
  5158. $88 = (($input) + 10|0);
  5159. $89 = HEAP8[$88>>0]|0;
  5160. $90 = $89&255;
  5161. $91 = (_bitshift64Shl(($90|0),0,8)|0);
  5162. $92 = tempRet0;
  5163. $93 = $91 | $87;
  5164. $94 = (($input) + 11|0);
  5165. $95 = HEAP8[$94>>0]|0;
  5166. $96 = $95&255;
  5167. $97 = (_bitshift64Shl(($96|0),0,16)|0);
  5168. $98 = tempRet0;
  5169. $99 = $93 | $97;
  5170. $100 = $92 | $98;
  5171. $101 = (($input) + 12|0);
  5172. $102 = HEAP8[$101>>0]|0;
  5173. $103 = $102&255;
  5174. $104 = (_bitshift64Shl(($103|0),0,24)|0);
  5175. $105 = tempRet0;
  5176. $106 = $99 | $104;
  5177. $107 = $100 | $105;
  5178. $108 = (_bitshift64Lshr(($106|0),($107|0),5)|0);
  5179. $109 = tempRet0;
  5180. $110 = $108 & 33554431;
  5181. $111 = (($output) + 24|0);
  5182. $112 = $111;
  5183. $113 = $112;
  5184. HEAP32[$113>>2] = $110;
  5185. $114 = (($112) + 4)|0;
  5186. $115 = $114;
  5187. HEAP32[$115>>2] = 0;
  5188. $116 = HEAP8[$101>>0]|0;
  5189. $117 = $116&255;
  5190. $118 = (($input) + 13|0);
  5191. $119 = HEAP8[$118>>0]|0;
  5192. $120 = $119&255;
  5193. $121 = (_bitshift64Shl(($120|0),0,8)|0);
  5194. $122 = tempRet0;
  5195. $123 = $121 | $117;
  5196. $124 = (($input) + 14|0);
  5197. $125 = HEAP8[$124>>0]|0;
  5198. $126 = $125&255;
  5199. $127 = (_bitshift64Shl(($126|0),0,16)|0);
  5200. $128 = tempRet0;
  5201. $129 = $123 | $127;
  5202. $130 = $122 | $128;
  5203. $131 = (($input) + 15|0);
  5204. $132 = HEAP8[$131>>0]|0;
  5205. $133 = $132&255;
  5206. $134 = (_bitshift64Shl(($133|0),0,24)|0);
  5207. $135 = tempRet0;
  5208. $136 = $129 | $134;
  5209. $137 = $130 | $135;
  5210. $138 = (_bitshift64Lshr(($136|0),($137|0),6)|0);
  5211. $139 = tempRet0;
  5212. $140 = $138 & 67108863;
  5213. $141 = (($output) + 32|0);
  5214. $142 = $141;
  5215. $143 = $142;
  5216. HEAP32[$143>>2] = $140;
  5217. $144 = (($142) + 4)|0;
  5218. $145 = $144;
  5219. HEAP32[$145>>2] = 0;
  5220. $146 = (($input) + 16|0);
  5221. $147 = HEAP8[$146>>0]|0;
  5222. $148 = $147&255;
  5223. $149 = (($input) + 17|0);
  5224. $150 = HEAP8[$149>>0]|0;
  5225. $151 = $150&255;
  5226. $152 = (_bitshift64Shl(($151|0),0,8)|0);
  5227. $153 = tempRet0;
  5228. $154 = $152 | $148;
  5229. $155 = (($input) + 18|0);
  5230. $156 = HEAP8[$155>>0]|0;
  5231. $157 = $156&255;
  5232. $158 = (_bitshift64Shl(($157|0),0,16)|0);
  5233. $159 = tempRet0;
  5234. $160 = $154 | $158;
  5235. $161 = $153 | $159;
  5236. $162 = (($input) + 19|0);
  5237. $163 = HEAP8[$162>>0]|0;
  5238. $164 = $163&255;
  5239. $165 = (_bitshift64Shl(($164|0),0,24)|0);
  5240. $166 = tempRet0;
  5241. $167 = $165 & 16777216;
  5242. $168 = $160 | $167;
  5243. $169 = (($output) + 40|0);
  5244. $170 = $169;
  5245. $171 = $170;
  5246. HEAP32[$171>>2] = $168;
  5247. $172 = (($170) + 4)|0;
  5248. $173 = $172;
  5249. HEAP32[$173>>2] = $161;
  5250. $174 = HEAP8[$162>>0]|0;
  5251. $175 = $174&255;
  5252. $176 = (($input) + 20|0);
  5253. $177 = HEAP8[$176>>0]|0;
  5254. $178 = $177&255;
  5255. $179 = (_bitshift64Shl(($178|0),0,8)|0);
  5256. $180 = tempRet0;
  5257. $181 = $179 | $175;
  5258. $182 = (($input) + 21|0);
  5259. $183 = HEAP8[$182>>0]|0;
  5260. $184 = $183&255;
  5261. $185 = (_bitshift64Shl(($184|0),0,16)|0);
  5262. $186 = tempRet0;
  5263. $187 = $181 | $185;
  5264. $188 = $180 | $186;
  5265. $189 = (($input) + 22|0);
  5266. $190 = HEAP8[$189>>0]|0;
  5267. $191 = $190&255;
  5268. $192 = (_bitshift64Shl(($191|0),0,24)|0);
  5269. $193 = tempRet0;
  5270. $194 = $187 | $192;
  5271. $195 = $188 | $193;
  5272. $196 = (_bitshift64Lshr(($194|0),($195|0),1)|0);
  5273. $197 = tempRet0;
  5274. $198 = $196 & 67108863;
  5275. $199 = (($output) + 48|0);
  5276. $200 = $199;
  5277. $201 = $200;
  5278. HEAP32[$201>>2] = $198;
  5279. $202 = (($200) + 4)|0;
  5280. $203 = $202;
  5281. HEAP32[$203>>2] = 0;
  5282. $204 = HEAP8[$189>>0]|0;
  5283. $205 = $204&255;
  5284. $206 = (($input) + 23|0);
  5285. $207 = HEAP8[$206>>0]|0;
  5286. $208 = $207&255;
  5287. $209 = (_bitshift64Shl(($208|0),0,8)|0);
  5288. $210 = tempRet0;
  5289. $211 = $209 | $205;
  5290. $212 = (($input) + 24|0);
  5291. $213 = HEAP8[$212>>0]|0;
  5292. $214 = $213&255;
  5293. $215 = (_bitshift64Shl(($214|0),0,16)|0);
  5294. $216 = tempRet0;
  5295. $217 = $211 | $215;
  5296. $218 = $210 | $216;
  5297. $219 = (($input) + 25|0);
  5298. $220 = HEAP8[$219>>0]|0;
  5299. $221 = $220&255;
  5300. $222 = (_bitshift64Shl(($221|0),0,24)|0);
  5301. $223 = tempRet0;
  5302. $224 = $217 | $222;
  5303. $225 = $218 | $223;
  5304. $226 = (_bitshift64Lshr(($224|0),($225|0),3)|0);
  5305. $227 = tempRet0;
  5306. $228 = $226 & 33554431;
  5307. $229 = (($output) + 56|0);
  5308. $230 = $229;
  5309. $231 = $230;
  5310. HEAP32[$231>>2] = $228;
  5311. $232 = (($230) + 4)|0;
  5312. $233 = $232;
  5313. HEAP32[$233>>2] = 0;
  5314. $234 = HEAP8[$219>>0]|0;
  5315. $235 = $234&255;
  5316. $236 = (($input) + 26|0);
  5317. $237 = HEAP8[$236>>0]|0;
  5318. $238 = $237&255;
  5319. $239 = (_bitshift64Shl(($238|0),0,8)|0);
  5320. $240 = tempRet0;
  5321. $241 = $239 | $235;
  5322. $242 = (($input) + 27|0);
  5323. $243 = HEAP8[$242>>0]|0;
  5324. $244 = $243&255;
  5325. $245 = (_bitshift64Shl(($244|0),0,16)|0);
  5326. $246 = tempRet0;
  5327. $247 = $241 | $245;
  5328. $248 = $240 | $246;
  5329. $249 = (($input) + 28|0);
  5330. $250 = HEAP8[$249>>0]|0;
  5331. $251 = $250&255;
  5332. $252 = (_bitshift64Shl(($251|0),0,24)|0);
  5333. $253 = tempRet0;
  5334. $254 = $247 | $252;
  5335. $255 = $248 | $253;
  5336. $256 = (_bitshift64Lshr(($254|0),($255|0),4)|0);
  5337. $257 = tempRet0;
  5338. $258 = $256 & 67108863;
  5339. $259 = (($output) + 64|0);
  5340. $260 = $259;
  5341. $261 = $260;
  5342. HEAP32[$261>>2] = $258;
  5343. $262 = (($260) + 4)|0;
  5344. $263 = $262;
  5345. HEAP32[$263>>2] = 0;
  5346. $264 = HEAP8[$249>>0]|0;
  5347. $265 = $264&255;
  5348. $266 = (($input) + 29|0);
  5349. $267 = HEAP8[$266>>0]|0;
  5350. $268 = $267&255;
  5351. $269 = (_bitshift64Shl(($268|0),0,8)|0);
  5352. $270 = tempRet0;
  5353. $271 = $269 | $265;
  5354. $272 = (($input) + 30|0);
  5355. $273 = HEAP8[$272>>0]|0;
  5356. $274 = $273&255;
  5357. $275 = (_bitshift64Shl(($274|0),0,16)|0);
  5358. $276 = tempRet0;
  5359. $277 = $271 | $275;
  5360. $278 = $270 | $276;
  5361. $279 = (($input) + 31|0);
  5362. $280 = HEAP8[$279>>0]|0;
  5363. $281 = $280&255;
  5364. $282 = (_bitshift64Shl(($281|0),0,24)|0);
  5365. $283 = tempRet0;
  5366. $284 = $277 | $282;
  5367. $285 = $278 | $283;
  5368. $286 = (_bitshift64Lshr(($284|0),($285|0),6)|0);
  5369. $287 = tempRet0;
  5370. $288 = $286 & 33554431;
  5371. $289 = (($output) + 72|0);
  5372. $290 = $289;
  5373. $291 = $290;
  5374. HEAP32[$291>>2] = $288;
  5375. $292 = (($290) + 4)|0;
  5376. $293 = $292;
  5377. HEAP32[$293>>2] = 0;
  5378. STACKTOP = sp;return;
  5379. }
  5380. function _cmult($resultx,$resultz,$n,$q) {
  5381. $resultx = $resultx|0;
  5382. $resultz = $resultz|0;
  5383. $n = $n|0;
  5384. $q = $q|0;
  5385. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $3 = 0, $4 = 0;
  5386. var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $a = 0, $b = 0, $byte$09 = 0, $c = 0, $d = 0, $e = 0, $exitcond = 0, $exitcond20 = 0, $f = 0, $g = 0, $h = 0, $i$018 = 0, $j$08 = 0, $nqpqx$019 = 0, $nqpqx$110 = 0;
  5387. var $nqpqx$110$phi = 0, $nqpqx2$014 = 0, $nqpqx2$14 = 0, $nqpqx2$14$phi = 0, $nqpqz$013 = 0, $nqpqz$13 = 0, $nqpqz$13$phi = 0, $nqpqz2$015 = 0, $nqpqz2$15 = 0, $nqpqz2$15$phi = 0, $nqx$011 = 0, $nqx$11 = 0, $nqx$11$phi = 0, $nqx2$016 = 0, $nqx2$16 = 0, $nqx2$16$phi = 0, $nqz$012 = 0, $nqz$12 = 0, $nqz$12$phi = 0, $nqz2$017 = 0;
  5388. var $nqz2$17 = 0, $nqz2$17$phi = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  5389. sp = STACKTOP;
  5390. STACKTOP = STACKTOP + 1216|0;
  5391. $a = sp + 1064|0;
  5392. $b = sp + 912|0;
  5393. $c = sp + 760|0;
  5394. $d = sp + 608|0;
  5395. $e = sp + 456|0;
  5396. $f = sp + 304|0;
  5397. $g = sp + 152|0;
  5398. $h = sp;
  5399. _memset(($a|0),0,152)|0;
  5400. _memset(($b|0),0,152)|0;
  5401. $0 = $b;
  5402. $1 = $0;
  5403. HEAP32[$1>>2] = 1;
  5404. $2 = (($0) + 4)|0;
  5405. $3 = $2;
  5406. HEAP32[$3>>2] = 0;
  5407. _memset(($c|0),0,152)|0;
  5408. $4 = $c;
  5409. $5 = $4;
  5410. HEAP32[$5>>2] = 1;
  5411. $6 = (($4) + 4)|0;
  5412. $7 = $6;
  5413. HEAP32[$7>>2] = 0;
  5414. _memset(($d|0),0,152)|0;
  5415. _memset(($e|0),0,152)|0;
  5416. _memset(($f|0),0,152)|0;
  5417. $8 = $f;
  5418. $9 = $8;
  5419. HEAP32[$9>>2] = 1;
  5420. $10 = (($8) + 4)|0;
  5421. $11 = $10;
  5422. HEAP32[$11>>2] = 0;
  5423. _memset(($g|0),0,152)|0;
  5424. _memset(($h|0),0,152)|0;
  5425. $12 = $h;
  5426. $13 = $12;
  5427. HEAP32[$13>>2] = 1;
  5428. $14 = (($12) + 4)|0;
  5429. $15 = $14;
  5430. HEAP32[$15>>2] = 0;
  5431. dest=$a+0|0; src=$q+0|0; stop=dest+80|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  5432. $i$018 = 0;$nqpqx$019 = $a;$nqpqx2$014 = $e;$nqpqz$013 = $b;$nqpqz2$015 = $f;$nqx$011 = $c;$nqx2$016 = $g;$nqz$012 = $d;$nqz2$017 = $h;
  5433. while(1) {
  5434. $16 = (31 - ($i$018))|0;
  5435. $17 = (($n) + ($16)|0);
  5436. $18 = HEAP8[$17>>0]|0;
  5437. $byte$09 = $18;$j$08 = 0;$nqpqx$110 = $nqpqx$019;$nqpqx2$14 = $nqpqx2$014;$nqpqz$13 = $nqpqz$013;$nqpqz2$15 = $nqpqz2$015;$nqx$11 = $nqx$011;$nqx2$16 = $nqx2$016;$nqz$12 = $nqz$012;$nqz2$17 = $nqz2$017;
  5438. while(1) {
  5439. $19 = $byte$09&255;
  5440. $20 = $19 >>> 7;
  5441. _swap_conditional($nqx$11,$nqpqx$110,$20,0);
  5442. _swap_conditional($nqz$12,$nqpqz$13,$20,0);
  5443. _fmonty($nqx2$16,$nqz2$17,$nqpqx2$14,$nqpqz2$15,$nqx$11,$nqz$12,$nqpqx$110,$nqpqz$13,$q);
  5444. _swap_conditional($nqx2$16,$nqpqx2$14,$20,0);
  5445. _swap_conditional($nqz2$17,$nqpqz2$15,$20,0);
  5446. $21 = $19 << 1;
  5447. $22 = $21&255;
  5448. $23 = (($j$08) + 1)|0;
  5449. $exitcond = ($23|0)==(8);
  5450. if ($exitcond) {
  5451. break;
  5452. } else {
  5453. $nqz2$17$phi = $nqz$12;$nqz$12$phi = $nqz2$17;$nqx2$16$phi = $nqx$11;$nqx$11$phi = $nqx2$16;$nqpqz2$15$phi = $nqpqz$13;$nqpqz$13$phi = $nqpqz2$15;$nqpqx2$14$phi = $nqpqx$110;$nqpqx$110$phi = $nqpqx2$14;$byte$09 = $22;$j$08 = $23;$nqz2$17 = $nqz2$17$phi;$nqz$12 = $nqz$12$phi;$nqx2$16 = $nqx2$16$phi;$nqx$11 = $nqx$11$phi;$nqpqz2$15 = $nqpqz2$15$phi;$nqpqz$13 = $nqpqz$13$phi;$nqpqx2$14 = $nqpqx2$14$phi;$nqpqx$110 = $nqpqx$110$phi;
  5454. }
  5455. }
  5456. $24 = (($i$018) + 1)|0;
  5457. $exitcond20 = ($24|0)==(32);
  5458. if ($exitcond20) {
  5459. break;
  5460. } else {
  5461. $i$018 = $24;$nqpqx$019 = $nqpqx2$14;$nqpqx2$014 = $nqpqx$110;$nqpqz$013 = $nqpqz2$15;$nqpqz2$015 = $nqpqz$13;$nqx$011 = $nqx2$16;$nqx2$016 = $nqx$11;$nqz$012 = $nqz2$17;$nqz2$017 = $nqz$12;
  5462. }
  5463. }
  5464. dest=$resultx+0|0; src=$nqx2$16+0|0; stop=dest+80|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  5465. dest=$resultz+0|0; src=$nqz2$17+0|0; stop=dest+80|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  5466. STACKTOP = sp;return;
  5467. }
  5468. function _crecip($out,$z) {
  5469. $out = $out|0;
  5470. $z = $z|0;
  5471. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $i$33 = 0, $i$42 = 0, $i$51 = 0, $t0 = 0, $t1 = 0, $z11 = 0, $z2 = 0, $z2_100_0 = 0, $z2_10_0 = 0, $z2_20_0 = 0, $z2_50_0 = 0, $z2_5_0 = 0, $z9 = 0, label = 0;
  5472. var sp = 0;
  5473. sp = STACKTOP;
  5474. STACKTOP = STACKTOP + 800|0;
  5475. $z2 = sp + 720|0;
  5476. $z9 = sp + 640|0;
  5477. $z11 = sp + 560|0;
  5478. $z2_5_0 = sp + 480|0;
  5479. $z2_10_0 = sp + 400|0;
  5480. $z2_20_0 = sp + 320|0;
  5481. $z2_50_0 = sp + 240|0;
  5482. $z2_100_0 = sp + 160|0;
  5483. $t0 = sp + 80|0;
  5484. $t1 = sp;
  5485. _fsquare($z2,$z);
  5486. _fsquare($t1,$z2);
  5487. _fsquare($t0,$t1);
  5488. _fmul($z9,$t0,$z);
  5489. _fmul($z11,$z9,$z2);
  5490. _fsquare($t0,$z11);
  5491. _fmul($z2_5_0,$t0,$z9);
  5492. _fsquare($t0,$z2_5_0);
  5493. _fsquare($t1,$t0);
  5494. _fsquare($t0,$t1);
  5495. _fsquare($t1,$t0);
  5496. _fsquare($t0,$t1);
  5497. _fmul($z2_10_0,$t0,$z2_5_0);
  5498. _fsquare($t0,$z2_10_0);
  5499. _fsquare($t1,$t0);
  5500. _fsquare($t0,$t1);
  5501. _fsquare($t1,$t0);
  5502. _fsquare($t0,$t1);
  5503. _fsquare($t1,$t0);
  5504. _fsquare($t0,$t1);
  5505. _fsquare($t1,$t0);
  5506. _fsquare($t0,$t1);
  5507. _fsquare($t1,$t0);
  5508. _fmul($z2_20_0,$t1,$z2_10_0);
  5509. _fsquare($t0,$z2_20_0);
  5510. _fsquare($t1,$t0);
  5511. _fsquare($t0,$t1);
  5512. _fsquare($t1,$t0);
  5513. _fsquare($t0,$t1);
  5514. _fsquare($t1,$t0);
  5515. _fsquare($t0,$t1);
  5516. _fsquare($t1,$t0);
  5517. _fsquare($t0,$t1);
  5518. _fsquare($t1,$t0);
  5519. _fsquare($t0,$t1);
  5520. _fsquare($t1,$t0);
  5521. _fsquare($t0,$t1);
  5522. _fsquare($t1,$t0);
  5523. _fsquare($t0,$t1);
  5524. _fsquare($t1,$t0);
  5525. _fsquare($t0,$t1);
  5526. _fsquare($t1,$t0);
  5527. _fsquare($t0,$t1);
  5528. _fsquare($t1,$t0);
  5529. _fmul($t0,$t1,$z2_20_0);
  5530. _fsquare($t1,$t0);
  5531. _fsquare($t0,$t1);
  5532. _fsquare($t1,$t0);
  5533. _fsquare($t0,$t1);
  5534. _fsquare($t1,$t0);
  5535. _fsquare($t0,$t1);
  5536. _fsquare($t1,$t0);
  5537. _fsquare($t0,$t1);
  5538. _fsquare($t1,$t0);
  5539. _fsquare($t0,$t1);
  5540. _fmul($z2_50_0,$t0,$z2_10_0);
  5541. _fsquare($t0,$z2_50_0);
  5542. _fsquare($t1,$t0);
  5543. $i$33 = 2;
  5544. while(1) {
  5545. _fsquare($t0,$t1);
  5546. _fsquare($t1,$t0);
  5547. $0 = (($i$33) + 2)|0;
  5548. $1 = ($0|0)<(50);
  5549. if ($1) {
  5550. $i$33 = $0;
  5551. } else {
  5552. break;
  5553. }
  5554. }
  5555. _fmul($z2_100_0,$t1,$z2_50_0);
  5556. _fsquare($t1,$z2_100_0);
  5557. _fsquare($t0,$t1);
  5558. $i$42 = 2;
  5559. while(1) {
  5560. _fsquare($t1,$t0);
  5561. _fsquare($t0,$t1);
  5562. $2 = (($i$42) + 2)|0;
  5563. $3 = ($2|0)<(100);
  5564. if ($3) {
  5565. $i$42 = $2;
  5566. } else {
  5567. break;
  5568. }
  5569. }
  5570. _fmul($t1,$t0,$z2_100_0);
  5571. _fsquare($t0,$t1);
  5572. _fsquare($t1,$t0);
  5573. $i$51 = 2;
  5574. while(1) {
  5575. _fsquare($t0,$t1);
  5576. _fsquare($t1,$t0);
  5577. $4 = (($i$51) + 2)|0;
  5578. $5 = ($4|0)<(50);
  5579. if ($5) {
  5580. $i$51 = $4;
  5581. } else {
  5582. break;
  5583. }
  5584. }
  5585. _fmul($t0,$t1,$z2_50_0);
  5586. _fsquare($t1,$t0);
  5587. _fsquare($t0,$t1);
  5588. _fsquare($t1,$t0);
  5589. _fsquare($t0,$t1);
  5590. _fsquare($t1,$t0);
  5591. _fmul($out,$t1,$z11);
  5592. STACKTOP = sp;return;
  5593. }
  5594. function _fmul($output,$in,$in2) {
  5595. $output = $output|0;
  5596. $in = $in|0;
  5597. $in2 = $in2|0;
  5598. var $t = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  5599. sp = STACKTOP;
  5600. STACKTOP = STACKTOP + 160|0;
  5601. $t = sp;
  5602. _fproduct($t,$in,$in2);
  5603. _freduce_degree($t);
  5604. _freduce_coefficients($t);
  5605. dest=$output+0|0; src=$t+0|0; stop=dest+80|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  5606. STACKTOP = sp;return;
  5607. }
  5608. function _fcontract($output,$input_limbs) {
  5609. $output = $output|0;
  5610. $input_limbs = $input_limbs|0;
  5611. var $$pn = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0;
  5612. var $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0;
  5613. var $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0;
  5614. var $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0;
  5615. var $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0;
  5616. var $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0;
  5617. var $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0;
  5618. var $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0;
  5619. var $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0;
  5620. var $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0;
  5621. var $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0;
  5622. var $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0;
  5623. var $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0;
  5624. var $331 = 0, $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0;
  5625. var $35 = 0, $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0;
  5626. var $368 = 0, $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0;
  5627. var $386 = 0, $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0;
  5628. var $403 = 0, $404 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0;
  5629. var $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0;
  5630. var $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0;
  5631. var $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $exitcond = 0, $exitcond11 = 0, $exitcond11$1 = 0, $exitcond14 = 0, $exitcond14$1 = 0, $i$17 = 0, $i$17$1 = 0, $i$24 = 0, $i$24$1 = 0, $i$33 = 0, $input = 0, $mask$02 = 0, $mask$1 = 0, label = 0;
  5632. var sp = 0;
  5633. sp = STACKTOP;
  5634. STACKTOP = STACKTOP + 48|0;
  5635. $input = sp;
  5636. $0 = $input_limbs;
  5637. $1 = $0;
  5638. $2 = HEAP32[$1>>2]|0;
  5639. $3 = (($0) + 4)|0;
  5640. $4 = $3;
  5641. $5 = HEAP32[$4>>2]|0;
  5642. HEAP32[$input>>2] = $2;
  5643. $6 = (($input_limbs) + 8|0);
  5644. $7 = $6;
  5645. $8 = $7;
  5646. $9 = HEAP32[$8>>2]|0;
  5647. $10 = (($7) + 4)|0;
  5648. $11 = $10;
  5649. $12 = HEAP32[$11>>2]|0;
  5650. $13 = (($input) + 4|0);
  5651. HEAP32[$13>>2] = $9;
  5652. $14 = (($input_limbs) + 16|0);
  5653. $15 = $14;
  5654. $16 = $15;
  5655. $17 = HEAP32[$16>>2]|0;
  5656. $18 = (($15) + 4)|0;
  5657. $19 = $18;
  5658. $20 = HEAP32[$19>>2]|0;
  5659. $21 = (($input) + 8|0);
  5660. HEAP32[$21>>2] = $17;
  5661. $22 = (($input_limbs) + 24|0);
  5662. $23 = $22;
  5663. $24 = $23;
  5664. $25 = HEAP32[$24>>2]|0;
  5665. $26 = (($23) + 4)|0;
  5666. $27 = $26;
  5667. $28 = HEAP32[$27>>2]|0;
  5668. $29 = (($input) + 12|0);
  5669. HEAP32[$29>>2] = $25;
  5670. $30 = (($input_limbs) + 32|0);
  5671. $31 = $30;
  5672. $32 = $31;
  5673. $33 = HEAP32[$32>>2]|0;
  5674. $34 = (($31) + 4)|0;
  5675. $35 = $34;
  5676. $36 = HEAP32[$35>>2]|0;
  5677. $37 = (($input) + 16|0);
  5678. HEAP32[$37>>2] = $33;
  5679. $38 = (($input_limbs) + 40|0);
  5680. $39 = $38;
  5681. $40 = $39;
  5682. $41 = HEAP32[$40>>2]|0;
  5683. $42 = (($39) + 4)|0;
  5684. $43 = $42;
  5685. $44 = HEAP32[$43>>2]|0;
  5686. $45 = (($input) + 20|0);
  5687. HEAP32[$45>>2] = $41;
  5688. $46 = (($input_limbs) + 48|0);
  5689. $47 = $46;
  5690. $48 = $47;
  5691. $49 = HEAP32[$48>>2]|0;
  5692. $50 = (($47) + 4)|0;
  5693. $51 = $50;
  5694. $52 = HEAP32[$51>>2]|0;
  5695. $53 = (($input) + 24|0);
  5696. HEAP32[$53>>2] = $49;
  5697. $54 = (($input_limbs) + 56|0);
  5698. $55 = $54;
  5699. $56 = $55;
  5700. $57 = HEAP32[$56>>2]|0;
  5701. $58 = (($55) + 4)|0;
  5702. $59 = $58;
  5703. $60 = HEAP32[$59>>2]|0;
  5704. $61 = (($input) + 28|0);
  5705. HEAP32[$61>>2] = $57;
  5706. $62 = (($input_limbs) + 64|0);
  5707. $63 = $62;
  5708. $64 = $63;
  5709. $65 = HEAP32[$64>>2]|0;
  5710. $66 = (($63) + 4)|0;
  5711. $67 = $66;
  5712. $68 = HEAP32[$67>>2]|0;
  5713. $69 = (($input) + 32|0);
  5714. HEAP32[$69>>2] = $65;
  5715. $70 = (($input_limbs) + 72|0);
  5716. $71 = $70;
  5717. $72 = $71;
  5718. $73 = HEAP32[$72>>2]|0;
  5719. $74 = (($71) + 4)|0;
  5720. $75 = $74;
  5721. $76 = HEAP32[$75>>2]|0;
  5722. $77 = (($input) + 36|0);
  5723. HEAP32[$77>>2] = $73;
  5724. $78 = (($input) + 36|0);
  5725. $i$17 = 0;
  5726. while(1) {
  5727. $79 = $i$17 & 1;
  5728. $80 = ($79|0)==(0);
  5729. $81 = (($input) + ($i$17<<2)|0);
  5730. $82 = HEAP32[$81>>2]|0;
  5731. $83 = $82 >> 31;
  5732. $84 = $83 & $82;
  5733. if ($80) {
  5734. $92 = $84 >> 26;
  5735. $93 = Math_imul($92, -67108864)|0;
  5736. $94 = (($93) + ($82))|0;
  5737. HEAP32[$81>>2] = $94;
  5738. $95 = (($i$17) + 1)|0;
  5739. $96 = (($input) + ($95<<2)|0);
  5740. $97 = HEAP32[$96>>2]|0;
  5741. $98 = (($97) + ($92))|0;
  5742. HEAP32[$96>>2] = $98;
  5743. } else {
  5744. $85 = $84 >> 25;
  5745. $86 = Math_imul($85, -33554432)|0;
  5746. $87 = (($86) + ($82))|0;
  5747. HEAP32[$81>>2] = $87;
  5748. $88 = (($i$17) + 1)|0;
  5749. $89 = (($input) + ($88<<2)|0);
  5750. $90 = HEAP32[$89>>2]|0;
  5751. $91 = (($90) + ($85))|0;
  5752. HEAP32[$89>>2] = $91;
  5753. }
  5754. $99 = (($i$17) + 1)|0;
  5755. $exitcond14 = ($99|0)==(9);
  5756. if ($exitcond14) {
  5757. break;
  5758. } else {
  5759. $i$17 = $99;
  5760. }
  5761. }
  5762. $100 = HEAP32[$78>>2]|0;
  5763. $101 = $100 >> 31;
  5764. $102 = $101 & $100;
  5765. $103 = $102 >> 25;
  5766. $104 = Math_imul($103, -33554432)|0;
  5767. $105 = (($104) + ($100))|0;
  5768. HEAP32[$78>>2] = $105;
  5769. $106 = HEAP32[$input>>2]|0;
  5770. $107 = ($103*19)|0;
  5771. $108 = (($107) + ($106))|0;
  5772. HEAP32[$input>>2] = $108;
  5773. $i$17$1 = 0;
  5774. while(1) {
  5775. $384 = $i$17$1 & 1;
  5776. $385 = ($384|0)==(0);
  5777. $386 = (($input) + ($i$17$1<<2)|0);
  5778. $387 = HEAP32[$386>>2]|0;
  5779. $388 = $387 >> 31;
  5780. $389 = $388 & $387;
  5781. if ($385) {
  5782. $397 = $389 >> 26;
  5783. $398 = Math_imul($397, -67108864)|0;
  5784. $399 = (($398) + ($387))|0;
  5785. HEAP32[$386>>2] = $399;
  5786. $400 = (($i$17$1) + 1)|0;
  5787. $401 = (($input) + ($400<<2)|0);
  5788. $402 = HEAP32[$401>>2]|0;
  5789. $403 = (($402) + ($397))|0;
  5790. HEAP32[$401>>2] = $403;
  5791. } else {
  5792. $390 = $389 >> 25;
  5793. $391 = Math_imul($390, -33554432)|0;
  5794. $392 = (($391) + ($387))|0;
  5795. HEAP32[$386>>2] = $392;
  5796. $393 = (($i$17$1) + 1)|0;
  5797. $394 = (($input) + ($393<<2)|0);
  5798. $395 = HEAP32[$394>>2]|0;
  5799. $396 = (($395) + ($390))|0;
  5800. HEAP32[$394>>2] = $396;
  5801. }
  5802. $404 = (($i$17$1) + 1)|0;
  5803. $exitcond14$1 = ($404|0)==(9);
  5804. if ($exitcond14$1) {
  5805. break;
  5806. } else {
  5807. $i$17$1 = $404;
  5808. }
  5809. }
  5810. $109 = HEAP32[$78>>2]|0;
  5811. $110 = $109 >> 31;
  5812. $111 = $110 & $109;
  5813. $112 = $111 >> 25;
  5814. $113 = Math_imul($112, -33554432)|0;
  5815. $114 = (($113) + ($109))|0;
  5816. HEAP32[$78>>2] = $114;
  5817. $115 = HEAP32[$input>>2]|0;
  5818. $116 = ($112*19)|0;
  5819. $117 = (($116) + ($115))|0;
  5820. $118 = $117 >> 31;
  5821. $119 = $118 & $117;
  5822. $120 = $119 >> 26;
  5823. $121 = Math_imul($120, -67108864)|0;
  5824. $122 = (($121) + ($117))|0;
  5825. HEAP32[$input>>2] = $122;
  5826. $123 = (($input) + 4|0);
  5827. $124 = HEAP32[$123>>2]|0;
  5828. $125 = (($120) + ($124))|0;
  5829. HEAP32[$123>>2] = $125;
  5830. $126 = (($input) + 36|0);
  5831. $i$24 = 0;
  5832. while(1) {
  5833. $127 = $i$24 & 1;
  5834. $128 = ($127|0)==(0);
  5835. $129 = (($input) + ($i$24<<2)|0);
  5836. $130 = HEAP32[$129>>2]|0;
  5837. if ($128) {
  5838. $137 = $130 >> 26;
  5839. $138 = $130 & 67108863;
  5840. HEAP32[$129>>2] = $138;
  5841. $139 = (($i$24) + 1)|0;
  5842. $140 = (($input) + ($139<<2)|0);
  5843. $141 = HEAP32[$140>>2]|0;
  5844. $142 = (($141) + ($137))|0;
  5845. HEAP32[$140>>2] = $142;
  5846. } else {
  5847. $131 = $130 >> 25;
  5848. $132 = $130 & 33554431;
  5849. HEAP32[$129>>2] = $132;
  5850. $133 = (($i$24) + 1)|0;
  5851. $134 = (($input) + ($133<<2)|0);
  5852. $135 = HEAP32[$134>>2]|0;
  5853. $136 = (($135) + ($131))|0;
  5854. HEAP32[$134>>2] = $136;
  5855. }
  5856. $143 = (($i$24) + 1)|0;
  5857. $exitcond11 = ($143|0)==(9);
  5858. if ($exitcond11) {
  5859. break;
  5860. } else {
  5861. $i$24 = $143;
  5862. }
  5863. }
  5864. $144 = HEAP32[$126>>2]|0;
  5865. $145 = $144 >> 25;
  5866. $146 = $144 & 33554431;
  5867. HEAP32[$126>>2] = $146;
  5868. $147 = ($145*19)|0;
  5869. $148 = HEAP32[$input>>2]|0;
  5870. $149 = (($147) + ($148))|0;
  5871. HEAP32[$input>>2] = $149;
  5872. $i$24$1 = 0;
  5873. while(1) {
  5874. $360 = $i$24$1 & 1;
  5875. $361 = ($360|0)==(0);
  5876. $362 = (($input) + ($i$24$1<<2)|0);
  5877. $363 = HEAP32[$362>>2]|0;
  5878. if ($361) {
  5879. $370 = $363 >> 26;
  5880. $371 = $363 & 67108863;
  5881. HEAP32[$362>>2] = $371;
  5882. $372 = (($i$24$1) + 1)|0;
  5883. $373 = (($input) + ($372<<2)|0);
  5884. $374 = HEAP32[$373>>2]|0;
  5885. $375 = (($374) + ($370))|0;
  5886. HEAP32[$373>>2] = $375;
  5887. } else {
  5888. $364 = $363 >> 25;
  5889. $365 = $363 & 33554431;
  5890. HEAP32[$362>>2] = $365;
  5891. $366 = (($i$24$1) + 1)|0;
  5892. $367 = (($input) + ($366<<2)|0);
  5893. $368 = HEAP32[$367>>2]|0;
  5894. $369 = (($368) + ($364))|0;
  5895. HEAP32[$367>>2] = $369;
  5896. }
  5897. $376 = (($i$24$1) + 1)|0;
  5898. $exitcond11$1 = ($376|0)==(9);
  5899. if ($exitcond11$1) {
  5900. break;
  5901. } else {
  5902. $i$24$1 = $376;
  5903. }
  5904. }
  5905. $377 = HEAP32[$126>>2]|0;
  5906. $378 = $377 >> 25;
  5907. $379 = $377 & 33554431;
  5908. HEAP32[$126>>2] = $379;
  5909. $380 = ($378*19)|0;
  5910. $381 = HEAP32[$input>>2]|0;
  5911. $382 = (($380) + ($381))|0;
  5912. HEAP32[$input>>2] = $382;
  5913. $383 = (_s32_gte($382)|0);
  5914. $i$33 = 1;$mask$02 = $383;
  5915. while(1) {
  5916. $150 = $i$33 & 1;
  5917. $151 = ($150|0)==(0);
  5918. $152 = (($input) + ($i$33<<2)|0);
  5919. $153 = HEAP32[$152>>2]|0;
  5920. if ($151) {
  5921. $155 = (_s32_eq($153,67108863)|0);
  5922. $$pn = $155;
  5923. } else {
  5924. $154 = (_s32_eq($153,33554431)|0);
  5925. $$pn = $154;
  5926. }
  5927. $mask$1 = $$pn & $mask$02;
  5928. $156 = (($i$33) + 1)|0;
  5929. $exitcond = ($156|0)==(10);
  5930. if ($exitcond) {
  5931. break;
  5932. } else {
  5933. $i$33 = $156;$mask$02 = $mask$1;
  5934. }
  5935. }
  5936. $157 = $mask$1 & 67108845;
  5937. $158 = HEAP32[$input>>2]|0;
  5938. $159 = (($158) - ($157))|0;
  5939. HEAP32[$input>>2] = $159;
  5940. $160 = $mask$1 & 67108863;
  5941. $161 = $mask$1 & 33554431;
  5942. $162 = (($input) + 4|0);
  5943. $163 = HEAP32[$162>>2]|0;
  5944. $164 = (($163) - ($161))|0;
  5945. HEAP32[$162>>2] = $164;
  5946. $165 = (($input) + 8|0);
  5947. $166 = HEAP32[$165>>2]|0;
  5948. $167 = (($166) - ($160))|0;
  5949. HEAP32[$165>>2] = $167;
  5950. $168 = (($input) + 12|0);
  5951. $169 = HEAP32[$168>>2]|0;
  5952. $170 = (($169) - ($161))|0;
  5953. HEAP32[$168>>2] = $170;
  5954. $171 = (($input) + 16|0);
  5955. $172 = HEAP32[$171>>2]|0;
  5956. $173 = (($172) - ($160))|0;
  5957. HEAP32[$171>>2] = $173;
  5958. $174 = (($input) + 20|0);
  5959. $175 = HEAP32[$174>>2]|0;
  5960. $176 = (($175) - ($161))|0;
  5961. HEAP32[$174>>2] = $176;
  5962. $177 = (($input) + 24|0);
  5963. $178 = HEAP32[$177>>2]|0;
  5964. $179 = (($178) - ($160))|0;
  5965. HEAP32[$177>>2] = $179;
  5966. $180 = (($input) + 28|0);
  5967. $181 = HEAP32[$180>>2]|0;
  5968. $182 = (($181) - ($161))|0;
  5969. HEAP32[$180>>2] = $182;
  5970. $183 = (($input) + 32|0);
  5971. $184 = HEAP32[$183>>2]|0;
  5972. $185 = (($184) - ($160))|0;
  5973. HEAP32[$183>>2] = $185;
  5974. $186 = (($input) + 36|0);
  5975. $187 = HEAP32[$186>>2]|0;
  5976. $188 = (($187) - ($161))|0;
  5977. HEAP32[$186>>2] = $188;
  5978. $189 = HEAP32[$123>>2]|0;
  5979. $190 = $189 << 2;
  5980. HEAP32[$123>>2] = $190;
  5981. $191 = (($input) + 8|0);
  5982. $192 = HEAP32[$191>>2]|0;
  5983. $193 = $192 << 3;
  5984. HEAP32[$191>>2] = $193;
  5985. $194 = (($input) + 12|0);
  5986. $195 = HEAP32[$194>>2]|0;
  5987. $196 = $195 << 5;
  5988. HEAP32[$194>>2] = $196;
  5989. $197 = (($input) + 16|0);
  5990. $198 = HEAP32[$197>>2]|0;
  5991. $199 = $198 << 6;
  5992. HEAP32[$197>>2] = $199;
  5993. $200 = (($input) + 24|0);
  5994. $201 = HEAP32[$200>>2]|0;
  5995. $202 = $201 << 1;
  5996. HEAP32[$200>>2] = $202;
  5997. $203 = (($input) + 28|0);
  5998. $204 = HEAP32[$203>>2]|0;
  5999. $205 = $204 << 3;
  6000. HEAP32[$203>>2] = $205;
  6001. $206 = (($input) + 32|0);
  6002. $207 = HEAP32[$206>>2]|0;
  6003. $208 = $207 << 4;
  6004. HEAP32[$206>>2] = $208;
  6005. $209 = (($input) + 36|0);
  6006. $210 = HEAP32[$209>>2]|0;
  6007. $211 = $210 << 6;
  6008. HEAP32[$209>>2] = $211;
  6009. HEAP8[$output>>0] = 0;
  6010. $212 = (($output) + 16|0);
  6011. HEAP8[$212>>0] = 0;
  6012. $213 = HEAP32[$input>>2]|0;
  6013. $214 = HEAP8[$output>>0]|0;
  6014. $215 = $214&255;
  6015. $216 = $215 | $213;
  6016. $217 = $216&255;
  6017. HEAP8[$output>>0] = $217;
  6018. $218 = HEAP32[$input>>2]|0;
  6019. $219 = $218 >>> 8;
  6020. $220 = $219&255;
  6021. $221 = (($output) + 1|0);
  6022. HEAP8[$221>>0] = $220;
  6023. $222 = HEAP32[$input>>2]|0;
  6024. $223 = $222 >>> 16;
  6025. $224 = $223&255;
  6026. $225 = (($output) + 2|0);
  6027. HEAP8[$225>>0] = $224;
  6028. $226 = HEAP32[$input>>2]|0;
  6029. $227 = $226 >>> 24;
  6030. $228 = (($output) + 3|0);
  6031. $229 = HEAP32[$123>>2]|0;
  6032. $230 = $227 | $229;
  6033. $231 = $230&255;
  6034. HEAP8[$228>>0] = $231;
  6035. $232 = HEAP32[$123>>2]|0;
  6036. $233 = $232 >>> 8;
  6037. $234 = $233&255;
  6038. $235 = (($output) + 4|0);
  6039. HEAP8[$235>>0] = $234;
  6040. $236 = HEAP32[$123>>2]|0;
  6041. $237 = $236 >>> 16;
  6042. $238 = $237&255;
  6043. $239 = (($output) + 5|0);
  6044. HEAP8[$239>>0] = $238;
  6045. $240 = HEAP32[$123>>2]|0;
  6046. $241 = $240 >>> 24;
  6047. $242 = (($output) + 6|0);
  6048. $243 = HEAP32[$191>>2]|0;
  6049. $244 = $241 | $243;
  6050. $245 = $244&255;
  6051. HEAP8[$242>>0] = $245;
  6052. $246 = HEAP32[$191>>2]|0;
  6053. $247 = $246 >>> 8;
  6054. $248 = $247&255;
  6055. $249 = (($output) + 7|0);
  6056. HEAP8[$249>>0] = $248;
  6057. $250 = HEAP32[$191>>2]|0;
  6058. $251 = $250 >>> 16;
  6059. $252 = $251&255;
  6060. $253 = (($output) + 8|0);
  6061. HEAP8[$253>>0] = $252;
  6062. $254 = HEAP32[$191>>2]|0;
  6063. $255 = $254 >>> 24;
  6064. $256 = (($output) + 9|0);
  6065. $257 = HEAP32[$194>>2]|0;
  6066. $258 = $255 | $257;
  6067. $259 = $258&255;
  6068. HEAP8[$256>>0] = $259;
  6069. $260 = HEAP32[$194>>2]|0;
  6070. $261 = $260 >>> 8;
  6071. $262 = $261&255;
  6072. $263 = (($output) + 10|0);
  6073. HEAP8[$263>>0] = $262;
  6074. $264 = HEAP32[$194>>2]|0;
  6075. $265 = $264 >>> 16;
  6076. $266 = $265&255;
  6077. $267 = (($output) + 11|0);
  6078. HEAP8[$267>>0] = $266;
  6079. $268 = HEAP32[$194>>2]|0;
  6080. $269 = $268 >>> 24;
  6081. $270 = (($output) + 12|0);
  6082. $271 = HEAP32[$197>>2]|0;
  6083. $272 = $269 | $271;
  6084. $273 = $272&255;
  6085. HEAP8[$270>>0] = $273;
  6086. $274 = HEAP32[$197>>2]|0;
  6087. $275 = $274 >>> 8;
  6088. $276 = $275&255;
  6089. $277 = (($output) + 13|0);
  6090. HEAP8[$277>>0] = $276;
  6091. $278 = HEAP32[$197>>2]|0;
  6092. $279 = $278 >>> 16;
  6093. $280 = $279&255;
  6094. $281 = (($output) + 14|0);
  6095. HEAP8[$281>>0] = $280;
  6096. $282 = HEAP32[$197>>2]|0;
  6097. $283 = $282 >>> 24;
  6098. $284 = $283&255;
  6099. $285 = (($output) + 15|0);
  6100. HEAP8[$285>>0] = $284;
  6101. $286 = (($input) + 20|0);
  6102. $287 = HEAP32[$286>>2]|0;
  6103. $288 = HEAP8[$212>>0]|0;
  6104. $289 = $288&255;
  6105. $290 = $289 | $287;
  6106. $291 = $290&255;
  6107. HEAP8[$212>>0] = $291;
  6108. $292 = HEAP32[$286>>2]|0;
  6109. $293 = $292 >>> 8;
  6110. $294 = $293&255;
  6111. $295 = (($output) + 17|0);
  6112. HEAP8[$295>>0] = $294;
  6113. $296 = HEAP32[$286>>2]|0;
  6114. $297 = $296 >>> 16;
  6115. $298 = $297&255;
  6116. $299 = (($output) + 18|0);
  6117. HEAP8[$299>>0] = $298;
  6118. $300 = HEAP32[$286>>2]|0;
  6119. $301 = $300 >>> 24;
  6120. $302 = (($output) + 19|0);
  6121. $303 = HEAP32[$200>>2]|0;
  6122. $304 = $301 | $303;
  6123. $305 = $304&255;
  6124. HEAP8[$302>>0] = $305;
  6125. $306 = HEAP32[$200>>2]|0;
  6126. $307 = $306 >>> 8;
  6127. $308 = $307&255;
  6128. $309 = (($output) + 20|0);
  6129. HEAP8[$309>>0] = $308;
  6130. $310 = HEAP32[$200>>2]|0;
  6131. $311 = $310 >>> 16;
  6132. $312 = $311&255;
  6133. $313 = (($output) + 21|0);
  6134. HEAP8[$313>>0] = $312;
  6135. $314 = HEAP32[$200>>2]|0;
  6136. $315 = $314 >>> 24;
  6137. $316 = (($output) + 22|0);
  6138. $317 = HEAP32[$203>>2]|0;
  6139. $318 = $315 | $317;
  6140. $319 = $318&255;
  6141. HEAP8[$316>>0] = $319;
  6142. $320 = HEAP32[$203>>2]|0;
  6143. $321 = $320 >>> 8;
  6144. $322 = $321&255;
  6145. $323 = (($output) + 23|0);
  6146. HEAP8[$323>>0] = $322;
  6147. $324 = HEAP32[$203>>2]|0;
  6148. $325 = $324 >>> 16;
  6149. $326 = $325&255;
  6150. $327 = (($output) + 24|0);
  6151. HEAP8[$327>>0] = $326;
  6152. $328 = HEAP32[$203>>2]|0;
  6153. $329 = $328 >>> 24;
  6154. $330 = (($output) + 25|0);
  6155. $331 = HEAP32[$206>>2]|0;
  6156. $332 = $329 | $331;
  6157. $333 = $332&255;
  6158. HEAP8[$330>>0] = $333;
  6159. $334 = HEAP32[$206>>2]|0;
  6160. $335 = $334 >>> 8;
  6161. $336 = $335&255;
  6162. $337 = (($output) + 26|0);
  6163. HEAP8[$337>>0] = $336;
  6164. $338 = HEAP32[$206>>2]|0;
  6165. $339 = $338 >>> 16;
  6166. $340 = $339&255;
  6167. $341 = (($output) + 27|0);
  6168. HEAP8[$341>>0] = $340;
  6169. $342 = HEAP32[$206>>2]|0;
  6170. $343 = $342 >>> 24;
  6171. $344 = (($output) + 28|0);
  6172. $345 = HEAP32[$209>>2]|0;
  6173. $346 = $343 | $345;
  6174. $347 = $346&255;
  6175. HEAP8[$344>>0] = $347;
  6176. $348 = HEAP32[$209>>2]|0;
  6177. $349 = $348 >>> 8;
  6178. $350 = $349&255;
  6179. $351 = (($output) + 29|0);
  6180. HEAP8[$351>>0] = $350;
  6181. $352 = HEAP32[$209>>2]|0;
  6182. $353 = $352 >>> 16;
  6183. $354 = $353&255;
  6184. $355 = (($output) + 30|0);
  6185. HEAP8[$355>>0] = $354;
  6186. $356 = HEAP32[$209>>2]|0;
  6187. $357 = $356 >>> 24;
  6188. $358 = $357&255;
  6189. $359 = (($output) + 31|0);
  6190. HEAP8[$359>>0] = $358;
  6191. STACKTOP = sp;return;
  6192. }
  6193. function _swap_conditional($a,$b,$0,$1) {
  6194. $a = $a|0;
  6195. $b = $b|0;
  6196. $0 = $0|0;
  6197. $1 = $1|0;
  6198. var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0;
  6199. var $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
  6200. var $9 = 0, $exitcond = 0, $i$02 = 0, label = 0, sp = 0;
  6201. sp = STACKTOP;
  6202. $2 = (_i64Subtract(0,0,($0|0),($1|0))|0);
  6203. $3 = tempRet0;
  6204. $i$02 = 0;
  6205. while(1) {
  6206. $4 = (($a) + ($i$02<<3)|0);
  6207. $5 = $4;
  6208. $6 = $5;
  6209. $7 = HEAP32[$6>>2]|0;
  6210. $8 = (($5) + 4)|0;
  6211. $9 = $8;
  6212. $10 = HEAP32[$9>>2]|0;
  6213. $11 = (($b) + ($i$02<<3)|0);
  6214. $12 = $11;
  6215. $13 = $12;
  6216. $14 = HEAP32[$13>>2]|0;
  6217. $15 = (($12) + 4)|0;
  6218. $16 = $15;
  6219. $17 = HEAP32[$16>>2]|0;
  6220. $18 = $14 ^ $7;
  6221. $19 = $17 ^ $10;
  6222. $20 = $18 & $2;
  6223. $21 = $19 & $3;
  6224. $22 = $20 ^ $7;
  6225. $21 ^ $10;
  6226. $23 = (_bitshift64Ashr(0,($22|0),32)|0);
  6227. $24 = tempRet0;
  6228. $25 = $4;
  6229. $26 = $25;
  6230. HEAP32[$26>>2] = $23;
  6231. $27 = (($25) + 4)|0;
  6232. $28 = $27;
  6233. HEAP32[$28>>2] = $24;
  6234. $29 = $11;
  6235. $30 = $29;
  6236. $31 = HEAP32[$30>>2]|0;
  6237. $32 = (($29) + 4)|0;
  6238. $33 = $32;
  6239. $34 = HEAP32[$33>>2]|0;
  6240. $35 = $20 ^ $31;
  6241. $21 ^ $34;
  6242. $36 = (_bitshift64Ashr(0,($35|0),32)|0);
  6243. $37 = tempRet0;
  6244. $38 = $11;
  6245. $39 = $38;
  6246. HEAP32[$39>>2] = $36;
  6247. $40 = (($38) + 4)|0;
  6248. $41 = $40;
  6249. HEAP32[$41>>2] = $37;
  6250. $42 = (($i$02) + 1)|0;
  6251. $exitcond = ($42|0)==(10);
  6252. if ($exitcond) {
  6253. break;
  6254. } else {
  6255. $i$02 = $42;
  6256. }
  6257. }
  6258. STACKTOP = sp;return;
  6259. }
  6260. function _fmonty($x2,$z2,$x3,$z3,$x,$z,$xprime,$zprime,$qmqp) {
  6261. $x2 = $x2|0;
  6262. $z2 = $z2|0;
  6263. $x3 = $x3|0;
  6264. $z3 = $z3|0;
  6265. $x = $x|0;
  6266. $z = $z|0;
  6267. $xprime = $xprime|0;
  6268. $zprime = $zprime|0;
  6269. $qmqp = $qmqp|0;
  6270. var $0 = 0, $origx = 0, $origxprime = 0, $xx = 0, $xxprime = 0, $xxxprime = 0, $zz = 0, $zzprime = 0, $zzz = 0, $zzzprime = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  6271. sp = STACKTOP;
  6272. STACKTOP = STACKTOP + 1232|0;
  6273. $origx = sp + 1144|0;
  6274. $origxprime = sp + 1064|0;
  6275. $zzz = sp + 912|0;
  6276. $xx = sp + 760|0;
  6277. $zz = sp + 608|0;
  6278. $xxprime = sp + 456|0;
  6279. $zzprime = sp + 304|0;
  6280. $zzzprime = sp + 152|0;
  6281. $xxxprime = sp;
  6282. dest=$origx+0|0; src=$x+0|0; stop=dest+80|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  6283. _fsum($x,$z);
  6284. _fdifference($z,$origx);
  6285. dest=$origxprime+0|0; src=$xprime+0|0; stop=dest+80|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  6286. _fsum($xprime,$zprime);
  6287. _fdifference($zprime,$origxprime);
  6288. _fproduct($xxprime,$xprime,$z);
  6289. _fproduct($zzprime,$x,$zprime);
  6290. _freduce_degree($xxprime);
  6291. _freduce_coefficients($xxprime);
  6292. _freduce_degree($zzprime);
  6293. _freduce_coefficients($zzprime);
  6294. dest=$origxprime+0|0; src=$xxprime+0|0; stop=dest+80|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  6295. _fsum($xxprime,$zzprime);
  6296. _fdifference($zzprime,$origxprime);
  6297. _fsquare($xxxprime,$xxprime);
  6298. _fsquare($zzzprime,$zzprime);
  6299. _fproduct($zzprime,$zzzprime,$qmqp);
  6300. _freduce_degree($zzprime);
  6301. _freduce_coefficients($zzprime);
  6302. dest=$x3+0|0; src=$xxxprime+0|0; stop=dest+80|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  6303. dest=$z3+0|0; src=$zzprime+0|0; stop=dest+80|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  6304. _fsquare($xx,$x);
  6305. _fsquare($zz,$z);
  6306. _fproduct($x2,$xx,$zz);
  6307. _freduce_degree($x2);
  6308. _freduce_coefficients($x2);
  6309. _fdifference($zz,$xx);
  6310. $0 = (($zzz) + 80|0);
  6311. dest=$0+0|0; stop=dest+72|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
  6312. _fscalar_product($zzz,$zz);
  6313. _freduce_coefficients($zzz);
  6314. _fsum($zzz,$xx);
  6315. _fproduct($z2,$zz,$zzz);
  6316. _freduce_degree($z2);
  6317. _freduce_coefficients($z2);
  6318. STACKTOP = sp;return;
  6319. }
  6320. function _fsquare($output,$in) {
  6321. $output = $output|0;
  6322. $in = $in|0;
  6323. var $t = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  6324. sp = STACKTOP;
  6325. STACKTOP = STACKTOP + 160|0;
  6326. $t = sp;
  6327. _fsquare_inner($t,$in);
  6328. _freduce_degree($t);
  6329. _freduce_coefficients($t);
  6330. dest=$output+0|0; src=$t+0|0; stop=dest+80|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  6331. STACKTOP = sp;return;
  6332. }
  6333. function _fproduct($output,$in2,$in) {
  6334. $output = $output|0;
  6335. $in2 = $in2|0;
  6336. $in = $in|0;
  6337. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0, $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0;
  6338. var $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0, $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0;
  6339. var $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0, $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0, $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0;
  6340. var $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $1059 = 0, $106 = 0, $1060 = 0, $1061 = 0, $1062 = 0, $1063 = 0, $1064 = 0, $1065 = 0, $1066 = 0, $1067 = 0, $1068 = 0, $1069 = 0;
  6341. var $107 = 0, $1070 = 0, $1071 = 0, $1072 = 0, $1073 = 0, $1074 = 0, $1075 = 0, $1076 = 0, $1077 = 0, $1078 = 0, $1079 = 0, $108 = 0, $1080 = 0, $1081 = 0, $1082 = 0, $1083 = 0, $1084 = 0, $1085 = 0, $1086 = 0, $1087 = 0;
  6342. var $1088 = 0, $1089 = 0, $109 = 0, $1090 = 0, $1091 = 0, $1092 = 0, $1093 = 0, $1094 = 0, $1095 = 0, $1096 = 0, $1097 = 0, $1098 = 0, $1099 = 0, $11 = 0, $110 = 0, $1100 = 0, $1101 = 0, $1102 = 0, $1103 = 0, $1104 = 0;
  6343. var $1105 = 0, $1106 = 0, $1107 = 0, $1108 = 0, $1109 = 0, $111 = 0, $1110 = 0, $1111 = 0, $1112 = 0, $1113 = 0, $1114 = 0, $1115 = 0, $1116 = 0, $1117 = 0, $1118 = 0, $1119 = 0, $112 = 0, $1120 = 0, $1121 = 0, $1122 = 0;
  6344. var $1123 = 0, $1124 = 0, $1125 = 0, $1126 = 0, $1127 = 0, $1128 = 0, $1129 = 0, $113 = 0, $1130 = 0, $1131 = 0, $1132 = 0, $1133 = 0, $1134 = 0, $1135 = 0, $1136 = 0, $1137 = 0, $1138 = 0, $1139 = 0, $114 = 0, $1140 = 0;
  6345. var $1141 = 0, $1142 = 0, $1143 = 0, $1144 = 0, $1145 = 0, $1146 = 0, $1147 = 0, $1148 = 0, $1149 = 0, $115 = 0, $1150 = 0, $1151 = 0, $1152 = 0, $1153 = 0, $1154 = 0, $1155 = 0, $1156 = 0, $1157 = 0, $1158 = 0, $1159 = 0;
  6346. var $116 = 0, $1160 = 0, $1161 = 0, $1162 = 0, $1163 = 0, $1164 = 0, $1165 = 0, $1166 = 0, $1167 = 0, $1168 = 0, $1169 = 0, $117 = 0, $1170 = 0, $1171 = 0, $1172 = 0, $1173 = 0, $1174 = 0, $1175 = 0, $1176 = 0, $1177 = 0;
  6347. var $1178 = 0, $1179 = 0, $118 = 0, $1180 = 0, $1181 = 0, $1182 = 0, $1183 = 0, $1184 = 0, $1185 = 0, $1186 = 0, $1187 = 0, $1188 = 0, $1189 = 0, $119 = 0, $1190 = 0, $1191 = 0, $1192 = 0, $1193 = 0, $1194 = 0, $1195 = 0;
  6348. var $1196 = 0, $1197 = 0, $1198 = 0, $1199 = 0, $12 = 0, $120 = 0, $1200 = 0, $1201 = 0, $1202 = 0, $1203 = 0, $1204 = 0, $1205 = 0, $1206 = 0, $1207 = 0, $1208 = 0, $1209 = 0, $121 = 0, $1210 = 0, $1211 = 0, $1212 = 0;
  6349. var $1213 = 0, $1214 = 0, $1215 = 0, $1216 = 0, $1217 = 0, $1218 = 0, $1219 = 0, $122 = 0, $1220 = 0, $1221 = 0, $1222 = 0, $1223 = 0, $1224 = 0, $1225 = 0, $1226 = 0, $1227 = 0, $1228 = 0, $1229 = 0, $123 = 0, $1230 = 0;
  6350. var $1231 = 0, $1232 = 0, $1233 = 0, $1234 = 0, $1235 = 0, $1236 = 0, $1237 = 0, $1238 = 0, $1239 = 0, $124 = 0, $1240 = 0, $1241 = 0, $1242 = 0, $1243 = 0, $1244 = 0, $1245 = 0, $1246 = 0, $1247 = 0, $1248 = 0, $1249 = 0;
  6351. var $125 = 0, $1250 = 0, $1251 = 0, $1252 = 0, $1253 = 0, $1254 = 0, $1255 = 0, $1256 = 0, $1257 = 0, $1258 = 0, $1259 = 0, $126 = 0, $1260 = 0, $1261 = 0, $1262 = 0, $1263 = 0, $1264 = 0, $1265 = 0, $1266 = 0, $1267 = 0;
  6352. var $1268 = 0, $1269 = 0, $127 = 0, $1270 = 0, $1271 = 0, $1272 = 0, $1273 = 0, $1274 = 0, $1275 = 0, $1276 = 0, $1277 = 0, $1278 = 0, $1279 = 0, $128 = 0, $1280 = 0, $1281 = 0, $1282 = 0, $1283 = 0, $1284 = 0, $1285 = 0;
  6353. var $1286 = 0, $1287 = 0, $1288 = 0, $1289 = 0, $129 = 0, $1290 = 0, $1291 = 0, $1292 = 0, $1293 = 0, $1294 = 0, $1295 = 0, $1296 = 0, $1297 = 0, $1298 = 0, $1299 = 0, $13 = 0, $130 = 0, $1300 = 0, $1301 = 0, $1302 = 0;
  6354. var $1303 = 0, $1304 = 0, $1305 = 0, $1306 = 0, $1307 = 0, $1308 = 0, $1309 = 0, $131 = 0, $1310 = 0, $1311 = 0, $1312 = 0, $1313 = 0, $1314 = 0, $1315 = 0, $1316 = 0, $1317 = 0, $1318 = 0, $1319 = 0, $132 = 0, $1320 = 0;
  6355. var $1321 = 0, $1322 = 0, $1323 = 0, $1324 = 0, $1325 = 0, $1326 = 0, $1327 = 0, $1328 = 0, $1329 = 0, $133 = 0, $1330 = 0, $1331 = 0, $1332 = 0, $1333 = 0, $1334 = 0, $1335 = 0, $1336 = 0, $1337 = 0, $1338 = 0, $1339 = 0;
  6356. var $134 = 0, $1340 = 0, $1341 = 0, $1342 = 0, $1343 = 0, $1344 = 0, $1345 = 0, $1346 = 0, $1347 = 0, $1348 = 0, $1349 = 0, $135 = 0, $1350 = 0, $1351 = 0, $1352 = 0, $1353 = 0, $1354 = 0, $1355 = 0, $1356 = 0, $1357 = 0;
  6357. var $1358 = 0, $1359 = 0, $136 = 0, $1360 = 0, $1361 = 0, $1362 = 0, $1363 = 0, $1364 = 0, $1365 = 0, $1366 = 0, $1367 = 0, $1368 = 0, $1369 = 0, $137 = 0, $1370 = 0, $1371 = 0, $1372 = 0, $1373 = 0, $1374 = 0, $1375 = 0;
  6358. var $1376 = 0, $1377 = 0, $1378 = 0, $1379 = 0, $138 = 0, $1380 = 0, $1381 = 0, $1382 = 0, $1383 = 0, $1384 = 0, $1385 = 0, $1386 = 0, $1387 = 0, $1388 = 0, $1389 = 0, $139 = 0, $1390 = 0, $1391 = 0, $1392 = 0, $1393 = 0;
  6359. var $1394 = 0, $1395 = 0, $1396 = 0, $1397 = 0, $1398 = 0, $1399 = 0, $14 = 0, $140 = 0, $1400 = 0, $1401 = 0, $1402 = 0, $1403 = 0, $1404 = 0, $1405 = 0, $1406 = 0, $1407 = 0, $1408 = 0, $1409 = 0, $141 = 0, $1410 = 0;
  6360. var $1411 = 0, $1412 = 0, $1413 = 0, $1414 = 0, $1415 = 0, $1416 = 0, $1417 = 0, $1418 = 0, $1419 = 0, $142 = 0, $1420 = 0, $1421 = 0, $1422 = 0, $1423 = 0, $1424 = 0, $1425 = 0, $1426 = 0, $1427 = 0, $1428 = 0, $1429 = 0;
  6361. var $143 = 0, $1430 = 0, $1431 = 0, $1432 = 0, $1433 = 0, $1434 = 0, $1435 = 0, $1436 = 0, $1437 = 0, $1438 = 0, $1439 = 0, $144 = 0, $1440 = 0, $1441 = 0, $1442 = 0, $1443 = 0, $1444 = 0, $1445 = 0, $1446 = 0, $1447 = 0;
  6362. var $1448 = 0, $1449 = 0, $145 = 0, $1450 = 0, $1451 = 0, $1452 = 0, $1453 = 0, $1454 = 0, $1455 = 0, $1456 = 0, $1457 = 0, $1458 = 0, $1459 = 0, $146 = 0, $1460 = 0, $1461 = 0, $1462 = 0, $1463 = 0, $1464 = 0, $1465 = 0;
  6363. var $1466 = 0, $1467 = 0, $1468 = 0, $1469 = 0, $147 = 0, $1470 = 0, $1471 = 0, $1472 = 0, $1473 = 0, $1474 = 0, $1475 = 0, $1476 = 0, $1477 = 0, $1478 = 0, $1479 = 0, $148 = 0, $1480 = 0, $1481 = 0, $1482 = 0, $1483 = 0;
  6364. var $1484 = 0, $1485 = 0, $1486 = 0, $1487 = 0, $1488 = 0, $1489 = 0, $149 = 0, $1490 = 0, $1491 = 0, $1492 = 0, $1493 = 0, $1494 = 0, $1495 = 0, $1496 = 0, $1497 = 0, $1498 = 0, $1499 = 0, $15 = 0, $150 = 0, $1500 = 0;
  6365. var $1501 = 0, $1502 = 0, $1503 = 0, $1504 = 0, $1505 = 0, $1506 = 0, $1507 = 0, $1508 = 0, $1509 = 0, $151 = 0, $1510 = 0, $1511 = 0, $1512 = 0, $1513 = 0, $1514 = 0, $1515 = 0, $1516 = 0, $1517 = 0, $1518 = 0, $1519 = 0;
  6366. var $152 = 0, $1520 = 0, $1521 = 0, $1522 = 0, $1523 = 0, $1524 = 0, $1525 = 0, $1526 = 0, $1527 = 0, $1528 = 0, $1529 = 0, $153 = 0, $1530 = 0, $1531 = 0, $1532 = 0, $1533 = 0, $1534 = 0, $1535 = 0, $1536 = 0, $1537 = 0;
  6367. var $1538 = 0, $1539 = 0, $154 = 0, $1540 = 0, $1541 = 0, $1542 = 0, $1543 = 0, $1544 = 0, $1545 = 0, $1546 = 0, $1547 = 0, $1548 = 0, $1549 = 0, $155 = 0, $1550 = 0, $1551 = 0, $1552 = 0, $1553 = 0, $1554 = 0, $1555 = 0;
  6368. var $1556 = 0, $1557 = 0, $1558 = 0, $1559 = 0, $156 = 0, $1560 = 0, $1561 = 0, $1562 = 0, $1563 = 0, $1564 = 0, $1565 = 0, $1566 = 0, $1567 = 0, $1568 = 0, $1569 = 0, $157 = 0, $1570 = 0, $1571 = 0, $1572 = 0, $1573 = 0;
  6369. var $1574 = 0, $1575 = 0, $1576 = 0, $1577 = 0, $1578 = 0, $1579 = 0, $158 = 0, $1580 = 0, $1581 = 0, $1582 = 0, $1583 = 0, $1584 = 0, $1585 = 0, $1586 = 0, $1587 = 0, $1588 = 0, $1589 = 0, $159 = 0, $1590 = 0, $1591 = 0;
  6370. var $1592 = 0, $1593 = 0, $1594 = 0, $1595 = 0, $1596 = 0, $1597 = 0, $1598 = 0, $1599 = 0, $16 = 0, $160 = 0, $1600 = 0, $1601 = 0, $1602 = 0, $1603 = 0, $1604 = 0, $1605 = 0, $1606 = 0, $1607 = 0, $1608 = 0, $1609 = 0;
  6371. var $161 = 0, $1610 = 0, $1611 = 0, $1612 = 0, $1613 = 0, $1614 = 0, $1615 = 0, $1616 = 0, $1617 = 0, $1618 = 0, $1619 = 0, $162 = 0, $1620 = 0, $1621 = 0, $1622 = 0, $1623 = 0, $1624 = 0, $1625 = 0, $1626 = 0, $1627 = 0;
  6372. var $1628 = 0, $1629 = 0, $163 = 0, $1630 = 0, $1631 = 0, $1632 = 0, $1633 = 0, $1634 = 0, $1635 = 0, $1636 = 0, $1637 = 0, $1638 = 0, $1639 = 0, $164 = 0, $1640 = 0, $1641 = 0, $1642 = 0, $1643 = 0, $1644 = 0, $1645 = 0;
  6373. var $1646 = 0, $1647 = 0, $1648 = 0, $1649 = 0, $165 = 0, $1650 = 0, $1651 = 0, $1652 = 0, $1653 = 0, $1654 = 0, $1655 = 0, $1656 = 0, $1657 = 0, $1658 = 0, $1659 = 0, $166 = 0, $1660 = 0, $1661 = 0, $1662 = 0, $1663 = 0;
  6374. var $1664 = 0, $1665 = 0, $1666 = 0, $1667 = 0, $1668 = 0, $1669 = 0, $167 = 0, $1670 = 0, $1671 = 0, $1672 = 0, $1673 = 0, $1674 = 0, $1675 = 0, $1676 = 0, $1677 = 0, $1678 = 0, $1679 = 0, $168 = 0, $1680 = 0, $1681 = 0;
  6375. var $1682 = 0, $1683 = 0, $1684 = 0, $1685 = 0, $1686 = 0, $1687 = 0, $1688 = 0, $1689 = 0, $169 = 0, $1690 = 0, $1691 = 0, $1692 = 0, $1693 = 0, $1694 = 0, $1695 = 0, $1696 = 0, $1697 = 0, $1698 = 0, $1699 = 0, $17 = 0;
  6376. var $170 = 0, $1700 = 0, $1701 = 0, $1702 = 0, $1703 = 0, $1704 = 0, $1705 = 0, $1706 = 0, $1707 = 0, $1708 = 0, $1709 = 0, $171 = 0, $1710 = 0, $1711 = 0, $1712 = 0, $1713 = 0, $1714 = 0, $1715 = 0, $1716 = 0, $1717 = 0;
  6377. var $1718 = 0, $1719 = 0, $172 = 0, $1720 = 0, $1721 = 0, $1722 = 0, $1723 = 0, $1724 = 0, $1725 = 0, $1726 = 0, $1727 = 0, $1728 = 0, $1729 = 0, $173 = 0, $1730 = 0, $1731 = 0, $1732 = 0, $1733 = 0, $1734 = 0, $1735 = 0;
  6378. var $1736 = 0, $1737 = 0, $1738 = 0, $1739 = 0, $174 = 0, $1740 = 0, $1741 = 0, $1742 = 0, $1743 = 0, $1744 = 0, $1745 = 0, $1746 = 0, $1747 = 0, $1748 = 0, $1749 = 0, $175 = 0, $1750 = 0, $1751 = 0, $1752 = 0, $1753 = 0;
  6379. var $1754 = 0, $1755 = 0, $1756 = 0, $1757 = 0, $1758 = 0, $1759 = 0, $176 = 0, $1760 = 0, $1761 = 0, $1762 = 0, $1763 = 0, $1764 = 0, $1765 = 0, $1766 = 0, $1767 = 0, $1768 = 0, $1769 = 0, $177 = 0, $1770 = 0, $1771 = 0;
  6380. var $1772 = 0, $1773 = 0, $1774 = 0, $1775 = 0, $1776 = 0, $1777 = 0, $1778 = 0, $1779 = 0, $178 = 0, $1780 = 0, $1781 = 0, $1782 = 0, $1783 = 0, $1784 = 0, $1785 = 0, $1786 = 0, $1787 = 0, $1788 = 0, $1789 = 0, $179 = 0;
  6381. var $1790 = 0, $1791 = 0, $1792 = 0, $1793 = 0, $1794 = 0, $1795 = 0, $1796 = 0, $1797 = 0, $1798 = 0, $1799 = 0, $18 = 0, $180 = 0, $1800 = 0, $1801 = 0, $1802 = 0, $1803 = 0, $1804 = 0, $1805 = 0, $1806 = 0, $1807 = 0;
  6382. var $1808 = 0, $1809 = 0, $181 = 0, $1810 = 0, $1811 = 0, $1812 = 0, $1813 = 0, $1814 = 0, $1815 = 0, $1816 = 0, $1817 = 0, $1818 = 0, $1819 = 0, $182 = 0, $1820 = 0, $1821 = 0, $1822 = 0, $1823 = 0, $1824 = 0, $1825 = 0;
  6383. var $1826 = 0, $1827 = 0, $1828 = 0, $1829 = 0, $183 = 0, $1830 = 0, $1831 = 0, $1832 = 0, $1833 = 0, $1834 = 0, $1835 = 0, $1836 = 0, $1837 = 0, $1838 = 0, $1839 = 0, $184 = 0, $1840 = 0, $1841 = 0, $1842 = 0, $1843 = 0;
  6384. var $1844 = 0, $1845 = 0, $1846 = 0, $1847 = 0, $1848 = 0, $1849 = 0, $185 = 0, $1850 = 0, $1851 = 0, $1852 = 0, $1853 = 0, $1854 = 0, $1855 = 0, $1856 = 0, $1857 = 0, $1858 = 0, $1859 = 0, $186 = 0, $1860 = 0, $1861 = 0;
  6385. var $1862 = 0, $1863 = 0, $1864 = 0, $1865 = 0, $1866 = 0, $1867 = 0, $1868 = 0, $1869 = 0, $187 = 0, $1870 = 0, $1871 = 0, $1872 = 0, $1873 = 0, $1874 = 0, $1875 = 0, $1876 = 0, $1877 = 0, $1878 = 0, $1879 = 0, $188 = 0;
  6386. var $1880 = 0, $1881 = 0, $1882 = 0, $1883 = 0, $1884 = 0, $1885 = 0, $1886 = 0, $1887 = 0, $1888 = 0, $1889 = 0, $189 = 0, $1890 = 0, $1891 = 0, $1892 = 0, $1893 = 0, $1894 = 0, $1895 = 0, $1896 = 0, $1897 = 0, $1898 = 0;
  6387. var $1899 = 0, $19 = 0, $190 = 0, $1900 = 0, $1901 = 0, $1902 = 0, $1903 = 0, $1904 = 0, $1905 = 0, $1906 = 0, $1907 = 0, $1908 = 0, $1909 = 0, $191 = 0, $1910 = 0, $1911 = 0, $1912 = 0, $1913 = 0, $1914 = 0, $1915 = 0;
  6388. var $1916 = 0, $1917 = 0, $1918 = 0, $1919 = 0, $192 = 0, $1920 = 0, $1921 = 0, $1922 = 0, $1923 = 0, $1924 = 0, $1925 = 0, $1926 = 0, $1927 = 0, $1928 = 0, $1929 = 0, $193 = 0, $1930 = 0, $1931 = 0, $1932 = 0, $1933 = 0;
  6389. var $1934 = 0, $1935 = 0, $1936 = 0, $1937 = 0, $1938 = 0, $1939 = 0, $194 = 0, $1940 = 0, $1941 = 0, $1942 = 0, $1943 = 0, $1944 = 0, $1945 = 0, $1946 = 0, $1947 = 0, $1948 = 0, $1949 = 0, $195 = 0, $1950 = 0, $1951 = 0;
  6390. var $1952 = 0, $1953 = 0, $1954 = 0, $1955 = 0, $1956 = 0, $1957 = 0, $1958 = 0, $1959 = 0, $196 = 0, $1960 = 0, $1961 = 0, $1962 = 0, $1963 = 0, $1964 = 0, $1965 = 0, $1966 = 0, $1967 = 0, $1968 = 0, $1969 = 0, $197 = 0;
  6391. var $1970 = 0, $1971 = 0, $1972 = 0, $1973 = 0, $1974 = 0, $1975 = 0, $1976 = 0, $1977 = 0, $1978 = 0, $1979 = 0, $198 = 0, $1980 = 0, $1981 = 0, $1982 = 0, $1983 = 0, $1984 = 0, $1985 = 0, $1986 = 0, $1987 = 0, $1988 = 0;
  6392. var $1989 = 0, $199 = 0, $1990 = 0, $1991 = 0, $1992 = 0, $1993 = 0, $1994 = 0, $1995 = 0, $1996 = 0, $1997 = 0, $1998 = 0, $1999 = 0, $2 = 0, $20 = 0, $200 = 0, $2000 = 0, $2001 = 0, $2002 = 0, $2003 = 0, $2004 = 0;
  6393. var $2005 = 0, $2006 = 0, $2007 = 0, $2008 = 0, $2009 = 0, $201 = 0, $2010 = 0, $2011 = 0, $2012 = 0, $2013 = 0, $2014 = 0, $2015 = 0, $2016 = 0, $2017 = 0, $2018 = 0, $2019 = 0, $202 = 0, $2020 = 0, $2021 = 0, $2022 = 0;
  6394. var $2023 = 0, $2024 = 0, $2025 = 0, $2026 = 0, $2027 = 0, $2028 = 0, $2029 = 0, $203 = 0, $2030 = 0, $2031 = 0, $2032 = 0, $2033 = 0, $2034 = 0, $2035 = 0, $2036 = 0, $2037 = 0, $2038 = 0, $2039 = 0, $204 = 0, $2040 = 0;
  6395. var $2041 = 0, $2042 = 0, $2043 = 0, $2044 = 0, $2045 = 0, $2046 = 0, $2047 = 0, $2048 = 0, $2049 = 0, $205 = 0, $2050 = 0, $2051 = 0, $2052 = 0, $2053 = 0, $2054 = 0, $2055 = 0, $2056 = 0, $2057 = 0, $2058 = 0, $2059 = 0;
  6396. var $206 = 0, $2060 = 0, $2061 = 0, $2062 = 0, $2063 = 0, $2064 = 0, $2065 = 0, $2066 = 0, $2067 = 0, $2068 = 0, $2069 = 0, $207 = 0, $2070 = 0, $2071 = 0, $2072 = 0, $2073 = 0, $2074 = 0, $2075 = 0, $2076 = 0, $2077 = 0;
  6397. var $2078 = 0, $2079 = 0, $208 = 0, $2080 = 0, $2081 = 0, $2082 = 0, $2083 = 0, $2084 = 0, $2085 = 0, $2086 = 0, $2087 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0;
  6398. var $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0;
  6399. var $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0;
  6400. var $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0;
  6401. var $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0;
  6402. var $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0;
  6403. var $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0;
  6404. var $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0;
  6405. var $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0;
  6406. var $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0;
  6407. var $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0;
  6408. var $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0;
  6409. var $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0, $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0;
  6410. var $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0, $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0;
  6411. var $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0;
  6412. var $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0, $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0;
  6413. var $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0, $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0;
  6414. var $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0;
  6415. var $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0, $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0;
  6416. var $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0;
  6417. var $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0, $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0;
  6418. var $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0, $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0;
  6419. var $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0;
  6420. var $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0;
  6421. var $631 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0, $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0;
  6422. var $65 = 0, $650 = 0, $651 = 0, $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0, $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0;
  6423. var $668 = 0, $669 = 0, $67 = 0, $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0, $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0;
  6424. var $686 = 0, $687 = 0, $688 = 0, $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0;
  6425. var $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0;
  6426. var $721 = 0, $722 = 0, $723 = 0, $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0, $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0;
  6427. var $74 = 0, $740 = 0, $741 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0, $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0;
  6428. var $758 = 0, $759 = 0, $76 = 0, $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0, $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0;
  6429. var $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0, $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0;
  6430. var $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0;
  6431. var $811 = 0, $812 = 0, $813 = 0, $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0, $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0;
  6432. var $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0, $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0;
  6433. var $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0, $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0;
  6434. var $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0, $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0;
  6435. var $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0, $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0;
  6436. var $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0, $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0;
  6437. var $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0, $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0;
  6438. var $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0, $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0;
  6439. var $956 = 0, $957 = 0, $958 = 0, $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0, $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0;
  6440. var $974 = 0, $975 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0, $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0;
  6441. var $992 = 0, $993 = 0, $994 = 0, $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, label = 0, sp = 0;
  6442. sp = STACKTOP;
  6443. $0 = $in2;
  6444. $1 = $0;
  6445. $2 = HEAP32[$1>>2]|0;
  6446. $3 = (($0) + 4)|0;
  6447. $4 = $3;
  6448. $5 = HEAP32[$4>>2]|0;
  6449. $6 = (_bitshift64Ashr(0,($2|0),32)|0);
  6450. $7 = tempRet0;
  6451. $8 = $in;
  6452. $9 = $8;
  6453. $10 = HEAP32[$9>>2]|0;
  6454. $11 = (($8) + 4)|0;
  6455. $12 = $11;
  6456. $13 = HEAP32[$12>>2]|0;
  6457. $14 = (_bitshift64Ashr(0,($10|0),32)|0);
  6458. $15 = tempRet0;
  6459. $16 = (___muldi3(($14|0),($15|0),($6|0),($7|0))|0);
  6460. $17 = tempRet0;
  6461. $18 = $output;
  6462. $19 = $18;
  6463. HEAP32[$19>>2] = $16;
  6464. $20 = (($18) + 4)|0;
  6465. $21 = $20;
  6466. HEAP32[$21>>2] = $17;
  6467. $22 = $in2;
  6468. $23 = $22;
  6469. $24 = HEAP32[$23>>2]|0;
  6470. $25 = (($22) + 4)|0;
  6471. $26 = $25;
  6472. $27 = HEAP32[$26>>2]|0;
  6473. $28 = (_bitshift64Ashr(0,($24|0),32)|0);
  6474. $29 = tempRet0;
  6475. $30 = (($in) + 8|0);
  6476. $31 = $30;
  6477. $32 = $31;
  6478. $33 = HEAP32[$32>>2]|0;
  6479. $34 = (($31) + 4)|0;
  6480. $35 = $34;
  6481. $36 = HEAP32[$35>>2]|0;
  6482. $37 = (_bitshift64Ashr(0,($33|0),32)|0);
  6483. $38 = tempRet0;
  6484. $39 = (___muldi3(($37|0),($38|0),($28|0),($29|0))|0);
  6485. $40 = tempRet0;
  6486. $41 = (($in2) + 8|0);
  6487. $42 = $41;
  6488. $43 = $42;
  6489. $44 = HEAP32[$43>>2]|0;
  6490. $45 = (($42) + 4)|0;
  6491. $46 = $45;
  6492. $47 = HEAP32[$46>>2]|0;
  6493. $48 = (_bitshift64Ashr(0,($44|0),32)|0);
  6494. $49 = tempRet0;
  6495. $50 = $in;
  6496. $51 = $50;
  6497. $52 = HEAP32[$51>>2]|0;
  6498. $53 = (($50) + 4)|0;
  6499. $54 = $53;
  6500. $55 = HEAP32[$54>>2]|0;
  6501. $56 = (_bitshift64Ashr(0,($52|0),32)|0);
  6502. $57 = tempRet0;
  6503. $58 = (___muldi3(($56|0),($57|0),($48|0),($49|0))|0);
  6504. $59 = tempRet0;
  6505. $60 = (_i64Add(($58|0),($59|0),($39|0),($40|0))|0);
  6506. $61 = tempRet0;
  6507. $62 = (($output) + 8|0);
  6508. $63 = $62;
  6509. $64 = $63;
  6510. HEAP32[$64>>2] = $60;
  6511. $65 = (($63) + 4)|0;
  6512. $66 = $65;
  6513. HEAP32[$66>>2] = $61;
  6514. $67 = $41;
  6515. $68 = $67;
  6516. $69 = HEAP32[$68>>2]|0;
  6517. $70 = (($67) + 4)|0;
  6518. $71 = $70;
  6519. $72 = HEAP32[$71>>2]|0;
  6520. $73 = (_bitshift64Ashr(0,($69|0),31)|0);
  6521. $74 = tempRet0;
  6522. $75 = $30;
  6523. $76 = $75;
  6524. $77 = HEAP32[$76>>2]|0;
  6525. $78 = (($75) + 4)|0;
  6526. $79 = $78;
  6527. $80 = HEAP32[$79>>2]|0;
  6528. $81 = (_bitshift64Ashr(0,($77|0),32)|0);
  6529. $82 = tempRet0;
  6530. $83 = (___muldi3(($81|0),($82|0),($73|0),($74|0))|0);
  6531. $84 = tempRet0;
  6532. $85 = $in2;
  6533. $86 = $85;
  6534. $87 = HEAP32[$86>>2]|0;
  6535. $88 = (($85) + 4)|0;
  6536. $89 = $88;
  6537. $90 = HEAP32[$89>>2]|0;
  6538. $91 = (_bitshift64Ashr(0,($87|0),32)|0);
  6539. $92 = tempRet0;
  6540. $93 = (($in) + 16|0);
  6541. $94 = $93;
  6542. $95 = $94;
  6543. $96 = HEAP32[$95>>2]|0;
  6544. $97 = (($94) + 4)|0;
  6545. $98 = $97;
  6546. $99 = HEAP32[$98>>2]|0;
  6547. $100 = (_bitshift64Ashr(0,($96|0),32)|0);
  6548. $101 = tempRet0;
  6549. $102 = (___muldi3(($100|0),($101|0),($91|0),($92|0))|0);
  6550. $103 = tempRet0;
  6551. $104 = (_i64Add(($102|0),($103|0),($83|0),($84|0))|0);
  6552. $105 = tempRet0;
  6553. $106 = (($in2) + 16|0);
  6554. $107 = $106;
  6555. $108 = $107;
  6556. $109 = HEAP32[$108>>2]|0;
  6557. $110 = (($107) + 4)|0;
  6558. $111 = $110;
  6559. $112 = HEAP32[$111>>2]|0;
  6560. $113 = (_bitshift64Ashr(0,($109|0),32)|0);
  6561. $114 = tempRet0;
  6562. $115 = $in;
  6563. $116 = $115;
  6564. $117 = HEAP32[$116>>2]|0;
  6565. $118 = (($115) + 4)|0;
  6566. $119 = $118;
  6567. $120 = HEAP32[$119>>2]|0;
  6568. $121 = (_bitshift64Ashr(0,($117|0),32)|0);
  6569. $122 = tempRet0;
  6570. $123 = (___muldi3(($121|0),($122|0),($113|0),($114|0))|0);
  6571. $124 = tempRet0;
  6572. $125 = (_i64Add(($104|0),($105|0),($123|0),($124|0))|0);
  6573. $126 = tempRet0;
  6574. $127 = (($output) + 16|0);
  6575. $128 = $127;
  6576. $129 = $128;
  6577. HEAP32[$129>>2] = $125;
  6578. $130 = (($128) + 4)|0;
  6579. $131 = $130;
  6580. HEAP32[$131>>2] = $126;
  6581. $132 = $41;
  6582. $133 = $132;
  6583. $134 = HEAP32[$133>>2]|0;
  6584. $135 = (($132) + 4)|0;
  6585. $136 = $135;
  6586. $137 = HEAP32[$136>>2]|0;
  6587. $138 = (_bitshift64Ashr(0,($134|0),32)|0);
  6588. $139 = tempRet0;
  6589. $140 = $93;
  6590. $141 = $140;
  6591. $142 = HEAP32[$141>>2]|0;
  6592. $143 = (($140) + 4)|0;
  6593. $144 = $143;
  6594. $145 = HEAP32[$144>>2]|0;
  6595. $146 = (_bitshift64Ashr(0,($142|0),32)|0);
  6596. $147 = tempRet0;
  6597. $148 = (___muldi3(($146|0),($147|0),($138|0),($139|0))|0);
  6598. $149 = tempRet0;
  6599. $150 = $106;
  6600. $151 = $150;
  6601. $152 = HEAP32[$151>>2]|0;
  6602. $153 = (($150) + 4)|0;
  6603. $154 = $153;
  6604. $155 = HEAP32[$154>>2]|0;
  6605. $156 = (_bitshift64Ashr(0,($152|0),32)|0);
  6606. $157 = tempRet0;
  6607. $158 = $30;
  6608. $159 = $158;
  6609. $160 = HEAP32[$159>>2]|0;
  6610. $161 = (($158) + 4)|0;
  6611. $162 = $161;
  6612. $163 = HEAP32[$162>>2]|0;
  6613. $164 = (_bitshift64Ashr(0,($160|0),32)|0);
  6614. $165 = tempRet0;
  6615. $166 = (___muldi3(($164|0),($165|0),($156|0),($157|0))|0);
  6616. $167 = tempRet0;
  6617. $168 = (_i64Add(($166|0),($167|0),($148|0),($149|0))|0);
  6618. $169 = tempRet0;
  6619. $170 = $in2;
  6620. $171 = $170;
  6621. $172 = HEAP32[$171>>2]|0;
  6622. $173 = (($170) + 4)|0;
  6623. $174 = $173;
  6624. $175 = HEAP32[$174>>2]|0;
  6625. $176 = (_bitshift64Ashr(0,($172|0),32)|0);
  6626. $177 = tempRet0;
  6627. $178 = (($in) + 24|0);
  6628. $179 = $178;
  6629. $180 = $179;
  6630. $181 = HEAP32[$180>>2]|0;
  6631. $182 = (($179) + 4)|0;
  6632. $183 = $182;
  6633. $184 = HEAP32[$183>>2]|0;
  6634. $185 = (_bitshift64Ashr(0,($181|0),32)|0);
  6635. $186 = tempRet0;
  6636. $187 = (___muldi3(($185|0),($186|0),($176|0),($177|0))|0);
  6637. $188 = tempRet0;
  6638. $189 = (_i64Add(($168|0),($169|0),($187|0),($188|0))|0);
  6639. $190 = tempRet0;
  6640. $191 = (($in2) + 24|0);
  6641. $192 = $191;
  6642. $193 = $192;
  6643. $194 = HEAP32[$193>>2]|0;
  6644. $195 = (($192) + 4)|0;
  6645. $196 = $195;
  6646. $197 = HEAP32[$196>>2]|0;
  6647. $198 = (_bitshift64Ashr(0,($194|0),32)|0);
  6648. $199 = tempRet0;
  6649. $200 = $in;
  6650. $201 = $200;
  6651. $202 = HEAP32[$201>>2]|0;
  6652. $203 = (($200) + 4)|0;
  6653. $204 = $203;
  6654. $205 = HEAP32[$204>>2]|0;
  6655. $206 = (_bitshift64Ashr(0,($202|0),32)|0);
  6656. $207 = tempRet0;
  6657. $208 = (___muldi3(($206|0),($207|0),($198|0),($199|0))|0);
  6658. $209 = tempRet0;
  6659. $210 = (_i64Add(($189|0),($190|0),($208|0),($209|0))|0);
  6660. $211 = tempRet0;
  6661. $212 = (($output) + 24|0);
  6662. $213 = $212;
  6663. $214 = $213;
  6664. HEAP32[$214>>2] = $210;
  6665. $215 = (($213) + 4)|0;
  6666. $216 = $215;
  6667. HEAP32[$216>>2] = $211;
  6668. $217 = $106;
  6669. $218 = $217;
  6670. $219 = HEAP32[$218>>2]|0;
  6671. $220 = (($217) + 4)|0;
  6672. $221 = $220;
  6673. $222 = HEAP32[$221>>2]|0;
  6674. $223 = (_bitshift64Ashr(0,($219|0),32)|0);
  6675. $224 = tempRet0;
  6676. $225 = $93;
  6677. $226 = $225;
  6678. $227 = HEAP32[$226>>2]|0;
  6679. $228 = (($225) + 4)|0;
  6680. $229 = $228;
  6681. $230 = HEAP32[$229>>2]|0;
  6682. $231 = (_bitshift64Ashr(0,($227|0),32)|0);
  6683. $232 = tempRet0;
  6684. $233 = (___muldi3(($231|0),($232|0),($223|0),($224|0))|0);
  6685. $234 = tempRet0;
  6686. $235 = $41;
  6687. $236 = $235;
  6688. $237 = HEAP32[$236>>2]|0;
  6689. $238 = (($235) + 4)|0;
  6690. $239 = $238;
  6691. $240 = HEAP32[$239>>2]|0;
  6692. $241 = (_bitshift64Ashr(0,($237|0),32)|0);
  6693. $242 = tempRet0;
  6694. $243 = $178;
  6695. $244 = $243;
  6696. $245 = HEAP32[$244>>2]|0;
  6697. $246 = (($243) + 4)|0;
  6698. $247 = $246;
  6699. $248 = HEAP32[$247>>2]|0;
  6700. $249 = (_bitshift64Ashr(0,($245|0),32)|0);
  6701. $250 = tempRet0;
  6702. $251 = (___muldi3(($249|0),($250|0),($241|0),($242|0))|0);
  6703. $252 = tempRet0;
  6704. $253 = $191;
  6705. $254 = $253;
  6706. $255 = HEAP32[$254>>2]|0;
  6707. $256 = (($253) + 4)|0;
  6708. $257 = $256;
  6709. $258 = HEAP32[$257>>2]|0;
  6710. $259 = (_bitshift64Ashr(0,($255|0),32)|0);
  6711. $260 = tempRet0;
  6712. $261 = $30;
  6713. $262 = $261;
  6714. $263 = HEAP32[$262>>2]|0;
  6715. $264 = (($261) + 4)|0;
  6716. $265 = $264;
  6717. $266 = HEAP32[$265>>2]|0;
  6718. $267 = (_bitshift64Ashr(0,($263|0),32)|0);
  6719. $268 = tempRet0;
  6720. $269 = (___muldi3(($267|0),($268|0),($259|0),($260|0))|0);
  6721. $270 = tempRet0;
  6722. $271 = (_i64Add(($269|0),($270|0),($251|0),($252|0))|0);
  6723. $272 = tempRet0;
  6724. $273 = (_bitshift64Shl(($271|0),($272|0),1)|0);
  6725. $274 = tempRet0;
  6726. $275 = (_i64Add(($273|0),($274|0),($233|0),($234|0))|0);
  6727. $276 = tempRet0;
  6728. $277 = $in2;
  6729. $278 = $277;
  6730. $279 = HEAP32[$278>>2]|0;
  6731. $280 = (($277) + 4)|0;
  6732. $281 = $280;
  6733. $282 = HEAP32[$281>>2]|0;
  6734. $283 = (_bitshift64Ashr(0,($279|0),32)|0);
  6735. $284 = tempRet0;
  6736. $285 = (($in) + 32|0);
  6737. $286 = $285;
  6738. $287 = $286;
  6739. $288 = HEAP32[$287>>2]|0;
  6740. $289 = (($286) + 4)|0;
  6741. $290 = $289;
  6742. $291 = HEAP32[$290>>2]|0;
  6743. $292 = (_bitshift64Ashr(0,($288|0),32)|0);
  6744. $293 = tempRet0;
  6745. $294 = (___muldi3(($292|0),($293|0),($283|0),($284|0))|0);
  6746. $295 = tempRet0;
  6747. $296 = (_i64Add(($275|0),($276|0),($294|0),($295|0))|0);
  6748. $297 = tempRet0;
  6749. $298 = (($in2) + 32|0);
  6750. $299 = $298;
  6751. $300 = $299;
  6752. $301 = HEAP32[$300>>2]|0;
  6753. $302 = (($299) + 4)|0;
  6754. $303 = $302;
  6755. $304 = HEAP32[$303>>2]|0;
  6756. $305 = (_bitshift64Ashr(0,($301|0),32)|0);
  6757. $306 = tempRet0;
  6758. $307 = $in;
  6759. $308 = $307;
  6760. $309 = HEAP32[$308>>2]|0;
  6761. $310 = (($307) + 4)|0;
  6762. $311 = $310;
  6763. $312 = HEAP32[$311>>2]|0;
  6764. $313 = (_bitshift64Ashr(0,($309|0),32)|0);
  6765. $314 = tempRet0;
  6766. $315 = (___muldi3(($313|0),($314|0),($305|0),($306|0))|0);
  6767. $316 = tempRet0;
  6768. $317 = (_i64Add(($296|0),($297|0),($315|0),($316|0))|0);
  6769. $318 = tempRet0;
  6770. $319 = (($output) + 32|0);
  6771. $320 = $319;
  6772. $321 = $320;
  6773. HEAP32[$321>>2] = $317;
  6774. $322 = (($320) + 4)|0;
  6775. $323 = $322;
  6776. HEAP32[$323>>2] = $318;
  6777. $324 = $106;
  6778. $325 = $324;
  6779. $326 = HEAP32[$325>>2]|0;
  6780. $327 = (($324) + 4)|0;
  6781. $328 = $327;
  6782. $329 = HEAP32[$328>>2]|0;
  6783. $330 = (_bitshift64Ashr(0,($326|0),32)|0);
  6784. $331 = tempRet0;
  6785. $332 = $178;
  6786. $333 = $332;
  6787. $334 = HEAP32[$333>>2]|0;
  6788. $335 = (($332) + 4)|0;
  6789. $336 = $335;
  6790. $337 = HEAP32[$336>>2]|0;
  6791. $338 = (_bitshift64Ashr(0,($334|0),32)|0);
  6792. $339 = tempRet0;
  6793. $340 = (___muldi3(($338|0),($339|0),($330|0),($331|0))|0);
  6794. $341 = tempRet0;
  6795. $342 = $191;
  6796. $343 = $342;
  6797. $344 = HEAP32[$343>>2]|0;
  6798. $345 = (($342) + 4)|0;
  6799. $346 = $345;
  6800. $347 = HEAP32[$346>>2]|0;
  6801. $348 = (_bitshift64Ashr(0,($344|0),32)|0);
  6802. $349 = tempRet0;
  6803. $350 = $93;
  6804. $351 = $350;
  6805. $352 = HEAP32[$351>>2]|0;
  6806. $353 = (($350) + 4)|0;
  6807. $354 = $353;
  6808. $355 = HEAP32[$354>>2]|0;
  6809. $356 = (_bitshift64Ashr(0,($352|0),32)|0);
  6810. $357 = tempRet0;
  6811. $358 = (___muldi3(($356|0),($357|0),($348|0),($349|0))|0);
  6812. $359 = tempRet0;
  6813. $360 = (_i64Add(($358|0),($359|0),($340|0),($341|0))|0);
  6814. $361 = tempRet0;
  6815. $362 = $41;
  6816. $363 = $362;
  6817. $364 = HEAP32[$363>>2]|0;
  6818. $365 = (($362) + 4)|0;
  6819. $366 = $365;
  6820. $367 = HEAP32[$366>>2]|0;
  6821. $368 = (_bitshift64Ashr(0,($364|0),32)|0);
  6822. $369 = tempRet0;
  6823. $370 = $285;
  6824. $371 = $370;
  6825. $372 = HEAP32[$371>>2]|0;
  6826. $373 = (($370) + 4)|0;
  6827. $374 = $373;
  6828. $375 = HEAP32[$374>>2]|0;
  6829. $376 = (_bitshift64Ashr(0,($372|0),32)|0);
  6830. $377 = tempRet0;
  6831. $378 = (___muldi3(($376|0),($377|0),($368|0),($369|0))|0);
  6832. $379 = tempRet0;
  6833. $380 = (_i64Add(($360|0),($361|0),($378|0),($379|0))|0);
  6834. $381 = tempRet0;
  6835. $382 = $298;
  6836. $383 = $382;
  6837. $384 = HEAP32[$383>>2]|0;
  6838. $385 = (($382) + 4)|0;
  6839. $386 = $385;
  6840. $387 = HEAP32[$386>>2]|0;
  6841. $388 = (_bitshift64Ashr(0,($384|0),32)|0);
  6842. $389 = tempRet0;
  6843. $390 = $30;
  6844. $391 = $390;
  6845. $392 = HEAP32[$391>>2]|0;
  6846. $393 = (($390) + 4)|0;
  6847. $394 = $393;
  6848. $395 = HEAP32[$394>>2]|0;
  6849. $396 = (_bitshift64Ashr(0,($392|0),32)|0);
  6850. $397 = tempRet0;
  6851. $398 = (___muldi3(($396|0),($397|0),($388|0),($389|0))|0);
  6852. $399 = tempRet0;
  6853. $400 = (_i64Add(($380|0),($381|0),($398|0),($399|0))|0);
  6854. $401 = tempRet0;
  6855. $402 = $in2;
  6856. $403 = $402;
  6857. $404 = HEAP32[$403>>2]|0;
  6858. $405 = (($402) + 4)|0;
  6859. $406 = $405;
  6860. $407 = HEAP32[$406>>2]|0;
  6861. $408 = (_bitshift64Ashr(0,($404|0),32)|0);
  6862. $409 = tempRet0;
  6863. $410 = (($in) + 40|0);
  6864. $411 = $410;
  6865. $412 = $411;
  6866. $413 = HEAP32[$412>>2]|0;
  6867. $414 = (($411) + 4)|0;
  6868. $415 = $414;
  6869. $416 = HEAP32[$415>>2]|0;
  6870. $417 = (_bitshift64Ashr(0,($413|0),32)|0);
  6871. $418 = tempRet0;
  6872. $419 = (___muldi3(($417|0),($418|0),($408|0),($409|0))|0);
  6873. $420 = tempRet0;
  6874. $421 = (_i64Add(($400|0),($401|0),($419|0),($420|0))|0);
  6875. $422 = tempRet0;
  6876. $423 = (($in2) + 40|0);
  6877. $424 = $423;
  6878. $425 = $424;
  6879. $426 = HEAP32[$425>>2]|0;
  6880. $427 = (($424) + 4)|0;
  6881. $428 = $427;
  6882. $429 = HEAP32[$428>>2]|0;
  6883. $430 = (_bitshift64Ashr(0,($426|0),32)|0);
  6884. $431 = tempRet0;
  6885. $432 = $in;
  6886. $433 = $432;
  6887. $434 = HEAP32[$433>>2]|0;
  6888. $435 = (($432) + 4)|0;
  6889. $436 = $435;
  6890. $437 = HEAP32[$436>>2]|0;
  6891. $438 = (_bitshift64Ashr(0,($434|0),32)|0);
  6892. $439 = tempRet0;
  6893. $440 = (___muldi3(($438|0),($439|0),($430|0),($431|0))|0);
  6894. $441 = tempRet0;
  6895. $442 = (_i64Add(($421|0),($422|0),($440|0),($441|0))|0);
  6896. $443 = tempRet0;
  6897. $444 = (($output) + 40|0);
  6898. $445 = $444;
  6899. $446 = $445;
  6900. HEAP32[$446>>2] = $442;
  6901. $447 = (($445) + 4)|0;
  6902. $448 = $447;
  6903. HEAP32[$448>>2] = $443;
  6904. $449 = $191;
  6905. $450 = $449;
  6906. $451 = HEAP32[$450>>2]|0;
  6907. $452 = (($449) + 4)|0;
  6908. $453 = $452;
  6909. $454 = HEAP32[$453>>2]|0;
  6910. $455 = (_bitshift64Ashr(0,($451|0),32)|0);
  6911. $456 = tempRet0;
  6912. $457 = $178;
  6913. $458 = $457;
  6914. $459 = HEAP32[$458>>2]|0;
  6915. $460 = (($457) + 4)|0;
  6916. $461 = $460;
  6917. $462 = HEAP32[$461>>2]|0;
  6918. $463 = (_bitshift64Ashr(0,($459|0),32)|0);
  6919. $464 = tempRet0;
  6920. $465 = (___muldi3(($463|0),($464|0),($455|0),($456|0))|0);
  6921. $466 = tempRet0;
  6922. $467 = $41;
  6923. $468 = $467;
  6924. $469 = HEAP32[$468>>2]|0;
  6925. $470 = (($467) + 4)|0;
  6926. $471 = $470;
  6927. $472 = HEAP32[$471>>2]|0;
  6928. $473 = (_bitshift64Ashr(0,($469|0),32)|0);
  6929. $474 = tempRet0;
  6930. $475 = $410;
  6931. $476 = $475;
  6932. $477 = HEAP32[$476>>2]|0;
  6933. $478 = (($475) + 4)|0;
  6934. $479 = $478;
  6935. $480 = HEAP32[$479>>2]|0;
  6936. $481 = (_bitshift64Ashr(0,($477|0),32)|0);
  6937. $482 = tempRet0;
  6938. $483 = (___muldi3(($481|0),($482|0),($473|0),($474|0))|0);
  6939. $484 = tempRet0;
  6940. $485 = (_i64Add(($483|0),($484|0),($465|0),($466|0))|0);
  6941. $486 = tempRet0;
  6942. $487 = $423;
  6943. $488 = $487;
  6944. $489 = HEAP32[$488>>2]|0;
  6945. $490 = (($487) + 4)|0;
  6946. $491 = $490;
  6947. $492 = HEAP32[$491>>2]|0;
  6948. $493 = (_bitshift64Ashr(0,($489|0),32)|0);
  6949. $494 = tempRet0;
  6950. $495 = $30;
  6951. $496 = $495;
  6952. $497 = HEAP32[$496>>2]|0;
  6953. $498 = (($495) + 4)|0;
  6954. $499 = $498;
  6955. $500 = HEAP32[$499>>2]|0;
  6956. $501 = (_bitshift64Ashr(0,($497|0),32)|0);
  6957. $502 = tempRet0;
  6958. $503 = (___muldi3(($501|0),($502|0),($493|0),($494|0))|0);
  6959. $504 = tempRet0;
  6960. $505 = (_i64Add(($485|0),($486|0),($503|0),($504|0))|0);
  6961. $506 = tempRet0;
  6962. $507 = (_bitshift64Shl(($505|0),($506|0),1)|0);
  6963. $508 = tempRet0;
  6964. $509 = $106;
  6965. $510 = $509;
  6966. $511 = HEAP32[$510>>2]|0;
  6967. $512 = (($509) + 4)|0;
  6968. $513 = $512;
  6969. $514 = HEAP32[$513>>2]|0;
  6970. $515 = (_bitshift64Ashr(0,($511|0),32)|0);
  6971. $516 = tempRet0;
  6972. $517 = $285;
  6973. $518 = $517;
  6974. $519 = HEAP32[$518>>2]|0;
  6975. $520 = (($517) + 4)|0;
  6976. $521 = $520;
  6977. $522 = HEAP32[$521>>2]|0;
  6978. $523 = (_bitshift64Ashr(0,($519|0),32)|0);
  6979. $524 = tempRet0;
  6980. $525 = (___muldi3(($523|0),($524|0),($515|0),($516|0))|0);
  6981. $526 = tempRet0;
  6982. $527 = (_i64Add(($507|0),($508|0),($525|0),($526|0))|0);
  6983. $528 = tempRet0;
  6984. $529 = $298;
  6985. $530 = $529;
  6986. $531 = HEAP32[$530>>2]|0;
  6987. $532 = (($529) + 4)|0;
  6988. $533 = $532;
  6989. $534 = HEAP32[$533>>2]|0;
  6990. $535 = (_bitshift64Ashr(0,($531|0),32)|0);
  6991. $536 = tempRet0;
  6992. $537 = $93;
  6993. $538 = $537;
  6994. $539 = HEAP32[$538>>2]|0;
  6995. $540 = (($537) + 4)|0;
  6996. $541 = $540;
  6997. $542 = HEAP32[$541>>2]|0;
  6998. $543 = (_bitshift64Ashr(0,($539|0),32)|0);
  6999. $544 = tempRet0;
  7000. $545 = (___muldi3(($543|0),($544|0),($535|0),($536|0))|0);
  7001. $546 = tempRet0;
  7002. $547 = (_i64Add(($527|0),($528|0),($545|0),($546|0))|0);
  7003. $548 = tempRet0;
  7004. $549 = $in2;
  7005. $550 = $549;
  7006. $551 = HEAP32[$550>>2]|0;
  7007. $552 = (($549) + 4)|0;
  7008. $553 = $552;
  7009. $554 = HEAP32[$553>>2]|0;
  7010. $555 = (_bitshift64Ashr(0,($551|0),32)|0);
  7011. $556 = tempRet0;
  7012. $557 = (($in) + 48|0);
  7013. $558 = $557;
  7014. $559 = $558;
  7015. $560 = HEAP32[$559>>2]|0;
  7016. $561 = (($558) + 4)|0;
  7017. $562 = $561;
  7018. $563 = HEAP32[$562>>2]|0;
  7019. $564 = (_bitshift64Ashr(0,($560|0),32)|0);
  7020. $565 = tempRet0;
  7021. $566 = (___muldi3(($564|0),($565|0),($555|0),($556|0))|0);
  7022. $567 = tempRet0;
  7023. $568 = (_i64Add(($547|0),($548|0),($566|0),($567|0))|0);
  7024. $569 = tempRet0;
  7025. $570 = (($in2) + 48|0);
  7026. $571 = $570;
  7027. $572 = $571;
  7028. $573 = HEAP32[$572>>2]|0;
  7029. $574 = (($571) + 4)|0;
  7030. $575 = $574;
  7031. $576 = HEAP32[$575>>2]|0;
  7032. $577 = (_bitshift64Ashr(0,($573|0),32)|0);
  7033. $578 = tempRet0;
  7034. $579 = $in;
  7035. $580 = $579;
  7036. $581 = HEAP32[$580>>2]|0;
  7037. $582 = (($579) + 4)|0;
  7038. $583 = $582;
  7039. $584 = HEAP32[$583>>2]|0;
  7040. $585 = (_bitshift64Ashr(0,($581|0),32)|0);
  7041. $586 = tempRet0;
  7042. $587 = (___muldi3(($585|0),($586|0),($577|0),($578|0))|0);
  7043. $588 = tempRet0;
  7044. $589 = (_i64Add(($568|0),($569|0),($587|0),($588|0))|0);
  7045. $590 = tempRet0;
  7046. $591 = (($output) + 48|0);
  7047. $592 = $591;
  7048. $593 = $592;
  7049. HEAP32[$593>>2] = $589;
  7050. $594 = (($592) + 4)|0;
  7051. $595 = $594;
  7052. HEAP32[$595>>2] = $590;
  7053. $596 = $191;
  7054. $597 = $596;
  7055. $598 = HEAP32[$597>>2]|0;
  7056. $599 = (($596) + 4)|0;
  7057. $600 = $599;
  7058. $601 = HEAP32[$600>>2]|0;
  7059. $602 = (_bitshift64Ashr(0,($598|0),32)|0);
  7060. $603 = tempRet0;
  7061. $604 = $285;
  7062. $605 = $604;
  7063. $606 = HEAP32[$605>>2]|0;
  7064. $607 = (($604) + 4)|0;
  7065. $608 = $607;
  7066. $609 = HEAP32[$608>>2]|0;
  7067. $610 = (_bitshift64Ashr(0,($606|0),32)|0);
  7068. $611 = tempRet0;
  7069. $612 = (___muldi3(($610|0),($611|0),($602|0),($603|0))|0);
  7070. $613 = tempRet0;
  7071. $614 = $298;
  7072. $615 = $614;
  7073. $616 = HEAP32[$615>>2]|0;
  7074. $617 = (($614) + 4)|0;
  7075. $618 = $617;
  7076. $619 = HEAP32[$618>>2]|0;
  7077. $620 = (_bitshift64Ashr(0,($616|0),32)|0);
  7078. $621 = tempRet0;
  7079. $622 = $178;
  7080. $623 = $622;
  7081. $624 = HEAP32[$623>>2]|0;
  7082. $625 = (($622) + 4)|0;
  7083. $626 = $625;
  7084. $627 = HEAP32[$626>>2]|0;
  7085. $628 = (_bitshift64Ashr(0,($624|0),32)|0);
  7086. $629 = tempRet0;
  7087. $630 = (___muldi3(($628|0),($629|0),($620|0),($621|0))|0);
  7088. $631 = tempRet0;
  7089. $632 = (_i64Add(($630|0),($631|0),($612|0),($613|0))|0);
  7090. $633 = tempRet0;
  7091. $634 = $106;
  7092. $635 = $634;
  7093. $636 = HEAP32[$635>>2]|0;
  7094. $637 = (($634) + 4)|0;
  7095. $638 = $637;
  7096. $639 = HEAP32[$638>>2]|0;
  7097. $640 = (_bitshift64Ashr(0,($636|0),32)|0);
  7098. $641 = tempRet0;
  7099. $642 = $410;
  7100. $643 = $642;
  7101. $644 = HEAP32[$643>>2]|0;
  7102. $645 = (($642) + 4)|0;
  7103. $646 = $645;
  7104. $647 = HEAP32[$646>>2]|0;
  7105. $648 = (_bitshift64Ashr(0,($644|0),32)|0);
  7106. $649 = tempRet0;
  7107. $650 = (___muldi3(($648|0),($649|0),($640|0),($641|0))|0);
  7108. $651 = tempRet0;
  7109. $652 = (_i64Add(($632|0),($633|0),($650|0),($651|0))|0);
  7110. $653 = tempRet0;
  7111. $654 = $423;
  7112. $655 = $654;
  7113. $656 = HEAP32[$655>>2]|0;
  7114. $657 = (($654) + 4)|0;
  7115. $658 = $657;
  7116. $659 = HEAP32[$658>>2]|0;
  7117. $660 = (_bitshift64Ashr(0,($656|0),32)|0);
  7118. $661 = tempRet0;
  7119. $662 = $93;
  7120. $663 = $662;
  7121. $664 = HEAP32[$663>>2]|0;
  7122. $665 = (($662) + 4)|0;
  7123. $666 = $665;
  7124. $667 = HEAP32[$666>>2]|0;
  7125. $668 = (_bitshift64Ashr(0,($664|0),32)|0);
  7126. $669 = tempRet0;
  7127. $670 = (___muldi3(($668|0),($669|0),($660|0),($661|0))|0);
  7128. $671 = tempRet0;
  7129. $672 = (_i64Add(($652|0),($653|0),($670|0),($671|0))|0);
  7130. $673 = tempRet0;
  7131. $674 = $41;
  7132. $675 = $674;
  7133. $676 = HEAP32[$675>>2]|0;
  7134. $677 = (($674) + 4)|0;
  7135. $678 = $677;
  7136. $679 = HEAP32[$678>>2]|0;
  7137. $680 = (_bitshift64Ashr(0,($676|0),32)|0);
  7138. $681 = tempRet0;
  7139. $682 = $557;
  7140. $683 = $682;
  7141. $684 = HEAP32[$683>>2]|0;
  7142. $685 = (($682) + 4)|0;
  7143. $686 = $685;
  7144. $687 = HEAP32[$686>>2]|0;
  7145. $688 = (_bitshift64Ashr(0,($684|0),32)|0);
  7146. $689 = tempRet0;
  7147. $690 = (___muldi3(($688|0),($689|0),($680|0),($681|0))|0);
  7148. $691 = tempRet0;
  7149. $692 = (_i64Add(($672|0),($673|0),($690|0),($691|0))|0);
  7150. $693 = tempRet0;
  7151. $694 = $570;
  7152. $695 = $694;
  7153. $696 = HEAP32[$695>>2]|0;
  7154. $697 = (($694) + 4)|0;
  7155. $698 = $697;
  7156. $699 = HEAP32[$698>>2]|0;
  7157. $700 = (_bitshift64Ashr(0,($696|0),32)|0);
  7158. $701 = tempRet0;
  7159. $702 = $30;
  7160. $703 = $702;
  7161. $704 = HEAP32[$703>>2]|0;
  7162. $705 = (($702) + 4)|0;
  7163. $706 = $705;
  7164. $707 = HEAP32[$706>>2]|0;
  7165. $708 = (_bitshift64Ashr(0,($704|0),32)|0);
  7166. $709 = tempRet0;
  7167. $710 = (___muldi3(($708|0),($709|0),($700|0),($701|0))|0);
  7168. $711 = tempRet0;
  7169. $712 = (_i64Add(($692|0),($693|0),($710|0),($711|0))|0);
  7170. $713 = tempRet0;
  7171. $714 = $in2;
  7172. $715 = $714;
  7173. $716 = HEAP32[$715>>2]|0;
  7174. $717 = (($714) + 4)|0;
  7175. $718 = $717;
  7176. $719 = HEAP32[$718>>2]|0;
  7177. $720 = (_bitshift64Ashr(0,($716|0),32)|0);
  7178. $721 = tempRet0;
  7179. $722 = (($in) + 56|0);
  7180. $723 = $722;
  7181. $724 = $723;
  7182. $725 = HEAP32[$724>>2]|0;
  7183. $726 = (($723) + 4)|0;
  7184. $727 = $726;
  7185. $728 = HEAP32[$727>>2]|0;
  7186. $729 = (_bitshift64Ashr(0,($725|0),32)|0);
  7187. $730 = tempRet0;
  7188. $731 = (___muldi3(($729|0),($730|0),($720|0),($721|0))|0);
  7189. $732 = tempRet0;
  7190. $733 = (_i64Add(($712|0),($713|0),($731|0),($732|0))|0);
  7191. $734 = tempRet0;
  7192. $735 = (($in2) + 56|0);
  7193. $736 = $735;
  7194. $737 = $736;
  7195. $738 = HEAP32[$737>>2]|0;
  7196. $739 = (($736) + 4)|0;
  7197. $740 = $739;
  7198. $741 = HEAP32[$740>>2]|0;
  7199. $742 = (_bitshift64Ashr(0,($738|0),32)|0);
  7200. $743 = tempRet0;
  7201. $744 = $in;
  7202. $745 = $744;
  7203. $746 = HEAP32[$745>>2]|0;
  7204. $747 = (($744) + 4)|0;
  7205. $748 = $747;
  7206. $749 = HEAP32[$748>>2]|0;
  7207. $750 = (_bitshift64Ashr(0,($746|0),32)|0);
  7208. $751 = tempRet0;
  7209. $752 = (___muldi3(($750|0),($751|0),($742|0),($743|0))|0);
  7210. $753 = tempRet0;
  7211. $754 = (_i64Add(($733|0),($734|0),($752|0),($753|0))|0);
  7212. $755 = tempRet0;
  7213. $756 = (($output) + 56|0);
  7214. $757 = $756;
  7215. $758 = $757;
  7216. HEAP32[$758>>2] = $754;
  7217. $759 = (($757) + 4)|0;
  7218. $760 = $759;
  7219. HEAP32[$760>>2] = $755;
  7220. $761 = $298;
  7221. $762 = $761;
  7222. $763 = HEAP32[$762>>2]|0;
  7223. $764 = (($761) + 4)|0;
  7224. $765 = $764;
  7225. $766 = HEAP32[$765>>2]|0;
  7226. $767 = (_bitshift64Ashr(0,($763|0),32)|0);
  7227. $768 = tempRet0;
  7228. $769 = $285;
  7229. $770 = $769;
  7230. $771 = HEAP32[$770>>2]|0;
  7231. $772 = (($769) + 4)|0;
  7232. $773 = $772;
  7233. $774 = HEAP32[$773>>2]|0;
  7234. $775 = (_bitshift64Ashr(0,($771|0),32)|0);
  7235. $776 = tempRet0;
  7236. $777 = (___muldi3(($775|0),($776|0),($767|0),($768|0))|0);
  7237. $778 = tempRet0;
  7238. $779 = $191;
  7239. $780 = $779;
  7240. $781 = HEAP32[$780>>2]|0;
  7241. $782 = (($779) + 4)|0;
  7242. $783 = $782;
  7243. $784 = HEAP32[$783>>2]|0;
  7244. $785 = (_bitshift64Ashr(0,($781|0),32)|0);
  7245. $786 = tempRet0;
  7246. $787 = $410;
  7247. $788 = $787;
  7248. $789 = HEAP32[$788>>2]|0;
  7249. $790 = (($787) + 4)|0;
  7250. $791 = $790;
  7251. $792 = HEAP32[$791>>2]|0;
  7252. $793 = (_bitshift64Ashr(0,($789|0),32)|0);
  7253. $794 = tempRet0;
  7254. $795 = (___muldi3(($793|0),($794|0),($785|0),($786|0))|0);
  7255. $796 = tempRet0;
  7256. $797 = $423;
  7257. $798 = $797;
  7258. $799 = HEAP32[$798>>2]|0;
  7259. $800 = (($797) + 4)|0;
  7260. $801 = $800;
  7261. $802 = HEAP32[$801>>2]|0;
  7262. $803 = (_bitshift64Ashr(0,($799|0),32)|0);
  7263. $804 = tempRet0;
  7264. $805 = $178;
  7265. $806 = $805;
  7266. $807 = HEAP32[$806>>2]|0;
  7267. $808 = (($805) + 4)|0;
  7268. $809 = $808;
  7269. $810 = HEAP32[$809>>2]|0;
  7270. $811 = (_bitshift64Ashr(0,($807|0),32)|0);
  7271. $812 = tempRet0;
  7272. $813 = (___muldi3(($811|0),($812|0),($803|0),($804|0))|0);
  7273. $814 = tempRet0;
  7274. $815 = (_i64Add(($813|0),($814|0),($795|0),($796|0))|0);
  7275. $816 = tempRet0;
  7276. $817 = $41;
  7277. $818 = $817;
  7278. $819 = HEAP32[$818>>2]|0;
  7279. $820 = (($817) + 4)|0;
  7280. $821 = $820;
  7281. $822 = HEAP32[$821>>2]|0;
  7282. $823 = (_bitshift64Ashr(0,($819|0),32)|0);
  7283. $824 = tempRet0;
  7284. $825 = $722;
  7285. $826 = $825;
  7286. $827 = HEAP32[$826>>2]|0;
  7287. $828 = (($825) + 4)|0;
  7288. $829 = $828;
  7289. $830 = HEAP32[$829>>2]|0;
  7290. $831 = (_bitshift64Ashr(0,($827|0),32)|0);
  7291. $832 = tempRet0;
  7292. $833 = (___muldi3(($831|0),($832|0),($823|0),($824|0))|0);
  7293. $834 = tempRet0;
  7294. $835 = (_i64Add(($815|0),($816|0),($833|0),($834|0))|0);
  7295. $836 = tempRet0;
  7296. $837 = $735;
  7297. $838 = $837;
  7298. $839 = HEAP32[$838>>2]|0;
  7299. $840 = (($837) + 4)|0;
  7300. $841 = $840;
  7301. $842 = HEAP32[$841>>2]|0;
  7302. $843 = (_bitshift64Ashr(0,($839|0),32)|0);
  7303. $844 = tempRet0;
  7304. $845 = $30;
  7305. $846 = $845;
  7306. $847 = HEAP32[$846>>2]|0;
  7307. $848 = (($845) + 4)|0;
  7308. $849 = $848;
  7309. $850 = HEAP32[$849>>2]|0;
  7310. $851 = (_bitshift64Ashr(0,($847|0),32)|0);
  7311. $852 = tempRet0;
  7312. $853 = (___muldi3(($851|0),($852|0),($843|0),($844|0))|0);
  7313. $854 = tempRet0;
  7314. $855 = (_i64Add(($835|0),($836|0),($853|0),($854|0))|0);
  7315. $856 = tempRet0;
  7316. $857 = (_bitshift64Shl(($855|0),($856|0),1)|0);
  7317. $858 = tempRet0;
  7318. $859 = (_i64Add(($857|0),($858|0),($777|0),($778|0))|0);
  7319. $860 = tempRet0;
  7320. $861 = $106;
  7321. $862 = $861;
  7322. $863 = HEAP32[$862>>2]|0;
  7323. $864 = (($861) + 4)|0;
  7324. $865 = $864;
  7325. $866 = HEAP32[$865>>2]|0;
  7326. $867 = (_bitshift64Ashr(0,($863|0),32)|0);
  7327. $868 = tempRet0;
  7328. $869 = $557;
  7329. $870 = $869;
  7330. $871 = HEAP32[$870>>2]|0;
  7331. $872 = (($869) + 4)|0;
  7332. $873 = $872;
  7333. $874 = HEAP32[$873>>2]|0;
  7334. $875 = (_bitshift64Ashr(0,($871|0),32)|0);
  7335. $876 = tempRet0;
  7336. $877 = (___muldi3(($875|0),($876|0),($867|0),($868|0))|0);
  7337. $878 = tempRet0;
  7338. $879 = (_i64Add(($859|0),($860|0),($877|0),($878|0))|0);
  7339. $880 = tempRet0;
  7340. $881 = $570;
  7341. $882 = $881;
  7342. $883 = HEAP32[$882>>2]|0;
  7343. $884 = (($881) + 4)|0;
  7344. $885 = $884;
  7345. $886 = HEAP32[$885>>2]|0;
  7346. $887 = (_bitshift64Ashr(0,($883|0),32)|0);
  7347. $888 = tempRet0;
  7348. $889 = $93;
  7349. $890 = $889;
  7350. $891 = HEAP32[$890>>2]|0;
  7351. $892 = (($889) + 4)|0;
  7352. $893 = $892;
  7353. $894 = HEAP32[$893>>2]|0;
  7354. $895 = (_bitshift64Ashr(0,($891|0),32)|0);
  7355. $896 = tempRet0;
  7356. $897 = (___muldi3(($895|0),($896|0),($887|0),($888|0))|0);
  7357. $898 = tempRet0;
  7358. $899 = (_i64Add(($879|0),($880|0),($897|0),($898|0))|0);
  7359. $900 = tempRet0;
  7360. $901 = $in2;
  7361. $902 = $901;
  7362. $903 = HEAP32[$902>>2]|0;
  7363. $904 = (($901) + 4)|0;
  7364. $905 = $904;
  7365. $906 = HEAP32[$905>>2]|0;
  7366. $907 = (_bitshift64Ashr(0,($903|0),32)|0);
  7367. $908 = tempRet0;
  7368. $909 = (($in) + 64|0);
  7369. $910 = $909;
  7370. $911 = $910;
  7371. $912 = HEAP32[$911>>2]|0;
  7372. $913 = (($910) + 4)|0;
  7373. $914 = $913;
  7374. $915 = HEAP32[$914>>2]|0;
  7375. $916 = (_bitshift64Ashr(0,($912|0),32)|0);
  7376. $917 = tempRet0;
  7377. $918 = (___muldi3(($916|0),($917|0),($907|0),($908|0))|0);
  7378. $919 = tempRet0;
  7379. $920 = (_i64Add(($899|0),($900|0),($918|0),($919|0))|0);
  7380. $921 = tempRet0;
  7381. $922 = (($in2) + 64|0);
  7382. $923 = $922;
  7383. $924 = $923;
  7384. $925 = HEAP32[$924>>2]|0;
  7385. $926 = (($923) + 4)|0;
  7386. $927 = $926;
  7387. $928 = HEAP32[$927>>2]|0;
  7388. $929 = (_bitshift64Ashr(0,($925|0),32)|0);
  7389. $930 = tempRet0;
  7390. $931 = $in;
  7391. $932 = $931;
  7392. $933 = HEAP32[$932>>2]|0;
  7393. $934 = (($931) + 4)|0;
  7394. $935 = $934;
  7395. $936 = HEAP32[$935>>2]|0;
  7396. $937 = (_bitshift64Ashr(0,($933|0),32)|0);
  7397. $938 = tempRet0;
  7398. $939 = (___muldi3(($937|0),($938|0),($929|0),($930|0))|0);
  7399. $940 = tempRet0;
  7400. $941 = (_i64Add(($920|0),($921|0),($939|0),($940|0))|0);
  7401. $942 = tempRet0;
  7402. $943 = (($output) + 64|0);
  7403. $944 = $943;
  7404. $945 = $944;
  7405. HEAP32[$945>>2] = $941;
  7406. $946 = (($944) + 4)|0;
  7407. $947 = $946;
  7408. HEAP32[$947>>2] = $942;
  7409. $948 = $298;
  7410. $949 = $948;
  7411. $950 = HEAP32[$949>>2]|0;
  7412. $951 = (($948) + 4)|0;
  7413. $952 = $951;
  7414. $953 = HEAP32[$952>>2]|0;
  7415. $954 = (_bitshift64Ashr(0,($950|0),32)|0);
  7416. $955 = tempRet0;
  7417. $956 = $410;
  7418. $957 = $956;
  7419. $958 = HEAP32[$957>>2]|0;
  7420. $959 = (($956) + 4)|0;
  7421. $960 = $959;
  7422. $961 = HEAP32[$960>>2]|0;
  7423. $962 = (_bitshift64Ashr(0,($958|0),32)|0);
  7424. $963 = tempRet0;
  7425. $964 = (___muldi3(($962|0),($963|0),($954|0),($955|0))|0);
  7426. $965 = tempRet0;
  7427. $966 = $423;
  7428. $967 = $966;
  7429. $968 = HEAP32[$967>>2]|0;
  7430. $969 = (($966) + 4)|0;
  7431. $970 = $969;
  7432. $971 = HEAP32[$970>>2]|0;
  7433. $972 = (_bitshift64Ashr(0,($968|0),32)|0);
  7434. $973 = tempRet0;
  7435. $974 = $285;
  7436. $975 = $974;
  7437. $976 = HEAP32[$975>>2]|0;
  7438. $977 = (($974) + 4)|0;
  7439. $978 = $977;
  7440. $979 = HEAP32[$978>>2]|0;
  7441. $980 = (_bitshift64Ashr(0,($976|0),32)|0);
  7442. $981 = tempRet0;
  7443. $982 = (___muldi3(($980|0),($981|0),($972|0),($973|0))|0);
  7444. $983 = tempRet0;
  7445. $984 = (_i64Add(($982|0),($983|0),($964|0),($965|0))|0);
  7446. $985 = tempRet0;
  7447. $986 = $191;
  7448. $987 = $986;
  7449. $988 = HEAP32[$987>>2]|0;
  7450. $989 = (($986) + 4)|0;
  7451. $990 = $989;
  7452. $991 = HEAP32[$990>>2]|0;
  7453. $992 = (_bitshift64Ashr(0,($988|0),32)|0);
  7454. $993 = tempRet0;
  7455. $994 = $557;
  7456. $995 = $994;
  7457. $996 = HEAP32[$995>>2]|0;
  7458. $997 = (($994) + 4)|0;
  7459. $998 = $997;
  7460. $999 = HEAP32[$998>>2]|0;
  7461. $1000 = (_bitshift64Ashr(0,($996|0),32)|0);
  7462. $1001 = tempRet0;
  7463. $1002 = (___muldi3(($1000|0),($1001|0),($992|0),($993|0))|0);
  7464. $1003 = tempRet0;
  7465. $1004 = (_i64Add(($984|0),($985|0),($1002|0),($1003|0))|0);
  7466. $1005 = tempRet0;
  7467. $1006 = $570;
  7468. $1007 = $1006;
  7469. $1008 = HEAP32[$1007>>2]|0;
  7470. $1009 = (($1006) + 4)|0;
  7471. $1010 = $1009;
  7472. $1011 = HEAP32[$1010>>2]|0;
  7473. $1012 = (_bitshift64Ashr(0,($1008|0),32)|0);
  7474. $1013 = tempRet0;
  7475. $1014 = $178;
  7476. $1015 = $1014;
  7477. $1016 = HEAP32[$1015>>2]|0;
  7478. $1017 = (($1014) + 4)|0;
  7479. $1018 = $1017;
  7480. $1019 = HEAP32[$1018>>2]|0;
  7481. $1020 = (_bitshift64Ashr(0,($1016|0),32)|0);
  7482. $1021 = tempRet0;
  7483. $1022 = (___muldi3(($1020|0),($1021|0),($1012|0),($1013|0))|0);
  7484. $1023 = tempRet0;
  7485. $1024 = (_i64Add(($1004|0),($1005|0),($1022|0),($1023|0))|0);
  7486. $1025 = tempRet0;
  7487. $1026 = $106;
  7488. $1027 = $1026;
  7489. $1028 = HEAP32[$1027>>2]|0;
  7490. $1029 = (($1026) + 4)|0;
  7491. $1030 = $1029;
  7492. $1031 = HEAP32[$1030>>2]|0;
  7493. $1032 = (_bitshift64Ashr(0,($1028|0),32)|0);
  7494. $1033 = tempRet0;
  7495. $1034 = $722;
  7496. $1035 = $1034;
  7497. $1036 = HEAP32[$1035>>2]|0;
  7498. $1037 = (($1034) + 4)|0;
  7499. $1038 = $1037;
  7500. $1039 = HEAP32[$1038>>2]|0;
  7501. $1040 = (_bitshift64Ashr(0,($1036|0),32)|0);
  7502. $1041 = tempRet0;
  7503. $1042 = (___muldi3(($1040|0),($1041|0),($1032|0),($1033|0))|0);
  7504. $1043 = tempRet0;
  7505. $1044 = (_i64Add(($1024|0),($1025|0),($1042|0),($1043|0))|0);
  7506. $1045 = tempRet0;
  7507. $1046 = $735;
  7508. $1047 = $1046;
  7509. $1048 = HEAP32[$1047>>2]|0;
  7510. $1049 = (($1046) + 4)|0;
  7511. $1050 = $1049;
  7512. $1051 = HEAP32[$1050>>2]|0;
  7513. $1052 = (_bitshift64Ashr(0,($1048|0),32)|0);
  7514. $1053 = tempRet0;
  7515. $1054 = $93;
  7516. $1055 = $1054;
  7517. $1056 = HEAP32[$1055>>2]|0;
  7518. $1057 = (($1054) + 4)|0;
  7519. $1058 = $1057;
  7520. $1059 = HEAP32[$1058>>2]|0;
  7521. $1060 = (_bitshift64Ashr(0,($1056|0),32)|0);
  7522. $1061 = tempRet0;
  7523. $1062 = (___muldi3(($1060|0),($1061|0),($1052|0),($1053|0))|0);
  7524. $1063 = tempRet0;
  7525. $1064 = (_i64Add(($1044|0),($1045|0),($1062|0),($1063|0))|0);
  7526. $1065 = tempRet0;
  7527. $1066 = $41;
  7528. $1067 = $1066;
  7529. $1068 = HEAP32[$1067>>2]|0;
  7530. $1069 = (($1066) + 4)|0;
  7531. $1070 = $1069;
  7532. $1071 = HEAP32[$1070>>2]|0;
  7533. $1072 = (_bitshift64Ashr(0,($1068|0),32)|0);
  7534. $1073 = tempRet0;
  7535. $1074 = $909;
  7536. $1075 = $1074;
  7537. $1076 = HEAP32[$1075>>2]|0;
  7538. $1077 = (($1074) + 4)|0;
  7539. $1078 = $1077;
  7540. $1079 = HEAP32[$1078>>2]|0;
  7541. $1080 = (_bitshift64Ashr(0,($1076|0),32)|0);
  7542. $1081 = tempRet0;
  7543. $1082 = (___muldi3(($1080|0),($1081|0),($1072|0),($1073|0))|0);
  7544. $1083 = tempRet0;
  7545. $1084 = (_i64Add(($1064|0),($1065|0),($1082|0),($1083|0))|0);
  7546. $1085 = tempRet0;
  7547. $1086 = $922;
  7548. $1087 = $1086;
  7549. $1088 = HEAP32[$1087>>2]|0;
  7550. $1089 = (($1086) + 4)|0;
  7551. $1090 = $1089;
  7552. $1091 = HEAP32[$1090>>2]|0;
  7553. $1092 = (_bitshift64Ashr(0,($1088|0),32)|0);
  7554. $1093 = tempRet0;
  7555. $1094 = $30;
  7556. $1095 = $1094;
  7557. $1096 = HEAP32[$1095>>2]|0;
  7558. $1097 = (($1094) + 4)|0;
  7559. $1098 = $1097;
  7560. $1099 = HEAP32[$1098>>2]|0;
  7561. $1100 = (_bitshift64Ashr(0,($1096|0),32)|0);
  7562. $1101 = tempRet0;
  7563. $1102 = (___muldi3(($1100|0),($1101|0),($1092|0),($1093|0))|0);
  7564. $1103 = tempRet0;
  7565. $1104 = (_i64Add(($1084|0),($1085|0),($1102|0),($1103|0))|0);
  7566. $1105 = tempRet0;
  7567. $1106 = $in2;
  7568. $1107 = $1106;
  7569. $1108 = HEAP32[$1107>>2]|0;
  7570. $1109 = (($1106) + 4)|0;
  7571. $1110 = $1109;
  7572. $1111 = HEAP32[$1110>>2]|0;
  7573. $1112 = (_bitshift64Ashr(0,($1108|0),32)|0);
  7574. $1113 = tempRet0;
  7575. $1114 = (($in) + 72|0);
  7576. $1115 = $1114;
  7577. $1116 = $1115;
  7578. $1117 = HEAP32[$1116>>2]|0;
  7579. $1118 = (($1115) + 4)|0;
  7580. $1119 = $1118;
  7581. $1120 = HEAP32[$1119>>2]|0;
  7582. $1121 = (_bitshift64Ashr(0,($1117|0),32)|0);
  7583. $1122 = tempRet0;
  7584. $1123 = (___muldi3(($1121|0),($1122|0),($1112|0),($1113|0))|0);
  7585. $1124 = tempRet0;
  7586. $1125 = (_i64Add(($1104|0),($1105|0),($1123|0),($1124|0))|0);
  7587. $1126 = tempRet0;
  7588. $1127 = (($in2) + 72|0);
  7589. $1128 = $1127;
  7590. $1129 = $1128;
  7591. $1130 = HEAP32[$1129>>2]|0;
  7592. $1131 = (($1128) + 4)|0;
  7593. $1132 = $1131;
  7594. $1133 = HEAP32[$1132>>2]|0;
  7595. $1134 = (_bitshift64Ashr(0,($1130|0),32)|0);
  7596. $1135 = tempRet0;
  7597. $1136 = $in;
  7598. $1137 = $1136;
  7599. $1138 = HEAP32[$1137>>2]|0;
  7600. $1139 = (($1136) + 4)|0;
  7601. $1140 = $1139;
  7602. $1141 = HEAP32[$1140>>2]|0;
  7603. $1142 = (_bitshift64Ashr(0,($1138|0),32)|0);
  7604. $1143 = tempRet0;
  7605. $1144 = (___muldi3(($1142|0),($1143|0),($1134|0),($1135|0))|0);
  7606. $1145 = tempRet0;
  7607. $1146 = (_i64Add(($1125|0),($1126|0),($1144|0),($1145|0))|0);
  7608. $1147 = tempRet0;
  7609. $1148 = (($output) + 72|0);
  7610. $1149 = $1148;
  7611. $1150 = $1149;
  7612. HEAP32[$1150>>2] = $1146;
  7613. $1151 = (($1149) + 4)|0;
  7614. $1152 = $1151;
  7615. HEAP32[$1152>>2] = $1147;
  7616. $1153 = $423;
  7617. $1154 = $1153;
  7618. $1155 = HEAP32[$1154>>2]|0;
  7619. $1156 = (($1153) + 4)|0;
  7620. $1157 = $1156;
  7621. $1158 = HEAP32[$1157>>2]|0;
  7622. $1159 = (_bitshift64Ashr(0,($1155|0),32)|0);
  7623. $1160 = tempRet0;
  7624. $1161 = $410;
  7625. $1162 = $1161;
  7626. $1163 = HEAP32[$1162>>2]|0;
  7627. $1164 = (($1161) + 4)|0;
  7628. $1165 = $1164;
  7629. $1166 = HEAP32[$1165>>2]|0;
  7630. $1167 = (_bitshift64Ashr(0,($1163|0),32)|0);
  7631. $1168 = tempRet0;
  7632. $1169 = (___muldi3(($1167|0),($1168|0),($1159|0),($1160|0))|0);
  7633. $1170 = tempRet0;
  7634. $1171 = $191;
  7635. $1172 = $1171;
  7636. $1173 = HEAP32[$1172>>2]|0;
  7637. $1174 = (($1171) + 4)|0;
  7638. $1175 = $1174;
  7639. $1176 = HEAP32[$1175>>2]|0;
  7640. $1177 = (_bitshift64Ashr(0,($1173|0),32)|0);
  7641. $1178 = tempRet0;
  7642. $1179 = $722;
  7643. $1180 = $1179;
  7644. $1181 = HEAP32[$1180>>2]|0;
  7645. $1182 = (($1179) + 4)|0;
  7646. $1183 = $1182;
  7647. $1184 = HEAP32[$1183>>2]|0;
  7648. $1185 = (_bitshift64Ashr(0,($1181|0),32)|0);
  7649. $1186 = tempRet0;
  7650. $1187 = (___muldi3(($1185|0),($1186|0),($1177|0),($1178|0))|0);
  7651. $1188 = tempRet0;
  7652. $1189 = (_i64Add(($1187|0),($1188|0),($1169|0),($1170|0))|0);
  7653. $1190 = tempRet0;
  7654. $1191 = $735;
  7655. $1192 = $1191;
  7656. $1193 = HEAP32[$1192>>2]|0;
  7657. $1194 = (($1191) + 4)|0;
  7658. $1195 = $1194;
  7659. $1196 = HEAP32[$1195>>2]|0;
  7660. $1197 = (_bitshift64Ashr(0,($1193|0),32)|0);
  7661. $1198 = tempRet0;
  7662. $1199 = $178;
  7663. $1200 = $1199;
  7664. $1201 = HEAP32[$1200>>2]|0;
  7665. $1202 = (($1199) + 4)|0;
  7666. $1203 = $1202;
  7667. $1204 = HEAP32[$1203>>2]|0;
  7668. $1205 = (_bitshift64Ashr(0,($1201|0),32)|0);
  7669. $1206 = tempRet0;
  7670. $1207 = (___muldi3(($1205|0),($1206|0),($1197|0),($1198|0))|0);
  7671. $1208 = tempRet0;
  7672. $1209 = (_i64Add(($1189|0),($1190|0),($1207|0),($1208|0))|0);
  7673. $1210 = tempRet0;
  7674. $1211 = $41;
  7675. $1212 = $1211;
  7676. $1213 = HEAP32[$1212>>2]|0;
  7677. $1214 = (($1211) + 4)|0;
  7678. $1215 = $1214;
  7679. $1216 = HEAP32[$1215>>2]|0;
  7680. $1217 = (_bitshift64Ashr(0,($1213|0),32)|0);
  7681. $1218 = tempRet0;
  7682. $1219 = $1114;
  7683. $1220 = $1219;
  7684. $1221 = HEAP32[$1220>>2]|0;
  7685. $1222 = (($1219) + 4)|0;
  7686. $1223 = $1222;
  7687. $1224 = HEAP32[$1223>>2]|0;
  7688. $1225 = (_bitshift64Ashr(0,($1221|0),32)|0);
  7689. $1226 = tempRet0;
  7690. $1227 = (___muldi3(($1225|0),($1226|0),($1217|0),($1218|0))|0);
  7691. $1228 = tempRet0;
  7692. $1229 = (_i64Add(($1209|0),($1210|0),($1227|0),($1228|0))|0);
  7693. $1230 = tempRet0;
  7694. $1231 = $1127;
  7695. $1232 = $1231;
  7696. $1233 = HEAP32[$1232>>2]|0;
  7697. $1234 = (($1231) + 4)|0;
  7698. $1235 = $1234;
  7699. $1236 = HEAP32[$1235>>2]|0;
  7700. $1237 = (_bitshift64Ashr(0,($1233|0),32)|0);
  7701. $1238 = tempRet0;
  7702. $1239 = $30;
  7703. $1240 = $1239;
  7704. $1241 = HEAP32[$1240>>2]|0;
  7705. $1242 = (($1239) + 4)|0;
  7706. $1243 = $1242;
  7707. $1244 = HEAP32[$1243>>2]|0;
  7708. $1245 = (_bitshift64Ashr(0,($1241|0),32)|0);
  7709. $1246 = tempRet0;
  7710. $1247 = (___muldi3(($1245|0),($1246|0),($1237|0),($1238|0))|0);
  7711. $1248 = tempRet0;
  7712. $1249 = (_i64Add(($1229|0),($1230|0),($1247|0),($1248|0))|0);
  7713. $1250 = tempRet0;
  7714. $1251 = (_bitshift64Shl(($1249|0),($1250|0),1)|0);
  7715. $1252 = tempRet0;
  7716. $1253 = $298;
  7717. $1254 = $1253;
  7718. $1255 = HEAP32[$1254>>2]|0;
  7719. $1256 = (($1253) + 4)|0;
  7720. $1257 = $1256;
  7721. $1258 = HEAP32[$1257>>2]|0;
  7722. $1259 = (_bitshift64Ashr(0,($1255|0),32)|0);
  7723. $1260 = tempRet0;
  7724. $1261 = $557;
  7725. $1262 = $1261;
  7726. $1263 = HEAP32[$1262>>2]|0;
  7727. $1264 = (($1261) + 4)|0;
  7728. $1265 = $1264;
  7729. $1266 = HEAP32[$1265>>2]|0;
  7730. $1267 = (_bitshift64Ashr(0,($1263|0),32)|0);
  7731. $1268 = tempRet0;
  7732. $1269 = (___muldi3(($1267|0),($1268|0),($1259|0),($1260|0))|0);
  7733. $1270 = tempRet0;
  7734. $1271 = (_i64Add(($1251|0),($1252|0),($1269|0),($1270|0))|0);
  7735. $1272 = tempRet0;
  7736. $1273 = $570;
  7737. $1274 = $1273;
  7738. $1275 = HEAP32[$1274>>2]|0;
  7739. $1276 = (($1273) + 4)|0;
  7740. $1277 = $1276;
  7741. $1278 = HEAP32[$1277>>2]|0;
  7742. $1279 = (_bitshift64Ashr(0,($1275|0),32)|0);
  7743. $1280 = tempRet0;
  7744. $1281 = $285;
  7745. $1282 = $1281;
  7746. $1283 = HEAP32[$1282>>2]|0;
  7747. $1284 = (($1281) + 4)|0;
  7748. $1285 = $1284;
  7749. $1286 = HEAP32[$1285>>2]|0;
  7750. $1287 = (_bitshift64Ashr(0,($1283|0),32)|0);
  7751. $1288 = tempRet0;
  7752. $1289 = (___muldi3(($1287|0),($1288|0),($1279|0),($1280|0))|0);
  7753. $1290 = tempRet0;
  7754. $1291 = (_i64Add(($1271|0),($1272|0),($1289|0),($1290|0))|0);
  7755. $1292 = tempRet0;
  7756. $1293 = $106;
  7757. $1294 = $1293;
  7758. $1295 = HEAP32[$1294>>2]|0;
  7759. $1296 = (($1293) + 4)|0;
  7760. $1297 = $1296;
  7761. $1298 = HEAP32[$1297>>2]|0;
  7762. $1299 = (_bitshift64Ashr(0,($1295|0),32)|0);
  7763. $1300 = tempRet0;
  7764. $1301 = $909;
  7765. $1302 = $1301;
  7766. $1303 = HEAP32[$1302>>2]|0;
  7767. $1304 = (($1301) + 4)|0;
  7768. $1305 = $1304;
  7769. $1306 = HEAP32[$1305>>2]|0;
  7770. $1307 = (_bitshift64Ashr(0,($1303|0),32)|0);
  7771. $1308 = tempRet0;
  7772. $1309 = (___muldi3(($1307|0),($1308|0),($1299|0),($1300|0))|0);
  7773. $1310 = tempRet0;
  7774. $1311 = (_i64Add(($1291|0),($1292|0),($1309|0),($1310|0))|0);
  7775. $1312 = tempRet0;
  7776. $1313 = $922;
  7777. $1314 = $1313;
  7778. $1315 = HEAP32[$1314>>2]|0;
  7779. $1316 = (($1313) + 4)|0;
  7780. $1317 = $1316;
  7781. $1318 = HEAP32[$1317>>2]|0;
  7782. $1319 = (_bitshift64Ashr(0,($1315|0),32)|0);
  7783. $1320 = tempRet0;
  7784. $1321 = $93;
  7785. $1322 = $1321;
  7786. $1323 = HEAP32[$1322>>2]|0;
  7787. $1324 = (($1321) + 4)|0;
  7788. $1325 = $1324;
  7789. $1326 = HEAP32[$1325>>2]|0;
  7790. $1327 = (_bitshift64Ashr(0,($1323|0),32)|0);
  7791. $1328 = tempRet0;
  7792. $1329 = (___muldi3(($1327|0),($1328|0),($1319|0),($1320|0))|0);
  7793. $1330 = tempRet0;
  7794. $1331 = (_i64Add(($1311|0),($1312|0),($1329|0),($1330|0))|0);
  7795. $1332 = tempRet0;
  7796. $1333 = (($output) + 80|0);
  7797. $1334 = $1333;
  7798. $1335 = $1334;
  7799. HEAP32[$1335>>2] = $1331;
  7800. $1336 = (($1334) + 4)|0;
  7801. $1337 = $1336;
  7802. HEAP32[$1337>>2] = $1332;
  7803. $1338 = $423;
  7804. $1339 = $1338;
  7805. $1340 = HEAP32[$1339>>2]|0;
  7806. $1341 = (($1338) + 4)|0;
  7807. $1342 = $1341;
  7808. $1343 = HEAP32[$1342>>2]|0;
  7809. $1344 = (_bitshift64Ashr(0,($1340|0),32)|0);
  7810. $1345 = tempRet0;
  7811. $1346 = $557;
  7812. $1347 = $1346;
  7813. $1348 = HEAP32[$1347>>2]|0;
  7814. $1349 = (($1346) + 4)|0;
  7815. $1350 = $1349;
  7816. $1351 = HEAP32[$1350>>2]|0;
  7817. $1352 = (_bitshift64Ashr(0,($1348|0),32)|0);
  7818. $1353 = tempRet0;
  7819. $1354 = (___muldi3(($1352|0),($1353|0),($1344|0),($1345|0))|0);
  7820. $1355 = tempRet0;
  7821. $1356 = $570;
  7822. $1357 = $1356;
  7823. $1358 = HEAP32[$1357>>2]|0;
  7824. $1359 = (($1356) + 4)|0;
  7825. $1360 = $1359;
  7826. $1361 = HEAP32[$1360>>2]|0;
  7827. $1362 = (_bitshift64Ashr(0,($1358|0),32)|0);
  7828. $1363 = tempRet0;
  7829. $1364 = $410;
  7830. $1365 = $1364;
  7831. $1366 = HEAP32[$1365>>2]|0;
  7832. $1367 = (($1364) + 4)|0;
  7833. $1368 = $1367;
  7834. $1369 = HEAP32[$1368>>2]|0;
  7835. $1370 = (_bitshift64Ashr(0,($1366|0),32)|0);
  7836. $1371 = tempRet0;
  7837. $1372 = (___muldi3(($1370|0),($1371|0),($1362|0),($1363|0))|0);
  7838. $1373 = tempRet0;
  7839. $1374 = (_i64Add(($1372|0),($1373|0),($1354|0),($1355|0))|0);
  7840. $1375 = tempRet0;
  7841. $1376 = $298;
  7842. $1377 = $1376;
  7843. $1378 = HEAP32[$1377>>2]|0;
  7844. $1379 = (($1376) + 4)|0;
  7845. $1380 = $1379;
  7846. $1381 = HEAP32[$1380>>2]|0;
  7847. $1382 = (_bitshift64Ashr(0,($1378|0),32)|0);
  7848. $1383 = tempRet0;
  7849. $1384 = $722;
  7850. $1385 = $1384;
  7851. $1386 = HEAP32[$1385>>2]|0;
  7852. $1387 = (($1384) + 4)|0;
  7853. $1388 = $1387;
  7854. $1389 = HEAP32[$1388>>2]|0;
  7855. $1390 = (_bitshift64Ashr(0,($1386|0),32)|0);
  7856. $1391 = tempRet0;
  7857. $1392 = (___muldi3(($1390|0),($1391|0),($1382|0),($1383|0))|0);
  7858. $1393 = tempRet0;
  7859. $1394 = (_i64Add(($1374|0),($1375|0),($1392|0),($1393|0))|0);
  7860. $1395 = tempRet0;
  7861. $1396 = $735;
  7862. $1397 = $1396;
  7863. $1398 = HEAP32[$1397>>2]|0;
  7864. $1399 = (($1396) + 4)|0;
  7865. $1400 = $1399;
  7866. $1401 = HEAP32[$1400>>2]|0;
  7867. $1402 = (_bitshift64Ashr(0,($1398|0),32)|0);
  7868. $1403 = tempRet0;
  7869. $1404 = $285;
  7870. $1405 = $1404;
  7871. $1406 = HEAP32[$1405>>2]|0;
  7872. $1407 = (($1404) + 4)|0;
  7873. $1408 = $1407;
  7874. $1409 = HEAP32[$1408>>2]|0;
  7875. $1410 = (_bitshift64Ashr(0,($1406|0),32)|0);
  7876. $1411 = tempRet0;
  7877. $1412 = (___muldi3(($1410|0),($1411|0),($1402|0),($1403|0))|0);
  7878. $1413 = tempRet0;
  7879. $1414 = (_i64Add(($1394|0),($1395|0),($1412|0),($1413|0))|0);
  7880. $1415 = tempRet0;
  7881. $1416 = $191;
  7882. $1417 = $1416;
  7883. $1418 = HEAP32[$1417>>2]|0;
  7884. $1419 = (($1416) + 4)|0;
  7885. $1420 = $1419;
  7886. $1421 = HEAP32[$1420>>2]|0;
  7887. $1422 = (_bitshift64Ashr(0,($1418|0),32)|0);
  7888. $1423 = tempRet0;
  7889. $1424 = $909;
  7890. $1425 = $1424;
  7891. $1426 = HEAP32[$1425>>2]|0;
  7892. $1427 = (($1424) + 4)|0;
  7893. $1428 = $1427;
  7894. $1429 = HEAP32[$1428>>2]|0;
  7895. $1430 = (_bitshift64Ashr(0,($1426|0),32)|0);
  7896. $1431 = tempRet0;
  7897. $1432 = (___muldi3(($1430|0),($1431|0),($1422|0),($1423|0))|0);
  7898. $1433 = tempRet0;
  7899. $1434 = (_i64Add(($1414|0),($1415|0),($1432|0),($1433|0))|0);
  7900. $1435 = tempRet0;
  7901. $1436 = $922;
  7902. $1437 = $1436;
  7903. $1438 = HEAP32[$1437>>2]|0;
  7904. $1439 = (($1436) + 4)|0;
  7905. $1440 = $1439;
  7906. $1441 = HEAP32[$1440>>2]|0;
  7907. $1442 = (_bitshift64Ashr(0,($1438|0),32)|0);
  7908. $1443 = tempRet0;
  7909. $1444 = $178;
  7910. $1445 = $1444;
  7911. $1446 = HEAP32[$1445>>2]|0;
  7912. $1447 = (($1444) + 4)|0;
  7913. $1448 = $1447;
  7914. $1449 = HEAP32[$1448>>2]|0;
  7915. $1450 = (_bitshift64Ashr(0,($1446|0),32)|0);
  7916. $1451 = tempRet0;
  7917. $1452 = (___muldi3(($1450|0),($1451|0),($1442|0),($1443|0))|0);
  7918. $1453 = tempRet0;
  7919. $1454 = (_i64Add(($1434|0),($1435|0),($1452|0),($1453|0))|0);
  7920. $1455 = tempRet0;
  7921. $1456 = $106;
  7922. $1457 = $1456;
  7923. $1458 = HEAP32[$1457>>2]|0;
  7924. $1459 = (($1456) + 4)|0;
  7925. $1460 = $1459;
  7926. $1461 = HEAP32[$1460>>2]|0;
  7927. $1462 = (_bitshift64Ashr(0,($1458|0),32)|0);
  7928. $1463 = tempRet0;
  7929. $1464 = $1114;
  7930. $1465 = $1464;
  7931. $1466 = HEAP32[$1465>>2]|0;
  7932. $1467 = (($1464) + 4)|0;
  7933. $1468 = $1467;
  7934. $1469 = HEAP32[$1468>>2]|0;
  7935. $1470 = (_bitshift64Ashr(0,($1466|0),32)|0);
  7936. $1471 = tempRet0;
  7937. $1472 = (___muldi3(($1470|0),($1471|0),($1462|0),($1463|0))|0);
  7938. $1473 = tempRet0;
  7939. $1474 = (_i64Add(($1454|0),($1455|0),($1472|0),($1473|0))|0);
  7940. $1475 = tempRet0;
  7941. $1476 = $1127;
  7942. $1477 = $1476;
  7943. $1478 = HEAP32[$1477>>2]|0;
  7944. $1479 = (($1476) + 4)|0;
  7945. $1480 = $1479;
  7946. $1481 = HEAP32[$1480>>2]|0;
  7947. $1482 = (_bitshift64Ashr(0,($1478|0),32)|0);
  7948. $1483 = tempRet0;
  7949. $1484 = $93;
  7950. $1485 = $1484;
  7951. $1486 = HEAP32[$1485>>2]|0;
  7952. $1487 = (($1484) + 4)|0;
  7953. $1488 = $1487;
  7954. $1489 = HEAP32[$1488>>2]|0;
  7955. $1490 = (_bitshift64Ashr(0,($1486|0),32)|0);
  7956. $1491 = tempRet0;
  7957. $1492 = (___muldi3(($1490|0),($1491|0),($1482|0),($1483|0))|0);
  7958. $1493 = tempRet0;
  7959. $1494 = (_i64Add(($1474|0),($1475|0),($1492|0),($1493|0))|0);
  7960. $1495 = tempRet0;
  7961. $1496 = (($output) + 88|0);
  7962. $1497 = $1496;
  7963. $1498 = $1497;
  7964. HEAP32[$1498>>2] = $1494;
  7965. $1499 = (($1497) + 4)|0;
  7966. $1500 = $1499;
  7967. HEAP32[$1500>>2] = $1495;
  7968. $1501 = $570;
  7969. $1502 = $1501;
  7970. $1503 = HEAP32[$1502>>2]|0;
  7971. $1504 = (($1501) + 4)|0;
  7972. $1505 = $1504;
  7973. $1506 = HEAP32[$1505>>2]|0;
  7974. $1507 = (_bitshift64Ashr(0,($1503|0),32)|0);
  7975. $1508 = tempRet0;
  7976. $1509 = $557;
  7977. $1510 = $1509;
  7978. $1511 = HEAP32[$1510>>2]|0;
  7979. $1512 = (($1509) + 4)|0;
  7980. $1513 = $1512;
  7981. $1514 = HEAP32[$1513>>2]|0;
  7982. $1515 = (_bitshift64Ashr(0,($1511|0),32)|0);
  7983. $1516 = tempRet0;
  7984. $1517 = (___muldi3(($1515|0),($1516|0),($1507|0),($1508|0))|0);
  7985. $1518 = tempRet0;
  7986. $1519 = $423;
  7987. $1520 = $1519;
  7988. $1521 = HEAP32[$1520>>2]|0;
  7989. $1522 = (($1519) + 4)|0;
  7990. $1523 = $1522;
  7991. $1524 = HEAP32[$1523>>2]|0;
  7992. $1525 = (_bitshift64Ashr(0,($1521|0),32)|0);
  7993. $1526 = tempRet0;
  7994. $1527 = $722;
  7995. $1528 = $1527;
  7996. $1529 = HEAP32[$1528>>2]|0;
  7997. $1530 = (($1527) + 4)|0;
  7998. $1531 = $1530;
  7999. $1532 = HEAP32[$1531>>2]|0;
  8000. $1533 = (_bitshift64Ashr(0,($1529|0),32)|0);
  8001. $1534 = tempRet0;
  8002. $1535 = (___muldi3(($1533|0),($1534|0),($1525|0),($1526|0))|0);
  8003. $1536 = tempRet0;
  8004. $1537 = $735;
  8005. $1538 = $1537;
  8006. $1539 = HEAP32[$1538>>2]|0;
  8007. $1540 = (($1537) + 4)|0;
  8008. $1541 = $1540;
  8009. $1542 = HEAP32[$1541>>2]|0;
  8010. $1543 = (_bitshift64Ashr(0,($1539|0),32)|0);
  8011. $1544 = tempRet0;
  8012. $1545 = $410;
  8013. $1546 = $1545;
  8014. $1547 = HEAP32[$1546>>2]|0;
  8015. $1548 = (($1545) + 4)|0;
  8016. $1549 = $1548;
  8017. $1550 = HEAP32[$1549>>2]|0;
  8018. $1551 = (_bitshift64Ashr(0,($1547|0),32)|0);
  8019. $1552 = tempRet0;
  8020. $1553 = (___muldi3(($1551|0),($1552|0),($1543|0),($1544|0))|0);
  8021. $1554 = tempRet0;
  8022. $1555 = (_i64Add(($1553|0),($1554|0),($1535|0),($1536|0))|0);
  8023. $1556 = tempRet0;
  8024. $1557 = $191;
  8025. $1558 = $1557;
  8026. $1559 = HEAP32[$1558>>2]|0;
  8027. $1560 = (($1557) + 4)|0;
  8028. $1561 = $1560;
  8029. $1562 = HEAP32[$1561>>2]|0;
  8030. $1563 = (_bitshift64Ashr(0,($1559|0),32)|0);
  8031. $1564 = tempRet0;
  8032. $1565 = $1114;
  8033. $1566 = $1565;
  8034. $1567 = HEAP32[$1566>>2]|0;
  8035. $1568 = (($1565) + 4)|0;
  8036. $1569 = $1568;
  8037. $1570 = HEAP32[$1569>>2]|0;
  8038. $1571 = (_bitshift64Ashr(0,($1567|0),32)|0);
  8039. $1572 = tempRet0;
  8040. $1573 = (___muldi3(($1571|0),($1572|0),($1563|0),($1564|0))|0);
  8041. $1574 = tempRet0;
  8042. $1575 = (_i64Add(($1555|0),($1556|0),($1573|0),($1574|0))|0);
  8043. $1576 = tempRet0;
  8044. $1577 = $1127;
  8045. $1578 = $1577;
  8046. $1579 = HEAP32[$1578>>2]|0;
  8047. $1580 = (($1577) + 4)|0;
  8048. $1581 = $1580;
  8049. $1582 = HEAP32[$1581>>2]|0;
  8050. $1583 = (_bitshift64Ashr(0,($1579|0),32)|0);
  8051. $1584 = tempRet0;
  8052. $1585 = $178;
  8053. $1586 = $1585;
  8054. $1587 = HEAP32[$1586>>2]|0;
  8055. $1588 = (($1585) + 4)|0;
  8056. $1589 = $1588;
  8057. $1590 = HEAP32[$1589>>2]|0;
  8058. $1591 = (_bitshift64Ashr(0,($1587|0),32)|0);
  8059. $1592 = tempRet0;
  8060. $1593 = (___muldi3(($1591|0),($1592|0),($1583|0),($1584|0))|0);
  8061. $1594 = tempRet0;
  8062. $1595 = (_i64Add(($1575|0),($1576|0),($1593|0),($1594|0))|0);
  8063. $1596 = tempRet0;
  8064. $1597 = (_bitshift64Shl(($1595|0),($1596|0),1)|0);
  8065. $1598 = tempRet0;
  8066. $1599 = (_i64Add(($1597|0),($1598|0),($1517|0),($1518|0))|0);
  8067. $1600 = tempRet0;
  8068. $1601 = $298;
  8069. $1602 = $1601;
  8070. $1603 = HEAP32[$1602>>2]|0;
  8071. $1604 = (($1601) + 4)|0;
  8072. $1605 = $1604;
  8073. $1606 = HEAP32[$1605>>2]|0;
  8074. $1607 = (_bitshift64Ashr(0,($1603|0),32)|0);
  8075. $1608 = tempRet0;
  8076. $1609 = $909;
  8077. $1610 = $1609;
  8078. $1611 = HEAP32[$1610>>2]|0;
  8079. $1612 = (($1609) + 4)|0;
  8080. $1613 = $1612;
  8081. $1614 = HEAP32[$1613>>2]|0;
  8082. $1615 = (_bitshift64Ashr(0,($1611|0),32)|0);
  8083. $1616 = tempRet0;
  8084. $1617 = (___muldi3(($1615|0),($1616|0),($1607|0),($1608|0))|0);
  8085. $1618 = tempRet0;
  8086. $1619 = (_i64Add(($1599|0),($1600|0),($1617|0),($1618|0))|0);
  8087. $1620 = tempRet0;
  8088. $1621 = $922;
  8089. $1622 = $1621;
  8090. $1623 = HEAP32[$1622>>2]|0;
  8091. $1624 = (($1621) + 4)|0;
  8092. $1625 = $1624;
  8093. $1626 = HEAP32[$1625>>2]|0;
  8094. $1627 = (_bitshift64Ashr(0,($1623|0),32)|0);
  8095. $1628 = tempRet0;
  8096. $1629 = $285;
  8097. $1630 = $1629;
  8098. $1631 = HEAP32[$1630>>2]|0;
  8099. $1632 = (($1629) + 4)|0;
  8100. $1633 = $1632;
  8101. $1634 = HEAP32[$1633>>2]|0;
  8102. $1635 = (_bitshift64Ashr(0,($1631|0),32)|0);
  8103. $1636 = tempRet0;
  8104. $1637 = (___muldi3(($1635|0),($1636|0),($1627|0),($1628|0))|0);
  8105. $1638 = tempRet0;
  8106. $1639 = (_i64Add(($1619|0),($1620|0),($1637|0),($1638|0))|0);
  8107. $1640 = tempRet0;
  8108. $1641 = (($output) + 96|0);
  8109. $1642 = $1641;
  8110. $1643 = $1642;
  8111. HEAP32[$1643>>2] = $1639;
  8112. $1644 = (($1642) + 4)|0;
  8113. $1645 = $1644;
  8114. HEAP32[$1645>>2] = $1640;
  8115. $1646 = $570;
  8116. $1647 = $1646;
  8117. $1648 = HEAP32[$1647>>2]|0;
  8118. $1649 = (($1646) + 4)|0;
  8119. $1650 = $1649;
  8120. $1651 = HEAP32[$1650>>2]|0;
  8121. $1652 = (_bitshift64Ashr(0,($1648|0),32)|0);
  8122. $1653 = tempRet0;
  8123. $1654 = $722;
  8124. $1655 = $1654;
  8125. $1656 = HEAP32[$1655>>2]|0;
  8126. $1657 = (($1654) + 4)|0;
  8127. $1658 = $1657;
  8128. $1659 = HEAP32[$1658>>2]|0;
  8129. $1660 = (_bitshift64Ashr(0,($1656|0),32)|0);
  8130. $1661 = tempRet0;
  8131. $1662 = (___muldi3(($1660|0),($1661|0),($1652|0),($1653|0))|0);
  8132. $1663 = tempRet0;
  8133. $1664 = $735;
  8134. $1665 = $1664;
  8135. $1666 = HEAP32[$1665>>2]|0;
  8136. $1667 = (($1664) + 4)|0;
  8137. $1668 = $1667;
  8138. $1669 = HEAP32[$1668>>2]|0;
  8139. $1670 = (_bitshift64Ashr(0,($1666|0),32)|0);
  8140. $1671 = tempRet0;
  8141. $1672 = $557;
  8142. $1673 = $1672;
  8143. $1674 = HEAP32[$1673>>2]|0;
  8144. $1675 = (($1672) + 4)|0;
  8145. $1676 = $1675;
  8146. $1677 = HEAP32[$1676>>2]|0;
  8147. $1678 = (_bitshift64Ashr(0,($1674|0),32)|0);
  8148. $1679 = tempRet0;
  8149. $1680 = (___muldi3(($1678|0),($1679|0),($1670|0),($1671|0))|0);
  8150. $1681 = tempRet0;
  8151. $1682 = (_i64Add(($1680|0),($1681|0),($1662|0),($1663|0))|0);
  8152. $1683 = tempRet0;
  8153. $1684 = $423;
  8154. $1685 = $1684;
  8155. $1686 = HEAP32[$1685>>2]|0;
  8156. $1687 = (($1684) + 4)|0;
  8157. $1688 = $1687;
  8158. $1689 = HEAP32[$1688>>2]|0;
  8159. $1690 = (_bitshift64Ashr(0,($1686|0),32)|0);
  8160. $1691 = tempRet0;
  8161. $1692 = $909;
  8162. $1693 = $1692;
  8163. $1694 = HEAP32[$1693>>2]|0;
  8164. $1695 = (($1692) + 4)|0;
  8165. $1696 = $1695;
  8166. $1697 = HEAP32[$1696>>2]|0;
  8167. $1698 = (_bitshift64Ashr(0,($1694|0),32)|0);
  8168. $1699 = tempRet0;
  8169. $1700 = (___muldi3(($1698|0),($1699|0),($1690|0),($1691|0))|0);
  8170. $1701 = tempRet0;
  8171. $1702 = (_i64Add(($1682|0),($1683|0),($1700|0),($1701|0))|0);
  8172. $1703 = tempRet0;
  8173. $1704 = $922;
  8174. $1705 = $1704;
  8175. $1706 = HEAP32[$1705>>2]|0;
  8176. $1707 = (($1704) + 4)|0;
  8177. $1708 = $1707;
  8178. $1709 = HEAP32[$1708>>2]|0;
  8179. $1710 = (_bitshift64Ashr(0,($1706|0),32)|0);
  8180. $1711 = tempRet0;
  8181. $1712 = $410;
  8182. $1713 = $1712;
  8183. $1714 = HEAP32[$1713>>2]|0;
  8184. $1715 = (($1712) + 4)|0;
  8185. $1716 = $1715;
  8186. $1717 = HEAP32[$1716>>2]|0;
  8187. $1718 = (_bitshift64Ashr(0,($1714|0),32)|0);
  8188. $1719 = tempRet0;
  8189. $1720 = (___muldi3(($1718|0),($1719|0),($1710|0),($1711|0))|0);
  8190. $1721 = tempRet0;
  8191. $1722 = (_i64Add(($1702|0),($1703|0),($1720|0),($1721|0))|0);
  8192. $1723 = tempRet0;
  8193. $1724 = $298;
  8194. $1725 = $1724;
  8195. $1726 = HEAP32[$1725>>2]|0;
  8196. $1727 = (($1724) + 4)|0;
  8197. $1728 = $1727;
  8198. $1729 = HEAP32[$1728>>2]|0;
  8199. $1730 = (_bitshift64Ashr(0,($1726|0),32)|0);
  8200. $1731 = tempRet0;
  8201. $1732 = $1114;
  8202. $1733 = $1732;
  8203. $1734 = HEAP32[$1733>>2]|0;
  8204. $1735 = (($1732) + 4)|0;
  8205. $1736 = $1735;
  8206. $1737 = HEAP32[$1736>>2]|0;
  8207. $1738 = (_bitshift64Ashr(0,($1734|0),32)|0);
  8208. $1739 = tempRet0;
  8209. $1740 = (___muldi3(($1738|0),($1739|0),($1730|0),($1731|0))|0);
  8210. $1741 = tempRet0;
  8211. $1742 = (_i64Add(($1722|0),($1723|0),($1740|0),($1741|0))|0);
  8212. $1743 = tempRet0;
  8213. $1744 = $1127;
  8214. $1745 = $1744;
  8215. $1746 = HEAP32[$1745>>2]|0;
  8216. $1747 = (($1744) + 4)|0;
  8217. $1748 = $1747;
  8218. $1749 = HEAP32[$1748>>2]|0;
  8219. $1750 = (_bitshift64Ashr(0,($1746|0),32)|0);
  8220. $1751 = tempRet0;
  8221. $1752 = $285;
  8222. $1753 = $1752;
  8223. $1754 = HEAP32[$1753>>2]|0;
  8224. $1755 = (($1752) + 4)|0;
  8225. $1756 = $1755;
  8226. $1757 = HEAP32[$1756>>2]|0;
  8227. $1758 = (_bitshift64Ashr(0,($1754|0),32)|0);
  8228. $1759 = tempRet0;
  8229. $1760 = (___muldi3(($1758|0),($1759|0),($1750|0),($1751|0))|0);
  8230. $1761 = tempRet0;
  8231. $1762 = (_i64Add(($1742|0),($1743|0),($1760|0),($1761|0))|0);
  8232. $1763 = tempRet0;
  8233. $1764 = (($output) + 104|0);
  8234. $1765 = $1764;
  8235. $1766 = $1765;
  8236. HEAP32[$1766>>2] = $1762;
  8237. $1767 = (($1765) + 4)|0;
  8238. $1768 = $1767;
  8239. HEAP32[$1768>>2] = $1763;
  8240. $1769 = $735;
  8241. $1770 = $1769;
  8242. $1771 = HEAP32[$1770>>2]|0;
  8243. $1772 = (($1769) + 4)|0;
  8244. $1773 = $1772;
  8245. $1774 = HEAP32[$1773>>2]|0;
  8246. $1775 = (_bitshift64Ashr(0,($1771|0),32)|0);
  8247. $1776 = tempRet0;
  8248. $1777 = $722;
  8249. $1778 = $1777;
  8250. $1779 = HEAP32[$1778>>2]|0;
  8251. $1780 = (($1777) + 4)|0;
  8252. $1781 = $1780;
  8253. $1782 = HEAP32[$1781>>2]|0;
  8254. $1783 = (_bitshift64Ashr(0,($1779|0),32)|0);
  8255. $1784 = tempRet0;
  8256. $1785 = (___muldi3(($1783|0),($1784|0),($1775|0),($1776|0))|0);
  8257. $1786 = tempRet0;
  8258. $1787 = $423;
  8259. $1788 = $1787;
  8260. $1789 = HEAP32[$1788>>2]|0;
  8261. $1790 = (($1787) + 4)|0;
  8262. $1791 = $1790;
  8263. $1792 = HEAP32[$1791>>2]|0;
  8264. $1793 = (_bitshift64Ashr(0,($1789|0),32)|0);
  8265. $1794 = tempRet0;
  8266. $1795 = $1114;
  8267. $1796 = $1795;
  8268. $1797 = HEAP32[$1796>>2]|0;
  8269. $1798 = (($1795) + 4)|0;
  8270. $1799 = $1798;
  8271. $1800 = HEAP32[$1799>>2]|0;
  8272. $1801 = (_bitshift64Ashr(0,($1797|0),32)|0);
  8273. $1802 = tempRet0;
  8274. $1803 = (___muldi3(($1801|0),($1802|0),($1793|0),($1794|0))|0);
  8275. $1804 = tempRet0;
  8276. $1805 = (_i64Add(($1803|0),($1804|0),($1785|0),($1786|0))|0);
  8277. $1806 = tempRet0;
  8278. $1807 = $1127;
  8279. $1808 = $1807;
  8280. $1809 = HEAP32[$1808>>2]|0;
  8281. $1810 = (($1807) + 4)|0;
  8282. $1811 = $1810;
  8283. $1812 = HEAP32[$1811>>2]|0;
  8284. $1813 = (_bitshift64Ashr(0,($1809|0),32)|0);
  8285. $1814 = tempRet0;
  8286. $1815 = $410;
  8287. $1816 = $1815;
  8288. $1817 = HEAP32[$1816>>2]|0;
  8289. $1818 = (($1815) + 4)|0;
  8290. $1819 = $1818;
  8291. $1820 = HEAP32[$1819>>2]|0;
  8292. $1821 = (_bitshift64Ashr(0,($1817|0),32)|0);
  8293. $1822 = tempRet0;
  8294. $1823 = (___muldi3(($1821|0),($1822|0),($1813|0),($1814|0))|0);
  8295. $1824 = tempRet0;
  8296. $1825 = (_i64Add(($1805|0),($1806|0),($1823|0),($1824|0))|0);
  8297. $1826 = tempRet0;
  8298. $1827 = (_bitshift64Shl(($1825|0),($1826|0),1)|0);
  8299. $1828 = tempRet0;
  8300. $1829 = $570;
  8301. $1830 = $1829;
  8302. $1831 = HEAP32[$1830>>2]|0;
  8303. $1832 = (($1829) + 4)|0;
  8304. $1833 = $1832;
  8305. $1834 = HEAP32[$1833>>2]|0;
  8306. $1835 = (_bitshift64Ashr(0,($1831|0),32)|0);
  8307. $1836 = tempRet0;
  8308. $1837 = $909;
  8309. $1838 = $1837;
  8310. $1839 = HEAP32[$1838>>2]|0;
  8311. $1840 = (($1837) + 4)|0;
  8312. $1841 = $1840;
  8313. $1842 = HEAP32[$1841>>2]|0;
  8314. $1843 = (_bitshift64Ashr(0,($1839|0),32)|0);
  8315. $1844 = tempRet0;
  8316. $1845 = (___muldi3(($1843|0),($1844|0),($1835|0),($1836|0))|0);
  8317. $1846 = tempRet0;
  8318. $1847 = (_i64Add(($1827|0),($1828|0),($1845|0),($1846|0))|0);
  8319. $1848 = tempRet0;
  8320. $1849 = $922;
  8321. $1850 = $1849;
  8322. $1851 = HEAP32[$1850>>2]|0;
  8323. $1852 = (($1849) + 4)|0;
  8324. $1853 = $1852;
  8325. $1854 = HEAP32[$1853>>2]|0;
  8326. $1855 = (_bitshift64Ashr(0,($1851|0),32)|0);
  8327. $1856 = tempRet0;
  8328. $1857 = $557;
  8329. $1858 = $1857;
  8330. $1859 = HEAP32[$1858>>2]|0;
  8331. $1860 = (($1857) + 4)|0;
  8332. $1861 = $1860;
  8333. $1862 = HEAP32[$1861>>2]|0;
  8334. $1863 = (_bitshift64Ashr(0,($1859|0),32)|0);
  8335. $1864 = tempRet0;
  8336. $1865 = (___muldi3(($1863|0),($1864|0),($1855|0),($1856|0))|0);
  8337. $1866 = tempRet0;
  8338. $1867 = (_i64Add(($1847|0),($1848|0),($1865|0),($1866|0))|0);
  8339. $1868 = tempRet0;
  8340. $1869 = (($output) + 112|0);
  8341. $1870 = $1869;
  8342. $1871 = $1870;
  8343. HEAP32[$1871>>2] = $1867;
  8344. $1872 = (($1870) + 4)|0;
  8345. $1873 = $1872;
  8346. HEAP32[$1873>>2] = $1868;
  8347. $1874 = $735;
  8348. $1875 = $1874;
  8349. $1876 = HEAP32[$1875>>2]|0;
  8350. $1877 = (($1874) + 4)|0;
  8351. $1878 = $1877;
  8352. $1879 = HEAP32[$1878>>2]|0;
  8353. $1880 = (_bitshift64Ashr(0,($1876|0),32)|0);
  8354. $1881 = tempRet0;
  8355. $1882 = $909;
  8356. $1883 = $1882;
  8357. $1884 = HEAP32[$1883>>2]|0;
  8358. $1885 = (($1882) + 4)|0;
  8359. $1886 = $1885;
  8360. $1887 = HEAP32[$1886>>2]|0;
  8361. $1888 = (_bitshift64Ashr(0,($1884|0),32)|0);
  8362. $1889 = tempRet0;
  8363. $1890 = (___muldi3(($1888|0),($1889|0),($1880|0),($1881|0))|0);
  8364. $1891 = tempRet0;
  8365. $1892 = $922;
  8366. $1893 = $1892;
  8367. $1894 = HEAP32[$1893>>2]|0;
  8368. $1895 = (($1892) + 4)|0;
  8369. $1896 = $1895;
  8370. $1897 = HEAP32[$1896>>2]|0;
  8371. $1898 = (_bitshift64Ashr(0,($1894|0),32)|0);
  8372. $1899 = tempRet0;
  8373. $1900 = $722;
  8374. $1901 = $1900;
  8375. $1902 = HEAP32[$1901>>2]|0;
  8376. $1903 = (($1900) + 4)|0;
  8377. $1904 = $1903;
  8378. $1905 = HEAP32[$1904>>2]|0;
  8379. $1906 = (_bitshift64Ashr(0,($1902|0),32)|0);
  8380. $1907 = tempRet0;
  8381. $1908 = (___muldi3(($1906|0),($1907|0),($1898|0),($1899|0))|0);
  8382. $1909 = tempRet0;
  8383. $1910 = (_i64Add(($1908|0),($1909|0),($1890|0),($1891|0))|0);
  8384. $1911 = tempRet0;
  8385. $1912 = $570;
  8386. $1913 = $1912;
  8387. $1914 = HEAP32[$1913>>2]|0;
  8388. $1915 = (($1912) + 4)|0;
  8389. $1916 = $1915;
  8390. $1917 = HEAP32[$1916>>2]|0;
  8391. $1918 = (_bitshift64Ashr(0,($1914|0),32)|0);
  8392. $1919 = tempRet0;
  8393. $1920 = $1114;
  8394. $1921 = $1920;
  8395. $1922 = HEAP32[$1921>>2]|0;
  8396. $1923 = (($1920) + 4)|0;
  8397. $1924 = $1923;
  8398. $1925 = HEAP32[$1924>>2]|0;
  8399. $1926 = (_bitshift64Ashr(0,($1922|0),32)|0);
  8400. $1927 = tempRet0;
  8401. $1928 = (___muldi3(($1926|0),($1927|0),($1918|0),($1919|0))|0);
  8402. $1929 = tempRet0;
  8403. $1930 = (_i64Add(($1910|0),($1911|0),($1928|0),($1929|0))|0);
  8404. $1931 = tempRet0;
  8405. $1932 = $1127;
  8406. $1933 = $1932;
  8407. $1934 = HEAP32[$1933>>2]|0;
  8408. $1935 = (($1932) + 4)|0;
  8409. $1936 = $1935;
  8410. $1937 = HEAP32[$1936>>2]|0;
  8411. $1938 = (_bitshift64Ashr(0,($1934|0),32)|0);
  8412. $1939 = tempRet0;
  8413. $1940 = $557;
  8414. $1941 = $1940;
  8415. $1942 = HEAP32[$1941>>2]|0;
  8416. $1943 = (($1940) + 4)|0;
  8417. $1944 = $1943;
  8418. $1945 = HEAP32[$1944>>2]|0;
  8419. $1946 = (_bitshift64Ashr(0,($1942|0),32)|0);
  8420. $1947 = tempRet0;
  8421. $1948 = (___muldi3(($1946|0),($1947|0),($1938|0),($1939|0))|0);
  8422. $1949 = tempRet0;
  8423. $1950 = (_i64Add(($1930|0),($1931|0),($1948|0),($1949|0))|0);
  8424. $1951 = tempRet0;
  8425. $1952 = (($output) + 120|0);
  8426. $1953 = $1952;
  8427. $1954 = $1953;
  8428. HEAP32[$1954>>2] = $1950;
  8429. $1955 = (($1953) + 4)|0;
  8430. $1956 = $1955;
  8431. HEAP32[$1956>>2] = $1951;
  8432. $1957 = $922;
  8433. $1958 = $1957;
  8434. $1959 = HEAP32[$1958>>2]|0;
  8435. $1960 = (($1957) + 4)|0;
  8436. $1961 = $1960;
  8437. $1962 = HEAP32[$1961>>2]|0;
  8438. $1963 = (_bitshift64Ashr(0,($1959|0),32)|0);
  8439. $1964 = tempRet0;
  8440. $1965 = $909;
  8441. $1966 = $1965;
  8442. $1967 = HEAP32[$1966>>2]|0;
  8443. $1968 = (($1965) + 4)|0;
  8444. $1969 = $1968;
  8445. $1970 = HEAP32[$1969>>2]|0;
  8446. $1971 = (_bitshift64Ashr(0,($1967|0),32)|0);
  8447. $1972 = tempRet0;
  8448. $1973 = (___muldi3(($1971|0),($1972|0),($1963|0),($1964|0))|0);
  8449. $1974 = tempRet0;
  8450. $1975 = $735;
  8451. $1976 = $1975;
  8452. $1977 = HEAP32[$1976>>2]|0;
  8453. $1978 = (($1975) + 4)|0;
  8454. $1979 = $1978;
  8455. $1980 = HEAP32[$1979>>2]|0;
  8456. $1981 = (_bitshift64Ashr(0,($1977|0),32)|0);
  8457. $1982 = tempRet0;
  8458. $1983 = $1114;
  8459. $1984 = $1983;
  8460. $1985 = HEAP32[$1984>>2]|0;
  8461. $1986 = (($1983) + 4)|0;
  8462. $1987 = $1986;
  8463. $1988 = HEAP32[$1987>>2]|0;
  8464. $1989 = (_bitshift64Ashr(0,($1985|0),32)|0);
  8465. $1990 = tempRet0;
  8466. $1991 = (___muldi3(($1989|0),($1990|0),($1981|0),($1982|0))|0);
  8467. $1992 = tempRet0;
  8468. $1993 = $1127;
  8469. $1994 = $1993;
  8470. $1995 = HEAP32[$1994>>2]|0;
  8471. $1996 = (($1993) + 4)|0;
  8472. $1997 = $1996;
  8473. $1998 = HEAP32[$1997>>2]|0;
  8474. $1999 = (_bitshift64Ashr(0,($1995|0),32)|0);
  8475. $2000 = tempRet0;
  8476. $2001 = $722;
  8477. $2002 = $2001;
  8478. $2003 = HEAP32[$2002>>2]|0;
  8479. $2004 = (($2001) + 4)|0;
  8480. $2005 = $2004;
  8481. $2006 = HEAP32[$2005>>2]|0;
  8482. $2007 = (_bitshift64Ashr(0,($2003|0),32)|0);
  8483. $2008 = tempRet0;
  8484. $2009 = (___muldi3(($2007|0),($2008|0),($1999|0),($2000|0))|0);
  8485. $2010 = tempRet0;
  8486. $2011 = (_i64Add(($2009|0),($2010|0),($1991|0),($1992|0))|0);
  8487. $2012 = tempRet0;
  8488. $2013 = (_bitshift64Shl(($2011|0),($2012|0),1)|0);
  8489. $2014 = tempRet0;
  8490. $2015 = (_i64Add(($2013|0),($2014|0),($1973|0),($1974|0))|0);
  8491. $2016 = tempRet0;
  8492. $2017 = (($output) + 128|0);
  8493. $2018 = $2017;
  8494. $2019 = $2018;
  8495. HEAP32[$2019>>2] = $2015;
  8496. $2020 = (($2018) + 4)|0;
  8497. $2021 = $2020;
  8498. HEAP32[$2021>>2] = $2016;
  8499. $2022 = $922;
  8500. $2023 = $2022;
  8501. $2024 = HEAP32[$2023>>2]|0;
  8502. $2025 = (($2022) + 4)|0;
  8503. $2026 = $2025;
  8504. $2027 = HEAP32[$2026>>2]|0;
  8505. $2028 = (_bitshift64Ashr(0,($2024|0),32)|0);
  8506. $2029 = tempRet0;
  8507. $2030 = $1114;
  8508. $2031 = $2030;
  8509. $2032 = HEAP32[$2031>>2]|0;
  8510. $2033 = (($2030) + 4)|0;
  8511. $2034 = $2033;
  8512. $2035 = HEAP32[$2034>>2]|0;
  8513. $2036 = (_bitshift64Ashr(0,($2032|0),32)|0);
  8514. $2037 = tempRet0;
  8515. $2038 = (___muldi3(($2036|0),($2037|0),($2028|0),($2029|0))|0);
  8516. $2039 = tempRet0;
  8517. $2040 = $1127;
  8518. $2041 = $2040;
  8519. $2042 = HEAP32[$2041>>2]|0;
  8520. $2043 = (($2040) + 4)|0;
  8521. $2044 = $2043;
  8522. $2045 = HEAP32[$2044>>2]|0;
  8523. $2046 = (_bitshift64Ashr(0,($2042|0),32)|0);
  8524. $2047 = tempRet0;
  8525. $2048 = $909;
  8526. $2049 = $2048;
  8527. $2050 = HEAP32[$2049>>2]|0;
  8528. $2051 = (($2048) + 4)|0;
  8529. $2052 = $2051;
  8530. $2053 = HEAP32[$2052>>2]|0;
  8531. $2054 = (_bitshift64Ashr(0,($2050|0),32)|0);
  8532. $2055 = tempRet0;
  8533. $2056 = (___muldi3(($2054|0),($2055|0),($2046|0),($2047|0))|0);
  8534. $2057 = tempRet0;
  8535. $2058 = (_i64Add(($2056|0),($2057|0),($2038|0),($2039|0))|0);
  8536. $2059 = tempRet0;
  8537. $2060 = (($output) + 136|0);
  8538. $2061 = $2060;
  8539. $2062 = $2061;
  8540. HEAP32[$2062>>2] = $2058;
  8541. $2063 = (($2061) + 4)|0;
  8542. $2064 = $2063;
  8543. HEAP32[$2064>>2] = $2059;
  8544. $2065 = $1127;
  8545. $2066 = $2065;
  8546. $2067 = HEAP32[$2066>>2]|0;
  8547. $2068 = (($2065) + 4)|0;
  8548. $2069 = $2068;
  8549. $2070 = HEAP32[$2069>>2]|0;
  8550. $2071 = (_bitshift64Ashr(0,($2067|0),31)|0);
  8551. $2072 = tempRet0;
  8552. $2073 = $1114;
  8553. $2074 = $2073;
  8554. $2075 = HEAP32[$2074>>2]|0;
  8555. $2076 = (($2073) + 4)|0;
  8556. $2077 = $2076;
  8557. $2078 = HEAP32[$2077>>2]|0;
  8558. $2079 = (_bitshift64Ashr(0,($2075|0),32)|0);
  8559. $2080 = tempRet0;
  8560. $2081 = (___muldi3(($2079|0),($2080|0),($2071|0),($2072|0))|0);
  8561. $2082 = tempRet0;
  8562. $2083 = (($output) + 144|0);
  8563. $2084 = $2083;
  8564. $2085 = $2084;
  8565. HEAP32[$2085>>2] = $2081;
  8566. $2086 = (($2084) + 4)|0;
  8567. $2087 = $2086;
  8568. HEAP32[$2087>>2] = $2082;
  8569. STACKTOP = sp;return;
  8570. }
  8571. function _freduce_degree($output) {
  8572. $output = $output|0;
  8573. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0;
  8574. var $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0;
  8575. var $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0;
  8576. var $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0;
  8577. var $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0;
  8578. var $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0;
  8579. var $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0;
  8580. var $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0;
  8581. var $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0;
  8582. var $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0;
  8583. var $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0;
  8584. var $297 = 0, $298 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0;
  8585. var $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0;
  8586. var $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0;
  8587. var $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0;
  8588. var sp = 0;
  8589. sp = STACKTOP;
  8590. $0 = (($output) + 144|0);
  8591. $1 = $0;
  8592. $2 = $1;
  8593. $3 = HEAP32[$2>>2]|0;
  8594. $4 = (($1) + 4)|0;
  8595. $5 = $4;
  8596. $6 = HEAP32[$5>>2]|0;
  8597. $7 = (_bitshift64Shl(($3|0),($6|0),4)|0);
  8598. $8 = tempRet0;
  8599. $9 = (($output) + 64|0);
  8600. $10 = $9;
  8601. $11 = $10;
  8602. $12 = HEAP32[$11>>2]|0;
  8603. $13 = (($10) + 4)|0;
  8604. $14 = $13;
  8605. $15 = HEAP32[$14>>2]|0;
  8606. $16 = (_i64Add(($12|0),($15|0),($7|0),($8|0))|0);
  8607. $17 = tempRet0;
  8608. $18 = (_bitshift64Shl(($3|0),($6|0),1)|0);
  8609. $19 = tempRet0;
  8610. $20 = (_i64Add(($18|0),($19|0),($16|0),($17|0))|0);
  8611. $21 = tempRet0;
  8612. $22 = $0;
  8613. $23 = $22;
  8614. $24 = HEAP32[$23>>2]|0;
  8615. $25 = (($22) + 4)|0;
  8616. $26 = $25;
  8617. $27 = HEAP32[$26>>2]|0;
  8618. $28 = (_i64Add(($20|0),($21|0),($24|0),($27|0))|0);
  8619. $29 = tempRet0;
  8620. $30 = $9;
  8621. $31 = $30;
  8622. HEAP32[$31>>2] = $28;
  8623. $32 = (($30) + 4)|0;
  8624. $33 = $32;
  8625. HEAP32[$33>>2] = $29;
  8626. $34 = (($output) + 136|0);
  8627. $35 = $34;
  8628. $36 = $35;
  8629. $37 = HEAP32[$36>>2]|0;
  8630. $38 = (($35) + 4)|0;
  8631. $39 = $38;
  8632. $40 = HEAP32[$39>>2]|0;
  8633. $41 = (_bitshift64Shl(($37|0),($40|0),4)|0);
  8634. $42 = tempRet0;
  8635. $43 = (($output) + 56|0);
  8636. $44 = $43;
  8637. $45 = $44;
  8638. $46 = HEAP32[$45>>2]|0;
  8639. $47 = (($44) + 4)|0;
  8640. $48 = $47;
  8641. $49 = HEAP32[$48>>2]|0;
  8642. $50 = (_i64Add(($46|0),($49|0),($41|0),($42|0))|0);
  8643. $51 = tempRet0;
  8644. $52 = (_bitshift64Shl(($37|0),($40|0),1)|0);
  8645. $53 = tempRet0;
  8646. $54 = (_i64Add(($52|0),($53|0),($50|0),($51|0))|0);
  8647. $55 = tempRet0;
  8648. $56 = $34;
  8649. $57 = $56;
  8650. $58 = HEAP32[$57>>2]|0;
  8651. $59 = (($56) + 4)|0;
  8652. $60 = $59;
  8653. $61 = HEAP32[$60>>2]|0;
  8654. $62 = (_i64Add(($54|0),($55|0),($58|0),($61|0))|0);
  8655. $63 = tempRet0;
  8656. $64 = $43;
  8657. $65 = $64;
  8658. HEAP32[$65>>2] = $62;
  8659. $66 = (($64) + 4)|0;
  8660. $67 = $66;
  8661. HEAP32[$67>>2] = $63;
  8662. $68 = (($output) + 128|0);
  8663. $69 = $68;
  8664. $70 = $69;
  8665. $71 = HEAP32[$70>>2]|0;
  8666. $72 = (($69) + 4)|0;
  8667. $73 = $72;
  8668. $74 = HEAP32[$73>>2]|0;
  8669. $75 = (_bitshift64Shl(($71|0),($74|0),4)|0);
  8670. $76 = tempRet0;
  8671. $77 = (($output) + 48|0);
  8672. $78 = $77;
  8673. $79 = $78;
  8674. $80 = HEAP32[$79>>2]|0;
  8675. $81 = (($78) + 4)|0;
  8676. $82 = $81;
  8677. $83 = HEAP32[$82>>2]|0;
  8678. $84 = (_i64Add(($80|0),($83|0),($75|0),($76|0))|0);
  8679. $85 = tempRet0;
  8680. $86 = (_bitshift64Shl(($71|0),($74|0),1)|0);
  8681. $87 = tempRet0;
  8682. $88 = (_i64Add(($86|0),($87|0),($84|0),($85|0))|0);
  8683. $89 = tempRet0;
  8684. $90 = $68;
  8685. $91 = $90;
  8686. $92 = HEAP32[$91>>2]|0;
  8687. $93 = (($90) + 4)|0;
  8688. $94 = $93;
  8689. $95 = HEAP32[$94>>2]|0;
  8690. $96 = (_i64Add(($88|0),($89|0),($92|0),($95|0))|0);
  8691. $97 = tempRet0;
  8692. $98 = $77;
  8693. $99 = $98;
  8694. HEAP32[$99>>2] = $96;
  8695. $100 = (($98) + 4)|0;
  8696. $101 = $100;
  8697. HEAP32[$101>>2] = $97;
  8698. $102 = (($output) + 120|0);
  8699. $103 = $102;
  8700. $104 = $103;
  8701. $105 = HEAP32[$104>>2]|0;
  8702. $106 = (($103) + 4)|0;
  8703. $107 = $106;
  8704. $108 = HEAP32[$107>>2]|0;
  8705. $109 = (_bitshift64Shl(($105|0),($108|0),4)|0);
  8706. $110 = tempRet0;
  8707. $111 = (($output) + 40|0);
  8708. $112 = $111;
  8709. $113 = $112;
  8710. $114 = HEAP32[$113>>2]|0;
  8711. $115 = (($112) + 4)|0;
  8712. $116 = $115;
  8713. $117 = HEAP32[$116>>2]|0;
  8714. $118 = (_i64Add(($114|0),($117|0),($109|0),($110|0))|0);
  8715. $119 = tempRet0;
  8716. $120 = (_bitshift64Shl(($105|0),($108|0),1)|0);
  8717. $121 = tempRet0;
  8718. $122 = (_i64Add(($120|0),($121|0),($118|0),($119|0))|0);
  8719. $123 = tempRet0;
  8720. $124 = $102;
  8721. $125 = $124;
  8722. $126 = HEAP32[$125>>2]|0;
  8723. $127 = (($124) + 4)|0;
  8724. $128 = $127;
  8725. $129 = HEAP32[$128>>2]|0;
  8726. $130 = (_i64Add(($122|0),($123|0),($126|0),($129|0))|0);
  8727. $131 = tempRet0;
  8728. $132 = $111;
  8729. $133 = $132;
  8730. HEAP32[$133>>2] = $130;
  8731. $134 = (($132) + 4)|0;
  8732. $135 = $134;
  8733. HEAP32[$135>>2] = $131;
  8734. $136 = (($output) + 112|0);
  8735. $137 = $136;
  8736. $138 = $137;
  8737. $139 = HEAP32[$138>>2]|0;
  8738. $140 = (($137) + 4)|0;
  8739. $141 = $140;
  8740. $142 = HEAP32[$141>>2]|0;
  8741. $143 = (_bitshift64Shl(($139|0),($142|0),4)|0);
  8742. $144 = tempRet0;
  8743. $145 = (($output) + 32|0);
  8744. $146 = $145;
  8745. $147 = $146;
  8746. $148 = HEAP32[$147>>2]|0;
  8747. $149 = (($146) + 4)|0;
  8748. $150 = $149;
  8749. $151 = HEAP32[$150>>2]|0;
  8750. $152 = (_i64Add(($148|0),($151|0),($143|0),($144|0))|0);
  8751. $153 = tempRet0;
  8752. $154 = (_bitshift64Shl(($139|0),($142|0),1)|0);
  8753. $155 = tempRet0;
  8754. $156 = (_i64Add(($154|0),($155|0),($152|0),($153|0))|0);
  8755. $157 = tempRet0;
  8756. $158 = $136;
  8757. $159 = $158;
  8758. $160 = HEAP32[$159>>2]|0;
  8759. $161 = (($158) + 4)|0;
  8760. $162 = $161;
  8761. $163 = HEAP32[$162>>2]|0;
  8762. $164 = (_i64Add(($156|0),($157|0),($160|0),($163|0))|0);
  8763. $165 = tempRet0;
  8764. $166 = $145;
  8765. $167 = $166;
  8766. HEAP32[$167>>2] = $164;
  8767. $168 = (($166) + 4)|0;
  8768. $169 = $168;
  8769. HEAP32[$169>>2] = $165;
  8770. $170 = (($output) + 104|0);
  8771. $171 = $170;
  8772. $172 = $171;
  8773. $173 = HEAP32[$172>>2]|0;
  8774. $174 = (($171) + 4)|0;
  8775. $175 = $174;
  8776. $176 = HEAP32[$175>>2]|0;
  8777. $177 = (_bitshift64Shl(($173|0),($176|0),4)|0);
  8778. $178 = tempRet0;
  8779. $179 = (($output) + 24|0);
  8780. $180 = $179;
  8781. $181 = $180;
  8782. $182 = HEAP32[$181>>2]|0;
  8783. $183 = (($180) + 4)|0;
  8784. $184 = $183;
  8785. $185 = HEAP32[$184>>2]|0;
  8786. $186 = (_i64Add(($182|0),($185|0),($177|0),($178|0))|0);
  8787. $187 = tempRet0;
  8788. $188 = (_bitshift64Shl(($173|0),($176|0),1)|0);
  8789. $189 = tempRet0;
  8790. $190 = (_i64Add(($188|0),($189|0),($186|0),($187|0))|0);
  8791. $191 = tempRet0;
  8792. $192 = $170;
  8793. $193 = $192;
  8794. $194 = HEAP32[$193>>2]|0;
  8795. $195 = (($192) + 4)|0;
  8796. $196 = $195;
  8797. $197 = HEAP32[$196>>2]|0;
  8798. $198 = (_i64Add(($190|0),($191|0),($194|0),($197|0))|0);
  8799. $199 = tempRet0;
  8800. $200 = $179;
  8801. $201 = $200;
  8802. HEAP32[$201>>2] = $198;
  8803. $202 = (($200) + 4)|0;
  8804. $203 = $202;
  8805. HEAP32[$203>>2] = $199;
  8806. $204 = (($output) + 96|0);
  8807. $205 = $204;
  8808. $206 = $205;
  8809. $207 = HEAP32[$206>>2]|0;
  8810. $208 = (($205) + 4)|0;
  8811. $209 = $208;
  8812. $210 = HEAP32[$209>>2]|0;
  8813. $211 = (_bitshift64Shl(($207|0),($210|0),4)|0);
  8814. $212 = tempRet0;
  8815. $213 = (($output) + 16|0);
  8816. $214 = $213;
  8817. $215 = $214;
  8818. $216 = HEAP32[$215>>2]|0;
  8819. $217 = (($214) + 4)|0;
  8820. $218 = $217;
  8821. $219 = HEAP32[$218>>2]|0;
  8822. $220 = (_i64Add(($216|0),($219|0),($211|0),($212|0))|0);
  8823. $221 = tempRet0;
  8824. $222 = (_bitshift64Shl(($207|0),($210|0),1)|0);
  8825. $223 = tempRet0;
  8826. $224 = (_i64Add(($222|0),($223|0),($220|0),($221|0))|0);
  8827. $225 = tempRet0;
  8828. $226 = $204;
  8829. $227 = $226;
  8830. $228 = HEAP32[$227>>2]|0;
  8831. $229 = (($226) + 4)|0;
  8832. $230 = $229;
  8833. $231 = HEAP32[$230>>2]|0;
  8834. $232 = (_i64Add(($224|0),($225|0),($228|0),($231|0))|0);
  8835. $233 = tempRet0;
  8836. $234 = $213;
  8837. $235 = $234;
  8838. HEAP32[$235>>2] = $232;
  8839. $236 = (($234) + 4)|0;
  8840. $237 = $236;
  8841. HEAP32[$237>>2] = $233;
  8842. $238 = (($output) + 88|0);
  8843. $239 = $238;
  8844. $240 = $239;
  8845. $241 = HEAP32[$240>>2]|0;
  8846. $242 = (($239) + 4)|0;
  8847. $243 = $242;
  8848. $244 = HEAP32[$243>>2]|0;
  8849. $245 = (_bitshift64Shl(($241|0),($244|0),4)|0);
  8850. $246 = tempRet0;
  8851. $247 = (($output) + 8|0);
  8852. $248 = $247;
  8853. $249 = $248;
  8854. $250 = HEAP32[$249>>2]|0;
  8855. $251 = (($248) + 4)|0;
  8856. $252 = $251;
  8857. $253 = HEAP32[$252>>2]|0;
  8858. $254 = (_i64Add(($250|0),($253|0),($245|0),($246|0))|0);
  8859. $255 = tempRet0;
  8860. $256 = (_bitshift64Shl(($241|0),($244|0),1)|0);
  8861. $257 = tempRet0;
  8862. $258 = (_i64Add(($256|0),($257|0),($254|0),($255|0))|0);
  8863. $259 = tempRet0;
  8864. $260 = $238;
  8865. $261 = $260;
  8866. $262 = HEAP32[$261>>2]|0;
  8867. $263 = (($260) + 4)|0;
  8868. $264 = $263;
  8869. $265 = HEAP32[$264>>2]|0;
  8870. $266 = (_i64Add(($258|0),($259|0),($262|0),($265|0))|0);
  8871. $267 = tempRet0;
  8872. $268 = $247;
  8873. $269 = $268;
  8874. HEAP32[$269>>2] = $266;
  8875. $270 = (($268) + 4)|0;
  8876. $271 = $270;
  8877. HEAP32[$271>>2] = $267;
  8878. $272 = (($output) + 80|0);
  8879. $273 = $272;
  8880. $274 = $273;
  8881. $275 = HEAP32[$274>>2]|0;
  8882. $276 = (($273) + 4)|0;
  8883. $277 = $276;
  8884. $278 = HEAP32[$277>>2]|0;
  8885. $279 = (_bitshift64Shl(($275|0),($278|0),4)|0);
  8886. $280 = tempRet0;
  8887. $281 = $output;
  8888. $282 = $281;
  8889. $283 = HEAP32[$282>>2]|0;
  8890. $284 = (($281) + 4)|0;
  8891. $285 = $284;
  8892. $286 = HEAP32[$285>>2]|0;
  8893. $287 = (_i64Add(($283|0),($286|0),($279|0),($280|0))|0);
  8894. $288 = tempRet0;
  8895. $289 = (_bitshift64Shl(($275|0),($278|0),1)|0);
  8896. $290 = tempRet0;
  8897. $291 = (_i64Add(($289|0),($290|0),($287|0),($288|0))|0);
  8898. $292 = tempRet0;
  8899. $293 = (_i64Add(($291|0),($292|0),($275|0),($278|0))|0);
  8900. $294 = tempRet0;
  8901. $295 = $output;
  8902. $296 = $295;
  8903. HEAP32[$296>>2] = $293;
  8904. $297 = (($295) + 4)|0;
  8905. $298 = $297;
  8906. HEAP32[$298>>2] = $294;
  8907. STACKTOP = sp;return;
  8908. }
  8909. function _freduce_coefficients($output) {
  8910. $output = $output|0;
  8911. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0;
  8912. var $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0;
  8913. var $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0;
  8914. var $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0;
  8915. var $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0;
  8916. var $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $i$01 = 0, label = 0, sp = 0;
  8917. sp = STACKTOP;
  8918. $0 = (($output) + 80|0);
  8919. $1 = $0;
  8920. $2 = $1;
  8921. HEAP32[$2>>2] = 0;
  8922. $3 = (($1) + 4)|0;
  8923. $4 = $3;
  8924. HEAP32[$4>>2] = 0;
  8925. $i$01 = 0;
  8926. while(1) {
  8927. $5 = (($output) + ($i$01<<3)|0);
  8928. $6 = $5;
  8929. $7 = $6;
  8930. $8 = HEAP32[$7>>2]|0;
  8931. $9 = (($6) + 4)|0;
  8932. $10 = $9;
  8933. $11 = HEAP32[$10>>2]|0;
  8934. $12 = (_div_by_2_26($8,$11)|0);
  8935. $13 = tempRet0;
  8936. $14 = (_bitshift64Shl(($12|0),($13|0),26)|0);
  8937. $15 = tempRet0;
  8938. $16 = (_i64Subtract(($8|0),($11|0),($14|0),($15|0))|0);
  8939. $17 = tempRet0;
  8940. $18 = $5;
  8941. $19 = $18;
  8942. HEAP32[$19>>2] = $16;
  8943. $20 = (($18) + 4)|0;
  8944. $21 = $20;
  8945. HEAP32[$21>>2] = $17;
  8946. $22 = $i$01 | 1;
  8947. $23 = (($output) + ($22<<3)|0);
  8948. $24 = $23;
  8949. $25 = $24;
  8950. $26 = HEAP32[$25>>2]|0;
  8951. $27 = (($24) + 4)|0;
  8952. $28 = $27;
  8953. $29 = HEAP32[$28>>2]|0;
  8954. $30 = (_i64Add(($26|0),($29|0),($12|0),($13|0))|0);
  8955. $31 = tempRet0;
  8956. $32 = (_div_by_2_25($30,$31)|0);
  8957. $33 = tempRet0;
  8958. $34 = (_bitshift64Shl(($32|0),($33|0),25)|0);
  8959. $35 = tempRet0;
  8960. $36 = (_i64Subtract(($30|0),($31|0),($34|0),($35|0))|0);
  8961. $37 = tempRet0;
  8962. $38 = $23;
  8963. $39 = $38;
  8964. HEAP32[$39>>2] = $36;
  8965. $40 = (($38) + 4)|0;
  8966. $41 = $40;
  8967. HEAP32[$41>>2] = $37;
  8968. $42 = (($i$01) + 2)|0;
  8969. $43 = (($output) + ($42<<3)|0);
  8970. $44 = $43;
  8971. $45 = $44;
  8972. $46 = HEAP32[$45>>2]|0;
  8973. $47 = (($44) + 4)|0;
  8974. $48 = $47;
  8975. $49 = HEAP32[$48>>2]|0;
  8976. $50 = (_i64Add(($46|0),($49|0),($32|0),($33|0))|0);
  8977. $51 = tempRet0;
  8978. $52 = $43;
  8979. $53 = $52;
  8980. HEAP32[$53>>2] = $50;
  8981. $54 = (($52) + 4)|0;
  8982. $55 = $54;
  8983. HEAP32[$55>>2] = $51;
  8984. $56 = ($42>>>0)<(10);
  8985. if ($56) {
  8986. $i$01 = $42;
  8987. } else {
  8988. break;
  8989. }
  8990. }
  8991. $57 = $0;
  8992. $58 = $57;
  8993. $59 = HEAP32[$58>>2]|0;
  8994. $60 = (($57) + 4)|0;
  8995. $61 = $60;
  8996. $62 = HEAP32[$61>>2]|0;
  8997. $63 = (_bitshift64Shl(($59|0),($62|0),4)|0);
  8998. $64 = tempRet0;
  8999. $65 = $output;
  9000. $66 = $65;
  9001. $67 = HEAP32[$66>>2]|0;
  9002. $68 = (($65) + 4)|0;
  9003. $69 = $68;
  9004. $70 = HEAP32[$69>>2]|0;
  9005. $71 = (_i64Add(($67|0),($70|0),($63|0),($64|0))|0);
  9006. $72 = tempRet0;
  9007. $73 = (_bitshift64Shl(($59|0),($62|0),1)|0);
  9008. $74 = tempRet0;
  9009. $75 = (_i64Add(($73|0),($74|0),($71|0),($72|0))|0);
  9010. $76 = tempRet0;
  9011. $77 = (_i64Add(($75|0),($76|0),($59|0),($62|0))|0);
  9012. $78 = tempRet0;
  9013. $79 = $output;
  9014. $80 = $79;
  9015. HEAP32[$80>>2] = $77;
  9016. $81 = (($79) + 4)|0;
  9017. $82 = $81;
  9018. HEAP32[$82>>2] = $78;
  9019. $83 = $0;
  9020. $84 = $83;
  9021. HEAP32[$84>>2] = 0;
  9022. $85 = (($83) + 4)|0;
  9023. $86 = $85;
  9024. HEAP32[$86>>2] = 0;
  9025. $87 = $output;
  9026. $88 = $87;
  9027. $89 = HEAP32[$88>>2]|0;
  9028. $90 = (($87) + 4)|0;
  9029. $91 = $90;
  9030. $92 = HEAP32[$91>>2]|0;
  9031. $93 = (_div_by_2_26($89,$92)|0);
  9032. $94 = tempRet0;
  9033. $95 = (_bitshift64Shl(($93|0),($94|0),26)|0);
  9034. $96 = tempRet0;
  9035. $97 = (_i64Subtract(($89|0),($92|0),($95|0),($96|0))|0);
  9036. $98 = tempRet0;
  9037. $99 = $output;
  9038. $100 = $99;
  9039. HEAP32[$100>>2] = $97;
  9040. $101 = (($99) + 4)|0;
  9041. $102 = $101;
  9042. HEAP32[$102>>2] = $98;
  9043. $103 = (($output) + 8|0);
  9044. $104 = $103;
  9045. $105 = $104;
  9046. $106 = HEAP32[$105>>2]|0;
  9047. $107 = (($104) + 4)|0;
  9048. $108 = $107;
  9049. $109 = HEAP32[$108>>2]|0;
  9050. $110 = (_i64Add(($106|0),($109|0),($93|0),($94|0))|0);
  9051. $111 = tempRet0;
  9052. $112 = $103;
  9053. $113 = $112;
  9054. HEAP32[$113>>2] = $110;
  9055. $114 = (($112) + 4)|0;
  9056. $115 = $114;
  9057. HEAP32[$115>>2] = $111;
  9058. STACKTOP = sp;return;
  9059. }
  9060. function _s32_eq($a,$b) {
  9061. $a = $a|0;
  9062. $b = $b|0;
  9063. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  9064. sp = STACKTOP;
  9065. $0 = $a ^ -1;
  9066. $1 = $0 ^ $b;
  9067. $2 = $1 << 16;
  9068. $3 = $2 & $1;
  9069. $4 = $3 << 8;
  9070. $5 = $4 & $3;
  9071. $6 = $5 << 4;
  9072. $7 = $6 & $5;
  9073. $8 = $7 << 2;
  9074. $9 = $8 & $7;
  9075. $10 = $9 << 1;
  9076. $11 = $10 & $9;
  9077. $12 = $11 >> 31;
  9078. STACKTOP = sp;return ($12|0);
  9079. }
  9080. function _s32_gte($a) {
  9081. $a = $a|0;
  9082. var $0 = 0, $1 = 0, $2 = 0, label = 0, sp = 0;
  9083. sp = STACKTOP;
  9084. $0 = (($a) + -67108845)|0;
  9085. $1 = $0 >> 31;
  9086. $2 = $1 ^ -1;
  9087. STACKTOP = sp;return ($2|0);
  9088. }
  9089. function _fsum($output,$in) {
  9090. $output = $output|0;
  9091. $in = $in|0;
  9092. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0;
  9093. var $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0;
  9094. var $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0;
  9095. var $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0;
  9096. var $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0;
  9097. var $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0;
  9098. var $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0;
  9099. var $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0;
  9100. var $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0;
  9101. var $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
  9102. sp = STACKTOP;
  9103. $0 = $output;
  9104. $1 = $0;
  9105. $2 = HEAP32[$1>>2]|0;
  9106. $3 = (($0) + 4)|0;
  9107. $4 = $3;
  9108. $5 = HEAP32[$4>>2]|0;
  9109. $6 = $in;
  9110. $7 = $6;
  9111. $8 = HEAP32[$7>>2]|0;
  9112. $9 = (($6) + 4)|0;
  9113. $10 = $9;
  9114. $11 = HEAP32[$10>>2]|0;
  9115. $12 = (_i64Add(($8|0),($11|0),($2|0),($5|0))|0);
  9116. $13 = tempRet0;
  9117. $14 = $output;
  9118. $15 = $14;
  9119. HEAP32[$15>>2] = $12;
  9120. $16 = (($14) + 4)|0;
  9121. $17 = $16;
  9122. HEAP32[$17>>2] = $13;
  9123. $18 = (($output) + 8|0);
  9124. $19 = $18;
  9125. $20 = $19;
  9126. $21 = HEAP32[$20>>2]|0;
  9127. $22 = (($19) + 4)|0;
  9128. $23 = $22;
  9129. $24 = HEAP32[$23>>2]|0;
  9130. $25 = (($in) + 8|0);
  9131. $26 = $25;
  9132. $27 = $26;
  9133. $28 = HEAP32[$27>>2]|0;
  9134. $29 = (($26) + 4)|0;
  9135. $30 = $29;
  9136. $31 = HEAP32[$30>>2]|0;
  9137. $32 = (_i64Add(($28|0),($31|0),($21|0),($24|0))|0);
  9138. $33 = tempRet0;
  9139. $34 = $18;
  9140. $35 = $34;
  9141. HEAP32[$35>>2] = $32;
  9142. $36 = (($34) + 4)|0;
  9143. $37 = $36;
  9144. HEAP32[$37>>2] = $33;
  9145. $38 = (($output) + 16|0);
  9146. $39 = $38;
  9147. $40 = $39;
  9148. $41 = HEAP32[$40>>2]|0;
  9149. $42 = (($39) + 4)|0;
  9150. $43 = $42;
  9151. $44 = HEAP32[$43>>2]|0;
  9152. $45 = (($in) + 16|0);
  9153. $46 = $45;
  9154. $47 = $46;
  9155. $48 = HEAP32[$47>>2]|0;
  9156. $49 = (($46) + 4)|0;
  9157. $50 = $49;
  9158. $51 = HEAP32[$50>>2]|0;
  9159. $52 = (_i64Add(($48|0),($51|0),($41|0),($44|0))|0);
  9160. $53 = tempRet0;
  9161. $54 = $38;
  9162. $55 = $54;
  9163. HEAP32[$55>>2] = $52;
  9164. $56 = (($54) + 4)|0;
  9165. $57 = $56;
  9166. HEAP32[$57>>2] = $53;
  9167. $58 = (($output) + 24|0);
  9168. $59 = $58;
  9169. $60 = $59;
  9170. $61 = HEAP32[$60>>2]|0;
  9171. $62 = (($59) + 4)|0;
  9172. $63 = $62;
  9173. $64 = HEAP32[$63>>2]|0;
  9174. $65 = (($in) + 24|0);
  9175. $66 = $65;
  9176. $67 = $66;
  9177. $68 = HEAP32[$67>>2]|0;
  9178. $69 = (($66) + 4)|0;
  9179. $70 = $69;
  9180. $71 = HEAP32[$70>>2]|0;
  9181. $72 = (_i64Add(($68|0),($71|0),($61|0),($64|0))|0);
  9182. $73 = tempRet0;
  9183. $74 = $58;
  9184. $75 = $74;
  9185. HEAP32[$75>>2] = $72;
  9186. $76 = (($74) + 4)|0;
  9187. $77 = $76;
  9188. HEAP32[$77>>2] = $73;
  9189. $78 = (($output) + 32|0);
  9190. $79 = $78;
  9191. $80 = $79;
  9192. $81 = HEAP32[$80>>2]|0;
  9193. $82 = (($79) + 4)|0;
  9194. $83 = $82;
  9195. $84 = HEAP32[$83>>2]|0;
  9196. $85 = (($in) + 32|0);
  9197. $86 = $85;
  9198. $87 = $86;
  9199. $88 = HEAP32[$87>>2]|0;
  9200. $89 = (($86) + 4)|0;
  9201. $90 = $89;
  9202. $91 = HEAP32[$90>>2]|0;
  9203. $92 = (_i64Add(($88|0),($91|0),($81|0),($84|0))|0);
  9204. $93 = tempRet0;
  9205. $94 = $78;
  9206. $95 = $94;
  9207. HEAP32[$95>>2] = $92;
  9208. $96 = (($94) + 4)|0;
  9209. $97 = $96;
  9210. HEAP32[$97>>2] = $93;
  9211. $98 = (($output) + 40|0);
  9212. $99 = $98;
  9213. $100 = $99;
  9214. $101 = HEAP32[$100>>2]|0;
  9215. $102 = (($99) + 4)|0;
  9216. $103 = $102;
  9217. $104 = HEAP32[$103>>2]|0;
  9218. $105 = (($in) + 40|0);
  9219. $106 = $105;
  9220. $107 = $106;
  9221. $108 = HEAP32[$107>>2]|0;
  9222. $109 = (($106) + 4)|0;
  9223. $110 = $109;
  9224. $111 = HEAP32[$110>>2]|0;
  9225. $112 = (_i64Add(($108|0),($111|0),($101|0),($104|0))|0);
  9226. $113 = tempRet0;
  9227. $114 = $98;
  9228. $115 = $114;
  9229. HEAP32[$115>>2] = $112;
  9230. $116 = (($114) + 4)|0;
  9231. $117 = $116;
  9232. HEAP32[$117>>2] = $113;
  9233. $118 = (($output) + 48|0);
  9234. $119 = $118;
  9235. $120 = $119;
  9236. $121 = HEAP32[$120>>2]|0;
  9237. $122 = (($119) + 4)|0;
  9238. $123 = $122;
  9239. $124 = HEAP32[$123>>2]|0;
  9240. $125 = (($in) + 48|0);
  9241. $126 = $125;
  9242. $127 = $126;
  9243. $128 = HEAP32[$127>>2]|0;
  9244. $129 = (($126) + 4)|0;
  9245. $130 = $129;
  9246. $131 = HEAP32[$130>>2]|0;
  9247. $132 = (_i64Add(($128|0),($131|0),($121|0),($124|0))|0);
  9248. $133 = tempRet0;
  9249. $134 = $118;
  9250. $135 = $134;
  9251. HEAP32[$135>>2] = $132;
  9252. $136 = (($134) + 4)|0;
  9253. $137 = $136;
  9254. HEAP32[$137>>2] = $133;
  9255. $138 = (($output) + 56|0);
  9256. $139 = $138;
  9257. $140 = $139;
  9258. $141 = HEAP32[$140>>2]|0;
  9259. $142 = (($139) + 4)|0;
  9260. $143 = $142;
  9261. $144 = HEAP32[$143>>2]|0;
  9262. $145 = (($in) + 56|0);
  9263. $146 = $145;
  9264. $147 = $146;
  9265. $148 = HEAP32[$147>>2]|0;
  9266. $149 = (($146) + 4)|0;
  9267. $150 = $149;
  9268. $151 = HEAP32[$150>>2]|0;
  9269. $152 = (_i64Add(($148|0),($151|0),($141|0),($144|0))|0);
  9270. $153 = tempRet0;
  9271. $154 = $138;
  9272. $155 = $154;
  9273. HEAP32[$155>>2] = $152;
  9274. $156 = (($154) + 4)|0;
  9275. $157 = $156;
  9276. HEAP32[$157>>2] = $153;
  9277. $158 = (($output) + 64|0);
  9278. $159 = $158;
  9279. $160 = $159;
  9280. $161 = HEAP32[$160>>2]|0;
  9281. $162 = (($159) + 4)|0;
  9282. $163 = $162;
  9283. $164 = HEAP32[$163>>2]|0;
  9284. $165 = (($in) + 64|0);
  9285. $166 = $165;
  9286. $167 = $166;
  9287. $168 = HEAP32[$167>>2]|0;
  9288. $169 = (($166) + 4)|0;
  9289. $170 = $169;
  9290. $171 = HEAP32[$170>>2]|0;
  9291. $172 = (_i64Add(($168|0),($171|0),($161|0),($164|0))|0);
  9292. $173 = tempRet0;
  9293. $174 = $158;
  9294. $175 = $174;
  9295. HEAP32[$175>>2] = $172;
  9296. $176 = (($174) + 4)|0;
  9297. $177 = $176;
  9298. HEAP32[$177>>2] = $173;
  9299. $178 = (($output) + 72|0);
  9300. $179 = $178;
  9301. $180 = $179;
  9302. $181 = HEAP32[$180>>2]|0;
  9303. $182 = (($179) + 4)|0;
  9304. $183 = $182;
  9305. $184 = HEAP32[$183>>2]|0;
  9306. $185 = (($in) + 72|0);
  9307. $186 = $185;
  9308. $187 = $186;
  9309. $188 = HEAP32[$187>>2]|0;
  9310. $189 = (($186) + 4)|0;
  9311. $190 = $189;
  9312. $191 = HEAP32[$190>>2]|0;
  9313. $192 = (_i64Add(($188|0),($191|0),($181|0),($184|0))|0);
  9314. $193 = tempRet0;
  9315. $194 = $178;
  9316. $195 = $194;
  9317. HEAP32[$195>>2] = $192;
  9318. $196 = (($194) + 4)|0;
  9319. $197 = $196;
  9320. HEAP32[$197>>2] = $193;
  9321. STACKTOP = sp;return;
  9322. }
  9323. function _fdifference($output,$in) {
  9324. $output = $output|0;
  9325. $in = $in|0;
  9326. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0;
  9327. var $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0;
  9328. var $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0;
  9329. var $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0;
  9330. var $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0;
  9331. var $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0;
  9332. var $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0;
  9333. var $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0;
  9334. var $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0;
  9335. var $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
  9336. sp = STACKTOP;
  9337. $0 = $in;
  9338. $1 = $0;
  9339. $2 = HEAP32[$1>>2]|0;
  9340. $3 = (($0) + 4)|0;
  9341. $4 = $3;
  9342. $5 = HEAP32[$4>>2]|0;
  9343. $6 = $output;
  9344. $7 = $6;
  9345. $8 = HEAP32[$7>>2]|0;
  9346. $9 = (($6) + 4)|0;
  9347. $10 = $9;
  9348. $11 = HEAP32[$10>>2]|0;
  9349. $12 = (_i64Subtract(($2|0),($5|0),($8|0),($11|0))|0);
  9350. $13 = tempRet0;
  9351. $14 = $output;
  9352. $15 = $14;
  9353. HEAP32[$15>>2] = $12;
  9354. $16 = (($14) + 4)|0;
  9355. $17 = $16;
  9356. HEAP32[$17>>2] = $13;
  9357. $18 = (($in) + 8|0);
  9358. $19 = $18;
  9359. $20 = $19;
  9360. $21 = HEAP32[$20>>2]|0;
  9361. $22 = (($19) + 4)|0;
  9362. $23 = $22;
  9363. $24 = HEAP32[$23>>2]|0;
  9364. $25 = (($output) + 8|0);
  9365. $26 = $25;
  9366. $27 = $26;
  9367. $28 = HEAP32[$27>>2]|0;
  9368. $29 = (($26) + 4)|0;
  9369. $30 = $29;
  9370. $31 = HEAP32[$30>>2]|0;
  9371. $32 = (_i64Subtract(($21|0),($24|0),($28|0),($31|0))|0);
  9372. $33 = tempRet0;
  9373. $34 = $25;
  9374. $35 = $34;
  9375. HEAP32[$35>>2] = $32;
  9376. $36 = (($34) + 4)|0;
  9377. $37 = $36;
  9378. HEAP32[$37>>2] = $33;
  9379. $38 = (($in) + 16|0);
  9380. $39 = $38;
  9381. $40 = $39;
  9382. $41 = HEAP32[$40>>2]|0;
  9383. $42 = (($39) + 4)|0;
  9384. $43 = $42;
  9385. $44 = HEAP32[$43>>2]|0;
  9386. $45 = (($output) + 16|0);
  9387. $46 = $45;
  9388. $47 = $46;
  9389. $48 = HEAP32[$47>>2]|0;
  9390. $49 = (($46) + 4)|0;
  9391. $50 = $49;
  9392. $51 = HEAP32[$50>>2]|0;
  9393. $52 = (_i64Subtract(($41|0),($44|0),($48|0),($51|0))|0);
  9394. $53 = tempRet0;
  9395. $54 = $45;
  9396. $55 = $54;
  9397. HEAP32[$55>>2] = $52;
  9398. $56 = (($54) + 4)|0;
  9399. $57 = $56;
  9400. HEAP32[$57>>2] = $53;
  9401. $58 = (($in) + 24|0);
  9402. $59 = $58;
  9403. $60 = $59;
  9404. $61 = HEAP32[$60>>2]|0;
  9405. $62 = (($59) + 4)|0;
  9406. $63 = $62;
  9407. $64 = HEAP32[$63>>2]|0;
  9408. $65 = (($output) + 24|0);
  9409. $66 = $65;
  9410. $67 = $66;
  9411. $68 = HEAP32[$67>>2]|0;
  9412. $69 = (($66) + 4)|0;
  9413. $70 = $69;
  9414. $71 = HEAP32[$70>>2]|0;
  9415. $72 = (_i64Subtract(($61|0),($64|0),($68|0),($71|0))|0);
  9416. $73 = tempRet0;
  9417. $74 = $65;
  9418. $75 = $74;
  9419. HEAP32[$75>>2] = $72;
  9420. $76 = (($74) + 4)|0;
  9421. $77 = $76;
  9422. HEAP32[$77>>2] = $73;
  9423. $78 = (($in) + 32|0);
  9424. $79 = $78;
  9425. $80 = $79;
  9426. $81 = HEAP32[$80>>2]|0;
  9427. $82 = (($79) + 4)|0;
  9428. $83 = $82;
  9429. $84 = HEAP32[$83>>2]|0;
  9430. $85 = (($output) + 32|0);
  9431. $86 = $85;
  9432. $87 = $86;
  9433. $88 = HEAP32[$87>>2]|0;
  9434. $89 = (($86) + 4)|0;
  9435. $90 = $89;
  9436. $91 = HEAP32[$90>>2]|0;
  9437. $92 = (_i64Subtract(($81|0),($84|0),($88|0),($91|0))|0);
  9438. $93 = tempRet0;
  9439. $94 = $85;
  9440. $95 = $94;
  9441. HEAP32[$95>>2] = $92;
  9442. $96 = (($94) + 4)|0;
  9443. $97 = $96;
  9444. HEAP32[$97>>2] = $93;
  9445. $98 = (($in) + 40|0);
  9446. $99 = $98;
  9447. $100 = $99;
  9448. $101 = HEAP32[$100>>2]|0;
  9449. $102 = (($99) + 4)|0;
  9450. $103 = $102;
  9451. $104 = HEAP32[$103>>2]|0;
  9452. $105 = (($output) + 40|0);
  9453. $106 = $105;
  9454. $107 = $106;
  9455. $108 = HEAP32[$107>>2]|0;
  9456. $109 = (($106) + 4)|0;
  9457. $110 = $109;
  9458. $111 = HEAP32[$110>>2]|0;
  9459. $112 = (_i64Subtract(($101|0),($104|0),($108|0),($111|0))|0);
  9460. $113 = tempRet0;
  9461. $114 = $105;
  9462. $115 = $114;
  9463. HEAP32[$115>>2] = $112;
  9464. $116 = (($114) + 4)|0;
  9465. $117 = $116;
  9466. HEAP32[$117>>2] = $113;
  9467. $118 = (($in) + 48|0);
  9468. $119 = $118;
  9469. $120 = $119;
  9470. $121 = HEAP32[$120>>2]|0;
  9471. $122 = (($119) + 4)|0;
  9472. $123 = $122;
  9473. $124 = HEAP32[$123>>2]|0;
  9474. $125 = (($output) + 48|0);
  9475. $126 = $125;
  9476. $127 = $126;
  9477. $128 = HEAP32[$127>>2]|0;
  9478. $129 = (($126) + 4)|0;
  9479. $130 = $129;
  9480. $131 = HEAP32[$130>>2]|0;
  9481. $132 = (_i64Subtract(($121|0),($124|0),($128|0),($131|0))|0);
  9482. $133 = tempRet0;
  9483. $134 = $125;
  9484. $135 = $134;
  9485. HEAP32[$135>>2] = $132;
  9486. $136 = (($134) + 4)|0;
  9487. $137 = $136;
  9488. HEAP32[$137>>2] = $133;
  9489. $138 = (($in) + 56|0);
  9490. $139 = $138;
  9491. $140 = $139;
  9492. $141 = HEAP32[$140>>2]|0;
  9493. $142 = (($139) + 4)|0;
  9494. $143 = $142;
  9495. $144 = HEAP32[$143>>2]|0;
  9496. $145 = (($output) + 56|0);
  9497. $146 = $145;
  9498. $147 = $146;
  9499. $148 = HEAP32[$147>>2]|0;
  9500. $149 = (($146) + 4)|0;
  9501. $150 = $149;
  9502. $151 = HEAP32[$150>>2]|0;
  9503. $152 = (_i64Subtract(($141|0),($144|0),($148|0),($151|0))|0);
  9504. $153 = tempRet0;
  9505. $154 = $145;
  9506. $155 = $154;
  9507. HEAP32[$155>>2] = $152;
  9508. $156 = (($154) + 4)|0;
  9509. $157 = $156;
  9510. HEAP32[$157>>2] = $153;
  9511. $158 = (($in) + 64|0);
  9512. $159 = $158;
  9513. $160 = $159;
  9514. $161 = HEAP32[$160>>2]|0;
  9515. $162 = (($159) + 4)|0;
  9516. $163 = $162;
  9517. $164 = HEAP32[$163>>2]|0;
  9518. $165 = (($output) + 64|0);
  9519. $166 = $165;
  9520. $167 = $166;
  9521. $168 = HEAP32[$167>>2]|0;
  9522. $169 = (($166) + 4)|0;
  9523. $170 = $169;
  9524. $171 = HEAP32[$170>>2]|0;
  9525. $172 = (_i64Subtract(($161|0),($164|0),($168|0),($171|0))|0);
  9526. $173 = tempRet0;
  9527. $174 = $165;
  9528. $175 = $174;
  9529. HEAP32[$175>>2] = $172;
  9530. $176 = (($174) + 4)|0;
  9531. $177 = $176;
  9532. HEAP32[$177>>2] = $173;
  9533. $178 = (($in) + 72|0);
  9534. $179 = $178;
  9535. $180 = $179;
  9536. $181 = HEAP32[$180>>2]|0;
  9537. $182 = (($179) + 4)|0;
  9538. $183 = $182;
  9539. $184 = HEAP32[$183>>2]|0;
  9540. $185 = (($output) + 72|0);
  9541. $186 = $185;
  9542. $187 = $186;
  9543. $188 = HEAP32[$187>>2]|0;
  9544. $189 = (($186) + 4)|0;
  9545. $190 = $189;
  9546. $191 = HEAP32[$190>>2]|0;
  9547. $192 = (_i64Subtract(($181|0),($184|0),($188|0),($191|0))|0);
  9548. $193 = tempRet0;
  9549. $194 = $185;
  9550. $195 = $194;
  9551. HEAP32[$195>>2] = $192;
  9552. $196 = (($194) + 4)|0;
  9553. $197 = $196;
  9554. HEAP32[$197>>2] = $193;
  9555. STACKTOP = sp;return;
  9556. }
  9557. function _fscalar_product($output,$in) {
  9558. $output = $output|0;
  9559. $in = $in|0;
  9560. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0;
  9561. var $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0;
  9562. var $134 = 0, $135 = 0, $136 = 0, $137 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0;
  9563. var $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0;
  9564. var $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0;
  9565. var $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0;
  9566. var $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
  9567. sp = STACKTOP;
  9568. $0 = $in;
  9569. $1 = $0;
  9570. $2 = HEAP32[$1>>2]|0;
  9571. $3 = (($0) + 4)|0;
  9572. $4 = $3;
  9573. $5 = HEAP32[$4>>2]|0;
  9574. $6 = (___muldi3(($2|0),($5|0),121665,0)|0);
  9575. $7 = tempRet0;
  9576. $8 = $output;
  9577. $9 = $8;
  9578. HEAP32[$9>>2] = $6;
  9579. $10 = (($8) + 4)|0;
  9580. $11 = $10;
  9581. HEAP32[$11>>2] = $7;
  9582. $12 = (($in) + 8|0);
  9583. $13 = $12;
  9584. $14 = $13;
  9585. $15 = HEAP32[$14>>2]|0;
  9586. $16 = (($13) + 4)|0;
  9587. $17 = $16;
  9588. $18 = HEAP32[$17>>2]|0;
  9589. $19 = (___muldi3(($15|0),($18|0),121665,0)|0);
  9590. $20 = tempRet0;
  9591. $21 = (($output) + 8|0);
  9592. $22 = $21;
  9593. $23 = $22;
  9594. HEAP32[$23>>2] = $19;
  9595. $24 = (($22) + 4)|0;
  9596. $25 = $24;
  9597. HEAP32[$25>>2] = $20;
  9598. $26 = (($in) + 16|0);
  9599. $27 = $26;
  9600. $28 = $27;
  9601. $29 = HEAP32[$28>>2]|0;
  9602. $30 = (($27) + 4)|0;
  9603. $31 = $30;
  9604. $32 = HEAP32[$31>>2]|0;
  9605. $33 = (___muldi3(($29|0),($32|0),121665,0)|0);
  9606. $34 = tempRet0;
  9607. $35 = (($output) + 16|0);
  9608. $36 = $35;
  9609. $37 = $36;
  9610. HEAP32[$37>>2] = $33;
  9611. $38 = (($36) + 4)|0;
  9612. $39 = $38;
  9613. HEAP32[$39>>2] = $34;
  9614. $40 = (($in) + 24|0);
  9615. $41 = $40;
  9616. $42 = $41;
  9617. $43 = HEAP32[$42>>2]|0;
  9618. $44 = (($41) + 4)|0;
  9619. $45 = $44;
  9620. $46 = HEAP32[$45>>2]|0;
  9621. $47 = (___muldi3(($43|0),($46|0),121665,0)|0);
  9622. $48 = tempRet0;
  9623. $49 = (($output) + 24|0);
  9624. $50 = $49;
  9625. $51 = $50;
  9626. HEAP32[$51>>2] = $47;
  9627. $52 = (($50) + 4)|0;
  9628. $53 = $52;
  9629. HEAP32[$53>>2] = $48;
  9630. $54 = (($in) + 32|0);
  9631. $55 = $54;
  9632. $56 = $55;
  9633. $57 = HEAP32[$56>>2]|0;
  9634. $58 = (($55) + 4)|0;
  9635. $59 = $58;
  9636. $60 = HEAP32[$59>>2]|0;
  9637. $61 = (___muldi3(($57|0),($60|0),121665,0)|0);
  9638. $62 = tempRet0;
  9639. $63 = (($output) + 32|0);
  9640. $64 = $63;
  9641. $65 = $64;
  9642. HEAP32[$65>>2] = $61;
  9643. $66 = (($64) + 4)|0;
  9644. $67 = $66;
  9645. HEAP32[$67>>2] = $62;
  9646. $68 = (($in) + 40|0);
  9647. $69 = $68;
  9648. $70 = $69;
  9649. $71 = HEAP32[$70>>2]|0;
  9650. $72 = (($69) + 4)|0;
  9651. $73 = $72;
  9652. $74 = HEAP32[$73>>2]|0;
  9653. $75 = (___muldi3(($71|0),($74|0),121665,0)|0);
  9654. $76 = tempRet0;
  9655. $77 = (($output) + 40|0);
  9656. $78 = $77;
  9657. $79 = $78;
  9658. HEAP32[$79>>2] = $75;
  9659. $80 = (($78) + 4)|0;
  9660. $81 = $80;
  9661. HEAP32[$81>>2] = $76;
  9662. $82 = (($in) + 48|0);
  9663. $83 = $82;
  9664. $84 = $83;
  9665. $85 = HEAP32[$84>>2]|0;
  9666. $86 = (($83) + 4)|0;
  9667. $87 = $86;
  9668. $88 = HEAP32[$87>>2]|0;
  9669. $89 = (___muldi3(($85|0),($88|0),121665,0)|0);
  9670. $90 = tempRet0;
  9671. $91 = (($output) + 48|0);
  9672. $92 = $91;
  9673. $93 = $92;
  9674. HEAP32[$93>>2] = $89;
  9675. $94 = (($92) + 4)|0;
  9676. $95 = $94;
  9677. HEAP32[$95>>2] = $90;
  9678. $96 = (($in) + 56|0);
  9679. $97 = $96;
  9680. $98 = $97;
  9681. $99 = HEAP32[$98>>2]|0;
  9682. $100 = (($97) + 4)|0;
  9683. $101 = $100;
  9684. $102 = HEAP32[$101>>2]|0;
  9685. $103 = (___muldi3(($99|0),($102|0),121665,0)|0);
  9686. $104 = tempRet0;
  9687. $105 = (($output) + 56|0);
  9688. $106 = $105;
  9689. $107 = $106;
  9690. HEAP32[$107>>2] = $103;
  9691. $108 = (($106) + 4)|0;
  9692. $109 = $108;
  9693. HEAP32[$109>>2] = $104;
  9694. $110 = (($in) + 64|0);
  9695. $111 = $110;
  9696. $112 = $111;
  9697. $113 = HEAP32[$112>>2]|0;
  9698. $114 = (($111) + 4)|0;
  9699. $115 = $114;
  9700. $116 = HEAP32[$115>>2]|0;
  9701. $117 = (___muldi3(($113|0),($116|0),121665,0)|0);
  9702. $118 = tempRet0;
  9703. $119 = (($output) + 64|0);
  9704. $120 = $119;
  9705. $121 = $120;
  9706. HEAP32[$121>>2] = $117;
  9707. $122 = (($120) + 4)|0;
  9708. $123 = $122;
  9709. HEAP32[$123>>2] = $118;
  9710. $124 = (($in) + 72|0);
  9711. $125 = $124;
  9712. $126 = $125;
  9713. $127 = HEAP32[$126>>2]|0;
  9714. $128 = (($125) + 4)|0;
  9715. $129 = $128;
  9716. $130 = HEAP32[$129>>2]|0;
  9717. $131 = (___muldi3(($127|0),($130|0),121665,0)|0);
  9718. $132 = tempRet0;
  9719. $133 = (($output) + 72|0);
  9720. $134 = $133;
  9721. $135 = $134;
  9722. HEAP32[$135>>2] = $131;
  9723. $136 = (($134) + 4)|0;
  9724. $137 = $136;
  9725. HEAP32[$137>>2] = $132;
  9726. STACKTOP = sp;return;
  9727. }
  9728. function _fsquare_inner($output,$in) {
  9729. $output = $output|0;
  9730. $in = $in|0;
  9731. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0, $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0;
  9732. var $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0, $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0;
  9733. var $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0, $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0, $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0;
  9734. var $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $1059 = 0, $106 = 0, $1060 = 0, $1061 = 0, $1062 = 0, $1063 = 0, $1064 = 0, $1065 = 0, $1066 = 0, $1067 = 0, $1068 = 0, $1069 = 0;
  9735. var $107 = 0, $1070 = 0, $1071 = 0, $1072 = 0, $1073 = 0, $1074 = 0, $1075 = 0, $1076 = 0, $1077 = 0, $1078 = 0, $1079 = 0, $108 = 0, $1080 = 0, $1081 = 0, $1082 = 0, $1083 = 0, $1084 = 0, $1085 = 0, $1086 = 0, $1087 = 0;
  9736. var $1088 = 0, $1089 = 0, $109 = 0, $1090 = 0, $1091 = 0, $1092 = 0, $1093 = 0, $1094 = 0, $1095 = 0, $1096 = 0, $1097 = 0, $1098 = 0, $1099 = 0, $11 = 0, $110 = 0, $1100 = 0, $1101 = 0, $1102 = 0, $1103 = 0, $1104 = 0;
  9737. var $1105 = 0, $1106 = 0, $1107 = 0, $1108 = 0, $1109 = 0, $111 = 0, $1110 = 0, $1111 = 0, $1112 = 0, $1113 = 0, $1114 = 0, $1115 = 0, $1116 = 0, $1117 = 0, $1118 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0;
  9738. var $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0;
  9739. var $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0;
  9740. var $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0;
  9741. var $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0;
  9742. var $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0;
  9743. var $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0;
  9744. var $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0;
  9745. var $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0;
  9746. var $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0;
  9747. var $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0;
  9748. var $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0;
  9749. var $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0;
  9750. var $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0;
  9751. var $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0;
  9752. var $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0;
  9753. var $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0;
  9754. var $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0;
  9755. var $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0;
  9756. var $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0;
  9757. var $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0;
  9758. var $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0;
  9759. var $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0;
  9760. var $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0;
  9761. var $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0;
  9762. var $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0;
  9763. var $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0;
  9764. var $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0;
  9765. var $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0;
  9766. var $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0;
  9767. var $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0, $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0;
  9768. var $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0, $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0;
  9769. var $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0, $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0;
  9770. var $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0;
  9771. var $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0;
  9772. var $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0;
  9773. var $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0, $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0;
  9774. var $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0;
  9775. var $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0;
  9776. var $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0, $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0;
  9777. var $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0;
  9778. var $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0;
  9779. var $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0;
  9780. var $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0;
  9781. var $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0;
  9782. var $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0;
  9783. var $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0;
  9784. var $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0, $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0;
  9785. var $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0;
  9786. var $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0, $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, label = 0;
  9787. var sp = 0;
  9788. sp = STACKTOP;
  9789. $0 = $in;
  9790. $1 = $0;
  9791. $2 = HEAP32[$1>>2]|0;
  9792. $3 = (($0) + 4)|0;
  9793. $4 = $3;
  9794. $5 = HEAP32[$4>>2]|0;
  9795. $6 = (_bitshift64Ashr(0,($2|0),32)|0);
  9796. $7 = tempRet0;
  9797. $8 = (___muldi3(($6|0),($7|0),($6|0),($7|0))|0);
  9798. $9 = tempRet0;
  9799. $10 = $output;
  9800. $11 = $10;
  9801. HEAP32[$11>>2] = $8;
  9802. $12 = (($10) + 4)|0;
  9803. $13 = $12;
  9804. HEAP32[$13>>2] = $9;
  9805. $14 = $in;
  9806. $15 = $14;
  9807. $16 = HEAP32[$15>>2]|0;
  9808. $17 = (($14) + 4)|0;
  9809. $18 = $17;
  9810. $19 = HEAP32[$18>>2]|0;
  9811. $20 = (_bitshift64Ashr(0,($16|0),31)|0);
  9812. $21 = tempRet0;
  9813. $22 = (($in) + 8|0);
  9814. $23 = $22;
  9815. $24 = $23;
  9816. $25 = HEAP32[$24>>2]|0;
  9817. $26 = (($23) + 4)|0;
  9818. $27 = $26;
  9819. $28 = HEAP32[$27>>2]|0;
  9820. $29 = (_bitshift64Ashr(0,($25|0),32)|0);
  9821. $30 = tempRet0;
  9822. $31 = (___muldi3(($29|0),($30|0),($20|0),($21|0))|0);
  9823. $32 = tempRet0;
  9824. $33 = (($output) + 8|0);
  9825. $34 = $33;
  9826. $35 = $34;
  9827. HEAP32[$35>>2] = $31;
  9828. $36 = (($34) + 4)|0;
  9829. $37 = $36;
  9830. HEAP32[$37>>2] = $32;
  9831. $38 = $22;
  9832. $39 = $38;
  9833. $40 = HEAP32[$39>>2]|0;
  9834. $41 = (($38) + 4)|0;
  9835. $42 = $41;
  9836. $43 = HEAP32[$42>>2]|0;
  9837. $44 = (_bitshift64Ashr(0,($40|0),32)|0);
  9838. $45 = tempRet0;
  9839. $46 = (___muldi3(($44|0),($45|0),($44|0),($45|0))|0);
  9840. $47 = tempRet0;
  9841. $48 = $in;
  9842. $49 = $48;
  9843. $50 = HEAP32[$49>>2]|0;
  9844. $51 = (($48) + 4)|0;
  9845. $52 = $51;
  9846. $53 = HEAP32[$52>>2]|0;
  9847. $54 = (_bitshift64Ashr(0,($50|0),32)|0);
  9848. $55 = tempRet0;
  9849. $56 = (($in) + 16|0);
  9850. $57 = $56;
  9851. $58 = $57;
  9852. $59 = HEAP32[$58>>2]|0;
  9853. $60 = (($57) + 4)|0;
  9854. $61 = $60;
  9855. $62 = HEAP32[$61>>2]|0;
  9856. $63 = (_bitshift64Ashr(0,($59|0),32)|0);
  9857. $64 = tempRet0;
  9858. $65 = (___muldi3(($63|0),($64|0),($54|0),($55|0))|0);
  9859. $66 = tempRet0;
  9860. $67 = (_i64Add(($65|0),($66|0),($46|0),($47|0))|0);
  9861. $68 = tempRet0;
  9862. $69 = (_bitshift64Shl(($67|0),($68|0),1)|0);
  9863. $70 = tempRet0;
  9864. $71 = (($output) + 16|0);
  9865. $72 = $71;
  9866. $73 = $72;
  9867. HEAP32[$73>>2] = $69;
  9868. $74 = (($72) + 4)|0;
  9869. $75 = $74;
  9870. HEAP32[$75>>2] = $70;
  9871. $76 = $22;
  9872. $77 = $76;
  9873. $78 = HEAP32[$77>>2]|0;
  9874. $79 = (($76) + 4)|0;
  9875. $80 = $79;
  9876. $81 = HEAP32[$80>>2]|0;
  9877. $82 = (_bitshift64Ashr(0,($78|0),32)|0);
  9878. $83 = tempRet0;
  9879. $84 = $56;
  9880. $85 = $84;
  9881. $86 = HEAP32[$85>>2]|0;
  9882. $87 = (($84) + 4)|0;
  9883. $88 = $87;
  9884. $89 = HEAP32[$88>>2]|0;
  9885. $90 = (_bitshift64Ashr(0,($86|0),32)|0);
  9886. $91 = tempRet0;
  9887. $92 = (___muldi3(($90|0),($91|0),($82|0),($83|0))|0);
  9888. $93 = tempRet0;
  9889. $94 = $in;
  9890. $95 = $94;
  9891. $96 = HEAP32[$95>>2]|0;
  9892. $97 = (($94) + 4)|0;
  9893. $98 = $97;
  9894. $99 = HEAP32[$98>>2]|0;
  9895. $100 = (_bitshift64Ashr(0,($96|0),32)|0);
  9896. $101 = tempRet0;
  9897. $102 = (($in) + 24|0);
  9898. $103 = $102;
  9899. $104 = $103;
  9900. $105 = HEAP32[$104>>2]|0;
  9901. $106 = (($103) + 4)|0;
  9902. $107 = $106;
  9903. $108 = HEAP32[$107>>2]|0;
  9904. $109 = (_bitshift64Ashr(0,($105|0),32)|0);
  9905. $110 = tempRet0;
  9906. $111 = (___muldi3(($109|0),($110|0),($100|0),($101|0))|0);
  9907. $112 = tempRet0;
  9908. $113 = (_i64Add(($111|0),($112|0),($92|0),($93|0))|0);
  9909. $114 = tempRet0;
  9910. $115 = (_bitshift64Shl(($113|0),($114|0),1)|0);
  9911. $116 = tempRet0;
  9912. $117 = (($output) + 24|0);
  9913. $118 = $117;
  9914. $119 = $118;
  9915. HEAP32[$119>>2] = $115;
  9916. $120 = (($118) + 4)|0;
  9917. $121 = $120;
  9918. HEAP32[$121>>2] = $116;
  9919. $122 = $56;
  9920. $123 = $122;
  9921. $124 = HEAP32[$123>>2]|0;
  9922. $125 = (($122) + 4)|0;
  9923. $126 = $125;
  9924. $127 = HEAP32[$126>>2]|0;
  9925. $128 = (_bitshift64Ashr(0,($124|0),32)|0);
  9926. $129 = tempRet0;
  9927. $130 = (___muldi3(($128|0),($129|0),($128|0),($129|0))|0);
  9928. $131 = tempRet0;
  9929. $132 = $22;
  9930. $133 = $132;
  9931. $134 = HEAP32[$133>>2]|0;
  9932. $135 = (($132) + 4)|0;
  9933. $136 = $135;
  9934. $137 = HEAP32[$136>>2]|0;
  9935. $138 = (_bitshift64Ashr(0,($134|0),30)|0);
  9936. $139 = tempRet0;
  9937. $140 = $102;
  9938. $141 = $140;
  9939. $142 = HEAP32[$141>>2]|0;
  9940. $143 = (($140) + 4)|0;
  9941. $144 = $143;
  9942. $145 = HEAP32[$144>>2]|0;
  9943. $146 = (_bitshift64Ashr(0,($142|0),32)|0);
  9944. $147 = tempRet0;
  9945. $148 = (___muldi3(($146|0),($147|0),($138|0),($139|0))|0);
  9946. $149 = tempRet0;
  9947. $150 = (_i64Add(($148|0),($149|0),($130|0),($131|0))|0);
  9948. $151 = tempRet0;
  9949. $152 = $in;
  9950. $153 = $152;
  9951. $154 = HEAP32[$153>>2]|0;
  9952. $155 = (($152) + 4)|0;
  9953. $156 = $155;
  9954. $157 = HEAP32[$156>>2]|0;
  9955. $158 = (_bitshift64Ashr(0,($154|0),31)|0);
  9956. $159 = tempRet0;
  9957. $160 = (($in) + 32|0);
  9958. $161 = $160;
  9959. $162 = $161;
  9960. $163 = HEAP32[$162>>2]|0;
  9961. $164 = (($161) + 4)|0;
  9962. $165 = $164;
  9963. $166 = HEAP32[$165>>2]|0;
  9964. $167 = (_bitshift64Ashr(0,($163|0),32)|0);
  9965. $168 = tempRet0;
  9966. $169 = (___muldi3(($167|0),($168|0),($158|0),($159|0))|0);
  9967. $170 = tempRet0;
  9968. $171 = (_i64Add(($150|0),($151|0),($169|0),($170|0))|0);
  9969. $172 = tempRet0;
  9970. $173 = (($output) + 32|0);
  9971. $174 = $173;
  9972. $175 = $174;
  9973. HEAP32[$175>>2] = $171;
  9974. $176 = (($174) + 4)|0;
  9975. $177 = $176;
  9976. HEAP32[$177>>2] = $172;
  9977. $178 = $56;
  9978. $179 = $178;
  9979. $180 = HEAP32[$179>>2]|0;
  9980. $181 = (($178) + 4)|0;
  9981. $182 = $181;
  9982. $183 = HEAP32[$182>>2]|0;
  9983. $184 = (_bitshift64Ashr(0,($180|0),32)|0);
  9984. $185 = tempRet0;
  9985. $186 = $102;
  9986. $187 = $186;
  9987. $188 = HEAP32[$187>>2]|0;
  9988. $189 = (($186) + 4)|0;
  9989. $190 = $189;
  9990. $191 = HEAP32[$190>>2]|0;
  9991. $192 = (_bitshift64Ashr(0,($188|0),32)|0);
  9992. $193 = tempRet0;
  9993. $194 = (___muldi3(($192|0),($193|0),($184|0),($185|0))|0);
  9994. $195 = tempRet0;
  9995. $196 = $22;
  9996. $197 = $196;
  9997. $198 = HEAP32[$197>>2]|0;
  9998. $199 = (($196) + 4)|0;
  9999. $200 = $199;
  10000. $201 = HEAP32[$200>>2]|0;
  10001. $202 = (_bitshift64Ashr(0,($198|0),32)|0);
  10002. $203 = tempRet0;
  10003. $204 = $160;
  10004. $205 = $204;
  10005. $206 = HEAP32[$205>>2]|0;
  10006. $207 = (($204) + 4)|0;
  10007. $208 = $207;
  10008. $209 = HEAP32[$208>>2]|0;
  10009. $210 = (_bitshift64Ashr(0,($206|0),32)|0);
  10010. $211 = tempRet0;
  10011. $212 = (___muldi3(($210|0),($211|0),($202|0),($203|0))|0);
  10012. $213 = tempRet0;
  10013. $214 = (_i64Add(($212|0),($213|0),($194|0),($195|0))|0);
  10014. $215 = tempRet0;
  10015. $216 = $in;
  10016. $217 = $216;
  10017. $218 = HEAP32[$217>>2]|0;
  10018. $219 = (($216) + 4)|0;
  10019. $220 = $219;
  10020. $221 = HEAP32[$220>>2]|0;
  10021. $222 = (_bitshift64Ashr(0,($218|0),32)|0);
  10022. $223 = tempRet0;
  10023. $224 = (($in) + 40|0);
  10024. $225 = $224;
  10025. $226 = $225;
  10026. $227 = HEAP32[$226>>2]|0;
  10027. $228 = (($225) + 4)|0;
  10028. $229 = $228;
  10029. $230 = HEAP32[$229>>2]|0;
  10030. $231 = (_bitshift64Ashr(0,($227|0),32)|0);
  10031. $232 = tempRet0;
  10032. $233 = (___muldi3(($231|0),($232|0),($222|0),($223|0))|0);
  10033. $234 = tempRet0;
  10034. $235 = (_i64Add(($214|0),($215|0),($233|0),($234|0))|0);
  10035. $236 = tempRet0;
  10036. $237 = (_bitshift64Shl(($235|0),($236|0),1)|0);
  10037. $238 = tempRet0;
  10038. $239 = (($output) + 40|0);
  10039. $240 = $239;
  10040. $241 = $240;
  10041. HEAP32[$241>>2] = $237;
  10042. $242 = (($240) + 4)|0;
  10043. $243 = $242;
  10044. HEAP32[$243>>2] = $238;
  10045. $244 = $102;
  10046. $245 = $244;
  10047. $246 = HEAP32[$245>>2]|0;
  10048. $247 = (($244) + 4)|0;
  10049. $248 = $247;
  10050. $249 = HEAP32[$248>>2]|0;
  10051. $250 = (_bitshift64Ashr(0,($246|0),32)|0);
  10052. $251 = tempRet0;
  10053. $252 = (___muldi3(($250|0),($251|0),($250|0),($251|0))|0);
  10054. $253 = tempRet0;
  10055. $254 = $56;
  10056. $255 = $254;
  10057. $256 = HEAP32[$255>>2]|0;
  10058. $257 = (($254) + 4)|0;
  10059. $258 = $257;
  10060. $259 = HEAP32[$258>>2]|0;
  10061. $260 = (_bitshift64Ashr(0,($256|0),32)|0);
  10062. $261 = tempRet0;
  10063. $262 = $160;
  10064. $263 = $262;
  10065. $264 = HEAP32[$263>>2]|0;
  10066. $265 = (($262) + 4)|0;
  10067. $266 = $265;
  10068. $267 = HEAP32[$266>>2]|0;
  10069. $268 = (_bitshift64Ashr(0,($264|0),32)|0);
  10070. $269 = tempRet0;
  10071. $270 = (___muldi3(($268|0),($269|0),($260|0),($261|0))|0);
  10072. $271 = tempRet0;
  10073. $272 = (_i64Add(($270|0),($271|0),($252|0),($253|0))|0);
  10074. $273 = tempRet0;
  10075. $274 = $in;
  10076. $275 = $274;
  10077. $276 = HEAP32[$275>>2]|0;
  10078. $277 = (($274) + 4)|0;
  10079. $278 = $277;
  10080. $279 = HEAP32[$278>>2]|0;
  10081. $280 = (_bitshift64Ashr(0,($276|0),32)|0);
  10082. $281 = tempRet0;
  10083. $282 = (($in) + 48|0);
  10084. $283 = $282;
  10085. $284 = $283;
  10086. $285 = HEAP32[$284>>2]|0;
  10087. $286 = (($283) + 4)|0;
  10088. $287 = $286;
  10089. $288 = HEAP32[$287>>2]|0;
  10090. $289 = (_bitshift64Ashr(0,($285|0),32)|0);
  10091. $290 = tempRet0;
  10092. $291 = (___muldi3(($289|0),($290|0),($280|0),($281|0))|0);
  10093. $292 = tempRet0;
  10094. $293 = (_i64Add(($272|0),($273|0),($291|0),($292|0))|0);
  10095. $294 = tempRet0;
  10096. $295 = $22;
  10097. $296 = $295;
  10098. $297 = HEAP32[$296>>2]|0;
  10099. $298 = (($295) + 4)|0;
  10100. $299 = $298;
  10101. $300 = HEAP32[$299>>2]|0;
  10102. $301 = (_bitshift64Ashr(0,($297|0),31)|0);
  10103. $302 = tempRet0;
  10104. $303 = $224;
  10105. $304 = $303;
  10106. $305 = HEAP32[$304>>2]|0;
  10107. $306 = (($303) + 4)|0;
  10108. $307 = $306;
  10109. $308 = HEAP32[$307>>2]|0;
  10110. $309 = (_bitshift64Ashr(0,($305|0),32)|0);
  10111. $310 = tempRet0;
  10112. $311 = (___muldi3(($309|0),($310|0),($301|0),($302|0))|0);
  10113. $312 = tempRet0;
  10114. $313 = (_i64Add(($293|0),($294|0),($311|0),($312|0))|0);
  10115. $314 = tempRet0;
  10116. $315 = (_bitshift64Shl(($313|0),($314|0),1)|0);
  10117. $316 = tempRet0;
  10118. $317 = (($output) + 48|0);
  10119. $318 = $317;
  10120. $319 = $318;
  10121. HEAP32[$319>>2] = $315;
  10122. $320 = (($318) + 4)|0;
  10123. $321 = $320;
  10124. HEAP32[$321>>2] = $316;
  10125. $322 = $102;
  10126. $323 = $322;
  10127. $324 = HEAP32[$323>>2]|0;
  10128. $325 = (($322) + 4)|0;
  10129. $326 = $325;
  10130. $327 = HEAP32[$326>>2]|0;
  10131. $328 = (_bitshift64Ashr(0,($324|0),32)|0);
  10132. $329 = tempRet0;
  10133. $330 = $160;
  10134. $331 = $330;
  10135. $332 = HEAP32[$331>>2]|0;
  10136. $333 = (($330) + 4)|0;
  10137. $334 = $333;
  10138. $335 = HEAP32[$334>>2]|0;
  10139. $336 = (_bitshift64Ashr(0,($332|0),32)|0);
  10140. $337 = tempRet0;
  10141. $338 = (___muldi3(($336|0),($337|0),($328|0),($329|0))|0);
  10142. $339 = tempRet0;
  10143. $340 = $56;
  10144. $341 = $340;
  10145. $342 = HEAP32[$341>>2]|0;
  10146. $343 = (($340) + 4)|0;
  10147. $344 = $343;
  10148. $345 = HEAP32[$344>>2]|0;
  10149. $346 = (_bitshift64Ashr(0,($342|0),32)|0);
  10150. $347 = tempRet0;
  10151. $348 = $224;
  10152. $349 = $348;
  10153. $350 = HEAP32[$349>>2]|0;
  10154. $351 = (($348) + 4)|0;
  10155. $352 = $351;
  10156. $353 = HEAP32[$352>>2]|0;
  10157. $354 = (_bitshift64Ashr(0,($350|0),32)|0);
  10158. $355 = tempRet0;
  10159. $356 = (___muldi3(($354|0),($355|0),($346|0),($347|0))|0);
  10160. $357 = tempRet0;
  10161. $358 = (_i64Add(($356|0),($357|0),($338|0),($339|0))|0);
  10162. $359 = tempRet0;
  10163. $360 = $22;
  10164. $361 = $360;
  10165. $362 = HEAP32[$361>>2]|0;
  10166. $363 = (($360) + 4)|0;
  10167. $364 = $363;
  10168. $365 = HEAP32[$364>>2]|0;
  10169. $366 = (_bitshift64Ashr(0,($362|0),32)|0);
  10170. $367 = tempRet0;
  10171. $368 = $282;
  10172. $369 = $368;
  10173. $370 = HEAP32[$369>>2]|0;
  10174. $371 = (($368) + 4)|0;
  10175. $372 = $371;
  10176. $373 = HEAP32[$372>>2]|0;
  10177. $374 = (_bitshift64Ashr(0,($370|0),32)|0);
  10178. $375 = tempRet0;
  10179. $376 = (___muldi3(($374|0),($375|0),($366|0),($367|0))|0);
  10180. $377 = tempRet0;
  10181. $378 = (_i64Add(($358|0),($359|0),($376|0),($377|0))|0);
  10182. $379 = tempRet0;
  10183. $380 = $in;
  10184. $381 = $380;
  10185. $382 = HEAP32[$381>>2]|0;
  10186. $383 = (($380) + 4)|0;
  10187. $384 = $383;
  10188. $385 = HEAP32[$384>>2]|0;
  10189. $386 = (_bitshift64Ashr(0,($382|0),32)|0);
  10190. $387 = tempRet0;
  10191. $388 = (($in) + 56|0);
  10192. $389 = $388;
  10193. $390 = $389;
  10194. $391 = HEAP32[$390>>2]|0;
  10195. $392 = (($389) + 4)|0;
  10196. $393 = $392;
  10197. $394 = HEAP32[$393>>2]|0;
  10198. $395 = (_bitshift64Ashr(0,($391|0),32)|0);
  10199. $396 = tempRet0;
  10200. $397 = (___muldi3(($395|0),($396|0),($386|0),($387|0))|0);
  10201. $398 = tempRet0;
  10202. $399 = (_i64Add(($378|0),($379|0),($397|0),($398|0))|0);
  10203. $400 = tempRet0;
  10204. $401 = (_bitshift64Shl(($399|0),($400|0),1)|0);
  10205. $402 = tempRet0;
  10206. $403 = (($output) + 56|0);
  10207. $404 = $403;
  10208. $405 = $404;
  10209. HEAP32[$405>>2] = $401;
  10210. $406 = (($404) + 4)|0;
  10211. $407 = $406;
  10212. HEAP32[$407>>2] = $402;
  10213. $408 = $160;
  10214. $409 = $408;
  10215. $410 = HEAP32[$409>>2]|0;
  10216. $411 = (($408) + 4)|0;
  10217. $412 = $411;
  10218. $413 = HEAP32[$412>>2]|0;
  10219. $414 = (_bitshift64Ashr(0,($410|0),32)|0);
  10220. $415 = tempRet0;
  10221. $416 = (___muldi3(($414|0),($415|0),($414|0),($415|0))|0);
  10222. $417 = tempRet0;
  10223. $418 = $56;
  10224. $419 = $418;
  10225. $420 = HEAP32[$419>>2]|0;
  10226. $421 = (($418) + 4)|0;
  10227. $422 = $421;
  10228. $423 = HEAP32[$422>>2]|0;
  10229. $424 = (_bitshift64Ashr(0,($420|0),32)|0);
  10230. $425 = tempRet0;
  10231. $426 = $282;
  10232. $427 = $426;
  10233. $428 = HEAP32[$427>>2]|0;
  10234. $429 = (($426) + 4)|0;
  10235. $430 = $429;
  10236. $431 = HEAP32[$430>>2]|0;
  10237. $432 = (_bitshift64Ashr(0,($428|0),32)|0);
  10238. $433 = tempRet0;
  10239. $434 = (___muldi3(($432|0),($433|0),($424|0),($425|0))|0);
  10240. $435 = tempRet0;
  10241. $436 = $in;
  10242. $437 = $436;
  10243. $438 = HEAP32[$437>>2]|0;
  10244. $439 = (($436) + 4)|0;
  10245. $440 = $439;
  10246. $441 = HEAP32[$440>>2]|0;
  10247. $442 = (_bitshift64Ashr(0,($438|0),32)|0);
  10248. $443 = tempRet0;
  10249. $444 = (($in) + 64|0);
  10250. $445 = $444;
  10251. $446 = $445;
  10252. $447 = HEAP32[$446>>2]|0;
  10253. $448 = (($445) + 4)|0;
  10254. $449 = $448;
  10255. $450 = HEAP32[$449>>2]|0;
  10256. $451 = (_bitshift64Ashr(0,($447|0),32)|0);
  10257. $452 = tempRet0;
  10258. $453 = (___muldi3(($451|0),($452|0),($442|0),($443|0))|0);
  10259. $454 = tempRet0;
  10260. $455 = (_i64Add(($453|0),($454|0),($434|0),($435|0))|0);
  10261. $456 = tempRet0;
  10262. $457 = $22;
  10263. $458 = $457;
  10264. $459 = HEAP32[$458>>2]|0;
  10265. $460 = (($457) + 4)|0;
  10266. $461 = $460;
  10267. $462 = HEAP32[$461>>2]|0;
  10268. $463 = (_bitshift64Ashr(0,($459|0),32)|0);
  10269. $464 = tempRet0;
  10270. $465 = $388;
  10271. $466 = $465;
  10272. $467 = HEAP32[$466>>2]|0;
  10273. $468 = (($465) + 4)|0;
  10274. $469 = $468;
  10275. $470 = HEAP32[$469>>2]|0;
  10276. $471 = (_bitshift64Ashr(0,($467|0),32)|0);
  10277. $472 = tempRet0;
  10278. $473 = (___muldi3(($471|0),($472|0),($463|0),($464|0))|0);
  10279. $474 = tempRet0;
  10280. $475 = $102;
  10281. $476 = $475;
  10282. $477 = HEAP32[$476>>2]|0;
  10283. $478 = (($475) + 4)|0;
  10284. $479 = $478;
  10285. $480 = HEAP32[$479>>2]|0;
  10286. $481 = (_bitshift64Ashr(0,($477|0),32)|0);
  10287. $482 = tempRet0;
  10288. $483 = $224;
  10289. $484 = $483;
  10290. $485 = HEAP32[$484>>2]|0;
  10291. $486 = (($483) + 4)|0;
  10292. $487 = $486;
  10293. $488 = HEAP32[$487>>2]|0;
  10294. $489 = (_bitshift64Ashr(0,($485|0),32)|0);
  10295. $490 = tempRet0;
  10296. $491 = (___muldi3(($489|0),($490|0),($481|0),($482|0))|0);
  10297. $492 = tempRet0;
  10298. $493 = (_i64Add(($491|0),($492|0),($473|0),($474|0))|0);
  10299. $494 = tempRet0;
  10300. $495 = (_bitshift64Shl(($493|0),($494|0),1)|0);
  10301. $496 = tempRet0;
  10302. $497 = (_i64Add(($455|0),($456|0),($495|0),($496|0))|0);
  10303. $498 = tempRet0;
  10304. $499 = (_bitshift64Shl(($497|0),($498|0),1)|0);
  10305. $500 = tempRet0;
  10306. $501 = (_i64Add(($499|0),($500|0),($416|0),($417|0))|0);
  10307. $502 = tempRet0;
  10308. $503 = (($output) + 64|0);
  10309. $504 = $503;
  10310. $505 = $504;
  10311. HEAP32[$505>>2] = $501;
  10312. $506 = (($504) + 4)|0;
  10313. $507 = $506;
  10314. HEAP32[$507>>2] = $502;
  10315. $508 = $160;
  10316. $509 = $508;
  10317. $510 = HEAP32[$509>>2]|0;
  10318. $511 = (($508) + 4)|0;
  10319. $512 = $511;
  10320. $513 = HEAP32[$512>>2]|0;
  10321. $514 = (_bitshift64Ashr(0,($510|0),32)|0);
  10322. $515 = tempRet0;
  10323. $516 = $224;
  10324. $517 = $516;
  10325. $518 = HEAP32[$517>>2]|0;
  10326. $519 = (($516) + 4)|0;
  10327. $520 = $519;
  10328. $521 = HEAP32[$520>>2]|0;
  10329. $522 = (_bitshift64Ashr(0,($518|0),32)|0);
  10330. $523 = tempRet0;
  10331. $524 = (___muldi3(($522|0),($523|0),($514|0),($515|0))|0);
  10332. $525 = tempRet0;
  10333. $526 = $102;
  10334. $527 = $526;
  10335. $528 = HEAP32[$527>>2]|0;
  10336. $529 = (($526) + 4)|0;
  10337. $530 = $529;
  10338. $531 = HEAP32[$530>>2]|0;
  10339. $532 = (_bitshift64Ashr(0,($528|0),32)|0);
  10340. $533 = tempRet0;
  10341. $534 = $282;
  10342. $535 = $534;
  10343. $536 = HEAP32[$535>>2]|0;
  10344. $537 = (($534) + 4)|0;
  10345. $538 = $537;
  10346. $539 = HEAP32[$538>>2]|0;
  10347. $540 = (_bitshift64Ashr(0,($536|0),32)|0);
  10348. $541 = tempRet0;
  10349. $542 = (___muldi3(($540|0),($541|0),($532|0),($533|0))|0);
  10350. $543 = tempRet0;
  10351. $544 = (_i64Add(($542|0),($543|0),($524|0),($525|0))|0);
  10352. $545 = tempRet0;
  10353. $546 = $56;
  10354. $547 = $546;
  10355. $548 = HEAP32[$547>>2]|0;
  10356. $549 = (($546) + 4)|0;
  10357. $550 = $549;
  10358. $551 = HEAP32[$550>>2]|0;
  10359. $552 = (_bitshift64Ashr(0,($548|0),32)|0);
  10360. $553 = tempRet0;
  10361. $554 = $388;
  10362. $555 = $554;
  10363. $556 = HEAP32[$555>>2]|0;
  10364. $557 = (($554) + 4)|0;
  10365. $558 = $557;
  10366. $559 = HEAP32[$558>>2]|0;
  10367. $560 = (_bitshift64Ashr(0,($556|0),32)|0);
  10368. $561 = tempRet0;
  10369. $562 = (___muldi3(($560|0),($561|0),($552|0),($553|0))|0);
  10370. $563 = tempRet0;
  10371. $564 = (_i64Add(($544|0),($545|0),($562|0),($563|0))|0);
  10372. $565 = tempRet0;
  10373. $566 = $22;
  10374. $567 = $566;
  10375. $568 = HEAP32[$567>>2]|0;
  10376. $569 = (($566) + 4)|0;
  10377. $570 = $569;
  10378. $571 = HEAP32[$570>>2]|0;
  10379. $572 = (_bitshift64Ashr(0,($568|0),32)|0);
  10380. $573 = tempRet0;
  10381. $574 = $444;
  10382. $575 = $574;
  10383. $576 = HEAP32[$575>>2]|0;
  10384. $577 = (($574) + 4)|0;
  10385. $578 = $577;
  10386. $579 = HEAP32[$578>>2]|0;
  10387. $580 = (_bitshift64Ashr(0,($576|0),32)|0);
  10388. $581 = tempRet0;
  10389. $582 = (___muldi3(($580|0),($581|0),($572|0),($573|0))|0);
  10390. $583 = tempRet0;
  10391. $584 = (_i64Add(($564|0),($565|0),($582|0),($583|0))|0);
  10392. $585 = tempRet0;
  10393. $586 = $in;
  10394. $587 = $586;
  10395. $588 = HEAP32[$587>>2]|0;
  10396. $589 = (($586) + 4)|0;
  10397. $590 = $589;
  10398. $591 = HEAP32[$590>>2]|0;
  10399. $592 = (_bitshift64Ashr(0,($588|0),32)|0);
  10400. $593 = tempRet0;
  10401. $594 = (($in) + 72|0);
  10402. $595 = $594;
  10403. $596 = $595;
  10404. $597 = HEAP32[$596>>2]|0;
  10405. $598 = (($595) + 4)|0;
  10406. $599 = $598;
  10407. $600 = HEAP32[$599>>2]|0;
  10408. $601 = (_bitshift64Ashr(0,($597|0),32)|0);
  10409. $602 = tempRet0;
  10410. $603 = (___muldi3(($601|0),($602|0),($592|0),($593|0))|0);
  10411. $604 = tempRet0;
  10412. $605 = (_i64Add(($584|0),($585|0),($603|0),($604|0))|0);
  10413. $606 = tempRet0;
  10414. $607 = (_bitshift64Shl(($605|0),($606|0),1)|0);
  10415. $608 = tempRet0;
  10416. $609 = (($output) + 72|0);
  10417. $610 = $609;
  10418. $611 = $610;
  10419. HEAP32[$611>>2] = $607;
  10420. $612 = (($610) + 4)|0;
  10421. $613 = $612;
  10422. HEAP32[$613>>2] = $608;
  10423. $614 = $224;
  10424. $615 = $614;
  10425. $616 = HEAP32[$615>>2]|0;
  10426. $617 = (($614) + 4)|0;
  10427. $618 = $617;
  10428. $619 = HEAP32[$618>>2]|0;
  10429. $620 = (_bitshift64Ashr(0,($616|0),32)|0);
  10430. $621 = tempRet0;
  10431. $622 = (___muldi3(($620|0),($621|0),($620|0),($621|0))|0);
  10432. $623 = tempRet0;
  10433. $624 = $160;
  10434. $625 = $624;
  10435. $626 = HEAP32[$625>>2]|0;
  10436. $627 = (($624) + 4)|0;
  10437. $628 = $627;
  10438. $629 = HEAP32[$628>>2]|0;
  10439. $630 = (_bitshift64Ashr(0,($626|0),32)|0);
  10440. $631 = tempRet0;
  10441. $632 = $282;
  10442. $633 = $632;
  10443. $634 = HEAP32[$633>>2]|0;
  10444. $635 = (($632) + 4)|0;
  10445. $636 = $635;
  10446. $637 = HEAP32[$636>>2]|0;
  10447. $638 = (_bitshift64Ashr(0,($634|0),32)|0);
  10448. $639 = tempRet0;
  10449. $640 = (___muldi3(($638|0),($639|0),($630|0),($631|0))|0);
  10450. $641 = tempRet0;
  10451. $642 = (_i64Add(($640|0),($641|0),($622|0),($623|0))|0);
  10452. $643 = tempRet0;
  10453. $644 = $56;
  10454. $645 = $644;
  10455. $646 = HEAP32[$645>>2]|0;
  10456. $647 = (($644) + 4)|0;
  10457. $648 = $647;
  10458. $649 = HEAP32[$648>>2]|0;
  10459. $650 = (_bitshift64Ashr(0,($646|0),32)|0);
  10460. $651 = tempRet0;
  10461. $652 = $444;
  10462. $653 = $652;
  10463. $654 = HEAP32[$653>>2]|0;
  10464. $655 = (($652) + 4)|0;
  10465. $656 = $655;
  10466. $657 = HEAP32[$656>>2]|0;
  10467. $658 = (_bitshift64Ashr(0,($654|0),32)|0);
  10468. $659 = tempRet0;
  10469. $660 = (___muldi3(($658|0),($659|0),($650|0),($651|0))|0);
  10470. $661 = tempRet0;
  10471. $662 = (_i64Add(($642|0),($643|0),($660|0),($661|0))|0);
  10472. $663 = tempRet0;
  10473. $664 = $102;
  10474. $665 = $664;
  10475. $666 = HEAP32[$665>>2]|0;
  10476. $667 = (($664) + 4)|0;
  10477. $668 = $667;
  10478. $669 = HEAP32[$668>>2]|0;
  10479. $670 = (_bitshift64Ashr(0,($666|0),32)|0);
  10480. $671 = tempRet0;
  10481. $672 = $388;
  10482. $673 = $672;
  10483. $674 = HEAP32[$673>>2]|0;
  10484. $675 = (($672) + 4)|0;
  10485. $676 = $675;
  10486. $677 = HEAP32[$676>>2]|0;
  10487. $678 = (_bitshift64Ashr(0,($674|0),32)|0);
  10488. $679 = tempRet0;
  10489. $680 = (___muldi3(($678|0),($679|0),($670|0),($671|0))|0);
  10490. $681 = tempRet0;
  10491. $682 = $22;
  10492. $683 = $682;
  10493. $684 = HEAP32[$683>>2]|0;
  10494. $685 = (($682) + 4)|0;
  10495. $686 = $685;
  10496. $687 = HEAP32[$686>>2]|0;
  10497. $688 = (_bitshift64Ashr(0,($684|0),32)|0);
  10498. $689 = tempRet0;
  10499. $690 = $594;
  10500. $691 = $690;
  10501. $692 = HEAP32[$691>>2]|0;
  10502. $693 = (($690) + 4)|0;
  10503. $694 = $693;
  10504. $695 = HEAP32[$694>>2]|0;
  10505. $696 = (_bitshift64Ashr(0,($692|0),32)|0);
  10506. $697 = tempRet0;
  10507. $698 = (___muldi3(($696|0),($697|0),($688|0),($689|0))|0);
  10508. $699 = tempRet0;
  10509. $700 = (_i64Add(($698|0),($699|0),($680|0),($681|0))|0);
  10510. $701 = tempRet0;
  10511. $702 = (_bitshift64Shl(($700|0),($701|0),1)|0);
  10512. $703 = tempRet0;
  10513. $704 = (_i64Add(($662|0),($663|0),($702|0),($703|0))|0);
  10514. $705 = tempRet0;
  10515. $706 = (_bitshift64Shl(($704|0),($705|0),1)|0);
  10516. $707 = tempRet0;
  10517. $708 = (($output) + 80|0);
  10518. $709 = $708;
  10519. $710 = $709;
  10520. HEAP32[$710>>2] = $706;
  10521. $711 = (($709) + 4)|0;
  10522. $712 = $711;
  10523. HEAP32[$712>>2] = $707;
  10524. $713 = $224;
  10525. $714 = $713;
  10526. $715 = HEAP32[$714>>2]|0;
  10527. $716 = (($713) + 4)|0;
  10528. $717 = $716;
  10529. $718 = HEAP32[$717>>2]|0;
  10530. $719 = (_bitshift64Ashr(0,($715|0),32)|0);
  10531. $720 = tempRet0;
  10532. $721 = $282;
  10533. $722 = $721;
  10534. $723 = HEAP32[$722>>2]|0;
  10535. $724 = (($721) + 4)|0;
  10536. $725 = $724;
  10537. $726 = HEAP32[$725>>2]|0;
  10538. $727 = (_bitshift64Ashr(0,($723|0),32)|0);
  10539. $728 = tempRet0;
  10540. $729 = (___muldi3(($727|0),($728|0),($719|0),($720|0))|0);
  10541. $730 = tempRet0;
  10542. $731 = $160;
  10543. $732 = $731;
  10544. $733 = HEAP32[$732>>2]|0;
  10545. $734 = (($731) + 4)|0;
  10546. $735 = $734;
  10547. $736 = HEAP32[$735>>2]|0;
  10548. $737 = (_bitshift64Ashr(0,($733|0),32)|0);
  10549. $738 = tempRet0;
  10550. $739 = $388;
  10551. $740 = $739;
  10552. $741 = HEAP32[$740>>2]|0;
  10553. $742 = (($739) + 4)|0;
  10554. $743 = $742;
  10555. $744 = HEAP32[$743>>2]|0;
  10556. $745 = (_bitshift64Ashr(0,($741|0),32)|0);
  10557. $746 = tempRet0;
  10558. $747 = (___muldi3(($745|0),($746|0),($737|0),($738|0))|0);
  10559. $748 = tempRet0;
  10560. $749 = (_i64Add(($747|0),($748|0),($729|0),($730|0))|0);
  10561. $750 = tempRet0;
  10562. $751 = $102;
  10563. $752 = $751;
  10564. $753 = HEAP32[$752>>2]|0;
  10565. $754 = (($751) + 4)|0;
  10566. $755 = $754;
  10567. $756 = HEAP32[$755>>2]|0;
  10568. $757 = (_bitshift64Ashr(0,($753|0),32)|0);
  10569. $758 = tempRet0;
  10570. $759 = $444;
  10571. $760 = $759;
  10572. $761 = HEAP32[$760>>2]|0;
  10573. $762 = (($759) + 4)|0;
  10574. $763 = $762;
  10575. $764 = HEAP32[$763>>2]|0;
  10576. $765 = (_bitshift64Ashr(0,($761|0),32)|0);
  10577. $766 = tempRet0;
  10578. $767 = (___muldi3(($765|0),($766|0),($757|0),($758|0))|0);
  10579. $768 = tempRet0;
  10580. $769 = (_i64Add(($749|0),($750|0),($767|0),($768|0))|0);
  10581. $770 = tempRet0;
  10582. $771 = $56;
  10583. $772 = $771;
  10584. $773 = HEAP32[$772>>2]|0;
  10585. $774 = (($771) + 4)|0;
  10586. $775 = $774;
  10587. $776 = HEAP32[$775>>2]|0;
  10588. $777 = (_bitshift64Ashr(0,($773|0),32)|0);
  10589. $778 = tempRet0;
  10590. $779 = $594;
  10591. $780 = $779;
  10592. $781 = HEAP32[$780>>2]|0;
  10593. $782 = (($779) + 4)|0;
  10594. $783 = $782;
  10595. $784 = HEAP32[$783>>2]|0;
  10596. $785 = (_bitshift64Ashr(0,($781|0),32)|0);
  10597. $786 = tempRet0;
  10598. $787 = (___muldi3(($785|0),($786|0),($777|0),($778|0))|0);
  10599. $788 = tempRet0;
  10600. $789 = (_i64Add(($769|0),($770|0),($787|0),($788|0))|0);
  10601. $790 = tempRet0;
  10602. $791 = (_bitshift64Shl(($789|0),($790|0),1)|0);
  10603. $792 = tempRet0;
  10604. $793 = (($output) + 88|0);
  10605. $794 = $793;
  10606. $795 = $794;
  10607. HEAP32[$795>>2] = $791;
  10608. $796 = (($794) + 4)|0;
  10609. $797 = $796;
  10610. HEAP32[$797>>2] = $792;
  10611. $798 = $282;
  10612. $799 = $798;
  10613. $800 = HEAP32[$799>>2]|0;
  10614. $801 = (($798) + 4)|0;
  10615. $802 = $801;
  10616. $803 = HEAP32[$802>>2]|0;
  10617. $804 = (_bitshift64Ashr(0,($800|0),32)|0);
  10618. $805 = tempRet0;
  10619. $806 = (___muldi3(($804|0),($805|0),($804|0),($805|0))|0);
  10620. $807 = tempRet0;
  10621. $808 = $160;
  10622. $809 = $808;
  10623. $810 = HEAP32[$809>>2]|0;
  10624. $811 = (($808) + 4)|0;
  10625. $812 = $811;
  10626. $813 = HEAP32[$812>>2]|0;
  10627. $814 = (_bitshift64Ashr(0,($810|0),32)|0);
  10628. $815 = tempRet0;
  10629. $816 = $444;
  10630. $817 = $816;
  10631. $818 = HEAP32[$817>>2]|0;
  10632. $819 = (($816) + 4)|0;
  10633. $820 = $819;
  10634. $821 = HEAP32[$820>>2]|0;
  10635. $822 = (_bitshift64Ashr(0,($818|0),32)|0);
  10636. $823 = tempRet0;
  10637. $824 = (___muldi3(($822|0),($823|0),($814|0),($815|0))|0);
  10638. $825 = tempRet0;
  10639. $826 = $224;
  10640. $827 = $826;
  10641. $828 = HEAP32[$827>>2]|0;
  10642. $829 = (($826) + 4)|0;
  10643. $830 = $829;
  10644. $831 = HEAP32[$830>>2]|0;
  10645. $832 = (_bitshift64Ashr(0,($828|0),32)|0);
  10646. $833 = tempRet0;
  10647. $834 = $388;
  10648. $835 = $834;
  10649. $836 = HEAP32[$835>>2]|0;
  10650. $837 = (($834) + 4)|0;
  10651. $838 = $837;
  10652. $839 = HEAP32[$838>>2]|0;
  10653. $840 = (_bitshift64Ashr(0,($836|0),32)|0);
  10654. $841 = tempRet0;
  10655. $842 = (___muldi3(($840|0),($841|0),($832|0),($833|0))|0);
  10656. $843 = tempRet0;
  10657. $844 = $102;
  10658. $845 = $844;
  10659. $846 = HEAP32[$845>>2]|0;
  10660. $847 = (($844) + 4)|0;
  10661. $848 = $847;
  10662. $849 = HEAP32[$848>>2]|0;
  10663. $850 = (_bitshift64Ashr(0,($846|0),32)|0);
  10664. $851 = tempRet0;
  10665. $852 = $594;
  10666. $853 = $852;
  10667. $854 = HEAP32[$853>>2]|0;
  10668. $855 = (($852) + 4)|0;
  10669. $856 = $855;
  10670. $857 = HEAP32[$856>>2]|0;
  10671. $858 = (_bitshift64Ashr(0,($854|0),32)|0);
  10672. $859 = tempRet0;
  10673. $860 = (___muldi3(($858|0),($859|0),($850|0),($851|0))|0);
  10674. $861 = tempRet0;
  10675. $862 = (_i64Add(($860|0),($861|0),($842|0),($843|0))|0);
  10676. $863 = tempRet0;
  10677. $864 = (_bitshift64Shl(($862|0),($863|0),1)|0);
  10678. $865 = tempRet0;
  10679. $866 = (_i64Add(($864|0),($865|0),($824|0),($825|0))|0);
  10680. $867 = tempRet0;
  10681. $868 = (_bitshift64Shl(($866|0),($867|0),1)|0);
  10682. $869 = tempRet0;
  10683. $870 = (_i64Add(($868|0),($869|0),($806|0),($807|0))|0);
  10684. $871 = tempRet0;
  10685. $872 = (($output) + 96|0);
  10686. $873 = $872;
  10687. $874 = $873;
  10688. HEAP32[$874>>2] = $870;
  10689. $875 = (($873) + 4)|0;
  10690. $876 = $875;
  10691. HEAP32[$876>>2] = $871;
  10692. $877 = $282;
  10693. $878 = $877;
  10694. $879 = HEAP32[$878>>2]|0;
  10695. $880 = (($877) + 4)|0;
  10696. $881 = $880;
  10697. $882 = HEAP32[$881>>2]|0;
  10698. $883 = (_bitshift64Ashr(0,($879|0),32)|0);
  10699. $884 = tempRet0;
  10700. $885 = $388;
  10701. $886 = $885;
  10702. $887 = HEAP32[$886>>2]|0;
  10703. $888 = (($885) + 4)|0;
  10704. $889 = $888;
  10705. $890 = HEAP32[$889>>2]|0;
  10706. $891 = (_bitshift64Ashr(0,($887|0),32)|0);
  10707. $892 = tempRet0;
  10708. $893 = (___muldi3(($891|0),($892|0),($883|0),($884|0))|0);
  10709. $894 = tempRet0;
  10710. $895 = $224;
  10711. $896 = $895;
  10712. $897 = HEAP32[$896>>2]|0;
  10713. $898 = (($895) + 4)|0;
  10714. $899 = $898;
  10715. $900 = HEAP32[$899>>2]|0;
  10716. $901 = (_bitshift64Ashr(0,($897|0),32)|0);
  10717. $902 = tempRet0;
  10718. $903 = $444;
  10719. $904 = $903;
  10720. $905 = HEAP32[$904>>2]|0;
  10721. $906 = (($903) + 4)|0;
  10722. $907 = $906;
  10723. $908 = HEAP32[$907>>2]|0;
  10724. $909 = (_bitshift64Ashr(0,($905|0),32)|0);
  10725. $910 = tempRet0;
  10726. $911 = (___muldi3(($909|0),($910|0),($901|0),($902|0))|0);
  10727. $912 = tempRet0;
  10728. $913 = (_i64Add(($911|0),($912|0),($893|0),($894|0))|0);
  10729. $914 = tempRet0;
  10730. $915 = $160;
  10731. $916 = $915;
  10732. $917 = HEAP32[$916>>2]|0;
  10733. $918 = (($915) + 4)|0;
  10734. $919 = $918;
  10735. $920 = HEAP32[$919>>2]|0;
  10736. $921 = (_bitshift64Ashr(0,($917|0),32)|0);
  10737. $922 = tempRet0;
  10738. $923 = $594;
  10739. $924 = $923;
  10740. $925 = HEAP32[$924>>2]|0;
  10741. $926 = (($923) + 4)|0;
  10742. $927 = $926;
  10743. $928 = HEAP32[$927>>2]|0;
  10744. $929 = (_bitshift64Ashr(0,($925|0),32)|0);
  10745. $930 = tempRet0;
  10746. $931 = (___muldi3(($929|0),($930|0),($921|0),($922|0))|0);
  10747. $932 = tempRet0;
  10748. $933 = (_i64Add(($913|0),($914|0),($931|0),($932|0))|0);
  10749. $934 = tempRet0;
  10750. $935 = (_bitshift64Shl(($933|0),($934|0),1)|0);
  10751. $936 = tempRet0;
  10752. $937 = (($output) + 104|0);
  10753. $938 = $937;
  10754. $939 = $938;
  10755. HEAP32[$939>>2] = $935;
  10756. $940 = (($938) + 4)|0;
  10757. $941 = $940;
  10758. HEAP32[$941>>2] = $936;
  10759. $942 = $388;
  10760. $943 = $942;
  10761. $944 = HEAP32[$943>>2]|0;
  10762. $945 = (($942) + 4)|0;
  10763. $946 = $945;
  10764. $947 = HEAP32[$946>>2]|0;
  10765. $948 = (_bitshift64Ashr(0,($944|0),32)|0);
  10766. $949 = tempRet0;
  10767. $950 = (___muldi3(($948|0),($949|0),($948|0),($949|0))|0);
  10768. $951 = tempRet0;
  10769. $952 = $282;
  10770. $953 = $952;
  10771. $954 = HEAP32[$953>>2]|0;
  10772. $955 = (($952) + 4)|0;
  10773. $956 = $955;
  10774. $957 = HEAP32[$956>>2]|0;
  10775. $958 = (_bitshift64Ashr(0,($954|0),32)|0);
  10776. $959 = tempRet0;
  10777. $960 = $444;
  10778. $961 = $960;
  10779. $962 = HEAP32[$961>>2]|0;
  10780. $963 = (($960) + 4)|0;
  10781. $964 = $963;
  10782. $965 = HEAP32[$964>>2]|0;
  10783. $966 = (_bitshift64Ashr(0,($962|0),32)|0);
  10784. $967 = tempRet0;
  10785. $968 = (___muldi3(($966|0),($967|0),($958|0),($959|0))|0);
  10786. $969 = tempRet0;
  10787. $970 = (_i64Add(($968|0),($969|0),($950|0),($951|0))|0);
  10788. $971 = tempRet0;
  10789. $972 = $224;
  10790. $973 = $972;
  10791. $974 = HEAP32[$973>>2]|0;
  10792. $975 = (($972) + 4)|0;
  10793. $976 = $975;
  10794. $977 = HEAP32[$976>>2]|0;
  10795. $978 = (_bitshift64Ashr(0,($974|0),31)|0);
  10796. $979 = tempRet0;
  10797. $980 = $594;
  10798. $981 = $980;
  10799. $982 = HEAP32[$981>>2]|0;
  10800. $983 = (($980) + 4)|0;
  10801. $984 = $983;
  10802. $985 = HEAP32[$984>>2]|0;
  10803. $986 = (_bitshift64Ashr(0,($982|0),32)|0);
  10804. $987 = tempRet0;
  10805. $988 = (___muldi3(($986|0),($987|0),($978|0),($979|0))|0);
  10806. $989 = tempRet0;
  10807. $990 = (_i64Add(($970|0),($971|0),($988|0),($989|0))|0);
  10808. $991 = tempRet0;
  10809. $992 = (_bitshift64Shl(($990|0),($991|0),1)|0);
  10810. $993 = tempRet0;
  10811. $994 = (($output) + 112|0);
  10812. $995 = $994;
  10813. $996 = $995;
  10814. HEAP32[$996>>2] = $992;
  10815. $997 = (($995) + 4)|0;
  10816. $998 = $997;
  10817. HEAP32[$998>>2] = $993;
  10818. $999 = $388;
  10819. $1000 = $999;
  10820. $1001 = HEAP32[$1000>>2]|0;
  10821. $1002 = (($999) + 4)|0;
  10822. $1003 = $1002;
  10823. $1004 = HEAP32[$1003>>2]|0;
  10824. $1005 = (_bitshift64Ashr(0,($1001|0),32)|0);
  10825. $1006 = tempRet0;
  10826. $1007 = $444;
  10827. $1008 = $1007;
  10828. $1009 = HEAP32[$1008>>2]|0;
  10829. $1010 = (($1007) + 4)|0;
  10830. $1011 = $1010;
  10831. $1012 = HEAP32[$1011>>2]|0;
  10832. $1013 = (_bitshift64Ashr(0,($1009|0),32)|0);
  10833. $1014 = tempRet0;
  10834. $1015 = (___muldi3(($1013|0),($1014|0),($1005|0),($1006|0))|0);
  10835. $1016 = tempRet0;
  10836. $1017 = $282;
  10837. $1018 = $1017;
  10838. $1019 = HEAP32[$1018>>2]|0;
  10839. $1020 = (($1017) + 4)|0;
  10840. $1021 = $1020;
  10841. $1022 = HEAP32[$1021>>2]|0;
  10842. $1023 = (_bitshift64Ashr(0,($1019|0),32)|0);
  10843. $1024 = tempRet0;
  10844. $1025 = $594;
  10845. $1026 = $1025;
  10846. $1027 = HEAP32[$1026>>2]|0;
  10847. $1028 = (($1025) + 4)|0;
  10848. $1029 = $1028;
  10849. $1030 = HEAP32[$1029>>2]|0;
  10850. $1031 = (_bitshift64Ashr(0,($1027|0),32)|0);
  10851. $1032 = tempRet0;
  10852. $1033 = (___muldi3(($1031|0),($1032|0),($1023|0),($1024|0))|0);
  10853. $1034 = tempRet0;
  10854. $1035 = (_i64Add(($1033|0),($1034|0),($1015|0),($1016|0))|0);
  10855. $1036 = tempRet0;
  10856. $1037 = (_bitshift64Shl(($1035|0),($1036|0),1)|0);
  10857. $1038 = tempRet0;
  10858. $1039 = (($output) + 120|0);
  10859. $1040 = $1039;
  10860. $1041 = $1040;
  10861. HEAP32[$1041>>2] = $1037;
  10862. $1042 = (($1040) + 4)|0;
  10863. $1043 = $1042;
  10864. HEAP32[$1043>>2] = $1038;
  10865. $1044 = $444;
  10866. $1045 = $1044;
  10867. $1046 = HEAP32[$1045>>2]|0;
  10868. $1047 = (($1044) + 4)|0;
  10869. $1048 = $1047;
  10870. $1049 = HEAP32[$1048>>2]|0;
  10871. $1050 = (_bitshift64Ashr(0,($1046|0),32)|0);
  10872. $1051 = tempRet0;
  10873. $1052 = (___muldi3(($1050|0),($1051|0),($1050|0),($1051|0))|0);
  10874. $1053 = tempRet0;
  10875. $1054 = $388;
  10876. $1055 = $1054;
  10877. $1056 = HEAP32[$1055>>2]|0;
  10878. $1057 = (($1054) + 4)|0;
  10879. $1058 = $1057;
  10880. $1059 = HEAP32[$1058>>2]|0;
  10881. $1060 = (_bitshift64Ashr(0,($1056|0),30)|0);
  10882. $1061 = tempRet0;
  10883. $1062 = $594;
  10884. $1063 = $1062;
  10885. $1064 = HEAP32[$1063>>2]|0;
  10886. $1065 = (($1062) + 4)|0;
  10887. $1066 = $1065;
  10888. $1067 = HEAP32[$1066>>2]|0;
  10889. $1068 = (_bitshift64Ashr(0,($1064|0),32)|0);
  10890. $1069 = tempRet0;
  10891. $1070 = (___muldi3(($1068|0),($1069|0),($1060|0),($1061|0))|0);
  10892. $1071 = tempRet0;
  10893. $1072 = (_i64Add(($1070|0),($1071|0),($1052|0),($1053|0))|0);
  10894. $1073 = tempRet0;
  10895. $1074 = (($output) + 128|0);
  10896. $1075 = $1074;
  10897. $1076 = $1075;
  10898. HEAP32[$1076>>2] = $1072;
  10899. $1077 = (($1075) + 4)|0;
  10900. $1078 = $1077;
  10901. HEAP32[$1078>>2] = $1073;
  10902. $1079 = $444;
  10903. $1080 = $1079;
  10904. $1081 = HEAP32[$1080>>2]|0;
  10905. $1082 = (($1079) + 4)|0;
  10906. $1083 = $1082;
  10907. $1084 = HEAP32[$1083>>2]|0;
  10908. $1085 = (_bitshift64Ashr(0,($1081|0),31)|0);
  10909. $1086 = tempRet0;
  10910. $1087 = $594;
  10911. $1088 = $1087;
  10912. $1089 = HEAP32[$1088>>2]|0;
  10913. $1090 = (($1087) + 4)|0;
  10914. $1091 = $1090;
  10915. $1092 = HEAP32[$1091>>2]|0;
  10916. $1093 = (_bitshift64Ashr(0,($1089|0),32)|0);
  10917. $1094 = tempRet0;
  10918. $1095 = (___muldi3(($1093|0),($1094|0),($1085|0),($1086|0))|0);
  10919. $1096 = tempRet0;
  10920. $1097 = (($output) + 136|0);
  10921. $1098 = $1097;
  10922. $1099 = $1098;
  10923. HEAP32[$1099>>2] = $1095;
  10924. $1100 = (($1098) + 4)|0;
  10925. $1101 = $1100;
  10926. HEAP32[$1101>>2] = $1096;
  10927. $1102 = $594;
  10928. $1103 = $1102;
  10929. $1104 = HEAP32[$1103>>2]|0;
  10930. $1105 = (($1102) + 4)|0;
  10931. $1106 = $1105;
  10932. $1107 = HEAP32[$1106>>2]|0;
  10933. $1108 = (_bitshift64Ashr(0,($1104|0),32)|0);
  10934. $1109 = tempRet0;
  10935. $1110 = (_bitshift64Ashr(0,($1104|0),31)|0);
  10936. $1111 = tempRet0;
  10937. $1112 = (___muldi3(($1110|0),($1111|0),($1108|0),($1109|0))|0);
  10938. $1113 = tempRet0;
  10939. $1114 = (($output) + 144|0);
  10940. $1115 = $1114;
  10941. $1116 = $1115;
  10942. HEAP32[$1116>>2] = $1112;
  10943. $1117 = (($1115) + 4)|0;
  10944. $1118 = $1117;
  10945. HEAP32[$1118>>2] = $1113;
  10946. STACKTOP = sp;return;
  10947. }
  10948. function _div_by_2_26($0,$1) {
  10949. $0 = $0|0;
  10950. $1 = $1|0;
  10951. var $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
  10952. sp = STACKTOP;
  10953. $2 = $1 >> 31;
  10954. $3 = $2 >>> 6;
  10955. $4 = (_i64Add(($3|0),0,($0|0),($1|0))|0);
  10956. $5 = tempRet0;
  10957. $6 = (_bitshift64Ashr(($4|0),($5|0),26)|0);
  10958. $7 = tempRet0;
  10959. tempRet0 = $7;
  10960. STACKTOP = sp;return ($6|0);
  10961. }
  10962. function _div_by_2_25($0,$1) {
  10963. $0 = $0|0;
  10964. $1 = $1|0;
  10965. var $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
  10966. sp = STACKTOP;
  10967. $2 = $1 >> 31;
  10968. $3 = $2 >>> 7;
  10969. $4 = (_i64Add(($3|0),0,($0|0),($1|0))|0);
  10970. $5 = tempRet0;
  10971. $6 = (_bitshift64Ashr(($4|0),($5|0),25)|0);
  10972. $7 = tempRet0;
  10973. tempRet0 = $7;
  10974. STACKTOP = sp;return ($6|0);
  10975. }
  10976. function _crypto_sign_ed25519_ref10_fe_0($h) {
  10977. $h = $h|0;
  10978. var dest = 0, label = 0, sp = 0, stop = 0;
  10979. sp = STACKTOP;
  10980. dest=$h+0|0; stop=dest+40|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
  10981. STACKTOP = sp;return;
  10982. }
  10983. function _crypto_sign_ed25519_ref10_fe_1($h) {
  10984. $h = $h|0;
  10985. var $0 = 0, dest = 0, label = 0, sp = 0, stop = 0;
  10986. sp = STACKTOP;
  10987. HEAP32[$h>>2] = 1;
  10988. $0 = (($h) + 4|0);
  10989. dest=$0+0|0; stop=dest+36|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
  10990. STACKTOP = sp;return;
  10991. }
  10992. function _crypto_sign_ed25519_ref10_fe_add($h,$f,$g) {
  10993. $h = $h|0;
  10994. $f = $f|0;
  10995. $g = $g|0;
  10996. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0;
  10997. var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0;
  10998. var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  10999. sp = STACKTOP;
  11000. $0 = HEAP32[$f>>2]|0;
  11001. $1 = (($f) + 4|0);
  11002. $2 = HEAP32[$1>>2]|0;
  11003. $3 = (($f) + 8|0);
  11004. $4 = HEAP32[$3>>2]|0;
  11005. $5 = (($f) + 12|0);
  11006. $6 = HEAP32[$5>>2]|0;
  11007. $7 = (($f) + 16|0);
  11008. $8 = HEAP32[$7>>2]|0;
  11009. $9 = (($f) + 20|0);
  11010. $10 = HEAP32[$9>>2]|0;
  11011. $11 = (($f) + 24|0);
  11012. $12 = HEAP32[$11>>2]|0;
  11013. $13 = (($f) + 28|0);
  11014. $14 = HEAP32[$13>>2]|0;
  11015. $15 = (($f) + 32|0);
  11016. $16 = HEAP32[$15>>2]|0;
  11017. $17 = (($f) + 36|0);
  11018. $18 = HEAP32[$17>>2]|0;
  11019. $19 = HEAP32[$g>>2]|0;
  11020. $20 = (($g) + 4|0);
  11021. $21 = HEAP32[$20>>2]|0;
  11022. $22 = (($g) + 8|0);
  11023. $23 = HEAP32[$22>>2]|0;
  11024. $24 = (($g) + 12|0);
  11025. $25 = HEAP32[$24>>2]|0;
  11026. $26 = (($g) + 16|0);
  11027. $27 = HEAP32[$26>>2]|0;
  11028. $28 = (($g) + 20|0);
  11029. $29 = HEAP32[$28>>2]|0;
  11030. $30 = (($g) + 24|0);
  11031. $31 = HEAP32[$30>>2]|0;
  11032. $32 = (($g) + 28|0);
  11033. $33 = HEAP32[$32>>2]|0;
  11034. $34 = (($g) + 32|0);
  11035. $35 = HEAP32[$34>>2]|0;
  11036. $36 = (($g) + 36|0);
  11037. $37 = HEAP32[$36>>2]|0;
  11038. $38 = (($19) + ($0))|0;
  11039. $39 = (($21) + ($2))|0;
  11040. $40 = (($23) + ($4))|0;
  11041. $41 = (($25) + ($6))|0;
  11042. $42 = (($27) + ($8))|0;
  11043. $43 = (($29) + ($10))|0;
  11044. $44 = (($31) + ($12))|0;
  11045. $45 = (($33) + ($14))|0;
  11046. $46 = (($35) + ($16))|0;
  11047. $47 = (($37) + ($18))|0;
  11048. HEAP32[$h>>2] = $38;
  11049. $48 = (($h) + 4|0);
  11050. HEAP32[$48>>2] = $39;
  11051. $49 = (($h) + 8|0);
  11052. HEAP32[$49>>2] = $40;
  11053. $50 = (($h) + 12|0);
  11054. HEAP32[$50>>2] = $41;
  11055. $51 = (($h) + 16|0);
  11056. HEAP32[$51>>2] = $42;
  11057. $52 = (($h) + 20|0);
  11058. HEAP32[$52>>2] = $43;
  11059. $53 = (($h) + 24|0);
  11060. HEAP32[$53>>2] = $44;
  11061. $54 = (($h) + 28|0);
  11062. HEAP32[$54>>2] = $45;
  11063. $55 = (($h) + 32|0);
  11064. HEAP32[$55>>2] = $46;
  11065. $56 = (($h) + 36|0);
  11066. HEAP32[$56>>2] = $47;
  11067. STACKTOP = sp;return;
  11068. }
  11069. function _crypto_sign_ed25519_ref10_fe_cmov($f,$g,$b) {
  11070. $f = $f|0;
  11071. $g = $g|0;
  11072. $b = $b|0;
  11073. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0;
  11074. var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0;
  11075. var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0;
  11076. var $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  11077. sp = STACKTOP;
  11078. $0 = HEAP32[$f>>2]|0;
  11079. $1 = (($f) + 4|0);
  11080. $2 = HEAP32[$1>>2]|0;
  11081. $3 = (($f) + 8|0);
  11082. $4 = HEAP32[$3>>2]|0;
  11083. $5 = (($f) + 12|0);
  11084. $6 = HEAP32[$5>>2]|0;
  11085. $7 = (($f) + 16|0);
  11086. $8 = HEAP32[$7>>2]|0;
  11087. $9 = (($f) + 20|0);
  11088. $10 = HEAP32[$9>>2]|0;
  11089. $11 = (($f) + 24|0);
  11090. $12 = HEAP32[$11>>2]|0;
  11091. $13 = (($f) + 28|0);
  11092. $14 = HEAP32[$13>>2]|0;
  11093. $15 = (($f) + 32|0);
  11094. $16 = HEAP32[$15>>2]|0;
  11095. $17 = (($f) + 36|0);
  11096. $18 = HEAP32[$17>>2]|0;
  11097. $19 = HEAP32[$g>>2]|0;
  11098. $20 = (($g) + 4|0);
  11099. $21 = HEAP32[$20>>2]|0;
  11100. $22 = (($g) + 8|0);
  11101. $23 = HEAP32[$22>>2]|0;
  11102. $24 = (($g) + 12|0);
  11103. $25 = HEAP32[$24>>2]|0;
  11104. $26 = (($g) + 16|0);
  11105. $27 = HEAP32[$26>>2]|0;
  11106. $28 = (($g) + 20|0);
  11107. $29 = HEAP32[$28>>2]|0;
  11108. $30 = (($g) + 24|0);
  11109. $31 = HEAP32[$30>>2]|0;
  11110. $32 = (($g) + 28|0);
  11111. $33 = HEAP32[$32>>2]|0;
  11112. $34 = (($g) + 32|0);
  11113. $35 = HEAP32[$34>>2]|0;
  11114. $36 = (($g) + 36|0);
  11115. $37 = HEAP32[$36>>2]|0;
  11116. $38 = $19 ^ $0;
  11117. $39 = $21 ^ $2;
  11118. $40 = $23 ^ $4;
  11119. $41 = $25 ^ $6;
  11120. $42 = $27 ^ $8;
  11121. $43 = $29 ^ $10;
  11122. $44 = $31 ^ $12;
  11123. $45 = $33 ^ $14;
  11124. $46 = $35 ^ $16;
  11125. $47 = $37 ^ $18;
  11126. $48 = (0 - ($b))|0;
  11127. $49 = $38 & $48;
  11128. $50 = $39 & $48;
  11129. $51 = $40 & $48;
  11130. $52 = $41 & $48;
  11131. $53 = $42 & $48;
  11132. $54 = $43 & $48;
  11133. $55 = $44 & $48;
  11134. $56 = $45 & $48;
  11135. $57 = $46 & $48;
  11136. $58 = $47 & $48;
  11137. $59 = $49 ^ $0;
  11138. HEAP32[$f>>2] = $59;
  11139. $60 = $50 ^ $2;
  11140. HEAP32[$1>>2] = $60;
  11141. $61 = $51 ^ $4;
  11142. HEAP32[$3>>2] = $61;
  11143. $62 = $52 ^ $6;
  11144. HEAP32[$5>>2] = $62;
  11145. $63 = $53 ^ $8;
  11146. HEAP32[$7>>2] = $63;
  11147. $64 = $54 ^ $10;
  11148. HEAP32[$9>>2] = $64;
  11149. $65 = $55 ^ $12;
  11150. HEAP32[$11>>2] = $65;
  11151. $66 = $56 ^ $14;
  11152. HEAP32[$13>>2] = $66;
  11153. $67 = $57 ^ $16;
  11154. HEAP32[$15>>2] = $67;
  11155. $68 = $58 ^ $18;
  11156. HEAP32[$17>>2] = $68;
  11157. STACKTOP = sp;return;
  11158. }
  11159. function _crypto_sign_ed25519_ref10_fe_copy($h,$f) {
  11160. $h = $h|0;
  11161. $f = $f|0;
  11162. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0;
  11163. var $27 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  11164. sp = STACKTOP;
  11165. $0 = HEAP32[$f>>2]|0;
  11166. $1 = (($f) + 4|0);
  11167. $2 = HEAP32[$1>>2]|0;
  11168. $3 = (($f) + 8|0);
  11169. $4 = HEAP32[$3>>2]|0;
  11170. $5 = (($f) + 12|0);
  11171. $6 = HEAP32[$5>>2]|0;
  11172. $7 = (($f) + 16|0);
  11173. $8 = HEAP32[$7>>2]|0;
  11174. $9 = (($f) + 20|0);
  11175. $10 = HEAP32[$9>>2]|0;
  11176. $11 = (($f) + 24|0);
  11177. $12 = HEAP32[$11>>2]|0;
  11178. $13 = (($f) + 28|0);
  11179. $14 = HEAP32[$13>>2]|0;
  11180. $15 = (($f) + 32|0);
  11181. $16 = HEAP32[$15>>2]|0;
  11182. $17 = (($f) + 36|0);
  11183. $18 = HEAP32[$17>>2]|0;
  11184. HEAP32[$h>>2] = $0;
  11185. $19 = (($h) + 4|0);
  11186. HEAP32[$19>>2] = $2;
  11187. $20 = (($h) + 8|0);
  11188. HEAP32[$20>>2] = $4;
  11189. $21 = (($h) + 12|0);
  11190. HEAP32[$21>>2] = $6;
  11191. $22 = (($h) + 16|0);
  11192. HEAP32[$22>>2] = $8;
  11193. $23 = (($h) + 20|0);
  11194. HEAP32[$23>>2] = $10;
  11195. $24 = (($h) + 24|0);
  11196. HEAP32[$24>>2] = $12;
  11197. $25 = (($h) + 28|0);
  11198. HEAP32[$25>>2] = $14;
  11199. $26 = (($h) + 32|0);
  11200. HEAP32[$26>>2] = $16;
  11201. $27 = (($h) + 36|0);
  11202. HEAP32[$27>>2] = $18;
  11203. STACKTOP = sp;return;
  11204. }
  11205. function _crypto_sign_ed25519_ref10_fe_frombytes($h,$s) {
  11206. $h = $h|0;
  11207. $s = $s|0;
  11208. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0;
  11209. var $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0;
  11210. var $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0;
  11211. var $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0;
  11212. var $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0;
  11213. var $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0;
  11214. var $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0;
  11215. var $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
  11216. sp = STACKTOP;
  11217. $0 = (_load_4($s)|0);
  11218. $1 = tempRet0;
  11219. $2 = (($s) + 4|0);
  11220. $3 = (_load_3($2)|0);
  11221. $4 = tempRet0;
  11222. $5 = (_bitshift64Shl(($3|0),($4|0),6)|0);
  11223. $6 = tempRet0;
  11224. $7 = (($s) + 7|0);
  11225. $8 = (_load_3($7)|0);
  11226. $9 = tempRet0;
  11227. $10 = (_bitshift64Shl(($8|0),($9|0),5)|0);
  11228. $11 = tempRet0;
  11229. $12 = (($s) + 10|0);
  11230. $13 = (_load_3($12)|0);
  11231. $14 = tempRet0;
  11232. $15 = (_bitshift64Shl(($13|0),($14|0),3)|0);
  11233. $16 = tempRet0;
  11234. $17 = (($s) + 13|0);
  11235. $18 = (_load_3($17)|0);
  11236. $19 = tempRet0;
  11237. $20 = (_bitshift64Shl(($18|0),($19|0),2)|0);
  11238. $21 = tempRet0;
  11239. $22 = (($s) + 16|0);
  11240. $23 = (_load_4($22)|0);
  11241. $24 = tempRet0;
  11242. $25 = (($s) + 20|0);
  11243. $26 = (_load_3($25)|0);
  11244. $27 = tempRet0;
  11245. $28 = (_bitshift64Shl(($26|0),($27|0),7)|0);
  11246. $29 = tempRet0;
  11247. $30 = (($s) + 23|0);
  11248. $31 = (_load_3($30)|0);
  11249. $32 = tempRet0;
  11250. $33 = (_bitshift64Shl(($31|0),($32|0),5)|0);
  11251. $34 = tempRet0;
  11252. $35 = (($s) + 26|0);
  11253. $36 = (_load_3($35)|0);
  11254. $37 = tempRet0;
  11255. $38 = (_bitshift64Shl(($36|0),($37|0),4)|0);
  11256. $39 = tempRet0;
  11257. $40 = (($s) + 29|0);
  11258. $41 = (_load_3($40)|0);
  11259. $42 = tempRet0;
  11260. $43 = (_bitshift64Shl(($41|0),($42|0),2)|0);
  11261. $44 = tempRet0;
  11262. $45 = $43 & 33554428;
  11263. $46 = (_i64Add(($45|0),0,16777216,0)|0);
  11264. $47 = tempRet0;
  11265. $48 = (_bitshift64Lshr(($46|0),($47|0),25)|0);
  11266. $49 = tempRet0;
  11267. $50 = (___muldi3(($48|0),($49|0),19,0)|0);
  11268. $51 = tempRet0;
  11269. $52 = (_i64Add(($50|0),($51|0),($0|0),($1|0))|0);
  11270. $53 = tempRet0;
  11271. $54 = (_bitshift64Shl(($48|0),($49|0),25)|0);
  11272. $55 = tempRet0;
  11273. $56 = (_i64Add(($5|0),($6|0),16777216,0)|0);
  11274. $57 = tempRet0;
  11275. $58 = (_bitshift64Ashr(($56|0),($57|0),25)|0);
  11276. $59 = tempRet0;
  11277. $60 = (_i64Add(($58|0),($59|0),($10|0),($11|0))|0);
  11278. $61 = tempRet0;
  11279. $62 = (_bitshift64Shl(($58|0),($59|0),25)|0);
  11280. $63 = tempRet0;
  11281. $64 = (_i64Subtract(($5|0),($6|0),($62|0),($63|0))|0);
  11282. $65 = tempRet0;
  11283. $66 = (_i64Add(($15|0),($16|0),16777216,0)|0);
  11284. $67 = tempRet0;
  11285. $68 = (_bitshift64Ashr(($66|0),($67|0),25)|0);
  11286. $69 = tempRet0;
  11287. $70 = (_i64Add(($68|0),($69|0),($20|0),($21|0))|0);
  11288. $71 = tempRet0;
  11289. $72 = (_bitshift64Shl(($68|0),($69|0),25)|0);
  11290. $73 = tempRet0;
  11291. $74 = (_i64Subtract(($15|0),($16|0),($72|0),($73|0))|0);
  11292. $75 = tempRet0;
  11293. $76 = (_i64Add(($23|0),($24|0),16777216,0)|0);
  11294. $77 = tempRet0;
  11295. $78 = (_bitshift64Ashr(($76|0),($77|0),25)|0);
  11296. $79 = tempRet0;
  11297. $80 = (_i64Add(($28|0),($29|0),($78|0),($79|0))|0);
  11298. $81 = tempRet0;
  11299. $82 = (_bitshift64Shl(($78|0),($79|0),25)|0);
  11300. $83 = tempRet0;
  11301. $84 = (_i64Subtract(($23|0),($24|0),($82|0),($83|0))|0);
  11302. $85 = tempRet0;
  11303. $86 = (_i64Add(($33|0),($34|0),16777216,0)|0);
  11304. $87 = tempRet0;
  11305. $88 = (_bitshift64Ashr(($86|0),($87|0),25)|0);
  11306. $89 = tempRet0;
  11307. $90 = (_i64Add(($88|0),($89|0),($38|0),($39|0))|0);
  11308. $91 = tempRet0;
  11309. $92 = (_bitshift64Shl(($88|0),($89|0),25)|0);
  11310. $93 = tempRet0;
  11311. $94 = (_i64Add(($52|0),($53|0),33554432,0)|0);
  11312. $95 = tempRet0;
  11313. $96 = (_bitshift64Ashr(($94|0),($95|0),26)|0);
  11314. $97 = tempRet0;
  11315. $98 = (_i64Add(($64|0),($65|0),($96|0),($97|0))|0);
  11316. $99 = tempRet0;
  11317. $100 = (_bitshift64Shl(($96|0),($97|0),26)|0);
  11318. $101 = tempRet0;
  11319. $102 = (_i64Subtract(($52|0),($53|0),($100|0),($101|0))|0);
  11320. $103 = tempRet0;
  11321. $104 = (_i64Add(($60|0),($61|0),33554432,0)|0);
  11322. $105 = tempRet0;
  11323. $106 = (_bitshift64Ashr(($104|0),($105|0),26)|0);
  11324. $107 = tempRet0;
  11325. $108 = (_i64Add(($74|0),($75|0),($106|0),($107|0))|0);
  11326. $109 = tempRet0;
  11327. $110 = (_bitshift64Shl(($106|0),($107|0),26)|0);
  11328. $111 = tempRet0;
  11329. $112 = (_i64Subtract(($60|0),($61|0),($110|0),($111|0))|0);
  11330. $113 = tempRet0;
  11331. $114 = (_i64Add(($70|0),($71|0),33554432,0)|0);
  11332. $115 = tempRet0;
  11333. $116 = (_bitshift64Ashr(($114|0),($115|0),26)|0);
  11334. $117 = tempRet0;
  11335. $118 = (_i64Add(($84|0),($85|0),($116|0),($117|0))|0);
  11336. $119 = tempRet0;
  11337. $120 = (_bitshift64Shl(($116|0),($117|0),26)|0);
  11338. $121 = tempRet0;
  11339. $122 = (_i64Subtract(($70|0),($71|0),($120|0),($121|0))|0);
  11340. $123 = tempRet0;
  11341. $124 = (_i64Add(($80|0),($81|0),33554432,0)|0);
  11342. $125 = tempRet0;
  11343. $126 = (_bitshift64Ashr(($124|0),($125|0),26)|0);
  11344. $127 = tempRet0;
  11345. $128 = (_i64Add(($126|0),($127|0),($33|0),($34|0))|0);
  11346. $129 = tempRet0;
  11347. $130 = (_i64Subtract(($128|0),($129|0),($92|0),($93|0))|0);
  11348. $131 = tempRet0;
  11349. $132 = (_bitshift64Shl(($126|0),($127|0),26)|0);
  11350. $133 = tempRet0;
  11351. $134 = (_i64Subtract(($80|0),($81|0),($132|0),($133|0))|0);
  11352. $135 = tempRet0;
  11353. $136 = (_i64Add(($90|0),($91|0),33554432,0)|0);
  11354. $137 = tempRet0;
  11355. $138 = (_bitshift64Ashr(($136|0),($137|0),26)|0);
  11356. $139 = tempRet0;
  11357. $140 = (_i64Add(($138|0),($139|0),($45|0),0)|0);
  11358. $141 = tempRet0;
  11359. $142 = (_i64Subtract(($140|0),($141|0),($54|0),($55|0))|0);
  11360. $143 = tempRet0;
  11361. $144 = (_bitshift64Shl(($138|0),($139|0),26)|0);
  11362. $145 = tempRet0;
  11363. $146 = (_i64Subtract(($90|0),($91|0),($144|0),($145|0))|0);
  11364. $147 = tempRet0;
  11365. HEAP32[$h>>2] = $102;
  11366. $148 = (($h) + 4|0);
  11367. HEAP32[$148>>2] = $98;
  11368. $149 = (($h) + 8|0);
  11369. HEAP32[$149>>2] = $112;
  11370. $150 = (($h) + 12|0);
  11371. HEAP32[$150>>2] = $108;
  11372. $151 = (($h) + 16|0);
  11373. HEAP32[$151>>2] = $122;
  11374. $152 = (($h) + 20|0);
  11375. HEAP32[$152>>2] = $118;
  11376. $153 = (($h) + 24|0);
  11377. HEAP32[$153>>2] = $134;
  11378. $154 = (($h) + 28|0);
  11379. HEAP32[$154>>2] = $130;
  11380. $155 = (($h) + 32|0);
  11381. HEAP32[$155>>2] = $146;
  11382. $156 = (($h) + 36|0);
  11383. HEAP32[$156>>2] = $142;
  11384. STACKTOP = sp;return;
  11385. }
  11386. function _load_4($in) {
  11387. $in = $in|0;
  11388. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0;
  11389. var $8 = 0, $9 = 0, label = 0, sp = 0;
  11390. sp = STACKTOP;
  11391. $0 = HEAP8[$in>>0]|0;
  11392. $1 = $0&255;
  11393. $2 = (($in) + 1|0);
  11394. $3 = HEAP8[$2>>0]|0;
  11395. $4 = $3&255;
  11396. $5 = (_bitshift64Shl(($4|0),0,8)|0);
  11397. $6 = tempRet0;
  11398. $7 = $5 | $1;
  11399. $8 = (($in) + 2|0);
  11400. $9 = HEAP8[$8>>0]|0;
  11401. $10 = $9&255;
  11402. $11 = (_bitshift64Shl(($10|0),0,16)|0);
  11403. $12 = tempRet0;
  11404. $13 = $7 | $11;
  11405. $14 = $6 | $12;
  11406. $15 = (($in) + 3|0);
  11407. $16 = HEAP8[$15>>0]|0;
  11408. $17 = $16&255;
  11409. $18 = (_bitshift64Shl(($17|0),0,24)|0);
  11410. $19 = tempRet0;
  11411. $20 = $13 | $18;
  11412. $21 = $14 | $19;
  11413. tempRet0 = $21;
  11414. STACKTOP = sp;return ($20|0);
  11415. }
  11416. function _load_3($in) {
  11417. $in = $in|0;
  11418. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  11419. sp = STACKTOP;
  11420. $0 = HEAP8[$in>>0]|0;
  11421. $1 = $0&255;
  11422. $2 = (($in) + 1|0);
  11423. $3 = HEAP8[$2>>0]|0;
  11424. $4 = $3&255;
  11425. $5 = (_bitshift64Shl(($4|0),0,8)|0);
  11426. $6 = tempRet0;
  11427. $7 = $5 | $1;
  11428. $8 = (($in) + 2|0);
  11429. $9 = HEAP8[$8>>0]|0;
  11430. $10 = $9&255;
  11431. $11 = (_bitshift64Shl(($10|0),0,16)|0);
  11432. $12 = tempRet0;
  11433. $13 = $7 | $11;
  11434. $14 = $6 | $12;
  11435. tempRet0 = $14;
  11436. STACKTOP = sp;return ($13|0);
  11437. }
  11438. function _crypto_sign_ed25519_ref10_fe_invert($out,$z) {
  11439. $out = $out|0;
  11440. $z = $z|0;
  11441. var $0 = 0, $1 = 0, $2 = 0, $exitcond = 0, $exitcond10 = 0, $exitcond11 = 0, $i$74 = 0, $i$83 = 0, $i$92 = 0, $t0 = 0, $t1 = 0, $t2 = 0, $t3 = 0, label = 0, sp = 0;
  11442. sp = STACKTOP;
  11443. STACKTOP = STACKTOP + 160|0;
  11444. $t0 = sp + 120|0;
  11445. $t1 = sp + 80|0;
  11446. $t2 = sp + 40|0;
  11447. $t3 = sp;
  11448. _crypto_sign_ed25519_ref10_fe_sq($t0,$z);
  11449. _crypto_sign_ed25519_ref10_fe_sq($t1,$t0);
  11450. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  11451. _crypto_sign_ed25519_ref10_fe_mul($t1,$z,$t1);
  11452. _crypto_sign_ed25519_ref10_fe_mul($t0,$t0,$t1);
  11453. _crypto_sign_ed25519_ref10_fe_sq($t2,$t0);
  11454. _crypto_sign_ed25519_ref10_fe_mul($t1,$t1,$t2);
  11455. _crypto_sign_ed25519_ref10_fe_sq($t2,$t1);
  11456. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11457. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11458. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11459. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11460. _crypto_sign_ed25519_ref10_fe_mul($t1,$t2,$t1);
  11461. _crypto_sign_ed25519_ref10_fe_sq($t2,$t1);
  11462. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11463. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11464. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11465. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11466. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11467. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11468. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11469. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11470. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11471. _crypto_sign_ed25519_ref10_fe_mul($t2,$t2,$t1);
  11472. _crypto_sign_ed25519_ref10_fe_sq($t3,$t2);
  11473. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11474. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11475. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11476. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11477. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11478. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11479. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11480. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11481. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11482. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11483. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11484. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11485. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11486. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11487. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11488. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11489. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11490. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11491. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11492. _crypto_sign_ed25519_ref10_fe_mul($t2,$t3,$t2);
  11493. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11494. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11495. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11496. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11497. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11498. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11499. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11500. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11501. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11502. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11503. _crypto_sign_ed25519_ref10_fe_mul($t1,$t2,$t1);
  11504. _crypto_sign_ed25519_ref10_fe_sq($t2,$t1);
  11505. $i$74 = 1;
  11506. while(1) {
  11507. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11508. $0 = (($i$74) + 1)|0;
  11509. $exitcond11 = ($0|0)==(50);
  11510. if ($exitcond11) {
  11511. break;
  11512. } else {
  11513. $i$74 = $0;
  11514. }
  11515. }
  11516. _crypto_sign_ed25519_ref10_fe_mul($t2,$t2,$t1);
  11517. _crypto_sign_ed25519_ref10_fe_sq($t3,$t2);
  11518. $i$83 = 1;
  11519. while(1) {
  11520. _crypto_sign_ed25519_ref10_fe_sq($t3,$t3);
  11521. $1 = (($i$83) + 1)|0;
  11522. $exitcond10 = ($1|0)==(100);
  11523. if ($exitcond10) {
  11524. break;
  11525. } else {
  11526. $i$83 = $1;
  11527. }
  11528. }
  11529. _crypto_sign_ed25519_ref10_fe_mul($t2,$t3,$t2);
  11530. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11531. $i$92 = 1;
  11532. while(1) {
  11533. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  11534. $2 = (($i$92) + 1)|0;
  11535. $exitcond = ($2|0)==(50);
  11536. if ($exitcond) {
  11537. break;
  11538. } else {
  11539. $i$92 = $2;
  11540. }
  11541. }
  11542. _crypto_sign_ed25519_ref10_fe_mul($t1,$t2,$t1);
  11543. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  11544. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  11545. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  11546. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  11547. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  11548. _crypto_sign_ed25519_ref10_fe_mul($out,$t1,$t0);
  11549. STACKTOP = sp;return;
  11550. }
  11551. function _crypto_sign_ed25519_ref10_fe_isnegative($f) {
  11552. $f = $f|0;
  11553. var $0 = 0, $1 = 0, $2 = 0, $s = 0, label = 0, sp = 0;
  11554. sp = STACKTOP;
  11555. STACKTOP = STACKTOP + 32|0;
  11556. $s = sp;
  11557. _crypto_sign_ed25519_ref10_fe_tobytes($s,$f);
  11558. $0 = HEAP8[$s>>0]|0;
  11559. $1 = $0&255;
  11560. $2 = $1 & 1;
  11561. STACKTOP = sp;return ($2|0);
  11562. }
  11563. function _crypto_sign_ed25519_ref10_fe_isnonzero($f) {
  11564. $f = $f|0;
  11565. var $0 = 0, $s = 0, label = 0, sp = 0;
  11566. sp = STACKTOP;
  11567. STACKTOP = STACKTOP + 32|0;
  11568. $s = sp;
  11569. _crypto_sign_ed25519_ref10_fe_tobytes($s,$f);
  11570. $0 = (_crypto_verify_32_ref($s,8)|0);
  11571. STACKTOP = sp;return ($0|0);
  11572. }
  11573. function _crypto_sign_ed25519_ref10_fe_mul($h,$f,$g) {
  11574. $h = $h|0;
  11575. $f = $f|0;
  11576. $g = $g|0;
  11577. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0;
  11578. var $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0;
  11579. var $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0;
  11580. var $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0;
  11581. var $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0;
  11582. var $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0;
  11583. var $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0;
  11584. var $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0;
  11585. var $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0;
  11586. var $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0;
  11587. var $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0;
  11588. var $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0;
  11589. var $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0;
  11590. var $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0;
  11591. var $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0;
  11592. var $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0;
  11593. var $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0;
  11594. var $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0;
  11595. var $422 = 0, $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0;
  11596. var $440 = 0, $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0;
  11597. var $459 = 0, $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0;
  11598. var $477 = 0, $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0;
  11599. var $495 = 0, $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0;
  11600. var $512 = 0, $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0;
  11601. var $530 = 0, $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0;
  11602. var $549 = 0, $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0;
  11603. var $567 = 0, $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0;
  11604. var $585 = 0, $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0;
  11605. var $602 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0;
  11606. var $620 = 0, $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0;
  11607. var $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0;
  11608. var $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
  11609. sp = STACKTOP;
  11610. $0 = HEAP32[$f>>2]|0;
  11611. $1 = (($f) + 4|0);
  11612. $2 = HEAP32[$1>>2]|0;
  11613. $3 = (($f) + 8|0);
  11614. $4 = HEAP32[$3>>2]|0;
  11615. $5 = (($f) + 12|0);
  11616. $6 = HEAP32[$5>>2]|0;
  11617. $7 = (($f) + 16|0);
  11618. $8 = HEAP32[$7>>2]|0;
  11619. $9 = (($f) + 20|0);
  11620. $10 = HEAP32[$9>>2]|0;
  11621. $11 = (($f) + 24|0);
  11622. $12 = HEAP32[$11>>2]|0;
  11623. $13 = (($f) + 28|0);
  11624. $14 = HEAP32[$13>>2]|0;
  11625. $15 = (($f) + 32|0);
  11626. $16 = HEAP32[$15>>2]|0;
  11627. $17 = (($f) + 36|0);
  11628. $18 = HEAP32[$17>>2]|0;
  11629. $19 = HEAP32[$g>>2]|0;
  11630. $20 = (($g) + 4|0);
  11631. $21 = HEAP32[$20>>2]|0;
  11632. $22 = (($g) + 8|0);
  11633. $23 = HEAP32[$22>>2]|0;
  11634. $24 = (($g) + 12|0);
  11635. $25 = HEAP32[$24>>2]|0;
  11636. $26 = (($g) + 16|0);
  11637. $27 = HEAP32[$26>>2]|0;
  11638. $28 = (($g) + 20|0);
  11639. $29 = HEAP32[$28>>2]|0;
  11640. $30 = (($g) + 24|0);
  11641. $31 = HEAP32[$30>>2]|0;
  11642. $32 = (($g) + 28|0);
  11643. $33 = HEAP32[$32>>2]|0;
  11644. $34 = (($g) + 32|0);
  11645. $35 = HEAP32[$34>>2]|0;
  11646. $36 = (($g) + 36|0);
  11647. $37 = HEAP32[$36>>2]|0;
  11648. $38 = ($21*19)|0;
  11649. $39 = ($23*19)|0;
  11650. $40 = ($25*19)|0;
  11651. $41 = ($27*19)|0;
  11652. $42 = ($29*19)|0;
  11653. $43 = ($31*19)|0;
  11654. $44 = ($33*19)|0;
  11655. $45 = ($35*19)|0;
  11656. $46 = ($37*19)|0;
  11657. $47 = $2 << 1;
  11658. $48 = $6 << 1;
  11659. $49 = $10 << 1;
  11660. $50 = $14 << 1;
  11661. $51 = $18 << 1;
  11662. $52 = ($0|0)<(0);
  11663. $53 = $52 << 31 >> 31;
  11664. $54 = ($19|0)<(0);
  11665. $55 = $54 << 31 >> 31;
  11666. $56 = (___muldi3(($19|0),($55|0),($0|0),($53|0))|0);
  11667. $57 = tempRet0;
  11668. $58 = ($21|0)<(0);
  11669. $59 = $58 << 31 >> 31;
  11670. $60 = (___muldi3(($21|0),($59|0),($0|0),($53|0))|0);
  11671. $61 = tempRet0;
  11672. $62 = ($23|0)<(0);
  11673. $63 = $62 << 31 >> 31;
  11674. $64 = (___muldi3(($23|0),($63|0),($0|0),($53|0))|0);
  11675. $65 = tempRet0;
  11676. $66 = ($25|0)<(0);
  11677. $67 = $66 << 31 >> 31;
  11678. $68 = (___muldi3(($25|0),($67|0),($0|0),($53|0))|0);
  11679. $69 = tempRet0;
  11680. $70 = ($27|0)<(0);
  11681. $71 = $70 << 31 >> 31;
  11682. $72 = (___muldi3(($27|0),($71|0),($0|0),($53|0))|0);
  11683. $73 = tempRet0;
  11684. $74 = ($29|0)<(0);
  11685. $75 = $74 << 31 >> 31;
  11686. $76 = (___muldi3(($29|0),($75|0),($0|0),($53|0))|0);
  11687. $77 = tempRet0;
  11688. $78 = ($31|0)<(0);
  11689. $79 = $78 << 31 >> 31;
  11690. $80 = (___muldi3(($31|0),($79|0),($0|0),($53|0))|0);
  11691. $81 = tempRet0;
  11692. $82 = ($33|0)<(0);
  11693. $83 = $82 << 31 >> 31;
  11694. $84 = (___muldi3(($33|0),($83|0),($0|0),($53|0))|0);
  11695. $85 = tempRet0;
  11696. $86 = ($35|0)<(0);
  11697. $87 = $86 << 31 >> 31;
  11698. $88 = (___muldi3(($35|0),($87|0),($0|0),($53|0))|0);
  11699. $89 = tempRet0;
  11700. $90 = ($37|0)<(0);
  11701. $91 = $90 << 31 >> 31;
  11702. $92 = (___muldi3(($37|0),($91|0),($0|0),($53|0))|0);
  11703. $93 = tempRet0;
  11704. $94 = ($2|0)<(0);
  11705. $95 = $94 << 31 >> 31;
  11706. $96 = (___muldi3(($19|0),($55|0),($2|0),($95|0))|0);
  11707. $97 = tempRet0;
  11708. $98 = ($47|0)<(0);
  11709. $99 = $98 << 31 >> 31;
  11710. $100 = (___muldi3(($21|0),($59|0),($47|0),($99|0))|0);
  11711. $101 = tempRet0;
  11712. $102 = (___muldi3(($23|0),($63|0),($2|0),($95|0))|0);
  11713. $103 = tempRet0;
  11714. $104 = (___muldi3(($25|0),($67|0),($47|0),($99|0))|0);
  11715. $105 = tempRet0;
  11716. $106 = (___muldi3(($27|0),($71|0),($2|0),($95|0))|0);
  11717. $107 = tempRet0;
  11718. $108 = (___muldi3(($29|0),($75|0),($47|0),($99|0))|0);
  11719. $109 = tempRet0;
  11720. $110 = (___muldi3(($31|0),($79|0),($2|0),($95|0))|0);
  11721. $111 = tempRet0;
  11722. $112 = (___muldi3(($33|0),($83|0),($47|0),($99|0))|0);
  11723. $113 = tempRet0;
  11724. $114 = (___muldi3(($35|0),($87|0),($2|0),($95|0))|0);
  11725. $115 = tempRet0;
  11726. $116 = ($46|0)<(0);
  11727. $117 = $116 << 31 >> 31;
  11728. $118 = (___muldi3(($46|0),($117|0),($47|0),($99|0))|0);
  11729. $119 = tempRet0;
  11730. $120 = ($4|0)<(0);
  11731. $121 = $120 << 31 >> 31;
  11732. $122 = (___muldi3(($19|0),($55|0),($4|0),($121|0))|0);
  11733. $123 = tempRet0;
  11734. $124 = (___muldi3(($21|0),($59|0),($4|0),($121|0))|0);
  11735. $125 = tempRet0;
  11736. $126 = (___muldi3(($23|0),($63|0),($4|0),($121|0))|0);
  11737. $127 = tempRet0;
  11738. $128 = (___muldi3(($25|0),($67|0),($4|0),($121|0))|0);
  11739. $129 = tempRet0;
  11740. $130 = (___muldi3(($27|0),($71|0),($4|0),($121|0))|0);
  11741. $131 = tempRet0;
  11742. $132 = (___muldi3(($29|0),($75|0),($4|0),($121|0))|0);
  11743. $133 = tempRet0;
  11744. $134 = (___muldi3(($31|0),($79|0),($4|0),($121|0))|0);
  11745. $135 = tempRet0;
  11746. $136 = (___muldi3(($33|0),($83|0),($4|0),($121|0))|0);
  11747. $137 = tempRet0;
  11748. $138 = ($45|0)<(0);
  11749. $139 = $138 << 31 >> 31;
  11750. $140 = (___muldi3(($45|0),($139|0),($4|0),($121|0))|0);
  11751. $141 = tempRet0;
  11752. $142 = (___muldi3(($46|0),($117|0),($4|0),($121|0))|0);
  11753. $143 = tempRet0;
  11754. $144 = ($6|0)<(0);
  11755. $145 = $144 << 31 >> 31;
  11756. $146 = (___muldi3(($19|0),($55|0),($6|0),($145|0))|0);
  11757. $147 = tempRet0;
  11758. $148 = ($48|0)<(0);
  11759. $149 = $148 << 31 >> 31;
  11760. $150 = (___muldi3(($21|0),($59|0),($48|0),($149|0))|0);
  11761. $151 = tempRet0;
  11762. $152 = (___muldi3(($23|0),($63|0),($6|0),($145|0))|0);
  11763. $153 = tempRet0;
  11764. $154 = (___muldi3(($25|0),($67|0),($48|0),($149|0))|0);
  11765. $155 = tempRet0;
  11766. $156 = (___muldi3(($27|0),($71|0),($6|0),($145|0))|0);
  11767. $157 = tempRet0;
  11768. $158 = (___muldi3(($29|0),($75|0),($48|0),($149|0))|0);
  11769. $159 = tempRet0;
  11770. $160 = (___muldi3(($31|0),($79|0),($6|0),($145|0))|0);
  11771. $161 = tempRet0;
  11772. $162 = ($44|0)<(0);
  11773. $163 = $162 << 31 >> 31;
  11774. $164 = (___muldi3(($44|0),($163|0),($48|0),($149|0))|0);
  11775. $165 = tempRet0;
  11776. $166 = (___muldi3(($45|0),($139|0),($6|0),($145|0))|0);
  11777. $167 = tempRet0;
  11778. $168 = (___muldi3(($46|0),($117|0),($48|0),($149|0))|0);
  11779. $169 = tempRet0;
  11780. $170 = ($8|0)<(0);
  11781. $171 = $170 << 31 >> 31;
  11782. $172 = (___muldi3(($19|0),($55|0),($8|0),($171|0))|0);
  11783. $173 = tempRet0;
  11784. $174 = (___muldi3(($21|0),($59|0),($8|0),($171|0))|0);
  11785. $175 = tempRet0;
  11786. $176 = (___muldi3(($23|0),($63|0),($8|0),($171|0))|0);
  11787. $177 = tempRet0;
  11788. $178 = (___muldi3(($25|0),($67|0),($8|0),($171|0))|0);
  11789. $179 = tempRet0;
  11790. $180 = (___muldi3(($27|0),($71|0),($8|0),($171|0))|0);
  11791. $181 = tempRet0;
  11792. $182 = (___muldi3(($29|0),($75|0),($8|0),($171|0))|0);
  11793. $183 = tempRet0;
  11794. $184 = ($43|0)<(0);
  11795. $185 = $184 << 31 >> 31;
  11796. $186 = (___muldi3(($43|0),($185|0),($8|0),($171|0))|0);
  11797. $187 = tempRet0;
  11798. $188 = (___muldi3(($44|0),($163|0),($8|0),($171|0))|0);
  11799. $189 = tempRet0;
  11800. $190 = (___muldi3(($45|0),($139|0),($8|0),($171|0))|0);
  11801. $191 = tempRet0;
  11802. $192 = (___muldi3(($46|0),($117|0),($8|0),($171|0))|0);
  11803. $193 = tempRet0;
  11804. $194 = ($10|0)<(0);
  11805. $195 = $194 << 31 >> 31;
  11806. $196 = (___muldi3(($19|0),($55|0),($10|0),($195|0))|0);
  11807. $197 = tempRet0;
  11808. $198 = ($49|0)<(0);
  11809. $199 = $198 << 31 >> 31;
  11810. $200 = (___muldi3(($21|0),($59|0),($49|0),($199|0))|0);
  11811. $201 = tempRet0;
  11812. $202 = (___muldi3(($23|0),($63|0),($10|0),($195|0))|0);
  11813. $203 = tempRet0;
  11814. $204 = (___muldi3(($25|0),($67|0),($49|0),($199|0))|0);
  11815. $205 = tempRet0;
  11816. $206 = (___muldi3(($27|0),($71|0),($10|0),($195|0))|0);
  11817. $207 = tempRet0;
  11818. $208 = ($42|0)<(0);
  11819. $209 = $208 << 31 >> 31;
  11820. $210 = (___muldi3(($42|0),($209|0),($49|0),($199|0))|0);
  11821. $211 = tempRet0;
  11822. $212 = (___muldi3(($43|0),($185|0),($10|0),($195|0))|0);
  11823. $213 = tempRet0;
  11824. $214 = (___muldi3(($44|0),($163|0),($49|0),($199|0))|0);
  11825. $215 = tempRet0;
  11826. $216 = (___muldi3(($45|0),($139|0),($10|0),($195|0))|0);
  11827. $217 = tempRet0;
  11828. $218 = (___muldi3(($46|0),($117|0),($49|0),($199|0))|0);
  11829. $219 = tempRet0;
  11830. $220 = ($12|0)<(0);
  11831. $221 = $220 << 31 >> 31;
  11832. $222 = (___muldi3(($19|0),($55|0),($12|0),($221|0))|0);
  11833. $223 = tempRet0;
  11834. $224 = (___muldi3(($21|0),($59|0),($12|0),($221|0))|0);
  11835. $225 = tempRet0;
  11836. $226 = (___muldi3(($23|0),($63|0),($12|0),($221|0))|0);
  11837. $227 = tempRet0;
  11838. $228 = (___muldi3(($25|0),($67|0),($12|0),($221|0))|0);
  11839. $229 = tempRet0;
  11840. $230 = ($41|0)<(0);
  11841. $231 = $230 << 31 >> 31;
  11842. $232 = (___muldi3(($41|0),($231|0),($12|0),($221|0))|0);
  11843. $233 = tempRet0;
  11844. $234 = (___muldi3(($42|0),($209|0),($12|0),($221|0))|0);
  11845. $235 = tempRet0;
  11846. $236 = (___muldi3(($43|0),($185|0),($12|0),($221|0))|0);
  11847. $237 = tempRet0;
  11848. $238 = (___muldi3(($44|0),($163|0),($12|0),($221|0))|0);
  11849. $239 = tempRet0;
  11850. $240 = (___muldi3(($45|0),($139|0),($12|0),($221|0))|0);
  11851. $241 = tempRet0;
  11852. $242 = (___muldi3(($46|0),($117|0),($12|0),($221|0))|0);
  11853. $243 = tempRet0;
  11854. $244 = ($14|0)<(0);
  11855. $245 = $244 << 31 >> 31;
  11856. $246 = (___muldi3(($19|0),($55|0),($14|0),($245|0))|0);
  11857. $247 = tempRet0;
  11858. $248 = ($50|0)<(0);
  11859. $249 = $248 << 31 >> 31;
  11860. $250 = (___muldi3(($21|0),($59|0),($50|0),($249|0))|0);
  11861. $251 = tempRet0;
  11862. $252 = (___muldi3(($23|0),($63|0),($14|0),($245|0))|0);
  11863. $253 = tempRet0;
  11864. $254 = ($40|0)<(0);
  11865. $255 = $254 << 31 >> 31;
  11866. $256 = (___muldi3(($40|0),($255|0),($50|0),($249|0))|0);
  11867. $257 = tempRet0;
  11868. $258 = (___muldi3(($41|0),($231|0),($14|0),($245|0))|0);
  11869. $259 = tempRet0;
  11870. $260 = (___muldi3(($42|0),($209|0),($50|0),($249|0))|0);
  11871. $261 = tempRet0;
  11872. $262 = (___muldi3(($43|0),($185|0),($14|0),($245|0))|0);
  11873. $263 = tempRet0;
  11874. $264 = (___muldi3(($44|0),($163|0),($50|0),($249|0))|0);
  11875. $265 = tempRet0;
  11876. $266 = (___muldi3(($45|0),($139|0),($14|0),($245|0))|0);
  11877. $267 = tempRet0;
  11878. $268 = (___muldi3(($46|0),($117|0),($50|0),($249|0))|0);
  11879. $269 = tempRet0;
  11880. $270 = ($16|0)<(0);
  11881. $271 = $270 << 31 >> 31;
  11882. $272 = (___muldi3(($19|0),($55|0),($16|0),($271|0))|0);
  11883. $273 = tempRet0;
  11884. $274 = (___muldi3(($21|0),($59|0),($16|0),($271|0))|0);
  11885. $275 = tempRet0;
  11886. $276 = ($39|0)<(0);
  11887. $277 = $276 << 31 >> 31;
  11888. $278 = (___muldi3(($39|0),($277|0),($16|0),($271|0))|0);
  11889. $279 = tempRet0;
  11890. $280 = (___muldi3(($40|0),($255|0),($16|0),($271|0))|0);
  11891. $281 = tempRet0;
  11892. $282 = (___muldi3(($41|0),($231|0),($16|0),($271|0))|0);
  11893. $283 = tempRet0;
  11894. $284 = (___muldi3(($42|0),($209|0),($16|0),($271|0))|0);
  11895. $285 = tempRet0;
  11896. $286 = (___muldi3(($43|0),($185|0),($16|0),($271|0))|0);
  11897. $287 = tempRet0;
  11898. $288 = (___muldi3(($44|0),($163|0),($16|0),($271|0))|0);
  11899. $289 = tempRet0;
  11900. $290 = (___muldi3(($45|0),($139|0),($16|0),($271|0))|0);
  11901. $291 = tempRet0;
  11902. $292 = (___muldi3(($46|0),($117|0),($16|0),($271|0))|0);
  11903. $293 = tempRet0;
  11904. $294 = ($18|0)<(0);
  11905. $295 = $294 << 31 >> 31;
  11906. $296 = (___muldi3(($19|0),($55|0),($18|0),($295|0))|0);
  11907. $297 = tempRet0;
  11908. $298 = ($51|0)<(0);
  11909. $299 = $298 << 31 >> 31;
  11910. $300 = ($38|0)<(0);
  11911. $301 = $300 << 31 >> 31;
  11912. $302 = (___muldi3(($38|0),($301|0),($51|0),($299|0))|0);
  11913. $303 = tempRet0;
  11914. $304 = (___muldi3(($39|0),($277|0),($18|0),($295|0))|0);
  11915. $305 = tempRet0;
  11916. $306 = (___muldi3(($40|0),($255|0),($51|0),($299|0))|0);
  11917. $307 = tempRet0;
  11918. $308 = (___muldi3(($41|0),($231|0),($18|0),($295|0))|0);
  11919. $309 = tempRet0;
  11920. $310 = (___muldi3(($42|0),($209|0),($51|0),($299|0))|0);
  11921. $311 = tempRet0;
  11922. $312 = (___muldi3(($43|0),($185|0),($18|0),($295|0))|0);
  11923. $313 = tempRet0;
  11924. $314 = (___muldi3(($44|0),($163|0),($51|0),($299|0))|0);
  11925. $315 = tempRet0;
  11926. $316 = (___muldi3(($45|0),($139|0),($18|0),($295|0))|0);
  11927. $317 = tempRet0;
  11928. $318 = (___muldi3(($46|0),($117|0),($51|0),($299|0))|0);
  11929. $319 = tempRet0;
  11930. $320 = (_i64Add(($302|0),($303|0),($56|0),($57|0))|0);
  11931. $321 = tempRet0;
  11932. $322 = (_i64Add(($320|0),($321|0),($278|0),($279|0))|0);
  11933. $323 = tempRet0;
  11934. $324 = (_i64Add(($322|0),($323|0),($256|0),($257|0))|0);
  11935. $325 = tempRet0;
  11936. $326 = (_i64Add(($324|0),($325|0),($232|0),($233|0))|0);
  11937. $327 = tempRet0;
  11938. $328 = (_i64Add(($326|0),($327|0),($210|0),($211|0))|0);
  11939. $329 = tempRet0;
  11940. $330 = (_i64Add(($328|0),($329|0),($186|0),($187|0))|0);
  11941. $331 = tempRet0;
  11942. $332 = (_i64Add(($330|0),($331|0),($164|0),($165|0))|0);
  11943. $333 = tempRet0;
  11944. $334 = (_i64Add(($332|0),($333|0),($140|0),($141|0))|0);
  11945. $335 = tempRet0;
  11946. $336 = (_i64Add(($334|0),($335|0),($118|0),($119|0))|0);
  11947. $337 = tempRet0;
  11948. $338 = (_i64Add(($60|0),($61|0),($96|0),($97|0))|0);
  11949. $339 = tempRet0;
  11950. $340 = (_i64Add(($150|0),($151|0),($172|0),($173|0))|0);
  11951. $341 = tempRet0;
  11952. $342 = (_i64Add(($340|0),($341|0),($126|0),($127|0))|0);
  11953. $343 = tempRet0;
  11954. $344 = (_i64Add(($342|0),($343|0),($104|0),($105|0))|0);
  11955. $345 = tempRet0;
  11956. $346 = (_i64Add(($344|0),($345|0),($72|0),($73|0))|0);
  11957. $347 = tempRet0;
  11958. $348 = (_i64Add(($346|0),($347|0),($310|0),($311|0))|0);
  11959. $349 = tempRet0;
  11960. $350 = (_i64Add(($348|0),($349|0),($286|0),($287|0))|0);
  11961. $351 = tempRet0;
  11962. $352 = (_i64Add(($350|0),($351|0),($264|0),($265|0))|0);
  11963. $353 = tempRet0;
  11964. $354 = (_i64Add(($352|0),($353|0),($240|0),($241|0))|0);
  11965. $355 = tempRet0;
  11966. $356 = (_i64Add(($354|0),($355|0),($218|0),($219|0))|0);
  11967. $357 = tempRet0;
  11968. $358 = (_i64Add(($336|0),($337|0),33554432,0)|0);
  11969. $359 = tempRet0;
  11970. $360 = (_bitshift64Ashr(($358|0),($359|0),26)|0);
  11971. $361 = tempRet0;
  11972. $362 = (_i64Add(($338|0),($339|0),($304|0),($305|0))|0);
  11973. $363 = tempRet0;
  11974. $364 = (_i64Add(($362|0),($363|0),($280|0),($281|0))|0);
  11975. $365 = tempRet0;
  11976. $366 = (_i64Add(($364|0),($365|0),($258|0),($259|0))|0);
  11977. $367 = tempRet0;
  11978. $368 = (_i64Add(($366|0),($367|0),($234|0),($235|0))|0);
  11979. $369 = tempRet0;
  11980. $370 = (_i64Add(($368|0),($369|0),($212|0),($213|0))|0);
  11981. $371 = tempRet0;
  11982. $372 = (_i64Add(($370|0),($371|0),($188|0),($189|0))|0);
  11983. $373 = tempRet0;
  11984. $374 = (_i64Add(($372|0),($373|0),($166|0),($167|0))|0);
  11985. $375 = tempRet0;
  11986. $376 = (_i64Add(($374|0),($375|0),($142|0),($143|0))|0);
  11987. $377 = tempRet0;
  11988. $378 = (_i64Add(($376|0),($377|0),($360|0),($361|0))|0);
  11989. $379 = tempRet0;
  11990. $380 = (_bitshift64Shl(($360|0),($361|0),26)|0);
  11991. $381 = tempRet0;
  11992. $382 = (_i64Subtract(($336|0),($337|0),($380|0),($381|0))|0);
  11993. $383 = tempRet0;
  11994. $384 = (_i64Add(($356|0),($357|0),33554432,0)|0);
  11995. $385 = tempRet0;
  11996. $386 = (_bitshift64Ashr(($384|0),($385|0),26)|0);
  11997. $387 = tempRet0;
  11998. $388 = (_i64Add(($174|0),($175|0),($196|0),($197|0))|0);
  11999. $389 = tempRet0;
  12000. $390 = (_i64Add(($388|0),($389|0),($152|0),($153|0))|0);
  12001. $391 = tempRet0;
  12002. $392 = (_i64Add(($390|0),($391|0),($128|0),($129|0))|0);
  12003. $393 = tempRet0;
  12004. $394 = (_i64Add(($392|0),($393|0),($106|0),($107|0))|0);
  12005. $395 = tempRet0;
  12006. $396 = (_i64Add(($394|0),($395|0),($76|0),($77|0))|0);
  12007. $397 = tempRet0;
  12008. $398 = (_i64Add(($396|0),($397|0),($312|0),($313|0))|0);
  12009. $399 = tempRet0;
  12010. $400 = (_i64Add(($398|0),($399|0),($288|0),($289|0))|0);
  12011. $401 = tempRet0;
  12012. $402 = (_i64Add(($400|0),($401|0),($266|0),($267|0))|0);
  12013. $403 = tempRet0;
  12014. $404 = (_i64Add(($402|0),($403|0),($242|0),($243|0))|0);
  12015. $405 = tempRet0;
  12016. $406 = (_i64Add(($404|0),($405|0),($386|0),($387|0))|0);
  12017. $407 = tempRet0;
  12018. $408 = (_bitshift64Shl(($386|0),($387|0),26)|0);
  12019. $409 = tempRet0;
  12020. $410 = (_i64Subtract(($356|0),($357|0),($408|0),($409|0))|0);
  12021. $411 = tempRet0;
  12022. $412 = (_i64Add(($378|0),($379|0),16777216,0)|0);
  12023. $413 = tempRet0;
  12024. $414 = (_bitshift64Ashr(($412|0),($413|0),25)|0);
  12025. $415 = tempRet0;
  12026. $416 = (_i64Add(($100|0),($101|0),($122|0),($123|0))|0);
  12027. $417 = tempRet0;
  12028. $418 = (_i64Add(($416|0),($417|0),($64|0),($65|0))|0);
  12029. $419 = tempRet0;
  12030. $420 = (_i64Add(($418|0),($419|0),($306|0),($307|0))|0);
  12031. $421 = tempRet0;
  12032. $422 = (_i64Add(($420|0),($421|0),($282|0),($283|0))|0);
  12033. $423 = tempRet0;
  12034. $424 = (_i64Add(($422|0),($423|0),($260|0),($261|0))|0);
  12035. $425 = tempRet0;
  12036. $426 = (_i64Add(($424|0),($425|0),($236|0),($237|0))|0);
  12037. $427 = tempRet0;
  12038. $428 = (_i64Add(($426|0),($427|0),($214|0),($215|0))|0);
  12039. $429 = tempRet0;
  12040. $430 = (_i64Add(($428|0),($429|0),($190|0),($191|0))|0);
  12041. $431 = tempRet0;
  12042. $432 = (_i64Add(($430|0),($431|0),($168|0),($169|0))|0);
  12043. $433 = tempRet0;
  12044. $434 = (_i64Add(($432|0),($433|0),($414|0),($415|0))|0);
  12045. $435 = tempRet0;
  12046. $436 = (_bitshift64Shl(($414|0),($415|0),25)|0);
  12047. $437 = tempRet0;
  12048. $438 = (_i64Subtract(($378|0),($379|0),($436|0),($437|0))|0);
  12049. $439 = tempRet0;
  12050. $440 = (_i64Add(($406|0),($407|0),16777216,0)|0);
  12051. $441 = tempRet0;
  12052. $442 = (_bitshift64Ashr(($440|0),($441|0),25)|0);
  12053. $443 = tempRet0;
  12054. $444 = (_i64Add(($200|0),($201|0),($222|0),($223|0))|0);
  12055. $445 = tempRet0;
  12056. $446 = (_i64Add(($444|0),($445|0),($176|0),($177|0))|0);
  12057. $447 = tempRet0;
  12058. $448 = (_i64Add(($446|0),($447|0),($154|0),($155|0))|0);
  12059. $449 = tempRet0;
  12060. $450 = (_i64Add(($448|0),($449|0),($130|0),($131|0))|0);
  12061. $451 = tempRet0;
  12062. $452 = (_i64Add(($450|0),($451|0),($108|0),($109|0))|0);
  12063. $453 = tempRet0;
  12064. $454 = (_i64Add(($452|0),($453|0),($80|0),($81|0))|0);
  12065. $455 = tempRet0;
  12066. $456 = (_i64Add(($454|0),($455|0),($314|0),($315|0))|0);
  12067. $457 = tempRet0;
  12068. $458 = (_i64Add(($456|0),($457|0),($290|0),($291|0))|0);
  12069. $459 = tempRet0;
  12070. $460 = (_i64Add(($458|0),($459|0),($268|0),($269|0))|0);
  12071. $461 = tempRet0;
  12072. $462 = (_i64Add(($460|0),($461|0),($442|0),($443|0))|0);
  12073. $463 = tempRet0;
  12074. $464 = (_bitshift64Shl(($442|0),($443|0),25)|0);
  12075. $465 = tempRet0;
  12076. $466 = (_i64Subtract(($406|0),($407|0),($464|0),($465|0))|0);
  12077. $467 = tempRet0;
  12078. $468 = (_i64Add(($434|0),($435|0),33554432,0)|0);
  12079. $469 = tempRet0;
  12080. $470 = (_bitshift64Ashr(($468|0),($469|0),26)|0);
  12081. $471 = tempRet0;
  12082. $472 = (_i64Add(($124|0),($125|0),($146|0),($147|0))|0);
  12083. $473 = tempRet0;
  12084. $474 = (_i64Add(($472|0),($473|0),($102|0),($103|0))|0);
  12085. $475 = tempRet0;
  12086. $476 = (_i64Add(($474|0),($475|0),($68|0),($69|0))|0);
  12087. $477 = tempRet0;
  12088. $478 = (_i64Add(($476|0),($477|0),($308|0),($309|0))|0);
  12089. $479 = tempRet0;
  12090. $480 = (_i64Add(($478|0),($479|0),($284|0),($285|0))|0);
  12091. $481 = tempRet0;
  12092. $482 = (_i64Add(($480|0),($481|0),($262|0),($263|0))|0);
  12093. $483 = tempRet0;
  12094. $484 = (_i64Add(($482|0),($483|0),($238|0),($239|0))|0);
  12095. $485 = tempRet0;
  12096. $486 = (_i64Add(($484|0),($485|0),($216|0),($217|0))|0);
  12097. $487 = tempRet0;
  12098. $488 = (_i64Add(($486|0),($487|0),($192|0),($193|0))|0);
  12099. $489 = tempRet0;
  12100. $490 = (_i64Add(($488|0),($489|0),($470|0),($471|0))|0);
  12101. $491 = tempRet0;
  12102. $492 = (_bitshift64Shl(($470|0),($471|0),26)|0);
  12103. $493 = tempRet0;
  12104. $494 = (_i64Subtract(($434|0),($435|0),($492|0),($493|0))|0);
  12105. $495 = tempRet0;
  12106. $496 = (_i64Add(($462|0),($463|0),33554432,0)|0);
  12107. $497 = tempRet0;
  12108. $498 = (_bitshift64Ashr(($496|0),($497|0),26)|0);
  12109. $499 = tempRet0;
  12110. $500 = (_i64Add(($224|0),($225|0),($246|0),($247|0))|0);
  12111. $501 = tempRet0;
  12112. $502 = (_i64Add(($500|0),($501|0),($202|0),($203|0))|0);
  12113. $503 = tempRet0;
  12114. $504 = (_i64Add(($502|0),($503|0),($178|0),($179|0))|0);
  12115. $505 = tempRet0;
  12116. $506 = (_i64Add(($504|0),($505|0),($156|0),($157|0))|0);
  12117. $507 = tempRet0;
  12118. $508 = (_i64Add(($506|0),($507|0),($132|0),($133|0))|0);
  12119. $509 = tempRet0;
  12120. $510 = (_i64Add(($508|0),($509|0),($110|0),($111|0))|0);
  12121. $511 = tempRet0;
  12122. $512 = (_i64Add(($510|0),($511|0),($84|0),($85|0))|0);
  12123. $513 = tempRet0;
  12124. $514 = (_i64Add(($512|0),($513|0),($316|0),($317|0))|0);
  12125. $515 = tempRet0;
  12126. $516 = (_i64Add(($514|0),($515|0),($292|0),($293|0))|0);
  12127. $517 = tempRet0;
  12128. $518 = (_i64Add(($516|0),($517|0),($498|0),($499|0))|0);
  12129. $519 = tempRet0;
  12130. $520 = (_bitshift64Shl(($498|0),($499|0),26)|0);
  12131. $521 = tempRet0;
  12132. $522 = (_i64Subtract(($462|0),($463|0),($520|0),($521|0))|0);
  12133. $523 = tempRet0;
  12134. $524 = (_i64Add(($490|0),($491|0),16777216,0)|0);
  12135. $525 = tempRet0;
  12136. $526 = (_bitshift64Ashr(($524|0),($525|0),25)|0);
  12137. $527 = tempRet0;
  12138. $528 = (_i64Add(($526|0),($527|0),($410|0),($411|0))|0);
  12139. $529 = tempRet0;
  12140. $530 = (_bitshift64Shl(($526|0),($527|0),25)|0);
  12141. $531 = tempRet0;
  12142. $532 = (_i64Subtract(($490|0),($491|0),($530|0),($531|0))|0);
  12143. $533 = tempRet0;
  12144. $534 = (_i64Add(($518|0),($519|0),16777216,0)|0);
  12145. $535 = tempRet0;
  12146. $536 = (_bitshift64Ashr(($534|0),($535|0),25)|0);
  12147. $537 = tempRet0;
  12148. $538 = (_i64Add(($250|0),($251|0),($272|0),($273|0))|0);
  12149. $539 = tempRet0;
  12150. $540 = (_i64Add(($538|0),($539|0),($226|0),($227|0))|0);
  12151. $541 = tempRet0;
  12152. $542 = (_i64Add(($540|0),($541|0),($204|0),($205|0))|0);
  12153. $543 = tempRet0;
  12154. $544 = (_i64Add(($542|0),($543|0),($180|0),($181|0))|0);
  12155. $545 = tempRet0;
  12156. $546 = (_i64Add(($544|0),($545|0),($158|0),($159|0))|0);
  12157. $547 = tempRet0;
  12158. $548 = (_i64Add(($546|0),($547|0),($134|0),($135|0))|0);
  12159. $549 = tempRet0;
  12160. $550 = (_i64Add(($548|0),($549|0),($112|0),($113|0))|0);
  12161. $551 = tempRet0;
  12162. $552 = (_i64Add(($550|0),($551|0),($88|0),($89|0))|0);
  12163. $553 = tempRet0;
  12164. $554 = (_i64Add(($552|0),($553|0),($318|0),($319|0))|0);
  12165. $555 = tempRet0;
  12166. $556 = (_i64Add(($554|0),($555|0),($536|0),($537|0))|0);
  12167. $557 = tempRet0;
  12168. $558 = (_bitshift64Shl(($536|0),($537|0),25)|0);
  12169. $559 = tempRet0;
  12170. $560 = (_i64Subtract(($518|0),($519|0),($558|0),($559|0))|0);
  12171. $561 = tempRet0;
  12172. $562 = (_i64Add(($528|0),($529|0),33554432,0)|0);
  12173. $563 = tempRet0;
  12174. $564 = (_bitshift64Ashr(($562|0),($563|0),26)|0);
  12175. $565 = tempRet0;
  12176. $566 = (_i64Add(($466|0),($467|0),($564|0),($565|0))|0);
  12177. $567 = tempRet0;
  12178. $568 = (_bitshift64Shl(($564|0),($565|0),26)|0);
  12179. $569 = tempRet0;
  12180. $570 = (_i64Subtract(($528|0),($529|0),($568|0),($569|0))|0);
  12181. $571 = tempRet0;
  12182. $572 = (_i64Add(($556|0),($557|0),33554432,0)|0);
  12183. $573 = tempRet0;
  12184. $574 = (_bitshift64Ashr(($572|0),($573|0),26)|0);
  12185. $575 = tempRet0;
  12186. $576 = (_i64Add(($274|0),($275|0),($296|0),($297|0))|0);
  12187. $577 = tempRet0;
  12188. $578 = (_i64Add(($576|0),($577|0),($252|0),($253|0))|0);
  12189. $579 = tempRet0;
  12190. $580 = (_i64Add(($578|0),($579|0),($228|0),($229|0))|0);
  12191. $581 = tempRet0;
  12192. $582 = (_i64Add(($580|0),($581|0),($206|0),($207|0))|0);
  12193. $583 = tempRet0;
  12194. $584 = (_i64Add(($582|0),($583|0),($182|0),($183|0))|0);
  12195. $585 = tempRet0;
  12196. $586 = (_i64Add(($584|0),($585|0),($160|0),($161|0))|0);
  12197. $587 = tempRet0;
  12198. $588 = (_i64Add(($586|0),($587|0),($136|0),($137|0))|0);
  12199. $589 = tempRet0;
  12200. $590 = (_i64Add(($588|0),($589|0),($114|0),($115|0))|0);
  12201. $591 = tempRet0;
  12202. $592 = (_i64Add(($590|0),($591|0),($92|0),($93|0))|0);
  12203. $593 = tempRet0;
  12204. $594 = (_i64Add(($592|0),($593|0),($574|0),($575|0))|0);
  12205. $595 = tempRet0;
  12206. $596 = (_bitshift64Shl(($574|0),($575|0),26)|0);
  12207. $597 = tempRet0;
  12208. $598 = (_i64Subtract(($556|0),($557|0),($596|0),($597|0))|0);
  12209. $599 = tempRet0;
  12210. $600 = (_i64Add(($594|0),($595|0),16777216,0)|0);
  12211. $601 = tempRet0;
  12212. $602 = (_bitshift64Ashr(($600|0),($601|0),25)|0);
  12213. $603 = tempRet0;
  12214. $604 = (___muldi3(($602|0),($603|0),19,0)|0);
  12215. $605 = tempRet0;
  12216. $606 = (_i64Add(($604|0),($605|0),($382|0),($383|0))|0);
  12217. $607 = tempRet0;
  12218. $608 = (_bitshift64Shl(($602|0),($603|0),25)|0);
  12219. $609 = tempRet0;
  12220. $610 = (_i64Subtract(($594|0),($595|0),($608|0),($609|0))|0);
  12221. $611 = tempRet0;
  12222. $612 = (_i64Add(($606|0),($607|0),33554432,0)|0);
  12223. $613 = tempRet0;
  12224. $614 = (_bitshift64Ashr(($612|0),($613|0),26)|0);
  12225. $615 = tempRet0;
  12226. $616 = (_i64Add(($438|0),($439|0),($614|0),($615|0))|0);
  12227. $617 = tempRet0;
  12228. $618 = (_bitshift64Shl(($614|0),($615|0),26)|0);
  12229. $619 = tempRet0;
  12230. $620 = (_i64Subtract(($606|0),($607|0),($618|0),($619|0))|0);
  12231. $621 = tempRet0;
  12232. HEAP32[$h>>2] = $620;
  12233. $622 = (($h) + 4|0);
  12234. HEAP32[$622>>2] = $616;
  12235. $623 = (($h) + 8|0);
  12236. HEAP32[$623>>2] = $494;
  12237. $624 = (($h) + 12|0);
  12238. HEAP32[$624>>2] = $532;
  12239. $625 = (($h) + 16|0);
  12240. HEAP32[$625>>2] = $570;
  12241. $626 = (($h) + 20|0);
  12242. HEAP32[$626>>2] = $566;
  12243. $627 = (($h) + 24|0);
  12244. HEAP32[$627>>2] = $522;
  12245. $628 = (($h) + 28|0);
  12246. HEAP32[$628>>2] = $560;
  12247. $629 = (($h) + 32|0);
  12248. HEAP32[$629>>2] = $598;
  12249. $630 = (($h) + 36|0);
  12250. HEAP32[$630>>2] = $610;
  12251. STACKTOP = sp;return;
  12252. }
  12253. function _crypto_sign_ed25519_ref10_fe_neg($h,$f) {
  12254. $h = $h|0;
  12255. $f = $f|0;
  12256. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0;
  12257. var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  12258. sp = STACKTOP;
  12259. $0 = HEAP32[$f>>2]|0;
  12260. $1 = (($f) + 4|0);
  12261. $2 = HEAP32[$1>>2]|0;
  12262. $3 = (($f) + 8|0);
  12263. $4 = HEAP32[$3>>2]|0;
  12264. $5 = (($f) + 12|0);
  12265. $6 = HEAP32[$5>>2]|0;
  12266. $7 = (($f) + 16|0);
  12267. $8 = HEAP32[$7>>2]|0;
  12268. $9 = (($f) + 20|0);
  12269. $10 = HEAP32[$9>>2]|0;
  12270. $11 = (($f) + 24|0);
  12271. $12 = HEAP32[$11>>2]|0;
  12272. $13 = (($f) + 28|0);
  12273. $14 = HEAP32[$13>>2]|0;
  12274. $15 = (($f) + 32|0);
  12275. $16 = HEAP32[$15>>2]|0;
  12276. $17 = (($f) + 36|0);
  12277. $18 = HEAP32[$17>>2]|0;
  12278. $19 = (0 - ($0))|0;
  12279. $20 = (0 - ($2))|0;
  12280. $21 = (0 - ($4))|0;
  12281. $22 = (0 - ($6))|0;
  12282. $23 = (0 - ($8))|0;
  12283. $24 = (0 - ($10))|0;
  12284. $25 = (0 - ($12))|0;
  12285. $26 = (0 - ($14))|0;
  12286. $27 = (0 - ($16))|0;
  12287. $28 = (0 - ($18))|0;
  12288. HEAP32[$h>>2] = $19;
  12289. $29 = (($h) + 4|0);
  12290. HEAP32[$29>>2] = $20;
  12291. $30 = (($h) + 8|0);
  12292. HEAP32[$30>>2] = $21;
  12293. $31 = (($h) + 12|0);
  12294. HEAP32[$31>>2] = $22;
  12295. $32 = (($h) + 16|0);
  12296. HEAP32[$32>>2] = $23;
  12297. $33 = (($h) + 20|0);
  12298. HEAP32[$33>>2] = $24;
  12299. $34 = (($h) + 24|0);
  12300. HEAP32[$34>>2] = $25;
  12301. $35 = (($h) + 28|0);
  12302. HEAP32[$35>>2] = $26;
  12303. $36 = (($h) + 32|0);
  12304. HEAP32[$36>>2] = $27;
  12305. $37 = (($h) + 36|0);
  12306. HEAP32[$37>>2] = $28;
  12307. STACKTOP = sp;return;
  12308. }
  12309. function _crypto_sign_ed25519_ref10_fe_pow22523($out,$z) {
  12310. $out = $out|0;
  12311. $z = $z|0;
  12312. var $0 = 0, $1 = 0, $2 = 0, $exitcond = 0, $exitcond10 = 0, $exitcond11 = 0, $i$74 = 0, $i$83 = 0, $i$92 = 0, $t0 = 0, $t1 = 0, $t2 = 0, label = 0, sp = 0;
  12313. sp = STACKTOP;
  12314. STACKTOP = STACKTOP + 128|0;
  12315. $t0 = sp + 80|0;
  12316. $t1 = sp + 40|0;
  12317. $t2 = sp;
  12318. _crypto_sign_ed25519_ref10_fe_sq($t0,$z);
  12319. _crypto_sign_ed25519_ref10_fe_sq($t1,$t0);
  12320. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12321. _crypto_sign_ed25519_ref10_fe_mul($t1,$z,$t1);
  12322. _crypto_sign_ed25519_ref10_fe_mul($t0,$t0,$t1);
  12323. _crypto_sign_ed25519_ref10_fe_sq($t0,$t0);
  12324. _crypto_sign_ed25519_ref10_fe_mul($t0,$t1,$t0);
  12325. _crypto_sign_ed25519_ref10_fe_sq($t1,$t0);
  12326. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12327. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12328. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12329. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12330. _crypto_sign_ed25519_ref10_fe_mul($t0,$t1,$t0);
  12331. _crypto_sign_ed25519_ref10_fe_sq($t1,$t0);
  12332. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12333. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12334. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12335. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12336. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12337. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12338. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12339. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12340. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12341. _crypto_sign_ed25519_ref10_fe_mul($t1,$t1,$t0);
  12342. _crypto_sign_ed25519_ref10_fe_sq($t2,$t1);
  12343. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12344. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12345. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12346. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12347. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12348. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12349. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12350. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12351. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12352. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12353. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12354. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12355. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12356. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12357. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12358. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12359. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12360. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12361. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12362. _crypto_sign_ed25519_ref10_fe_mul($t1,$t2,$t1);
  12363. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12364. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12365. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12366. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12367. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12368. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12369. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12370. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12371. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12372. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12373. _crypto_sign_ed25519_ref10_fe_mul($t0,$t1,$t0);
  12374. _crypto_sign_ed25519_ref10_fe_sq($t1,$t0);
  12375. $i$74 = 1;
  12376. while(1) {
  12377. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12378. $0 = (($i$74) + 1)|0;
  12379. $exitcond11 = ($0|0)==(50);
  12380. if ($exitcond11) {
  12381. break;
  12382. } else {
  12383. $i$74 = $0;
  12384. }
  12385. }
  12386. _crypto_sign_ed25519_ref10_fe_mul($t1,$t1,$t0);
  12387. _crypto_sign_ed25519_ref10_fe_sq($t2,$t1);
  12388. $i$83 = 1;
  12389. while(1) {
  12390. _crypto_sign_ed25519_ref10_fe_sq($t2,$t2);
  12391. $1 = (($i$83) + 1)|0;
  12392. $exitcond10 = ($1|0)==(100);
  12393. if ($exitcond10) {
  12394. break;
  12395. } else {
  12396. $i$83 = $1;
  12397. }
  12398. }
  12399. _crypto_sign_ed25519_ref10_fe_mul($t1,$t2,$t1);
  12400. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12401. $i$92 = 1;
  12402. while(1) {
  12403. _crypto_sign_ed25519_ref10_fe_sq($t1,$t1);
  12404. $2 = (($i$92) + 1)|0;
  12405. $exitcond = ($2|0)==(50);
  12406. if ($exitcond) {
  12407. break;
  12408. } else {
  12409. $i$92 = $2;
  12410. }
  12411. }
  12412. _crypto_sign_ed25519_ref10_fe_mul($t0,$t1,$t0);
  12413. _crypto_sign_ed25519_ref10_fe_sq($t0,$t0);
  12414. _crypto_sign_ed25519_ref10_fe_sq($t0,$t0);
  12415. _crypto_sign_ed25519_ref10_fe_mul($out,$t0,$z);
  12416. STACKTOP = sp;return;
  12417. }
  12418. function _crypto_sign_ed25519_ref10_fe_sq($h,$f) {
  12419. $h = $h|0;
  12420. $f = $f|0;
  12421. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0;
  12422. var $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0;
  12423. var $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0;
  12424. var $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0;
  12425. var $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0;
  12426. var $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0;
  12427. var $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0;
  12428. var $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0;
  12429. var $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0;
  12430. var $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0;
  12431. var $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0;
  12432. var $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0;
  12433. var $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0;
  12434. var $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0;
  12435. var $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0;
  12436. var $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0;
  12437. var $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0;
  12438. var $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0;
  12439. var $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0;
  12440. var $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0;
  12441. var $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
  12442. sp = STACKTOP;
  12443. $0 = HEAP32[$f>>2]|0;
  12444. $1 = (($f) + 4|0);
  12445. $2 = HEAP32[$1>>2]|0;
  12446. $3 = (($f) + 8|0);
  12447. $4 = HEAP32[$3>>2]|0;
  12448. $5 = (($f) + 12|0);
  12449. $6 = HEAP32[$5>>2]|0;
  12450. $7 = (($f) + 16|0);
  12451. $8 = HEAP32[$7>>2]|0;
  12452. $9 = (($f) + 20|0);
  12453. $10 = HEAP32[$9>>2]|0;
  12454. $11 = (($f) + 24|0);
  12455. $12 = HEAP32[$11>>2]|0;
  12456. $13 = (($f) + 28|0);
  12457. $14 = HEAP32[$13>>2]|0;
  12458. $15 = (($f) + 32|0);
  12459. $16 = HEAP32[$15>>2]|0;
  12460. $17 = (($f) + 36|0);
  12461. $18 = HEAP32[$17>>2]|0;
  12462. $19 = $0 << 1;
  12463. $20 = $2 << 1;
  12464. $21 = $4 << 1;
  12465. $22 = $6 << 1;
  12466. $23 = $8 << 1;
  12467. $24 = $10 << 1;
  12468. $25 = $12 << 1;
  12469. $26 = $14 << 1;
  12470. $27 = ($10*38)|0;
  12471. $28 = ($12*19)|0;
  12472. $29 = ($14*38)|0;
  12473. $30 = ($16*19)|0;
  12474. $31 = ($18*38)|0;
  12475. $32 = ($0|0)<(0);
  12476. $33 = $32 << 31 >> 31;
  12477. $34 = (___muldi3(($0|0),($33|0),($0|0),($33|0))|0);
  12478. $35 = tempRet0;
  12479. $36 = ($19|0)<(0);
  12480. $37 = $36 << 31 >> 31;
  12481. $38 = ($2|0)<(0);
  12482. $39 = $38 << 31 >> 31;
  12483. $40 = (___muldi3(($19|0),($37|0),($2|0),($39|0))|0);
  12484. $41 = tempRet0;
  12485. $42 = ($4|0)<(0);
  12486. $43 = $42 << 31 >> 31;
  12487. $44 = (___muldi3(($4|0),($43|0),($19|0),($37|0))|0);
  12488. $45 = tempRet0;
  12489. $46 = ($6|0)<(0);
  12490. $47 = $46 << 31 >> 31;
  12491. $48 = (___muldi3(($6|0),($47|0),($19|0),($37|0))|0);
  12492. $49 = tempRet0;
  12493. $50 = ($8|0)<(0);
  12494. $51 = $50 << 31 >> 31;
  12495. $52 = (___muldi3(($8|0),($51|0),($19|0),($37|0))|0);
  12496. $53 = tempRet0;
  12497. $54 = ($10|0)<(0);
  12498. $55 = $54 << 31 >> 31;
  12499. $56 = (___muldi3(($10|0),($55|0),($19|0),($37|0))|0);
  12500. $57 = tempRet0;
  12501. $58 = ($12|0)<(0);
  12502. $59 = $58 << 31 >> 31;
  12503. $60 = (___muldi3(($12|0),($59|0),($19|0),($37|0))|0);
  12504. $61 = tempRet0;
  12505. $62 = ($14|0)<(0);
  12506. $63 = $62 << 31 >> 31;
  12507. $64 = (___muldi3(($14|0),($63|0),($19|0),($37|0))|0);
  12508. $65 = tempRet0;
  12509. $66 = ($16|0)<(0);
  12510. $67 = $66 << 31 >> 31;
  12511. $68 = (___muldi3(($16|0),($67|0),($19|0),($37|0))|0);
  12512. $69 = tempRet0;
  12513. $70 = ($18|0)<(0);
  12514. $71 = $70 << 31 >> 31;
  12515. $72 = (___muldi3(($18|0),($71|0),($19|0),($37|0))|0);
  12516. $73 = tempRet0;
  12517. $74 = ($20|0)<(0);
  12518. $75 = $74 << 31 >> 31;
  12519. $76 = (___muldi3(($20|0),($75|0),($2|0),($39|0))|0);
  12520. $77 = tempRet0;
  12521. $78 = (___muldi3(($20|0),($75|0),($4|0),($43|0))|0);
  12522. $79 = tempRet0;
  12523. $80 = ($22|0)<(0);
  12524. $81 = $80 << 31 >> 31;
  12525. $82 = (___muldi3(($22|0),($81|0),($20|0),($75|0))|0);
  12526. $83 = tempRet0;
  12527. $84 = (___muldi3(($8|0),($51|0),($20|0),($75|0))|0);
  12528. $85 = tempRet0;
  12529. $86 = ($24|0)<(0);
  12530. $87 = $86 << 31 >> 31;
  12531. $88 = (___muldi3(($24|0),($87|0),($20|0),($75|0))|0);
  12532. $89 = tempRet0;
  12533. $90 = (___muldi3(($12|0),($59|0),($20|0),($75|0))|0);
  12534. $91 = tempRet0;
  12535. $92 = ($26|0)<(0);
  12536. $93 = $92 << 31 >> 31;
  12537. $94 = (___muldi3(($26|0),($93|0),($20|0),($75|0))|0);
  12538. $95 = tempRet0;
  12539. $96 = (___muldi3(($16|0),($67|0),($20|0),($75|0))|0);
  12540. $97 = tempRet0;
  12541. $98 = ($31|0)<(0);
  12542. $99 = $98 << 31 >> 31;
  12543. $100 = (___muldi3(($31|0),($99|0),($20|0),($75|0))|0);
  12544. $101 = tempRet0;
  12545. $102 = (___muldi3(($4|0),($43|0),($4|0),($43|0))|0);
  12546. $103 = tempRet0;
  12547. $104 = ($21|0)<(0);
  12548. $105 = $104 << 31 >> 31;
  12549. $106 = (___muldi3(($21|0),($105|0),($6|0),($47|0))|0);
  12550. $107 = tempRet0;
  12551. $108 = (___muldi3(($8|0),($51|0),($21|0),($105|0))|0);
  12552. $109 = tempRet0;
  12553. $110 = (___muldi3(($10|0),($55|0),($21|0),($105|0))|0);
  12554. $111 = tempRet0;
  12555. $112 = (___muldi3(($12|0),($59|0),($21|0),($105|0))|0);
  12556. $113 = tempRet0;
  12557. $114 = (___muldi3(($14|0),($63|0),($21|0),($105|0))|0);
  12558. $115 = tempRet0;
  12559. $116 = ($30|0)<(0);
  12560. $117 = $116 << 31 >> 31;
  12561. $118 = (___muldi3(($30|0),($117|0),($21|0),($105|0))|0);
  12562. $119 = tempRet0;
  12563. $120 = (___muldi3(($31|0),($99|0),($4|0),($43|0))|0);
  12564. $121 = tempRet0;
  12565. $122 = (___muldi3(($22|0),($81|0),($6|0),($47|0))|0);
  12566. $123 = tempRet0;
  12567. $124 = (___muldi3(($22|0),($81|0),($8|0),($51|0))|0);
  12568. $125 = tempRet0;
  12569. $126 = (___muldi3(($24|0),($87|0),($22|0),($81|0))|0);
  12570. $127 = tempRet0;
  12571. $128 = (___muldi3(($12|0),($59|0),($22|0),($81|0))|0);
  12572. $129 = tempRet0;
  12573. $130 = ($29|0)<(0);
  12574. $131 = $130 << 31 >> 31;
  12575. $132 = (___muldi3(($29|0),($131|0),($22|0),($81|0))|0);
  12576. $133 = tempRet0;
  12577. $134 = (___muldi3(($30|0),($117|0),($22|0),($81|0))|0);
  12578. $135 = tempRet0;
  12579. $136 = (___muldi3(($31|0),($99|0),($22|0),($81|0))|0);
  12580. $137 = tempRet0;
  12581. $138 = (___muldi3(($8|0),($51|0),($8|0),($51|0))|0);
  12582. $139 = tempRet0;
  12583. $140 = ($23|0)<(0);
  12584. $141 = $140 << 31 >> 31;
  12585. $142 = (___muldi3(($23|0),($141|0),($10|0),($55|0))|0);
  12586. $143 = tempRet0;
  12587. $144 = ($28|0)<(0);
  12588. $145 = $144 << 31 >> 31;
  12589. $146 = (___muldi3(($28|0),($145|0),($23|0),($141|0))|0);
  12590. $147 = tempRet0;
  12591. $148 = (___muldi3(($29|0),($131|0),($8|0),($51|0))|0);
  12592. $149 = tempRet0;
  12593. $150 = (___muldi3(($30|0),($117|0),($23|0),($141|0))|0);
  12594. $151 = tempRet0;
  12595. $152 = (___muldi3(($31|0),($99|0),($8|0),($51|0))|0);
  12596. $153 = tempRet0;
  12597. $154 = ($27|0)<(0);
  12598. $155 = $154 << 31 >> 31;
  12599. $156 = (___muldi3(($27|0),($155|0),($10|0),($55|0))|0);
  12600. $157 = tempRet0;
  12601. $158 = (___muldi3(($28|0),($145|0),($24|0),($87|0))|0);
  12602. $159 = tempRet0;
  12603. $160 = (___muldi3(($29|0),($131|0),($24|0),($87|0))|0);
  12604. $161 = tempRet0;
  12605. $162 = (___muldi3(($30|0),($117|0),($24|0),($87|0))|0);
  12606. $163 = tempRet0;
  12607. $164 = (___muldi3(($31|0),($99|0),($24|0),($87|0))|0);
  12608. $165 = tempRet0;
  12609. $166 = (___muldi3(($28|0),($145|0),($12|0),($59|0))|0);
  12610. $167 = tempRet0;
  12611. $168 = (___muldi3(($29|0),($131|0),($12|0),($59|0))|0);
  12612. $169 = tempRet0;
  12613. $170 = ($25|0)<(0);
  12614. $171 = $170 << 31 >> 31;
  12615. $172 = (___muldi3(($30|0),($117|0),($25|0),($171|0))|0);
  12616. $173 = tempRet0;
  12617. $174 = (___muldi3(($31|0),($99|0),($12|0),($59|0))|0);
  12618. $175 = tempRet0;
  12619. $176 = (___muldi3(($29|0),($131|0),($14|0),($63|0))|0);
  12620. $177 = tempRet0;
  12621. $178 = (___muldi3(($30|0),($117|0),($26|0),($93|0))|0);
  12622. $179 = tempRet0;
  12623. $180 = (___muldi3(($31|0),($99|0),($26|0),($93|0))|0);
  12624. $181 = tempRet0;
  12625. $182 = (___muldi3(($30|0),($117|0),($16|0),($67|0))|0);
  12626. $183 = tempRet0;
  12627. $184 = (___muldi3(($31|0),($99|0),($16|0),($67|0))|0);
  12628. $185 = tempRet0;
  12629. $186 = (___muldi3(($31|0),($99|0),($18|0),($71|0))|0);
  12630. $187 = tempRet0;
  12631. $188 = (_i64Add(($156|0),($157|0),($34|0),($35|0))|0);
  12632. $189 = tempRet0;
  12633. $190 = (_i64Add(($188|0),($189|0),($146|0),($147|0))|0);
  12634. $191 = tempRet0;
  12635. $192 = (_i64Add(($190|0),($191|0),($132|0),($133|0))|0);
  12636. $193 = tempRet0;
  12637. $194 = (_i64Add(($192|0),($193|0),($118|0),($119|0))|0);
  12638. $195 = tempRet0;
  12639. $196 = (_i64Add(($194|0),($195|0),($100|0),($101|0))|0);
  12640. $197 = tempRet0;
  12641. $198 = (_i64Add(($44|0),($45|0),($76|0),($77|0))|0);
  12642. $199 = tempRet0;
  12643. $200 = (_i64Add(($48|0),($49|0),($78|0),($79|0))|0);
  12644. $201 = tempRet0;
  12645. $202 = (_i64Add(($82|0),($83|0),($102|0),($103|0))|0);
  12646. $203 = tempRet0;
  12647. $204 = (_i64Add(($202|0),($203|0),($52|0),($53|0))|0);
  12648. $205 = tempRet0;
  12649. $206 = (_i64Add(($204|0),($205|0),($176|0),($177|0))|0);
  12650. $207 = tempRet0;
  12651. $208 = (_i64Add(($206|0),($207|0),($172|0),($173|0))|0);
  12652. $209 = tempRet0;
  12653. $210 = (_i64Add(($208|0),($209|0),($164|0),($165|0))|0);
  12654. $211 = tempRet0;
  12655. $212 = (_i64Add(($196|0),($197|0),33554432,0)|0);
  12656. $213 = tempRet0;
  12657. $214 = (_bitshift64Ashr(($212|0),($213|0),26)|0);
  12658. $215 = tempRet0;
  12659. $216 = (_i64Add(($158|0),($159|0),($40|0),($41|0))|0);
  12660. $217 = tempRet0;
  12661. $218 = (_i64Add(($216|0),($217|0),($148|0),($149|0))|0);
  12662. $219 = tempRet0;
  12663. $220 = (_i64Add(($218|0),($219|0),($134|0),($135|0))|0);
  12664. $221 = tempRet0;
  12665. $222 = (_i64Add(($220|0),($221|0),($120|0),($121|0))|0);
  12666. $223 = tempRet0;
  12667. $224 = (_i64Add(($222|0),($223|0),($214|0),($215|0))|0);
  12668. $225 = tempRet0;
  12669. $226 = (_bitshift64Shl(($214|0),($215|0),26)|0);
  12670. $227 = tempRet0;
  12671. $228 = (_i64Subtract(($196|0),($197|0),($226|0),($227|0))|0);
  12672. $229 = tempRet0;
  12673. $230 = (_i64Add(($210|0),($211|0),33554432,0)|0);
  12674. $231 = tempRet0;
  12675. $232 = (_bitshift64Ashr(($230|0),($231|0),26)|0);
  12676. $233 = tempRet0;
  12677. $234 = (_i64Add(($84|0),($85|0),($106|0),($107|0))|0);
  12678. $235 = tempRet0;
  12679. $236 = (_i64Add(($234|0),($235|0),($56|0),($57|0))|0);
  12680. $237 = tempRet0;
  12681. $238 = (_i64Add(($236|0),($237|0),($178|0),($179|0))|0);
  12682. $239 = tempRet0;
  12683. $240 = (_i64Add(($238|0),($239|0),($174|0),($175|0))|0);
  12684. $241 = tempRet0;
  12685. $242 = (_i64Add(($240|0),($241|0),($232|0),($233|0))|0);
  12686. $243 = tempRet0;
  12687. $244 = (_bitshift64Shl(($232|0),($233|0),26)|0);
  12688. $245 = tempRet0;
  12689. $246 = (_i64Subtract(($210|0),($211|0),($244|0),($245|0))|0);
  12690. $247 = tempRet0;
  12691. $248 = (_i64Add(($224|0),($225|0),16777216,0)|0);
  12692. $249 = tempRet0;
  12693. $250 = (_bitshift64Ashr(($248|0),($249|0),25)|0);
  12694. $251 = tempRet0;
  12695. $252 = (_i64Add(($198|0),($199|0),($166|0),($167|0))|0);
  12696. $253 = tempRet0;
  12697. $254 = (_i64Add(($252|0),($253|0),($160|0),($161|0))|0);
  12698. $255 = tempRet0;
  12699. $256 = (_i64Add(($254|0),($255|0),($150|0),($151|0))|0);
  12700. $257 = tempRet0;
  12701. $258 = (_i64Add(($256|0),($257|0),($136|0),($137|0))|0);
  12702. $259 = tempRet0;
  12703. $260 = (_i64Add(($258|0),($259|0),($250|0),($251|0))|0);
  12704. $261 = tempRet0;
  12705. $262 = (_bitshift64Shl(($250|0),($251|0),25)|0);
  12706. $263 = tempRet0;
  12707. $264 = (_i64Subtract(($224|0),($225|0),($262|0),($263|0))|0);
  12708. $265 = tempRet0;
  12709. $266 = (_i64Add(($242|0),($243|0),16777216,0)|0);
  12710. $267 = tempRet0;
  12711. $268 = (_bitshift64Ashr(($266|0),($267|0),25)|0);
  12712. $269 = tempRet0;
  12713. $270 = (_i64Add(($122|0),($123|0),($108|0),($109|0))|0);
  12714. $271 = tempRet0;
  12715. $272 = (_i64Add(($270|0),($271|0),($88|0),($89|0))|0);
  12716. $273 = tempRet0;
  12717. $274 = (_i64Add(($272|0),($273|0),($60|0),($61|0))|0);
  12718. $275 = tempRet0;
  12719. $276 = (_i64Add(($274|0),($275|0),($182|0),($183|0))|0);
  12720. $277 = tempRet0;
  12721. $278 = (_i64Add(($276|0),($277|0),($180|0),($181|0))|0);
  12722. $279 = tempRet0;
  12723. $280 = (_i64Add(($278|0),($279|0),($268|0),($269|0))|0);
  12724. $281 = tempRet0;
  12725. $282 = (_bitshift64Shl(($268|0),($269|0),25)|0);
  12726. $283 = tempRet0;
  12727. $284 = (_i64Subtract(($242|0),($243|0),($282|0),($283|0))|0);
  12728. $285 = tempRet0;
  12729. $286 = (_i64Add(($260|0),($261|0),33554432,0)|0);
  12730. $287 = tempRet0;
  12731. $288 = (_bitshift64Ashr(($286|0),($287|0),26)|0);
  12732. $289 = tempRet0;
  12733. $290 = (_i64Add(($200|0),($201|0),($168|0),($169|0))|0);
  12734. $291 = tempRet0;
  12735. $292 = (_i64Add(($290|0),($291|0),($162|0),($163|0))|0);
  12736. $293 = tempRet0;
  12737. $294 = (_i64Add(($292|0),($293|0),($152|0),($153|0))|0);
  12738. $295 = tempRet0;
  12739. $296 = (_i64Add(($294|0),($295|0),($288|0),($289|0))|0);
  12740. $297 = tempRet0;
  12741. $298 = (_bitshift64Shl(($288|0),($289|0),26)|0);
  12742. $299 = tempRet0;
  12743. $300 = (_i64Subtract(($260|0),($261|0),($298|0),($299|0))|0);
  12744. $301 = tempRet0;
  12745. $302 = (_i64Add(($280|0),($281|0),33554432,0)|0);
  12746. $303 = tempRet0;
  12747. $304 = (_bitshift64Ashr(($302|0),($303|0),26)|0);
  12748. $305 = tempRet0;
  12749. $306 = (_i64Add(($110|0),($111|0),($124|0),($125|0))|0);
  12750. $307 = tempRet0;
  12751. $308 = (_i64Add(($306|0),($307|0),($90|0),($91|0))|0);
  12752. $309 = tempRet0;
  12753. $310 = (_i64Add(($308|0),($309|0),($64|0),($65|0))|0);
  12754. $311 = tempRet0;
  12755. $312 = (_i64Add(($310|0),($311|0),($184|0),($185|0))|0);
  12756. $313 = tempRet0;
  12757. $314 = (_i64Add(($312|0),($313|0),($304|0),($305|0))|0);
  12758. $315 = tempRet0;
  12759. $316 = (_bitshift64Shl(($304|0),($305|0),26)|0);
  12760. $317 = tempRet0;
  12761. $318 = (_i64Subtract(($280|0),($281|0),($316|0),($317|0))|0);
  12762. $319 = tempRet0;
  12763. $320 = (_i64Add(($296|0),($297|0),16777216,0)|0);
  12764. $321 = tempRet0;
  12765. $322 = (_bitshift64Ashr(($320|0),($321|0),25)|0);
  12766. $323 = tempRet0;
  12767. $324 = (_i64Add(($322|0),($323|0),($246|0),($247|0))|0);
  12768. $325 = tempRet0;
  12769. $326 = (_bitshift64Shl(($322|0),($323|0),25)|0);
  12770. $327 = tempRet0;
  12771. $328 = (_i64Subtract(($296|0),($297|0),($326|0),($327|0))|0);
  12772. $329 = tempRet0;
  12773. $330 = (_i64Add(($314|0),($315|0),16777216,0)|0);
  12774. $331 = tempRet0;
  12775. $332 = (_bitshift64Ashr(($330|0),($331|0),25)|0);
  12776. $333 = tempRet0;
  12777. $334 = (_i64Add(($112|0),($113|0),($138|0),($139|0))|0);
  12778. $335 = tempRet0;
  12779. $336 = (_i64Add(($334|0),($335|0),($126|0),($127|0))|0);
  12780. $337 = tempRet0;
  12781. $338 = (_i64Add(($336|0),($337|0),($94|0),($95|0))|0);
  12782. $339 = tempRet0;
  12783. $340 = (_i64Add(($338|0),($339|0),($68|0),($69|0))|0);
  12784. $341 = tempRet0;
  12785. $342 = (_i64Add(($340|0),($341|0),($186|0),($187|0))|0);
  12786. $343 = tempRet0;
  12787. $344 = (_i64Add(($342|0),($343|0),($332|0),($333|0))|0);
  12788. $345 = tempRet0;
  12789. $346 = (_bitshift64Shl(($332|0),($333|0),25)|0);
  12790. $347 = tempRet0;
  12791. $348 = (_i64Subtract(($314|0),($315|0),($346|0),($347|0))|0);
  12792. $349 = tempRet0;
  12793. $350 = (_i64Add(($324|0),($325|0),33554432,0)|0);
  12794. $351 = tempRet0;
  12795. $352 = (_bitshift64Ashr(($350|0),($351|0),26)|0);
  12796. $353 = tempRet0;
  12797. $354 = (_i64Add(($284|0),($285|0),($352|0),($353|0))|0);
  12798. $355 = tempRet0;
  12799. $356 = (_bitshift64Shl(($352|0),($353|0),26)|0);
  12800. $357 = tempRet0;
  12801. $358 = (_i64Subtract(($324|0),($325|0),($356|0),($357|0))|0);
  12802. $359 = tempRet0;
  12803. $360 = (_i64Add(($344|0),($345|0),33554432,0)|0);
  12804. $361 = tempRet0;
  12805. $362 = (_bitshift64Ashr(($360|0),($361|0),26)|0);
  12806. $363 = tempRet0;
  12807. $364 = (_i64Add(($128|0),($129|0),($142|0),($143|0))|0);
  12808. $365 = tempRet0;
  12809. $366 = (_i64Add(($364|0),($365|0),($114|0),($115|0))|0);
  12810. $367 = tempRet0;
  12811. $368 = (_i64Add(($366|0),($367|0),($96|0),($97|0))|0);
  12812. $369 = tempRet0;
  12813. $370 = (_i64Add(($368|0),($369|0),($72|0),($73|0))|0);
  12814. $371 = tempRet0;
  12815. $372 = (_i64Add(($370|0),($371|0),($362|0),($363|0))|0);
  12816. $373 = tempRet0;
  12817. $374 = (_bitshift64Shl(($362|0),($363|0),26)|0);
  12818. $375 = tempRet0;
  12819. $376 = (_i64Subtract(($344|0),($345|0),($374|0),($375|0))|0);
  12820. $377 = tempRet0;
  12821. $378 = (_i64Add(($372|0),($373|0),16777216,0)|0);
  12822. $379 = tempRet0;
  12823. $380 = (_bitshift64Ashr(($378|0),($379|0),25)|0);
  12824. $381 = tempRet0;
  12825. $382 = (___muldi3(($380|0),($381|0),19,0)|0);
  12826. $383 = tempRet0;
  12827. $384 = (_i64Add(($382|0),($383|0),($228|0),($229|0))|0);
  12828. $385 = tempRet0;
  12829. $386 = (_bitshift64Shl(($380|0),($381|0),25)|0);
  12830. $387 = tempRet0;
  12831. $388 = (_i64Subtract(($372|0),($373|0),($386|0),($387|0))|0);
  12832. $389 = tempRet0;
  12833. $390 = (_i64Add(($384|0),($385|0),33554432,0)|0);
  12834. $391 = tempRet0;
  12835. $392 = (_bitshift64Ashr(($390|0),($391|0),26)|0);
  12836. $393 = tempRet0;
  12837. $394 = (_i64Add(($264|0),($265|0),($392|0),($393|0))|0);
  12838. $395 = tempRet0;
  12839. $396 = (_bitshift64Shl(($392|0),($393|0),26)|0);
  12840. $397 = tempRet0;
  12841. $398 = (_i64Subtract(($384|0),($385|0),($396|0),($397|0))|0);
  12842. $399 = tempRet0;
  12843. HEAP32[$h>>2] = $398;
  12844. $400 = (($h) + 4|0);
  12845. HEAP32[$400>>2] = $394;
  12846. $401 = (($h) + 8|0);
  12847. HEAP32[$401>>2] = $300;
  12848. $402 = (($h) + 12|0);
  12849. HEAP32[$402>>2] = $328;
  12850. $403 = (($h) + 16|0);
  12851. HEAP32[$403>>2] = $358;
  12852. $404 = (($h) + 20|0);
  12853. HEAP32[$404>>2] = $354;
  12854. $405 = (($h) + 24|0);
  12855. HEAP32[$405>>2] = $318;
  12856. $406 = (($h) + 28|0);
  12857. HEAP32[$406>>2] = $348;
  12858. $407 = (($h) + 32|0);
  12859. HEAP32[$407>>2] = $376;
  12860. $408 = (($h) + 36|0);
  12861. HEAP32[$408>>2] = $388;
  12862. STACKTOP = sp;return;
  12863. }
  12864. function _crypto_sign_ed25519_ref10_fe_sq2($h,$f) {
  12865. $h = $h|0;
  12866. $f = $f|0;
  12867. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0;
  12868. var $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0;
  12869. var $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0;
  12870. var $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0;
  12871. var $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0;
  12872. var $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0;
  12873. var $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0;
  12874. var $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0;
  12875. var $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0;
  12876. var $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0;
  12877. var $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0;
  12878. var $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0;
  12879. var $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0;
  12880. var $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0;
  12881. var $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0;
  12882. var $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0;
  12883. var $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0;
  12884. var $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0;
  12885. var $422 = 0, $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0;
  12886. var $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0;
  12887. var $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0;
  12888. var $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
  12889. sp = STACKTOP;
  12890. $0 = HEAP32[$f>>2]|0;
  12891. $1 = (($f) + 4|0);
  12892. $2 = HEAP32[$1>>2]|0;
  12893. $3 = (($f) + 8|0);
  12894. $4 = HEAP32[$3>>2]|0;
  12895. $5 = (($f) + 12|0);
  12896. $6 = HEAP32[$5>>2]|0;
  12897. $7 = (($f) + 16|0);
  12898. $8 = HEAP32[$7>>2]|0;
  12899. $9 = (($f) + 20|0);
  12900. $10 = HEAP32[$9>>2]|0;
  12901. $11 = (($f) + 24|0);
  12902. $12 = HEAP32[$11>>2]|0;
  12903. $13 = (($f) + 28|0);
  12904. $14 = HEAP32[$13>>2]|0;
  12905. $15 = (($f) + 32|0);
  12906. $16 = HEAP32[$15>>2]|0;
  12907. $17 = (($f) + 36|0);
  12908. $18 = HEAP32[$17>>2]|0;
  12909. $19 = $0 << 1;
  12910. $20 = $2 << 1;
  12911. $21 = $4 << 1;
  12912. $22 = $6 << 1;
  12913. $23 = $8 << 1;
  12914. $24 = $10 << 1;
  12915. $25 = $12 << 1;
  12916. $26 = $14 << 1;
  12917. $27 = ($10*38)|0;
  12918. $28 = ($12*19)|0;
  12919. $29 = ($14*38)|0;
  12920. $30 = ($16*19)|0;
  12921. $31 = ($18*38)|0;
  12922. $32 = ($0|0)<(0);
  12923. $33 = $32 << 31 >> 31;
  12924. $34 = (___muldi3(($0|0),($33|0),($0|0),($33|0))|0);
  12925. $35 = tempRet0;
  12926. $36 = ($19|0)<(0);
  12927. $37 = $36 << 31 >> 31;
  12928. $38 = ($2|0)<(0);
  12929. $39 = $38 << 31 >> 31;
  12930. $40 = (___muldi3(($19|0),($37|0),($2|0),($39|0))|0);
  12931. $41 = tempRet0;
  12932. $42 = ($4|0)<(0);
  12933. $43 = $42 << 31 >> 31;
  12934. $44 = (___muldi3(($4|0),($43|0),($19|0),($37|0))|0);
  12935. $45 = tempRet0;
  12936. $46 = ($6|0)<(0);
  12937. $47 = $46 << 31 >> 31;
  12938. $48 = (___muldi3(($6|0),($47|0),($19|0),($37|0))|0);
  12939. $49 = tempRet0;
  12940. $50 = ($8|0)<(0);
  12941. $51 = $50 << 31 >> 31;
  12942. $52 = (___muldi3(($8|0),($51|0),($19|0),($37|0))|0);
  12943. $53 = tempRet0;
  12944. $54 = ($10|0)<(0);
  12945. $55 = $54 << 31 >> 31;
  12946. $56 = (___muldi3(($10|0),($55|0),($19|0),($37|0))|0);
  12947. $57 = tempRet0;
  12948. $58 = ($12|0)<(0);
  12949. $59 = $58 << 31 >> 31;
  12950. $60 = (___muldi3(($12|0),($59|0),($19|0),($37|0))|0);
  12951. $61 = tempRet0;
  12952. $62 = ($14|0)<(0);
  12953. $63 = $62 << 31 >> 31;
  12954. $64 = (___muldi3(($14|0),($63|0),($19|0),($37|0))|0);
  12955. $65 = tempRet0;
  12956. $66 = ($16|0)<(0);
  12957. $67 = $66 << 31 >> 31;
  12958. $68 = (___muldi3(($16|0),($67|0),($19|0),($37|0))|0);
  12959. $69 = tempRet0;
  12960. $70 = ($18|0)<(0);
  12961. $71 = $70 << 31 >> 31;
  12962. $72 = (___muldi3(($18|0),($71|0),($19|0),($37|0))|0);
  12963. $73 = tempRet0;
  12964. $74 = ($20|0)<(0);
  12965. $75 = $74 << 31 >> 31;
  12966. $76 = (___muldi3(($20|0),($75|0),($2|0),($39|0))|0);
  12967. $77 = tempRet0;
  12968. $78 = (___muldi3(($20|0),($75|0),($4|0),($43|0))|0);
  12969. $79 = tempRet0;
  12970. $80 = ($22|0)<(0);
  12971. $81 = $80 << 31 >> 31;
  12972. $82 = (___muldi3(($22|0),($81|0),($20|0),($75|0))|0);
  12973. $83 = tempRet0;
  12974. $84 = (___muldi3(($8|0),($51|0),($20|0),($75|0))|0);
  12975. $85 = tempRet0;
  12976. $86 = ($24|0)<(0);
  12977. $87 = $86 << 31 >> 31;
  12978. $88 = (___muldi3(($24|0),($87|0),($20|0),($75|0))|0);
  12979. $89 = tempRet0;
  12980. $90 = (___muldi3(($12|0),($59|0),($20|0),($75|0))|0);
  12981. $91 = tempRet0;
  12982. $92 = ($26|0)<(0);
  12983. $93 = $92 << 31 >> 31;
  12984. $94 = (___muldi3(($26|0),($93|0),($20|0),($75|0))|0);
  12985. $95 = tempRet0;
  12986. $96 = (___muldi3(($16|0),($67|0),($20|0),($75|0))|0);
  12987. $97 = tempRet0;
  12988. $98 = ($31|0)<(0);
  12989. $99 = $98 << 31 >> 31;
  12990. $100 = (___muldi3(($31|0),($99|0),($20|0),($75|0))|0);
  12991. $101 = tempRet0;
  12992. $102 = (___muldi3(($4|0),($43|0),($4|0),($43|0))|0);
  12993. $103 = tempRet0;
  12994. $104 = ($21|0)<(0);
  12995. $105 = $104 << 31 >> 31;
  12996. $106 = (___muldi3(($21|0),($105|0),($6|0),($47|0))|0);
  12997. $107 = tempRet0;
  12998. $108 = (___muldi3(($8|0),($51|0),($21|0),($105|0))|0);
  12999. $109 = tempRet0;
  13000. $110 = (___muldi3(($10|0),($55|0),($21|0),($105|0))|0);
  13001. $111 = tempRet0;
  13002. $112 = (___muldi3(($12|0),($59|0),($21|0),($105|0))|0);
  13003. $113 = tempRet0;
  13004. $114 = (___muldi3(($14|0),($63|0),($21|0),($105|0))|0);
  13005. $115 = tempRet0;
  13006. $116 = ($30|0)<(0);
  13007. $117 = $116 << 31 >> 31;
  13008. $118 = (___muldi3(($30|0),($117|0),($21|0),($105|0))|0);
  13009. $119 = tempRet0;
  13010. $120 = (___muldi3(($31|0),($99|0),($4|0),($43|0))|0);
  13011. $121 = tempRet0;
  13012. $122 = (___muldi3(($22|0),($81|0),($6|0),($47|0))|0);
  13013. $123 = tempRet0;
  13014. $124 = (___muldi3(($22|0),($81|0),($8|0),($51|0))|0);
  13015. $125 = tempRet0;
  13016. $126 = (___muldi3(($24|0),($87|0),($22|0),($81|0))|0);
  13017. $127 = tempRet0;
  13018. $128 = (___muldi3(($12|0),($59|0),($22|0),($81|0))|0);
  13019. $129 = tempRet0;
  13020. $130 = ($29|0)<(0);
  13021. $131 = $130 << 31 >> 31;
  13022. $132 = (___muldi3(($29|0),($131|0),($22|0),($81|0))|0);
  13023. $133 = tempRet0;
  13024. $134 = (___muldi3(($30|0),($117|0),($22|0),($81|0))|0);
  13025. $135 = tempRet0;
  13026. $136 = (___muldi3(($31|0),($99|0),($22|0),($81|0))|0);
  13027. $137 = tempRet0;
  13028. $138 = (___muldi3(($8|0),($51|0),($8|0),($51|0))|0);
  13029. $139 = tempRet0;
  13030. $140 = ($23|0)<(0);
  13031. $141 = $140 << 31 >> 31;
  13032. $142 = (___muldi3(($23|0),($141|0),($10|0),($55|0))|0);
  13033. $143 = tempRet0;
  13034. $144 = ($28|0)<(0);
  13035. $145 = $144 << 31 >> 31;
  13036. $146 = (___muldi3(($28|0),($145|0),($23|0),($141|0))|0);
  13037. $147 = tempRet0;
  13038. $148 = (___muldi3(($29|0),($131|0),($8|0),($51|0))|0);
  13039. $149 = tempRet0;
  13040. $150 = (___muldi3(($30|0),($117|0),($23|0),($141|0))|0);
  13041. $151 = tempRet0;
  13042. $152 = (___muldi3(($31|0),($99|0),($8|0),($51|0))|0);
  13043. $153 = tempRet0;
  13044. $154 = ($27|0)<(0);
  13045. $155 = $154 << 31 >> 31;
  13046. $156 = (___muldi3(($27|0),($155|0),($10|0),($55|0))|0);
  13047. $157 = tempRet0;
  13048. $158 = (___muldi3(($28|0),($145|0),($24|0),($87|0))|0);
  13049. $159 = tempRet0;
  13050. $160 = (___muldi3(($29|0),($131|0),($24|0),($87|0))|0);
  13051. $161 = tempRet0;
  13052. $162 = (___muldi3(($30|0),($117|0),($24|0),($87|0))|0);
  13053. $163 = tempRet0;
  13054. $164 = (___muldi3(($31|0),($99|0),($24|0),($87|0))|0);
  13055. $165 = tempRet0;
  13056. $166 = (___muldi3(($28|0),($145|0),($12|0),($59|0))|0);
  13057. $167 = tempRet0;
  13058. $168 = (___muldi3(($29|0),($131|0),($12|0),($59|0))|0);
  13059. $169 = tempRet0;
  13060. $170 = ($25|0)<(0);
  13061. $171 = $170 << 31 >> 31;
  13062. $172 = (___muldi3(($30|0),($117|0),($25|0),($171|0))|0);
  13063. $173 = tempRet0;
  13064. $174 = (___muldi3(($31|0),($99|0),($12|0),($59|0))|0);
  13065. $175 = tempRet0;
  13066. $176 = (___muldi3(($29|0),($131|0),($14|0),($63|0))|0);
  13067. $177 = tempRet0;
  13068. $178 = (___muldi3(($30|0),($117|0),($26|0),($93|0))|0);
  13069. $179 = tempRet0;
  13070. $180 = (___muldi3(($31|0),($99|0),($26|0),($93|0))|0);
  13071. $181 = tempRet0;
  13072. $182 = (___muldi3(($30|0),($117|0),($16|0),($67|0))|0);
  13073. $183 = tempRet0;
  13074. $184 = (___muldi3(($31|0),($99|0),($16|0),($67|0))|0);
  13075. $185 = tempRet0;
  13076. $186 = (___muldi3(($31|0),($99|0),($18|0),($71|0))|0);
  13077. $187 = tempRet0;
  13078. $188 = (_i64Add(($156|0),($157|0),($34|0),($35|0))|0);
  13079. $189 = tempRet0;
  13080. $190 = (_i64Add(($188|0),($189|0),($146|0),($147|0))|0);
  13081. $191 = tempRet0;
  13082. $192 = (_i64Add(($190|0),($191|0),($132|0),($133|0))|0);
  13083. $193 = tempRet0;
  13084. $194 = (_i64Add(($192|0),($193|0),($118|0),($119|0))|0);
  13085. $195 = tempRet0;
  13086. $196 = (_i64Add(($194|0),($195|0),($100|0),($101|0))|0);
  13087. $197 = tempRet0;
  13088. $198 = (_i64Add(($158|0),($159|0),($40|0),($41|0))|0);
  13089. $199 = tempRet0;
  13090. $200 = (_i64Add(($198|0),($199|0),($148|0),($149|0))|0);
  13091. $201 = tempRet0;
  13092. $202 = (_i64Add(($200|0),($201|0),($134|0),($135|0))|0);
  13093. $203 = tempRet0;
  13094. $204 = (_i64Add(($202|0),($203|0),($120|0),($121|0))|0);
  13095. $205 = tempRet0;
  13096. $206 = (_i64Add(($44|0),($45|0),($76|0),($77|0))|0);
  13097. $207 = tempRet0;
  13098. $208 = (_i64Add(($206|0),($207|0),($166|0),($167|0))|0);
  13099. $209 = tempRet0;
  13100. $210 = (_i64Add(($208|0),($209|0),($160|0),($161|0))|0);
  13101. $211 = tempRet0;
  13102. $212 = (_i64Add(($210|0),($211|0),($150|0),($151|0))|0);
  13103. $213 = tempRet0;
  13104. $214 = (_i64Add(($212|0),($213|0),($136|0),($137|0))|0);
  13105. $215 = tempRet0;
  13106. $216 = (_i64Add(($48|0),($49|0),($78|0),($79|0))|0);
  13107. $217 = tempRet0;
  13108. $218 = (_i64Add(($216|0),($217|0),($168|0),($169|0))|0);
  13109. $219 = tempRet0;
  13110. $220 = (_i64Add(($218|0),($219|0),($162|0),($163|0))|0);
  13111. $221 = tempRet0;
  13112. $222 = (_i64Add(($220|0),($221|0),($152|0),($153|0))|0);
  13113. $223 = tempRet0;
  13114. $224 = (_i64Add(($82|0),($83|0),($102|0),($103|0))|0);
  13115. $225 = tempRet0;
  13116. $226 = (_i64Add(($224|0),($225|0),($52|0),($53|0))|0);
  13117. $227 = tempRet0;
  13118. $228 = (_i64Add(($226|0),($227|0),($176|0),($177|0))|0);
  13119. $229 = tempRet0;
  13120. $230 = (_i64Add(($228|0),($229|0),($172|0),($173|0))|0);
  13121. $231 = tempRet0;
  13122. $232 = (_i64Add(($230|0),($231|0),($164|0),($165|0))|0);
  13123. $233 = tempRet0;
  13124. $234 = (_i64Add(($84|0),($85|0),($106|0),($107|0))|0);
  13125. $235 = tempRet0;
  13126. $236 = (_i64Add(($234|0),($235|0),($56|0),($57|0))|0);
  13127. $237 = tempRet0;
  13128. $238 = (_i64Add(($236|0),($237|0),($178|0),($179|0))|0);
  13129. $239 = tempRet0;
  13130. $240 = (_i64Add(($238|0),($239|0),($174|0),($175|0))|0);
  13131. $241 = tempRet0;
  13132. $242 = (_i64Add(($122|0),($123|0),($108|0),($109|0))|0);
  13133. $243 = tempRet0;
  13134. $244 = (_i64Add(($242|0),($243|0),($88|0),($89|0))|0);
  13135. $245 = tempRet0;
  13136. $246 = (_i64Add(($244|0),($245|0),($60|0),($61|0))|0);
  13137. $247 = tempRet0;
  13138. $248 = (_i64Add(($246|0),($247|0),($182|0),($183|0))|0);
  13139. $249 = tempRet0;
  13140. $250 = (_i64Add(($248|0),($249|0),($180|0),($181|0))|0);
  13141. $251 = tempRet0;
  13142. $252 = (_i64Add(($110|0),($111|0),($124|0),($125|0))|0);
  13143. $253 = tempRet0;
  13144. $254 = (_i64Add(($252|0),($253|0),($90|0),($91|0))|0);
  13145. $255 = tempRet0;
  13146. $256 = (_i64Add(($254|0),($255|0),($64|0),($65|0))|0);
  13147. $257 = tempRet0;
  13148. $258 = (_i64Add(($256|0),($257|0),($184|0),($185|0))|0);
  13149. $259 = tempRet0;
  13150. $260 = (_i64Add(($112|0),($113|0),($138|0),($139|0))|0);
  13151. $261 = tempRet0;
  13152. $262 = (_i64Add(($260|0),($261|0),($126|0),($127|0))|0);
  13153. $263 = tempRet0;
  13154. $264 = (_i64Add(($262|0),($263|0),($94|0),($95|0))|0);
  13155. $265 = tempRet0;
  13156. $266 = (_i64Add(($264|0),($265|0),($68|0),($69|0))|0);
  13157. $267 = tempRet0;
  13158. $268 = (_i64Add(($266|0),($267|0),($186|0),($187|0))|0);
  13159. $269 = tempRet0;
  13160. $270 = (_i64Add(($128|0),($129|0),($142|0),($143|0))|0);
  13161. $271 = tempRet0;
  13162. $272 = (_i64Add(($270|0),($271|0),($114|0),($115|0))|0);
  13163. $273 = tempRet0;
  13164. $274 = (_i64Add(($272|0),($273|0),($96|0),($97|0))|0);
  13165. $275 = tempRet0;
  13166. $276 = (_i64Add(($274|0),($275|0),($72|0),($73|0))|0);
  13167. $277 = tempRet0;
  13168. $278 = (_bitshift64Shl(($196|0),($197|0),1)|0);
  13169. $279 = tempRet0;
  13170. $280 = (_bitshift64Shl(($204|0),($205|0),1)|0);
  13171. $281 = tempRet0;
  13172. $282 = (_bitshift64Shl(($214|0),($215|0),1)|0);
  13173. $283 = tempRet0;
  13174. $284 = (_bitshift64Shl(($222|0),($223|0),1)|0);
  13175. $285 = tempRet0;
  13176. $286 = (_bitshift64Shl(($232|0),($233|0),1)|0);
  13177. $287 = tempRet0;
  13178. $288 = (_bitshift64Shl(($240|0),($241|0),1)|0);
  13179. $289 = tempRet0;
  13180. $290 = (_bitshift64Shl(($250|0),($251|0),1)|0);
  13181. $291 = tempRet0;
  13182. $292 = (_bitshift64Shl(($258|0),($259|0),1)|0);
  13183. $293 = tempRet0;
  13184. $294 = (_bitshift64Shl(($268|0),($269|0),1)|0);
  13185. $295 = tempRet0;
  13186. $296 = (_bitshift64Shl(($276|0),($277|0),1)|0);
  13187. $297 = tempRet0;
  13188. $298 = (_i64Add(($278|0),($279|0),33554432,0)|0);
  13189. $299 = tempRet0;
  13190. $300 = (_bitshift64Ashr(($298|0),($299|0),26)|0);
  13191. $301 = tempRet0;
  13192. $302 = (_i64Add(($300|0),($301|0),($280|0),($281|0))|0);
  13193. $303 = tempRet0;
  13194. $304 = (_bitshift64Shl(($300|0),($301|0),26)|0);
  13195. $305 = tempRet0;
  13196. $306 = (_i64Subtract(($278|0),($279|0),($304|0),($305|0))|0);
  13197. $307 = tempRet0;
  13198. $308 = (_i64Add(($286|0),($287|0),33554432,0)|0);
  13199. $309 = tempRet0;
  13200. $310 = (_bitshift64Ashr(($308|0),($309|0),26)|0);
  13201. $311 = tempRet0;
  13202. $312 = (_i64Add(($310|0),($311|0),($288|0),($289|0))|0);
  13203. $313 = tempRet0;
  13204. $314 = (_bitshift64Shl(($310|0),($311|0),26)|0);
  13205. $315 = tempRet0;
  13206. $316 = (_i64Subtract(($286|0),($287|0),($314|0),($315|0))|0);
  13207. $317 = tempRet0;
  13208. $318 = (_i64Add(($302|0),($303|0),16777216,0)|0);
  13209. $319 = tempRet0;
  13210. $320 = (_bitshift64Ashr(($318|0),($319|0),25)|0);
  13211. $321 = tempRet0;
  13212. $322 = (_i64Add(($320|0),($321|0),($282|0),($283|0))|0);
  13213. $323 = tempRet0;
  13214. $324 = (_bitshift64Shl(($320|0),($321|0),25)|0);
  13215. $325 = tempRet0;
  13216. $326 = (_i64Subtract(($302|0),($303|0),($324|0),($325|0))|0);
  13217. $327 = tempRet0;
  13218. $328 = (_i64Add(($312|0),($313|0),16777216,0)|0);
  13219. $329 = tempRet0;
  13220. $330 = (_bitshift64Ashr(($328|0),($329|0),25)|0);
  13221. $331 = tempRet0;
  13222. $332 = (_i64Add(($330|0),($331|0),($290|0),($291|0))|0);
  13223. $333 = tempRet0;
  13224. $334 = (_bitshift64Shl(($330|0),($331|0),25)|0);
  13225. $335 = tempRet0;
  13226. $336 = (_i64Subtract(($312|0),($313|0),($334|0),($335|0))|0);
  13227. $337 = tempRet0;
  13228. $338 = (_i64Add(($322|0),($323|0),33554432,0)|0);
  13229. $339 = tempRet0;
  13230. $340 = (_bitshift64Ashr(($338|0),($339|0),26)|0);
  13231. $341 = tempRet0;
  13232. $342 = (_i64Add(($340|0),($341|0),($284|0),($285|0))|0);
  13233. $343 = tempRet0;
  13234. $344 = (_bitshift64Shl(($340|0),($341|0),26)|0);
  13235. $345 = tempRet0;
  13236. $346 = (_i64Subtract(($322|0),($323|0),($344|0),($345|0))|0);
  13237. $347 = tempRet0;
  13238. $348 = (_i64Add(($332|0),($333|0),33554432,0)|0);
  13239. $349 = tempRet0;
  13240. $350 = (_bitshift64Ashr(($348|0),($349|0),26)|0);
  13241. $351 = tempRet0;
  13242. $352 = (_i64Add(($350|0),($351|0),($292|0),($293|0))|0);
  13243. $353 = tempRet0;
  13244. $354 = (_bitshift64Shl(($350|0),($351|0),26)|0);
  13245. $355 = tempRet0;
  13246. $356 = (_i64Subtract(($332|0),($333|0),($354|0),($355|0))|0);
  13247. $357 = tempRet0;
  13248. $358 = (_i64Add(($342|0),($343|0),16777216,0)|0);
  13249. $359 = tempRet0;
  13250. $360 = (_bitshift64Ashr(($358|0),($359|0),25)|0);
  13251. $361 = tempRet0;
  13252. $362 = (_i64Add(($360|0),($361|0),($316|0),($317|0))|0);
  13253. $363 = tempRet0;
  13254. $364 = (_bitshift64Shl(($360|0),($361|0),25)|0);
  13255. $365 = tempRet0;
  13256. $366 = (_i64Subtract(($342|0),($343|0),($364|0),($365|0))|0);
  13257. $367 = tempRet0;
  13258. $368 = (_i64Add(($352|0),($353|0),16777216,0)|0);
  13259. $369 = tempRet0;
  13260. $370 = (_bitshift64Ashr(($368|0),($369|0),25)|0);
  13261. $371 = tempRet0;
  13262. $372 = (_i64Add(($370|0),($371|0),($294|0),($295|0))|0);
  13263. $373 = tempRet0;
  13264. $374 = (_bitshift64Shl(($370|0),($371|0),25)|0);
  13265. $375 = tempRet0;
  13266. $376 = (_i64Subtract(($352|0),($353|0),($374|0),($375|0))|0);
  13267. $377 = tempRet0;
  13268. $378 = (_i64Add(($362|0),($363|0),33554432,0)|0);
  13269. $379 = tempRet0;
  13270. $380 = (_bitshift64Ashr(($378|0),($379|0),26)|0);
  13271. $381 = tempRet0;
  13272. $382 = (_i64Add(($336|0),($337|0),($380|0),($381|0))|0);
  13273. $383 = tempRet0;
  13274. $384 = (_bitshift64Shl(($380|0),($381|0),26)|0);
  13275. $385 = tempRet0;
  13276. $386 = (_i64Subtract(($362|0),($363|0),($384|0),($385|0))|0);
  13277. $387 = tempRet0;
  13278. $388 = (_i64Add(($372|0),($373|0),33554432,0)|0);
  13279. $389 = tempRet0;
  13280. $390 = (_bitshift64Ashr(($388|0),($389|0),26)|0);
  13281. $391 = tempRet0;
  13282. $392 = (_i64Add(($390|0),($391|0),($296|0),($297|0))|0);
  13283. $393 = tempRet0;
  13284. $394 = (_bitshift64Shl(($390|0),($391|0),26)|0);
  13285. $395 = tempRet0;
  13286. $396 = (_i64Subtract(($372|0),($373|0),($394|0),($395|0))|0);
  13287. $397 = tempRet0;
  13288. $398 = (_i64Add(($392|0),($393|0),16777216,0)|0);
  13289. $399 = tempRet0;
  13290. $400 = (_bitshift64Ashr(($398|0),($399|0),25)|0);
  13291. $401 = tempRet0;
  13292. $402 = (___muldi3(($400|0),($401|0),19,0)|0);
  13293. $403 = tempRet0;
  13294. $404 = (_i64Add(($402|0),($403|0),($306|0),($307|0))|0);
  13295. $405 = tempRet0;
  13296. $406 = (_bitshift64Shl(($400|0),($401|0),25)|0);
  13297. $407 = tempRet0;
  13298. $408 = (_i64Subtract(($392|0),($393|0),($406|0),($407|0))|0);
  13299. $409 = tempRet0;
  13300. $410 = (_i64Add(($404|0),($405|0),33554432,0)|0);
  13301. $411 = tempRet0;
  13302. $412 = (_bitshift64Ashr(($410|0),($411|0),26)|0);
  13303. $413 = tempRet0;
  13304. $414 = (_i64Add(($326|0),($327|0),($412|0),($413|0))|0);
  13305. $415 = tempRet0;
  13306. $416 = (_bitshift64Shl(($412|0),($413|0),26)|0);
  13307. $417 = tempRet0;
  13308. $418 = (_i64Subtract(($404|0),($405|0),($416|0),($417|0))|0);
  13309. $419 = tempRet0;
  13310. HEAP32[$h>>2] = $418;
  13311. $420 = (($h) + 4|0);
  13312. HEAP32[$420>>2] = $414;
  13313. $421 = (($h) + 8|0);
  13314. HEAP32[$421>>2] = $346;
  13315. $422 = (($h) + 12|0);
  13316. HEAP32[$422>>2] = $366;
  13317. $423 = (($h) + 16|0);
  13318. HEAP32[$423>>2] = $386;
  13319. $424 = (($h) + 20|0);
  13320. HEAP32[$424>>2] = $382;
  13321. $425 = (($h) + 24|0);
  13322. HEAP32[$425>>2] = $356;
  13323. $426 = (($h) + 28|0);
  13324. HEAP32[$426>>2] = $376;
  13325. $427 = (($h) + 32|0);
  13326. HEAP32[$427>>2] = $396;
  13327. $428 = (($h) + 36|0);
  13328. HEAP32[$428>>2] = $408;
  13329. STACKTOP = sp;return;
  13330. }
  13331. function _crypto_sign_ed25519_ref10_fe_sub($h,$f,$g) {
  13332. $h = $h|0;
  13333. $f = $f|0;
  13334. $g = $g|0;
  13335. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0;
  13336. var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0;
  13337. var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  13338. sp = STACKTOP;
  13339. $0 = HEAP32[$f>>2]|0;
  13340. $1 = (($f) + 4|0);
  13341. $2 = HEAP32[$1>>2]|0;
  13342. $3 = (($f) + 8|0);
  13343. $4 = HEAP32[$3>>2]|0;
  13344. $5 = (($f) + 12|0);
  13345. $6 = HEAP32[$5>>2]|0;
  13346. $7 = (($f) + 16|0);
  13347. $8 = HEAP32[$7>>2]|0;
  13348. $9 = (($f) + 20|0);
  13349. $10 = HEAP32[$9>>2]|0;
  13350. $11 = (($f) + 24|0);
  13351. $12 = HEAP32[$11>>2]|0;
  13352. $13 = (($f) + 28|0);
  13353. $14 = HEAP32[$13>>2]|0;
  13354. $15 = (($f) + 32|0);
  13355. $16 = HEAP32[$15>>2]|0;
  13356. $17 = (($f) + 36|0);
  13357. $18 = HEAP32[$17>>2]|0;
  13358. $19 = HEAP32[$g>>2]|0;
  13359. $20 = (($g) + 4|0);
  13360. $21 = HEAP32[$20>>2]|0;
  13361. $22 = (($g) + 8|0);
  13362. $23 = HEAP32[$22>>2]|0;
  13363. $24 = (($g) + 12|0);
  13364. $25 = HEAP32[$24>>2]|0;
  13365. $26 = (($g) + 16|0);
  13366. $27 = HEAP32[$26>>2]|0;
  13367. $28 = (($g) + 20|0);
  13368. $29 = HEAP32[$28>>2]|0;
  13369. $30 = (($g) + 24|0);
  13370. $31 = HEAP32[$30>>2]|0;
  13371. $32 = (($g) + 28|0);
  13372. $33 = HEAP32[$32>>2]|0;
  13373. $34 = (($g) + 32|0);
  13374. $35 = HEAP32[$34>>2]|0;
  13375. $36 = (($g) + 36|0);
  13376. $37 = HEAP32[$36>>2]|0;
  13377. $38 = (($0) - ($19))|0;
  13378. $39 = (($2) - ($21))|0;
  13379. $40 = (($4) - ($23))|0;
  13380. $41 = (($6) - ($25))|0;
  13381. $42 = (($8) - ($27))|0;
  13382. $43 = (($10) - ($29))|0;
  13383. $44 = (($12) - ($31))|0;
  13384. $45 = (($14) - ($33))|0;
  13385. $46 = (($16) - ($35))|0;
  13386. $47 = (($18) - ($37))|0;
  13387. HEAP32[$h>>2] = $38;
  13388. $48 = (($h) + 4|0);
  13389. HEAP32[$48>>2] = $39;
  13390. $49 = (($h) + 8|0);
  13391. HEAP32[$49>>2] = $40;
  13392. $50 = (($h) + 12|0);
  13393. HEAP32[$50>>2] = $41;
  13394. $51 = (($h) + 16|0);
  13395. HEAP32[$51>>2] = $42;
  13396. $52 = (($h) + 20|0);
  13397. HEAP32[$52>>2] = $43;
  13398. $53 = (($h) + 24|0);
  13399. HEAP32[$53>>2] = $44;
  13400. $54 = (($h) + 28|0);
  13401. HEAP32[$54>>2] = $45;
  13402. $55 = (($h) + 32|0);
  13403. HEAP32[$55>>2] = $46;
  13404. $56 = (($h) + 36|0);
  13405. HEAP32[$56>>2] = $47;
  13406. STACKTOP = sp;return;
  13407. }
  13408. function _crypto_sign_ed25519_ref10_fe_tobytes($s,$h) {
  13409. $s = $s|0;
  13410. $h = $h|0;
  13411. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0;
  13412. var $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0;
  13413. var $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0;
  13414. var $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0;
  13415. var $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0;
  13416. var $189 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0;
  13417. var $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0;
  13418. var $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0;
  13419. var $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0;
  13420. var $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, label = 0, sp = 0;
  13421. sp = STACKTOP;
  13422. $0 = HEAP32[$h>>2]|0;
  13423. $1 = (($h) + 4|0);
  13424. $2 = HEAP32[$1>>2]|0;
  13425. $3 = (($h) + 8|0);
  13426. $4 = HEAP32[$3>>2]|0;
  13427. $5 = (($h) + 12|0);
  13428. $6 = HEAP32[$5>>2]|0;
  13429. $7 = (($h) + 16|0);
  13430. $8 = HEAP32[$7>>2]|0;
  13431. $9 = (($h) + 20|0);
  13432. $10 = HEAP32[$9>>2]|0;
  13433. $11 = (($h) + 24|0);
  13434. $12 = HEAP32[$11>>2]|0;
  13435. $13 = (($h) + 28|0);
  13436. $14 = HEAP32[$13>>2]|0;
  13437. $15 = (($h) + 32|0);
  13438. $16 = HEAP32[$15>>2]|0;
  13439. $17 = (($h) + 36|0);
  13440. $18 = HEAP32[$17>>2]|0;
  13441. $19 = ($18*19)|0;
  13442. $20 = (($19) + 16777216)|0;
  13443. $21 = $20 >> 25;
  13444. $22 = (($21) + ($0))|0;
  13445. $23 = $22 >> 26;
  13446. $24 = (($23) + ($2))|0;
  13447. $25 = $24 >> 25;
  13448. $26 = (($25) + ($4))|0;
  13449. $27 = $26 >> 26;
  13450. $28 = (($27) + ($6))|0;
  13451. $29 = $28 >> 25;
  13452. $30 = (($29) + ($8))|0;
  13453. $31 = $30 >> 26;
  13454. $32 = (($31) + ($10))|0;
  13455. $33 = $32 >> 25;
  13456. $34 = (($33) + ($12))|0;
  13457. $35 = $34 >> 26;
  13458. $36 = (($35) + ($14))|0;
  13459. $37 = $36 >> 25;
  13460. $38 = (($37) + ($16))|0;
  13461. $39 = $38 >> 26;
  13462. $40 = (($39) + ($18))|0;
  13463. $41 = $40 >> 25;
  13464. $42 = ($41*19)|0;
  13465. $43 = (($42) + ($0))|0;
  13466. $44 = $43 >> 26;
  13467. $45 = (($44) + ($2))|0;
  13468. $46 = $44 << 26;
  13469. $47 = (($43) - ($46))|0;
  13470. $48 = $45 >> 25;
  13471. $49 = (($48) + ($4))|0;
  13472. $50 = $48 << 25;
  13473. $51 = (($45) - ($50))|0;
  13474. $52 = $49 >> 26;
  13475. $53 = (($52) + ($6))|0;
  13476. $54 = $52 << 26;
  13477. $55 = (($49) - ($54))|0;
  13478. $56 = $53 >> 25;
  13479. $57 = (($56) + ($8))|0;
  13480. $58 = $56 << 25;
  13481. $59 = (($53) - ($58))|0;
  13482. $60 = $57 >> 26;
  13483. $61 = (($60) + ($10))|0;
  13484. $62 = $60 << 26;
  13485. $63 = (($57) - ($62))|0;
  13486. $64 = $61 >> 25;
  13487. $65 = (($64) + ($12))|0;
  13488. $66 = $64 << 25;
  13489. $67 = (($61) - ($66))|0;
  13490. $68 = $65 >> 26;
  13491. $69 = (($68) + ($14))|0;
  13492. $70 = $68 << 26;
  13493. $71 = (($65) - ($70))|0;
  13494. $72 = $69 >> 25;
  13495. $73 = (($72) + ($16))|0;
  13496. $74 = $72 << 25;
  13497. $75 = (($69) - ($74))|0;
  13498. $76 = $73 >> 26;
  13499. $77 = (($76) + ($18))|0;
  13500. $78 = $76 << 26;
  13501. $79 = (($73) - ($78))|0;
  13502. $80 = $77 & 33554431;
  13503. $81 = $47&255;
  13504. HEAP8[$s>>0] = $81;
  13505. $82 = $47 >>> 8;
  13506. $83 = $82&255;
  13507. $84 = (($s) + 1|0);
  13508. HEAP8[$84>>0] = $83;
  13509. $85 = $47 >>> 16;
  13510. $86 = $85&255;
  13511. $87 = (($s) + 2|0);
  13512. HEAP8[$87>>0] = $86;
  13513. $88 = $47 >>> 24;
  13514. $89 = $51 << 2;
  13515. $90 = $89 | $88;
  13516. $91 = $90&255;
  13517. $92 = (($s) + 3|0);
  13518. HEAP8[$92>>0] = $91;
  13519. $93 = $51 >>> 6;
  13520. $94 = $93&255;
  13521. $95 = (($s) + 4|0);
  13522. HEAP8[$95>>0] = $94;
  13523. $96 = $51 >>> 14;
  13524. $97 = $96&255;
  13525. $98 = (($s) + 5|0);
  13526. HEAP8[$98>>0] = $97;
  13527. $99 = $51 >>> 22;
  13528. $100 = $55 << 3;
  13529. $101 = $100 | $99;
  13530. $102 = $101&255;
  13531. $103 = (($s) + 6|0);
  13532. HEAP8[$103>>0] = $102;
  13533. $104 = $55 >>> 5;
  13534. $105 = $104&255;
  13535. $106 = (($s) + 7|0);
  13536. HEAP8[$106>>0] = $105;
  13537. $107 = $55 >>> 13;
  13538. $108 = $107&255;
  13539. $109 = (($s) + 8|0);
  13540. HEAP8[$109>>0] = $108;
  13541. $110 = $55 >>> 21;
  13542. $111 = $59 << 5;
  13543. $112 = $111 | $110;
  13544. $113 = $112&255;
  13545. $114 = (($s) + 9|0);
  13546. HEAP8[$114>>0] = $113;
  13547. $115 = $59 >>> 3;
  13548. $116 = $115&255;
  13549. $117 = (($s) + 10|0);
  13550. HEAP8[$117>>0] = $116;
  13551. $118 = $59 >>> 11;
  13552. $119 = $118&255;
  13553. $120 = (($s) + 11|0);
  13554. HEAP8[$120>>0] = $119;
  13555. $121 = $59 >>> 19;
  13556. $122 = $63 << 6;
  13557. $123 = $122 | $121;
  13558. $124 = $123&255;
  13559. $125 = (($s) + 12|0);
  13560. HEAP8[$125>>0] = $124;
  13561. $126 = $63 >>> 2;
  13562. $127 = $126&255;
  13563. $128 = (($s) + 13|0);
  13564. HEAP8[$128>>0] = $127;
  13565. $129 = $63 >>> 10;
  13566. $130 = $129&255;
  13567. $131 = (($s) + 14|0);
  13568. HEAP8[$131>>0] = $130;
  13569. $132 = $63 >>> 18;
  13570. $133 = $132&255;
  13571. $134 = (($s) + 15|0);
  13572. HEAP8[$134>>0] = $133;
  13573. $135 = $67&255;
  13574. $136 = (($s) + 16|0);
  13575. HEAP8[$136>>0] = $135;
  13576. $137 = $67 >>> 8;
  13577. $138 = $137&255;
  13578. $139 = (($s) + 17|0);
  13579. HEAP8[$139>>0] = $138;
  13580. $140 = $67 >>> 16;
  13581. $141 = $140&255;
  13582. $142 = (($s) + 18|0);
  13583. HEAP8[$142>>0] = $141;
  13584. $143 = $67 >>> 24;
  13585. $144 = $71 << 1;
  13586. $145 = $144 | $143;
  13587. $146 = $145&255;
  13588. $147 = (($s) + 19|0);
  13589. HEAP8[$147>>0] = $146;
  13590. $148 = $71 >>> 7;
  13591. $149 = $148&255;
  13592. $150 = (($s) + 20|0);
  13593. HEAP8[$150>>0] = $149;
  13594. $151 = $71 >>> 15;
  13595. $152 = $151&255;
  13596. $153 = (($s) + 21|0);
  13597. HEAP8[$153>>0] = $152;
  13598. $154 = $71 >>> 23;
  13599. $155 = $75 << 3;
  13600. $156 = $155 | $154;
  13601. $157 = $156&255;
  13602. $158 = (($s) + 22|0);
  13603. HEAP8[$158>>0] = $157;
  13604. $159 = $75 >>> 5;
  13605. $160 = $159&255;
  13606. $161 = (($s) + 23|0);
  13607. HEAP8[$161>>0] = $160;
  13608. $162 = $75 >>> 13;
  13609. $163 = $162&255;
  13610. $164 = (($s) + 24|0);
  13611. HEAP8[$164>>0] = $163;
  13612. $165 = $75 >>> 21;
  13613. $166 = $79 << 4;
  13614. $167 = $166 | $165;
  13615. $168 = $167&255;
  13616. $169 = (($s) + 25|0);
  13617. HEAP8[$169>>0] = $168;
  13618. $170 = $79 >>> 4;
  13619. $171 = $170&255;
  13620. $172 = (($s) + 26|0);
  13621. HEAP8[$172>>0] = $171;
  13622. $173 = $79 >>> 12;
  13623. $174 = $173&255;
  13624. $175 = (($s) + 27|0);
  13625. HEAP8[$175>>0] = $174;
  13626. $176 = $79 >>> 20;
  13627. $177 = $80 << 6;
  13628. $178 = $176 | $177;
  13629. $179 = $178&255;
  13630. $180 = (($s) + 28|0);
  13631. HEAP8[$180>>0] = $179;
  13632. $181 = $77 >>> 2;
  13633. $182 = $181&255;
  13634. $183 = (($s) + 29|0);
  13635. HEAP8[$183>>0] = $182;
  13636. $184 = $77 >>> 10;
  13637. $185 = $184&255;
  13638. $186 = (($s) + 30|0);
  13639. HEAP8[$186>>0] = $185;
  13640. $187 = $80 >>> 18;
  13641. $188 = $187&255;
  13642. $189 = (($s) + 31|0);
  13643. HEAP8[$189>>0] = $188;
  13644. STACKTOP = sp;return;
  13645. }
  13646. function _crypto_sign_ed25519_ref10_ge_add($r,$p,$q) {
  13647. $r = $r|0;
  13648. $p = $p|0;
  13649. $q = $q|0;
  13650. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $t0 = 0, label = 0, sp = 0;
  13651. sp = STACKTOP;
  13652. STACKTOP = STACKTOP + 48|0;
  13653. $t0 = sp;
  13654. $0 = (($p) + 40|0);
  13655. _crypto_sign_ed25519_ref10_fe_add($r,$0,$p);
  13656. $1 = (($r) + 40|0);
  13657. _crypto_sign_ed25519_ref10_fe_sub($1,$0,$p);
  13658. $2 = (($r) + 80|0);
  13659. _crypto_sign_ed25519_ref10_fe_mul($2,$r,$q);
  13660. $3 = (($q) + 40|0);
  13661. _crypto_sign_ed25519_ref10_fe_mul($1,$1,$3);
  13662. $4 = (($r) + 120|0);
  13663. $5 = (($q) + 120|0);
  13664. $6 = (($p) + 120|0);
  13665. _crypto_sign_ed25519_ref10_fe_mul($4,$5,$6);
  13666. $7 = (($p) + 80|0);
  13667. $8 = (($q) + 80|0);
  13668. _crypto_sign_ed25519_ref10_fe_mul($r,$7,$8);
  13669. _crypto_sign_ed25519_ref10_fe_add($t0,$r,$r);
  13670. _crypto_sign_ed25519_ref10_fe_sub($r,$2,$1);
  13671. _crypto_sign_ed25519_ref10_fe_add($1,$2,$1);
  13672. _crypto_sign_ed25519_ref10_fe_add($2,$t0,$4);
  13673. _crypto_sign_ed25519_ref10_fe_sub($4,$t0,$4);
  13674. STACKTOP = sp;return;
  13675. }
  13676. function _crypto_sign_ed25519_ref10_ge_double_scalarmult_vartime($r,$a,$A,$b) {
  13677. $r = $r|0;
  13678. $a = $a|0;
  13679. $A = $A|0;
  13680. $b = $b|0;
  13681. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0;
  13682. var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $5 = 0, $6 = 0, $7 = 0;
  13683. var $8 = 0, $9 = 0, $A2 = 0, $Ai = 0, $aslide = 0, $bslide = 0, $i$0$lcssa = 0, $i$02 = 0, $i$11 = 0, $t = 0, $u = 0, label = 0, sp = 0;
  13684. sp = STACKTOP;
  13685. STACKTOP = STACKTOP + 2272|0;
  13686. $aslide = sp + 2016|0;
  13687. $bslide = sp + 1760|0;
  13688. $Ai = sp + 480|0;
  13689. $t = sp + 320|0;
  13690. $u = sp + 160|0;
  13691. $A2 = sp;
  13692. _slide($aslide,$a);
  13693. _slide($bslide,$b);
  13694. _crypto_sign_ed25519_ref10_ge_p3_to_cached($Ai,$A);
  13695. _crypto_sign_ed25519_ref10_ge_p3_dbl($t,$A);
  13696. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($A2,$t);
  13697. _crypto_sign_ed25519_ref10_ge_add($t,$A2,$Ai);
  13698. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u,$t);
  13699. $0 = (($Ai) + 160|0);
  13700. _crypto_sign_ed25519_ref10_ge_p3_to_cached($0,$u);
  13701. _crypto_sign_ed25519_ref10_ge_add($t,$A2,$0);
  13702. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u,$t);
  13703. $1 = (($Ai) + 320|0);
  13704. _crypto_sign_ed25519_ref10_ge_p3_to_cached($1,$u);
  13705. _crypto_sign_ed25519_ref10_ge_add($t,$A2,$1);
  13706. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u,$t);
  13707. $2 = (($Ai) + 480|0);
  13708. _crypto_sign_ed25519_ref10_ge_p3_to_cached($2,$u);
  13709. _crypto_sign_ed25519_ref10_ge_add($t,$A2,$2);
  13710. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u,$t);
  13711. $3 = (($Ai) + 640|0);
  13712. _crypto_sign_ed25519_ref10_ge_p3_to_cached($3,$u);
  13713. _crypto_sign_ed25519_ref10_ge_add($t,$A2,$3);
  13714. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u,$t);
  13715. $4 = (($Ai) + 800|0);
  13716. _crypto_sign_ed25519_ref10_ge_p3_to_cached($4,$u);
  13717. _crypto_sign_ed25519_ref10_ge_add($t,$A2,$4);
  13718. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u,$t);
  13719. $5 = (($Ai) + 960|0);
  13720. _crypto_sign_ed25519_ref10_ge_p3_to_cached($5,$u);
  13721. _crypto_sign_ed25519_ref10_ge_add($t,$A2,$5);
  13722. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u,$t);
  13723. $6 = (($Ai) + 1120|0);
  13724. _crypto_sign_ed25519_ref10_ge_p3_to_cached($6,$u);
  13725. _crypto_sign_ed25519_ref10_ge_p2_0($r);
  13726. $i$02 = 255;
  13727. while(1) {
  13728. $8 = (($aslide) + ($i$02)|0);
  13729. $9 = HEAP8[$8>>0]|0;
  13730. $10 = ($9<<24>>24)==(0);
  13731. if (!($10)) {
  13732. $i$0$lcssa = $i$02;
  13733. break;
  13734. }
  13735. $11 = (($bslide) + ($i$02)|0);
  13736. $12 = HEAP8[$11>>0]|0;
  13737. $13 = ($12<<24>>24)==(0);
  13738. $14 = (($i$02) + -1)|0;
  13739. if (!($13)) {
  13740. $i$0$lcssa = $i$02;
  13741. break;
  13742. }
  13743. $7 = ($i$02|0)>(0);
  13744. if ($7) {
  13745. $i$02 = $14;
  13746. } else {
  13747. $i$0$lcssa = $14;
  13748. break;
  13749. }
  13750. }
  13751. $15 = ($i$0$lcssa|0)>(-1);
  13752. if ($15) {
  13753. $i$11 = $i$0$lcssa;
  13754. } else {
  13755. STACKTOP = sp;return;
  13756. }
  13757. while(1) {
  13758. _crypto_sign_ed25519_ref10_ge_p2_dbl($t,$r);
  13759. $16 = (($aslide) + ($i$11)|0);
  13760. $17 = HEAP8[$16>>0]|0;
  13761. $18 = ($17<<24>>24)>(0);
  13762. if ($18) {
  13763. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u,$t);
  13764. $19 = HEAP8[$16>>0]|0;
  13765. $20 = $19 << 24 >> 24;
  13766. $21 = (($20|0) / 2)&-1;
  13767. $22 = (($Ai) + (($21*160)|0)|0);
  13768. _crypto_sign_ed25519_ref10_ge_add($t,$u,$22);
  13769. } else {
  13770. $23 = ($17<<24>>24)<(0);
  13771. if ($23) {
  13772. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u,$t);
  13773. $24 = HEAP8[$16>>0]|0;
  13774. $25 = $24 << 24 >> 24;
  13775. $26 = (($25|0) / -2)&-1;
  13776. $27 = (($Ai) + (($26*160)|0)|0);
  13777. _crypto_sign_ed25519_ref10_ge_sub($t,$u,$27);
  13778. }
  13779. }
  13780. $28 = (($bslide) + ($i$11)|0);
  13781. $29 = HEAP8[$28>>0]|0;
  13782. $30 = ($29<<24>>24)>(0);
  13783. if ($30) {
  13784. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u,$t);
  13785. $31 = HEAP8[$28>>0]|0;
  13786. $32 = $31 << 24 >> 24;
  13787. $33 = (($32|0) / 2)&-1;
  13788. $34 = (40 + (($33*120)|0)|0);
  13789. _crypto_sign_ed25519_ref10_ge_madd($t,$u,$34);
  13790. } else {
  13791. $35 = ($29<<24>>24)<(0);
  13792. if ($35) {
  13793. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u,$t);
  13794. $36 = HEAP8[$28>>0]|0;
  13795. $37 = $36 << 24 >> 24;
  13796. $38 = (($37|0) / -2)&-1;
  13797. $39 = (40 + (($38*120)|0)|0);
  13798. _crypto_sign_ed25519_ref10_ge_msub($t,$u,$39);
  13799. }
  13800. }
  13801. _crypto_sign_ed25519_ref10_ge_p1p1_to_p2($r,$t);
  13802. $40 = (($i$11) + -1)|0;
  13803. $41 = ($i$11|0)>(0);
  13804. if ($41) {
  13805. $i$11 = $40;
  13806. } else {
  13807. break;
  13808. }
  13809. }
  13810. STACKTOP = sp;return;
  13811. }
  13812. function _slide($r,$a) {
  13813. $r = $r|0;
  13814. $a = $a|0;
  13815. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0;
  13816. var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $b$03 = 0, $exitcond = 0, $exitcond10 = 0;
  13817. var $i$08 = 0, $i$15 = 0, $k$01 = 0, label = 0, sp = 0;
  13818. sp = STACKTOP;
  13819. $i$08 = 0;
  13820. while(1) {
  13821. $0 = $i$08 >> 3;
  13822. $1 = (($a) + ($0)|0);
  13823. $2 = HEAP8[$1>>0]|0;
  13824. $3 = $2&255;
  13825. $4 = $i$08 & 7;
  13826. $5 = $3 >>> $4;
  13827. $6 = $5 & 1;
  13828. $7 = $6&255;
  13829. $8 = (($r) + ($i$08)|0);
  13830. HEAP8[$8>>0] = $7;
  13831. $9 = (($i$08) + 1)|0;
  13832. $exitcond10 = ($9|0)==(256);
  13833. if ($exitcond10) {
  13834. $i$15 = 0;
  13835. break;
  13836. } else {
  13837. $i$08 = $9;
  13838. }
  13839. }
  13840. while(1) {
  13841. $10 = (($r) + ($i$15)|0);
  13842. $11 = HEAP8[$10>>0]|0;
  13843. $12 = ($11<<24>>24)==(0);
  13844. L5: do {
  13845. if (!($12)) {
  13846. $b$03 = 1;
  13847. while(1) {
  13848. $13 = (($b$03) + ($i$15))|0;
  13849. $14 = ($13|0)<(256);
  13850. if (!($14)) {
  13851. break L5;
  13852. }
  13853. $15 = (($r) + ($13)|0);
  13854. $16 = HEAP8[$15>>0]|0;
  13855. $17 = ($16<<24>>24)==(0);
  13856. L9: do {
  13857. if (!($17)) {
  13858. $18 = HEAP8[$10>>0]|0;
  13859. $19 = $18 << 24 >> 24;
  13860. $20 = $16 << 24 >> 24;
  13861. $21 = $20 << $b$03;
  13862. $22 = (($19) + ($21))|0;
  13863. $23 = ($22|0)<(16);
  13864. if ($23) {
  13865. $24 = $22&255;
  13866. HEAP8[$10>>0] = $24;
  13867. HEAP8[$15>>0] = 0;
  13868. break;
  13869. }
  13870. $25 = (($19) - ($21))|0;
  13871. $26 = ($25|0)>(-16);
  13872. if (!($26)) {
  13873. break L5;
  13874. }
  13875. $27 = $25&255;
  13876. HEAP8[$10>>0] = $27;
  13877. $28 = ($13|0)<(256);
  13878. if ($28) {
  13879. $k$01 = $13;
  13880. while(1) {
  13881. $29 = (($r) + ($k$01)|0);
  13882. $30 = HEAP8[$29>>0]|0;
  13883. $31 = ($30<<24>>24)==(0);
  13884. if ($31) {
  13885. break;
  13886. }
  13887. HEAP8[$29>>0] = 0;
  13888. $32 = (($k$01) + 1)|0;
  13889. $33 = ($32|0)<(256);
  13890. if ($33) {
  13891. $k$01 = $32;
  13892. } else {
  13893. break L9;
  13894. }
  13895. }
  13896. HEAP8[$29>>0] = 1;
  13897. }
  13898. }
  13899. } while(0);
  13900. $34 = (($b$03) + 1)|0;
  13901. $35 = ($34|0)<(7);
  13902. if ($35) {
  13903. $b$03 = $34;
  13904. } else {
  13905. break;
  13906. }
  13907. }
  13908. }
  13909. } while(0);
  13910. $36 = (($i$15) + 1)|0;
  13911. $exitcond = ($36|0)==(256);
  13912. if ($exitcond) {
  13913. break;
  13914. } else {
  13915. $i$15 = $36;
  13916. }
  13917. }
  13918. STACKTOP = sp;return;
  13919. }
  13920. function _crypto_sign_ed25519_ref10_ge_frombytes_negate_vartime($h,$s) {
  13921. $h = $h|0;
  13922. $s = $s|0;
  13923. var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $check = 0, $u = 0, $v = 0, $v3 = 0, $vxx = 0, label = 0;
  13924. var sp = 0;
  13925. sp = STACKTOP;
  13926. STACKTOP = STACKTOP + 208|0;
  13927. $u = sp + 160|0;
  13928. $v = sp + 120|0;
  13929. $v3 = sp + 80|0;
  13930. $vxx = sp + 40|0;
  13931. $check = sp;
  13932. $0 = (($h) + 40|0);
  13933. _crypto_sign_ed25519_ref10_fe_frombytes($0,$s);
  13934. $1 = (($h) + 80|0);
  13935. _crypto_sign_ed25519_ref10_fe_1($1);
  13936. _crypto_sign_ed25519_ref10_fe_sq($u,$0);
  13937. _crypto_sign_ed25519_ref10_fe_mul($v,$u,1000);
  13938. _crypto_sign_ed25519_ref10_fe_sub($u,$u,$1);
  13939. _crypto_sign_ed25519_ref10_fe_add($v,$v,$1);
  13940. _crypto_sign_ed25519_ref10_fe_sq($v3,$v);
  13941. _crypto_sign_ed25519_ref10_fe_mul($v3,$v3,$v);
  13942. _crypto_sign_ed25519_ref10_fe_sq($h,$v3);
  13943. _crypto_sign_ed25519_ref10_fe_mul($h,$h,$v);
  13944. _crypto_sign_ed25519_ref10_fe_mul($h,$h,$u);
  13945. _crypto_sign_ed25519_ref10_fe_pow22523($h,$h);
  13946. _crypto_sign_ed25519_ref10_fe_mul($h,$h,$v3);
  13947. _crypto_sign_ed25519_ref10_fe_mul($h,$h,$u);
  13948. _crypto_sign_ed25519_ref10_fe_sq($vxx,$h);
  13949. _crypto_sign_ed25519_ref10_fe_mul($vxx,$vxx,$v);
  13950. _crypto_sign_ed25519_ref10_fe_sub($check,$vxx,$u);
  13951. $2 = (_crypto_sign_ed25519_ref10_fe_isnonzero($check)|0);
  13952. $3 = ($2|0)==(0);
  13953. do {
  13954. if (!($3)) {
  13955. _crypto_sign_ed25519_ref10_fe_add($check,$vxx,$u);
  13956. $4 = (_crypto_sign_ed25519_ref10_fe_isnonzero($check)|0);
  13957. $5 = ($4|0)==(0);
  13958. if ($5) {
  13959. _crypto_sign_ed25519_ref10_fe_mul($h,$h,1040);
  13960. break;
  13961. } else {
  13962. $$0 = -1;
  13963. STACKTOP = sp;return ($$0|0);
  13964. }
  13965. }
  13966. } while(0);
  13967. $6 = (_crypto_sign_ed25519_ref10_fe_isnegative($h)|0);
  13968. $7 = (($s) + 31|0);
  13969. $8 = HEAP8[$7>>0]|0;
  13970. $9 = $8&255;
  13971. $10 = $9 >>> 7;
  13972. $11 = ($6|0)==($10|0);
  13973. if ($11) {
  13974. _crypto_sign_ed25519_ref10_fe_neg($h,$h);
  13975. }
  13976. $12 = (($h) + 120|0);
  13977. _crypto_sign_ed25519_ref10_fe_mul($12,$h,$0);
  13978. $$0 = 0;
  13979. STACKTOP = sp;return ($$0|0);
  13980. }
  13981. function _crypto_sign_ed25519_ref10_ge_madd($r,$p,$q) {
  13982. $r = $r|0;
  13983. $p = $p|0;
  13984. $q = $q|0;
  13985. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $t0 = 0, label = 0, sp = 0;
  13986. sp = STACKTOP;
  13987. STACKTOP = STACKTOP + 48|0;
  13988. $t0 = sp;
  13989. $0 = (($p) + 40|0);
  13990. _crypto_sign_ed25519_ref10_fe_add($r,$0,$p);
  13991. $1 = (($r) + 40|0);
  13992. _crypto_sign_ed25519_ref10_fe_sub($1,$0,$p);
  13993. $2 = (($r) + 80|0);
  13994. _crypto_sign_ed25519_ref10_fe_mul($2,$r,$q);
  13995. $3 = (($q) + 40|0);
  13996. _crypto_sign_ed25519_ref10_fe_mul($1,$1,$3);
  13997. $4 = (($r) + 120|0);
  13998. $5 = (($q) + 80|0);
  13999. $6 = (($p) + 120|0);
  14000. _crypto_sign_ed25519_ref10_fe_mul($4,$5,$6);
  14001. $7 = (($p) + 80|0);
  14002. _crypto_sign_ed25519_ref10_fe_add($t0,$7,$7);
  14003. _crypto_sign_ed25519_ref10_fe_sub($r,$2,$1);
  14004. _crypto_sign_ed25519_ref10_fe_add($1,$2,$1);
  14005. _crypto_sign_ed25519_ref10_fe_add($2,$t0,$4);
  14006. _crypto_sign_ed25519_ref10_fe_sub($4,$t0,$4);
  14007. STACKTOP = sp;return;
  14008. }
  14009. function _crypto_sign_ed25519_ref10_ge_msub($r,$p,$q) {
  14010. $r = $r|0;
  14011. $p = $p|0;
  14012. $q = $q|0;
  14013. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $t0 = 0, label = 0, sp = 0;
  14014. sp = STACKTOP;
  14015. STACKTOP = STACKTOP + 48|0;
  14016. $t0 = sp;
  14017. $0 = (($p) + 40|0);
  14018. _crypto_sign_ed25519_ref10_fe_add($r,$0,$p);
  14019. $1 = (($r) + 40|0);
  14020. _crypto_sign_ed25519_ref10_fe_sub($1,$0,$p);
  14021. $2 = (($r) + 80|0);
  14022. $3 = (($q) + 40|0);
  14023. _crypto_sign_ed25519_ref10_fe_mul($2,$r,$3);
  14024. _crypto_sign_ed25519_ref10_fe_mul($1,$1,$q);
  14025. $4 = (($r) + 120|0);
  14026. $5 = (($q) + 80|0);
  14027. $6 = (($p) + 120|0);
  14028. _crypto_sign_ed25519_ref10_fe_mul($4,$5,$6);
  14029. $7 = (($p) + 80|0);
  14030. _crypto_sign_ed25519_ref10_fe_add($t0,$7,$7);
  14031. _crypto_sign_ed25519_ref10_fe_sub($r,$2,$1);
  14032. _crypto_sign_ed25519_ref10_fe_add($1,$2,$1);
  14033. _crypto_sign_ed25519_ref10_fe_sub($2,$t0,$4);
  14034. _crypto_sign_ed25519_ref10_fe_add($4,$t0,$4);
  14035. STACKTOP = sp;return;
  14036. }
  14037. function _crypto_sign_ed25519_ref10_ge_p1p1_to_p2($r,$p) {
  14038. $r = $r|0;
  14039. $p = $p|0;
  14040. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0;
  14041. sp = STACKTOP;
  14042. $0 = (($p) + 120|0);
  14043. _crypto_sign_ed25519_ref10_fe_mul($r,$p,$0);
  14044. $1 = (($r) + 40|0);
  14045. $2 = (($p) + 40|0);
  14046. $3 = (($p) + 80|0);
  14047. _crypto_sign_ed25519_ref10_fe_mul($1,$2,$3);
  14048. $4 = (($r) + 80|0);
  14049. _crypto_sign_ed25519_ref10_fe_mul($4,$3,$0);
  14050. STACKTOP = sp;return;
  14051. }
  14052. function _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($r,$p) {
  14053. $r = $r|0;
  14054. $p = $p|0;
  14055. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
  14056. sp = STACKTOP;
  14057. $0 = (($p) + 120|0);
  14058. _crypto_sign_ed25519_ref10_fe_mul($r,$p,$0);
  14059. $1 = (($r) + 40|0);
  14060. $2 = (($p) + 40|0);
  14061. $3 = (($p) + 80|0);
  14062. _crypto_sign_ed25519_ref10_fe_mul($1,$2,$3);
  14063. $4 = (($r) + 80|0);
  14064. _crypto_sign_ed25519_ref10_fe_mul($4,$3,$0);
  14065. $5 = (($r) + 120|0);
  14066. _crypto_sign_ed25519_ref10_fe_mul($5,$p,$2);
  14067. STACKTOP = sp;return;
  14068. }
  14069. function _crypto_sign_ed25519_ref10_ge_p2_0($h) {
  14070. $h = $h|0;
  14071. var $0 = 0, $1 = 0, label = 0, sp = 0;
  14072. sp = STACKTOP;
  14073. _crypto_sign_ed25519_ref10_fe_0($h);
  14074. $0 = (($h) + 40|0);
  14075. _crypto_sign_ed25519_ref10_fe_1($0);
  14076. $1 = (($h) + 80|0);
  14077. _crypto_sign_ed25519_ref10_fe_1($1);
  14078. STACKTOP = sp;return;
  14079. }
  14080. function _crypto_sign_ed25519_ref10_ge_p2_dbl($r,$p) {
  14081. $r = $r|0;
  14082. $p = $p|0;
  14083. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $t0 = 0, label = 0, sp = 0;
  14084. sp = STACKTOP;
  14085. STACKTOP = STACKTOP + 48|0;
  14086. $t0 = sp;
  14087. _crypto_sign_ed25519_ref10_fe_sq($r,$p);
  14088. $0 = (($r) + 80|0);
  14089. $1 = (($p) + 40|0);
  14090. _crypto_sign_ed25519_ref10_fe_sq($0,$1);
  14091. $2 = (($r) + 120|0);
  14092. $3 = (($p) + 80|0);
  14093. _crypto_sign_ed25519_ref10_fe_sq2($2,$3);
  14094. $4 = (($r) + 40|0);
  14095. _crypto_sign_ed25519_ref10_fe_add($4,$p,$1);
  14096. _crypto_sign_ed25519_ref10_fe_sq($t0,$4);
  14097. _crypto_sign_ed25519_ref10_fe_add($4,$0,$r);
  14098. _crypto_sign_ed25519_ref10_fe_sub($0,$0,$r);
  14099. _crypto_sign_ed25519_ref10_fe_sub($r,$t0,$4);
  14100. _crypto_sign_ed25519_ref10_fe_sub($2,$2,$0);
  14101. STACKTOP = sp;return;
  14102. }
  14103. function _crypto_sign_ed25519_ref10_ge_p3_0($h) {
  14104. $h = $h|0;
  14105. var $0 = 0, $1 = 0, $2 = 0, label = 0, sp = 0;
  14106. sp = STACKTOP;
  14107. _crypto_sign_ed25519_ref10_fe_0($h);
  14108. $0 = (($h) + 40|0);
  14109. _crypto_sign_ed25519_ref10_fe_1($0);
  14110. $1 = (($h) + 80|0);
  14111. _crypto_sign_ed25519_ref10_fe_1($1);
  14112. $2 = (($h) + 120|0);
  14113. _crypto_sign_ed25519_ref10_fe_0($2);
  14114. STACKTOP = sp;return;
  14115. }
  14116. function _crypto_sign_ed25519_ref10_ge_p3_dbl($r,$p) {
  14117. $r = $r|0;
  14118. $p = $p|0;
  14119. var $q = 0, label = 0, sp = 0;
  14120. sp = STACKTOP;
  14121. STACKTOP = STACKTOP + 128|0;
  14122. $q = sp;
  14123. _crypto_sign_ed25519_ref10_ge_p3_to_p2($q,$p);
  14124. _crypto_sign_ed25519_ref10_ge_p2_dbl($r,$q);
  14125. STACKTOP = sp;return;
  14126. }
  14127. function _crypto_sign_ed25519_ref10_ge_p3_to_cached($r,$p) {
  14128. $r = $r|0;
  14129. $p = $p|0;
  14130. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
  14131. sp = STACKTOP;
  14132. $0 = (($p) + 40|0);
  14133. _crypto_sign_ed25519_ref10_fe_add($r,$0,$p);
  14134. $1 = (($r) + 40|0);
  14135. _crypto_sign_ed25519_ref10_fe_sub($1,$0,$p);
  14136. $2 = (($r) + 80|0);
  14137. $3 = (($p) + 80|0);
  14138. _crypto_sign_ed25519_ref10_fe_copy($2,$3);
  14139. $4 = (($r) + 120|0);
  14140. $5 = (($p) + 120|0);
  14141. _crypto_sign_ed25519_ref10_fe_mul($4,$5,1080);
  14142. STACKTOP = sp;return;
  14143. }
  14144. function _crypto_sign_ed25519_ref10_ge_p3_to_p2($r,$p) {
  14145. $r = $r|0;
  14146. $p = $p|0;
  14147. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
  14148. sp = STACKTOP;
  14149. _crypto_sign_ed25519_ref10_fe_copy($r,$p);
  14150. $0 = (($r) + 40|0);
  14151. $1 = (($p) + 40|0);
  14152. _crypto_sign_ed25519_ref10_fe_copy($0,$1);
  14153. $2 = (($r) + 80|0);
  14154. $3 = (($p) + 80|0);
  14155. _crypto_sign_ed25519_ref10_fe_copy($2,$3);
  14156. STACKTOP = sp;return;
  14157. }
  14158. function _crypto_sign_ed25519_ref10_ge_p3_tobytes($s,$h) {
  14159. $s = $s|0;
  14160. $h = $h|0;
  14161. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $recip = 0, $x = 0, $y = 0, label = 0, sp = 0;
  14162. sp = STACKTOP;
  14163. STACKTOP = STACKTOP + 128|0;
  14164. $recip = sp + 80|0;
  14165. $x = sp + 40|0;
  14166. $y = sp;
  14167. $0 = (($h) + 80|0);
  14168. _crypto_sign_ed25519_ref10_fe_invert($recip,$0);
  14169. _crypto_sign_ed25519_ref10_fe_mul($x,$h,$recip);
  14170. $1 = (($h) + 40|0);
  14171. _crypto_sign_ed25519_ref10_fe_mul($y,$1,$recip);
  14172. _crypto_sign_ed25519_ref10_fe_tobytes($s,$y);
  14173. $2 = (_crypto_sign_ed25519_ref10_fe_isnegative($x)|0);
  14174. $3 = $2 << 7;
  14175. $4 = (($s) + 31|0);
  14176. $5 = HEAP8[$4>>0]|0;
  14177. $6 = $5&255;
  14178. $7 = $6 ^ $3;
  14179. $8 = $7&255;
  14180. HEAP8[$4>>0] = $8;
  14181. STACKTOP = sp;return;
  14182. }
  14183. function _crypto_sign_ed25519_ref10_ge_precomp_0($h) {
  14184. $h = $h|0;
  14185. var $0 = 0, $1 = 0, label = 0, sp = 0;
  14186. sp = STACKTOP;
  14187. _crypto_sign_ed25519_ref10_fe_1($h);
  14188. $0 = (($h) + 40|0);
  14189. _crypto_sign_ed25519_ref10_fe_1($0);
  14190. $1 = (($h) + 80|0);
  14191. _crypto_sign_ed25519_ref10_fe_0($1);
  14192. STACKTOP = sp;return;
  14193. }
  14194. function _crypto_sign_ed25519_ref10_ge_scalarmult_base($h,$a) {
  14195. $h = $h|0;
  14196. $a = $a|0;
  14197. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0;
  14198. var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $carry$04 = 0, $e = 0, $exitcond = 0, $exitcond7 = 0;
  14199. var $i$06 = 0, $i$15 = 0, $i$23 = 0, $i$32 = 0, $r = 0, $s = 0, $sext = 0, $sext1 = 0, $t = 0, label = 0, sp = 0;
  14200. sp = STACKTOP;
  14201. STACKTOP = STACKTOP + 464|0;
  14202. $e = sp + 400|0;
  14203. $r = sp + 240|0;
  14204. $s = sp + 120|0;
  14205. $t = sp;
  14206. $i$06 = 0;
  14207. while(1) {
  14208. $0 = (($a) + ($i$06)|0);
  14209. $1 = HEAP8[$0>>0]|0;
  14210. $2 = $1&255;
  14211. $3 = $2 & 15;
  14212. $4 = $3&255;
  14213. $5 = $i$06 << 1;
  14214. $6 = (($e) + ($5)|0);
  14215. HEAP8[$6>>0] = $4;
  14216. $7 = HEAP8[$0>>0]|0;
  14217. $8 = ($7&255) >>> 4;
  14218. $9 = $5 | 1;
  14219. $10 = (($e) + ($9)|0);
  14220. HEAP8[$10>>0] = $8;
  14221. $11 = (($i$06) + 1)|0;
  14222. $exitcond7 = ($11|0)==(32);
  14223. if ($exitcond7) {
  14224. $carry$04 = 0;$i$15 = 0;
  14225. break;
  14226. } else {
  14227. $i$06 = $11;
  14228. }
  14229. }
  14230. while(1) {
  14231. $12 = (($e) + ($i$15)|0);
  14232. $13 = HEAP8[$12>>0]|0;
  14233. $14 = $13&255;
  14234. $15 = (($14) + ($carry$04))|0;
  14235. $sext = $15 << 24;
  14236. $sext1 = (($sext) + 134217728)|0;
  14237. $16 = $sext1 >> 28;
  14238. $17 = $16 << 4;
  14239. $18 = (($15) - ($17))|0;
  14240. $19 = $18&255;
  14241. HEAP8[$12>>0] = $19;
  14242. $20 = (($i$15) + 1)|0;
  14243. $exitcond = ($20|0)==(63);
  14244. if ($exitcond) {
  14245. break;
  14246. } else {
  14247. $carry$04 = $16;$i$15 = $20;
  14248. }
  14249. }
  14250. $21 = (($e) + 63|0);
  14251. $22 = HEAP8[$21>>0]|0;
  14252. $23 = $22&255;
  14253. $24 = (($23) + ($16))|0;
  14254. $25 = $24&255;
  14255. HEAP8[$21>>0] = $25;
  14256. _crypto_sign_ed25519_ref10_ge_p3_0($h);
  14257. $i$23 = 1;
  14258. while(1) {
  14259. $26 = (($i$23|0) / 2)&-1;
  14260. $27 = (($e) + ($i$23)|0);
  14261. $28 = HEAP8[$27>>0]|0;
  14262. _select($t,$26,$28);
  14263. _crypto_sign_ed25519_ref10_ge_madd($r,$h,$t);
  14264. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($h,$r);
  14265. $29 = (($i$23) + 2)|0;
  14266. $30 = ($29|0)<(64);
  14267. if ($30) {
  14268. $i$23 = $29;
  14269. } else {
  14270. break;
  14271. }
  14272. }
  14273. _crypto_sign_ed25519_ref10_ge_p3_dbl($r,$h);
  14274. _crypto_sign_ed25519_ref10_ge_p1p1_to_p2($s,$r);
  14275. _crypto_sign_ed25519_ref10_ge_p2_dbl($r,$s);
  14276. _crypto_sign_ed25519_ref10_ge_p1p1_to_p2($s,$r);
  14277. _crypto_sign_ed25519_ref10_ge_p2_dbl($r,$s);
  14278. _crypto_sign_ed25519_ref10_ge_p1p1_to_p2($s,$r);
  14279. _crypto_sign_ed25519_ref10_ge_p2_dbl($r,$s);
  14280. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($h,$r);
  14281. $i$32 = 0;
  14282. while(1) {
  14283. $31 = (($i$32|0) / 2)&-1;
  14284. $32 = (($e) + ($i$32)|0);
  14285. $33 = HEAP8[$32>>0]|0;
  14286. _select($t,$31,$33);
  14287. _crypto_sign_ed25519_ref10_ge_madd($r,$h,$t);
  14288. _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($h,$r);
  14289. $34 = (($i$32) + 2)|0;
  14290. $35 = ($34|0)<(64);
  14291. if ($35) {
  14292. $i$32 = $34;
  14293. } else {
  14294. break;
  14295. }
  14296. }
  14297. STACKTOP = sp;return;
  14298. }
  14299. function _select($t,$pos,$b) {
  14300. $t = $t|0;
  14301. $pos = $pos|0;
  14302. $b = $b|0;
  14303. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0;
  14304. var $27 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $minust = 0, label = 0, sp = 0;
  14305. sp = STACKTOP;
  14306. STACKTOP = STACKTOP + 128|0;
  14307. $minust = sp;
  14308. $0 = (_negative($b)|0);
  14309. $1 = $b << 24 >> 24;
  14310. $2 = $0&255;
  14311. $3 = (0 - ($2))|0;
  14312. $4 = $1 & $3;
  14313. $5 = $4 << 1;
  14314. $6 = (($1) - ($5))|0;
  14315. $7 = $6&255;
  14316. _crypto_sign_ed25519_ref10_ge_precomp_0($t);
  14317. $8 = (1120 + (($pos*960)|0)|0);
  14318. $9 = (_equal($7,1)|0);
  14319. _cmov($t,$8,$9);
  14320. $10 = ((1120 + (($pos*960)|0)|0) + 120|0);
  14321. $11 = (_equal($7,2)|0);
  14322. _cmov($t,$10,$11);
  14323. $12 = ((1120 + (($pos*960)|0)|0) + 240|0);
  14324. $13 = (_equal($7,3)|0);
  14325. _cmov($t,$12,$13);
  14326. $14 = ((1120 + (($pos*960)|0)|0) + 360|0);
  14327. $15 = (_equal($7,4)|0);
  14328. _cmov($t,$14,$15);
  14329. $16 = ((1120 + (($pos*960)|0)|0) + 480|0);
  14330. $17 = (_equal($7,5)|0);
  14331. _cmov($t,$16,$17);
  14332. $18 = ((1120 + (($pos*960)|0)|0) + 600|0);
  14333. $19 = (_equal($7,6)|0);
  14334. _cmov($t,$18,$19);
  14335. $20 = ((1120 + (($pos*960)|0)|0) + 720|0);
  14336. $21 = (_equal($7,7)|0);
  14337. _cmov($t,$20,$21);
  14338. $22 = ((1120 + (($pos*960)|0)|0) + 840|0);
  14339. $23 = (_equal($7,8)|0);
  14340. _cmov($t,$22,$23);
  14341. $24 = (($t) + 40|0);
  14342. _crypto_sign_ed25519_ref10_fe_copy($minust,$24);
  14343. $25 = (($minust) + 40|0);
  14344. _crypto_sign_ed25519_ref10_fe_copy($25,$t);
  14345. $26 = (($minust) + 80|0);
  14346. $27 = (($t) + 80|0);
  14347. _crypto_sign_ed25519_ref10_fe_neg($26,$27);
  14348. _cmov($t,$minust,$0);
  14349. STACKTOP = sp;return;
  14350. }
  14351. function _negative($b) {
  14352. $b = $b|0;
  14353. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
  14354. sp = STACKTOP;
  14355. $0 = $b << 24 >> 24;
  14356. $1 = ($0|0)<(0);
  14357. $2 = $1 << 31 >> 31;
  14358. $3 = (_bitshift64Lshr(($0|0),($2|0),63)|0);
  14359. $4 = tempRet0;
  14360. $5 = $3&255;
  14361. STACKTOP = sp;return ($5|0);
  14362. }
  14363. function _equal($b,$c) {
  14364. $b = $b|0;
  14365. $c = $c|0;
  14366. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0;
  14367. sp = STACKTOP;
  14368. $0 = $c ^ $b;
  14369. $1 = $0&255;
  14370. $2 = (($1) + -1)|0;
  14371. $3 = $2 >>> 31;
  14372. $4 = $3&255;
  14373. STACKTOP = sp;return ($4|0);
  14374. }
  14375. function _cmov($t,$u,$b) {
  14376. $t = $t|0;
  14377. $u = $u|0;
  14378. $b = $b|0;
  14379. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0;
  14380. sp = STACKTOP;
  14381. $0 = $b&255;
  14382. _crypto_sign_ed25519_ref10_fe_cmov($t,$u,$0);
  14383. $1 = (($t) + 40|0);
  14384. $2 = (($u) + 40|0);
  14385. _crypto_sign_ed25519_ref10_fe_cmov($1,$2,$0);
  14386. $3 = (($t) + 80|0);
  14387. $4 = (($u) + 80|0);
  14388. _crypto_sign_ed25519_ref10_fe_cmov($3,$4,$0);
  14389. STACKTOP = sp;return;
  14390. }
  14391. function _crypto_sign_ed25519_ref10_ge_sub($r,$p,$q) {
  14392. $r = $r|0;
  14393. $p = $p|0;
  14394. $q = $q|0;
  14395. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $t0 = 0, label = 0, sp = 0;
  14396. sp = STACKTOP;
  14397. STACKTOP = STACKTOP + 48|0;
  14398. $t0 = sp;
  14399. $0 = (($p) + 40|0);
  14400. _crypto_sign_ed25519_ref10_fe_add($r,$0,$p);
  14401. $1 = (($r) + 40|0);
  14402. _crypto_sign_ed25519_ref10_fe_sub($1,$0,$p);
  14403. $2 = (($r) + 80|0);
  14404. $3 = (($q) + 40|0);
  14405. _crypto_sign_ed25519_ref10_fe_mul($2,$r,$3);
  14406. _crypto_sign_ed25519_ref10_fe_mul($1,$1,$q);
  14407. $4 = (($r) + 120|0);
  14408. $5 = (($q) + 120|0);
  14409. $6 = (($p) + 120|0);
  14410. _crypto_sign_ed25519_ref10_fe_mul($4,$5,$6);
  14411. $7 = (($p) + 80|0);
  14412. $8 = (($q) + 80|0);
  14413. _crypto_sign_ed25519_ref10_fe_mul($r,$7,$8);
  14414. _crypto_sign_ed25519_ref10_fe_add($t0,$r,$r);
  14415. _crypto_sign_ed25519_ref10_fe_sub($r,$2,$1);
  14416. _crypto_sign_ed25519_ref10_fe_add($1,$2,$1);
  14417. _crypto_sign_ed25519_ref10_fe_sub($2,$t0,$4);
  14418. _crypto_sign_ed25519_ref10_fe_add($4,$t0,$4);
  14419. STACKTOP = sp;return;
  14420. }
  14421. function _crypto_sign_ed25519_ref10_ge_tobytes($s,$h) {
  14422. $s = $s|0;
  14423. $h = $h|0;
  14424. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $recip = 0, $x = 0, $y = 0, label = 0, sp = 0;
  14425. sp = STACKTOP;
  14426. STACKTOP = STACKTOP + 128|0;
  14427. $recip = sp + 80|0;
  14428. $x = sp + 40|0;
  14429. $y = sp;
  14430. $0 = (($h) + 80|0);
  14431. _crypto_sign_ed25519_ref10_fe_invert($recip,$0);
  14432. _crypto_sign_ed25519_ref10_fe_mul($x,$h,$recip);
  14433. $1 = (($h) + 40|0);
  14434. _crypto_sign_ed25519_ref10_fe_mul($y,$1,$recip);
  14435. _crypto_sign_ed25519_ref10_fe_tobytes($s,$y);
  14436. $2 = (_crypto_sign_ed25519_ref10_fe_isnegative($x)|0);
  14437. $3 = $2 << 7;
  14438. $4 = (($s) + 31|0);
  14439. $5 = HEAP8[$4>>0]|0;
  14440. $6 = $5&255;
  14441. $7 = $6 ^ $3;
  14442. $8 = $7&255;
  14443. HEAP8[$4>>0] = $8;
  14444. STACKTOP = sp;return;
  14445. }
  14446. function _crypto_sign_edwards25519sha512batch_ref10_open($m,$mlen,$sm,$0,$1,$pk) {
  14447. $m = $m|0;
  14448. $mlen = $mlen|0;
  14449. $sm = $sm|0;
  14450. $0 = $0|0;
  14451. $1 = $1|0;
  14452. $pk = $pk|0;
  14453. var $$0 = 0, $$sum = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0;
  14454. var $27 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $A = 0, $R = 0, $h = 0, $pkcopy1 = 0, $rcheck = 0, $rcopy = 0, $scopy = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  14455. sp = STACKTOP;
  14456. STACKTOP = STACKTOP + 480|0;
  14457. $pkcopy1 = sp + 440|0;
  14458. $rcopy = sp + 408|0;
  14459. $scopy = sp + 376|0;
  14460. $h = sp + 312|0;
  14461. $rcheck = sp + 280|0;
  14462. $A = sp + 120|0;
  14463. $R = sp;
  14464. $2 = ($1>>>0)<(0);
  14465. $3 = ($0>>>0)<(64);
  14466. $4 = ($1|0)==(0);
  14467. $5 = $4 & $3;
  14468. $6 = $2 | $5;
  14469. if (!($6)) {
  14470. $7 = (($sm) + 63|0);
  14471. $8 = HEAP8[$7>>0]|0;
  14472. $9 = ($8&255)>(31);
  14473. if (!($9)) {
  14474. $10 = (_crypto_sign_ed25519_ref10_ge_frombytes_negate_vartime($A,$pk)|0);
  14475. $11 = ($10|0)==(0);
  14476. if ($11) {
  14477. dest=$pkcopy1+0|0; src=$pk+0|0; stop=dest+32|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
  14478. dest=$rcopy+0|0; src=$sm+0|0; stop=dest+32|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
  14479. $12 = (($sm) + 32|0);
  14480. dest=$scopy+0|0; src=$12+0|0; stop=dest+32|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
  14481. _memmove(($m|0),($sm|0),($0|0))|0;
  14482. $13 = (($m) + 32|0);
  14483. dest=$13+0|0; src=$pkcopy1+0|0; stop=dest+32|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
  14484. (_crypto_hash_sha512_ref($h,$m,$0,$1)|0);
  14485. _crypto_sign_ed25519_ref10_sc_reduce($h);
  14486. _crypto_sign_ed25519_ref10_ge_double_scalarmult_vartime($R,$h,$A,$scopy);
  14487. _crypto_sign_ed25519_ref10_ge_tobytes($rcheck,$R);
  14488. $14 = (_crypto_verify_32_ref($rcheck,$rcopy)|0);
  14489. $15 = ($14|0)==(0);
  14490. if ($15) {
  14491. $16 = (($m) + 64|0);
  14492. $17 = (_i64Add(($0|0),($1|0),-64,-1)|0);
  14493. $18 = tempRet0;
  14494. _memmove(($m|0),($16|0),($17|0))|0;
  14495. $$sum = (($0) + -64)|0;
  14496. $19 = (($m) + ($$sum)|0);
  14497. dest=$19+0|0; stop=dest+64|0; do { HEAP8[dest>>0]=0|0; dest=dest+1|0; } while ((dest|0) < (stop|0));
  14498. $20 = $mlen;
  14499. $21 = $20;
  14500. HEAP32[$21>>2] = $17;
  14501. $22 = (($20) + 4)|0;
  14502. $23 = $22;
  14503. HEAP32[$23>>2] = $18;
  14504. $$0 = 0;
  14505. STACKTOP = sp;return ($$0|0);
  14506. }
  14507. }
  14508. }
  14509. }
  14510. $24 = $mlen;
  14511. $25 = $24;
  14512. HEAP32[$25>>2] = -1;
  14513. $26 = (($24) + 4)|0;
  14514. $27 = $26;
  14515. HEAP32[$27>>2] = -1;
  14516. _memset(($m|0),0,($0|0))|0;
  14517. $$0 = -1;
  14518. STACKTOP = sp;return ($$0|0);
  14519. }
  14520. function _crypto_sign_ed25519_ref10_sc_muladd($s,$a,$b,$c) {
  14521. $s = $s|0;
  14522. $a = $a|0;
  14523. $b = $b|0;
  14524. $c = $c|0;
  14525. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0, $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0;
  14526. var $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0, $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0;
  14527. var $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0, $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0, $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0;
  14528. var $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $1059 = 0, $106 = 0, $1060 = 0, $1061 = 0, $1062 = 0, $1063 = 0, $1064 = 0, $1065 = 0, $1066 = 0, $1067 = 0, $1068 = 0, $1069 = 0;
  14529. var $107 = 0, $1070 = 0, $1071 = 0, $1072 = 0, $1073 = 0, $1074 = 0, $1075 = 0, $1076 = 0, $1077 = 0, $1078 = 0, $1079 = 0, $108 = 0, $1080 = 0, $1081 = 0, $1082 = 0, $1083 = 0, $1084 = 0, $1085 = 0, $1086 = 0, $1087 = 0;
  14530. var $1088 = 0, $1089 = 0, $109 = 0, $1090 = 0, $1091 = 0, $1092 = 0, $1093 = 0, $1094 = 0, $1095 = 0, $1096 = 0, $1097 = 0, $1098 = 0, $1099 = 0, $11 = 0, $110 = 0, $1100 = 0, $1101 = 0, $1102 = 0, $1103 = 0, $1104 = 0;
  14531. var $1105 = 0, $1106 = 0, $1107 = 0, $1108 = 0, $1109 = 0, $111 = 0, $1110 = 0, $1111 = 0, $1112 = 0, $1113 = 0, $1114 = 0, $1115 = 0, $1116 = 0, $1117 = 0, $1118 = 0, $1119 = 0, $112 = 0, $1120 = 0, $1121 = 0, $1122 = 0;
  14532. var $1123 = 0, $1124 = 0, $1125 = 0, $1126 = 0, $1127 = 0, $1128 = 0, $1129 = 0, $113 = 0, $1130 = 0, $1131 = 0, $1132 = 0, $1133 = 0, $1134 = 0, $1135 = 0, $1136 = 0, $1137 = 0, $1138 = 0, $1139 = 0, $114 = 0, $1140 = 0;
  14533. var $1141 = 0, $1142 = 0, $1143 = 0, $1144 = 0, $1145 = 0, $1146 = 0, $1147 = 0, $1148 = 0, $1149 = 0, $115 = 0, $1150 = 0, $1151 = 0, $1152 = 0, $1153 = 0, $1154 = 0, $1155 = 0, $1156 = 0, $1157 = 0, $1158 = 0, $1159 = 0;
  14534. var $116 = 0, $1160 = 0, $1161 = 0, $1162 = 0, $1163 = 0, $1164 = 0, $1165 = 0, $1166 = 0, $1167 = 0, $1168 = 0, $1169 = 0, $117 = 0, $1170 = 0, $1171 = 0, $1172 = 0, $1173 = 0, $1174 = 0, $1175 = 0, $1176 = 0, $1177 = 0;
  14535. var $1178 = 0, $1179 = 0, $118 = 0, $1180 = 0, $1181 = 0, $1182 = 0, $1183 = 0, $1184 = 0, $1185 = 0, $1186 = 0, $1187 = 0, $1188 = 0, $1189 = 0, $119 = 0, $1190 = 0, $1191 = 0, $1192 = 0, $1193 = 0, $1194 = 0, $1195 = 0;
  14536. var $1196 = 0, $1197 = 0, $1198 = 0, $1199 = 0, $12 = 0, $120 = 0, $1200 = 0, $1201 = 0, $1202 = 0, $1203 = 0, $1204 = 0, $1205 = 0, $1206 = 0, $1207 = 0, $1208 = 0, $1209 = 0, $121 = 0, $1210 = 0, $1211 = 0, $1212 = 0;
  14537. var $1213 = 0, $1214 = 0, $1215 = 0, $1216 = 0, $1217 = 0, $1218 = 0, $1219 = 0, $122 = 0, $1220 = 0, $1221 = 0, $1222 = 0, $1223 = 0, $1224 = 0, $1225 = 0, $1226 = 0, $1227 = 0, $1228 = 0, $1229 = 0, $123 = 0, $1230 = 0;
  14538. var $1231 = 0, $1232 = 0, $1233 = 0, $1234 = 0, $1235 = 0, $1236 = 0, $1237 = 0, $1238 = 0, $1239 = 0, $124 = 0, $1240 = 0, $1241 = 0, $1242 = 0, $1243 = 0, $1244 = 0, $1245 = 0, $1246 = 0, $1247 = 0, $1248 = 0, $1249 = 0;
  14539. var $125 = 0, $1250 = 0, $1251 = 0, $1252 = 0, $1253 = 0, $1254 = 0, $1255 = 0, $1256 = 0, $1257 = 0, $1258 = 0, $1259 = 0, $126 = 0, $1260 = 0, $1261 = 0, $1262 = 0, $1263 = 0, $1264 = 0, $1265 = 0, $1266 = 0, $1267 = 0;
  14540. var $1268 = 0, $1269 = 0, $127 = 0, $1270 = 0, $1271 = 0, $1272 = 0, $1273 = 0, $1274 = 0, $1275 = 0, $1276 = 0, $1277 = 0, $1278 = 0, $1279 = 0, $128 = 0, $1280 = 0, $1281 = 0, $1282 = 0, $1283 = 0, $1284 = 0, $1285 = 0;
  14541. var $1286 = 0, $1287 = 0, $1288 = 0, $1289 = 0, $129 = 0, $1290 = 0, $1291 = 0, $1292 = 0, $1293 = 0, $1294 = 0, $1295 = 0, $1296 = 0, $1297 = 0, $1298 = 0, $1299 = 0, $13 = 0, $130 = 0, $1300 = 0, $1301 = 0, $1302 = 0;
  14542. var $1303 = 0, $1304 = 0, $1305 = 0, $1306 = 0, $1307 = 0, $1308 = 0, $1309 = 0, $131 = 0, $1310 = 0, $1311 = 0, $1312 = 0, $1313 = 0, $1314 = 0, $1315 = 0, $1316 = 0, $1317 = 0, $1318 = 0, $1319 = 0, $132 = 0, $1320 = 0;
  14543. var $1321 = 0, $1322 = 0, $1323 = 0, $1324 = 0, $1325 = 0, $1326 = 0, $1327 = 0, $1328 = 0, $1329 = 0, $133 = 0, $1330 = 0, $1331 = 0, $1332 = 0, $1333 = 0, $1334 = 0, $1335 = 0, $1336 = 0, $1337 = 0, $1338 = 0, $1339 = 0;
  14544. var $134 = 0, $1340 = 0, $1341 = 0, $1342 = 0, $1343 = 0, $1344 = 0, $1345 = 0, $1346 = 0, $1347 = 0, $1348 = 0, $1349 = 0, $135 = 0, $1350 = 0, $1351 = 0, $1352 = 0, $1353 = 0, $1354 = 0, $1355 = 0, $1356 = 0, $1357 = 0;
  14545. var $1358 = 0, $1359 = 0, $136 = 0, $1360 = 0, $1361 = 0, $1362 = 0, $1363 = 0, $1364 = 0, $1365 = 0, $1366 = 0, $1367 = 0, $1368 = 0, $1369 = 0, $137 = 0, $1370 = 0, $1371 = 0, $1372 = 0, $1373 = 0, $1374 = 0, $1375 = 0;
  14546. var $1376 = 0, $1377 = 0, $1378 = 0, $1379 = 0, $138 = 0, $1380 = 0, $1381 = 0, $1382 = 0, $1383 = 0, $1384 = 0, $1385 = 0, $1386 = 0, $1387 = 0, $1388 = 0, $1389 = 0, $139 = 0, $1390 = 0, $1391 = 0, $1392 = 0, $1393 = 0;
  14547. var $1394 = 0, $1395 = 0, $1396 = 0, $1397 = 0, $1398 = 0, $1399 = 0, $14 = 0, $140 = 0, $1400 = 0, $1401 = 0, $1402 = 0, $1403 = 0, $1404 = 0, $1405 = 0, $1406 = 0, $1407 = 0, $1408 = 0, $1409 = 0, $141 = 0, $1410 = 0;
  14548. var $1411 = 0, $1412 = 0, $1413 = 0, $1414 = 0, $1415 = 0, $1416 = 0, $1417 = 0, $1418 = 0, $1419 = 0, $142 = 0, $1420 = 0, $1421 = 0, $1422 = 0, $1423 = 0, $1424 = 0, $1425 = 0, $1426 = 0, $1427 = 0, $1428 = 0, $1429 = 0;
  14549. var $143 = 0, $1430 = 0, $1431 = 0, $1432 = 0, $1433 = 0, $1434 = 0, $1435 = 0, $1436 = 0, $1437 = 0, $1438 = 0, $1439 = 0, $144 = 0, $1440 = 0, $1441 = 0, $1442 = 0, $1443 = 0, $1444 = 0, $1445 = 0, $1446 = 0, $1447 = 0;
  14550. var $1448 = 0, $1449 = 0, $145 = 0, $1450 = 0, $1451 = 0, $1452 = 0, $1453 = 0, $1454 = 0, $1455 = 0, $1456 = 0, $1457 = 0, $1458 = 0, $1459 = 0, $146 = 0, $1460 = 0, $1461 = 0, $1462 = 0, $1463 = 0, $1464 = 0, $1465 = 0;
  14551. var $1466 = 0, $1467 = 0, $1468 = 0, $1469 = 0, $147 = 0, $1470 = 0, $1471 = 0, $1472 = 0, $1473 = 0, $1474 = 0, $1475 = 0, $1476 = 0, $1477 = 0, $1478 = 0, $1479 = 0, $148 = 0, $1480 = 0, $1481 = 0, $1482 = 0, $1483 = 0;
  14552. var $1484 = 0, $1485 = 0, $1486 = 0, $1487 = 0, $1488 = 0, $1489 = 0, $149 = 0, $1490 = 0, $1491 = 0, $1492 = 0, $1493 = 0, $1494 = 0, $1495 = 0, $1496 = 0, $1497 = 0, $1498 = 0, $1499 = 0, $15 = 0, $150 = 0, $1500 = 0;
  14553. var $1501 = 0, $1502 = 0, $1503 = 0, $1504 = 0, $1505 = 0, $1506 = 0, $1507 = 0, $1508 = 0, $1509 = 0, $151 = 0, $1510 = 0, $1511 = 0, $1512 = 0, $1513 = 0, $1514 = 0, $1515 = 0, $1516 = 0, $1517 = 0, $1518 = 0, $1519 = 0;
  14554. var $152 = 0, $1520 = 0, $1521 = 0, $1522 = 0, $1523 = 0, $1524 = 0, $1525 = 0, $1526 = 0, $1527 = 0, $1528 = 0, $1529 = 0, $153 = 0, $1530 = 0, $1531 = 0, $1532 = 0, $1533 = 0, $1534 = 0, $1535 = 0, $1536 = 0, $1537 = 0;
  14555. var $1538 = 0, $1539 = 0, $154 = 0, $1540 = 0, $1541 = 0, $1542 = 0, $1543 = 0, $1544 = 0, $1545 = 0, $1546 = 0, $1547 = 0, $1548 = 0, $1549 = 0, $155 = 0, $1550 = 0, $1551 = 0, $1552 = 0, $1553 = 0, $1554 = 0, $1555 = 0;
  14556. var $1556 = 0, $1557 = 0, $1558 = 0, $1559 = 0, $156 = 0, $1560 = 0, $1561 = 0, $1562 = 0, $1563 = 0, $1564 = 0, $1565 = 0, $1566 = 0, $1567 = 0, $1568 = 0, $1569 = 0, $157 = 0, $1570 = 0, $1571 = 0, $1572 = 0, $1573 = 0;
  14557. var $1574 = 0, $1575 = 0, $1576 = 0, $1577 = 0, $1578 = 0, $1579 = 0, $158 = 0, $1580 = 0, $1581 = 0, $1582 = 0, $1583 = 0, $1584 = 0, $1585 = 0, $1586 = 0, $1587 = 0, $1588 = 0, $1589 = 0, $159 = 0, $1590 = 0, $1591 = 0;
  14558. var $1592 = 0, $1593 = 0, $1594 = 0, $1595 = 0, $1596 = 0, $1597 = 0, $1598 = 0, $1599 = 0, $16 = 0, $160 = 0, $1600 = 0, $1601 = 0, $1602 = 0, $1603 = 0, $1604 = 0, $1605 = 0, $1606 = 0, $1607 = 0, $1608 = 0, $1609 = 0;
  14559. var $161 = 0, $1610 = 0, $1611 = 0, $1612 = 0, $1613 = 0, $1614 = 0, $1615 = 0, $1616 = 0, $1617 = 0, $1618 = 0, $1619 = 0, $162 = 0, $1620 = 0, $1621 = 0, $1622 = 0, $1623 = 0, $1624 = 0, $1625 = 0, $1626 = 0, $1627 = 0;
  14560. var $1628 = 0, $1629 = 0, $163 = 0, $1630 = 0, $1631 = 0, $1632 = 0, $1633 = 0, $1634 = 0, $1635 = 0, $1636 = 0, $1637 = 0, $1638 = 0, $1639 = 0, $164 = 0, $1640 = 0, $1641 = 0, $1642 = 0, $1643 = 0, $1644 = 0, $1645 = 0;
  14561. var $1646 = 0, $1647 = 0, $1648 = 0, $1649 = 0, $165 = 0, $1650 = 0, $1651 = 0, $1652 = 0, $1653 = 0, $1654 = 0, $1655 = 0, $1656 = 0, $1657 = 0, $1658 = 0, $1659 = 0, $166 = 0, $1660 = 0, $1661 = 0, $1662 = 0, $1663 = 0;
  14562. var $1664 = 0, $1665 = 0, $1666 = 0, $1667 = 0, $1668 = 0, $1669 = 0, $167 = 0, $1670 = 0, $1671 = 0, $1672 = 0, $1673 = 0, $1674 = 0, $1675 = 0, $1676 = 0, $1677 = 0, $1678 = 0, $1679 = 0, $168 = 0, $1680 = 0, $1681 = 0;
  14563. var $1682 = 0, $1683 = 0, $1684 = 0, $1685 = 0, $1686 = 0, $1687 = 0, $1688 = 0, $1689 = 0, $169 = 0, $1690 = 0, $1691 = 0, $1692 = 0, $1693 = 0, $1694 = 0, $1695 = 0, $1696 = 0, $1697 = 0, $1698 = 0, $1699 = 0, $17 = 0;
  14564. var $170 = 0, $1700 = 0, $1701 = 0, $1702 = 0, $1703 = 0, $1704 = 0, $1705 = 0, $1706 = 0, $1707 = 0, $1708 = 0, $1709 = 0, $171 = 0, $1710 = 0, $1711 = 0, $1712 = 0, $1713 = 0, $1714 = 0, $1715 = 0, $1716 = 0, $1717 = 0;
  14565. var $1718 = 0, $1719 = 0, $172 = 0, $1720 = 0, $1721 = 0, $1722 = 0, $1723 = 0, $1724 = 0, $1725 = 0, $1726 = 0, $1727 = 0, $1728 = 0, $1729 = 0, $173 = 0, $1730 = 0, $1731 = 0, $1732 = 0, $1733 = 0, $1734 = 0, $1735 = 0;
  14566. var $1736 = 0, $1737 = 0, $1738 = 0, $1739 = 0, $174 = 0, $1740 = 0, $1741 = 0, $1742 = 0, $1743 = 0, $1744 = 0, $1745 = 0, $1746 = 0, $1747 = 0, $1748 = 0, $1749 = 0, $175 = 0, $1750 = 0, $1751 = 0, $1752 = 0, $1753 = 0;
  14567. var $1754 = 0, $1755 = 0, $1756 = 0, $1757 = 0, $1758 = 0, $1759 = 0, $176 = 0, $1760 = 0, $1761 = 0, $1762 = 0, $1763 = 0, $1764 = 0, $1765 = 0, $1766 = 0, $1767 = 0, $1768 = 0, $1769 = 0, $177 = 0, $1770 = 0, $1771 = 0;
  14568. var $1772 = 0, $1773 = 0, $1774 = 0, $1775 = 0, $1776 = 0, $1777 = 0, $1778 = 0, $1779 = 0, $178 = 0, $1780 = 0, $1781 = 0, $1782 = 0, $1783 = 0, $1784 = 0, $1785 = 0, $1786 = 0, $1787 = 0, $1788 = 0, $1789 = 0, $179 = 0;
  14569. var $1790 = 0, $1791 = 0, $1792 = 0, $1793 = 0, $1794 = 0, $1795 = 0, $1796 = 0, $1797 = 0, $1798 = 0, $1799 = 0, $18 = 0, $180 = 0, $1800 = 0, $1801 = 0, $1802 = 0, $1803 = 0, $1804 = 0, $1805 = 0, $1806 = 0, $1807 = 0;
  14570. var $1808 = 0, $1809 = 0, $181 = 0, $1810 = 0, $1811 = 0, $1812 = 0, $1813 = 0, $1814 = 0, $1815 = 0, $1816 = 0, $1817 = 0, $1818 = 0, $1819 = 0, $182 = 0, $1820 = 0, $1821 = 0, $1822 = 0, $1823 = 0, $1824 = 0, $1825 = 0;
  14571. var $1826 = 0, $1827 = 0, $1828 = 0, $1829 = 0, $183 = 0, $1830 = 0, $1831 = 0, $1832 = 0, $1833 = 0, $1834 = 0, $1835 = 0, $1836 = 0, $1837 = 0, $1838 = 0, $1839 = 0, $184 = 0, $1840 = 0, $1841 = 0, $1842 = 0, $1843 = 0;
  14572. var $1844 = 0, $1845 = 0, $1846 = 0, $1847 = 0, $1848 = 0, $1849 = 0, $185 = 0, $1850 = 0, $1851 = 0, $1852 = 0, $1853 = 0, $1854 = 0, $1855 = 0, $1856 = 0, $1857 = 0, $1858 = 0, $1859 = 0, $186 = 0, $1860 = 0, $1861 = 0;
  14573. var $1862 = 0, $1863 = 0, $1864 = 0, $1865 = 0, $1866 = 0, $1867 = 0, $1868 = 0, $1869 = 0, $187 = 0, $1870 = 0, $1871 = 0, $1872 = 0, $1873 = 0, $1874 = 0, $1875 = 0, $1876 = 0, $1877 = 0, $1878 = 0, $188 = 0, $189 = 0;
  14574. var $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0;
  14575. var $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0;
  14576. var $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0;
  14577. var $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0;
  14578. var $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0;
  14579. var $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0;
  14580. var $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0;
  14581. var $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0;
  14582. var $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0;
  14583. var $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0;
  14584. var $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0;
  14585. var $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0;
  14586. var $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0;
  14587. var $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0;
  14588. var $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0;
  14589. var $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0;
  14590. var $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0;
  14591. var $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0;
  14592. var $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0;
  14593. var $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0;
  14594. var $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0;
  14595. var $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0;
  14596. var $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0;
  14597. var $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0;
  14598. var $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0;
  14599. var $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0, $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0;
  14600. var $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0, $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0;
  14601. var $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0, $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0;
  14602. var $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0;
  14603. var $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0;
  14604. var $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0;
  14605. var $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0, $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0;
  14606. var $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0;
  14607. var $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0;
  14608. var $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0, $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0;
  14609. var $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0;
  14610. var $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0;
  14611. var $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0;
  14612. var $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0;
  14613. var $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0;
  14614. var $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0;
  14615. var $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0;
  14616. var $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0, $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0;
  14617. var $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0;
  14618. var $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0, $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, label = 0;
  14619. var sp = 0;
  14620. sp = STACKTOP;
  14621. $0 = (_load_347($a)|0);
  14622. $1 = tempRet0;
  14623. $2 = $0 & 2097151;
  14624. $3 = (($a) + 2|0);
  14625. $4 = (_load_448($3)|0);
  14626. $5 = tempRet0;
  14627. $6 = (_bitshift64Lshr(($4|0),($5|0),5)|0);
  14628. $7 = tempRet0;
  14629. $8 = $6 & 2097151;
  14630. $9 = (($a) + 5|0);
  14631. $10 = (_load_347($9)|0);
  14632. $11 = tempRet0;
  14633. $12 = (_bitshift64Lshr(($10|0),($11|0),2)|0);
  14634. $13 = tempRet0;
  14635. $14 = $12 & 2097151;
  14636. $15 = (($a) + 7|0);
  14637. $16 = (_load_448($15)|0);
  14638. $17 = tempRet0;
  14639. $18 = (_bitshift64Lshr(($16|0),($17|0),7)|0);
  14640. $19 = tempRet0;
  14641. $20 = $18 & 2097151;
  14642. $21 = (($a) + 10|0);
  14643. $22 = (_load_448($21)|0);
  14644. $23 = tempRet0;
  14645. $24 = (_bitshift64Lshr(($22|0),($23|0),4)|0);
  14646. $25 = tempRet0;
  14647. $26 = $24 & 2097151;
  14648. $27 = (($a) + 13|0);
  14649. $28 = (_load_347($27)|0);
  14650. $29 = tempRet0;
  14651. $30 = (_bitshift64Lshr(($28|0),($29|0),1)|0);
  14652. $31 = tempRet0;
  14653. $32 = $30 & 2097151;
  14654. $33 = (($a) + 15|0);
  14655. $34 = (_load_448($33)|0);
  14656. $35 = tempRet0;
  14657. $36 = (_bitshift64Lshr(($34|0),($35|0),6)|0);
  14658. $37 = tempRet0;
  14659. $38 = $36 & 2097151;
  14660. $39 = (($a) + 18|0);
  14661. $40 = (_load_347($39)|0);
  14662. $41 = tempRet0;
  14663. $42 = (_bitshift64Lshr(($40|0),($41|0),3)|0);
  14664. $43 = tempRet0;
  14665. $44 = $42 & 2097151;
  14666. $45 = (($a) + 21|0);
  14667. $46 = (_load_347($45)|0);
  14668. $47 = tempRet0;
  14669. $48 = $46 & 2097151;
  14670. $49 = (($a) + 23|0);
  14671. $50 = (_load_448($49)|0);
  14672. $51 = tempRet0;
  14673. $52 = (_bitshift64Lshr(($50|0),($51|0),5)|0);
  14674. $53 = tempRet0;
  14675. $54 = $52 & 2097151;
  14676. $55 = (($a) + 26|0);
  14677. $56 = (_load_347($55)|0);
  14678. $57 = tempRet0;
  14679. $58 = (_bitshift64Lshr(($56|0),($57|0),2)|0);
  14680. $59 = tempRet0;
  14681. $60 = $58 & 2097151;
  14682. $61 = (($a) + 28|0);
  14683. $62 = (_load_448($61)|0);
  14684. $63 = tempRet0;
  14685. $64 = (_bitshift64Lshr(($62|0),($63|0),7)|0);
  14686. $65 = tempRet0;
  14687. $66 = (_load_347($b)|0);
  14688. $67 = tempRet0;
  14689. $68 = $66 & 2097151;
  14690. $69 = (($b) + 2|0);
  14691. $70 = (_load_448($69)|0);
  14692. $71 = tempRet0;
  14693. $72 = (_bitshift64Lshr(($70|0),($71|0),5)|0);
  14694. $73 = tempRet0;
  14695. $74 = $72 & 2097151;
  14696. $75 = (($b) + 5|0);
  14697. $76 = (_load_347($75)|0);
  14698. $77 = tempRet0;
  14699. $78 = (_bitshift64Lshr(($76|0),($77|0),2)|0);
  14700. $79 = tempRet0;
  14701. $80 = $78 & 2097151;
  14702. $81 = (($b) + 7|0);
  14703. $82 = (_load_448($81)|0);
  14704. $83 = tempRet0;
  14705. $84 = (_bitshift64Lshr(($82|0),($83|0),7)|0);
  14706. $85 = tempRet0;
  14707. $86 = $84 & 2097151;
  14708. $87 = (($b) + 10|0);
  14709. $88 = (_load_448($87)|0);
  14710. $89 = tempRet0;
  14711. $90 = (_bitshift64Lshr(($88|0),($89|0),4)|0);
  14712. $91 = tempRet0;
  14713. $92 = $90 & 2097151;
  14714. $93 = (($b) + 13|0);
  14715. $94 = (_load_347($93)|0);
  14716. $95 = tempRet0;
  14717. $96 = (_bitshift64Lshr(($94|0),($95|0),1)|0);
  14718. $97 = tempRet0;
  14719. $98 = $96 & 2097151;
  14720. $99 = (($b) + 15|0);
  14721. $100 = (_load_448($99)|0);
  14722. $101 = tempRet0;
  14723. $102 = (_bitshift64Lshr(($100|0),($101|0),6)|0);
  14724. $103 = tempRet0;
  14725. $104 = $102 & 2097151;
  14726. $105 = (($b) + 18|0);
  14727. $106 = (_load_347($105)|0);
  14728. $107 = tempRet0;
  14729. $108 = (_bitshift64Lshr(($106|0),($107|0),3)|0);
  14730. $109 = tempRet0;
  14731. $110 = $108 & 2097151;
  14732. $111 = (($b) + 21|0);
  14733. $112 = (_load_347($111)|0);
  14734. $113 = tempRet0;
  14735. $114 = $112 & 2097151;
  14736. $115 = (($b) + 23|0);
  14737. $116 = (_load_448($115)|0);
  14738. $117 = tempRet0;
  14739. $118 = (_bitshift64Lshr(($116|0),($117|0),5)|0);
  14740. $119 = tempRet0;
  14741. $120 = $118 & 2097151;
  14742. $121 = (($b) + 26|0);
  14743. $122 = (_load_347($121)|0);
  14744. $123 = tempRet0;
  14745. $124 = (_bitshift64Lshr(($122|0),($123|0),2)|0);
  14746. $125 = tempRet0;
  14747. $126 = $124 & 2097151;
  14748. $127 = (($b) + 28|0);
  14749. $128 = (_load_448($127)|0);
  14750. $129 = tempRet0;
  14751. $130 = (_bitshift64Lshr(($128|0),($129|0),7)|0);
  14752. $131 = tempRet0;
  14753. $132 = (_load_347($c)|0);
  14754. $133 = tempRet0;
  14755. $134 = $132 & 2097151;
  14756. $135 = (($c) + 2|0);
  14757. $136 = (_load_448($135)|0);
  14758. $137 = tempRet0;
  14759. $138 = (_bitshift64Lshr(($136|0),($137|0),5)|0);
  14760. $139 = tempRet0;
  14761. $140 = $138 & 2097151;
  14762. $141 = (($c) + 5|0);
  14763. $142 = (_load_347($141)|0);
  14764. $143 = tempRet0;
  14765. $144 = (_bitshift64Lshr(($142|0),($143|0),2)|0);
  14766. $145 = tempRet0;
  14767. $146 = $144 & 2097151;
  14768. $147 = (($c) + 7|0);
  14769. $148 = (_load_448($147)|0);
  14770. $149 = tempRet0;
  14771. $150 = (_bitshift64Lshr(($148|0),($149|0),7)|0);
  14772. $151 = tempRet0;
  14773. $152 = $150 & 2097151;
  14774. $153 = (($c) + 10|0);
  14775. $154 = (_load_448($153)|0);
  14776. $155 = tempRet0;
  14777. $156 = (_bitshift64Lshr(($154|0),($155|0),4)|0);
  14778. $157 = tempRet0;
  14779. $158 = $156 & 2097151;
  14780. $159 = (($c) + 13|0);
  14781. $160 = (_load_347($159)|0);
  14782. $161 = tempRet0;
  14783. $162 = (_bitshift64Lshr(($160|0),($161|0),1)|0);
  14784. $163 = tempRet0;
  14785. $164 = $162 & 2097151;
  14786. $165 = (($c) + 15|0);
  14787. $166 = (_load_448($165)|0);
  14788. $167 = tempRet0;
  14789. $168 = (_bitshift64Lshr(($166|0),($167|0),6)|0);
  14790. $169 = tempRet0;
  14791. $170 = $168 & 2097151;
  14792. $171 = (($c) + 18|0);
  14793. $172 = (_load_347($171)|0);
  14794. $173 = tempRet0;
  14795. $174 = (_bitshift64Lshr(($172|0),($173|0),3)|0);
  14796. $175 = tempRet0;
  14797. $176 = $174 & 2097151;
  14798. $177 = (($c) + 21|0);
  14799. $178 = (_load_347($177)|0);
  14800. $179 = tempRet0;
  14801. $180 = $178 & 2097151;
  14802. $181 = (($c) + 23|0);
  14803. $182 = (_load_448($181)|0);
  14804. $183 = tempRet0;
  14805. $184 = (_bitshift64Lshr(($182|0),($183|0),5)|0);
  14806. $185 = tempRet0;
  14807. $186 = $184 & 2097151;
  14808. $187 = (($c) + 26|0);
  14809. $188 = (_load_347($187)|0);
  14810. $189 = tempRet0;
  14811. $190 = (_bitshift64Lshr(($188|0),($189|0),2)|0);
  14812. $191 = tempRet0;
  14813. $192 = $190 & 2097151;
  14814. $193 = (($c) + 28|0);
  14815. $194 = (_load_448($193)|0);
  14816. $195 = tempRet0;
  14817. $196 = (_bitshift64Lshr(($194|0),($195|0),7)|0);
  14818. $197 = tempRet0;
  14819. $198 = (___muldi3(($68|0),0,($2|0),0)|0);
  14820. $199 = tempRet0;
  14821. $200 = (_i64Add(($134|0),0,($198|0),($199|0))|0);
  14822. $201 = tempRet0;
  14823. $202 = (___muldi3(($74|0),0,($2|0),0)|0);
  14824. $203 = tempRet0;
  14825. $204 = (___muldi3(($68|0),0,($8|0),0)|0);
  14826. $205 = tempRet0;
  14827. $206 = (___muldi3(($80|0),0,($2|0),0)|0);
  14828. $207 = tempRet0;
  14829. $208 = (___muldi3(($74|0),0,($8|0),0)|0);
  14830. $209 = tempRet0;
  14831. $210 = (___muldi3(($68|0),0,($14|0),0)|0);
  14832. $211 = tempRet0;
  14833. $212 = (_i64Add(($208|0),($209|0),($210|0),($211|0))|0);
  14834. $213 = tempRet0;
  14835. $214 = (_i64Add(($212|0),($213|0),($206|0),($207|0))|0);
  14836. $215 = tempRet0;
  14837. $216 = (_i64Add(($214|0),($215|0),($146|0),0)|0);
  14838. $217 = tempRet0;
  14839. $218 = (___muldi3(($86|0),0,($2|0),0)|0);
  14840. $219 = tempRet0;
  14841. $220 = (___muldi3(($80|0),0,($8|0),0)|0);
  14842. $221 = tempRet0;
  14843. $222 = (___muldi3(($74|0),0,($14|0),0)|0);
  14844. $223 = tempRet0;
  14845. $224 = (___muldi3(($68|0),0,($20|0),0)|0);
  14846. $225 = tempRet0;
  14847. $226 = (___muldi3(($92|0),0,($2|0),0)|0);
  14848. $227 = tempRet0;
  14849. $228 = (___muldi3(($86|0),0,($8|0),0)|0);
  14850. $229 = tempRet0;
  14851. $230 = (___muldi3(($80|0),0,($14|0),0)|0);
  14852. $231 = tempRet0;
  14853. $232 = (___muldi3(($74|0),0,($20|0),0)|0);
  14854. $233 = tempRet0;
  14855. $234 = (___muldi3(($68|0),0,($26|0),0)|0);
  14856. $235 = tempRet0;
  14857. $236 = (_i64Add(($232|0),($233|0),($234|0),($235|0))|0);
  14858. $237 = tempRet0;
  14859. $238 = (_i64Add(($236|0),($237|0),($230|0),($231|0))|0);
  14860. $239 = tempRet0;
  14861. $240 = (_i64Add(($238|0),($239|0),($228|0),($229|0))|0);
  14862. $241 = tempRet0;
  14863. $242 = (_i64Add(($240|0),($241|0),($226|0),($227|0))|0);
  14864. $243 = tempRet0;
  14865. $244 = (_i64Add(($242|0),($243|0),($158|0),0)|0);
  14866. $245 = tempRet0;
  14867. $246 = (___muldi3(($98|0),0,($2|0),0)|0);
  14868. $247 = tempRet0;
  14869. $248 = (___muldi3(($92|0),0,($8|0),0)|0);
  14870. $249 = tempRet0;
  14871. $250 = (___muldi3(($86|0),0,($14|0),0)|0);
  14872. $251 = tempRet0;
  14873. $252 = (___muldi3(($80|0),0,($20|0),0)|0);
  14874. $253 = tempRet0;
  14875. $254 = (___muldi3(($74|0),0,($26|0),0)|0);
  14876. $255 = tempRet0;
  14877. $256 = (___muldi3(($68|0),0,($32|0),0)|0);
  14878. $257 = tempRet0;
  14879. $258 = (___muldi3(($104|0),0,($2|0),0)|0);
  14880. $259 = tempRet0;
  14881. $260 = (___muldi3(($98|0),0,($8|0),0)|0);
  14882. $261 = tempRet0;
  14883. $262 = (___muldi3(($92|0),0,($14|0),0)|0);
  14884. $263 = tempRet0;
  14885. $264 = (___muldi3(($86|0),0,($20|0),0)|0);
  14886. $265 = tempRet0;
  14887. $266 = (___muldi3(($80|0),0,($26|0),0)|0);
  14888. $267 = tempRet0;
  14889. $268 = (___muldi3(($74|0),0,($32|0),0)|0);
  14890. $269 = tempRet0;
  14891. $270 = (___muldi3(($68|0),0,($38|0),0)|0);
  14892. $271 = tempRet0;
  14893. $272 = (_i64Add(($268|0),($269|0),($270|0),($271|0))|0);
  14894. $273 = tempRet0;
  14895. $274 = (_i64Add(($272|0),($273|0),($266|0),($267|0))|0);
  14896. $275 = tempRet0;
  14897. $276 = (_i64Add(($274|0),($275|0),($264|0),($265|0))|0);
  14898. $277 = tempRet0;
  14899. $278 = (_i64Add(($276|0),($277|0),($262|0),($263|0))|0);
  14900. $279 = tempRet0;
  14901. $280 = (_i64Add(($278|0),($279|0),($260|0),($261|0))|0);
  14902. $281 = tempRet0;
  14903. $282 = (_i64Add(($280|0),($281|0),($258|0),($259|0))|0);
  14904. $283 = tempRet0;
  14905. $284 = (_i64Add(($282|0),($283|0),($170|0),0)|0);
  14906. $285 = tempRet0;
  14907. $286 = (___muldi3(($110|0),0,($2|0),0)|0);
  14908. $287 = tempRet0;
  14909. $288 = (___muldi3(($104|0),0,($8|0),0)|0);
  14910. $289 = tempRet0;
  14911. $290 = (___muldi3(($98|0),0,($14|0),0)|0);
  14912. $291 = tempRet0;
  14913. $292 = (___muldi3(($92|0),0,($20|0),0)|0);
  14914. $293 = tempRet0;
  14915. $294 = (___muldi3(($86|0),0,($26|0),0)|0);
  14916. $295 = tempRet0;
  14917. $296 = (___muldi3(($80|0),0,($32|0),0)|0);
  14918. $297 = tempRet0;
  14919. $298 = (___muldi3(($74|0),0,($38|0),0)|0);
  14920. $299 = tempRet0;
  14921. $300 = (___muldi3(($68|0),0,($44|0),0)|0);
  14922. $301 = tempRet0;
  14923. $302 = (___muldi3(($114|0),0,($2|0),0)|0);
  14924. $303 = tempRet0;
  14925. $304 = (___muldi3(($110|0),0,($8|0),0)|0);
  14926. $305 = tempRet0;
  14927. $306 = (___muldi3(($104|0),0,($14|0),0)|0);
  14928. $307 = tempRet0;
  14929. $308 = (___muldi3(($98|0),0,($20|0),0)|0);
  14930. $309 = tempRet0;
  14931. $310 = (___muldi3(($92|0),0,($26|0),0)|0);
  14932. $311 = tempRet0;
  14933. $312 = (___muldi3(($86|0),0,($32|0),0)|0);
  14934. $313 = tempRet0;
  14935. $314 = (___muldi3(($80|0),0,($38|0),0)|0);
  14936. $315 = tempRet0;
  14937. $316 = (___muldi3(($74|0),0,($44|0),0)|0);
  14938. $317 = tempRet0;
  14939. $318 = (___muldi3(($68|0),0,($48|0),0)|0);
  14940. $319 = tempRet0;
  14941. $320 = (_i64Add(($316|0),($317|0),($318|0),($319|0))|0);
  14942. $321 = tempRet0;
  14943. $322 = (_i64Add(($320|0),($321|0),($314|0),($315|0))|0);
  14944. $323 = tempRet0;
  14945. $324 = (_i64Add(($322|0),($323|0),($312|0),($313|0))|0);
  14946. $325 = tempRet0;
  14947. $326 = (_i64Add(($324|0),($325|0),($310|0),($311|0))|0);
  14948. $327 = tempRet0;
  14949. $328 = (_i64Add(($326|0),($327|0),($308|0),($309|0))|0);
  14950. $329 = tempRet0;
  14951. $330 = (_i64Add(($328|0),($329|0),($306|0),($307|0))|0);
  14952. $331 = tempRet0;
  14953. $332 = (_i64Add(($330|0),($331|0),($302|0),($303|0))|0);
  14954. $333 = tempRet0;
  14955. $334 = (_i64Add(($332|0),($333|0),($304|0),($305|0))|0);
  14956. $335 = tempRet0;
  14957. $336 = (_i64Add(($334|0),($335|0),($180|0),0)|0);
  14958. $337 = tempRet0;
  14959. $338 = (___muldi3(($120|0),0,($2|0),0)|0);
  14960. $339 = tempRet0;
  14961. $340 = (___muldi3(($114|0),0,($8|0),0)|0);
  14962. $341 = tempRet0;
  14963. $342 = (___muldi3(($110|0),0,($14|0),0)|0);
  14964. $343 = tempRet0;
  14965. $344 = (___muldi3(($104|0),0,($20|0),0)|0);
  14966. $345 = tempRet0;
  14967. $346 = (___muldi3(($98|0),0,($26|0),0)|0);
  14968. $347 = tempRet0;
  14969. $348 = (___muldi3(($92|0),0,($32|0),0)|0);
  14970. $349 = tempRet0;
  14971. $350 = (___muldi3(($86|0),0,($38|0),0)|0);
  14972. $351 = tempRet0;
  14973. $352 = (___muldi3(($80|0),0,($44|0),0)|0);
  14974. $353 = tempRet0;
  14975. $354 = (___muldi3(($74|0),0,($48|0),0)|0);
  14976. $355 = tempRet0;
  14977. $356 = (___muldi3(($68|0),0,($54|0),0)|0);
  14978. $357 = tempRet0;
  14979. $358 = (___muldi3(($126|0),0,($2|0),0)|0);
  14980. $359 = tempRet0;
  14981. $360 = (___muldi3(($120|0),0,($8|0),0)|0);
  14982. $361 = tempRet0;
  14983. $362 = (___muldi3(($114|0),0,($14|0),0)|0);
  14984. $363 = tempRet0;
  14985. $364 = (___muldi3(($110|0),0,($20|0),0)|0);
  14986. $365 = tempRet0;
  14987. $366 = (___muldi3(($104|0),0,($26|0),0)|0);
  14988. $367 = tempRet0;
  14989. $368 = (___muldi3(($98|0),0,($32|0),0)|0);
  14990. $369 = tempRet0;
  14991. $370 = (___muldi3(($92|0),0,($38|0),0)|0);
  14992. $371 = tempRet0;
  14993. $372 = (___muldi3(($86|0),0,($44|0),0)|0);
  14994. $373 = tempRet0;
  14995. $374 = (___muldi3(($80|0),0,($48|0),0)|0);
  14996. $375 = tempRet0;
  14997. $376 = (___muldi3(($74|0),0,($54|0),0)|0);
  14998. $377 = tempRet0;
  14999. $378 = (___muldi3(($68|0),0,($60|0),0)|0);
  15000. $379 = tempRet0;
  15001. $380 = (_i64Add(($376|0),($377|0),($378|0),($379|0))|0);
  15002. $381 = tempRet0;
  15003. $382 = (_i64Add(($380|0),($381|0),($374|0),($375|0))|0);
  15004. $383 = tempRet0;
  15005. $384 = (_i64Add(($382|0),($383|0),($372|0),($373|0))|0);
  15006. $385 = tempRet0;
  15007. $386 = (_i64Add(($384|0),($385|0),($370|0),($371|0))|0);
  15008. $387 = tempRet0;
  15009. $388 = (_i64Add(($386|0),($387|0),($368|0),($369|0))|0);
  15010. $389 = tempRet0;
  15011. $390 = (_i64Add(($388|0),($389|0),($366|0),($367|0))|0);
  15012. $391 = tempRet0;
  15013. $392 = (_i64Add(($390|0),($391|0),($362|0),($363|0))|0);
  15014. $393 = tempRet0;
  15015. $394 = (_i64Add(($392|0),($393|0),($364|0),($365|0))|0);
  15016. $395 = tempRet0;
  15017. $396 = (_i64Add(($394|0),($395|0),($360|0),($361|0))|0);
  15018. $397 = tempRet0;
  15019. $398 = (_i64Add(($396|0),($397|0),($358|0),($359|0))|0);
  15020. $399 = tempRet0;
  15021. $400 = (_i64Add(($398|0),($399|0),($192|0),0)|0);
  15022. $401 = tempRet0;
  15023. $402 = (___muldi3(($130|0),($131|0),($2|0),0)|0);
  15024. $403 = tempRet0;
  15025. $404 = (___muldi3(($126|0),0,($8|0),0)|0);
  15026. $405 = tempRet0;
  15027. $406 = (___muldi3(($120|0),0,($14|0),0)|0);
  15028. $407 = tempRet0;
  15029. $408 = (___muldi3(($114|0),0,($20|0),0)|0);
  15030. $409 = tempRet0;
  15031. $410 = (___muldi3(($110|0),0,($26|0),0)|0);
  15032. $411 = tempRet0;
  15033. $412 = (___muldi3(($104|0),0,($32|0),0)|0);
  15034. $413 = tempRet0;
  15035. $414 = (___muldi3(($98|0),0,($38|0),0)|0);
  15036. $415 = tempRet0;
  15037. $416 = (___muldi3(($92|0),0,($44|0),0)|0);
  15038. $417 = tempRet0;
  15039. $418 = (___muldi3(($86|0),0,($48|0),0)|0);
  15040. $419 = tempRet0;
  15041. $420 = (___muldi3(($80|0),0,($54|0),0)|0);
  15042. $421 = tempRet0;
  15043. $422 = (___muldi3(($74|0),0,($60|0),0)|0);
  15044. $423 = tempRet0;
  15045. $424 = (___muldi3(($68|0),0,($64|0),($65|0))|0);
  15046. $425 = tempRet0;
  15047. $426 = (___muldi3(($130|0),($131|0),($8|0),0)|0);
  15048. $427 = tempRet0;
  15049. $428 = (___muldi3(($126|0),0,($14|0),0)|0);
  15050. $429 = tempRet0;
  15051. $430 = (___muldi3(($120|0),0,($20|0),0)|0);
  15052. $431 = tempRet0;
  15053. $432 = (___muldi3(($114|0),0,($26|0),0)|0);
  15054. $433 = tempRet0;
  15055. $434 = (___muldi3(($110|0),0,($32|0),0)|0);
  15056. $435 = tempRet0;
  15057. $436 = (___muldi3(($104|0),0,($38|0),0)|0);
  15058. $437 = tempRet0;
  15059. $438 = (___muldi3(($98|0),0,($44|0),0)|0);
  15060. $439 = tempRet0;
  15061. $440 = (___muldi3(($92|0),0,($48|0),0)|0);
  15062. $441 = tempRet0;
  15063. $442 = (___muldi3(($86|0),0,($54|0),0)|0);
  15064. $443 = tempRet0;
  15065. $444 = (___muldi3(($80|0),0,($60|0),0)|0);
  15066. $445 = tempRet0;
  15067. $446 = (___muldi3(($74|0),0,($64|0),($65|0))|0);
  15068. $447 = tempRet0;
  15069. $448 = (_i64Add(($444|0),($445|0),($446|0),($447|0))|0);
  15070. $449 = tempRet0;
  15071. $450 = (_i64Add(($448|0),($449|0),($442|0),($443|0))|0);
  15072. $451 = tempRet0;
  15073. $452 = (_i64Add(($450|0),($451|0),($440|0),($441|0))|0);
  15074. $453 = tempRet0;
  15075. $454 = (_i64Add(($452|0),($453|0),($438|0),($439|0))|0);
  15076. $455 = tempRet0;
  15077. $456 = (_i64Add(($454|0),($455|0),($436|0),($437|0))|0);
  15078. $457 = tempRet0;
  15079. $458 = (_i64Add(($456|0),($457|0),($432|0),($433|0))|0);
  15080. $459 = tempRet0;
  15081. $460 = (_i64Add(($458|0),($459|0),($434|0),($435|0))|0);
  15082. $461 = tempRet0;
  15083. $462 = (_i64Add(($460|0),($461|0),($430|0),($431|0))|0);
  15084. $463 = tempRet0;
  15085. $464 = (_i64Add(($462|0),($463|0),($428|0),($429|0))|0);
  15086. $465 = tempRet0;
  15087. $466 = (_i64Add(($464|0),($465|0),($426|0),($427|0))|0);
  15088. $467 = tempRet0;
  15089. $468 = (___muldi3(($130|0),($131|0),($14|0),0)|0);
  15090. $469 = tempRet0;
  15091. $470 = (___muldi3(($126|0),0,($20|0),0)|0);
  15092. $471 = tempRet0;
  15093. $472 = (___muldi3(($120|0),0,($26|0),0)|0);
  15094. $473 = tempRet0;
  15095. $474 = (___muldi3(($114|0),0,($32|0),0)|0);
  15096. $475 = tempRet0;
  15097. $476 = (___muldi3(($110|0),0,($38|0),0)|0);
  15098. $477 = tempRet0;
  15099. $478 = (___muldi3(($104|0),0,($44|0),0)|0);
  15100. $479 = tempRet0;
  15101. $480 = (___muldi3(($98|0),0,($48|0),0)|0);
  15102. $481 = tempRet0;
  15103. $482 = (___muldi3(($92|0),0,($54|0),0)|0);
  15104. $483 = tempRet0;
  15105. $484 = (___muldi3(($86|0),0,($60|0),0)|0);
  15106. $485 = tempRet0;
  15107. $486 = (___muldi3(($80|0),0,($64|0),($65|0))|0);
  15108. $487 = tempRet0;
  15109. $488 = (___muldi3(($130|0),($131|0),($20|0),0)|0);
  15110. $489 = tempRet0;
  15111. $490 = (___muldi3(($126|0),0,($26|0),0)|0);
  15112. $491 = tempRet0;
  15113. $492 = (___muldi3(($120|0),0,($32|0),0)|0);
  15114. $493 = tempRet0;
  15115. $494 = (___muldi3(($114|0),0,($38|0),0)|0);
  15116. $495 = tempRet0;
  15117. $496 = (___muldi3(($110|0),0,($44|0),0)|0);
  15118. $497 = tempRet0;
  15119. $498 = (___muldi3(($104|0),0,($48|0),0)|0);
  15120. $499 = tempRet0;
  15121. $500 = (___muldi3(($98|0),0,($54|0),0)|0);
  15122. $501 = tempRet0;
  15123. $502 = (___muldi3(($92|0),0,($60|0),0)|0);
  15124. $503 = tempRet0;
  15125. $504 = (___muldi3(($86|0),0,($64|0),($65|0))|0);
  15126. $505 = tempRet0;
  15127. $506 = (_i64Add(($502|0),($503|0),($504|0),($505|0))|0);
  15128. $507 = tempRet0;
  15129. $508 = (_i64Add(($506|0),($507|0),($500|0),($501|0))|0);
  15130. $509 = tempRet0;
  15131. $510 = (_i64Add(($508|0),($509|0),($498|0),($499|0))|0);
  15132. $511 = tempRet0;
  15133. $512 = (_i64Add(($510|0),($511|0),($494|0),($495|0))|0);
  15134. $513 = tempRet0;
  15135. $514 = (_i64Add(($512|0),($513|0),($496|0),($497|0))|0);
  15136. $515 = tempRet0;
  15137. $516 = (_i64Add(($514|0),($515|0),($492|0),($493|0))|0);
  15138. $517 = tempRet0;
  15139. $518 = (_i64Add(($516|0),($517|0),($490|0),($491|0))|0);
  15140. $519 = tempRet0;
  15141. $520 = (_i64Add(($518|0),($519|0),($488|0),($489|0))|0);
  15142. $521 = tempRet0;
  15143. $522 = (___muldi3(($130|0),($131|0),($26|0),0)|0);
  15144. $523 = tempRet0;
  15145. $524 = (___muldi3(($126|0),0,($32|0),0)|0);
  15146. $525 = tempRet0;
  15147. $526 = (___muldi3(($120|0),0,($38|0),0)|0);
  15148. $527 = tempRet0;
  15149. $528 = (___muldi3(($114|0),0,($44|0),0)|0);
  15150. $529 = tempRet0;
  15151. $530 = (___muldi3(($110|0),0,($48|0),0)|0);
  15152. $531 = tempRet0;
  15153. $532 = (___muldi3(($104|0),0,($54|0),0)|0);
  15154. $533 = tempRet0;
  15155. $534 = (___muldi3(($98|0),0,($60|0),0)|0);
  15156. $535 = tempRet0;
  15157. $536 = (___muldi3(($92|0),0,($64|0),($65|0))|0);
  15158. $537 = tempRet0;
  15159. $538 = (___muldi3(($130|0),($131|0),($32|0),0)|0);
  15160. $539 = tempRet0;
  15161. $540 = (___muldi3(($126|0),0,($38|0),0)|0);
  15162. $541 = tempRet0;
  15163. $542 = (___muldi3(($120|0),0,($44|0),0)|0);
  15164. $543 = tempRet0;
  15165. $544 = (___muldi3(($114|0),0,($48|0),0)|0);
  15166. $545 = tempRet0;
  15167. $546 = (___muldi3(($110|0),0,($54|0),0)|0);
  15168. $547 = tempRet0;
  15169. $548 = (___muldi3(($104|0),0,($60|0),0)|0);
  15170. $549 = tempRet0;
  15171. $550 = (___muldi3(($98|0),0,($64|0),($65|0))|0);
  15172. $551 = tempRet0;
  15173. $552 = (_i64Add(($548|0),($549|0),($550|0),($551|0))|0);
  15174. $553 = tempRet0;
  15175. $554 = (_i64Add(($552|0),($553|0),($544|0),($545|0))|0);
  15176. $555 = tempRet0;
  15177. $556 = (_i64Add(($554|0),($555|0),($546|0),($547|0))|0);
  15178. $557 = tempRet0;
  15179. $558 = (_i64Add(($556|0),($557|0),($542|0),($543|0))|0);
  15180. $559 = tempRet0;
  15181. $560 = (_i64Add(($558|0),($559|0),($540|0),($541|0))|0);
  15182. $561 = tempRet0;
  15183. $562 = (_i64Add(($560|0),($561|0),($538|0),($539|0))|0);
  15184. $563 = tempRet0;
  15185. $564 = (___muldi3(($130|0),($131|0),($38|0),0)|0);
  15186. $565 = tempRet0;
  15187. $566 = (___muldi3(($126|0),0,($44|0),0)|0);
  15188. $567 = tempRet0;
  15189. $568 = (___muldi3(($120|0),0,($48|0),0)|0);
  15190. $569 = tempRet0;
  15191. $570 = (___muldi3(($114|0),0,($54|0),0)|0);
  15192. $571 = tempRet0;
  15193. $572 = (___muldi3(($110|0),0,($60|0),0)|0);
  15194. $573 = tempRet0;
  15195. $574 = (___muldi3(($104|0),0,($64|0),($65|0))|0);
  15196. $575 = tempRet0;
  15197. $576 = (___muldi3(($130|0),($131|0),($44|0),0)|0);
  15198. $577 = tempRet0;
  15199. $578 = (___muldi3(($126|0),0,($48|0),0)|0);
  15200. $579 = tempRet0;
  15201. $580 = (___muldi3(($120|0),0,($54|0),0)|0);
  15202. $581 = tempRet0;
  15203. $582 = (___muldi3(($114|0),0,($60|0),0)|0);
  15204. $583 = tempRet0;
  15205. $584 = (___muldi3(($110|0),0,($64|0),($65|0))|0);
  15206. $585 = tempRet0;
  15207. $586 = (_i64Add(($584|0),($585|0),($582|0),($583|0))|0);
  15208. $587 = tempRet0;
  15209. $588 = (_i64Add(($586|0),($587|0),($580|0),($581|0))|0);
  15210. $589 = tempRet0;
  15211. $590 = (_i64Add(($588|0),($589|0),($578|0),($579|0))|0);
  15212. $591 = tempRet0;
  15213. $592 = (_i64Add(($590|0),($591|0),($576|0),($577|0))|0);
  15214. $593 = tempRet0;
  15215. $594 = (___muldi3(($130|0),($131|0),($48|0),0)|0);
  15216. $595 = tempRet0;
  15217. $596 = (___muldi3(($126|0),0,($54|0),0)|0);
  15218. $597 = tempRet0;
  15219. $598 = (___muldi3(($120|0),0,($60|0),0)|0);
  15220. $599 = tempRet0;
  15221. $600 = (___muldi3(($114|0),0,($64|0),($65|0))|0);
  15222. $601 = tempRet0;
  15223. $602 = (___muldi3(($130|0),($131|0),($54|0),0)|0);
  15224. $603 = tempRet0;
  15225. $604 = (___muldi3(($126|0),0,($60|0),0)|0);
  15226. $605 = tempRet0;
  15227. $606 = (___muldi3(($120|0),0,($64|0),($65|0))|0);
  15228. $607 = tempRet0;
  15229. $608 = (_i64Add(($604|0),($605|0),($606|0),($607|0))|0);
  15230. $609 = tempRet0;
  15231. $610 = (_i64Add(($608|0),($609|0),($602|0),($603|0))|0);
  15232. $611 = tempRet0;
  15233. $612 = (___muldi3(($130|0),($131|0),($60|0),0)|0);
  15234. $613 = tempRet0;
  15235. $614 = (___muldi3(($126|0),0,($64|0),($65|0))|0);
  15236. $615 = tempRet0;
  15237. $616 = (_i64Add(($612|0),($613|0),($614|0),($615|0))|0);
  15238. $617 = tempRet0;
  15239. $618 = (___muldi3(($130|0),($131|0),($64|0),($65|0))|0);
  15240. $619 = tempRet0;
  15241. $620 = (_i64Add(($200|0),($201|0),1048576,0)|0);
  15242. $621 = tempRet0;
  15243. $622 = (_bitshift64Lshr(($620|0),($621|0),21)|0);
  15244. $623 = tempRet0;
  15245. $624 = (_i64Add(($202|0),($203|0),($204|0),($205|0))|0);
  15246. $625 = tempRet0;
  15247. $626 = (_i64Add(($624|0),($625|0),($140|0),0)|0);
  15248. $627 = tempRet0;
  15249. $628 = (_i64Add(($626|0),($627|0),($622|0),($623|0))|0);
  15250. $629 = tempRet0;
  15251. $630 = (_bitshift64Shl(($622|0),($623|0),21)|0);
  15252. $631 = tempRet0;
  15253. $632 = (_i64Subtract(($200|0),($201|0),($630|0),($631|0))|0);
  15254. $633 = tempRet0;
  15255. $634 = (_i64Add(($216|0),($217|0),1048576,0)|0);
  15256. $635 = tempRet0;
  15257. $636 = (_bitshift64Lshr(($634|0),($635|0),21)|0);
  15258. $637 = tempRet0;
  15259. $638 = (_i64Add(($222|0),($223|0),($224|0),($225|0))|0);
  15260. $639 = tempRet0;
  15261. $640 = (_i64Add(($638|0),($639|0),($220|0),($221|0))|0);
  15262. $641 = tempRet0;
  15263. $642 = (_i64Add(($640|0),($641|0),($218|0),($219|0))|0);
  15264. $643 = tempRet0;
  15265. $644 = (_i64Add(($642|0),($643|0),($152|0),0)|0);
  15266. $645 = tempRet0;
  15267. $646 = (_i64Add(($644|0),($645|0),($636|0),($637|0))|0);
  15268. $647 = tempRet0;
  15269. $648 = (_bitshift64Shl(($636|0),($637|0),21)|0);
  15270. $649 = tempRet0;
  15271. $650 = (_i64Add(($244|0),($245|0),1048576,0)|0);
  15272. $651 = tempRet0;
  15273. $652 = (_bitshift64Ashr(($650|0),($651|0),21)|0);
  15274. $653 = tempRet0;
  15275. $654 = (_i64Add(($254|0),($255|0),($256|0),($257|0))|0);
  15276. $655 = tempRet0;
  15277. $656 = (_i64Add(($654|0),($655|0),($252|0),($253|0))|0);
  15278. $657 = tempRet0;
  15279. $658 = (_i64Add(($656|0),($657|0),($250|0),($251|0))|0);
  15280. $659 = tempRet0;
  15281. $660 = (_i64Add(($658|0),($659|0),($248|0),($249|0))|0);
  15282. $661 = tempRet0;
  15283. $662 = (_i64Add(($660|0),($661|0),($246|0),($247|0))|0);
  15284. $663 = tempRet0;
  15285. $664 = (_i64Add(($662|0),($663|0),($164|0),0)|0);
  15286. $665 = tempRet0;
  15287. $666 = (_i64Add(($664|0),($665|0),($652|0),($653|0))|0);
  15288. $667 = tempRet0;
  15289. $668 = (_bitshift64Shl(($652|0),($653|0),21)|0);
  15290. $669 = tempRet0;
  15291. $670 = (_i64Subtract(($244|0),($245|0),($668|0),($669|0))|0);
  15292. $671 = tempRet0;
  15293. $672 = (_i64Add(($284|0),($285|0),1048576,0)|0);
  15294. $673 = tempRet0;
  15295. $674 = (_bitshift64Ashr(($672|0),($673|0),21)|0);
  15296. $675 = tempRet0;
  15297. $676 = (_i64Add(($298|0),($299|0),($300|0),($301|0))|0);
  15298. $677 = tempRet0;
  15299. $678 = (_i64Add(($676|0),($677|0),($296|0),($297|0))|0);
  15300. $679 = tempRet0;
  15301. $680 = (_i64Add(($678|0),($679|0),($294|0),($295|0))|0);
  15302. $681 = tempRet0;
  15303. $682 = (_i64Add(($680|0),($681|0),($292|0),($293|0))|0);
  15304. $683 = tempRet0;
  15305. $684 = (_i64Add(($682|0),($683|0),($290|0),($291|0))|0);
  15306. $685 = tempRet0;
  15307. $686 = (_i64Add(($684|0),($685|0),($288|0),($289|0))|0);
  15308. $687 = tempRet0;
  15309. $688 = (_i64Add(($686|0),($687|0),($286|0),($287|0))|0);
  15310. $689 = tempRet0;
  15311. $690 = (_i64Add(($688|0),($689|0),($176|0),0)|0);
  15312. $691 = tempRet0;
  15313. $692 = (_i64Add(($690|0),($691|0),($674|0),($675|0))|0);
  15314. $693 = tempRet0;
  15315. $694 = (_bitshift64Shl(($674|0),($675|0),21)|0);
  15316. $695 = tempRet0;
  15317. $696 = (_i64Add(($336|0),($337|0),1048576,0)|0);
  15318. $697 = tempRet0;
  15319. $698 = (_bitshift64Ashr(($696|0),($697|0),21)|0);
  15320. $699 = tempRet0;
  15321. $700 = (_i64Add(($354|0),($355|0),($356|0),($357|0))|0);
  15322. $701 = tempRet0;
  15323. $702 = (_i64Add(($700|0),($701|0),($352|0),($353|0))|0);
  15324. $703 = tempRet0;
  15325. $704 = (_i64Add(($702|0),($703|0),($350|0),($351|0))|0);
  15326. $705 = tempRet0;
  15327. $706 = (_i64Add(($704|0),($705|0),($348|0),($349|0))|0);
  15328. $707 = tempRet0;
  15329. $708 = (_i64Add(($706|0),($707|0),($346|0),($347|0))|0);
  15330. $709 = tempRet0;
  15331. $710 = (_i64Add(($708|0),($709|0),($344|0),($345|0))|0);
  15332. $711 = tempRet0;
  15333. $712 = (_i64Add(($710|0),($711|0),($340|0),($341|0))|0);
  15334. $713 = tempRet0;
  15335. $714 = (_i64Add(($712|0),($713|0),($342|0),($343|0))|0);
  15336. $715 = tempRet0;
  15337. $716 = (_i64Add(($714|0),($715|0),($338|0),($339|0))|0);
  15338. $717 = tempRet0;
  15339. $718 = (_i64Add(($716|0),($717|0),($186|0),0)|0);
  15340. $719 = tempRet0;
  15341. $720 = (_i64Add(($718|0),($719|0),($698|0),($699|0))|0);
  15342. $721 = tempRet0;
  15343. $722 = (_bitshift64Shl(($698|0),($699|0),21)|0);
  15344. $723 = tempRet0;
  15345. $724 = (_i64Add(($400|0),($401|0),1048576,0)|0);
  15346. $725 = tempRet0;
  15347. $726 = (_bitshift64Ashr(($724|0),($725|0),21)|0);
  15348. $727 = tempRet0;
  15349. $728 = (_i64Add(($422|0),($423|0),($424|0),($425|0))|0);
  15350. $729 = tempRet0;
  15351. $730 = (_i64Add(($728|0),($729|0),($420|0),($421|0))|0);
  15352. $731 = tempRet0;
  15353. $732 = (_i64Add(($730|0),($731|0),($418|0),($419|0))|0);
  15354. $733 = tempRet0;
  15355. $734 = (_i64Add(($732|0),($733|0),($416|0),($417|0))|0);
  15356. $735 = tempRet0;
  15357. $736 = (_i64Add(($734|0),($735|0),($414|0),($415|0))|0);
  15358. $737 = tempRet0;
  15359. $738 = (_i64Add(($736|0),($737|0),($412|0),($413|0))|0);
  15360. $739 = tempRet0;
  15361. $740 = (_i64Add(($738|0),($739|0),($408|0),($409|0))|0);
  15362. $741 = tempRet0;
  15363. $742 = (_i64Add(($740|0),($741|0),($410|0),($411|0))|0);
  15364. $743 = tempRet0;
  15365. $744 = (_i64Add(($742|0),($743|0),($406|0),($407|0))|0);
  15366. $745 = tempRet0;
  15367. $746 = (_i64Add(($744|0),($745|0),($402|0),($403|0))|0);
  15368. $747 = tempRet0;
  15369. $748 = (_i64Add(($746|0),($747|0),($404|0),($405|0))|0);
  15370. $749 = tempRet0;
  15371. $750 = (_i64Add(($748|0),($749|0),($196|0),($197|0))|0);
  15372. $751 = tempRet0;
  15373. $752 = (_i64Add(($750|0),($751|0),($726|0),($727|0))|0);
  15374. $753 = tempRet0;
  15375. $754 = (_bitshift64Shl(($726|0),($727|0),21)|0);
  15376. $755 = tempRet0;
  15377. $756 = (_i64Add(($466|0),($467|0),1048576,0)|0);
  15378. $757 = tempRet0;
  15379. $758 = (_bitshift64Ashr(($756|0),($757|0),21)|0);
  15380. $759 = tempRet0;
  15381. $760 = (_i64Add(($484|0),($485|0),($486|0),($487|0))|0);
  15382. $761 = tempRet0;
  15383. $762 = (_i64Add(($760|0),($761|0),($482|0),($483|0))|0);
  15384. $763 = tempRet0;
  15385. $764 = (_i64Add(($762|0),($763|0),($480|0),($481|0))|0);
  15386. $765 = tempRet0;
  15387. $766 = (_i64Add(($764|0),($765|0),($478|0),($479|0))|0);
  15388. $767 = tempRet0;
  15389. $768 = (_i64Add(($766|0),($767|0),($474|0),($475|0))|0);
  15390. $769 = tempRet0;
  15391. $770 = (_i64Add(($768|0),($769|0),($476|0),($477|0))|0);
  15392. $771 = tempRet0;
  15393. $772 = (_i64Add(($770|0),($771|0),($472|0),($473|0))|0);
  15394. $773 = tempRet0;
  15395. $774 = (_i64Add(($772|0),($773|0),($470|0),($471|0))|0);
  15396. $775 = tempRet0;
  15397. $776 = (_i64Add(($774|0),($775|0),($468|0),($469|0))|0);
  15398. $777 = tempRet0;
  15399. $778 = (_i64Add(($776|0),($777|0),($758|0),($759|0))|0);
  15400. $779 = tempRet0;
  15401. $780 = (_bitshift64Shl(($758|0),($759|0),21)|0);
  15402. $781 = tempRet0;
  15403. $782 = (_i64Add(($520|0),($521|0),1048576,0)|0);
  15404. $783 = tempRet0;
  15405. $784 = (_bitshift64Ashr(($782|0),($783|0),21)|0);
  15406. $785 = tempRet0;
  15407. $786 = (_i64Add(($534|0),($535|0),($536|0),($537|0))|0);
  15408. $787 = tempRet0;
  15409. $788 = (_i64Add(($786|0),($787|0),($532|0),($533|0))|0);
  15410. $789 = tempRet0;
  15411. $790 = (_i64Add(($788|0),($789|0),($528|0),($529|0))|0);
  15412. $791 = tempRet0;
  15413. $792 = (_i64Add(($790|0),($791|0),($530|0),($531|0))|0);
  15414. $793 = tempRet0;
  15415. $794 = (_i64Add(($792|0),($793|0),($526|0),($527|0))|0);
  15416. $795 = tempRet0;
  15417. $796 = (_i64Add(($794|0),($795|0),($524|0),($525|0))|0);
  15418. $797 = tempRet0;
  15419. $798 = (_i64Add(($796|0),($797|0),($522|0),($523|0))|0);
  15420. $799 = tempRet0;
  15421. $800 = (_i64Add(($798|0),($799|0),($784|0),($785|0))|0);
  15422. $801 = tempRet0;
  15423. $802 = (_bitshift64Shl(($784|0),($785|0),21)|0);
  15424. $803 = tempRet0;
  15425. $804 = (_i64Add(($562|0),($563|0),1048576,0)|0);
  15426. $805 = tempRet0;
  15427. $806 = (_bitshift64Ashr(($804|0),($805|0),21)|0);
  15428. $807 = tempRet0;
  15429. $808 = (_i64Add(($570|0),($571|0),($574|0),($575|0))|0);
  15430. $809 = tempRet0;
  15431. $810 = (_i64Add(($808|0),($809|0),($572|0),($573|0))|0);
  15432. $811 = tempRet0;
  15433. $812 = (_i64Add(($810|0),($811|0),($568|0),($569|0))|0);
  15434. $813 = tempRet0;
  15435. $814 = (_i64Add(($812|0),($813|0),($566|0),($567|0))|0);
  15436. $815 = tempRet0;
  15437. $816 = (_i64Add(($814|0),($815|0),($564|0),($565|0))|0);
  15438. $817 = tempRet0;
  15439. $818 = (_i64Add(($816|0),($817|0),($806|0),($807|0))|0);
  15440. $819 = tempRet0;
  15441. $820 = (_bitshift64Shl(($806|0),($807|0),21)|0);
  15442. $821 = tempRet0;
  15443. $822 = (_i64Add(($592|0),($593|0),1048576,0)|0);
  15444. $823 = tempRet0;
  15445. $824 = (_bitshift64Ashr(($822|0),($823|0),21)|0);
  15446. $825 = tempRet0;
  15447. $826 = (_i64Add(($598|0),($599|0),($600|0),($601|0))|0);
  15448. $827 = tempRet0;
  15449. $828 = (_i64Add(($826|0),($827|0),($596|0),($597|0))|0);
  15450. $829 = tempRet0;
  15451. $830 = (_i64Add(($828|0),($829|0),($594|0),($595|0))|0);
  15452. $831 = tempRet0;
  15453. $832 = (_i64Add(($830|0),($831|0),($824|0),($825|0))|0);
  15454. $833 = tempRet0;
  15455. $834 = (_bitshift64Shl(($824|0),($825|0),21)|0);
  15456. $835 = tempRet0;
  15457. $836 = (_i64Subtract(($592|0),($593|0),($834|0),($835|0))|0);
  15458. $837 = tempRet0;
  15459. $838 = (_i64Add(($610|0),($611|0),1048576,0)|0);
  15460. $839 = tempRet0;
  15461. $840 = (_bitshift64Lshr(($838|0),($839|0),21)|0);
  15462. $841 = tempRet0;
  15463. $842 = (_i64Add(($616|0),($617|0),($840|0),($841|0))|0);
  15464. $843 = tempRet0;
  15465. $844 = (_bitshift64Shl(($840|0),($841|0),21)|0);
  15466. $845 = tempRet0;
  15467. $846 = (_i64Subtract(($610|0),($611|0),($844|0),($845|0))|0);
  15468. $847 = tempRet0;
  15469. $848 = (_i64Add(($618|0),($619|0),1048576,0)|0);
  15470. $849 = tempRet0;
  15471. $850 = (_bitshift64Lshr(($848|0),($849|0),21)|0);
  15472. $851 = tempRet0;
  15473. $852 = (_bitshift64Shl(($850|0),($851|0),21)|0);
  15474. $853 = tempRet0;
  15475. $854 = (_i64Subtract(($618|0),($619|0),($852|0),($853|0))|0);
  15476. $855 = tempRet0;
  15477. $856 = (_i64Add(($628|0),($629|0),1048576,0)|0);
  15478. $857 = tempRet0;
  15479. $858 = (_bitshift64Lshr(($856|0),($857|0),21)|0);
  15480. $859 = tempRet0;
  15481. $860 = (_bitshift64Shl(($858|0),($859|0),21)|0);
  15482. $861 = tempRet0;
  15483. $862 = (_i64Subtract(($628|0),($629|0),($860|0),($861|0))|0);
  15484. $863 = tempRet0;
  15485. $864 = (_i64Add(($646|0),($647|0),1048576,0)|0);
  15486. $865 = tempRet0;
  15487. $866 = (_bitshift64Ashr(($864|0),($865|0),21)|0);
  15488. $867 = tempRet0;
  15489. $868 = (_i64Add(($670|0),($671|0),($866|0),($867|0))|0);
  15490. $869 = tempRet0;
  15491. $870 = (_bitshift64Shl(($866|0),($867|0),21)|0);
  15492. $871 = tempRet0;
  15493. $872 = (_i64Subtract(($646|0),($647|0),($870|0),($871|0))|0);
  15494. $873 = tempRet0;
  15495. $874 = (_i64Add(($666|0),($667|0),1048576,0)|0);
  15496. $875 = tempRet0;
  15497. $876 = (_bitshift64Ashr(($874|0),($875|0),21)|0);
  15498. $877 = tempRet0;
  15499. $878 = (_bitshift64Shl(($876|0),($877|0),21)|0);
  15500. $879 = tempRet0;
  15501. $880 = (_i64Subtract(($666|0),($667|0),($878|0),($879|0))|0);
  15502. $881 = tempRet0;
  15503. $882 = (_i64Add(($692|0),($693|0),1048576,0)|0);
  15504. $883 = tempRet0;
  15505. $884 = (_bitshift64Ashr(($882|0),($883|0),21)|0);
  15506. $885 = tempRet0;
  15507. $886 = (_bitshift64Shl(($884|0),($885|0),21)|0);
  15508. $887 = tempRet0;
  15509. $888 = (_i64Add(($720|0),($721|0),1048576,0)|0);
  15510. $889 = tempRet0;
  15511. $890 = (_bitshift64Ashr(($888|0),($889|0),21)|0);
  15512. $891 = tempRet0;
  15513. $892 = (_bitshift64Shl(($890|0),($891|0),21)|0);
  15514. $893 = tempRet0;
  15515. $894 = (_i64Add(($752|0),($753|0),1048576,0)|0);
  15516. $895 = tempRet0;
  15517. $896 = (_bitshift64Ashr(($894|0),($895|0),21)|0);
  15518. $897 = tempRet0;
  15519. $898 = (_bitshift64Shl(($896|0),($897|0),21)|0);
  15520. $899 = tempRet0;
  15521. $900 = (_i64Add(($778|0),($779|0),1048576,0)|0);
  15522. $901 = tempRet0;
  15523. $902 = (_bitshift64Ashr(($900|0),($901|0),21)|0);
  15524. $903 = tempRet0;
  15525. $904 = (_bitshift64Shl(($902|0),($903|0),21)|0);
  15526. $905 = tempRet0;
  15527. $906 = (_i64Add(($800|0),($801|0),1048576,0)|0);
  15528. $907 = tempRet0;
  15529. $908 = (_bitshift64Ashr(($906|0),($907|0),21)|0);
  15530. $909 = tempRet0;
  15531. $910 = (_bitshift64Shl(($908|0),($909|0),21)|0);
  15532. $911 = tempRet0;
  15533. $912 = (_i64Add(($818|0),($819|0),1048576,0)|0);
  15534. $913 = tempRet0;
  15535. $914 = (_bitshift64Ashr(($912|0),($913|0),21)|0);
  15536. $915 = tempRet0;
  15537. $916 = (_i64Add(($914|0),($915|0),($836|0),($837|0))|0);
  15538. $917 = tempRet0;
  15539. $918 = (_bitshift64Shl(($914|0),($915|0),21)|0);
  15540. $919 = tempRet0;
  15541. $920 = (_i64Subtract(($818|0),($819|0),($918|0),($919|0))|0);
  15542. $921 = tempRet0;
  15543. $922 = (_i64Add(($832|0),($833|0),1048576,0)|0);
  15544. $923 = tempRet0;
  15545. $924 = (_bitshift64Ashr(($922|0),($923|0),21)|0);
  15546. $925 = tempRet0;
  15547. $926 = (_i64Add(($924|0),($925|0),($846|0),($847|0))|0);
  15548. $927 = tempRet0;
  15549. $928 = (_bitshift64Shl(($924|0),($925|0),21)|0);
  15550. $929 = tempRet0;
  15551. $930 = (_i64Subtract(($832|0),($833|0),($928|0),($929|0))|0);
  15552. $931 = tempRet0;
  15553. $932 = (_i64Add(($842|0),($843|0),1048576,0)|0);
  15554. $933 = tempRet0;
  15555. $934 = (_bitshift64Lshr(($932|0),($933|0),21)|0);
  15556. $935 = tempRet0;
  15557. $936 = (_i64Add(($934|0),($935|0),($854|0),($855|0))|0);
  15558. $937 = tempRet0;
  15559. $938 = (_bitshift64Shl(($934|0),($935|0),21)|0);
  15560. $939 = tempRet0;
  15561. $940 = (_i64Subtract(($842|0),($843|0),($938|0),($939|0))|0);
  15562. $941 = tempRet0;
  15563. $942 = (___muldi3(($850|0),($851|0),666643,0)|0);
  15564. $943 = tempRet0;
  15565. $944 = (___muldi3(($850|0),($851|0),470296,0)|0);
  15566. $945 = tempRet0;
  15567. $946 = (___muldi3(($850|0),($851|0),654183,0)|0);
  15568. $947 = tempRet0;
  15569. $948 = (___muldi3(($850|0),($851|0),-997805,-1)|0);
  15570. $949 = tempRet0;
  15571. $950 = (___muldi3(($850|0),($851|0),136657,0)|0);
  15572. $951 = tempRet0;
  15573. $952 = (___muldi3(($850|0),($851|0),-683901,-1)|0);
  15574. $953 = tempRet0;
  15575. $954 = (_i64Add(($952|0),($953|0),($562|0),($563|0))|0);
  15576. $955 = tempRet0;
  15577. $956 = (_i64Subtract(($954|0),($955|0),($820|0),($821|0))|0);
  15578. $957 = tempRet0;
  15579. $958 = (_i64Add(($956|0),($957|0),($908|0),($909|0))|0);
  15580. $959 = tempRet0;
  15581. $960 = (___muldi3(($936|0),($937|0),666643,0)|0);
  15582. $961 = tempRet0;
  15583. $962 = (___muldi3(($936|0),($937|0),470296,0)|0);
  15584. $963 = tempRet0;
  15585. $964 = (___muldi3(($936|0),($937|0),654183,0)|0);
  15586. $965 = tempRet0;
  15587. $966 = (___muldi3(($936|0),($937|0),-997805,-1)|0);
  15588. $967 = tempRet0;
  15589. $968 = (___muldi3(($936|0),($937|0),136657,0)|0);
  15590. $969 = tempRet0;
  15591. $970 = (___muldi3(($936|0),($937|0),-683901,-1)|0);
  15592. $971 = tempRet0;
  15593. $972 = (___muldi3(($940|0),($941|0),666643,0)|0);
  15594. $973 = tempRet0;
  15595. $974 = (___muldi3(($940|0),($941|0),470296,0)|0);
  15596. $975 = tempRet0;
  15597. $976 = (___muldi3(($940|0),($941|0),654183,0)|0);
  15598. $977 = tempRet0;
  15599. $978 = (___muldi3(($940|0),($941|0),-997805,-1)|0);
  15600. $979 = tempRet0;
  15601. $980 = (___muldi3(($940|0),($941|0),136657,0)|0);
  15602. $981 = tempRet0;
  15603. $982 = (___muldi3(($940|0),($941|0),-683901,-1)|0);
  15604. $983 = tempRet0;
  15605. $984 = (_i64Add(($948|0),($949|0),($520|0),($521|0))|0);
  15606. $985 = tempRet0;
  15607. $986 = (_i64Subtract(($984|0),($985|0),($802|0),($803|0))|0);
  15608. $987 = tempRet0;
  15609. $988 = (_i64Add(($986|0),($987|0),($902|0),($903|0))|0);
  15610. $989 = tempRet0;
  15611. $990 = (_i64Add(($988|0),($989|0),($968|0),($969|0))|0);
  15612. $991 = tempRet0;
  15613. $992 = (_i64Add(($990|0),($991|0),($982|0),($983|0))|0);
  15614. $993 = tempRet0;
  15615. $994 = (___muldi3(($926|0),($927|0),666643,0)|0);
  15616. $995 = tempRet0;
  15617. $996 = (___muldi3(($926|0),($927|0),470296,0)|0);
  15618. $997 = tempRet0;
  15619. $998 = (___muldi3(($926|0),($927|0),654183,0)|0);
  15620. $999 = tempRet0;
  15621. $1000 = (___muldi3(($926|0),($927|0),-997805,-1)|0);
  15622. $1001 = tempRet0;
  15623. $1002 = (___muldi3(($926|0),($927|0),136657,0)|0);
  15624. $1003 = tempRet0;
  15625. $1004 = (___muldi3(($926|0),($927|0),-683901,-1)|0);
  15626. $1005 = tempRet0;
  15627. $1006 = (___muldi3(($930|0),($931|0),666643,0)|0);
  15628. $1007 = tempRet0;
  15629. $1008 = (___muldi3(($930|0),($931|0),470296,0)|0);
  15630. $1009 = tempRet0;
  15631. $1010 = (___muldi3(($930|0),($931|0),654183,0)|0);
  15632. $1011 = tempRet0;
  15633. $1012 = (___muldi3(($930|0),($931|0),-997805,-1)|0);
  15634. $1013 = tempRet0;
  15635. $1014 = (___muldi3(($930|0),($931|0),136657,0)|0);
  15636. $1015 = tempRet0;
  15637. $1016 = (___muldi3(($930|0),($931|0),-683901,-1)|0);
  15638. $1017 = tempRet0;
  15639. $1018 = (_i64Add(($944|0),($945|0),($466|0),($467|0))|0);
  15640. $1019 = tempRet0;
  15641. $1020 = (_i64Subtract(($1018|0),($1019|0),($780|0),($781|0))|0);
  15642. $1021 = tempRet0;
  15643. $1022 = (_i64Add(($1020|0),($1021|0),($964|0),($965|0))|0);
  15644. $1023 = tempRet0;
  15645. $1024 = (_i64Add(($1022|0),($1023|0),($1002|0),($1003|0))|0);
  15646. $1025 = tempRet0;
  15647. $1026 = (_i64Add(($1024|0),($1025|0),($978|0),($979|0))|0);
  15648. $1027 = tempRet0;
  15649. $1028 = (_i64Add(($1026|0),($1027|0),($1016|0),($1017|0))|0);
  15650. $1029 = tempRet0;
  15651. $1030 = (_i64Add(($1028|0),($1029|0),($896|0),($897|0))|0);
  15652. $1031 = tempRet0;
  15653. $1032 = (___muldi3(($916|0),($917|0),666643,0)|0);
  15654. $1033 = tempRet0;
  15655. $1034 = (_i64Add(($1032|0),($1033|0),($284|0),($285|0))|0);
  15656. $1035 = tempRet0;
  15657. $1036 = (_i64Subtract(($1034|0),($1035|0),($694|0),($695|0))|0);
  15658. $1037 = tempRet0;
  15659. $1038 = (_i64Add(($1036|0),($1037|0),($876|0),($877|0))|0);
  15660. $1039 = tempRet0;
  15661. $1040 = (___muldi3(($916|0),($917|0),470296,0)|0);
  15662. $1041 = tempRet0;
  15663. $1042 = (___muldi3(($916|0),($917|0),654183,0)|0);
  15664. $1043 = tempRet0;
  15665. $1044 = (_i64Add(($994|0),($995|0),($336|0),($337|0))|0);
  15666. $1045 = tempRet0;
  15667. $1046 = (_i64Add(($1044|0),($1045|0),($1042|0),($1043|0))|0);
  15668. $1047 = tempRet0;
  15669. $1048 = (_i64Add(($1046|0),($1047|0),($1008|0),($1009|0))|0);
  15670. $1049 = tempRet0;
  15671. $1050 = (_i64Subtract(($1048|0),($1049|0),($722|0),($723|0))|0);
  15672. $1051 = tempRet0;
  15673. $1052 = (_i64Add(($1050|0),($1051|0),($884|0),($885|0))|0);
  15674. $1053 = tempRet0;
  15675. $1054 = (___muldi3(($916|0),($917|0),-997805,-1)|0);
  15676. $1055 = tempRet0;
  15677. $1056 = (___muldi3(($916|0),($917|0),136657,0)|0);
  15678. $1057 = tempRet0;
  15679. $1058 = (_i64Add(($998|0),($999|0),($960|0),($961|0))|0);
  15680. $1059 = tempRet0;
  15681. $1060 = (_i64Add(($1058|0),($1059|0),($1056|0),($1057|0))|0);
  15682. $1061 = tempRet0;
  15683. $1062 = (_i64Add(($1060|0),($1061|0),($974|0),($975|0))|0);
  15684. $1063 = tempRet0;
  15685. $1064 = (_i64Add(($1062|0),($1063|0),($1012|0),($1013|0))|0);
  15686. $1065 = tempRet0;
  15687. $1066 = (_i64Add(($1064|0),($1065|0),($400|0),($401|0))|0);
  15688. $1067 = tempRet0;
  15689. $1068 = (_i64Add(($1066|0),($1067|0),($890|0),($891|0))|0);
  15690. $1069 = tempRet0;
  15691. $1070 = (_i64Subtract(($1068|0),($1069|0),($754|0),($755|0))|0);
  15692. $1071 = tempRet0;
  15693. $1072 = (___muldi3(($916|0),($917|0),-683901,-1)|0);
  15694. $1073 = tempRet0;
  15695. $1074 = (_i64Add(($1038|0),($1039|0),1048576,0)|0);
  15696. $1075 = tempRet0;
  15697. $1076 = (_bitshift64Ashr(($1074|0),($1075|0),21)|0);
  15698. $1077 = tempRet0;
  15699. $1078 = (_i64Add(($1006|0),($1007|0),($1040|0),($1041|0))|0);
  15700. $1079 = tempRet0;
  15701. $1080 = (_i64Add(($1078|0),($1079|0),($692|0),($693|0))|0);
  15702. $1081 = tempRet0;
  15703. $1082 = (_i64Subtract(($1080|0),($1081|0),($886|0),($887|0))|0);
  15704. $1083 = tempRet0;
  15705. $1084 = (_i64Add(($1082|0),($1083|0),($1076|0),($1077|0))|0);
  15706. $1085 = tempRet0;
  15707. $1086 = (_bitshift64Shl(($1076|0),($1077|0),21)|0);
  15708. $1087 = tempRet0;
  15709. $1088 = (_i64Add(($1052|0),($1053|0),1048576,0)|0);
  15710. $1089 = tempRet0;
  15711. $1090 = (_bitshift64Ashr(($1088|0),($1089|0),21)|0);
  15712. $1091 = tempRet0;
  15713. $1092 = (_i64Add(($1054|0),($1055|0),($996|0),($997|0))|0);
  15714. $1093 = tempRet0;
  15715. $1094 = (_i64Add(($1092|0),($1093|0),($972|0),($973|0))|0);
  15716. $1095 = tempRet0;
  15717. $1096 = (_i64Add(($1094|0),($1095|0),($1010|0),($1011|0))|0);
  15718. $1097 = tempRet0;
  15719. $1098 = (_i64Add(($1096|0),($1097|0),($720|0),($721|0))|0);
  15720. $1099 = tempRet0;
  15721. $1100 = (_i64Subtract(($1098|0),($1099|0),($892|0),($893|0))|0);
  15722. $1101 = tempRet0;
  15723. $1102 = (_i64Add(($1100|0),($1101|0),($1090|0),($1091|0))|0);
  15724. $1103 = tempRet0;
  15725. $1104 = (_bitshift64Shl(($1090|0),($1091|0),21)|0);
  15726. $1105 = tempRet0;
  15727. $1106 = (_i64Add(($1070|0),($1071|0),1048576,0)|0);
  15728. $1107 = tempRet0;
  15729. $1108 = (_bitshift64Ashr(($1106|0),($1107|0),21)|0);
  15730. $1109 = tempRet0;
  15731. $1110 = (_i64Add(($962|0),($963|0),($942|0),($943|0))|0);
  15732. $1111 = tempRet0;
  15733. $1112 = (_i64Add(($1110|0),($1111|0),($1000|0),($1001|0))|0);
  15734. $1113 = tempRet0;
  15735. $1114 = (_i64Add(($1112|0),($1113|0),($1072|0),($1073|0))|0);
  15736. $1115 = tempRet0;
  15737. $1116 = (_i64Add(($1114|0),($1115|0),($976|0),($977|0))|0);
  15738. $1117 = tempRet0;
  15739. $1118 = (_i64Add(($1116|0),($1117|0),($1014|0),($1015|0))|0);
  15740. $1119 = tempRet0;
  15741. $1120 = (_i64Add(($1118|0),($1119|0),($752|0),($753|0))|0);
  15742. $1121 = tempRet0;
  15743. $1122 = (_i64Subtract(($1120|0),($1121|0),($898|0),($899|0))|0);
  15744. $1123 = tempRet0;
  15745. $1124 = (_i64Add(($1122|0),($1123|0),($1108|0),($1109|0))|0);
  15746. $1125 = tempRet0;
  15747. $1126 = (_bitshift64Shl(($1108|0),($1109|0),21)|0);
  15748. $1127 = tempRet0;
  15749. $1128 = (_i64Add(($1030|0),($1031|0),1048576,0)|0);
  15750. $1129 = tempRet0;
  15751. $1130 = (_bitshift64Ashr(($1128|0),($1129|0),21)|0);
  15752. $1131 = tempRet0;
  15753. $1132 = (_i64Add(($778|0),($779|0),($946|0),($947|0))|0);
  15754. $1133 = tempRet0;
  15755. $1134 = (_i64Subtract(($1132|0),($1133|0),($904|0),($905|0))|0);
  15756. $1135 = tempRet0;
  15757. $1136 = (_i64Add(($1134|0),($1135|0),($966|0),($967|0))|0);
  15758. $1137 = tempRet0;
  15759. $1138 = (_i64Add(($1136|0),($1137|0),($1004|0),($1005|0))|0);
  15760. $1139 = tempRet0;
  15761. $1140 = (_i64Add(($1138|0),($1139|0),($980|0),($981|0))|0);
  15762. $1141 = tempRet0;
  15763. $1142 = (_i64Add(($1140|0),($1141|0),($1130|0),($1131|0))|0);
  15764. $1143 = tempRet0;
  15765. $1144 = (_bitshift64Shl(($1130|0),($1131|0),21)|0);
  15766. $1145 = tempRet0;
  15767. $1146 = (_i64Subtract(($1030|0),($1031|0),($1144|0),($1145|0))|0);
  15768. $1147 = tempRet0;
  15769. $1148 = (_i64Add(($992|0),($993|0),1048576,0)|0);
  15770. $1149 = tempRet0;
  15771. $1150 = (_bitshift64Ashr(($1148|0),($1149|0),21)|0);
  15772. $1151 = tempRet0;
  15773. $1152 = (_i64Add(($800|0),($801|0),($950|0),($951|0))|0);
  15774. $1153 = tempRet0;
  15775. $1154 = (_i64Subtract(($1152|0),($1153|0),($910|0),($911|0))|0);
  15776. $1155 = tempRet0;
  15777. $1156 = (_i64Add(($1154|0),($1155|0),($970|0),($971|0))|0);
  15778. $1157 = tempRet0;
  15779. $1158 = (_i64Add(($1156|0),($1157|0),($1150|0),($1151|0))|0);
  15780. $1159 = tempRet0;
  15781. $1160 = (_bitshift64Shl(($1150|0),($1151|0),21)|0);
  15782. $1161 = tempRet0;
  15783. $1162 = (_i64Subtract(($992|0),($993|0),($1160|0),($1161|0))|0);
  15784. $1163 = tempRet0;
  15785. $1164 = (_i64Add(($958|0),($959|0),1048576,0)|0);
  15786. $1165 = tempRet0;
  15787. $1166 = (_bitshift64Ashr(($1164|0),($1165|0),21)|0);
  15788. $1167 = tempRet0;
  15789. $1168 = (_i64Add(($1166|0),($1167|0),($920|0),($921|0))|0);
  15790. $1169 = tempRet0;
  15791. $1170 = (_bitshift64Shl(($1166|0),($1167|0),21)|0);
  15792. $1171 = tempRet0;
  15793. $1172 = (_i64Subtract(($958|0),($959|0),($1170|0),($1171|0))|0);
  15794. $1173 = tempRet0;
  15795. $1174 = (_i64Add(($1084|0),($1085|0),1048576,0)|0);
  15796. $1175 = tempRet0;
  15797. $1176 = (_bitshift64Ashr(($1174|0),($1175|0),21)|0);
  15798. $1177 = tempRet0;
  15799. $1178 = (_bitshift64Shl(($1176|0),($1177|0),21)|0);
  15800. $1179 = tempRet0;
  15801. $1180 = (_i64Add(($1102|0),($1103|0),1048576,0)|0);
  15802. $1181 = tempRet0;
  15803. $1182 = (_bitshift64Ashr(($1180|0),($1181|0),21)|0);
  15804. $1183 = tempRet0;
  15805. $1184 = (_bitshift64Shl(($1182|0),($1183|0),21)|0);
  15806. $1185 = tempRet0;
  15807. $1186 = (_i64Add(($1124|0),($1125|0),1048576,0)|0);
  15808. $1187 = tempRet0;
  15809. $1188 = (_bitshift64Ashr(($1186|0),($1187|0),21)|0);
  15810. $1189 = tempRet0;
  15811. $1190 = (_i64Add(($1146|0),($1147|0),($1188|0),($1189|0))|0);
  15812. $1191 = tempRet0;
  15813. $1192 = (_bitshift64Shl(($1188|0),($1189|0),21)|0);
  15814. $1193 = tempRet0;
  15815. $1194 = (_i64Subtract(($1124|0),($1125|0),($1192|0),($1193|0))|0);
  15816. $1195 = tempRet0;
  15817. $1196 = (_i64Add(($1142|0),($1143|0),1048576,0)|0);
  15818. $1197 = tempRet0;
  15819. $1198 = (_bitshift64Ashr(($1196|0),($1197|0),21)|0);
  15820. $1199 = tempRet0;
  15821. $1200 = (_i64Add(($1198|0),($1199|0),($1162|0),($1163|0))|0);
  15822. $1201 = tempRet0;
  15823. $1202 = (_bitshift64Shl(($1198|0),($1199|0),21)|0);
  15824. $1203 = tempRet0;
  15825. $1204 = (_i64Subtract(($1142|0),($1143|0),($1202|0),($1203|0))|0);
  15826. $1205 = tempRet0;
  15827. $1206 = (_i64Add(($1158|0),($1159|0),1048576,0)|0);
  15828. $1207 = tempRet0;
  15829. $1208 = (_bitshift64Ashr(($1206|0),($1207|0),21)|0);
  15830. $1209 = tempRet0;
  15831. $1210 = (_i64Add(($1208|0),($1209|0),($1172|0),($1173|0))|0);
  15832. $1211 = tempRet0;
  15833. $1212 = (_bitshift64Shl(($1208|0),($1209|0),21)|0);
  15834. $1213 = tempRet0;
  15835. $1214 = (_i64Subtract(($1158|0),($1159|0),($1212|0),($1213|0))|0);
  15836. $1215 = tempRet0;
  15837. $1216 = (___muldi3(($1168|0),($1169|0),666643,0)|0);
  15838. $1217 = tempRet0;
  15839. $1218 = (_i64Add(($880|0),($881|0),($1216|0),($1217|0))|0);
  15840. $1219 = tempRet0;
  15841. $1220 = (___muldi3(($1168|0),($1169|0),470296,0)|0);
  15842. $1221 = tempRet0;
  15843. $1222 = (___muldi3(($1168|0),($1169|0),654183,0)|0);
  15844. $1223 = tempRet0;
  15845. $1224 = (___muldi3(($1168|0),($1169|0),-997805,-1)|0);
  15846. $1225 = tempRet0;
  15847. $1226 = (___muldi3(($1168|0),($1169|0),136657,0)|0);
  15848. $1227 = tempRet0;
  15849. $1228 = (___muldi3(($1168|0),($1169|0),-683901,-1)|0);
  15850. $1229 = tempRet0;
  15851. $1230 = (_i64Add(($1070|0),($1071|0),($1228|0),($1229|0))|0);
  15852. $1231 = tempRet0;
  15853. $1232 = (_i64Subtract(($1230|0),($1231|0),($1126|0),($1127|0))|0);
  15854. $1233 = tempRet0;
  15855. $1234 = (_i64Add(($1232|0),($1233|0),($1182|0),($1183|0))|0);
  15856. $1235 = tempRet0;
  15857. $1236 = (___muldi3(($1210|0),($1211|0),666643,0)|0);
  15858. $1237 = tempRet0;
  15859. $1238 = (_i64Add(($868|0),($869|0),($1236|0),($1237|0))|0);
  15860. $1239 = tempRet0;
  15861. $1240 = (___muldi3(($1210|0),($1211|0),470296,0)|0);
  15862. $1241 = tempRet0;
  15863. $1242 = (_i64Add(($1218|0),($1219|0),($1240|0),($1241|0))|0);
  15864. $1243 = tempRet0;
  15865. $1244 = (___muldi3(($1210|0),($1211|0),654183,0)|0);
  15866. $1245 = tempRet0;
  15867. $1246 = (___muldi3(($1210|0),($1211|0),-997805,-1)|0);
  15868. $1247 = tempRet0;
  15869. $1248 = (___muldi3(($1210|0),($1211|0),136657,0)|0);
  15870. $1249 = tempRet0;
  15871. $1250 = (___muldi3(($1210|0),($1211|0),-683901,-1)|0);
  15872. $1251 = tempRet0;
  15873. $1252 = (___muldi3(($1214|0),($1215|0),666643,0)|0);
  15874. $1253 = tempRet0;
  15875. $1254 = (_i64Add(($872|0),($873|0),($1252|0),($1253|0))|0);
  15876. $1255 = tempRet0;
  15877. $1256 = (___muldi3(($1214|0),($1215|0),470296,0)|0);
  15878. $1257 = tempRet0;
  15879. $1258 = (_i64Add(($1238|0),($1239|0),($1256|0),($1257|0))|0);
  15880. $1259 = tempRet0;
  15881. $1260 = (___muldi3(($1214|0),($1215|0),654183,0)|0);
  15882. $1261 = tempRet0;
  15883. $1262 = (_i64Add(($1242|0),($1243|0),($1260|0),($1261|0))|0);
  15884. $1263 = tempRet0;
  15885. $1264 = (___muldi3(($1214|0),($1215|0),-997805,-1)|0);
  15886. $1265 = tempRet0;
  15887. $1266 = (___muldi3(($1214|0),($1215|0),136657,0)|0);
  15888. $1267 = tempRet0;
  15889. $1268 = (___muldi3(($1214|0),($1215|0),-683901,-1)|0);
  15890. $1269 = tempRet0;
  15891. $1270 = (_i64Add(($1052|0),($1053|0),($1224|0),($1225|0))|0);
  15892. $1271 = tempRet0;
  15893. $1272 = (_i64Subtract(($1270|0),($1271|0),($1104|0),($1105|0))|0);
  15894. $1273 = tempRet0;
  15895. $1274 = (_i64Add(($1272|0),($1273|0),($1176|0),($1177|0))|0);
  15896. $1275 = tempRet0;
  15897. $1276 = (_i64Add(($1274|0),($1275|0),($1248|0),($1249|0))|0);
  15898. $1277 = tempRet0;
  15899. $1278 = (_i64Add(($1276|0),($1277|0),($1268|0),($1269|0))|0);
  15900. $1279 = tempRet0;
  15901. $1280 = (___muldi3(($1200|0),($1201|0),666643,0)|0);
  15902. $1281 = tempRet0;
  15903. $1282 = (___muldi3(($1200|0),($1201|0),470296,0)|0);
  15904. $1283 = tempRet0;
  15905. $1284 = (___muldi3(($1200|0),($1201|0),654183,0)|0);
  15906. $1285 = tempRet0;
  15907. $1286 = (___muldi3(($1200|0),($1201|0),-997805,-1)|0);
  15908. $1287 = tempRet0;
  15909. $1288 = (___muldi3(($1200|0),($1201|0),136657,0)|0);
  15910. $1289 = tempRet0;
  15911. $1290 = (___muldi3(($1200|0),($1201|0),-683901,-1)|0);
  15912. $1291 = tempRet0;
  15913. $1292 = (___muldi3(($1204|0),($1205|0),666643,0)|0);
  15914. $1293 = tempRet0;
  15915. $1294 = (___muldi3(($1204|0),($1205|0),470296,0)|0);
  15916. $1295 = tempRet0;
  15917. $1296 = (___muldi3(($1204|0),($1205|0),654183,0)|0);
  15918. $1297 = tempRet0;
  15919. $1298 = (___muldi3(($1204|0),($1205|0),-997805,-1)|0);
  15920. $1299 = tempRet0;
  15921. $1300 = (___muldi3(($1204|0),($1205|0),136657,0)|0);
  15922. $1301 = tempRet0;
  15923. $1302 = (___muldi3(($1204|0),($1205|0),-683901,-1)|0);
  15924. $1303 = tempRet0;
  15925. $1304 = (_i64Add(($1038|0),($1039|0),($1220|0),($1221|0))|0);
  15926. $1305 = tempRet0;
  15927. $1306 = (_i64Subtract(($1304|0),($1305|0),($1086|0),($1087|0))|0);
  15928. $1307 = tempRet0;
  15929. $1308 = (_i64Add(($1306|0),($1307|0),($1244|0),($1245|0))|0);
  15930. $1309 = tempRet0;
  15931. $1310 = (_i64Add(($1308|0),($1309|0),($1264|0),($1265|0))|0);
  15932. $1311 = tempRet0;
  15933. $1312 = (_i64Add(($1310|0),($1311|0),($1288|0),($1289|0))|0);
  15934. $1313 = tempRet0;
  15935. $1314 = (_i64Add(($1312|0),($1313|0),($1302|0),($1303|0))|0);
  15936. $1315 = tempRet0;
  15937. $1316 = (___muldi3(($1190|0),($1191|0),666643,0)|0);
  15938. $1317 = tempRet0;
  15939. $1318 = (_i64Add(($1316|0),($1317|0),($632|0),($633|0))|0);
  15940. $1319 = tempRet0;
  15941. $1320 = (___muldi3(($1190|0),($1191|0),470296,0)|0);
  15942. $1321 = tempRet0;
  15943. $1322 = (___muldi3(($1190|0),($1191|0),654183,0)|0);
  15944. $1323 = tempRet0;
  15945. $1324 = (_i64Add(($858|0),($859|0),($216|0),($217|0))|0);
  15946. $1325 = tempRet0;
  15947. $1326 = (_i64Subtract(($1324|0),($1325|0),($648|0),($649|0))|0);
  15948. $1327 = tempRet0;
  15949. $1328 = (_i64Add(($1326|0),($1327|0),($1322|0),($1323|0))|0);
  15950. $1329 = tempRet0;
  15951. $1330 = (_i64Add(($1328|0),($1329|0),($1280|0),($1281|0))|0);
  15952. $1331 = tempRet0;
  15953. $1332 = (_i64Add(($1330|0),($1331|0),($1294|0),($1295|0))|0);
  15954. $1333 = tempRet0;
  15955. $1334 = (___muldi3(($1190|0),($1191|0),-997805,-1)|0);
  15956. $1335 = tempRet0;
  15957. $1336 = (___muldi3(($1190|0),($1191|0),136657,0)|0);
  15958. $1337 = tempRet0;
  15959. $1338 = (_i64Add(($1258|0),($1259|0),($1336|0),($1337|0))|0);
  15960. $1339 = tempRet0;
  15961. $1340 = (_i64Add(($1338|0),($1339|0),($1284|0),($1285|0))|0);
  15962. $1341 = tempRet0;
  15963. $1342 = (_i64Add(($1340|0),($1341|0),($1298|0),($1299|0))|0);
  15964. $1343 = tempRet0;
  15965. $1344 = (___muldi3(($1190|0),($1191|0),-683901,-1)|0);
  15966. $1345 = tempRet0;
  15967. $1346 = (_i64Add(($1318|0),($1319|0),1048576,0)|0);
  15968. $1347 = tempRet0;
  15969. $1348 = (_bitshift64Ashr(($1346|0),($1347|0),21)|0);
  15970. $1349 = tempRet0;
  15971. $1350 = (_i64Add(($862|0),($863|0),($1320|0),($1321|0))|0);
  15972. $1351 = tempRet0;
  15973. $1352 = (_i64Add(($1350|0),($1351|0),($1292|0),($1293|0))|0);
  15974. $1353 = tempRet0;
  15975. $1354 = (_i64Add(($1352|0),($1353|0),($1348|0),($1349|0))|0);
  15976. $1355 = tempRet0;
  15977. $1356 = (_bitshift64Shl(($1348|0),($1349|0),21)|0);
  15978. $1357 = tempRet0;
  15979. $1358 = (_i64Subtract(($1318|0),($1319|0),($1356|0),($1357|0))|0);
  15980. $1359 = tempRet0;
  15981. $1360 = (_i64Add(($1332|0),($1333|0),1048576,0)|0);
  15982. $1361 = tempRet0;
  15983. $1362 = (_bitshift64Ashr(($1360|0),($1361|0),21)|0);
  15984. $1363 = tempRet0;
  15985. $1364 = (_i64Add(($1254|0),($1255|0),($1334|0),($1335|0))|0);
  15986. $1365 = tempRet0;
  15987. $1366 = (_i64Add(($1364|0),($1365|0),($1282|0),($1283|0))|0);
  15988. $1367 = tempRet0;
  15989. $1368 = (_i64Add(($1366|0),($1367|0),($1296|0),($1297|0))|0);
  15990. $1369 = tempRet0;
  15991. $1370 = (_i64Add(($1368|0),($1369|0),($1362|0),($1363|0))|0);
  15992. $1371 = tempRet0;
  15993. $1372 = (_bitshift64Shl(($1362|0),($1363|0),21)|0);
  15994. $1373 = tempRet0;
  15995. $1374 = (_i64Add(($1342|0),($1343|0),1048576,0)|0);
  15996. $1375 = tempRet0;
  15997. $1376 = (_bitshift64Ashr(($1374|0),($1375|0),21)|0);
  15998. $1377 = tempRet0;
  15999. $1378 = (_i64Add(($1262|0),($1263|0),($1344|0),($1345|0))|0);
  16000. $1379 = tempRet0;
  16001. $1380 = (_i64Add(($1378|0),($1379|0),($1286|0),($1287|0))|0);
  16002. $1381 = tempRet0;
  16003. $1382 = (_i64Add(($1380|0),($1381|0),($1300|0),($1301|0))|0);
  16004. $1383 = tempRet0;
  16005. $1384 = (_i64Add(($1382|0),($1383|0),($1376|0),($1377|0))|0);
  16006. $1385 = tempRet0;
  16007. $1386 = (_bitshift64Shl(($1376|0),($1377|0),21)|0);
  16008. $1387 = tempRet0;
  16009. $1388 = (_i64Add(($1314|0),($1315|0),1048576,0)|0);
  16010. $1389 = tempRet0;
  16011. $1390 = (_bitshift64Ashr(($1388|0),($1389|0),21)|0);
  16012. $1391 = tempRet0;
  16013. $1392 = (_i64Add(($1084|0),($1085|0),($1222|0),($1223|0))|0);
  16014. $1393 = tempRet0;
  16015. $1394 = (_i64Add(($1392|0),($1393|0),($1246|0),($1247|0))|0);
  16016. $1395 = tempRet0;
  16017. $1396 = (_i64Subtract(($1394|0),($1395|0),($1178|0),($1179|0))|0);
  16018. $1397 = tempRet0;
  16019. $1398 = (_i64Add(($1396|0),($1397|0),($1266|0),($1267|0))|0);
  16020. $1399 = tempRet0;
  16021. $1400 = (_i64Add(($1398|0),($1399|0),($1290|0),($1291|0))|0);
  16022. $1401 = tempRet0;
  16023. $1402 = (_i64Add(($1400|0),($1401|0),($1390|0),($1391|0))|0);
  16024. $1403 = tempRet0;
  16025. $1404 = (_bitshift64Shl(($1390|0),($1391|0),21)|0);
  16026. $1405 = tempRet0;
  16027. $1406 = (_i64Subtract(($1314|0),($1315|0),($1404|0),($1405|0))|0);
  16028. $1407 = tempRet0;
  16029. $1408 = (_i64Add(($1278|0),($1279|0),1048576,0)|0);
  16030. $1409 = tempRet0;
  16031. $1410 = (_bitshift64Ashr(($1408|0),($1409|0),21)|0);
  16032. $1411 = tempRet0;
  16033. $1412 = (_i64Add(($1102|0),($1103|0),($1226|0),($1227|0))|0);
  16034. $1413 = tempRet0;
  16035. $1414 = (_i64Add(($1412|0),($1413|0),($1250|0),($1251|0))|0);
  16036. $1415 = tempRet0;
  16037. $1416 = (_i64Subtract(($1414|0),($1415|0),($1184|0),($1185|0))|0);
  16038. $1417 = tempRet0;
  16039. $1418 = (_i64Add(($1416|0),($1417|0),($1410|0),($1411|0))|0);
  16040. $1419 = tempRet0;
  16041. $1420 = (_bitshift64Shl(($1410|0),($1411|0),21)|0);
  16042. $1421 = tempRet0;
  16043. $1422 = (_i64Subtract(($1278|0),($1279|0),($1420|0),($1421|0))|0);
  16044. $1423 = tempRet0;
  16045. $1424 = (_i64Add(($1234|0),($1235|0),1048576,0)|0);
  16046. $1425 = tempRet0;
  16047. $1426 = (_bitshift64Ashr(($1424|0),($1425|0),21)|0);
  16048. $1427 = tempRet0;
  16049. $1428 = (_i64Add(($1194|0),($1195|0),($1426|0),($1427|0))|0);
  16050. $1429 = tempRet0;
  16051. $1430 = (_bitshift64Shl(($1426|0),($1427|0),21)|0);
  16052. $1431 = tempRet0;
  16053. $1432 = (_i64Subtract(($1234|0),($1235|0),($1430|0),($1431|0))|0);
  16054. $1433 = tempRet0;
  16055. $1434 = (_i64Add(($1354|0),($1355|0),1048576,0)|0);
  16056. $1435 = tempRet0;
  16057. $1436 = (_bitshift64Ashr(($1434|0),($1435|0),21)|0);
  16058. $1437 = tempRet0;
  16059. $1438 = (_bitshift64Shl(($1436|0),($1437|0),21)|0);
  16060. $1439 = tempRet0;
  16061. $1440 = (_i64Add(($1370|0),($1371|0),1048576,0)|0);
  16062. $1441 = tempRet0;
  16063. $1442 = (_bitshift64Ashr(($1440|0),($1441|0),21)|0);
  16064. $1443 = tempRet0;
  16065. $1444 = (_bitshift64Shl(($1442|0),($1443|0),21)|0);
  16066. $1445 = tempRet0;
  16067. $1446 = (_i64Add(($1384|0),($1385|0),1048576,0)|0);
  16068. $1447 = tempRet0;
  16069. $1448 = (_bitshift64Ashr(($1446|0),($1447|0),21)|0);
  16070. $1449 = tempRet0;
  16071. $1450 = (_i64Add(($1406|0),($1407|0),($1448|0),($1449|0))|0);
  16072. $1451 = tempRet0;
  16073. $1452 = (_bitshift64Shl(($1448|0),($1449|0),21)|0);
  16074. $1453 = tempRet0;
  16075. $1454 = (_i64Add(($1402|0),($1403|0),1048576,0)|0);
  16076. $1455 = tempRet0;
  16077. $1456 = (_bitshift64Ashr(($1454|0),($1455|0),21)|0);
  16078. $1457 = tempRet0;
  16079. $1458 = (_i64Add(($1422|0),($1423|0),($1456|0),($1457|0))|0);
  16080. $1459 = tempRet0;
  16081. $1460 = (_bitshift64Shl(($1456|0),($1457|0),21)|0);
  16082. $1461 = tempRet0;
  16083. $1462 = (_i64Subtract(($1402|0),($1403|0),($1460|0),($1461|0))|0);
  16084. $1463 = tempRet0;
  16085. $1464 = (_i64Add(($1418|0),($1419|0),1048576,0)|0);
  16086. $1465 = tempRet0;
  16087. $1466 = (_bitshift64Ashr(($1464|0),($1465|0),21)|0);
  16088. $1467 = tempRet0;
  16089. $1468 = (_i64Add(($1432|0),($1433|0),($1466|0),($1467|0))|0);
  16090. $1469 = tempRet0;
  16091. $1470 = (_bitshift64Shl(($1466|0),($1467|0),21)|0);
  16092. $1471 = tempRet0;
  16093. $1472 = (_i64Subtract(($1418|0),($1419|0),($1470|0),($1471|0))|0);
  16094. $1473 = tempRet0;
  16095. $1474 = (_i64Add(($1428|0),($1429|0),1048576,0)|0);
  16096. $1475 = tempRet0;
  16097. $1476 = (_bitshift64Ashr(($1474|0),($1475|0),21)|0);
  16098. $1477 = tempRet0;
  16099. $1478 = (_bitshift64Shl(($1476|0),($1477|0),21)|0);
  16100. $1479 = tempRet0;
  16101. $1480 = (_i64Subtract(($1428|0),($1429|0),($1478|0),($1479|0))|0);
  16102. $1481 = tempRet0;
  16103. $1482 = (___muldi3(($1476|0),($1477|0),666643,0)|0);
  16104. $1483 = tempRet0;
  16105. $1484 = (_i64Add(($1358|0),($1359|0),($1482|0),($1483|0))|0);
  16106. $1485 = tempRet0;
  16107. $1486 = (___muldi3(($1476|0),($1477|0),470296,0)|0);
  16108. $1487 = tempRet0;
  16109. $1488 = (___muldi3(($1476|0),($1477|0),654183,0)|0);
  16110. $1489 = tempRet0;
  16111. $1490 = (___muldi3(($1476|0),($1477|0),-997805,-1)|0);
  16112. $1491 = tempRet0;
  16113. $1492 = (___muldi3(($1476|0),($1477|0),136657,0)|0);
  16114. $1493 = tempRet0;
  16115. $1494 = (___muldi3(($1476|0),($1477|0),-683901,-1)|0);
  16116. $1495 = tempRet0;
  16117. $1496 = (_bitshift64Ashr(($1484|0),($1485|0),21)|0);
  16118. $1497 = tempRet0;
  16119. $1498 = (_i64Add(($1486|0),($1487|0),($1354|0),($1355|0))|0);
  16120. $1499 = tempRet0;
  16121. $1500 = (_i64Subtract(($1498|0),($1499|0),($1438|0),($1439|0))|0);
  16122. $1501 = tempRet0;
  16123. $1502 = (_i64Add(($1500|0),($1501|0),($1496|0),($1497|0))|0);
  16124. $1503 = tempRet0;
  16125. $1504 = (_bitshift64Shl(($1496|0),($1497|0),21)|0);
  16126. $1505 = tempRet0;
  16127. $1506 = (_i64Subtract(($1484|0),($1485|0),($1504|0),($1505|0))|0);
  16128. $1507 = tempRet0;
  16129. $1508 = (_bitshift64Ashr(($1502|0),($1503|0),21)|0);
  16130. $1509 = tempRet0;
  16131. $1510 = (_i64Add(($1488|0),($1489|0),($1332|0),($1333|0))|0);
  16132. $1511 = tempRet0;
  16133. $1512 = (_i64Subtract(($1510|0),($1511|0),($1372|0),($1373|0))|0);
  16134. $1513 = tempRet0;
  16135. $1514 = (_i64Add(($1512|0),($1513|0),($1436|0),($1437|0))|0);
  16136. $1515 = tempRet0;
  16137. $1516 = (_i64Add(($1514|0),($1515|0),($1508|0),($1509|0))|0);
  16138. $1517 = tempRet0;
  16139. $1518 = (_bitshift64Shl(($1508|0),($1509|0),21)|0);
  16140. $1519 = tempRet0;
  16141. $1520 = (_i64Subtract(($1502|0),($1503|0),($1518|0),($1519|0))|0);
  16142. $1521 = tempRet0;
  16143. $1522 = (_bitshift64Ashr(($1516|0),($1517|0),21)|0);
  16144. $1523 = tempRet0;
  16145. $1524 = (_i64Add(($1370|0),($1371|0),($1490|0),($1491|0))|0);
  16146. $1525 = tempRet0;
  16147. $1526 = (_i64Subtract(($1524|0),($1525|0),($1444|0),($1445|0))|0);
  16148. $1527 = tempRet0;
  16149. $1528 = (_i64Add(($1526|0),($1527|0),($1522|0),($1523|0))|0);
  16150. $1529 = tempRet0;
  16151. $1530 = (_bitshift64Shl(($1522|0),($1523|0),21)|0);
  16152. $1531 = tempRet0;
  16153. $1532 = (_i64Subtract(($1516|0),($1517|0),($1530|0),($1531|0))|0);
  16154. $1533 = tempRet0;
  16155. $1534 = (_bitshift64Ashr(($1528|0),($1529|0),21)|0);
  16156. $1535 = tempRet0;
  16157. $1536 = (_i64Add(($1492|0),($1493|0),($1342|0),($1343|0))|0);
  16158. $1537 = tempRet0;
  16159. $1538 = (_i64Subtract(($1536|0),($1537|0),($1386|0),($1387|0))|0);
  16160. $1539 = tempRet0;
  16161. $1540 = (_i64Add(($1538|0),($1539|0),($1442|0),($1443|0))|0);
  16162. $1541 = tempRet0;
  16163. $1542 = (_i64Add(($1540|0),($1541|0),($1534|0),($1535|0))|0);
  16164. $1543 = tempRet0;
  16165. $1544 = (_bitshift64Shl(($1534|0),($1535|0),21)|0);
  16166. $1545 = tempRet0;
  16167. $1546 = (_i64Subtract(($1528|0),($1529|0),($1544|0),($1545|0))|0);
  16168. $1547 = tempRet0;
  16169. $1548 = (_bitshift64Ashr(($1542|0),($1543|0),21)|0);
  16170. $1549 = tempRet0;
  16171. $1550 = (_i64Add(($1384|0),($1385|0),($1494|0),($1495|0))|0);
  16172. $1551 = tempRet0;
  16173. $1552 = (_i64Subtract(($1550|0),($1551|0),($1452|0),($1453|0))|0);
  16174. $1553 = tempRet0;
  16175. $1554 = (_i64Add(($1552|0),($1553|0),($1548|0),($1549|0))|0);
  16176. $1555 = tempRet0;
  16177. $1556 = (_bitshift64Shl(($1548|0),($1549|0),21)|0);
  16178. $1557 = tempRet0;
  16179. $1558 = (_i64Subtract(($1542|0),($1543|0),($1556|0),($1557|0))|0);
  16180. $1559 = tempRet0;
  16181. $1560 = (_bitshift64Ashr(($1554|0),($1555|0),21)|0);
  16182. $1561 = tempRet0;
  16183. $1562 = (_i64Add(($1450|0),($1451|0),($1560|0),($1561|0))|0);
  16184. $1563 = tempRet0;
  16185. $1564 = (_bitshift64Shl(($1560|0),($1561|0),21)|0);
  16186. $1565 = tempRet0;
  16187. $1566 = (_i64Subtract(($1554|0),($1555|0),($1564|0),($1565|0))|0);
  16188. $1567 = tempRet0;
  16189. $1568 = (_bitshift64Ashr(($1562|0),($1563|0),21)|0);
  16190. $1569 = tempRet0;
  16191. $1570 = (_i64Add(($1568|0),($1569|0),($1462|0),($1463|0))|0);
  16192. $1571 = tempRet0;
  16193. $1572 = (_bitshift64Shl(($1568|0),($1569|0),21)|0);
  16194. $1573 = tempRet0;
  16195. $1574 = (_i64Subtract(($1562|0),($1563|0),($1572|0),($1573|0))|0);
  16196. $1575 = tempRet0;
  16197. $1576 = (_bitshift64Ashr(($1570|0),($1571|0),21)|0);
  16198. $1577 = tempRet0;
  16199. $1578 = (_i64Add(($1458|0),($1459|0),($1576|0),($1577|0))|0);
  16200. $1579 = tempRet0;
  16201. $1580 = (_bitshift64Shl(($1576|0),($1577|0),21)|0);
  16202. $1581 = tempRet0;
  16203. $1582 = (_i64Subtract(($1570|0),($1571|0),($1580|0),($1581|0))|0);
  16204. $1583 = tempRet0;
  16205. $1584 = (_bitshift64Ashr(($1578|0),($1579|0),21)|0);
  16206. $1585 = tempRet0;
  16207. $1586 = (_i64Add(($1584|0),($1585|0),($1472|0),($1473|0))|0);
  16208. $1587 = tempRet0;
  16209. $1588 = (_bitshift64Shl(($1584|0),($1585|0),21)|0);
  16210. $1589 = tempRet0;
  16211. $1590 = (_i64Subtract(($1578|0),($1579|0),($1588|0),($1589|0))|0);
  16212. $1591 = tempRet0;
  16213. $1592 = (_bitshift64Ashr(($1586|0),($1587|0),21)|0);
  16214. $1593 = tempRet0;
  16215. $1594 = (_i64Add(($1468|0),($1469|0),($1592|0),($1593|0))|0);
  16216. $1595 = tempRet0;
  16217. $1596 = (_bitshift64Shl(($1592|0),($1593|0),21)|0);
  16218. $1597 = tempRet0;
  16219. $1598 = (_i64Subtract(($1586|0),($1587|0),($1596|0),($1597|0))|0);
  16220. $1599 = tempRet0;
  16221. $1600 = (_bitshift64Ashr(($1594|0),($1595|0),21)|0);
  16222. $1601 = tempRet0;
  16223. $1602 = (_i64Add(($1600|0),($1601|0),($1480|0),($1481|0))|0);
  16224. $1603 = tempRet0;
  16225. $1604 = (_bitshift64Shl(($1600|0),($1601|0),21)|0);
  16226. $1605 = tempRet0;
  16227. $1606 = (_i64Subtract(($1594|0),($1595|0),($1604|0),($1605|0))|0);
  16228. $1607 = tempRet0;
  16229. $1608 = (_bitshift64Ashr(($1602|0),($1603|0),21)|0);
  16230. $1609 = tempRet0;
  16231. $1610 = (_bitshift64Shl(($1608|0),($1609|0),21)|0);
  16232. $1611 = tempRet0;
  16233. $1612 = (_i64Subtract(($1602|0),($1603|0),($1610|0),($1611|0))|0);
  16234. $1613 = tempRet0;
  16235. $1614 = (___muldi3(($1608|0),($1609|0),666643,0)|0);
  16236. $1615 = tempRet0;
  16237. $1616 = (_i64Add(($1614|0),($1615|0),($1506|0),($1507|0))|0);
  16238. $1617 = tempRet0;
  16239. $1618 = (___muldi3(($1608|0),($1609|0),470296,0)|0);
  16240. $1619 = tempRet0;
  16241. $1620 = (_i64Add(($1520|0),($1521|0),($1618|0),($1619|0))|0);
  16242. $1621 = tempRet0;
  16243. $1622 = (___muldi3(($1608|0),($1609|0),654183,0)|0);
  16244. $1623 = tempRet0;
  16245. $1624 = (_i64Add(($1532|0),($1533|0),($1622|0),($1623|0))|0);
  16246. $1625 = tempRet0;
  16247. $1626 = (___muldi3(($1608|0),($1609|0),-997805,-1)|0);
  16248. $1627 = tempRet0;
  16249. $1628 = (_i64Add(($1546|0),($1547|0),($1626|0),($1627|0))|0);
  16250. $1629 = tempRet0;
  16251. $1630 = (___muldi3(($1608|0),($1609|0),136657,0)|0);
  16252. $1631 = tempRet0;
  16253. $1632 = (_i64Add(($1558|0),($1559|0),($1630|0),($1631|0))|0);
  16254. $1633 = tempRet0;
  16255. $1634 = (___muldi3(($1608|0),($1609|0),-683901,-1)|0);
  16256. $1635 = tempRet0;
  16257. $1636 = (_i64Add(($1566|0),($1567|0),($1634|0),($1635|0))|0);
  16258. $1637 = tempRet0;
  16259. $1638 = (_bitshift64Ashr(($1616|0),($1617|0),21)|0);
  16260. $1639 = tempRet0;
  16261. $1640 = (_i64Add(($1620|0),($1621|0),($1638|0),($1639|0))|0);
  16262. $1641 = tempRet0;
  16263. $1642 = (_bitshift64Shl(($1638|0),($1639|0),21)|0);
  16264. $1643 = tempRet0;
  16265. $1644 = (_i64Subtract(($1616|0),($1617|0),($1642|0),($1643|0))|0);
  16266. $1645 = tempRet0;
  16267. $1646 = (_bitshift64Ashr(($1640|0),($1641|0),21)|0);
  16268. $1647 = tempRet0;
  16269. $1648 = (_i64Add(($1624|0),($1625|0),($1646|0),($1647|0))|0);
  16270. $1649 = tempRet0;
  16271. $1650 = (_bitshift64Shl(($1646|0),($1647|0),21)|0);
  16272. $1651 = tempRet0;
  16273. $1652 = (_i64Subtract(($1640|0),($1641|0),($1650|0),($1651|0))|0);
  16274. $1653 = tempRet0;
  16275. $1654 = (_bitshift64Ashr(($1648|0),($1649|0),21)|0);
  16276. $1655 = tempRet0;
  16277. $1656 = (_i64Add(($1628|0),($1629|0),($1654|0),($1655|0))|0);
  16278. $1657 = tempRet0;
  16279. $1658 = (_bitshift64Shl(($1654|0),($1655|0),21)|0);
  16280. $1659 = tempRet0;
  16281. $1660 = (_i64Subtract(($1648|0),($1649|0),($1658|0),($1659|0))|0);
  16282. $1661 = tempRet0;
  16283. $1662 = (_bitshift64Ashr(($1656|0),($1657|0),21)|0);
  16284. $1663 = tempRet0;
  16285. $1664 = (_i64Add(($1632|0),($1633|0),($1662|0),($1663|0))|0);
  16286. $1665 = tempRet0;
  16287. $1666 = (_bitshift64Shl(($1662|0),($1663|0),21)|0);
  16288. $1667 = tempRet0;
  16289. $1668 = (_i64Subtract(($1656|0),($1657|0),($1666|0),($1667|0))|0);
  16290. $1669 = tempRet0;
  16291. $1670 = (_bitshift64Ashr(($1664|0),($1665|0),21)|0);
  16292. $1671 = tempRet0;
  16293. $1672 = (_i64Add(($1636|0),($1637|0),($1670|0),($1671|0))|0);
  16294. $1673 = tempRet0;
  16295. $1674 = (_bitshift64Shl(($1670|0),($1671|0),21)|0);
  16296. $1675 = tempRet0;
  16297. $1676 = (_i64Subtract(($1664|0),($1665|0),($1674|0),($1675|0))|0);
  16298. $1677 = tempRet0;
  16299. $1678 = (_bitshift64Ashr(($1672|0),($1673|0),21)|0);
  16300. $1679 = tempRet0;
  16301. $1680 = (_i64Add(($1678|0),($1679|0),($1574|0),($1575|0))|0);
  16302. $1681 = tempRet0;
  16303. $1682 = (_bitshift64Shl(($1678|0),($1679|0),21)|0);
  16304. $1683 = tempRet0;
  16305. $1684 = (_i64Subtract(($1672|0),($1673|0),($1682|0),($1683|0))|0);
  16306. $1685 = tempRet0;
  16307. $1686 = (_bitshift64Ashr(($1680|0),($1681|0),21)|0);
  16308. $1687 = tempRet0;
  16309. $1688 = (_i64Add(($1686|0),($1687|0),($1582|0),($1583|0))|0);
  16310. $1689 = tempRet0;
  16311. $1690 = (_bitshift64Shl(($1686|0),($1687|0),21)|0);
  16312. $1691 = tempRet0;
  16313. $1692 = (_i64Subtract(($1680|0),($1681|0),($1690|0),($1691|0))|0);
  16314. $1693 = tempRet0;
  16315. $1694 = (_bitshift64Ashr(($1688|0),($1689|0),21)|0);
  16316. $1695 = tempRet0;
  16317. $1696 = (_i64Add(($1694|0),($1695|0),($1590|0),($1591|0))|0);
  16318. $1697 = tempRet0;
  16319. $1698 = (_bitshift64Shl(($1694|0),($1695|0),21)|0);
  16320. $1699 = tempRet0;
  16321. $1700 = (_i64Subtract(($1688|0),($1689|0),($1698|0),($1699|0))|0);
  16322. $1701 = tempRet0;
  16323. $1702 = (_bitshift64Ashr(($1696|0),($1697|0),21)|0);
  16324. $1703 = tempRet0;
  16325. $1704 = (_i64Add(($1702|0),($1703|0),($1598|0),($1599|0))|0);
  16326. $1705 = tempRet0;
  16327. $1706 = (_bitshift64Shl(($1702|0),($1703|0),21)|0);
  16328. $1707 = tempRet0;
  16329. $1708 = (_i64Subtract(($1696|0),($1697|0),($1706|0),($1707|0))|0);
  16330. $1709 = tempRet0;
  16331. $1710 = (_bitshift64Ashr(($1704|0),($1705|0),21)|0);
  16332. $1711 = tempRet0;
  16333. $1712 = (_i64Add(($1710|0),($1711|0),($1606|0),($1607|0))|0);
  16334. $1713 = tempRet0;
  16335. $1714 = (_bitshift64Shl(($1710|0),($1711|0),21)|0);
  16336. $1715 = tempRet0;
  16337. $1716 = (_i64Subtract(($1704|0),($1705|0),($1714|0),($1715|0))|0);
  16338. $1717 = tempRet0;
  16339. $1718 = (_bitshift64Ashr(($1712|0),($1713|0),21)|0);
  16340. $1719 = tempRet0;
  16341. $1720 = (_i64Add(($1718|0),($1719|0),($1612|0),($1613|0))|0);
  16342. $1721 = tempRet0;
  16343. $1722 = (_bitshift64Shl(($1718|0),($1719|0),21)|0);
  16344. $1723 = tempRet0;
  16345. $1724 = (_i64Subtract(($1712|0),($1713|0),($1722|0),($1723|0))|0);
  16346. $1725 = tempRet0;
  16347. $1726 = $1644&255;
  16348. HEAP8[$s>>0] = $1726;
  16349. $1727 = (_bitshift64Lshr(($1644|0),($1645|0),8)|0);
  16350. $1728 = tempRet0;
  16351. $1729 = $1727&255;
  16352. $1730 = (($s) + 1|0);
  16353. HEAP8[$1730>>0] = $1729;
  16354. $1731 = (_bitshift64Lshr(($1644|0),($1645|0),16)|0);
  16355. $1732 = tempRet0;
  16356. $1733 = (_bitshift64Shl(($1652|0),($1653|0),5)|0);
  16357. $1734 = tempRet0;
  16358. $1735 = $1733 | $1731;
  16359. $1734 | $1732;
  16360. $1736 = $1735&255;
  16361. $1737 = (($s) + 2|0);
  16362. HEAP8[$1737>>0] = $1736;
  16363. $1738 = (_bitshift64Lshr(($1652|0),($1653|0),3)|0);
  16364. $1739 = tempRet0;
  16365. $1740 = $1738&255;
  16366. $1741 = (($s) + 3|0);
  16367. HEAP8[$1741>>0] = $1740;
  16368. $1742 = (_bitshift64Lshr(($1652|0),($1653|0),11)|0);
  16369. $1743 = tempRet0;
  16370. $1744 = $1742&255;
  16371. $1745 = (($s) + 4|0);
  16372. HEAP8[$1745>>0] = $1744;
  16373. $1746 = (_bitshift64Lshr(($1652|0),($1653|0),19)|0);
  16374. $1747 = tempRet0;
  16375. $1748 = (_bitshift64Shl(($1660|0),($1661|0),2)|0);
  16376. $1749 = tempRet0;
  16377. $1750 = $1748 | $1746;
  16378. $1749 | $1747;
  16379. $1751 = $1750&255;
  16380. $1752 = (($s) + 5|0);
  16381. HEAP8[$1752>>0] = $1751;
  16382. $1753 = (_bitshift64Lshr(($1660|0),($1661|0),6)|0);
  16383. $1754 = tempRet0;
  16384. $1755 = $1753&255;
  16385. $1756 = (($s) + 6|0);
  16386. HEAP8[$1756>>0] = $1755;
  16387. $1757 = (_bitshift64Lshr(($1660|0),($1661|0),14)|0);
  16388. $1758 = tempRet0;
  16389. $1759 = (_bitshift64Shl(($1668|0),($1669|0),7)|0);
  16390. $1760 = tempRet0;
  16391. $1761 = $1759 | $1757;
  16392. $1760 | $1758;
  16393. $1762 = $1761&255;
  16394. $1763 = (($s) + 7|0);
  16395. HEAP8[$1763>>0] = $1762;
  16396. $1764 = (_bitshift64Lshr(($1668|0),($1669|0),1)|0);
  16397. $1765 = tempRet0;
  16398. $1766 = $1764&255;
  16399. $1767 = (($s) + 8|0);
  16400. HEAP8[$1767>>0] = $1766;
  16401. $1768 = (_bitshift64Lshr(($1668|0),($1669|0),9)|0);
  16402. $1769 = tempRet0;
  16403. $1770 = $1768&255;
  16404. $1771 = (($s) + 9|0);
  16405. HEAP8[$1771>>0] = $1770;
  16406. $1772 = (_bitshift64Lshr(($1668|0),($1669|0),17)|0);
  16407. $1773 = tempRet0;
  16408. $1774 = (_bitshift64Shl(($1676|0),($1677|0),4)|0);
  16409. $1775 = tempRet0;
  16410. $1776 = $1774 | $1772;
  16411. $1775 | $1773;
  16412. $1777 = $1776&255;
  16413. $1778 = (($s) + 10|0);
  16414. HEAP8[$1778>>0] = $1777;
  16415. $1779 = (_bitshift64Lshr(($1676|0),($1677|0),4)|0);
  16416. $1780 = tempRet0;
  16417. $1781 = $1779&255;
  16418. $1782 = (($s) + 11|0);
  16419. HEAP8[$1782>>0] = $1781;
  16420. $1783 = (_bitshift64Lshr(($1676|0),($1677|0),12)|0);
  16421. $1784 = tempRet0;
  16422. $1785 = $1783&255;
  16423. $1786 = (($s) + 12|0);
  16424. HEAP8[$1786>>0] = $1785;
  16425. $1787 = (_bitshift64Lshr(($1676|0),($1677|0),20)|0);
  16426. $1788 = tempRet0;
  16427. $1789 = (_bitshift64Shl(($1684|0),($1685|0),1)|0);
  16428. $1790 = tempRet0;
  16429. $1791 = $1789 | $1787;
  16430. $1790 | $1788;
  16431. $1792 = $1791&255;
  16432. $1793 = (($s) + 13|0);
  16433. HEAP8[$1793>>0] = $1792;
  16434. $1794 = (_bitshift64Lshr(($1684|0),($1685|0),7)|0);
  16435. $1795 = tempRet0;
  16436. $1796 = $1794&255;
  16437. $1797 = (($s) + 14|0);
  16438. HEAP8[$1797>>0] = $1796;
  16439. $1798 = (_bitshift64Lshr(($1684|0),($1685|0),15)|0);
  16440. $1799 = tempRet0;
  16441. $1800 = (_bitshift64Shl(($1692|0),($1693|0),6)|0);
  16442. $1801 = tempRet0;
  16443. $1802 = $1800 | $1798;
  16444. $1801 | $1799;
  16445. $1803 = $1802&255;
  16446. $1804 = (($s) + 15|0);
  16447. HEAP8[$1804>>0] = $1803;
  16448. $1805 = (_bitshift64Lshr(($1692|0),($1693|0),2)|0);
  16449. $1806 = tempRet0;
  16450. $1807 = $1805&255;
  16451. $1808 = (($s) + 16|0);
  16452. HEAP8[$1808>>0] = $1807;
  16453. $1809 = (_bitshift64Lshr(($1692|0),($1693|0),10)|0);
  16454. $1810 = tempRet0;
  16455. $1811 = $1809&255;
  16456. $1812 = (($s) + 17|0);
  16457. HEAP8[$1812>>0] = $1811;
  16458. $1813 = (_bitshift64Lshr(($1692|0),($1693|0),18)|0);
  16459. $1814 = tempRet0;
  16460. $1815 = (_bitshift64Shl(($1700|0),($1701|0),3)|0);
  16461. $1816 = tempRet0;
  16462. $1817 = $1815 | $1813;
  16463. $1816 | $1814;
  16464. $1818 = $1817&255;
  16465. $1819 = (($s) + 18|0);
  16466. HEAP8[$1819>>0] = $1818;
  16467. $1820 = (_bitshift64Lshr(($1700|0),($1701|0),5)|0);
  16468. $1821 = tempRet0;
  16469. $1822 = $1820&255;
  16470. $1823 = (($s) + 19|0);
  16471. HEAP8[$1823>>0] = $1822;
  16472. $1824 = (_bitshift64Lshr(($1700|0),($1701|0),13)|0);
  16473. $1825 = tempRet0;
  16474. $1826 = $1824&255;
  16475. $1827 = (($s) + 20|0);
  16476. HEAP8[$1827>>0] = $1826;
  16477. $1828 = $1708&255;
  16478. $1829 = (($s) + 21|0);
  16479. HEAP8[$1829>>0] = $1828;
  16480. $1830 = (_bitshift64Lshr(($1708|0),($1709|0),8)|0);
  16481. $1831 = tempRet0;
  16482. $1832 = $1830&255;
  16483. $1833 = (($s) + 22|0);
  16484. HEAP8[$1833>>0] = $1832;
  16485. $1834 = (_bitshift64Lshr(($1708|0),($1709|0),16)|0);
  16486. $1835 = tempRet0;
  16487. $1836 = (_bitshift64Shl(($1716|0),($1717|0),5)|0);
  16488. $1837 = tempRet0;
  16489. $1838 = $1836 | $1834;
  16490. $1837 | $1835;
  16491. $1839 = $1838&255;
  16492. $1840 = (($s) + 23|0);
  16493. HEAP8[$1840>>0] = $1839;
  16494. $1841 = (_bitshift64Lshr(($1716|0),($1717|0),3)|0);
  16495. $1842 = tempRet0;
  16496. $1843 = $1841&255;
  16497. $1844 = (($s) + 24|0);
  16498. HEAP8[$1844>>0] = $1843;
  16499. $1845 = (_bitshift64Lshr(($1716|0),($1717|0),11)|0);
  16500. $1846 = tempRet0;
  16501. $1847 = $1845&255;
  16502. $1848 = (($s) + 25|0);
  16503. HEAP8[$1848>>0] = $1847;
  16504. $1849 = (_bitshift64Lshr(($1716|0),($1717|0),19)|0);
  16505. $1850 = tempRet0;
  16506. $1851 = (_bitshift64Shl(($1724|0),($1725|0),2)|0);
  16507. $1852 = tempRet0;
  16508. $1853 = $1851 | $1849;
  16509. $1852 | $1850;
  16510. $1854 = $1853&255;
  16511. $1855 = (($s) + 26|0);
  16512. HEAP8[$1855>>0] = $1854;
  16513. $1856 = (_bitshift64Lshr(($1724|0),($1725|0),6)|0);
  16514. $1857 = tempRet0;
  16515. $1858 = $1856&255;
  16516. $1859 = (($s) + 27|0);
  16517. HEAP8[$1859>>0] = $1858;
  16518. $1860 = (_bitshift64Lshr(($1724|0),($1725|0),14)|0);
  16519. $1861 = tempRet0;
  16520. $1862 = (_bitshift64Shl(($1720|0),($1721|0),7)|0);
  16521. $1863 = tempRet0;
  16522. $1864 = $1860 | $1862;
  16523. $1861 | $1863;
  16524. $1865 = $1864&255;
  16525. $1866 = (($s) + 28|0);
  16526. HEAP8[$1866>>0] = $1865;
  16527. $1867 = (_bitshift64Lshr(($1720|0),($1721|0),1)|0);
  16528. $1868 = tempRet0;
  16529. $1869 = $1867&255;
  16530. $1870 = (($s) + 29|0);
  16531. HEAP8[$1870>>0] = $1869;
  16532. $1871 = (_bitshift64Lshr(($1720|0),($1721|0),9)|0);
  16533. $1872 = tempRet0;
  16534. $1873 = $1871&255;
  16535. $1874 = (($s) + 30|0);
  16536. HEAP8[$1874>>0] = $1873;
  16537. $1875 = (_bitshift64Lshr(($1720|0),($1721|0),17)|0);
  16538. $1876 = tempRet0;
  16539. $1877 = $1875&255;
  16540. $1878 = (($s) + 31|0);
  16541. HEAP8[$1878>>0] = $1877;
  16542. STACKTOP = sp;return;
  16543. }
  16544. function _load_347($in) {
  16545. $in = $in|0;
  16546. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  16547. sp = STACKTOP;
  16548. $0 = HEAP8[$in>>0]|0;
  16549. $1 = $0&255;
  16550. $2 = (($in) + 1|0);
  16551. $3 = HEAP8[$2>>0]|0;
  16552. $4 = $3&255;
  16553. $5 = (_bitshift64Shl(($4|0),0,8)|0);
  16554. $6 = tempRet0;
  16555. $7 = $5 | $1;
  16556. $8 = (($in) + 2|0);
  16557. $9 = HEAP8[$8>>0]|0;
  16558. $10 = $9&255;
  16559. $11 = (_bitshift64Shl(($10|0),0,16)|0);
  16560. $12 = tempRet0;
  16561. $13 = $7 | $11;
  16562. $14 = $6 | $12;
  16563. tempRet0 = $14;
  16564. STACKTOP = sp;return ($13|0);
  16565. }
  16566. function _load_448($in) {
  16567. $in = $in|0;
  16568. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0;
  16569. var $8 = 0, $9 = 0, label = 0, sp = 0;
  16570. sp = STACKTOP;
  16571. $0 = HEAP8[$in>>0]|0;
  16572. $1 = $0&255;
  16573. $2 = (($in) + 1|0);
  16574. $3 = HEAP8[$2>>0]|0;
  16575. $4 = $3&255;
  16576. $5 = (_bitshift64Shl(($4|0),0,8)|0);
  16577. $6 = tempRet0;
  16578. $7 = $5 | $1;
  16579. $8 = (($in) + 2|0);
  16580. $9 = HEAP8[$8>>0]|0;
  16581. $10 = $9&255;
  16582. $11 = (_bitshift64Shl(($10|0),0,16)|0);
  16583. $12 = tempRet0;
  16584. $13 = $7 | $11;
  16585. $14 = $6 | $12;
  16586. $15 = (($in) + 3|0);
  16587. $16 = HEAP8[$15>>0]|0;
  16588. $17 = $16&255;
  16589. $18 = (_bitshift64Shl(($17|0),0,24)|0);
  16590. $19 = tempRet0;
  16591. $20 = $13 | $18;
  16592. $21 = $14 | $19;
  16593. tempRet0 = $21;
  16594. STACKTOP = sp;return ($20|0);
  16595. }
  16596. function _crypto_sign_ed25519_ref10_sc_reduce($s) {
  16597. $s = $s|0;
  16598. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0, $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0;
  16599. var $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0;
  16600. var $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0;
  16601. var $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0;
  16602. var $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0;
  16603. var $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0;
  16604. var $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0;
  16605. var $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0;
  16606. var $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0;
  16607. var $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0;
  16608. var $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0;
  16609. var $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0;
  16610. var $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0;
  16611. var $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0;
  16612. var $33 = 0, $330 = 0, $331 = 0, $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0;
  16613. var $348 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0;
  16614. var $366 = 0, $367 = 0, $368 = 0, $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0;
  16615. var $384 = 0, $385 = 0, $386 = 0, $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0;
  16616. var $401 = 0, $402 = 0, $403 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0;
  16617. var $42 = 0, $420 = 0, $421 = 0, $422 = 0, $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0;
  16618. var $438 = 0, $439 = 0, $44 = 0, $440 = 0, $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0;
  16619. var $456 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0;
  16620. var $474 = 0, $475 = 0, $476 = 0, $477 = 0, $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0;
  16621. var $492 = 0, $493 = 0, $494 = 0, $495 = 0, $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0;
  16622. var $51 = 0, $510 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0;
  16623. var $528 = 0, $529 = 0, $53 = 0, $530 = 0, $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0;
  16624. var $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0;
  16625. var $564 = 0, $565 = 0, $566 = 0, $567 = 0, $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0;
  16626. var $582 = 0, $583 = 0, $584 = 0, $585 = 0, $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0;
  16627. var $60 = 0, $600 = 0, $601 = 0, $602 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0;
  16628. var $618 = 0, $619 = 0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0;
  16629. var $636 = 0, $637 = 0, $638 = 0, $639 = 0, $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0, $652 = 0, $653 = 0;
  16630. var $654 = 0, $655 = 0, $656 = 0, $657 = 0, $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0, $670 = 0, $671 = 0;
  16631. var $672 = 0, $673 = 0, $674 = 0, $675 = 0, $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0, $689 = 0, $69 = 0;
  16632. var $690 = 0, $691 = 0, $692 = 0, $693 = 0, $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0;
  16633. var $708 = 0, $709 = 0, $71 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $724 = 0, $725 = 0;
  16634. var $726 = 0, $727 = 0, $728 = 0, $729 = 0, $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0, $742 = 0, $743 = 0;
  16635. var $744 = 0, $745 = 0, $746 = 0, $747 = 0, $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0, $760 = 0, $761 = 0;
  16636. var $762 = 0, $763 = 0, $764 = 0, $765 = 0, $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0;
  16637. var $780 = 0, $781 = 0, $782 = 0, $783 = 0, $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0;
  16638. var $799 = 0, $8 = 0, $80 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0, $814 = 0, $815 = 0;
  16639. var $816 = 0, $817 = 0, $818 = 0, $819 = 0, $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0;
  16640. var $834 = 0, $835 = 0, $836 = 0, $837 = 0, $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0;
  16641. var $852 = 0, $853 = 0, $854 = 0, $855 = 0, $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0;
  16642. var $870 = 0, $871 = 0, $872 = 0, $873 = 0, $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0;
  16643. var $889 = 0, $89 = 0, $890 = 0, $891 = 0, $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0;
  16644. var $906 = 0, $907 = 0, $908 = 0, $909 = 0, $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0;
  16645. var $924 = 0, $925 = 0, $926 = 0, $927 = 0, $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0;
  16646. var $942 = 0, $943 = 0, $944 = 0, $945 = 0, $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0, $959 = 0, $96 = 0;
  16647. var $960 = 0, $961 = 0, $962 = 0, $963 = 0, $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0, $977 = 0, $978 = 0;
  16648. var $979 = 0, $98 = 0, $980 = 0, $981 = 0, $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0, $995 = 0, $996 = 0;
  16649. var $997 = 0, $998 = 0, $999 = 0, label = 0, sp = 0;
  16650. sp = STACKTOP;
  16651. $0 = (_load_351($s)|0);
  16652. $1 = tempRet0;
  16653. $2 = $0 & 2097151;
  16654. $3 = (($s) + 2|0);
  16655. $4 = (_load_452($3)|0);
  16656. $5 = tempRet0;
  16657. $6 = (_bitshift64Lshr(($4|0),($5|0),5)|0);
  16658. $7 = tempRet0;
  16659. $8 = $6 & 2097151;
  16660. $9 = (($s) + 5|0);
  16661. $10 = (_load_351($9)|0);
  16662. $11 = tempRet0;
  16663. $12 = (_bitshift64Lshr(($10|0),($11|0),2)|0);
  16664. $13 = tempRet0;
  16665. $14 = $12 & 2097151;
  16666. $15 = (($s) + 7|0);
  16667. $16 = (_load_452($15)|0);
  16668. $17 = tempRet0;
  16669. $18 = (_bitshift64Lshr(($16|0),($17|0),7)|0);
  16670. $19 = tempRet0;
  16671. $20 = $18 & 2097151;
  16672. $21 = (($s) + 10|0);
  16673. $22 = (_load_452($21)|0);
  16674. $23 = tempRet0;
  16675. $24 = (_bitshift64Lshr(($22|0),($23|0),4)|0);
  16676. $25 = tempRet0;
  16677. $26 = $24 & 2097151;
  16678. $27 = (($s) + 13|0);
  16679. $28 = (_load_351($27)|0);
  16680. $29 = tempRet0;
  16681. $30 = (_bitshift64Lshr(($28|0),($29|0),1)|0);
  16682. $31 = tempRet0;
  16683. $32 = $30 & 2097151;
  16684. $33 = (($s) + 15|0);
  16685. $34 = (_load_452($33)|0);
  16686. $35 = tempRet0;
  16687. $36 = (_bitshift64Lshr(($34|0),($35|0),6)|0);
  16688. $37 = tempRet0;
  16689. $38 = $36 & 2097151;
  16690. $39 = (($s) + 18|0);
  16691. $40 = (_load_351($39)|0);
  16692. $41 = tempRet0;
  16693. $42 = (_bitshift64Lshr(($40|0),($41|0),3)|0);
  16694. $43 = tempRet0;
  16695. $44 = $42 & 2097151;
  16696. $45 = (($s) + 21|0);
  16697. $46 = (_load_351($45)|0);
  16698. $47 = tempRet0;
  16699. $48 = $46 & 2097151;
  16700. $49 = (($s) + 23|0);
  16701. $50 = (_load_452($49)|0);
  16702. $51 = tempRet0;
  16703. $52 = (_bitshift64Lshr(($50|0),($51|0),5)|0);
  16704. $53 = tempRet0;
  16705. $54 = $52 & 2097151;
  16706. $55 = (($s) + 26|0);
  16707. $56 = (_load_351($55)|0);
  16708. $57 = tempRet0;
  16709. $58 = (_bitshift64Lshr(($56|0),($57|0),2)|0);
  16710. $59 = tempRet0;
  16711. $60 = $58 & 2097151;
  16712. $61 = (($s) + 28|0);
  16713. $62 = (_load_452($61)|0);
  16714. $63 = tempRet0;
  16715. $64 = (_bitshift64Lshr(($62|0),($63|0),7)|0);
  16716. $65 = tempRet0;
  16717. $66 = $64 & 2097151;
  16718. $67 = (($s) + 31|0);
  16719. $68 = (_load_452($67)|0);
  16720. $69 = tempRet0;
  16721. $70 = (_bitshift64Lshr(($68|0),($69|0),4)|0);
  16722. $71 = tempRet0;
  16723. $72 = $70 & 2097151;
  16724. $73 = (($s) + 34|0);
  16725. $74 = (_load_351($73)|0);
  16726. $75 = tempRet0;
  16727. $76 = (_bitshift64Lshr(($74|0),($75|0),1)|0);
  16728. $77 = tempRet0;
  16729. $78 = $76 & 2097151;
  16730. $79 = (($s) + 36|0);
  16731. $80 = (_load_452($79)|0);
  16732. $81 = tempRet0;
  16733. $82 = (_bitshift64Lshr(($80|0),($81|0),6)|0);
  16734. $83 = tempRet0;
  16735. $84 = $82 & 2097151;
  16736. $85 = (($s) + 39|0);
  16737. $86 = (_load_351($85)|0);
  16738. $87 = tempRet0;
  16739. $88 = (_bitshift64Lshr(($86|0),($87|0),3)|0);
  16740. $89 = tempRet0;
  16741. $90 = $88 & 2097151;
  16742. $91 = (($s) + 42|0);
  16743. $92 = (_load_351($91)|0);
  16744. $93 = tempRet0;
  16745. $94 = $92 & 2097151;
  16746. $95 = (($s) + 44|0);
  16747. $96 = (_load_452($95)|0);
  16748. $97 = tempRet0;
  16749. $98 = (_bitshift64Lshr(($96|0),($97|0),5)|0);
  16750. $99 = tempRet0;
  16751. $100 = $98 & 2097151;
  16752. $101 = (($s) + 47|0);
  16753. $102 = (_load_351($101)|0);
  16754. $103 = tempRet0;
  16755. $104 = (_bitshift64Lshr(($102|0),($103|0),2)|0);
  16756. $105 = tempRet0;
  16757. $106 = $104 & 2097151;
  16758. $107 = (($s) + 49|0);
  16759. $108 = (_load_452($107)|0);
  16760. $109 = tempRet0;
  16761. $110 = (_bitshift64Lshr(($108|0),($109|0),7)|0);
  16762. $111 = tempRet0;
  16763. $112 = $110 & 2097151;
  16764. $113 = (($s) + 52|0);
  16765. $114 = (_load_452($113)|0);
  16766. $115 = tempRet0;
  16767. $116 = (_bitshift64Lshr(($114|0),($115|0),4)|0);
  16768. $117 = tempRet0;
  16769. $118 = $116 & 2097151;
  16770. $119 = (($s) + 55|0);
  16771. $120 = (_load_351($119)|0);
  16772. $121 = tempRet0;
  16773. $122 = (_bitshift64Lshr(($120|0),($121|0),1)|0);
  16774. $123 = tempRet0;
  16775. $124 = $122 & 2097151;
  16776. $125 = (($s) + 57|0);
  16777. $126 = (_load_452($125)|0);
  16778. $127 = tempRet0;
  16779. $128 = (_bitshift64Lshr(($126|0),($127|0),6)|0);
  16780. $129 = tempRet0;
  16781. $130 = $128 & 2097151;
  16782. $131 = (($s) + 60|0);
  16783. $132 = (_load_452($131)|0);
  16784. $133 = tempRet0;
  16785. $134 = (_bitshift64Lshr(($132|0),($133|0),3)|0);
  16786. $135 = tempRet0;
  16787. $136 = (___muldi3(($134|0),($135|0),666643,0)|0);
  16788. $137 = tempRet0;
  16789. $138 = (___muldi3(($134|0),($135|0),470296,0)|0);
  16790. $139 = tempRet0;
  16791. $140 = (___muldi3(($134|0),($135|0),654183,0)|0);
  16792. $141 = tempRet0;
  16793. $142 = (___muldi3(($134|0),($135|0),-997805,-1)|0);
  16794. $143 = tempRet0;
  16795. $144 = (___muldi3(($134|0),($135|0),136657,0)|0);
  16796. $145 = tempRet0;
  16797. $146 = (_i64Add(($144|0),($145|0),($90|0),0)|0);
  16798. $147 = tempRet0;
  16799. $148 = (___muldi3(($134|0),($135|0),-683901,-1)|0);
  16800. $149 = tempRet0;
  16801. $150 = (_i64Add(($148|0),($149|0),($94|0),0)|0);
  16802. $151 = tempRet0;
  16803. $152 = (___muldi3(($130|0),0,666643,0)|0);
  16804. $153 = tempRet0;
  16805. $154 = (___muldi3(($130|0),0,470296,0)|0);
  16806. $155 = tempRet0;
  16807. $156 = (___muldi3(($130|0),0,654183,0)|0);
  16808. $157 = tempRet0;
  16809. $158 = (___muldi3(($130|0),0,-997805,-1)|0);
  16810. $159 = tempRet0;
  16811. $160 = (___muldi3(($130|0),0,136657,0)|0);
  16812. $161 = tempRet0;
  16813. $162 = (___muldi3(($130|0),0,-683901,-1)|0);
  16814. $163 = tempRet0;
  16815. $164 = (_i64Add(($146|0),($147|0),($162|0),($163|0))|0);
  16816. $165 = tempRet0;
  16817. $166 = (___muldi3(($124|0),0,666643,0)|0);
  16818. $167 = tempRet0;
  16819. $168 = (___muldi3(($124|0),0,470296,0)|0);
  16820. $169 = tempRet0;
  16821. $170 = (___muldi3(($124|0),0,654183,0)|0);
  16822. $171 = tempRet0;
  16823. $172 = (___muldi3(($124|0),0,-997805,-1)|0);
  16824. $173 = tempRet0;
  16825. $174 = (___muldi3(($124|0),0,136657,0)|0);
  16826. $175 = tempRet0;
  16827. $176 = (___muldi3(($124|0),0,-683901,-1)|0);
  16828. $177 = tempRet0;
  16829. $178 = (_i64Add(($176|0),($177|0),($84|0),0)|0);
  16830. $179 = tempRet0;
  16831. $180 = (_i64Add(($178|0),($179|0),($142|0),($143|0))|0);
  16832. $181 = tempRet0;
  16833. $182 = (_i64Add(($180|0),($181|0),($160|0),($161|0))|0);
  16834. $183 = tempRet0;
  16835. $184 = (___muldi3(($118|0),0,666643,0)|0);
  16836. $185 = tempRet0;
  16837. $186 = (___muldi3(($118|0),0,470296,0)|0);
  16838. $187 = tempRet0;
  16839. $188 = (___muldi3(($118|0),0,654183,0)|0);
  16840. $189 = tempRet0;
  16841. $190 = (___muldi3(($118|0),0,-997805,-1)|0);
  16842. $191 = tempRet0;
  16843. $192 = (___muldi3(($118|0),0,136657,0)|0);
  16844. $193 = tempRet0;
  16845. $194 = (___muldi3(($118|0),0,-683901,-1)|0);
  16846. $195 = tempRet0;
  16847. $196 = (___muldi3(($112|0),0,666643,0)|0);
  16848. $197 = tempRet0;
  16849. $198 = (___muldi3(($112|0),0,470296,0)|0);
  16850. $199 = tempRet0;
  16851. $200 = (___muldi3(($112|0),0,654183,0)|0);
  16852. $201 = tempRet0;
  16853. $202 = (___muldi3(($112|0),0,-997805,-1)|0);
  16854. $203 = tempRet0;
  16855. $204 = (___muldi3(($112|0),0,136657,0)|0);
  16856. $205 = tempRet0;
  16857. $206 = (___muldi3(($112|0),0,-683901,-1)|0);
  16858. $207 = tempRet0;
  16859. $208 = (_i64Add(($206|0),($207|0),($72|0),0)|0);
  16860. $209 = tempRet0;
  16861. $210 = (_i64Add(($208|0),($209|0),($192|0),($193|0))|0);
  16862. $211 = tempRet0;
  16863. $212 = (_i64Add(($210|0),($211|0),($172|0),($173|0))|0);
  16864. $213 = tempRet0;
  16865. $214 = (_i64Add(($212|0),($213|0),($138|0),($139|0))|0);
  16866. $215 = tempRet0;
  16867. $216 = (_i64Add(($214|0),($215|0),($156|0),($157|0))|0);
  16868. $217 = tempRet0;
  16869. $218 = (___muldi3(($106|0),0,666643,0)|0);
  16870. $219 = tempRet0;
  16871. $220 = (_i64Add(($218|0),($219|0),($38|0),0)|0);
  16872. $221 = tempRet0;
  16873. $222 = (___muldi3(($106|0),0,470296,0)|0);
  16874. $223 = tempRet0;
  16875. $224 = (___muldi3(($106|0),0,654183,0)|0);
  16876. $225 = tempRet0;
  16877. $226 = (_i64Add(($224|0),($225|0),($48|0),0)|0);
  16878. $227 = tempRet0;
  16879. $228 = (_i64Add(($226|0),($227|0),($198|0),($199|0))|0);
  16880. $229 = tempRet0;
  16881. $230 = (_i64Add(($228|0),($229|0),($184|0),($185|0))|0);
  16882. $231 = tempRet0;
  16883. $232 = (___muldi3(($106|0),0,-997805,-1)|0);
  16884. $233 = tempRet0;
  16885. $234 = (___muldi3(($106|0),0,136657,0)|0);
  16886. $235 = tempRet0;
  16887. $236 = (_i64Add(($234|0),($235|0),($60|0),0)|0);
  16888. $237 = tempRet0;
  16889. $238 = (_i64Add(($236|0),($237|0),($202|0),($203|0))|0);
  16890. $239 = tempRet0;
  16891. $240 = (_i64Add(($238|0),($239|0),($188|0),($189|0))|0);
  16892. $241 = tempRet0;
  16893. $242 = (_i64Add(($240|0),($241|0),($168|0),($169|0))|0);
  16894. $243 = tempRet0;
  16895. $244 = (_i64Add(($242|0),($243|0),($152|0),($153|0))|0);
  16896. $245 = tempRet0;
  16897. $246 = (___muldi3(($106|0),0,-683901,-1)|0);
  16898. $247 = tempRet0;
  16899. $248 = (_i64Add(($220|0),($221|0),1048576,0)|0);
  16900. $249 = tempRet0;
  16901. $250 = (_bitshift64Lshr(($248|0),($249|0),21)|0);
  16902. $251 = tempRet0;
  16903. $252 = (_i64Add(($222|0),($223|0),($44|0),0)|0);
  16904. $253 = tempRet0;
  16905. $254 = (_i64Add(($252|0),($253|0),($196|0),($197|0))|0);
  16906. $255 = tempRet0;
  16907. $256 = (_i64Add(($254|0),($255|0),($250|0),($251|0))|0);
  16908. $257 = tempRet0;
  16909. $258 = (_bitshift64Shl(($250|0),($251|0),21)|0);
  16910. $259 = tempRet0;
  16911. $260 = (_i64Subtract(($220|0),($221|0),($258|0),($259|0))|0);
  16912. $261 = tempRet0;
  16913. $262 = (_i64Add(($230|0),($231|0),1048576,0)|0);
  16914. $263 = tempRet0;
  16915. $264 = (_bitshift64Lshr(($262|0),($263|0),21)|0);
  16916. $265 = tempRet0;
  16917. $266 = (_i64Add(($232|0),($233|0),($54|0),0)|0);
  16918. $267 = tempRet0;
  16919. $268 = (_i64Add(($266|0),($267|0),($200|0),($201|0))|0);
  16920. $269 = tempRet0;
  16921. $270 = (_i64Add(($268|0),($269|0),($186|0),($187|0))|0);
  16922. $271 = tempRet0;
  16923. $272 = (_i64Add(($270|0),($271|0),($166|0),($167|0))|0);
  16924. $273 = tempRet0;
  16925. $274 = (_i64Add(($272|0),($273|0),($264|0),($265|0))|0);
  16926. $275 = tempRet0;
  16927. $276 = (_bitshift64Shl(($264|0),($265|0),21)|0);
  16928. $277 = tempRet0;
  16929. $278 = (_i64Subtract(($230|0),($231|0),($276|0),($277|0))|0);
  16930. $279 = tempRet0;
  16931. $280 = (_i64Add(($244|0),($245|0),1048576,0)|0);
  16932. $281 = tempRet0;
  16933. $282 = (_bitshift64Ashr(($280|0),($281|0),21)|0);
  16934. $283 = tempRet0;
  16935. $284 = (_i64Add(($246|0),($247|0),($66|0),0)|0);
  16936. $285 = tempRet0;
  16937. $286 = (_i64Add(($284|0),($285|0),($204|0),($205|0))|0);
  16938. $287 = tempRet0;
  16939. $288 = (_i64Add(($286|0),($287|0),($190|0),($191|0))|0);
  16940. $289 = tempRet0;
  16941. $290 = (_i64Add(($288|0),($289|0),($170|0),($171|0))|0);
  16942. $291 = tempRet0;
  16943. $292 = (_i64Add(($290|0),($291|0),($136|0),($137|0))|0);
  16944. $293 = tempRet0;
  16945. $294 = (_i64Add(($292|0),($293|0),($154|0),($155|0))|0);
  16946. $295 = tempRet0;
  16947. $296 = (_i64Add(($294|0),($295|0),($282|0),($283|0))|0);
  16948. $297 = tempRet0;
  16949. $298 = (_bitshift64Shl(($282|0),($283|0),21)|0);
  16950. $299 = tempRet0;
  16951. $300 = (_i64Subtract(($244|0),($245|0),($298|0),($299|0))|0);
  16952. $301 = tempRet0;
  16953. $302 = (_i64Add(($216|0),($217|0),1048576,0)|0);
  16954. $303 = tempRet0;
  16955. $304 = (_bitshift64Ashr(($302|0),($303|0),21)|0);
  16956. $305 = tempRet0;
  16957. $306 = (_i64Add(($194|0),($195|0),($78|0),0)|0);
  16958. $307 = tempRet0;
  16959. $308 = (_i64Add(($306|0),($307|0),($174|0),($175|0))|0);
  16960. $309 = tempRet0;
  16961. $310 = (_i64Add(($308|0),($309|0),($140|0),($141|0))|0);
  16962. $311 = tempRet0;
  16963. $312 = (_i64Add(($310|0),($311|0),($158|0),($159|0))|0);
  16964. $313 = tempRet0;
  16965. $314 = (_i64Add(($312|0),($313|0),($304|0),($305|0))|0);
  16966. $315 = tempRet0;
  16967. $316 = (_bitshift64Shl(($304|0),($305|0),21)|0);
  16968. $317 = tempRet0;
  16969. $318 = (_i64Subtract(($216|0),($217|0),($316|0),($317|0))|0);
  16970. $319 = tempRet0;
  16971. $320 = (_i64Add(($182|0),($183|0),1048576,0)|0);
  16972. $321 = tempRet0;
  16973. $322 = (_bitshift64Ashr(($320|0),($321|0),21)|0);
  16974. $323 = tempRet0;
  16975. $324 = (_i64Add(($164|0),($165|0),($322|0),($323|0))|0);
  16976. $325 = tempRet0;
  16977. $326 = (_bitshift64Shl(($322|0),($323|0),21)|0);
  16978. $327 = tempRet0;
  16979. $328 = (_i64Subtract(($182|0),($183|0),($326|0),($327|0))|0);
  16980. $329 = tempRet0;
  16981. $330 = (_i64Add(($150|0),($151|0),1048576,0)|0);
  16982. $331 = tempRet0;
  16983. $332 = (_bitshift64Ashr(($330|0),($331|0),21)|0);
  16984. $333 = tempRet0;
  16985. $334 = (_i64Add(($332|0),($333|0),($100|0),0)|0);
  16986. $335 = tempRet0;
  16987. $336 = (_bitshift64Shl(($332|0),($333|0),21)|0);
  16988. $337 = tempRet0;
  16989. $338 = (_i64Subtract(($150|0),($151|0),($336|0),($337|0))|0);
  16990. $339 = tempRet0;
  16991. $340 = (_i64Add(($256|0),($257|0),1048576,0)|0);
  16992. $341 = tempRet0;
  16993. $342 = (_bitshift64Lshr(($340|0),($341|0),21)|0);
  16994. $343 = tempRet0;
  16995. $344 = (_i64Add(($278|0),($279|0),($342|0),($343|0))|0);
  16996. $345 = tempRet0;
  16997. $346 = (_bitshift64Shl(($342|0),($343|0),21)|0);
  16998. $347 = tempRet0;
  16999. $348 = (_i64Subtract(($256|0),($257|0),($346|0),($347|0))|0);
  17000. $349 = tempRet0;
  17001. $350 = (_i64Add(($274|0),($275|0),1048576,0)|0);
  17002. $351 = tempRet0;
  17003. $352 = (_bitshift64Ashr(($350|0),($351|0),21)|0);
  17004. $353 = tempRet0;
  17005. $354 = (_i64Add(($300|0),($301|0),($352|0),($353|0))|0);
  17006. $355 = tempRet0;
  17007. $356 = (_bitshift64Shl(($352|0),($353|0),21)|0);
  17008. $357 = tempRet0;
  17009. $358 = (_i64Subtract(($274|0),($275|0),($356|0),($357|0))|0);
  17010. $359 = tempRet0;
  17011. $360 = (_i64Add(($296|0),($297|0),1048576,0)|0);
  17012. $361 = tempRet0;
  17013. $362 = (_bitshift64Ashr(($360|0),($361|0),21)|0);
  17014. $363 = tempRet0;
  17015. $364 = (_i64Add(($318|0),($319|0),($362|0),($363|0))|0);
  17016. $365 = tempRet0;
  17017. $366 = (_bitshift64Shl(($362|0),($363|0),21)|0);
  17018. $367 = tempRet0;
  17019. $368 = (_i64Subtract(($296|0),($297|0),($366|0),($367|0))|0);
  17020. $369 = tempRet0;
  17021. $370 = (_i64Add(($314|0),($315|0),1048576,0)|0);
  17022. $371 = tempRet0;
  17023. $372 = (_bitshift64Ashr(($370|0),($371|0),21)|0);
  17024. $373 = tempRet0;
  17025. $374 = (_i64Add(($372|0),($373|0),($328|0),($329|0))|0);
  17026. $375 = tempRet0;
  17027. $376 = (_bitshift64Shl(($372|0),($373|0),21)|0);
  17028. $377 = tempRet0;
  17029. $378 = (_i64Subtract(($314|0),($315|0),($376|0),($377|0))|0);
  17030. $379 = tempRet0;
  17031. $380 = (_i64Add(($324|0),($325|0),1048576,0)|0);
  17032. $381 = tempRet0;
  17033. $382 = (_bitshift64Ashr(($380|0),($381|0),21)|0);
  17034. $383 = tempRet0;
  17035. $384 = (_i64Add(($382|0),($383|0),($338|0),($339|0))|0);
  17036. $385 = tempRet0;
  17037. $386 = (_bitshift64Shl(($382|0),($383|0),21)|0);
  17038. $387 = tempRet0;
  17039. $388 = (_i64Subtract(($324|0),($325|0),($386|0),($387|0))|0);
  17040. $389 = tempRet0;
  17041. $390 = (___muldi3(($334|0),($335|0),666643,0)|0);
  17042. $391 = tempRet0;
  17043. $392 = (_i64Add(($390|0),($391|0),($32|0),0)|0);
  17044. $393 = tempRet0;
  17045. $394 = (___muldi3(($334|0),($335|0),470296,0)|0);
  17046. $395 = tempRet0;
  17047. $396 = (_i64Add(($260|0),($261|0),($394|0),($395|0))|0);
  17048. $397 = tempRet0;
  17049. $398 = (___muldi3(($334|0),($335|0),654183,0)|0);
  17050. $399 = tempRet0;
  17051. $400 = (_i64Add(($348|0),($349|0),($398|0),($399|0))|0);
  17052. $401 = tempRet0;
  17053. $402 = (___muldi3(($334|0),($335|0),-997805,-1)|0);
  17054. $403 = tempRet0;
  17055. $404 = (_i64Add(($344|0),($345|0),($402|0),($403|0))|0);
  17056. $405 = tempRet0;
  17057. $406 = (___muldi3(($334|0),($335|0),136657,0)|0);
  17058. $407 = tempRet0;
  17059. $408 = (_i64Add(($358|0),($359|0),($406|0),($407|0))|0);
  17060. $409 = tempRet0;
  17061. $410 = (___muldi3(($334|0),($335|0),-683901,-1)|0);
  17062. $411 = tempRet0;
  17063. $412 = (_i64Add(($354|0),($355|0),($410|0),($411|0))|0);
  17064. $413 = tempRet0;
  17065. $414 = (___muldi3(($384|0),($385|0),666643,0)|0);
  17066. $415 = tempRet0;
  17067. $416 = (___muldi3(($384|0),($385|0),470296,0)|0);
  17068. $417 = tempRet0;
  17069. $418 = (___muldi3(($384|0),($385|0),654183,0)|0);
  17070. $419 = tempRet0;
  17071. $420 = (_i64Add(($396|0),($397|0),($418|0),($419|0))|0);
  17072. $421 = tempRet0;
  17073. $422 = (___muldi3(($384|0),($385|0),-997805,-1)|0);
  17074. $423 = tempRet0;
  17075. $424 = (_i64Add(($400|0),($401|0),($422|0),($423|0))|0);
  17076. $425 = tempRet0;
  17077. $426 = (___muldi3(($384|0),($385|0),136657,0)|0);
  17078. $427 = tempRet0;
  17079. $428 = (_i64Add(($404|0),($405|0),($426|0),($427|0))|0);
  17080. $429 = tempRet0;
  17081. $430 = (___muldi3(($384|0),($385|0),-683901,-1)|0);
  17082. $431 = tempRet0;
  17083. $432 = (_i64Add(($408|0),($409|0),($430|0),($431|0))|0);
  17084. $433 = tempRet0;
  17085. $434 = (___muldi3(($388|0),($389|0),666643,0)|0);
  17086. $435 = tempRet0;
  17087. $436 = (___muldi3(($388|0),($389|0),470296,0)|0);
  17088. $437 = tempRet0;
  17089. $438 = (___muldi3(($388|0),($389|0),654183,0)|0);
  17090. $439 = tempRet0;
  17091. $440 = (___muldi3(($388|0),($389|0),-997805,-1)|0);
  17092. $441 = tempRet0;
  17093. $442 = (___muldi3(($388|0),($389|0),136657,0)|0);
  17094. $443 = tempRet0;
  17095. $444 = (___muldi3(($388|0),($389|0),-683901,-1)|0);
  17096. $445 = tempRet0;
  17097. $446 = (_i64Add(($428|0),($429|0),($444|0),($445|0))|0);
  17098. $447 = tempRet0;
  17099. $448 = (___muldi3(($374|0),($375|0),666643,0)|0);
  17100. $449 = tempRet0;
  17101. $450 = (___muldi3(($374|0),($375|0),470296,0)|0);
  17102. $451 = tempRet0;
  17103. $452 = (___muldi3(($374|0),($375|0),654183,0)|0);
  17104. $453 = tempRet0;
  17105. $454 = (___muldi3(($374|0),($375|0),-997805,-1)|0);
  17106. $455 = tempRet0;
  17107. $456 = (___muldi3(($374|0),($375|0),136657,0)|0);
  17108. $457 = tempRet0;
  17109. $458 = (___muldi3(($374|0),($375|0),-683901,-1)|0);
  17110. $459 = tempRet0;
  17111. $460 = (___muldi3(($378|0),($379|0),666643,0)|0);
  17112. $461 = tempRet0;
  17113. $462 = (___muldi3(($378|0),($379|0),470296,0)|0);
  17114. $463 = tempRet0;
  17115. $464 = (___muldi3(($378|0),($379|0),654183,0)|0);
  17116. $465 = tempRet0;
  17117. $466 = (___muldi3(($378|0),($379|0),-997805,-1)|0);
  17118. $467 = tempRet0;
  17119. $468 = (___muldi3(($378|0),($379|0),136657,0)|0);
  17120. $469 = tempRet0;
  17121. $470 = (___muldi3(($378|0),($379|0),-683901,-1)|0);
  17122. $471 = tempRet0;
  17123. $472 = (_i64Add(($420|0),($421|0),($456|0),($457|0))|0);
  17124. $473 = tempRet0;
  17125. $474 = (_i64Add(($472|0),($473|0),($440|0),($441|0))|0);
  17126. $475 = tempRet0;
  17127. $476 = (_i64Add(($474|0),($475|0),($470|0),($471|0))|0);
  17128. $477 = tempRet0;
  17129. $478 = (___muldi3(($364|0),($365|0),666643,0)|0);
  17130. $479 = tempRet0;
  17131. $480 = (_i64Add(($478|0),($479|0),($2|0),0)|0);
  17132. $481 = tempRet0;
  17133. $482 = (___muldi3(($364|0),($365|0),470296,0)|0);
  17134. $483 = tempRet0;
  17135. $484 = (___muldi3(($364|0),($365|0),654183,0)|0);
  17136. $485 = tempRet0;
  17137. $486 = (_i64Add(($484|0),($485|0),($14|0),0)|0);
  17138. $487 = tempRet0;
  17139. $488 = (_i64Add(($486|0),($487|0),($448|0),($449|0))|0);
  17140. $489 = tempRet0;
  17141. $490 = (_i64Add(($488|0),($489|0),($462|0),($463|0))|0);
  17142. $491 = tempRet0;
  17143. $492 = (___muldi3(($364|0),($365|0),-997805,-1)|0);
  17144. $493 = tempRet0;
  17145. $494 = (___muldi3(($364|0),($365|0),136657,0)|0);
  17146. $495 = tempRet0;
  17147. $496 = (_i64Add(($494|0),($495|0),($26|0),0)|0);
  17148. $497 = tempRet0;
  17149. $498 = (_i64Add(($496|0),($497|0),($414|0),($415|0))|0);
  17150. $499 = tempRet0;
  17151. $500 = (_i64Add(($498|0),($499|0),($452|0),($453|0))|0);
  17152. $501 = tempRet0;
  17153. $502 = (_i64Add(($500|0),($501|0),($436|0),($437|0))|0);
  17154. $503 = tempRet0;
  17155. $504 = (_i64Add(($502|0),($503|0),($466|0),($467|0))|0);
  17156. $505 = tempRet0;
  17157. $506 = (___muldi3(($364|0),($365|0),-683901,-1)|0);
  17158. $507 = tempRet0;
  17159. $508 = (_i64Add(($480|0),($481|0),1048576,0)|0);
  17160. $509 = tempRet0;
  17161. $510 = (_bitshift64Ashr(($508|0),($509|0),21)|0);
  17162. $511 = tempRet0;
  17163. $512 = (_i64Add(($482|0),($483|0),($8|0),0)|0);
  17164. $513 = tempRet0;
  17165. $514 = (_i64Add(($512|0),($513|0),($460|0),($461|0))|0);
  17166. $515 = tempRet0;
  17167. $516 = (_i64Add(($514|0),($515|0),($510|0),($511|0))|0);
  17168. $517 = tempRet0;
  17169. $518 = (_bitshift64Shl(($510|0),($511|0),21)|0);
  17170. $519 = tempRet0;
  17171. $520 = (_i64Subtract(($480|0),($481|0),($518|0),($519|0))|0);
  17172. $521 = tempRet0;
  17173. $522 = (_i64Add(($490|0),($491|0),1048576,0)|0);
  17174. $523 = tempRet0;
  17175. $524 = (_bitshift64Ashr(($522|0),($523|0),21)|0);
  17176. $525 = tempRet0;
  17177. $526 = (_i64Add(($492|0),($493|0),($20|0),0)|0);
  17178. $527 = tempRet0;
  17179. $528 = (_i64Add(($526|0),($527|0),($450|0),($451|0))|0);
  17180. $529 = tempRet0;
  17181. $530 = (_i64Add(($528|0),($529|0),($434|0),($435|0))|0);
  17182. $531 = tempRet0;
  17183. $532 = (_i64Add(($530|0),($531|0),($464|0),($465|0))|0);
  17184. $533 = tempRet0;
  17185. $534 = (_i64Add(($532|0),($533|0),($524|0),($525|0))|0);
  17186. $535 = tempRet0;
  17187. $536 = (_bitshift64Shl(($524|0),($525|0),21)|0);
  17188. $537 = tempRet0;
  17189. $538 = (_i64Add(($504|0),($505|0),1048576,0)|0);
  17190. $539 = tempRet0;
  17191. $540 = (_bitshift64Ashr(($538|0),($539|0),21)|0);
  17192. $541 = tempRet0;
  17193. $542 = (_i64Add(($392|0),($393|0),($506|0),($507|0))|0);
  17194. $543 = tempRet0;
  17195. $544 = (_i64Add(($542|0),($543|0),($416|0),($417|0))|0);
  17196. $545 = tempRet0;
  17197. $546 = (_i64Add(($544|0),($545|0),($454|0),($455|0))|0);
  17198. $547 = tempRet0;
  17199. $548 = (_i64Add(($546|0),($547|0),($438|0),($439|0))|0);
  17200. $549 = tempRet0;
  17201. $550 = (_i64Add(($548|0),($549|0),($468|0),($469|0))|0);
  17202. $551 = tempRet0;
  17203. $552 = (_i64Add(($550|0),($551|0),($540|0),($541|0))|0);
  17204. $553 = tempRet0;
  17205. $554 = (_bitshift64Shl(($540|0),($541|0),21)|0);
  17206. $555 = tempRet0;
  17207. $556 = (_i64Add(($476|0),($477|0),1048576,0)|0);
  17208. $557 = tempRet0;
  17209. $558 = (_bitshift64Ashr(($556|0),($557|0),21)|0);
  17210. $559 = tempRet0;
  17211. $560 = (_i64Add(($424|0),($425|0),($458|0),($459|0))|0);
  17212. $561 = tempRet0;
  17213. $562 = (_i64Add(($560|0),($561|0),($442|0),($443|0))|0);
  17214. $563 = tempRet0;
  17215. $564 = (_i64Add(($562|0),($563|0),($558|0),($559|0))|0);
  17216. $565 = tempRet0;
  17217. $566 = (_bitshift64Shl(($558|0),($559|0),21)|0);
  17218. $567 = tempRet0;
  17219. $568 = (_i64Subtract(($476|0),($477|0),($566|0),($567|0))|0);
  17220. $569 = tempRet0;
  17221. $570 = (_i64Add(($446|0),($447|0),1048576,0)|0);
  17222. $571 = tempRet0;
  17223. $572 = (_bitshift64Ashr(($570|0),($571|0),21)|0);
  17224. $573 = tempRet0;
  17225. $574 = (_i64Add(($432|0),($433|0),($572|0),($573|0))|0);
  17226. $575 = tempRet0;
  17227. $576 = (_bitshift64Shl(($572|0),($573|0),21)|0);
  17228. $577 = tempRet0;
  17229. $578 = (_i64Subtract(($446|0),($447|0),($576|0),($577|0))|0);
  17230. $579 = tempRet0;
  17231. $580 = (_i64Add(($412|0),($413|0),1048576,0)|0);
  17232. $581 = tempRet0;
  17233. $582 = (_bitshift64Ashr(($580|0),($581|0),21)|0);
  17234. $583 = tempRet0;
  17235. $584 = (_i64Add(($582|0),($583|0),($368|0),($369|0))|0);
  17236. $585 = tempRet0;
  17237. $586 = (_bitshift64Shl(($582|0),($583|0),21)|0);
  17238. $587 = tempRet0;
  17239. $588 = (_i64Subtract(($412|0),($413|0),($586|0),($587|0))|0);
  17240. $589 = tempRet0;
  17241. $590 = (_i64Add(($516|0),($517|0),1048576,0)|0);
  17242. $591 = tempRet0;
  17243. $592 = (_bitshift64Ashr(($590|0),($591|0),21)|0);
  17244. $593 = tempRet0;
  17245. $594 = (_bitshift64Shl(($592|0),($593|0),21)|0);
  17246. $595 = tempRet0;
  17247. $596 = (_i64Add(($534|0),($535|0),1048576,0)|0);
  17248. $597 = tempRet0;
  17249. $598 = (_bitshift64Ashr(($596|0),($597|0),21)|0);
  17250. $599 = tempRet0;
  17251. $600 = (_bitshift64Shl(($598|0),($599|0),21)|0);
  17252. $601 = tempRet0;
  17253. $602 = (_i64Add(($552|0),($553|0),1048576,0)|0);
  17254. $603 = tempRet0;
  17255. $604 = (_bitshift64Ashr(($602|0),($603|0),21)|0);
  17256. $605 = tempRet0;
  17257. $606 = (_i64Add(($568|0),($569|0),($604|0),($605|0))|0);
  17258. $607 = tempRet0;
  17259. $608 = (_bitshift64Shl(($604|0),($605|0),21)|0);
  17260. $609 = tempRet0;
  17261. $610 = (_i64Add(($564|0),($565|0),1048576,0)|0);
  17262. $611 = tempRet0;
  17263. $612 = (_bitshift64Ashr(($610|0),($611|0),21)|0);
  17264. $613 = tempRet0;
  17265. $614 = (_i64Add(($578|0),($579|0),($612|0),($613|0))|0);
  17266. $615 = tempRet0;
  17267. $616 = (_bitshift64Shl(($612|0),($613|0),21)|0);
  17268. $617 = tempRet0;
  17269. $618 = (_i64Subtract(($564|0),($565|0),($616|0),($617|0))|0);
  17270. $619 = tempRet0;
  17271. $620 = (_i64Add(($574|0),($575|0),1048576,0)|0);
  17272. $621 = tempRet0;
  17273. $622 = (_bitshift64Ashr(($620|0),($621|0),21)|0);
  17274. $623 = tempRet0;
  17275. $624 = (_i64Add(($588|0),($589|0),($622|0),($623|0))|0);
  17276. $625 = tempRet0;
  17277. $626 = (_bitshift64Shl(($622|0),($623|0),21)|0);
  17278. $627 = tempRet0;
  17279. $628 = (_i64Subtract(($574|0),($575|0),($626|0),($627|0))|0);
  17280. $629 = tempRet0;
  17281. $630 = (_i64Add(($584|0),($585|0),1048576,0)|0);
  17282. $631 = tempRet0;
  17283. $632 = (_bitshift64Ashr(($630|0),($631|0),21)|0);
  17284. $633 = tempRet0;
  17285. $634 = (_bitshift64Shl(($632|0),($633|0),21)|0);
  17286. $635 = tempRet0;
  17287. $636 = (_i64Subtract(($584|0),($585|0),($634|0),($635|0))|0);
  17288. $637 = tempRet0;
  17289. $638 = (___muldi3(($632|0),($633|0),666643,0)|0);
  17290. $639 = tempRet0;
  17291. $640 = (_i64Add(($520|0),($521|0),($638|0),($639|0))|0);
  17292. $641 = tempRet0;
  17293. $642 = (___muldi3(($632|0),($633|0),470296,0)|0);
  17294. $643 = tempRet0;
  17295. $644 = (___muldi3(($632|0),($633|0),654183,0)|0);
  17296. $645 = tempRet0;
  17297. $646 = (___muldi3(($632|0),($633|0),-997805,-1)|0);
  17298. $647 = tempRet0;
  17299. $648 = (___muldi3(($632|0),($633|0),136657,0)|0);
  17300. $649 = tempRet0;
  17301. $650 = (___muldi3(($632|0),($633|0),-683901,-1)|0);
  17302. $651 = tempRet0;
  17303. $652 = (_bitshift64Ashr(($640|0),($641|0),21)|0);
  17304. $653 = tempRet0;
  17305. $654 = (_i64Add(($642|0),($643|0),($516|0),($517|0))|0);
  17306. $655 = tempRet0;
  17307. $656 = (_i64Subtract(($654|0),($655|0),($594|0),($595|0))|0);
  17308. $657 = tempRet0;
  17309. $658 = (_i64Add(($656|0),($657|0),($652|0),($653|0))|0);
  17310. $659 = tempRet0;
  17311. $660 = (_bitshift64Shl(($652|0),($653|0),21)|0);
  17312. $661 = tempRet0;
  17313. $662 = (_i64Subtract(($640|0),($641|0),($660|0),($661|0))|0);
  17314. $663 = tempRet0;
  17315. $664 = (_bitshift64Ashr(($658|0),($659|0),21)|0);
  17316. $665 = tempRet0;
  17317. $666 = (_i64Add(($644|0),($645|0),($490|0),($491|0))|0);
  17318. $667 = tempRet0;
  17319. $668 = (_i64Subtract(($666|0),($667|0),($536|0),($537|0))|0);
  17320. $669 = tempRet0;
  17321. $670 = (_i64Add(($668|0),($669|0),($592|0),($593|0))|0);
  17322. $671 = tempRet0;
  17323. $672 = (_i64Add(($670|0),($671|0),($664|0),($665|0))|0);
  17324. $673 = tempRet0;
  17325. $674 = (_bitshift64Shl(($664|0),($665|0),21)|0);
  17326. $675 = tempRet0;
  17327. $676 = (_i64Subtract(($658|0),($659|0),($674|0),($675|0))|0);
  17328. $677 = tempRet0;
  17329. $678 = (_bitshift64Ashr(($672|0),($673|0),21)|0);
  17330. $679 = tempRet0;
  17331. $680 = (_i64Add(($534|0),($535|0),($646|0),($647|0))|0);
  17332. $681 = tempRet0;
  17333. $682 = (_i64Subtract(($680|0),($681|0),($600|0),($601|0))|0);
  17334. $683 = tempRet0;
  17335. $684 = (_i64Add(($682|0),($683|0),($678|0),($679|0))|0);
  17336. $685 = tempRet0;
  17337. $686 = (_bitshift64Shl(($678|0),($679|0),21)|0);
  17338. $687 = tempRet0;
  17339. $688 = (_i64Subtract(($672|0),($673|0),($686|0),($687|0))|0);
  17340. $689 = tempRet0;
  17341. $690 = (_bitshift64Ashr(($684|0),($685|0),21)|0);
  17342. $691 = tempRet0;
  17343. $692 = (_i64Add(($648|0),($649|0),($504|0),($505|0))|0);
  17344. $693 = tempRet0;
  17345. $694 = (_i64Subtract(($692|0),($693|0),($554|0),($555|0))|0);
  17346. $695 = tempRet0;
  17347. $696 = (_i64Add(($694|0),($695|0),($598|0),($599|0))|0);
  17348. $697 = tempRet0;
  17349. $698 = (_i64Add(($696|0),($697|0),($690|0),($691|0))|0);
  17350. $699 = tempRet0;
  17351. $700 = (_bitshift64Shl(($690|0),($691|0),21)|0);
  17352. $701 = tempRet0;
  17353. $702 = (_i64Subtract(($684|0),($685|0),($700|0),($701|0))|0);
  17354. $703 = tempRet0;
  17355. $704 = (_bitshift64Ashr(($698|0),($699|0),21)|0);
  17356. $705 = tempRet0;
  17357. $706 = (_i64Add(($552|0),($553|0),($650|0),($651|0))|0);
  17358. $707 = tempRet0;
  17359. $708 = (_i64Subtract(($706|0),($707|0),($608|0),($609|0))|0);
  17360. $709 = tempRet0;
  17361. $710 = (_i64Add(($708|0),($709|0),($704|0),($705|0))|0);
  17362. $711 = tempRet0;
  17363. $712 = (_bitshift64Shl(($704|0),($705|0),21)|0);
  17364. $713 = tempRet0;
  17365. $714 = (_i64Subtract(($698|0),($699|0),($712|0),($713|0))|0);
  17366. $715 = tempRet0;
  17367. $716 = (_bitshift64Ashr(($710|0),($711|0),21)|0);
  17368. $717 = tempRet0;
  17369. $718 = (_i64Add(($606|0),($607|0),($716|0),($717|0))|0);
  17370. $719 = tempRet0;
  17371. $720 = (_bitshift64Shl(($716|0),($717|0),21)|0);
  17372. $721 = tempRet0;
  17373. $722 = (_i64Subtract(($710|0),($711|0),($720|0),($721|0))|0);
  17374. $723 = tempRet0;
  17375. $724 = (_bitshift64Ashr(($718|0),($719|0),21)|0);
  17376. $725 = tempRet0;
  17377. $726 = (_i64Add(($724|0),($725|0),($618|0),($619|0))|0);
  17378. $727 = tempRet0;
  17379. $728 = (_bitshift64Shl(($724|0),($725|0),21)|0);
  17380. $729 = tempRet0;
  17381. $730 = (_i64Subtract(($718|0),($719|0),($728|0),($729|0))|0);
  17382. $731 = tempRet0;
  17383. $732 = (_bitshift64Ashr(($726|0),($727|0),21)|0);
  17384. $733 = tempRet0;
  17385. $734 = (_i64Add(($614|0),($615|0),($732|0),($733|0))|0);
  17386. $735 = tempRet0;
  17387. $736 = (_bitshift64Shl(($732|0),($733|0),21)|0);
  17388. $737 = tempRet0;
  17389. $738 = (_i64Subtract(($726|0),($727|0),($736|0),($737|0))|0);
  17390. $739 = tempRet0;
  17391. $740 = (_bitshift64Ashr(($734|0),($735|0),21)|0);
  17392. $741 = tempRet0;
  17393. $742 = (_i64Add(($740|0),($741|0),($628|0),($629|0))|0);
  17394. $743 = tempRet0;
  17395. $744 = (_bitshift64Shl(($740|0),($741|0),21)|0);
  17396. $745 = tempRet0;
  17397. $746 = (_i64Subtract(($734|0),($735|0),($744|0),($745|0))|0);
  17398. $747 = tempRet0;
  17399. $748 = (_bitshift64Ashr(($742|0),($743|0),21)|0);
  17400. $749 = tempRet0;
  17401. $750 = (_i64Add(($624|0),($625|0),($748|0),($749|0))|0);
  17402. $751 = tempRet0;
  17403. $752 = (_bitshift64Shl(($748|0),($749|0),21)|0);
  17404. $753 = tempRet0;
  17405. $754 = (_i64Subtract(($742|0),($743|0),($752|0),($753|0))|0);
  17406. $755 = tempRet0;
  17407. $756 = (_bitshift64Ashr(($750|0),($751|0),21)|0);
  17408. $757 = tempRet0;
  17409. $758 = (_i64Add(($756|0),($757|0),($636|0),($637|0))|0);
  17410. $759 = tempRet0;
  17411. $760 = (_bitshift64Shl(($756|0),($757|0),21)|0);
  17412. $761 = tempRet0;
  17413. $762 = (_i64Subtract(($750|0),($751|0),($760|0),($761|0))|0);
  17414. $763 = tempRet0;
  17415. $764 = (_bitshift64Ashr(($758|0),($759|0),21)|0);
  17416. $765 = tempRet0;
  17417. $766 = (_bitshift64Shl(($764|0),($765|0),21)|0);
  17418. $767 = tempRet0;
  17419. $768 = (_i64Subtract(($758|0),($759|0),($766|0),($767|0))|0);
  17420. $769 = tempRet0;
  17421. $770 = (___muldi3(($764|0),($765|0),666643,0)|0);
  17422. $771 = tempRet0;
  17423. $772 = (_i64Add(($770|0),($771|0),($662|0),($663|0))|0);
  17424. $773 = tempRet0;
  17425. $774 = (___muldi3(($764|0),($765|0),470296,0)|0);
  17426. $775 = tempRet0;
  17427. $776 = (_i64Add(($676|0),($677|0),($774|0),($775|0))|0);
  17428. $777 = tempRet0;
  17429. $778 = (___muldi3(($764|0),($765|0),654183,0)|0);
  17430. $779 = tempRet0;
  17431. $780 = (_i64Add(($688|0),($689|0),($778|0),($779|0))|0);
  17432. $781 = tempRet0;
  17433. $782 = (___muldi3(($764|0),($765|0),-997805,-1)|0);
  17434. $783 = tempRet0;
  17435. $784 = (_i64Add(($702|0),($703|0),($782|0),($783|0))|0);
  17436. $785 = tempRet0;
  17437. $786 = (___muldi3(($764|0),($765|0),136657,0)|0);
  17438. $787 = tempRet0;
  17439. $788 = (_i64Add(($714|0),($715|0),($786|0),($787|0))|0);
  17440. $789 = tempRet0;
  17441. $790 = (___muldi3(($764|0),($765|0),-683901,-1)|0);
  17442. $791 = tempRet0;
  17443. $792 = (_i64Add(($722|0),($723|0),($790|0),($791|0))|0);
  17444. $793 = tempRet0;
  17445. $794 = (_bitshift64Ashr(($772|0),($773|0),21)|0);
  17446. $795 = tempRet0;
  17447. $796 = (_i64Add(($776|0),($777|0),($794|0),($795|0))|0);
  17448. $797 = tempRet0;
  17449. $798 = (_bitshift64Shl(($794|0),($795|0),21)|0);
  17450. $799 = tempRet0;
  17451. $800 = (_i64Subtract(($772|0),($773|0),($798|0),($799|0))|0);
  17452. $801 = tempRet0;
  17453. $802 = (_bitshift64Ashr(($796|0),($797|0),21)|0);
  17454. $803 = tempRet0;
  17455. $804 = (_i64Add(($780|0),($781|0),($802|0),($803|0))|0);
  17456. $805 = tempRet0;
  17457. $806 = (_bitshift64Shl(($802|0),($803|0),21)|0);
  17458. $807 = tempRet0;
  17459. $808 = (_i64Subtract(($796|0),($797|0),($806|0),($807|0))|0);
  17460. $809 = tempRet0;
  17461. $810 = (_bitshift64Ashr(($804|0),($805|0),21)|0);
  17462. $811 = tempRet0;
  17463. $812 = (_i64Add(($784|0),($785|0),($810|0),($811|0))|0);
  17464. $813 = tempRet0;
  17465. $814 = (_bitshift64Shl(($810|0),($811|0),21)|0);
  17466. $815 = tempRet0;
  17467. $816 = (_i64Subtract(($804|0),($805|0),($814|0),($815|0))|0);
  17468. $817 = tempRet0;
  17469. $818 = (_bitshift64Ashr(($812|0),($813|0),21)|0);
  17470. $819 = tempRet0;
  17471. $820 = (_i64Add(($788|0),($789|0),($818|0),($819|0))|0);
  17472. $821 = tempRet0;
  17473. $822 = (_bitshift64Shl(($818|0),($819|0),21)|0);
  17474. $823 = tempRet0;
  17475. $824 = (_i64Subtract(($812|0),($813|0),($822|0),($823|0))|0);
  17476. $825 = tempRet0;
  17477. $826 = (_bitshift64Ashr(($820|0),($821|0),21)|0);
  17478. $827 = tempRet0;
  17479. $828 = (_i64Add(($792|0),($793|0),($826|0),($827|0))|0);
  17480. $829 = tempRet0;
  17481. $830 = (_bitshift64Shl(($826|0),($827|0),21)|0);
  17482. $831 = tempRet0;
  17483. $832 = (_i64Subtract(($820|0),($821|0),($830|0),($831|0))|0);
  17484. $833 = tempRet0;
  17485. $834 = (_bitshift64Ashr(($828|0),($829|0),21)|0);
  17486. $835 = tempRet0;
  17487. $836 = (_i64Add(($834|0),($835|0),($730|0),($731|0))|0);
  17488. $837 = tempRet0;
  17489. $838 = (_bitshift64Shl(($834|0),($835|0),21)|0);
  17490. $839 = tempRet0;
  17491. $840 = (_i64Subtract(($828|0),($829|0),($838|0),($839|0))|0);
  17492. $841 = tempRet0;
  17493. $842 = (_bitshift64Ashr(($836|0),($837|0),21)|0);
  17494. $843 = tempRet0;
  17495. $844 = (_i64Add(($842|0),($843|0),($738|0),($739|0))|0);
  17496. $845 = tempRet0;
  17497. $846 = (_bitshift64Shl(($842|0),($843|0),21)|0);
  17498. $847 = tempRet0;
  17499. $848 = (_i64Subtract(($836|0),($837|0),($846|0),($847|0))|0);
  17500. $849 = tempRet0;
  17501. $850 = (_bitshift64Ashr(($844|0),($845|0),21)|0);
  17502. $851 = tempRet0;
  17503. $852 = (_i64Add(($850|0),($851|0),($746|0),($747|0))|0);
  17504. $853 = tempRet0;
  17505. $854 = (_bitshift64Shl(($850|0),($851|0),21)|0);
  17506. $855 = tempRet0;
  17507. $856 = (_i64Subtract(($844|0),($845|0),($854|0),($855|0))|0);
  17508. $857 = tempRet0;
  17509. $858 = (_bitshift64Ashr(($852|0),($853|0),21)|0);
  17510. $859 = tempRet0;
  17511. $860 = (_i64Add(($858|0),($859|0),($754|0),($755|0))|0);
  17512. $861 = tempRet0;
  17513. $862 = (_bitshift64Shl(($858|0),($859|0),21)|0);
  17514. $863 = tempRet0;
  17515. $864 = (_i64Subtract(($852|0),($853|0),($862|0),($863|0))|0);
  17516. $865 = tempRet0;
  17517. $866 = (_bitshift64Ashr(($860|0),($861|0),21)|0);
  17518. $867 = tempRet0;
  17519. $868 = (_i64Add(($866|0),($867|0),($762|0),($763|0))|0);
  17520. $869 = tempRet0;
  17521. $870 = (_bitshift64Shl(($866|0),($867|0),21)|0);
  17522. $871 = tempRet0;
  17523. $872 = (_i64Subtract(($860|0),($861|0),($870|0),($871|0))|0);
  17524. $873 = tempRet0;
  17525. $874 = (_bitshift64Ashr(($868|0),($869|0),21)|0);
  17526. $875 = tempRet0;
  17527. $876 = (_i64Add(($874|0),($875|0),($768|0),($769|0))|0);
  17528. $877 = tempRet0;
  17529. $878 = (_bitshift64Shl(($874|0),($875|0),21)|0);
  17530. $879 = tempRet0;
  17531. $880 = (_i64Subtract(($868|0),($869|0),($878|0),($879|0))|0);
  17532. $881 = tempRet0;
  17533. $882 = $800&255;
  17534. HEAP8[$s>>0] = $882;
  17535. $883 = (_bitshift64Lshr(($800|0),($801|0),8)|0);
  17536. $884 = tempRet0;
  17537. $885 = $883&255;
  17538. $886 = (($s) + 1|0);
  17539. HEAP8[$886>>0] = $885;
  17540. $887 = (_bitshift64Lshr(($800|0),($801|0),16)|0);
  17541. $888 = tempRet0;
  17542. $889 = (_bitshift64Shl(($808|0),($809|0),5)|0);
  17543. $890 = tempRet0;
  17544. $891 = $889 | $887;
  17545. $890 | $888;
  17546. $892 = $891&255;
  17547. HEAP8[$3>>0] = $892;
  17548. $893 = (_bitshift64Lshr(($808|0),($809|0),3)|0);
  17549. $894 = tempRet0;
  17550. $895 = $893&255;
  17551. $896 = (($s) + 3|0);
  17552. HEAP8[$896>>0] = $895;
  17553. $897 = (_bitshift64Lshr(($808|0),($809|0),11)|0);
  17554. $898 = tempRet0;
  17555. $899 = $897&255;
  17556. $900 = (($s) + 4|0);
  17557. HEAP8[$900>>0] = $899;
  17558. $901 = (_bitshift64Lshr(($808|0),($809|0),19)|0);
  17559. $902 = tempRet0;
  17560. $903 = (_bitshift64Shl(($816|0),($817|0),2)|0);
  17561. $904 = tempRet0;
  17562. $905 = $903 | $901;
  17563. $904 | $902;
  17564. $906 = $905&255;
  17565. HEAP8[$9>>0] = $906;
  17566. $907 = (_bitshift64Lshr(($816|0),($817|0),6)|0);
  17567. $908 = tempRet0;
  17568. $909 = $907&255;
  17569. $910 = (($s) + 6|0);
  17570. HEAP8[$910>>0] = $909;
  17571. $911 = (_bitshift64Lshr(($816|0),($817|0),14)|0);
  17572. $912 = tempRet0;
  17573. $913 = (_bitshift64Shl(($824|0),($825|0),7)|0);
  17574. $914 = tempRet0;
  17575. $915 = $913 | $911;
  17576. $914 | $912;
  17577. $916 = $915&255;
  17578. HEAP8[$15>>0] = $916;
  17579. $917 = (_bitshift64Lshr(($824|0),($825|0),1)|0);
  17580. $918 = tempRet0;
  17581. $919 = $917&255;
  17582. $920 = (($s) + 8|0);
  17583. HEAP8[$920>>0] = $919;
  17584. $921 = (_bitshift64Lshr(($824|0),($825|0),9)|0);
  17585. $922 = tempRet0;
  17586. $923 = $921&255;
  17587. $924 = (($s) + 9|0);
  17588. HEAP8[$924>>0] = $923;
  17589. $925 = (_bitshift64Lshr(($824|0),($825|0),17)|0);
  17590. $926 = tempRet0;
  17591. $927 = (_bitshift64Shl(($832|0),($833|0),4)|0);
  17592. $928 = tempRet0;
  17593. $929 = $927 | $925;
  17594. $928 | $926;
  17595. $930 = $929&255;
  17596. HEAP8[$21>>0] = $930;
  17597. $931 = (_bitshift64Lshr(($832|0),($833|0),4)|0);
  17598. $932 = tempRet0;
  17599. $933 = $931&255;
  17600. $934 = (($s) + 11|0);
  17601. HEAP8[$934>>0] = $933;
  17602. $935 = (_bitshift64Lshr(($832|0),($833|0),12)|0);
  17603. $936 = tempRet0;
  17604. $937 = $935&255;
  17605. $938 = (($s) + 12|0);
  17606. HEAP8[$938>>0] = $937;
  17607. $939 = (_bitshift64Lshr(($832|0),($833|0),20)|0);
  17608. $940 = tempRet0;
  17609. $941 = (_bitshift64Shl(($840|0),($841|0),1)|0);
  17610. $942 = tempRet0;
  17611. $943 = $941 | $939;
  17612. $942 | $940;
  17613. $944 = $943&255;
  17614. HEAP8[$27>>0] = $944;
  17615. $945 = (_bitshift64Lshr(($840|0),($841|0),7)|0);
  17616. $946 = tempRet0;
  17617. $947 = $945&255;
  17618. $948 = (($s) + 14|0);
  17619. HEAP8[$948>>0] = $947;
  17620. $949 = (_bitshift64Lshr(($840|0),($841|0),15)|0);
  17621. $950 = tempRet0;
  17622. $951 = (_bitshift64Shl(($848|0),($849|0),6)|0);
  17623. $952 = tempRet0;
  17624. $953 = $951 | $949;
  17625. $952 | $950;
  17626. $954 = $953&255;
  17627. HEAP8[$33>>0] = $954;
  17628. $955 = (_bitshift64Lshr(($848|0),($849|0),2)|0);
  17629. $956 = tempRet0;
  17630. $957 = $955&255;
  17631. $958 = (($s) + 16|0);
  17632. HEAP8[$958>>0] = $957;
  17633. $959 = (_bitshift64Lshr(($848|0),($849|0),10)|0);
  17634. $960 = tempRet0;
  17635. $961 = $959&255;
  17636. $962 = (($s) + 17|0);
  17637. HEAP8[$962>>0] = $961;
  17638. $963 = (_bitshift64Lshr(($848|0),($849|0),18)|0);
  17639. $964 = tempRet0;
  17640. $965 = (_bitshift64Shl(($856|0),($857|0),3)|0);
  17641. $966 = tempRet0;
  17642. $967 = $965 | $963;
  17643. $966 | $964;
  17644. $968 = $967&255;
  17645. HEAP8[$39>>0] = $968;
  17646. $969 = (_bitshift64Lshr(($856|0),($857|0),5)|0);
  17647. $970 = tempRet0;
  17648. $971 = $969&255;
  17649. $972 = (($s) + 19|0);
  17650. HEAP8[$972>>0] = $971;
  17651. $973 = (_bitshift64Lshr(($856|0),($857|0),13)|0);
  17652. $974 = tempRet0;
  17653. $975 = $973&255;
  17654. $976 = (($s) + 20|0);
  17655. HEAP8[$976>>0] = $975;
  17656. $977 = $864&255;
  17657. HEAP8[$45>>0] = $977;
  17658. $978 = (_bitshift64Lshr(($864|0),($865|0),8)|0);
  17659. $979 = tempRet0;
  17660. $980 = $978&255;
  17661. $981 = (($s) + 22|0);
  17662. HEAP8[$981>>0] = $980;
  17663. $982 = (_bitshift64Lshr(($864|0),($865|0),16)|0);
  17664. $983 = tempRet0;
  17665. $984 = (_bitshift64Shl(($872|0),($873|0),5)|0);
  17666. $985 = tempRet0;
  17667. $986 = $984 | $982;
  17668. $985 | $983;
  17669. $987 = $986&255;
  17670. HEAP8[$49>>0] = $987;
  17671. $988 = (_bitshift64Lshr(($872|0),($873|0),3)|0);
  17672. $989 = tempRet0;
  17673. $990 = $988&255;
  17674. $991 = (($s) + 24|0);
  17675. HEAP8[$991>>0] = $990;
  17676. $992 = (_bitshift64Lshr(($872|0),($873|0),11)|0);
  17677. $993 = tempRet0;
  17678. $994 = $992&255;
  17679. $995 = (($s) + 25|0);
  17680. HEAP8[$995>>0] = $994;
  17681. $996 = (_bitshift64Lshr(($872|0),($873|0),19)|0);
  17682. $997 = tempRet0;
  17683. $998 = (_bitshift64Shl(($880|0),($881|0),2)|0);
  17684. $999 = tempRet0;
  17685. $1000 = $998 | $996;
  17686. $999 | $997;
  17687. $1001 = $1000&255;
  17688. HEAP8[$55>>0] = $1001;
  17689. $1002 = (_bitshift64Lshr(($880|0),($881|0),6)|0);
  17690. $1003 = tempRet0;
  17691. $1004 = $1002&255;
  17692. $1005 = (($s) + 27|0);
  17693. HEAP8[$1005>>0] = $1004;
  17694. $1006 = (_bitshift64Lshr(($880|0),($881|0),14)|0);
  17695. $1007 = tempRet0;
  17696. $1008 = (_bitshift64Shl(($876|0),($877|0),7)|0);
  17697. $1009 = tempRet0;
  17698. $1010 = $1006 | $1008;
  17699. $1007 | $1009;
  17700. $1011 = $1010&255;
  17701. HEAP8[$61>>0] = $1011;
  17702. $1012 = (_bitshift64Lshr(($876|0),($877|0),1)|0);
  17703. $1013 = tempRet0;
  17704. $1014 = $1012&255;
  17705. $1015 = (($s) + 29|0);
  17706. HEAP8[$1015>>0] = $1014;
  17707. $1016 = (_bitshift64Lshr(($876|0),($877|0),9)|0);
  17708. $1017 = tempRet0;
  17709. $1018 = $1016&255;
  17710. $1019 = (($s) + 30|0);
  17711. HEAP8[$1019>>0] = $1018;
  17712. $1020 = (_bitshift64Lshr(($876|0),($877|0),17)|0);
  17713. $1021 = tempRet0;
  17714. $1022 = $1020&255;
  17715. HEAP8[$67>>0] = $1022;
  17716. STACKTOP = sp;return;
  17717. }
  17718. function _load_351($in) {
  17719. $in = $in|0;
  17720. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  17721. sp = STACKTOP;
  17722. $0 = HEAP8[$in>>0]|0;
  17723. $1 = $0&255;
  17724. $2 = (($in) + 1|0);
  17725. $3 = HEAP8[$2>>0]|0;
  17726. $4 = $3&255;
  17727. $5 = (_bitshift64Shl(($4|0),0,8)|0);
  17728. $6 = tempRet0;
  17729. $7 = $5 | $1;
  17730. $8 = (($in) + 2|0);
  17731. $9 = HEAP8[$8>>0]|0;
  17732. $10 = $9&255;
  17733. $11 = (_bitshift64Shl(($10|0),0,16)|0);
  17734. $12 = tempRet0;
  17735. $13 = $7 | $11;
  17736. $14 = $6 | $12;
  17737. tempRet0 = $14;
  17738. STACKTOP = sp;return ($13|0);
  17739. }
  17740. function _load_452($in) {
  17741. $in = $in|0;
  17742. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0;
  17743. var $8 = 0, $9 = 0, label = 0, sp = 0;
  17744. sp = STACKTOP;
  17745. $0 = HEAP8[$in>>0]|0;
  17746. $1 = $0&255;
  17747. $2 = (($in) + 1|0);
  17748. $3 = HEAP8[$2>>0]|0;
  17749. $4 = $3&255;
  17750. $5 = (_bitshift64Shl(($4|0),0,8)|0);
  17751. $6 = tempRet0;
  17752. $7 = $5 | $1;
  17753. $8 = (($in) + 2|0);
  17754. $9 = HEAP8[$8>>0]|0;
  17755. $10 = $9&255;
  17756. $11 = (_bitshift64Shl(($10|0),0,16)|0);
  17757. $12 = tempRet0;
  17758. $13 = $7 | $11;
  17759. $14 = $6 | $12;
  17760. $15 = (($in) + 3|0);
  17761. $16 = HEAP8[$15>>0]|0;
  17762. $17 = $16&255;
  17763. $18 = (_bitshift64Shl(($17|0),0,24)|0);
  17764. $19 = tempRet0;
  17765. $20 = $13 | $18;
  17766. $21 = $14 | $19;
  17767. tempRet0 = $21;
  17768. STACKTOP = sp;return ($20|0);
  17769. }
  17770. function _sph_sha512_init($cc) {
  17771. $cc = $cc|0;
  17772. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  17773. sp = STACKTOP;
  17774. $0 = (($cc) + 128|0);
  17775. dest=$0+0|0; src=31840+0|0; stop=dest+64|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  17776. $1 = (($cc) + 192|0);
  17777. $2 = $1;
  17778. $3 = $2;
  17779. HEAP32[$3>>2] = 0;
  17780. $4 = (($2) + 4)|0;
  17781. $5 = $4;
  17782. HEAP32[$5>>2] = 0;
  17783. STACKTOP = sp;return;
  17784. }
  17785. function _sph_sha384($cc,$data,$len) {
  17786. $cc = $cc|0;
  17787. $data = $data|0;
  17788. $len = $len|0;
  17789. var $$01$ = 0, $$012 = 0, $$03 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0;
  17790. var $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $current$04 = 0, $current$1 = 0, label = 0, sp = 0;
  17791. sp = STACKTOP;
  17792. $0 = (($cc) + 192|0);
  17793. $1 = ($len|0)==(0);
  17794. if ($1) {
  17795. STACKTOP = sp;return;
  17796. }
  17797. $2 = $0;
  17798. $3 = $2;
  17799. $4 = HEAP32[$3>>2]|0;
  17800. $5 = (($2) + 4)|0;
  17801. $6 = $5;
  17802. $7 = HEAP32[$6>>2]|0;
  17803. $8 = $4 & 127;
  17804. $9 = (($cc) + 128|0);
  17805. $$012 = $len;$$03 = $data;$current$04 = $8;
  17806. while(1) {
  17807. $10 = (128 - ($current$04))|0;
  17808. $11 = ($10>>>0)>($$012>>>0);
  17809. $$01$ = $11 ? $$012 : $10;
  17810. $12 = (($cc) + ($current$04)|0);
  17811. _memcpy(($12|0),($$03|0),($$01$|0))|0;
  17812. $13 = (($$03) + ($$01$)|0);
  17813. $14 = (($$01$) + ($current$04))|0;
  17814. $15 = (($$012) - ($$01$))|0;
  17815. $16 = ($14|0)==(128);
  17816. if ($16) {
  17817. _sha3_round($cc,$9);
  17818. $current$1 = 0;
  17819. } else {
  17820. $current$1 = $14;
  17821. }
  17822. $17 = $0;
  17823. $18 = $17;
  17824. $19 = HEAP32[$18>>2]|0;
  17825. $20 = (($17) + 4)|0;
  17826. $21 = $20;
  17827. $22 = HEAP32[$21>>2]|0;
  17828. $23 = (_i64Add(($19|0),($22|0),($$01$|0),0)|0);
  17829. $24 = tempRet0;
  17830. $25 = $0;
  17831. $26 = $25;
  17832. HEAP32[$26>>2] = $23;
  17833. $27 = (($25) + 4)|0;
  17834. $28 = $27;
  17835. HEAP32[$28>>2] = $24;
  17836. $29 = ($$012|0)==($$01$|0);
  17837. if ($29) {
  17838. break;
  17839. } else {
  17840. $$012 = $15;$$03 = $13;$current$04 = $current$1;
  17841. }
  17842. }
  17843. STACKTOP = sp;return;
  17844. }
  17845. function _sph_sha512_close($cc,$dst) {
  17846. $cc = $cc|0;
  17847. $dst = $dst|0;
  17848. var label = 0, sp = 0;
  17849. sp = STACKTOP;
  17850. _sha384_close($cc,$dst,8);
  17851. _sph_sha512_init($cc);
  17852. STACKTOP = sp;return;
  17853. }
  17854. function _sha3_round($data,$r) {
  17855. $data = $data|0;
  17856. $r = $r|0;
  17857. var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0;
  17858. var $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0;
  17859. var $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0;
  17860. var $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0;
  17861. var $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0;
  17862. var $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0;
  17863. var $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0;
  17864. var $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0;
  17865. var $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0;
  17866. var $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0;
  17867. var $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0;
  17868. var $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0;
  17869. var $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0;
  17870. var $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0;
  17871. var $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0;
  17872. var $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0;
  17873. var $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0;
  17874. var $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0;
  17875. var $422 = 0, $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0;
  17876. var $440 = 0, $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0;
  17877. var $459 = 0, $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0;
  17878. var $477 = 0, $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0;
  17879. var $495 = 0, $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0;
  17880. var $512 = 0, $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0;
  17881. var $530 = 0, $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0;
  17882. var $549 = 0, $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0;
  17883. var $567 = 0, $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0;
  17884. var $585 = 0, $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0;
  17885. var $602 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0;
  17886. var $620 = 0, $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0;
  17887. var $639 = 0, $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0, $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0;
  17888. var $657 = 0, $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0, $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0;
  17889. var $675 = 0, $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0, $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0;
  17890. var $693 = 0, $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0;
  17891. var $710 = 0, $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0;
  17892. var $729 = 0, $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0;
  17893. var $747 = 0, $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0, $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0;
  17894. var $765 = 0, $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0;
  17895. var $783 = 0, $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0;
  17896. var $800 = 0, $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0, $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0;
  17897. var $819 = 0, $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0;
  17898. var $837 = 0, $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0;
  17899. var $855 = 0, $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0;
  17900. var $873 = 0, $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0;
  17901. var $891 = 0, $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0;
  17902. var $909 = 0, $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0;
  17903. var $927 = 0, $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0;
  17904. var $945 = 0, $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $W = 0, $exitcond = 0, $exitcond19 = 0, $i$011 = 0, $i$110 = 0, $i$29 = 0;
  17905. var label = 0, sp = 0;
  17906. sp = STACKTOP;
  17907. STACKTOP = STACKTOP + 640|0;
  17908. $W = sp;
  17909. $i$011 = 0;
  17910. while(1) {
  17911. $0 = $i$011 << 3;
  17912. $1 = (($data) + ($0)|0);
  17913. $2 = (_sph_dec64be_aligned($1)|0);
  17914. $3 = tempRet0;
  17915. $4 = (($W) + ($i$011<<3)|0);
  17916. $5 = $4;
  17917. $6 = $5;
  17918. HEAP32[$6>>2] = $2;
  17919. $7 = (($5) + 4)|0;
  17920. $8 = $7;
  17921. HEAP32[$8>>2] = $3;
  17922. $9 = (($i$011) + 1)|0;
  17923. $exitcond19 = ($9|0)==(16);
  17924. if ($exitcond19) {
  17925. $i$110 = 16;
  17926. break;
  17927. } else {
  17928. $i$011 = $9;
  17929. }
  17930. }
  17931. while(1) {
  17932. $10 = (($i$110) + -2)|0;
  17933. $11 = (($W) + ($10<<3)|0);
  17934. $12 = $11;
  17935. $13 = $12;
  17936. $14 = HEAP32[$13>>2]|0;
  17937. $15 = (($12) + 4)|0;
  17938. $16 = $15;
  17939. $17 = HEAP32[$16>>2]|0;
  17940. $18 = (_bitshift64Shl(($14|0),($17|0),45)|0);
  17941. $19 = tempRet0;
  17942. $20 = (_bitshift64Lshr(($14|0),($17|0),19)|0);
  17943. $21 = tempRet0;
  17944. $22 = $18 | $20;
  17945. $23 = $19 | $21;
  17946. $24 = (_bitshift64Shl(($14|0),($17|0),3)|0);
  17947. $25 = tempRet0;
  17948. $26 = (_bitshift64Lshr(($14|0),($17|0),61)|0);
  17949. $27 = tempRet0;
  17950. $28 = $24 | $26;
  17951. $29 = $25 | $27;
  17952. $30 = (_bitshift64Lshr(($14|0),($17|0),6)|0);
  17953. $31 = tempRet0;
  17954. $32 = $28 ^ $30;
  17955. $33 = $29 ^ $31;
  17956. $34 = $32 ^ $22;
  17957. $35 = $33 ^ $23;
  17958. $36 = (($i$110) + -7)|0;
  17959. $37 = (($W) + ($36<<3)|0);
  17960. $38 = $37;
  17961. $39 = $38;
  17962. $40 = HEAP32[$39>>2]|0;
  17963. $41 = (($38) + 4)|0;
  17964. $42 = $41;
  17965. $43 = HEAP32[$42>>2]|0;
  17966. $44 = (($i$110) + -15)|0;
  17967. $45 = (($W) + ($44<<3)|0);
  17968. $46 = $45;
  17969. $47 = $46;
  17970. $48 = HEAP32[$47>>2]|0;
  17971. $49 = (($46) + 4)|0;
  17972. $50 = $49;
  17973. $51 = HEAP32[$50>>2]|0;
  17974. $52 = (_bitshift64Shl(($48|0),($51|0),63)|0);
  17975. $53 = tempRet0;
  17976. $54 = (_bitshift64Lshr(($48|0),($51|0),1)|0);
  17977. $55 = tempRet0;
  17978. $56 = $52 | $54;
  17979. $57 = $53 | $55;
  17980. $58 = (_bitshift64Shl(($48|0),($51|0),56)|0);
  17981. $59 = tempRet0;
  17982. $60 = (_bitshift64Lshr(($48|0),($51|0),8)|0);
  17983. $61 = tempRet0;
  17984. $62 = $58 | $60;
  17985. $63 = $59 | $61;
  17986. $64 = (_bitshift64Lshr(($48|0),($51|0),7)|0);
  17987. $65 = tempRet0;
  17988. $66 = $62 ^ $64;
  17989. $67 = $63 ^ $65;
  17990. $68 = $66 ^ $56;
  17991. $69 = $67 ^ $57;
  17992. $70 = (($i$110) + -16)|0;
  17993. $71 = (($W) + ($70<<3)|0);
  17994. $72 = $71;
  17995. $73 = $72;
  17996. $74 = HEAP32[$73>>2]|0;
  17997. $75 = (($72) + 4)|0;
  17998. $76 = $75;
  17999. $77 = HEAP32[$76>>2]|0;
  18000. $78 = (_i64Add(($74|0),($77|0),($40|0),($43|0))|0);
  18001. $79 = tempRet0;
  18002. $80 = (_i64Add(($78|0),($79|0),($34|0),($35|0))|0);
  18003. $81 = tempRet0;
  18004. $82 = (_i64Add(($80|0),($81|0),($68|0),($69|0))|0);
  18005. $83 = tempRet0;
  18006. $84 = (($W) + ($i$110<<3)|0);
  18007. $85 = $84;
  18008. $86 = $85;
  18009. HEAP32[$86>>2] = $82;
  18010. $87 = (($85) + 4)|0;
  18011. $88 = $87;
  18012. HEAP32[$88>>2] = $83;
  18013. $89 = (($i$110) + 1)|0;
  18014. $exitcond = ($89|0)==(80);
  18015. if ($exitcond) {
  18016. break;
  18017. } else {
  18018. $i$110 = $89;
  18019. }
  18020. }
  18021. $90 = $r;
  18022. $91 = $90;
  18023. $92 = HEAP32[$91>>2]|0;
  18024. $93 = (($90) + 4)|0;
  18025. $94 = $93;
  18026. $95 = HEAP32[$94>>2]|0;
  18027. $96 = (($r) + 8|0);
  18028. $97 = $96;
  18029. $98 = $97;
  18030. $99 = HEAP32[$98>>2]|0;
  18031. $100 = (($97) + 4)|0;
  18032. $101 = $100;
  18033. $102 = HEAP32[$101>>2]|0;
  18034. $103 = (($r) + 16|0);
  18035. $104 = $103;
  18036. $105 = $104;
  18037. $106 = HEAP32[$105>>2]|0;
  18038. $107 = (($104) + 4)|0;
  18039. $108 = $107;
  18040. $109 = HEAP32[$108>>2]|0;
  18041. $110 = (($r) + 24|0);
  18042. $111 = $110;
  18043. $112 = $111;
  18044. $113 = HEAP32[$112>>2]|0;
  18045. $114 = (($111) + 4)|0;
  18046. $115 = $114;
  18047. $116 = HEAP32[$115>>2]|0;
  18048. $117 = (($r) + 32|0);
  18049. $118 = $117;
  18050. $119 = $118;
  18051. $120 = HEAP32[$119>>2]|0;
  18052. $121 = (($118) + 4)|0;
  18053. $122 = $121;
  18054. $123 = HEAP32[$122>>2]|0;
  18055. $124 = (($r) + 40|0);
  18056. $125 = $124;
  18057. $126 = $125;
  18058. $127 = HEAP32[$126>>2]|0;
  18059. $128 = (($125) + 4)|0;
  18060. $129 = $128;
  18061. $130 = HEAP32[$129>>2]|0;
  18062. $131 = (($r) + 48|0);
  18063. $132 = $131;
  18064. $133 = $132;
  18065. $134 = HEAP32[$133>>2]|0;
  18066. $135 = (($132) + 4)|0;
  18067. $136 = $135;
  18068. $137 = HEAP32[$136>>2]|0;
  18069. $138 = (($r) + 56|0);
  18070. $139 = $138;
  18071. $140 = $139;
  18072. $141 = HEAP32[$140>>2]|0;
  18073. $142 = (($139) + 4)|0;
  18074. $143 = $142;
  18075. $144 = HEAP32[$143>>2]|0;
  18076. $145 = $120;$146 = $123;$170 = $134;$171 = $127;$173 = $137;$174 = $130;$193 = $141;$194 = $144;$203 = $92;$204 = $95;$228 = $99;$230 = $102;$234 = $106;$236 = $109;$241 = $113;$242 = $116;$i$29 = 0;
  18077. while(1) {
  18078. $147 = (_bitshift64Shl(($145|0),($146|0),50)|0);
  18079. $148 = tempRet0;
  18080. $149 = (_bitshift64Lshr(($145|0),($146|0),14)|0);
  18081. $150 = tempRet0;
  18082. $151 = $147 | $149;
  18083. $152 = $148 | $150;
  18084. $153 = (_bitshift64Shl(($145|0),($146|0),46)|0);
  18085. $154 = tempRet0;
  18086. $155 = (_bitshift64Lshr(($145|0),($146|0),18)|0);
  18087. $156 = tempRet0;
  18088. $157 = $153 | $155;
  18089. $158 = $154 | $156;
  18090. $159 = $151 ^ $157;
  18091. $160 = $152 ^ $158;
  18092. $161 = (_bitshift64Shl(($145|0),($146|0),23)|0);
  18093. $162 = tempRet0;
  18094. $163 = (_bitshift64Lshr(($145|0),($146|0),41)|0);
  18095. $164 = tempRet0;
  18096. $165 = $161 | $163;
  18097. $166 = $162 | $164;
  18098. $167 = $159 ^ $165;
  18099. $168 = $160 ^ $166;
  18100. $169 = $171 ^ $170;
  18101. $172 = $174 ^ $173;
  18102. $175 = $169 & $145;
  18103. $176 = $172 & $146;
  18104. $177 = $175 ^ $170;
  18105. $178 = $176 ^ $173;
  18106. $179 = (31904 + ($i$29<<3)|0);
  18107. $180 = $179;
  18108. $181 = $180;
  18109. $182 = HEAP32[$181>>2]|0;
  18110. $183 = (($180) + 4)|0;
  18111. $184 = $183;
  18112. $185 = HEAP32[$184>>2]|0;
  18113. $186 = (($W) + ($i$29<<3)|0);
  18114. $187 = $186;
  18115. $188 = $187;
  18116. $189 = HEAP32[$188>>2]|0;
  18117. $190 = (($187) + 4)|0;
  18118. $191 = $190;
  18119. $192 = HEAP32[$191>>2]|0;
  18120. $195 = (_i64Add(($177|0),($178|0),($193|0),($194|0))|0);
  18121. $196 = tempRet0;
  18122. $197 = (_i64Add(($195|0),($196|0),($167|0),($168|0))|0);
  18123. $198 = tempRet0;
  18124. $199 = (_i64Add(($197|0),($198|0),($182|0),($185|0))|0);
  18125. $200 = tempRet0;
  18126. $201 = (_i64Add(($199|0),($200|0),($189|0),($192|0))|0);
  18127. $202 = tempRet0;
  18128. $205 = (_bitshift64Shl(($203|0),($204|0),36)|0);
  18129. $206 = tempRet0;
  18130. $207 = (_bitshift64Lshr(($203|0),($204|0),28)|0);
  18131. $208 = tempRet0;
  18132. $209 = $205 | $207;
  18133. $210 = $206 | $208;
  18134. $211 = (_bitshift64Shl(($203|0),($204|0),30)|0);
  18135. $212 = tempRet0;
  18136. $213 = (_bitshift64Lshr(($203|0),($204|0),34)|0);
  18137. $214 = tempRet0;
  18138. $215 = $211 | $213;
  18139. $216 = $212 | $214;
  18140. $217 = $209 ^ $215;
  18141. $218 = $210 ^ $216;
  18142. $219 = (_bitshift64Shl(($203|0),($204|0),25)|0);
  18143. $220 = tempRet0;
  18144. $221 = (_bitshift64Lshr(($203|0),($204|0),39)|0);
  18145. $222 = tempRet0;
  18146. $223 = $219 | $221;
  18147. $224 = $220 | $222;
  18148. $225 = $217 ^ $223;
  18149. $226 = $218 ^ $224;
  18150. $227 = $203 & $228;
  18151. $229 = $204 & $230;
  18152. $231 = $203 | $228;
  18153. $232 = $204 | $230;
  18154. $233 = $231 & $234;
  18155. $235 = $232 & $236;
  18156. $237 = $233 | $227;
  18157. $238 = $235 | $229;
  18158. $239 = (_i64Add(($225|0),($226|0),($237|0),($238|0))|0);
  18159. $240 = tempRet0;
  18160. $243 = (_i64Add(($201|0),($202|0),($241|0),($242|0))|0);
  18161. $244 = tempRet0;
  18162. $245 = (_i64Add(($239|0),($240|0),($201|0),($202|0))|0);
  18163. $246 = tempRet0;
  18164. $247 = (_bitshift64Shl(($243|0),($244|0),50)|0);
  18165. $248 = tempRet0;
  18166. $249 = (_bitshift64Lshr(($243|0),($244|0),14)|0);
  18167. $250 = tempRet0;
  18168. $251 = $247 | $249;
  18169. $252 = $248 | $250;
  18170. $253 = (_bitshift64Shl(($243|0),($244|0),46)|0);
  18171. $254 = tempRet0;
  18172. $255 = (_bitshift64Lshr(($243|0),($244|0),18)|0);
  18173. $256 = tempRet0;
  18174. $257 = $253 | $255;
  18175. $258 = $254 | $256;
  18176. $259 = $251 ^ $257;
  18177. $260 = $252 ^ $258;
  18178. $261 = (_bitshift64Shl(($243|0),($244|0),23)|0);
  18179. $262 = tempRet0;
  18180. $263 = (_bitshift64Lshr(($243|0),($244|0),41)|0);
  18181. $264 = tempRet0;
  18182. $265 = $261 | $263;
  18183. $266 = $262 | $264;
  18184. $267 = $259 ^ $265;
  18185. $268 = $260 ^ $266;
  18186. $269 = $145 ^ $171;
  18187. $270 = $146 ^ $174;
  18188. $271 = $243 & $269;
  18189. $272 = $244 & $270;
  18190. $273 = $271 ^ $171;
  18191. $274 = $272 ^ $174;
  18192. $275 = $i$29 | 1;
  18193. $276 = (31904 + ($275<<3)|0);
  18194. $277 = $276;
  18195. $278 = $277;
  18196. $279 = HEAP32[$278>>2]|0;
  18197. $280 = (($277) + 4)|0;
  18198. $281 = $280;
  18199. $282 = HEAP32[$281>>2]|0;
  18200. $283 = (($W) + ($275<<3)|0);
  18201. $284 = $283;
  18202. $285 = $284;
  18203. $286 = HEAP32[$285>>2]|0;
  18204. $287 = (($284) + 4)|0;
  18205. $288 = $287;
  18206. $289 = HEAP32[$288>>2]|0;
  18207. $290 = (_i64Add(($279|0),($282|0),($170|0),($173|0))|0);
  18208. $291 = tempRet0;
  18209. $292 = (_i64Add(($290|0),($291|0),($286|0),($289|0))|0);
  18210. $293 = tempRet0;
  18211. $294 = (_i64Add(($292|0),($293|0),($273|0),($274|0))|0);
  18212. $295 = tempRet0;
  18213. $296 = (_i64Add(($294|0),($295|0),($267|0),($268|0))|0);
  18214. $297 = tempRet0;
  18215. $298 = (_bitshift64Shl(($245|0),($246|0),36)|0);
  18216. $299 = tempRet0;
  18217. $300 = (_bitshift64Lshr(($245|0),($246|0),28)|0);
  18218. $301 = tempRet0;
  18219. $302 = $298 | $300;
  18220. $303 = $299 | $301;
  18221. $304 = (_bitshift64Shl(($245|0),($246|0),30)|0);
  18222. $305 = tempRet0;
  18223. $306 = (_bitshift64Lshr(($245|0),($246|0),34)|0);
  18224. $307 = tempRet0;
  18225. $308 = $304 | $306;
  18226. $309 = $305 | $307;
  18227. $310 = $302 ^ $308;
  18228. $311 = $303 ^ $309;
  18229. $312 = (_bitshift64Shl(($245|0),($246|0),25)|0);
  18230. $313 = tempRet0;
  18231. $314 = (_bitshift64Lshr(($245|0),($246|0),39)|0);
  18232. $315 = tempRet0;
  18233. $316 = $312 | $314;
  18234. $317 = $313 | $315;
  18235. $318 = $310 ^ $316;
  18236. $319 = $311 ^ $317;
  18237. $320 = $245 & $203;
  18238. $321 = $246 & $204;
  18239. $322 = $245 | $203;
  18240. $323 = $246 | $204;
  18241. $324 = $322 & $228;
  18242. $325 = $323 & $230;
  18243. $326 = $324 | $320;
  18244. $327 = $325 | $321;
  18245. $328 = (_i64Add(($318|0),($319|0),($326|0),($327|0))|0);
  18246. $329 = tempRet0;
  18247. $330 = (_i64Add(($296|0),($297|0),($234|0),($236|0))|0);
  18248. $331 = tempRet0;
  18249. $332 = (_i64Add(($328|0),($329|0),($296|0),($297|0))|0);
  18250. $333 = tempRet0;
  18251. $334 = (_bitshift64Shl(($330|0),($331|0),50)|0);
  18252. $335 = tempRet0;
  18253. $336 = (_bitshift64Lshr(($330|0),($331|0),14)|0);
  18254. $337 = tempRet0;
  18255. $338 = $334 | $336;
  18256. $339 = $335 | $337;
  18257. $340 = (_bitshift64Shl(($330|0),($331|0),46)|0);
  18258. $341 = tempRet0;
  18259. $342 = (_bitshift64Lshr(($330|0),($331|0),18)|0);
  18260. $343 = tempRet0;
  18261. $344 = $340 | $342;
  18262. $345 = $341 | $343;
  18263. $346 = $338 ^ $344;
  18264. $347 = $339 ^ $345;
  18265. $348 = (_bitshift64Shl(($330|0),($331|0),23)|0);
  18266. $349 = tempRet0;
  18267. $350 = (_bitshift64Lshr(($330|0),($331|0),41)|0);
  18268. $351 = tempRet0;
  18269. $352 = $348 | $350;
  18270. $353 = $349 | $351;
  18271. $354 = $346 ^ $352;
  18272. $355 = $347 ^ $353;
  18273. $356 = $243 ^ $145;
  18274. $357 = $244 ^ $146;
  18275. $358 = $330 & $356;
  18276. $359 = $331 & $357;
  18277. $360 = $358 ^ $145;
  18278. $361 = $359 ^ $146;
  18279. $362 = $i$29 | 2;
  18280. $363 = (31904 + ($362<<3)|0);
  18281. $364 = $363;
  18282. $365 = $364;
  18283. $366 = HEAP32[$365>>2]|0;
  18284. $367 = (($364) + 4)|0;
  18285. $368 = $367;
  18286. $369 = HEAP32[$368>>2]|0;
  18287. $370 = (($W) + ($362<<3)|0);
  18288. $371 = $370;
  18289. $372 = $371;
  18290. $373 = HEAP32[$372>>2]|0;
  18291. $374 = (($371) + 4)|0;
  18292. $375 = $374;
  18293. $376 = HEAP32[$375>>2]|0;
  18294. $377 = (_i64Add(($366|0),($369|0),($171|0),($174|0))|0);
  18295. $378 = tempRet0;
  18296. $379 = (_i64Add(($377|0),($378|0),($373|0),($376|0))|0);
  18297. $380 = tempRet0;
  18298. $381 = (_i64Add(($379|0),($380|0),($360|0),($361|0))|0);
  18299. $382 = tempRet0;
  18300. $383 = (_i64Add(($381|0),($382|0),($354|0),($355|0))|0);
  18301. $384 = tempRet0;
  18302. $385 = (_bitshift64Shl(($332|0),($333|0),36)|0);
  18303. $386 = tempRet0;
  18304. $387 = (_bitshift64Lshr(($332|0),($333|0),28)|0);
  18305. $388 = tempRet0;
  18306. $389 = $385 | $387;
  18307. $390 = $386 | $388;
  18308. $391 = (_bitshift64Shl(($332|0),($333|0),30)|0);
  18309. $392 = tempRet0;
  18310. $393 = (_bitshift64Lshr(($332|0),($333|0),34)|0);
  18311. $394 = tempRet0;
  18312. $395 = $391 | $393;
  18313. $396 = $392 | $394;
  18314. $397 = $389 ^ $395;
  18315. $398 = $390 ^ $396;
  18316. $399 = (_bitshift64Shl(($332|0),($333|0),25)|0);
  18317. $400 = tempRet0;
  18318. $401 = (_bitshift64Lshr(($332|0),($333|0),39)|0);
  18319. $402 = tempRet0;
  18320. $403 = $399 | $401;
  18321. $404 = $400 | $402;
  18322. $405 = $397 ^ $403;
  18323. $406 = $398 ^ $404;
  18324. $407 = $332 & $245;
  18325. $408 = $333 & $246;
  18326. $409 = $332 | $245;
  18327. $410 = $333 | $246;
  18328. $411 = $409 & $203;
  18329. $412 = $410 & $204;
  18330. $413 = $411 | $407;
  18331. $414 = $412 | $408;
  18332. $415 = (_i64Add(($405|0),($406|0),($413|0),($414|0))|0);
  18333. $416 = tempRet0;
  18334. $417 = (_i64Add(($383|0),($384|0),($228|0),($230|0))|0);
  18335. $418 = tempRet0;
  18336. $419 = (_i64Add(($415|0),($416|0),($383|0),($384|0))|0);
  18337. $420 = tempRet0;
  18338. $421 = (_bitshift64Shl(($417|0),($418|0),50)|0);
  18339. $422 = tempRet0;
  18340. $423 = (_bitshift64Lshr(($417|0),($418|0),14)|0);
  18341. $424 = tempRet0;
  18342. $425 = $421 | $423;
  18343. $426 = $422 | $424;
  18344. $427 = (_bitshift64Shl(($417|0),($418|0),46)|0);
  18345. $428 = tempRet0;
  18346. $429 = (_bitshift64Lshr(($417|0),($418|0),18)|0);
  18347. $430 = tempRet0;
  18348. $431 = $427 | $429;
  18349. $432 = $428 | $430;
  18350. $433 = $425 ^ $431;
  18351. $434 = $426 ^ $432;
  18352. $435 = (_bitshift64Shl(($417|0),($418|0),23)|0);
  18353. $436 = tempRet0;
  18354. $437 = (_bitshift64Lshr(($417|0),($418|0),41)|0);
  18355. $438 = tempRet0;
  18356. $439 = $435 | $437;
  18357. $440 = $436 | $438;
  18358. $441 = $433 ^ $439;
  18359. $442 = $434 ^ $440;
  18360. $443 = $330 ^ $243;
  18361. $444 = $331 ^ $244;
  18362. $445 = $417 & $443;
  18363. $446 = $418 & $444;
  18364. $447 = $445 ^ $243;
  18365. $448 = $446 ^ $244;
  18366. $449 = $i$29 | 3;
  18367. $450 = (31904 + ($449<<3)|0);
  18368. $451 = $450;
  18369. $452 = $451;
  18370. $453 = HEAP32[$452>>2]|0;
  18371. $454 = (($451) + 4)|0;
  18372. $455 = $454;
  18373. $456 = HEAP32[$455>>2]|0;
  18374. $457 = (($W) + ($449<<3)|0);
  18375. $458 = $457;
  18376. $459 = $458;
  18377. $460 = HEAP32[$459>>2]|0;
  18378. $461 = (($458) + 4)|0;
  18379. $462 = $461;
  18380. $463 = HEAP32[$462>>2]|0;
  18381. $464 = (_i64Add(($453|0),($456|0),($145|0),($146|0))|0);
  18382. $465 = tempRet0;
  18383. $466 = (_i64Add(($464|0),($465|0),($460|0),($463|0))|0);
  18384. $467 = tempRet0;
  18385. $468 = (_i64Add(($466|0),($467|0),($447|0),($448|0))|0);
  18386. $469 = tempRet0;
  18387. $470 = (_i64Add(($468|0),($469|0),($441|0),($442|0))|0);
  18388. $471 = tempRet0;
  18389. $472 = (_bitshift64Shl(($419|0),($420|0),36)|0);
  18390. $473 = tempRet0;
  18391. $474 = (_bitshift64Lshr(($419|0),($420|0),28)|0);
  18392. $475 = tempRet0;
  18393. $476 = $472 | $474;
  18394. $477 = $473 | $475;
  18395. $478 = (_bitshift64Shl(($419|0),($420|0),30)|0);
  18396. $479 = tempRet0;
  18397. $480 = (_bitshift64Lshr(($419|0),($420|0),34)|0);
  18398. $481 = tempRet0;
  18399. $482 = $478 | $480;
  18400. $483 = $479 | $481;
  18401. $484 = $476 ^ $482;
  18402. $485 = $477 ^ $483;
  18403. $486 = (_bitshift64Shl(($419|0),($420|0),25)|0);
  18404. $487 = tempRet0;
  18405. $488 = (_bitshift64Lshr(($419|0),($420|0),39)|0);
  18406. $489 = tempRet0;
  18407. $490 = $486 | $488;
  18408. $491 = $487 | $489;
  18409. $492 = $484 ^ $490;
  18410. $493 = $485 ^ $491;
  18411. $494 = $419 & $332;
  18412. $495 = $420 & $333;
  18413. $496 = $419 | $332;
  18414. $497 = $420 | $333;
  18415. $498 = $496 & $245;
  18416. $499 = $497 & $246;
  18417. $500 = $498 | $494;
  18418. $501 = $499 | $495;
  18419. $502 = (_i64Add(($492|0),($493|0),($500|0),($501|0))|0);
  18420. $503 = tempRet0;
  18421. $504 = (_i64Add(($470|0),($471|0),($203|0),($204|0))|0);
  18422. $505 = tempRet0;
  18423. $506 = (_i64Add(($502|0),($503|0),($470|0),($471|0))|0);
  18424. $507 = tempRet0;
  18425. $508 = (_bitshift64Shl(($504|0),($505|0),50)|0);
  18426. $509 = tempRet0;
  18427. $510 = (_bitshift64Lshr(($504|0),($505|0),14)|0);
  18428. $511 = tempRet0;
  18429. $512 = $508 | $510;
  18430. $513 = $509 | $511;
  18431. $514 = (_bitshift64Shl(($504|0),($505|0),46)|0);
  18432. $515 = tempRet0;
  18433. $516 = (_bitshift64Lshr(($504|0),($505|0),18)|0);
  18434. $517 = tempRet0;
  18435. $518 = $514 | $516;
  18436. $519 = $515 | $517;
  18437. $520 = $512 ^ $518;
  18438. $521 = $513 ^ $519;
  18439. $522 = (_bitshift64Shl(($504|0),($505|0),23)|0);
  18440. $523 = tempRet0;
  18441. $524 = (_bitshift64Lshr(($504|0),($505|0),41)|0);
  18442. $525 = tempRet0;
  18443. $526 = $522 | $524;
  18444. $527 = $523 | $525;
  18445. $528 = $520 ^ $526;
  18446. $529 = $521 ^ $527;
  18447. $530 = $417 ^ $330;
  18448. $531 = $418 ^ $331;
  18449. $532 = $504 & $530;
  18450. $533 = $505 & $531;
  18451. $534 = $532 ^ $330;
  18452. $535 = $533 ^ $331;
  18453. $536 = $i$29 | 4;
  18454. $537 = (31904 + ($536<<3)|0);
  18455. $538 = $537;
  18456. $539 = $538;
  18457. $540 = HEAP32[$539>>2]|0;
  18458. $541 = (($538) + 4)|0;
  18459. $542 = $541;
  18460. $543 = HEAP32[$542>>2]|0;
  18461. $544 = (($W) + ($536<<3)|0);
  18462. $545 = $544;
  18463. $546 = $545;
  18464. $547 = HEAP32[$546>>2]|0;
  18465. $548 = (($545) + 4)|0;
  18466. $549 = $548;
  18467. $550 = HEAP32[$549>>2]|0;
  18468. $551 = (_i64Add(($540|0),($543|0),($243|0),($244|0))|0);
  18469. $552 = tempRet0;
  18470. $553 = (_i64Add(($551|0),($552|0),($547|0),($550|0))|0);
  18471. $554 = tempRet0;
  18472. $555 = (_i64Add(($553|0),($554|0),($534|0),($535|0))|0);
  18473. $556 = tempRet0;
  18474. $557 = (_i64Add(($555|0),($556|0),($528|0),($529|0))|0);
  18475. $558 = tempRet0;
  18476. $559 = (_bitshift64Shl(($506|0),($507|0),36)|0);
  18477. $560 = tempRet0;
  18478. $561 = (_bitshift64Lshr(($506|0),($507|0),28)|0);
  18479. $562 = tempRet0;
  18480. $563 = $559 | $561;
  18481. $564 = $560 | $562;
  18482. $565 = (_bitshift64Shl(($506|0),($507|0),30)|0);
  18483. $566 = tempRet0;
  18484. $567 = (_bitshift64Lshr(($506|0),($507|0),34)|0);
  18485. $568 = tempRet0;
  18486. $569 = $565 | $567;
  18487. $570 = $566 | $568;
  18488. $571 = $563 ^ $569;
  18489. $572 = $564 ^ $570;
  18490. $573 = (_bitshift64Shl(($506|0),($507|0),25)|0);
  18491. $574 = tempRet0;
  18492. $575 = (_bitshift64Lshr(($506|0),($507|0),39)|0);
  18493. $576 = tempRet0;
  18494. $577 = $573 | $575;
  18495. $578 = $574 | $576;
  18496. $579 = $571 ^ $577;
  18497. $580 = $572 ^ $578;
  18498. $581 = $506 & $419;
  18499. $582 = $507 & $420;
  18500. $583 = $506 | $419;
  18501. $584 = $507 | $420;
  18502. $585 = $583 & $332;
  18503. $586 = $584 & $333;
  18504. $587 = $585 | $581;
  18505. $588 = $586 | $582;
  18506. $589 = (_i64Add(($579|0),($580|0),($587|0),($588|0))|0);
  18507. $590 = tempRet0;
  18508. $591 = (_i64Add(($557|0),($558|0),($245|0),($246|0))|0);
  18509. $592 = tempRet0;
  18510. $593 = (_i64Add(($589|0),($590|0),($557|0),($558|0))|0);
  18511. $594 = tempRet0;
  18512. $595 = (_bitshift64Shl(($591|0),($592|0),50)|0);
  18513. $596 = tempRet0;
  18514. $597 = (_bitshift64Lshr(($591|0),($592|0),14)|0);
  18515. $598 = tempRet0;
  18516. $599 = $595 | $597;
  18517. $600 = $596 | $598;
  18518. $601 = (_bitshift64Shl(($591|0),($592|0),46)|0);
  18519. $602 = tempRet0;
  18520. $603 = (_bitshift64Lshr(($591|0),($592|0),18)|0);
  18521. $604 = tempRet0;
  18522. $605 = $601 | $603;
  18523. $606 = $602 | $604;
  18524. $607 = $599 ^ $605;
  18525. $608 = $600 ^ $606;
  18526. $609 = (_bitshift64Shl(($591|0),($592|0),23)|0);
  18527. $610 = tempRet0;
  18528. $611 = (_bitshift64Lshr(($591|0),($592|0),41)|0);
  18529. $612 = tempRet0;
  18530. $613 = $609 | $611;
  18531. $614 = $610 | $612;
  18532. $615 = $607 ^ $613;
  18533. $616 = $608 ^ $614;
  18534. $617 = $504 ^ $417;
  18535. $618 = $505 ^ $418;
  18536. $619 = $591 & $617;
  18537. $620 = $592 & $618;
  18538. $621 = $619 ^ $417;
  18539. $622 = $620 ^ $418;
  18540. $623 = $i$29 | 5;
  18541. $624 = (31904 + ($623<<3)|0);
  18542. $625 = $624;
  18543. $626 = $625;
  18544. $627 = HEAP32[$626>>2]|0;
  18545. $628 = (($625) + 4)|0;
  18546. $629 = $628;
  18547. $630 = HEAP32[$629>>2]|0;
  18548. $631 = (($W) + ($623<<3)|0);
  18549. $632 = $631;
  18550. $633 = $632;
  18551. $634 = HEAP32[$633>>2]|0;
  18552. $635 = (($632) + 4)|0;
  18553. $636 = $635;
  18554. $637 = HEAP32[$636>>2]|0;
  18555. $638 = (_i64Add(($627|0),($630|0),($330|0),($331|0))|0);
  18556. $639 = tempRet0;
  18557. $640 = (_i64Add(($638|0),($639|0),($634|0),($637|0))|0);
  18558. $641 = tempRet0;
  18559. $642 = (_i64Add(($640|0),($641|0),($621|0),($622|0))|0);
  18560. $643 = tempRet0;
  18561. $644 = (_i64Add(($642|0),($643|0),($615|0),($616|0))|0);
  18562. $645 = tempRet0;
  18563. $646 = (_bitshift64Shl(($593|0),($594|0),36)|0);
  18564. $647 = tempRet0;
  18565. $648 = (_bitshift64Lshr(($593|0),($594|0),28)|0);
  18566. $649 = tempRet0;
  18567. $650 = $646 | $648;
  18568. $651 = $647 | $649;
  18569. $652 = (_bitshift64Shl(($593|0),($594|0),30)|0);
  18570. $653 = tempRet0;
  18571. $654 = (_bitshift64Lshr(($593|0),($594|0),34)|0);
  18572. $655 = tempRet0;
  18573. $656 = $652 | $654;
  18574. $657 = $653 | $655;
  18575. $658 = $650 ^ $656;
  18576. $659 = $651 ^ $657;
  18577. $660 = (_bitshift64Shl(($593|0),($594|0),25)|0);
  18578. $661 = tempRet0;
  18579. $662 = (_bitshift64Lshr(($593|0),($594|0),39)|0);
  18580. $663 = tempRet0;
  18581. $664 = $660 | $662;
  18582. $665 = $661 | $663;
  18583. $666 = $658 ^ $664;
  18584. $667 = $659 ^ $665;
  18585. $668 = $593 & $506;
  18586. $669 = $594 & $507;
  18587. $670 = $593 | $506;
  18588. $671 = $594 | $507;
  18589. $672 = $670 & $419;
  18590. $673 = $671 & $420;
  18591. $674 = $672 | $668;
  18592. $675 = $673 | $669;
  18593. $676 = (_i64Add(($666|0),($667|0),($674|0),($675|0))|0);
  18594. $677 = tempRet0;
  18595. $678 = (_i64Add(($644|0),($645|0),($332|0),($333|0))|0);
  18596. $679 = tempRet0;
  18597. $680 = (_i64Add(($676|0),($677|0),($644|0),($645|0))|0);
  18598. $681 = tempRet0;
  18599. $682 = (_bitshift64Shl(($678|0),($679|0),50)|0);
  18600. $683 = tempRet0;
  18601. $684 = (_bitshift64Lshr(($678|0),($679|0),14)|0);
  18602. $685 = tempRet0;
  18603. $686 = $682 | $684;
  18604. $687 = $683 | $685;
  18605. $688 = (_bitshift64Shl(($678|0),($679|0),46)|0);
  18606. $689 = tempRet0;
  18607. $690 = (_bitshift64Lshr(($678|0),($679|0),18)|0);
  18608. $691 = tempRet0;
  18609. $692 = $688 | $690;
  18610. $693 = $689 | $691;
  18611. $694 = $686 ^ $692;
  18612. $695 = $687 ^ $693;
  18613. $696 = (_bitshift64Shl(($678|0),($679|0),23)|0);
  18614. $697 = tempRet0;
  18615. $698 = (_bitshift64Lshr(($678|0),($679|0),41)|0);
  18616. $699 = tempRet0;
  18617. $700 = $696 | $698;
  18618. $701 = $697 | $699;
  18619. $702 = $694 ^ $700;
  18620. $703 = $695 ^ $701;
  18621. $704 = $591 ^ $504;
  18622. $705 = $592 ^ $505;
  18623. $706 = $678 & $704;
  18624. $707 = $679 & $705;
  18625. $708 = $706 ^ $504;
  18626. $709 = $707 ^ $505;
  18627. $710 = $i$29 | 6;
  18628. $711 = (31904 + ($710<<3)|0);
  18629. $712 = $711;
  18630. $713 = $712;
  18631. $714 = HEAP32[$713>>2]|0;
  18632. $715 = (($712) + 4)|0;
  18633. $716 = $715;
  18634. $717 = HEAP32[$716>>2]|0;
  18635. $718 = (($W) + ($710<<3)|0);
  18636. $719 = $718;
  18637. $720 = $719;
  18638. $721 = HEAP32[$720>>2]|0;
  18639. $722 = (($719) + 4)|0;
  18640. $723 = $722;
  18641. $724 = HEAP32[$723>>2]|0;
  18642. $725 = (_i64Add(($721|0),($724|0),($714|0),($717|0))|0);
  18643. $726 = tempRet0;
  18644. $727 = (_i64Add(($725|0),($726|0),($417|0),($418|0))|0);
  18645. $728 = tempRet0;
  18646. $729 = (_i64Add(($727|0),($728|0),($708|0),($709|0))|0);
  18647. $730 = tempRet0;
  18648. $731 = (_i64Add(($729|0),($730|0),($702|0),($703|0))|0);
  18649. $732 = tempRet0;
  18650. $733 = (_bitshift64Shl(($680|0),($681|0),36)|0);
  18651. $734 = tempRet0;
  18652. $735 = (_bitshift64Lshr(($680|0),($681|0),28)|0);
  18653. $736 = tempRet0;
  18654. $737 = $733 | $735;
  18655. $738 = $734 | $736;
  18656. $739 = (_bitshift64Shl(($680|0),($681|0),30)|0);
  18657. $740 = tempRet0;
  18658. $741 = (_bitshift64Lshr(($680|0),($681|0),34)|0);
  18659. $742 = tempRet0;
  18660. $743 = $739 | $741;
  18661. $744 = $740 | $742;
  18662. $745 = $737 ^ $743;
  18663. $746 = $738 ^ $744;
  18664. $747 = (_bitshift64Shl(($680|0),($681|0),25)|0);
  18665. $748 = tempRet0;
  18666. $749 = (_bitshift64Lshr(($680|0),($681|0),39)|0);
  18667. $750 = tempRet0;
  18668. $751 = $747 | $749;
  18669. $752 = $748 | $750;
  18670. $753 = $745 ^ $751;
  18671. $754 = $746 ^ $752;
  18672. $755 = $680 & $593;
  18673. $756 = $681 & $594;
  18674. $757 = $680 | $593;
  18675. $758 = $681 | $594;
  18676. $759 = $757 & $506;
  18677. $760 = $758 & $507;
  18678. $761 = $759 | $755;
  18679. $762 = $760 | $756;
  18680. $763 = (_i64Add(($753|0),($754|0),($761|0),($762|0))|0);
  18681. $764 = tempRet0;
  18682. $765 = (_i64Add(($731|0),($732|0),($419|0),($420|0))|0);
  18683. $766 = tempRet0;
  18684. $767 = (_i64Add(($763|0),($764|0),($731|0),($732|0))|0);
  18685. $768 = tempRet0;
  18686. $769 = (_bitshift64Shl(($765|0),($766|0),50)|0);
  18687. $770 = tempRet0;
  18688. $771 = (_bitshift64Lshr(($765|0),($766|0),14)|0);
  18689. $772 = tempRet0;
  18690. $773 = $769 | $771;
  18691. $774 = $770 | $772;
  18692. $775 = (_bitshift64Shl(($765|0),($766|0),46)|0);
  18693. $776 = tempRet0;
  18694. $777 = (_bitshift64Lshr(($765|0),($766|0),18)|0);
  18695. $778 = tempRet0;
  18696. $779 = $775 | $777;
  18697. $780 = $776 | $778;
  18698. $781 = $773 ^ $779;
  18699. $782 = $774 ^ $780;
  18700. $783 = (_bitshift64Shl(($765|0),($766|0),23)|0);
  18701. $784 = tempRet0;
  18702. $785 = (_bitshift64Lshr(($765|0),($766|0),41)|0);
  18703. $786 = tempRet0;
  18704. $787 = $783 | $785;
  18705. $788 = $784 | $786;
  18706. $789 = $781 ^ $787;
  18707. $790 = $782 ^ $788;
  18708. $791 = $678 ^ $591;
  18709. $792 = $679 ^ $592;
  18710. $793 = $765 & $791;
  18711. $794 = $766 & $792;
  18712. $795 = $793 ^ $591;
  18713. $796 = $794 ^ $592;
  18714. $797 = $i$29 | 7;
  18715. $798 = (31904 + ($797<<3)|0);
  18716. $799 = $798;
  18717. $800 = $799;
  18718. $801 = HEAP32[$800>>2]|0;
  18719. $802 = (($799) + 4)|0;
  18720. $803 = $802;
  18721. $804 = HEAP32[$803>>2]|0;
  18722. $805 = (($W) + ($797<<3)|0);
  18723. $806 = $805;
  18724. $807 = $806;
  18725. $808 = HEAP32[$807>>2]|0;
  18726. $809 = (($806) + 4)|0;
  18727. $810 = $809;
  18728. $811 = HEAP32[$810>>2]|0;
  18729. $812 = (_i64Add(($808|0),($811|0),($801|0),($804|0))|0);
  18730. $813 = tempRet0;
  18731. $814 = (_i64Add(($812|0),($813|0),($504|0),($505|0))|0);
  18732. $815 = tempRet0;
  18733. $816 = (_i64Add(($814|0),($815|0),($795|0),($796|0))|0);
  18734. $817 = tempRet0;
  18735. $818 = (_i64Add(($816|0),($817|0),($789|0),($790|0))|0);
  18736. $819 = tempRet0;
  18737. $820 = (_bitshift64Shl(($767|0),($768|0),36)|0);
  18738. $821 = tempRet0;
  18739. $822 = (_bitshift64Lshr(($767|0),($768|0),28)|0);
  18740. $823 = tempRet0;
  18741. $824 = $820 | $822;
  18742. $825 = $821 | $823;
  18743. $826 = (_bitshift64Shl(($767|0),($768|0),30)|0);
  18744. $827 = tempRet0;
  18745. $828 = (_bitshift64Lshr(($767|0),($768|0),34)|0);
  18746. $829 = tempRet0;
  18747. $830 = $826 | $828;
  18748. $831 = $827 | $829;
  18749. $832 = $824 ^ $830;
  18750. $833 = $825 ^ $831;
  18751. $834 = (_bitshift64Shl(($767|0),($768|0),25)|0);
  18752. $835 = tempRet0;
  18753. $836 = (_bitshift64Lshr(($767|0),($768|0),39)|0);
  18754. $837 = tempRet0;
  18755. $838 = $834 | $836;
  18756. $839 = $835 | $837;
  18757. $840 = $832 ^ $838;
  18758. $841 = $833 ^ $839;
  18759. $842 = $767 & $680;
  18760. $843 = $768 & $681;
  18761. $844 = $767 | $680;
  18762. $845 = $768 | $681;
  18763. $846 = $844 & $593;
  18764. $847 = $845 & $594;
  18765. $848 = $846 | $842;
  18766. $849 = $847 | $843;
  18767. $850 = (_i64Add(($840|0),($841|0),($848|0),($849|0))|0);
  18768. $851 = tempRet0;
  18769. $852 = (_i64Add(($818|0),($819|0),($506|0),($507|0))|0);
  18770. $853 = tempRet0;
  18771. $854 = (_i64Add(($850|0),($851|0),($818|0),($819|0))|0);
  18772. $855 = tempRet0;
  18773. $856 = (($i$29) + 8)|0;
  18774. $857 = ($856|0)<(80);
  18775. if ($857) {
  18776. $145 = $852;$146 = $853;$170 = $678;$171 = $765;$173 = $679;$174 = $766;$193 = $591;$194 = $592;$203 = $854;$204 = $855;$228 = $767;$230 = $768;$234 = $680;$236 = $681;$241 = $593;$242 = $594;$i$29 = $856;
  18777. } else {
  18778. break;
  18779. }
  18780. }
  18781. $858 = $r;
  18782. $859 = $858;
  18783. $860 = HEAP32[$859>>2]|0;
  18784. $861 = (($858) + 4)|0;
  18785. $862 = $861;
  18786. $863 = HEAP32[$862>>2]|0;
  18787. $864 = (_i64Add(($860|0),($863|0),($854|0),($855|0))|0);
  18788. $865 = tempRet0;
  18789. $866 = $r;
  18790. $867 = $866;
  18791. HEAP32[$867>>2] = $864;
  18792. $868 = (($866) + 4)|0;
  18793. $869 = $868;
  18794. HEAP32[$869>>2] = $865;
  18795. $870 = $96;
  18796. $871 = $870;
  18797. $872 = HEAP32[$871>>2]|0;
  18798. $873 = (($870) + 4)|0;
  18799. $874 = $873;
  18800. $875 = HEAP32[$874>>2]|0;
  18801. $876 = (_i64Add(($872|0),($875|0),($767|0),($768|0))|0);
  18802. $877 = tempRet0;
  18803. $878 = $96;
  18804. $879 = $878;
  18805. HEAP32[$879>>2] = $876;
  18806. $880 = (($878) + 4)|0;
  18807. $881 = $880;
  18808. HEAP32[$881>>2] = $877;
  18809. $882 = $103;
  18810. $883 = $882;
  18811. $884 = HEAP32[$883>>2]|0;
  18812. $885 = (($882) + 4)|0;
  18813. $886 = $885;
  18814. $887 = HEAP32[$886>>2]|0;
  18815. $888 = (_i64Add(($884|0),($887|0),($680|0),($681|0))|0);
  18816. $889 = tempRet0;
  18817. $890 = $103;
  18818. $891 = $890;
  18819. HEAP32[$891>>2] = $888;
  18820. $892 = (($890) + 4)|0;
  18821. $893 = $892;
  18822. HEAP32[$893>>2] = $889;
  18823. $894 = $110;
  18824. $895 = $894;
  18825. $896 = HEAP32[$895>>2]|0;
  18826. $897 = (($894) + 4)|0;
  18827. $898 = $897;
  18828. $899 = HEAP32[$898>>2]|0;
  18829. $900 = (_i64Add(($896|0),($899|0),($593|0),($594|0))|0);
  18830. $901 = tempRet0;
  18831. $902 = $110;
  18832. $903 = $902;
  18833. HEAP32[$903>>2] = $900;
  18834. $904 = (($902) + 4)|0;
  18835. $905 = $904;
  18836. HEAP32[$905>>2] = $901;
  18837. $906 = $117;
  18838. $907 = $906;
  18839. $908 = HEAP32[$907>>2]|0;
  18840. $909 = (($906) + 4)|0;
  18841. $910 = $909;
  18842. $911 = HEAP32[$910>>2]|0;
  18843. $912 = (_i64Add(($908|0),($911|0),($852|0),($853|0))|0);
  18844. $913 = tempRet0;
  18845. $914 = $117;
  18846. $915 = $914;
  18847. HEAP32[$915>>2] = $912;
  18848. $916 = (($914) + 4)|0;
  18849. $917 = $916;
  18850. HEAP32[$917>>2] = $913;
  18851. $918 = $124;
  18852. $919 = $918;
  18853. $920 = HEAP32[$919>>2]|0;
  18854. $921 = (($918) + 4)|0;
  18855. $922 = $921;
  18856. $923 = HEAP32[$922>>2]|0;
  18857. $924 = (_i64Add(($920|0),($923|0),($765|0),($766|0))|0);
  18858. $925 = tempRet0;
  18859. $926 = $124;
  18860. $927 = $926;
  18861. HEAP32[$927>>2] = $924;
  18862. $928 = (($926) + 4)|0;
  18863. $929 = $928;
  18864. HEAP32[$929>>2] = $925;
  18865. $930 = $131;
  18866. $931 = $930;
  18867. $932 = HEAP32[$931>>2]|0;
  18868. $933 = (($930) + 4)|0;
  18869. $934 = $933;
  18870. $935 = HEAP32[$934>>2]|0;
  18871. $936 = (_i64Add(($932|0),($935|0),($678|0),($679|0))|0);
  18872. $937 = tempRet0;
  18873. $938 = $131;
  18874. $939 = $938;
  18875. HEAP32[$939>>2] = $936;
  18876. $940 = (($938) + 4)|0;
  18877. $941 = $940;
  18878. HEAP32[$941>>2] = $937;
  18879. $942 = $138;
  18880. $943 = $942;
  18881. $944 = HEAP32[$943>>2]|0;
  18882. $945 = (($942) + 4)|0;
  18883. $946 = $945;
  18884. $947 = HEAP32[$946>>2]|0;
  18885. $948 = (_i64Add(($944|0),($947|0),($591|0),($592|0))|0);
  18886. $949 = tempRet0;
  18887. $950 = $138;
  18888. $951 = $950;
  18889. HEAP32[$951>>2] = $948;
  18890. $952 = (($950) + 4)|0;
  18891. $953 = $952;
  18892. HEAP32[$953>>2] = $949;
  18893. STACKTOP = sp;return;
  18894. }
  18895. function _sha384_close($cc,$dst,$rnum) {
  18896. $cc = $cc|0;
  18897. $dst = $dst|0;
  18898. $rnum = $rnum|0;
  18899. var label = 0, sp = 0;
  18900. sp = STACKTOP;
  18901. _sha384_addbits_and_close($cc,0,0,$dst,$rnum);
  18902. STACKTOP = sp;return;
  18903. }
  18904. function _sha384_addbits_and_close($cc,$ub,$n,$dst,$rnum) {
  18905. $cc = $cc|0;
  18906. $ub = $ub|0;
  18907. $n = $n|0;
  18908. $dst = $dst|0;
  18909. $rnum = $rnum|0;
  18910. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0;
  18911. var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0;
  18912. var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, $u$01 = 0, dest = 0, label = 0, sp = 0, stop = 0;
  18913. sp = STACKTOP;
  18914. $0 = (($cc) + 192|0);
  18915. $1 = $0;
  18916. $2 = $1;
  18917. $3 = HEAP32[$2>>2]|0;
  18918. $4 = (($1) + 4)|0;
  18919. $5 = $4;
  18920. $6 = HEAP32[$5>>2]|0;
  18921. $7 = $3 & 127;
  18922. $8 = 128 >>> $n;
  18923. $9 = (0 - ($8))|0;
  18924. $10 = $9 & $ub;
  18925. $11 = $10 | $8;
  18926. $12 = $11&255;
  18927. $13 = (($7) + 1)|0;
  18928. $14 = (($cc) + ($7)|0);
  18929. HEAP8[$14>>0] = $12;
  18930. $15 = ($13>>>0)>(112);
  18931. $16 = (($cc) + ($13)|0);
  18932. if ($15) {
  18933. $17 = $7 ^ 127;
  18934. _memset(($16|0),0,($17|0))|0;
  18935. $18 = (($cc) + 128|0);
  18936. _sha3_round($cc,$18);
  18937. dest=$cc+0|0; stop=dest+112|0; do { HEAP8[dest>>0]=0|0; dest=dest+1|0; } while ((dest|0) < (stop|0));
  18938. } else {
  18939. $19 = (111 - ($7))|0;
  18940. _memset(($16|0),0,($19|0))|0;
  18941. }
  18942. $20 = (($cc) + 112|0);
  18943. $21 = $0;
  18944. $22 = $21;
  18945. $23 = HEAP32[$22>>2]|0;
  18946. $24 = (($21) + 4)|0;
  18947. $25 = $24;
  18948. $26 = HEAP32[$25>>2]|0;
  18949. $27 = (_bitshift64Lshr(($23|0),($26|0),61)|0);
  18950. $28 = tempRet0;
  18951. _sph_enc64be_aligned($20,$27,$28);
  18952. $29 = (($cc) + 120|0);
  18953. $30 = $0;
  18954. $31 = $30;
  18955. $32 = HEAP32[$31>>2]|0;
  18956. $33 = (($30) + 4)|0;
  18957. $34 = $33;
  18958. $35 = HEAP32[$34>>2]|0;
  18959. $36 = (_bitshift64Shl(($32|0),($35|0),3)|0);
  18960. $37 = tempRet0;
  18961. $38 = (_i64Add(($36|0),($37|0),($n|0),0)|0);
  18962. $39 = tempRet0;
  18963. _sph_enc64be_aligned($29,$38,$39);
  18964. $40 = (($cc) + 128|0);
  18965. _sha3_round($cc,$40);
  18966. $41 = ($rnum|0)==(0);
  18967. if ($41) {
  18968. STACKTOP = sp;return;
  18969. } else {
  18970. $u$01 = 0;
  18971. }
  18972. while(1) {
  18973. $42 = $u$01 << 3;
  18974. $43 = (($dst) + ($42)|0);
  18975. $44 = (($40) + ($u$01<<3)|0);
  18976. $45 = $44;
  18977. $46 = $45;
  18978. $47 = HEAP32[$46>>2]|0;
  18979. $48 = (($45) + 4)|0;
  18980. $49 = $48;
  18981. $50 = HEAP32[$49>>2]|0;
  18982. _sph_enc64be($43,$47,$50);
  18983. $51 = (($u$01) + 1)|0;
  18984. $exitcond = ($51|0)==($rnum|0);
  18985. if ($exitcond) {
  18986. break;
  18987. } else {
  18988. $u$01 = $51;
  18989. }
  18990. }
  18991. STACKTOP = sp;return;
  18992. }
  18993. function _sph_dec64be_aligned($src) {
  18994. $src = $src|0;
  18995. var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0;
  18996. var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0;
  18997. var $45 = 0, $46 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  18998. sp = STACKTOP;
  18999. $0 = HEAP8[$src>>0]|0;
  19000. $1 = $0&255;
  19001. $2 = (_bitshift64Shl(($1|0),0,56)|0);
  19002. $3 = tempRet0;
  19003. $4 = (($src) + 1|0);
  19004. $5 = HEAP8[$4>>0]|0;
  19005. $6 = $5&255;
  19006. $7 = (_bitshift64Shl(($6|0),0,48)|0);
  19007. $8 = tempRet0;
  19008. $9 = $7 | $2;
  19009. $10 = $8 | $3;
  19010. $11 = (($src) + 2|0);
  19011. $12 = HEAP8[$11>>0]|0;
  19012. $13 = $12&255;
  19013. $14 = (_bitshift64Shl(($13|0),0,40)|0);
  19014. $15 = tempRet0;
  19015. $16 = $9 | $14;
  19016. $17 = $10 | $15;
  19017. $18 = (($src) + 3|0);
  19018. $19 = HEAP8[$18>>0]|0;
  19019. $20 = $19&255;
  19020. $21 = $17 | $20;
  19021. $22 = (($src) + 4|0);
  19022. $23 = HEAP8[$22>>0]|0;
  19023. $24 = $23&255;
  19024. $25 = (_bitshift64Shl(($24|0),0,24)|0);
  19025. $26 = tempRet0;
  19026. $27 = $16 | $25;
  19027. $28 = $21 | $26;
  19028. $29 = (($src) + 5|0);
  19029. $30 = HEAP8[$29>>0]|0;
  19030. $31 = $30&255;
  19031. $32 = (_bitshift64Shl(($31|0),0,16)|0);
  19032. $33 = tempRet0;
  19033. $34 = $27 | $32;
  19034. $35 = $28 | $33;
  19035. $36 = (($src) + 6|0);
  19036. $37 = HEAP8[$36>>0]|0;
  19037. $38 = $37&255;
  19038. $39 = (_bitshift64Shl(($38|0),0,8)|0);
  19039. $40 = tempRet0;
  19040. $41 = $34 | $39;
  19041. $42 = $35 | $40;
  19042. $43 = (($src) + 7|0);
  19043. $44 = HEAP8[$43>>0]|0;
  19044. $45 = $44&255;
  19045. $46 = $41 | $45;
  19046. tempRet0 = $42;
  19047. STACKTOP = sp;return ($46|0);
  19048. }
  19049. function _sph_enc64be_aligned($dst,$0,$1) {
  19050. $dst = $dst|0;
  19051. $0 = $0|0;
  19052. $1 = $1|0;
  19053. var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0;
  19054. var $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  19055. sp = STACKTOP;
  19056. $2 = (_bitshift64Lshr(($0|0),($1|0),56)|0);
  19057. $3 = tempRet0;
  19058. $4 = $2&255;
  19059. HEAP8[$dst>>0] = $4;
  19060. $5 = (_bitshift64Lshr(($0|0),($1|0),48)|0);
  19061. $6 = tempRet0;
  19062. $7 = $5&255;
  19063. $8 = (($dst) + 1|0);
  19064. HEAP8[$8>>0] = $7;
  19065. $9 = (_bitshift64Lshr(($0|0),($1|0),40)|0);
  19066. $10 = tempRet0;
  19067. $11 = $9&255;
  19068. $12 = (($dst) + 2|0);
  19069. HEAP8[$12>>0] = $11;
  19070. $13 = $1&255;
  19071. $14 = (($dst) + 3|0);
  19072. HEAP8[$14>>0] = $13;
  19073. $15 = (_bitshift64Lshr(($0|0),($1|0),24)|0);
  19074. $16 = tempRet0;
  19075. $17 = $15&255;
  19076. $18 = (($dst) + 4|0);
  19077. HEAP8[$18>>0] = $17;
  19078. $19 = (_bitshift64Lshr(($0|0),($1|0),16)|0);
  19079. $20 = tempRet0;
  19080. $21 = $19&255;
  19081. $22 = (($dst) + 5|0);
  19082. HEAP8[$22>>0] = $21;
  19083. $23 = (_bitshift64Lshr(($0|0),($1|0),8)|0);
  19084. $24 = tempRet0;
  19085. $25 = $23&255;
  19086. $26 = (($dst) + 6|0);
  19087. HEAP8[$26>>0] = $25;
  19088. $27 = $0&255;
  19089. $28 = (($dst) + 7|0);
  19090. HEAP8[$28>>0] = $27;
  19091. STACKTOP = sp;return;
  19092. }
  19093. function _sph_enc64be($dst,$0,$1) {
  19094. $dst = $dst|0;
  19095. $0 = $0|0;
  19096. $1 = $1|0;
  19097. var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0;
  19098. var $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  19099. sp = STACKTOP;
  19100. $2 = (_bitshift64Lshr(($0|0),($1|0),56)|0);
  19101. $3 = tempRet0;
  19102. $4 = $2&255;
  19103. HEAP8[$dst>>0] = $4;
  19104. $5 = (_bitshift64Lshr(($0|0),($1|0),48)|0);
  19105. $6 = tempRet0;
  19106. $7 = $5&255;
  19107. $8 = (($dst) + 1|0);
  19108. HEAP8[$8>>0] = $7;
  19109. $9 = (_bitshift64Lshr(($0|0),($1|0),40)|0);
  19110. $10 = tempRet0;
  19111. $11 = $9&255;
  19112. $12 = (($dst) + 2|0);
  19113. HEAP8[$12>>0] = $11;
  19114. $13 = $1&255;
  19115. $14 = (($dst) + 3|0);
  19116. HEAP8[$14>>0] = $13;
  19117. $15 = (_bitshift64Lshr(($0|0),($1|0),24)|0);
  19118. $16 = tempRet0;
  19119. $17 = $15&255;
  19120. $18 = (($dst) + 4|0);
  19121. HEAP8[$18>>0] = $17;
  19122. $19 = (_bitshift64Lshr(($0|0),($1|0),16)|0);
  19123. $20 = tempRet0;
  19124. $21 = $19&255;
  19125. $22 = (($dst) + 5|0);
  19126. HEAP8[$22>>0] = $21;
  19127. $23 = (_bitshift64Lshr(($0|0),($1|0),8)|0);
  19128. $24 = tempRet0;
  19129. $25 = $23&255;
  19130. $26 = (($dst) + 6|0);
  19131. HEAP8[$26>>0] = $25;
  19132. $27 = $0&255;
  19133. $28 = (($dst) + 7|0);
  19134. HEAP8[$28>>0] = $27;
  19135. STACKTOP = sp;return;
  19136. }
  19137. function _malloc($bytes) {
  19138. $bytes = $bytes|0;
  19139. var $$pre = 0, $$pre$i = 0, $$pre$i$i = 0, $$pre$i23$i = 0, $$pre$i25 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i24$iZ2D = 0, $$pre$phi$i26Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi59$i$iZ2D = 0, $$pre$phiZ2D = 0, $$pre105 = 0, $$pre58$i$i = 0, $$rsize$0$i = 0, $$rsize$3$i = 0, $$sum = 0, $$sum$i$i = 0, $$sum$i$i$i = 0, $$sum$i12$i = 0, $$sum$i13$i = 0;
  19140. var $$sum$i16$i = 0, $$sum$i19$i = 0, $$sum$i2338 = 0, $$sum$i32 = 0, $$sum$i39 = 0, $$sum1 = 0, $$sum1$i = 0, $$sum1$i$i = 0, $$sum1$i14$i = 0, $$sum1$i20$i = 0, $$sum1$i24 = 0, $$sum10 = 0, $$sum10$i = 0, $$sum10$i$i = 0, $$sum10$pre$i$i = 0, $$sum102$i = 0, $$sum103$i = 0, $$sum104$i = 0, $$sum105$i = 0, $$sum106$i = 0;
  19141. var $$sum107$i = 0, $$sum108$i = 0, $$sum109$i = 0, $$sum11$i = 0, $$sum11$i$i = 0, $$sum11$i22$i = 0, $$sum110$i = 0, $$sum111$i = 0, $$sum1112 = 0, $$sum112$i = 0, $$sum113$i = 0, $$sum114$i = 0, $$sum115$i = 0, $$sum12$i = 0, $$sum12$i$i = 0, $$sum13$i = 0, $$sum13$i$i = 0, $$sum14$i$i = 0, $$sum14$pre$i = 0, $$sum15$i = 0;
  19142. var $$sum15$i$i = 0, $$sum16$i = 0, $$sum16$i$i = 0, $$sum17$i = 0, $$sum17$i$i = 0, $$sum18$i = 0, $$sum1819$i$i = 0, $$sum2 = 0, $$sum2$i = 0, $$sum2$i$i = 0, $$sum2$i$i$i = 0, $$sum2$i15$i = 0, $$sum2$i17$i = 0, $$sum2$i21$i = 0, $$sum2$pre$i = 0, $$sum20$i$i = 0, $$sum21$i$i = 0, $$sum22$i$i = 0, $$sum23$i$i = 0, $$sum24$i$i = 0;
  19143. var $$sum25$i$i = 0, $$sum26$pre$i$i = 0, $$sum27$i$i = 0, $$sum28$i$i = 0, $$sum29$i$i = 0, $$sum3$i = 0, $$sum3$i$i = 0, $$sum3$i27 = 0, $$sum30$i$i = 0, $$sum3132$i$i = 0, $$sum34$i$i = 0, $$sum3536$i$i = 0, $$sum3738$i$i = 0, $$sum39$i$i = 0, $$sum4 = 0, $$sum4$i = 0, $$sum4$i28 = 0, $$sum40$i$i = 0, $$sum41$i$i = 0, $$sum42$i$i = 0;
  19144. var $$sum5$i = 0, $$sum5$i$i = 0, $$sum56 = 0, $$sum6$i = 0, $$sum67$i$i = 0, $$sum7$i = 0, $$sum8$i = 0, $$sum8$pre = 0, $$sum9 = 0, $$sum9$i = 0, $$sum9$i$i = 0, $$tsize$1$i = 0, $$v$0$i = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0;
  19145. var $1003 = 0, $1004 = 0, $1005 = 0, $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0, $101 = 0, $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0;
  19146. var $1021 = 0, $1022 = 0, $1023 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0, $1028 = 0, $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0;
  19147. var $104 = 0, $1040 = 0, $1041 = 0, $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0, $1046 = 0, $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0;
  19148. var $1058 = 0, $1059 = 0, $106 = 0, $1060 = 0, $1061 = 0, $1062 = 0, $1063 = 0, $1064 = 0, $1065 = 0, $1066 = 0, $1067 = 0, $1068 = 0, $1069 = 0, $107 = 0, $1070 = 0, $1071 = 0, $1072 = 0, $1073 = 0, $1074 = 0, $108 = 0;
  19149. var $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0;
  19150. var $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0;
  19151. var $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0;
  19152. var $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0;
  19153. var $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0;
  19154. var $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0;
  19155. var $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0;
  19156. var $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0;
  19157. var $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0;
  19158. var $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0;
  19159. var $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0;
  19160. var $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0;
  19161. var $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0;
  19162. var $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0;
  19163. var $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0;
  19164. var $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0, $388 = 0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0;
  19165. var $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0;
  19166. var $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0, $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0;
  19167. var $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0, $441 = 0, $442 = 0, $443 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0;
  19168. var $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0;
  19169. var $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0, $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0;
  19170. var $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0, $496 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0;
  19171. var $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0;
  19172. var $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0, $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0;
  19173. var $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0;
  19174. var $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0, $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0;
  19175. var $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0, $586 = 0, $587 = 0, $588 = 0, $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0;
  19176. var $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0;
  19177. var $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0, $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0;
  19178. var $631 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0, $64 = 0, $640 = 0, $641 = 0, $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0;
  19179. var $65 = 0, $650 = 0, $651 = 0, $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0, $658 = 0, $659 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0;
  19180. var $668 = 0, $669 = 0, $67 = 0, $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0, $676 = 0, $677 = 0, $678 = 0, $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0;
  19181. var $686 = 0, $687 = 0, $688 = 0, $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0;
  19182. var $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0;
  19183. var $721 = 0, $722 = 0, $723 = 0, $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0, $73 = 0, $730 = 0, $731 = 0, $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0;
  19184. var $74 = 0, $740 = 0, $741 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0, $748 = 0, $749 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0;
  19185. var $758 = 0, $759 = 0, $76 = 0, $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0, $766 = 0, $767 = 0, $768 = 0, $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0;
  19186. var $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0, $784 = 0, $785 = 0, $786 = 0, $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0;
  19187. var $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0;
  19188. var $811 = 0, $812 = 0, $813 = 0, $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0, $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0;
  19189. var $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0, $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0;
  19190. var $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0, $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0;
  19191. var $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0, $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0;
  19192. var $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0, $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0;
  19193. var $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0, $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0;
  19194. var $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0, $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0;
  19195. var $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0, $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0;
  19196. var $956 = 0, $957 = 0, $958 = 0, $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0, $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0;
  19197. var $974 = 0, $975 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0, $982 = 0, $983 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0;
  19198. var $992 = 0, $993 = 0, $994 = 0, $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, $F$0$i$i = 0, $F1$0$i = 0, $F4$0 = 0, $F4$0$i$i = 0, $F5$0$i = 0, $I1$0$c$i$i = 0, $I1$0$i$i = 0, $I7$0$i = 0, $I7$0$i$i = 0, $K12$027$i = 0, $K2$015$i$i = 0, $K8$053$i$i = 0;
  19199. var $R$0$i = 0, $R$0$i$i = 0, $R$0$i18 = 0, $R$1$i = 0, $R$1$i$i = 0, $R$1$i20 = 0, $RP$0$i = 0, $RP$0$i$i = 0, $RP$0$i17 = 0, $T$0$lcssa$i = 0, $T$0$lcssa$i$i = 0, $T$0$lcssa$i26$i = 0, $T$014$i$i = 0, $T$026$i = 0, $T$052$i$i = 0, $br$0$i = 0, $br$030$i = 0, $cond$i = 0, $cond$i$i = 0, $cond$i21 = 0;
  19200. var $exitcond$i$i = 0, $i$02$i$i = 0, $idx$0$i = 0, $mem$0 = 0, $nb$0 = 0, $oldfirst$0$i$i = 0, $or$cond$i = 0, $or$cond$i$i = 0, $or$cond$i27$i = 0, $or$cond$i29 = 0, $or$cond1$i = 0, $or$cond19$i = 0, $or$cond2$i = 0, $or$cond24$i = 0, $or$cond3$i = 0, $or$cond4$i = 0, $or$cond47$i = 0, $or$cond5$i = 0, $or$cond6$i = 0, $or$cond8$i = 0;
  19201. var $qsize$0$i$i = 0, $rsize$0$i = 0, $rsize$0$i15 = 0, $rsize$1$i = 0, $rsize$2$i = 0, $rsize$3$lcssa$i = 0, $rsize$331$i = 0, $rst$0$i = 0, $rst$1$i = 0, $sizebits$0$i = 0, $sp$0$i$i = 0, $sp$0$i$i$i = 0, $sp$073$i = 0, $sp$166$i = 0, $ssize$0$i = 0, $ssize$1$i = 0, $ssize$129$i = 0, $ssize$2$i = 0, $t$0$i = 0, $t$0$i14 = 0;
  19202. var $t$1$i = 0, $t$2$ph$i = 0, $t$2$v$3$i = 0, $t$230$i = 0, $tbase$245$i = 0, $tsize$03141$i = 0, $tsize$1$i = 0, $tsize$244$i = 0, $v$0$i = 0, $v$0$i16 = 0, $v$1$i = 0, $v$2$i = 0, $v$3$lcssa$i = 0, $v$332$i = 0, label = 0, sp = 0;
  19203. sp = STACKTOP;
  19204. $0 = ($bytes>>>0)<(245);
  19205. do {
  19206. if ($0) {
  19207. $1 = ($bytes>>>0)<(11);
  19208. if ($1) {
  19209. $5 = 16;
  19210. } else {
  19211. $2 = (($bytes) + 11)|0;
  19212. $3 = $2 & -8;
  19213. $5 = $3;
  19214. }
  19215. $4 = $5 >>> 3;
  19216. $6 = HEAP32[32544>>2]|0;
  19217. $7 = $6 >>> $4;
  19218. $8 = $7 & 3;
  19219. $9 = ($8|0)==(0);
  19220. if (!($9)) {
  19221. $10 = $7 & 1;
  19222. $11 = $10 ^ 1;
  19223. $12 = (($11) + ($4))|0;
  19224. $13 = $12 << 1;
  19225. $14 = ((32544 + ($13<<2)|0) + 40|0);
  19226. $$sum10 = (($13) + 2)|0;
  19227. $15 = ((32544 + ($$sum10<<2)|0) + 40|0);
  19228. $16 = HEAP32[$15>>2]|0;
  19229. $17 = (($16) + 8|0);
  19230. $18 = HEAP32[$17>>2]|0;
  19231. $19 = ($14|0)==($18|0);
  19232. do {
  19233. if ($19) {
  19234. $20 = 1 << $12;
  19235. $21 = $20 ^ -1;
  19236. $22 = $6 & $21;
  19237. HEAP32[32544>>2] = $22;
  19238. } else {
  19239. $23 = HEAP32[((32544 + 16|0))>>2]|0;
  19240. $24 = ($18>>>0)<($23>>>0);
  19241. if ($24) {
  19242. _abort();
  19243. // unreachable;
  19244. }
  19245. $25 = (($18) + 12|0);
  19246. $26 = HEAP32[$25>>2]|0;
  19247. $27 = ($26|0)==($16|0);
  19248. if ($27) {
  19249. HEAP32[$25>>2] = $14;
  19250. HEAP32[$15>>2] = $18;
  19251. break;
  19252. } else {
  19253. _abort();
  19254. // unreachable;
  19255. }
  19256. }
  19257. } while(0);
  19258. $28 = $12 << 3;
  19259. $29 = $28 | 3;
  19260. $30 = (($16) + 4|0);
  19261. HEAP32[$30>>2] = $29;
  19262. $$sum1112 = $28 | 4;
  19263. $31 = (($16) + ($$sum1112)|0);
  19264. $32 = HEAP32[$31>>2]|0;
  19265. $33 = $32 | 1;
  19266. HEAP32[$31>>2] = $33;
  19267. $mem$0 = $17;
  19268. STACKTOP = sp;return ($mem$0|0);
  19269. }
  19270. $34 = HEAP32[((32544 + 8|0))>>2]|0;
  19271. $35 = ($5>>>0)>($34>>>0);
  19272. if ($35) {
  19273. $36 = ($7|0)==(0);
  19274. if (!($36)) {
  19275. $37 = $7 << $4;
  19276. $38 = 2 << $4;
  19277. $39 = (0 - ($38))|0;
  19278. $40 = $38 | $39;
  19279. $41 = $37 & $40;
  19280. $42 = (0 - ($41))|0;
  19281. $43 = $41 & $42;
  19282. $44 = (($43) + -1)|0;
  19283. $45 = $44 >>> 12;
  19284. $46 = $45 & 16;
  19285. $47 = $44 >>> $46;
  19286. $48 = $47 >>> 5;
  19287. $49 = $48 & 8;
  19288. $50 = $49 | $46;
  19289. $51 = $47 >>> $49;
  19290. $52 = $51 >>> 2;
  19291. $53 = $52 & 4;
  19292. $54 = $50 | $53;
  19293. $55 = $51 >>> $53;
  19294. $56 = $55 >>> 1;
  19295. $57 = $56 & 2;
  19296. $58 = $54 | $57;
  19297. $59 = $55 >>> $57;
  19298. $60 = $59 >>> 1;
  19299. $61 = $60 & 1;
  19300. $62 = $58 | $61;
  19301. $63 = $59 >>> $61;
  19302. $64 = (($62) + ($63))|0;
  19303. $65 = $64 << 1;
  19304. $66 = ((32544 + ($65<<2)|0) + 40|0);
  19305. $$sum4 = (($65) + 2)|0;
  19306. $67 = ((32544 + ($$sum4<<2)|0) + 40|0);
  19307. $68 = HEAP32[$67>>2]|0;
  19308. $69 = (($68) + 8|0);
  19309. $70 = HEAP32[$69>>2]|0;
  19310. $71 = ($66|0)==($70|0);
  19311. do {
  19312. if ($71) {
  19313. $72 = 1 << $64;
  19314. $73 = $72 ^ -1;
  19315. $74 = $6 & $73;
  19316. HEAP32[32544>>2] = $74;
  19317. $88 = $34;
  19318. } else {
  19319. $75 = HEAP32[((32544 + 16|0))>>2]|0;
  19320. $76 = ($70>>>0)<($75>>>0);
  19321. if ($76) {
  19322. _abort();
  19323. // unreachable;
  19324. }
  19325. $77 = (($70) + 12|0);
  19326. $78 = HEAP32[$77>>2]|0;
  19327. $79 = ($78|0)==($68|0);
  19328. if ($79) {
  19329. HEAP32[$77>>2] = $66;
  19330. HEAP32[$67>>2] = $70;
  19331. $$pre = HEAP32[((32544 + 8|0))>>2]|0;
  19332. $88 = $$pre;
  19333. break;
  19334. } else {
  19335. _abort();
  19336. // unreachable;
  19337. }
  19338. }
  19339. } while(0);
  19340. $80 = $64 << 3;
  19341. $81 = (($80) - ($5))|0;
  19342. $82 = $5 | 3;
  19343. $83 = (($68) + 4|0);
  19344. HEAP32[$83>>2] = $82;
  19345. $84 = (($68) + ($5)|0);
  19346. $85 = $81 | 1;
  19347. $$sum56 = $5 | 4;
  19348. $86 = (($68) + ($$sum56)|0);
  19349. HEAP32[$86>>2] = $85;
  19350. $87 = (($68) + ($80)|0);
  19351. HEAP32[$87>>2] = $81;
  19352. $89 = ($88|0)==(0);
  19353. if (!($89)) {
  19354. $90 = HEAP32[((32544 + 20|0))>>2]|0;
  19355. $91 = $88 >>> 3;
  19356. $92 = $91 << 1;
  19357. $93 = ((32544 + ($92<<2)|0) + 40|0);
  19358. $94 = HEAP32[32544>>2]|0;
  19359. $95 = 1 << $91;
  19360. $96 = $94 & $95;
  19361. $97 = ($96|0)==(0);
  19362. if ($97) {
  19363. $98 = $94 | $95;
  19364. HEAP32[32544>>2] = $98;
  19365. $$sum8$pre = (($92) + 2)|0;
  19366. $$pre105 = ((32544 + ($$sum8$pre<<2)|0) + 40|0);
  19367. $$pre$phiZ2D = $$pre105;$F4$0 = $93;
  19368. } else {
  19369. $$sum9 = (($92) + 2)|0;
  19370. $99 = ((32544 + ($$sum9<<2)|0) + 40|0);
  19371. $100 = HEAP32[$99>>2]|0;
  19372. $101 = HEAP32[((32544 + 16|0))>>2]|0;
  19373. $102 = ($100>>>0)<($101>>>0);
  19374. if ($102) {
  19375. _abort();
  19376. // unreachable;
  19377. } else {
  19378. $$pre$phiZ2D = $99;$F4$0 = $100;
  19379. }
  19380. }
  19381. HEAP32[$$pre$phiZ2D>>2] = $90;
  19382. $103 = (($F4$0) + 12|0);
  19383. HEAP32[$103>>2] = $90;
  19384. $104 = (($90) + 8|0);
  19385. HEAP32[$104>>2] = $F4$0;
  19386. $105 = (($90) + 12|0);
  19387. HEAP32[$105>>2] = $93;
  19388. }
  19389. HEAP32[((32544 + 8|0))>>2] = $81;
  19390. HEAP32[((32544 + 20|0))>>2] = $84;
  19391. $mem$0 = $69;
  19392. STACKTOP = sp;return ($mem$0|0);
  19393. }
  19394. $106 = HEAP32[((32544 + 4|0))>>2]|0;
  19395. $107 = ($106|0)==(0);
  19396. if ($107) {
  19397. $nb$0 = $5;
  19398. } else {
  19399. $108 = (0 - ($106))|0;
  19400. $109 = $106 & $108;
  19401. $110 = (($109) + -1)|0;
  19402. $111 = $110 >>> 12;
  19403. $112 = $111 & 16;
  19404. $113 = $110 >>> $112;
  19405. $114 = $113 >>> 5;
  19406. $115 = $114 & 8;
  19407. $116 = $115 | $112;
  19408. $117 = $113 >>> $115;
  19409. $118 = $117 >>> 2;
  19410. $119 = $118 & 4;
  19411. $120 = $116 | $119;
  19412. $121 = $117 >>> $119;
  19413. $122 = $121 >>> 1;
  19414. $123 = $122 & 2;
  19415. $124 = $120 | $123;
  19416. $125 = $121 >>> $123;
  19417. $126 = $125 >>> 1;
  19418. $127 = $126 & 1;
  19419. $128 = $124 | $127;
  19420. $129 = $125 >>> $127;
  19421. $130 = (($128) + ($129))|0;
  19422. $131 = ((32544 + ($130<<2)|0) + 304|0);
  19423. $132 = HEAP32[$131>>2]|0;
  19424. $133 = (($132) + 4|0);
  19425. $134 = HEAP32[$133>>2]|0;
  19426. $135 = $134 & -8;
  19427. $136 = (($135) - ($5))|0;
  19428. $rsize$0$i = $136;$t$0$i = $132;$v$0$i = $132;
  19429. while(1) {
  19430. $137 = (($t$0$i) + 16|0);
  19431. $138 = HEAP32[$137>>2]|0;
  19432. $139 = ($138|0)==(0|0);
  19433. if ($139) {
  19434. $140 = (($t$0$i) + 20|0);
  19435. $141 = HEAP32[$140>>2]|0;
  19436. $142 = ($141|0)==(0|0);
  19437. if ($142) {
  19438. break;
  19439. } else {
  19440. $144 = $141;
  19441. }
  19442. } else {
  19443. $144 = $138;
  19444. }
  19445. $143 = (($144) + 4|0);
  19446. $145 = HEAP32[$143>>2]|0;
  19447. $146 = $145 & -8;
  19448. $147 = (($146) - ($5))|0;
  19449. $148 = ($147>>>0)<($rsize$0$i>>>0);
  19450. $$rsize$0$i = $148 ? $147 : $rsize$0$i;
  19451. $$v$0$i = $148 ? $144 : $v$0$i;
  19452. $rsize$0$i = $$rsize$0$i;$t$0$i = $144;$v$0$i = $$v$0$i;
  19453. }
  19454. $149 = HEAP32[((32544 + 16|0))>>2]|0;
  19455. $150 = ($v$0$i>>>0)<($149>>>0);
  19456. if ($150) {
  19457. _abort();
  19458. // unreachable;
  19459. }
  19460. $151 = (($v$0$i) + ($5)|0);
  19461. $152 = ($v$0$i>>>0)<($151>>>0);
  19462. if (!($152)) {
  19463. _abort();
  19464. // unreachable;
  19465. }
  19466. $153 = (($v$0$i) + 24|0);
  19467. $154 = HEAP32[$153>>2]|0;
  19468. $155 = (($v$0$i) + 12|0);
  19469. $156 = HEAP32[$155>>2]|0;
  19470. $157 = ($156|0)==($v$0$i|0);
  19471. do {
  19472. if ($157) {
  19473. $167 = (($v$0$i) + 20|0);
  19474. $168 = HEAP32[$167>>2]|0;
  19475. $169 = ($168|0)==(0|0);
  19476. if ($169) {
  19477. $170 = (($v$0$i) + 16|0);
  19478. $171 = HEAP32[$170>>2]|0;
  19479. $172 = ($171|0)==(0|0);
  19480. if ($172) {
  19481. $R$1$i = 0;
  19482. break;
  19483. } else {
  19484. $R$0$i = $171;$RP$0$i = $170;
  19485. }
  19486. } else {
  19487. $R$0$i = $168;$RP$0$i = $167;
  19488. }
  19489. while(1) {
  19490. $173 = (($R$0$i) + 20|0);
  19491. $174 = HEAP32[$173>>2]|0;
  19492. $175 = ($174|0)==(0|0);
  19493. if (!($175)) {
  19494. $R$0$i = $174;$RP$0$i = $173;
  19495. continue;
  19496. }
  19497. $176 = (($R$0$i) + 16|0);
  19498. $177 = HEAP32[$176>>2]|0;
  19499. $178 = ($177|0)==(0|0);
  19500. if ($178) {
  19501. break;
  19502. } else {
  19503. $R$0$i = $177;$RP$0$i = $176;
  19504. }
  19505. }
  19506. $179 = ($RP$0$i>>>0)<($149>>>0);
  19507. if ($179) {
  19508. _abort();
  19509. // unreachable;
  19510. } else {
  19511. HEAP32[$RP$0$i>>2] = 0;
  19512. $R$1$i = $R$0$i;
  19513. break;
  19514. }
  19515. } else {
  19516. $158 = (($v$0$i) + 8|0);
  19517. $159 = HEAP32[$158>>2]|0;
  19518. $160 = ($159>>>0)<($149>>>0);
  19519. if ($160) {
  19520. _abort();
  19521. // unreachable;
  19522. }
  19523. $161 = (($159) + 12|0);
  19524. $162 = HEAP32[$161>>2]|0;
  19525. $163 = ($162|0)==($v$0$i|0);
  19526. if (!($163)) {
  19527. _abort();
  19528. // unreachable;
  19529. }
  19530. $164 = (($156) + 8|0);
  19531. $165 = HEAP32[$164>>2]|0;
  19532. $166 = ($165|0)==($v$0$i|0);
  19533. if ($166) {
  19534. HEAP32[$161>>2] = $156;
  19535. HEAP32[$164>>2] = $159;
  19536. $R$1$i = $156;
  19537. break;
  19538. } else {
  19539. _abort();
  19540. // unreachable;
  19541. }
  19542. }
  19543. } while(0);
  19544. $180 = ($154|0)==(0|0);
  19545. do {
  19546. if (!($180)) {
  19547. $181 = (($v$0$i) + 28|0);
  19548. $182 = HEAP32[$181>>2]|0;
  19549. $183 = ((32544 + ($182<<2)|0) + 304|0);
  19550. $184 = HEAP32[$183>>2]|0;
  19551. $185 = ($v$0$i|0)==($184|0);
  19552. if ($185) {
  19553. HEAP32[$183>>2] = $R$1$i;
  19554. $cond$i = ($R$1$i|0)==(0|0);
  19555. if ($cond$i) {
  19556. $186 = 1 << $182;
  19557. $187 = $186 ^ -1;
  19558. $188 = HEAP32[((32544 + 4|0))>>2]|0;
  19559. $189 = $188 & $187;
  19560. HEAP32[((32544 + 4|0))>>2] = $189;
  19561. break;
  19562. }
  19563. } else {
  19564. $190 = HEAP32[((32544 + 16|0))>>2]|0;
  19565. $191 = ($154>>>0)<($190>>>0);
  19566. if ($191) {
  19567. _abort();
  19568. // unreachable;
  19569. }
  19570. $192 = (($154) + 16|0);
  19571. $193 = HEAP32[$192>>2]|0;
  19572. $194 = ($193|0)==($v$0$i|0);
  19573. if ($194) {
  19574. HEAP32[$192>>2] = $R$1$i;
  19575. } else {
  19576. $195 = (($154) + 20|0);
  19577. HEAP32[$195>>2] = $R$1$i;
  19578. }
  19579. $196 = ($R$1$i|0)==(0|0);
  19580. if ($196) {
  19581. break;
  19582. }
  19583. }
  19584. $197 = HEAP32[((32544 + 16|0))>>2]|0;
  19585. $198 = ($R$1$i>>>0)<($197>>>0);
  19586. if ($198) {
  19587. _abort();
  19588. // unreachable;
  19589. }
  19590. $199 = (($R$1$i) + 24|0);
  19591. HEAP32[$199>>2] = $154;
  19592. $200 = (($v$0$i) + 16|0);
  19593. $201 = HEAP32[$200>>2]|0;
  19594. $202 = ($201|0)==(0|0);
  19595. do {
  19596. if (!($202)) {
  19597. $203 = ($201>>>0)<($197>>>0);
  19598. if ($203) {
  19599. _abort();
  19600. // unreachable;
  19601. } else {
  19602. $204 = (($R$1$i) + 16|0);
  19603. HEAP32[$204>>2] = $201;
  19604. $205 = (($201) + 24|0);
  19605. HEAP32[$205>>2] = $R$1$i;
  19606. break;
  19607. }
  19608. }
  19609. } while(0);
  19610. $206 = (($v$0$i) + 20|0);
  19611. $207 = HEAP32[$206>>2]|0;
  19612. $208 = ($207|0)==(0|0);
  19613. if (!($208)) {
  19614. $209 = HEAP32[((32544 + 16|0))>>2]|0;
  19615. $210 = ($207>>>0)<($209>>>0);
  19616. if ($210) {
  19617. _abort();
  19618. // unreachable;
  19619. } else {
  19620. $211 = (($R$1$i) + 20|0);
  19621. HEAP32[$211>>2] = $207;
  19622. $212 = (($207) + 24|0);
  19623. HEAP32[$212>>2] = $R$1$i;
  19624. break;
  19625. }
  19626. }
  19627. }
  19628. } while(0);
  19629. $213 = ($rsize$0$i>>>0)<(16);
  19630. if ($213) {
  19631. $214 = (($rsize$0$i) + ($5))|0;
  19632. $215 = $214 | 3;
  19633. $216 = (($v$0$i) + 4|0);
  19634. HEAP32[$216>>2] = $215;
  19635. $$sum4$i = (($214) + 4)|0;
  19636. $217 = (($v$0$i) + ($$sum4$i)|0);
  19637. $218 = HEAP32[$217>>2]|0;
  19638. $219 = $218 | 1;
  19639. HEAP32[$217>>2] = $219;
  19640. } else {
  19641. $220 = $5 | 3;
  19642. $221 = (($v$0$i) + 4|0);
  19643. HEAP32[$221>>2] = $220;
  19644. $222 = $rsize$0$i | 1;
  19645. $$sum$i39 = $5 | 4;
  19646. $223 = (($v$0$i) + ($$sum$i39)|0);
  19647. HEAP32[$223>>2] = $222;
  19648. $$sum1$i = (($rsize$0$i) + ($5))|0;
  19649. $224 = (($v$0$i) + ($$sum1$i)|0);
  19650. HEAP32[$224>>2] = $rsize$0$i;
  19651. $225 = HEAP32[((32544 + 8|0))>>2]|0;
  19652. $226 = ($225|0)==(0);
  19653. if (!($226)) {
  19654. $227 = HEAP32[((32544 + 20|0))>>2]|0;
  19655. $228 = $225 >>> 3;
  19656. $229 = $228 << 1;
  19657. $230 = ((32544 + ($229<<2)|0) + 40|0);
  19658. $231 = HEAP32[32544>>2]|0;
  19659. $232 = 1 << $228;
  19660. $233 = $231 & $232;
  19661. $234 = ($233|0)==(0);
  19662. if ($234) {
  19663. $235 = $231 | $232;
  19664. HEAP32[32544>>2] = $235;
  19665. $$sum2$pre$i = (($229) + 2)|0;
  19666. $$pre$i = ((32544 + ($$sum2$pre$i<<2)|0) + 40|0);
  19667. $$pre$phi$iZ2D = $$pre$i;$F1$0$i = $230;
  19668. } else {
  19669. $$sum3$i = (($229) + 2)|0;
  19670. $236 = ((32544 + ($$sum3$i<<2)|0) + 40|0);
  19671. $237 = HEAP32[$236>>2]|0;
  19672. $238 = HEAP32[((32544 + 16|0))>>2]|0;
  19673. $239 = ($237>>>0)<($238>>>0);
  19674. if ($239) {
  19675. _abort();
  19676. // unreachable;
  19677. } else {
  19678. $$pre$phi$iZ2D = $236;$F1$0$i = $237;
  19679. }
  19680. }
  19681. HEAP32[$$pre$phi$iZ2D>>2] = $227;
  19682. $240 = (($F1$0$i) + 12|0);
  19683. HEAP32[$240>>2] = $227;
  19684. $241 = (($227) + 8|0);
  19685. HEAP32[$241>>2] = $F1$0$i;
  19686. $242 = (($227) + 12|0);
  19687. HEAP32[$242>>2] = $230;
  19688. }
  19689. HEAP32[((32544 + 8|0))>>2] = $rsize$0$i;
  19690. HEAP32[((32544 + 20|0))>>2] = $151;
  19691. }
  19692. $243 = (($v$0$i) + 8|0);
  19693. $mem$0 = $243;
  19694. STACKTOP = sp;return ($mem$0|0);
  19695. }
  19696. } else {
  19697. $nb$0 = $5;
  19698. }
  19699. } else {
  19700. $244 = ($bytes>>>0)>(4294967231);
  19701. if ($244) {
  19702. $nb$0 = -1;
  19703. } else {
  19704. $245 = (($bytes) + 11)|0;
  19705. $246 = $245 & -8;
  19706. $247 = HEAP32[((32544 + 4|0))>>2]|0;
  19707. $248 = ($247|0)==(0);
  19708. if ($248) {
  19709. $nb$0 = $246;
  19710. } else {
  19711. $249 = (0 - ($246))|0;
  19712. $250 = $245 >>> 8;
  19713. $251 = ($250|0)==(0);
  19714. if ($251) {
  19715. $idx$0$i = 0;
  19716. } else {
  19717. $252 = ($246>>>0)>(16777215);
  19718. if ($252) {
  19719. $idx$0$i = 31;
  19720. } else {
  19721. $253 = (($250) + 1048320)|0;
  19722. $254 = $253 >>> 16;
  19723. $255 = $254 & 8;
  19724. $256 = $250 << $255;
  19725. $257 = (($256) + 520192)|0;
  19726. $258 = $257 >>> 16;
  19727. $259 = $258 & 4;
  19728. $260 = $259 | $255;
  19729. $261 = $256 << $259;
  19730. $262 = (($261) + 245760)|0;
  19731. $263 = $262 >>> 16;
  19732. $264 = $263 & 2;
  19733. $265 = $260 | $264;
  19734. $266 = (14 - ($265))|0;
  19735. $267 = $261 << $264;
  19736. $268 = $267 >>> 15;
  19737. $269 = (($266) + ($268))|0;
  19738. $270 = $269 << 1;
  19739. $271 = (($269) + 7)|0;
  19740. $272 = $246 >>> $271;
  19741. $273 = $272 & 1;
  19742. $274 = $273 | $270;
  19743. $idx$0$i = $274;
  19744. }
  19745. }
  19746. $275 = ((32544 + ($idx$0$i<<2)|0) + 304|0);
  19747. $276 = HEAP32[$275>>2]|0;
  19748. $277 = ($276|0)==(0|0);
  19749. L126: do {
  19750. if ($277) {
  19751. $rsize$2$i = $249;$t$1$i = 0;$v$2$i = 0;
  19752. } else {
  19753. $278 = ($idx$0$i|0)==(31);
  19754. if ($278) {
  19755. $282 = 0;
  19756. } else {
  19757. $279 = $idx$0$i >>> 1;
  19758. $280 = (25 - ($279))|0;
  19759. $282 = $280;
  19760. }
  19761. $281 = $246 << $282;
  19762. $rsize$0$i15 = $249;$rst$0$i = 0;$sizebits$0$i = $281;$t$0$i14 = $276;$v$0$i16 = 0;
  19763. while(1) {
  19764. $283 = (($t$0$i14) + 4|0);
  19765. $284 = HEAP32[$283>>2]|0;
  19766. $285 = $284 & -8;
  19767. $286 = (($285) - ($246))|0;
  19768. $287 = ($286>>>0)<($rsize$0$i15>>>0);
  19769. if ($287) {
  19770. $288 = ($285|0)==($246|0);
  19771. if ($288) {
  19772. $rsize$2$i = $286;$t$1$i = $t$0$i14;$v$2$i = $t$0$i14;
  19773. break L126;
  19774. } else {
  19775. $rsize$1$i = $286;$v$1$i = $t$0$i14;
  19776. }
  19777. } else {
  19778. $rsize$1$i = $rsize$0$i15;$v$1$i = $v$0$i16;
  19779. }
  19780. $289 = (($t$0$i14) + 20|0);
  19781. $290 = HEAP32[$289>>2]|0;
  19782. $291 = $sizebits$0$i >>> 31;
  19783. $292 = ((($t$0$i14) + ($291<<2)|0) + 16|0);
  19784. $293 = HEAP32[$292>>2]|0;
  19785. $294 = ($290|0)==(0|0);
  19786. $295 = ($290|0)==($293|0);
  19787. $or$cond19$i = $294 | $295;
  19788. $rst$1$i = $or$cond19$i ? $rst$0$i : $290;
  19789. $296 = ($293|0)==(0|0);
  19790. $297 = $sizebits$0$i << 1;
  19791. if ($296) {
  19792. $rsize$2$i = $rsize$1$i;$t$1$i = $rst$1$i;$v$2$i = $v$1$i;
  19793. break;
  19794. } else {
  19795. $rsize$0$i15 = $rsize$1$i;$rst$0$i = $rst$1$i;$sizebits$0$i = $297;$t$0$i14 = $293;$v$0$i16 = $v$1$i;
  19796. }
  19797. }
  19798. }
  19799. } while(0);
  19800. $298 = ($t$1$i|0)==(0|0);
  19801. $299 = ($v$2$i|0)==(0|0);
  19802. $or$cond$i = $298 & $299;
  19803. if ($or$cond$i) {
  19804. $300 = 2 << $idx$0$i;
  19805. $301 = (0 - ($300))|0;
  19806. $302 = $300 | $301;
  19807. $303 = $247 & $302;
  19808. $304 = ($303|0)==(0);
  19809. if ($304) {
  19810. $nb$0 = $246;
  19811. break;
  19812. }
  19813. $305 = (0 - ($303))|0;
  19814. $306 = $303 & $305;
  19815. $307 = (($306) + -1)|0;
  19816. $308 = $307 >>> 12;
  19817. $309 = $308 & 16;
  19818. $310 = $307 >>> $309;
  19819. $311 = $310 >>> 5;
  19820. $312 = $311 & 8;
  19821. $313 = $312 | $309;
  19822. $314 = $310 >>> $312;
  19823. $315 = $314 >>> 2;
  19824. $316 = $315 & 4;
  19825. $317 = $313 | $316;
  19826. $318 = $314 >>> $316;
  19827. $319 = $318 >>> 1;
  19828. $320 = $319 & 2;
  19829. $321 = $317 | $320;
  19830. $322 = $318 >>> $320;
  19831. $323 = $322 >>> 1;
  19832. $324 = $323 & 1;
  19833. $325 = $321 | $324;
  19834. $326 = $322 >>> $324;
  19835. $327 = (($325) + ($326))|0;
  19836. $328 = ((32544 + ($327<<2)|0) + 304|0);
  19837. $329 = HEAP32[$328>>2]|0;
  19838. $t$2$ph$i = $329;
  19839. } else {
  19840. $t$2$ph$i = $t$1$i;
  19841. }
  19842. $330 = ($t$2$ph$i|0)==(0|0);
  19843. if ($330) {
  19844. $rsize$3$lcssa$i = $rsize$2$i;$v$3$lcssa$i = $v$2$i;
  19845. } else {
  19846. $rsize$331$i = $rsize$2$i;$t$230$i = $t$2$ph$i;$v$332$i = $v$2$i;
  19847. while(1) {
  19848. $331 = (($t$230$i) + 4|0);
  19849. $332 = HEAP32[$331>>2]|0;
  19850. $333 = $332 & -8;
  19851. $334 = (($333) - ($246))|0;
  19852. $335 = ($334>>>0)<($rsize$331$i>>>0);
  19853. $$rsize$3$i = $335 ? $334 : $rsize$331$i;
  19854. $t$2$v$3$i = $335 ? $t$230$i : $v$332$i;
  19855. $336 = (($t$230$i) + 16|0);
  19856. $337 = HEAP32[$336>>2]|0;
  19857. $338 = ($337|0)==(0|0);
  19858. if (!($338)) {
  19859. $rsize$331$i = $$rsize$3$i;$t$230$i = $337;$v$332$i = $t$2$v$3$i;
  19860. continue;
  19861. }
  19862. $339 = (($t$230$i) + 20|0);
  19863. $340 = HEAP32[$339>>2]|0;
  19864. $341 = ($340|0)==(0|0);
  19865. if ($341) {
  19866. $rsize$3$lcssa$i = $$rsize$3$i;$v$3$lcssa$i = $t$2$v$3$i;
  19867. break;
  19868. } else {
  19869. $rsize$331$i = $$rsize$3$i;$t$230$i = $340;$v$332$i = $t$2$v$3$i;
  19870. }
  19871. }
  19872. }
  19873. $342 = ($v$3$lcssa$i|0)==(0|0);
  19874. if ($342) {
  19875. $nb$0 = $246;
  19876. } else {
  19877. $343 = HEAP32[((32544 + 8|0))>>2]|0;
  19878. $344 = (($343) - ($246))|0;
  19879. $345 = ($rsize$3$lcssa$i>>>0)<($344>>>0);
  19880. if ($345) {
  19881. $346 = HEAP32[((32544 + 16|0))>>2]|0;
  19882. $347 = ($v$3$lcssa$i>>>0)<($346>>>0);
  19883. if ($347) {
  19884. _abort();
  19885. // unreachable;
  19886. }
  19887. $348 = (($v$3$lcssa$i) + ($246)|0);
  19888. $349 = ($v$3$lcssa$i>>>0)<($348>>>0);
  19889. if (!($349)) {
  19890. _abort();
  19891. // unreachable;
  19892. }
  19893. $350 = (($v$3$lcssa$i) + 24|0);
  19894. $351 = HEAP32[$350>>2]|0;
  19895. $352 = (($v$3$lcssa$i) + 12|0);
  19896. $353 = HEAP32[$352>>2]|0;
  19897. $354 = ($353|0)==($v$3$lcssa$i|0);
  19898. do {
  19899. if ($354) {
  19900. $364 = (($v$3$lcssa$i) + 20|0);
  19901. $365 = HEAP32[$364>>2]|0;
  19902. $366 = ($365|0)==(0|0);
  19903. if ($366) {
  19904. $367 = (($v$3$lcssa$i) + 16|0);
  19905. $368 = HEAP32[$367>>2]|0;
  19906. $369 = ($368|0)==(0|0);
  19907. if ($369) {
  19908. $R$1$i20 = 0;
  19909. break;
  19910. } else {
  19911. $R$0$i18 = $368;$RP$0$i17 = $367;
  19912. }
  19913. } else {
  19914. $R$0$i18 = $365;$RP$0$i17 = $364;
  19915. }
  19916. while(1) {
  19917. $370 = (($R$0$i18) + 20|0);
  19918. $371 = HEAP32[$370>>2]|0;
  19919. $372 = ($371|0)==(0|0);
  19920. if (!($372)) {
  19921. $R$0$i18 = $371;$RP$0$i17 = $370;
  19922. continue;
  19923. }
  19924. $373 = (($R$0$i18) + 16|0);
  19925. $374 = HEAP32[$373>>2]|0;
  19926. $375 = ($374|0)==(0|0);
  19927. if ($375) {
  19928. break;
  19929. } else {
  19930. $R$0$i18 = $374;$RP$0$i17 = $373;
  19931. }
  19932. }
  19933. $376 = ($RP$0$i17>>>0)<($346>>>0);
  19934. if ($376) {
  19935. _abort();
  19936. // unreachable;
  19937. } else {
  19938. HEAP32[$RP$0$i17>>2] = 0;
  19939. $R$1$i20 = $R$0$i18;
  19940. break;
  19941. }
  19942. } else {
  19943. $355 = (($v$3$lcssa$i) + 8|0);
  19944. $356 = HEAP32[$355>>2]|0;
  19945. $357 = ($356>>>0)<($346>>>0);
  19946. if ($357) {
  19947. _abort();
  19948. // unreachable;
  19949. }
  19950. $358 = (($356) + 12|0);
  19951. $359 = HEAP32[$358>>2]|0;
  19952. $360 = ($359|0)==($v$3$lcssa$i|0);
  19953. if (!($360)) {
  19954. _abort();
  19955. // unreachable;
  19956. }
  19957. $361 = (($353) + 8|0);
  19958. $362 = HEAP32[$361>>2]|0;
  19959. $363 = ($362|0)==($v$3$lcssa$i|0);
  19960. if ($363) {
  19961. HEAP32[$358>>2] = $353;
  19962. HEAP32[$361>>2] = $356;
  19963. $R$1$i20 = $353;
  19964. break;
  19965. } else {
  19966. _abort();
  19967. // unreachable;
  19968. }
  19969. }
  19970. } while(0);
  19971. $377 = ($351|0)==(0|0);
  19972. do {
  19973. if (!($377)) {
  19974. $378 = (($v$3$lcssa$i) + 28|0);
  19975. $379 = HEAP32[$378>>2]|0;
  19976. $380 = ((32544 + ($379<<2)|0) + 304|0);
  19977. $381 = HEAP32[$380>>2]|0;
  19978. $382 = ($v$3$lcssa$i|0)==($381|0);
  19979. if ($382) {
  19980. HEAP32[$380>>2] = $R$1$i20;
  19981. $cond$i21 = ($R$1$i20|0)==(0|0);
  19982. if ($cond$i21) {
  19983. $383 = 1 << $379;
  19984. $384 = $383 ^ -1;
  19985. $385 = HEAP32[((32544 + 4|0))>>2]|0;
  19986. $386 = $385 & $384;
  19987. HEAP32[((32544 + 4|0))>>2] = $386;
  19988. break;
  19989. }
  19990. } else {
  19991. $387 = HEAP32[((32544 + 16|0))>>2]|0;
  19992. $388 = ($351>>>0)<($387>>>0);
  19993. if ($388) {
  19994. _abort();
  19995. // unreachable;
  19996. }
  19997. $389 = (($351) + 16|0);
  19998. $390 = HEAP32[$389>>2]|0;
  19999. $391 = ($390|0)==($v$3$lcssa$i|0);
  20000. if ($391) {
  20001. HEAP32[$389>>2] = $R$1$i20;
  20002. } else {
  20003. $392 = (($351) + 20|0);
  20004. HEAP32[$392>>2] = $R$1$i20;
  20005. }
  20006. $393 = ($R$1$i20|0)==(0|0);
  20007. if ($393) {
  20008. break;
  20009. }
  20010. }
  20011. $394 = HEAP32[((32544 + 16|0))>>2]|0;
  20012. $395 = ($R$1$i20>>>0)<($394>>>0);
  20013. if ($395) {
  20014. _abort();
  20015. // unreachable;
  20016. }
  20017. $396 = (($R$1$i20) + 24|0);
  20018. HEAP32[$396>>2] = $351;
  20019. $397 = (($v$3$lcssa$i) + 16|0);
  20020. $398 = HEAP32[$397>>2]|0;
  20021. $399 = ($398|0)==(0|0);
  20022. do {
  20023. if (!($399)) {
  20024. $400 = ($398>>>0)<($394>>>0);
  20025. if ($400) {
  20026. _abort();
  20027. // unreachable;
  20028. } else {
  20029. $401 = (($R$1$i20) + 16|0);
  20030. HEAP32[$401>>2] = $398;
  20031. $402 = (($398) + 24|0);
  20032. HEAP32[$402>>2] = $R$1$i20;
  20033. break;
  20034. }
  20035. }
  20036. } while(0);
  20037. $403 = (($v$3$lcssa$i) + 20|0);
  20038. $404 = HEAP32[$403>>2]|0;
  20039. $405 = ($404|0)==(0|0);
  20040. if (!($405)) {
  20041. $406 = HEAP32[((32544 + 16|0))>>2]|0;
  20042. $407 = ($404>>>0)<($406>>>0);
  20043. if ($407) {
  20044. _abort();
  20045. // unreachable;
  20046. } else {
  20047. $408 = (($R$1$i20) + 20|0);
  20048. HEAP32[$408>>2] = $404;
  20049. $409 = (($404) + 24|0);
  20050. HEAP32[$409>>2] = $R$1$i20;
  20051. break;
  20052. }
  20053. }
  20054. }
  20055. } while(0);
  20056. $410 = ($rsize$3$lcssa$i>>>0)<(16);
  20057. L204: do {
  20058. if ($410) {
  20059. $411 = (($rsize$3$lcssa$i) + ($246))|0;
  20060. $412 = $411 | 3;
  20061. $413 = (($v$3$lcssa$i) + 4|0);
  20062. HEAP32[$413>>2] = $412;
  20063. $$sum18$i = (($411) + 4)|0;
  20064. $414 = (($v$3$lcssa$i) + ($$sum18$i)|0);
  20065. $415 = HEAP32[$414>>2]|0;
  20066. $416 = $415 | 1;
  20067. HEAP32[$414>>2] = $416;
  20068. } else {
  20069. $417 = $246 | 3;
  20070. $418 = (($v$3$lcssa$i) + 4|0);
  20071. HEAP32[$418>>2] = $417;
  20072. $419 = $rsize$3$lcssa$i | 1;
  20073. $$sum$i2338 = $246 | 4;
  20074. $420 = (($v$3$lcssa$i) + ($$sum$i2338)|0);
  20075. HEAP32[$420>>2] = $419;
  20076. $$sum1$i24 = (($rsize$3$lcssa$i) + ($246))|0;
  20077. $421 = (($v$3$lcssa$i) + ($$sum1$i24)|0);
  20078. HEAP32[$421>>2] = $rsize$3$lcssa$i;
  20079. $422 = $rsize$3$lcssa$i >>> 3;
  20080. $423 = ($rsize$3$lcssa$i>>>0)<(256);
  20081. if ($423) {
  20082. $424 = $422 << 1;
  20083. $425 = ((32544 + ($424<<2)|0) + 40|0);
  20084. $426 = HEAP32[32544>>2]|0;
  20085. $427 = 1 << $422;
  20086. $428 = $426 & $427;
  20087. $429 = ($428|0)==(0);
  20088. do {
  20089. if ($429) {
  20090. $430 = $426 | $427;
  20091. HEAP32[32544>>2] = $430;
  20092. $$sum14$pre$i = (($424) + 2)|0;
  20093. $$pre$i25 = ((32544 + ($$sum14$pre$i<<2)|0) + 40|0);
  20094. $$pre$phi$i26Z2D = $$pre$i25;$F5$0$i = $425;
  20095. } else {
  20096. $$sum17$i = (($424) + 2)|0;
  20097. $431 = ((32544 + ($$sum17$i<<2)|0) + 40|0);
  20098. $432 = HEAP32[$431>>2]|0;
  20099. $433 = HEAP32[((32544 + 16|0))>>2]|0;
  20100. $434 = ($432>>>0)<($433>>>0);
  20101. if (!($434)) {
  20102. $$pre$phi$i26Z2D = $431;$F5$0$i = $432;
  20103. break;
  20104. }
  20105. _abort();
  20106. // unreachable;
  20107. }
  20108. } while(0);
  20109. HEAP32[$$pre$phi$i26Z2D>>2] = $348;
  20110. $435 = (($F5$0$i) + 12|0);
  20111. HEAP32[$435>>2] = $348;
  20112. $$sum15$i = (($246) + 8)|0;
  20113. $436 = (($v$3$lcssa$i) + ($$sum15$i)|0);
  20114. HEAP32[$436>>2] = $F5$0$i;
  20115. $$sum16$i = (($246) + 12)|0;
  20116. $437 = (($v$3$lcssa$i) + ($$sum16$i)|0);
  20117. HEAP32[$437>>2] = $425;
  20118. break;
  20119. }
  20120. $438 = $rsize$3$lcssa$i >>> 8;
  20121. $439 = ($438|0)==(0);
  20122. if ($439) {
  20123. $I7$0$i = 0;
  20124. } else {
  20125. $440 = ($rsize$3$lcssa$i>>>0)>(16777215);
  20126. if ($440) {
  20127. $I7$0$i = 31;
  20128. } else {
  20129. $441 = (($438) + 1048320)|0;
  20130. $442 = $441 >>> 16;
  20131. $443 = $442 & 8;
  20132. $444 = $438 << $443;
  20133. $445 = (($444) + 520192)|0;
  20134. $446 = $445 >>> 16;
  20135. $447 = $446 & 4;
  20136. $448 = $447 | $443;
  20137. $449 = $444 << $447;
  20138. $450 = (($449) + 245760)|0;
  20139. $451 = $450 >>> 16;
  20140. $452 = $451 & 2;
  20141. $453 = $448 | $452;
  20142. $454 = (14 - ($453))|0;
  20143. $455 = $449 << $452;
  20144. $456 = $455 >>> 15;
  20145. $457 = (($454) + ($456))|0;
  20146. $458 = $457 << 1;
  20147. $459 = (($457) + 7)|0;
  20148. $460 = $rsize$3$lcssa$i >>> $459;
  20149. $461 = $460 & 1;
  20150. $462 = $461 | $458;
  20151. $I7$0$i = $462;
  20152. }
  20153. }
  20154. $463 = ((32544 + ($I7$0$i<<2)|0) + 304|0);
  20155. $$sum2$i = (($246) + 28)|0;
  20156. $464 = (($v$3$lcssa$i) + ($$sum2$i)|0);
  20157. HEAP32[$464>>2] = $I7$0$i;
  20158. $$sum3$i27 = (($246) + 16)|0;
  20159. $465 = (($v$3$lcssa$i) + ($$sum3$i27)|0);
  20160. $$sum4$i28 = (($246) + 20)|0;
  20161. $466 = (($v$3$lcssa$i) + ($$sum4$i28)|0);
  20162. HEAP32[$466>>2] = 0;
  20163. HEAP32[$465>>2] = 0;
  20164. $467 = HEAP32[((32544 + 4|0))>>2]|0;
  20165. $468 = 1 << $I7$0$i;
  20166. $469 = $467 & $468;
  20167. $470 = ($469|0)==(0);
  20168. if ($470) {
  20169. $471 = $467 | $468;
  20170. HEAP32[((32544 + 4|0))>>2] = $471;
  20171. HEAP32[$463>>2] = $348;
  20172. $$sum5$i = (($246) + 24)|0;
  20173. $472 = (($v$3$lcssa$i) + ($$sum5$i)|0);
  20174. HEAP32[$472>>2] = $463;
  20175. $$sum6$i = (($246) + 12)|0;
  20176. $473 = (($v$3$lcssa$i) + ($$sum6$i)|0);
  20177. HEAP32[$473>>2] = $348;
  20178. $$sum7$i = (($246) + 8)|0;
  20179. $474 = (($v$3$lcssa$i) + ($$sum7$i)|0);
  20180. HEAP32[$474>>2] = $348;
  20181. break;
  20182. }
  20183. $475 = HEAP32[$463>>2]|0;
  20184. $476 = ($I7$0$i|0)==(31);
  20185. if ($476) {
  20186. $484 = 0;
  20187. } else {
  20188. $477 = $I7$0$i >>> 1;
  20189. $478 = (25 - ($477))|0;
  20190. $484 = $478;
  20191. }
  20192. $479 = (($475) + 4|0);
  20193. $480 = HEAP32[$479>>2]|0;
  20194. $481 = $480 & -8;
  20195. $482 = ($481|0)==($rsize$3$lcssa$i|0);
  20196. L225: do {
  20197. if ($482) {
  20198. $T$0$lcssa$i = $475;
  20199. } else {
  20200. $483 = $rsize$3$lcssa$i << $484;
  20201. $K12$027$i = $483;$T$026$i = $475;
  20202. while(1) {
  20203. $491 = $K12$027$i >>> 31;
  20204. $492 = ((($T$026$i) + ($491<<2)|0) + 16|0);
  20205. $487 = HEAP32[$492>>2]|0;
  20206. $493 = ($487|0)==(0|0);
  20207. if ($493) {
  20208. break;
  20209. }
  20210. $485 = $K12$027$i << 1;
  20211. $486 = (($487) + 4|0);
  20212. $488 = HEAP32[$486>>2]|0;
  20213. $489 = $488 & -8;
  20214. $490 = ($489|0)==($rsize$3$lcssa$i|0);
  20215. if ($490) {
  20216. $T$0$lcssa$i = $487;
  20217. break L225;
  20218. } else {
  20219. $K12$027$i = $485;$T$026$i = $487;
  20220. }
  20221. }
  20222. $494 = HEAP32[((32544 + 16|0))>>2]|0;
  20223. $495 = ($492>>>0)<($494>>>0);
  20224. if ($495) {
  20225. _abort();
  20226. // unreachable;
  20227. } else {
  20228. HEAP32[$492>>2] = $348;
  20229. $$sum11$i = (($246) + 24)|0;
  20230. $496 = (($v$3$lcssa$i) + ($$sum11$i)|0);
  20231. HEAP32[$496>>2] = $T$026$i;
  20232. $$sum12$i = (($246) + 12)|0;
  20233. $497 = (($v$3$lcssa$i) + ($$sum12$i)|0);
  20234. HEAP32[$497>>2] = $348;
  20235. $$sum13$i = (($246) + 8)|0;
  20236. $498 = (($v$3$lcssa$i) + ($$sum13$i)|0);
  20237. HEAP32[$498>>2] = $348;
  20238. break L204;
  20239. }
  20240. }
  20241. } while(0);
  20242. $499 = (($T$0$lcssa$i) + 8|0);
  20243. $500 = HEAP32[$499>>2]|0;
  20244. $501 = HEAP32[((32544 + 16|0))>>2]|0;
  20245. $502 = ($T$0$lcssa$i>>>0)>=($501>>>0);
  20246. $503 = ($500>>>0)>=($501>>>0);
  20247. $or$cond24$i = $502 & $503;
  20248. if ($or$cond24$i) {
  20249. $504 = (($500) + 12|0);
  20250. HEAP32[$504>>2] = $348;
  20251. HEAP32[$499>>2] = $348;
  20252. $$sum8$i = (($246) + 8)|0;
  20253. $505 = (($v$3$lcssa$i) + ($$sum8$i)|0);
  20254. HEAP32[$505>>2] = $500;
  20255. $$sum9$i = (($246) + 12)|0;
  20256. $506 = (($v$3$lcssa$i) + ($$sum9$i)|0);
  20257. HEAP32[$506>>2] = $T$0$lcssa$i;
  20258. $$sum10$i = (($246) + 24)|0;
  20259. $507 = (($v$3$lcssa$i) + ($$sum10$i)|0);
  20260. HEAP32[$507>>2] = 0;
  20261. break;
  20262. } else {
  20263. _abort();
  20264. // unreachable;
  20265. }
  20266. }
  20267. } while(0);
  20268. $508 = (($v$3$lcssa$i) + 8|0);
  20269. $mem$0 = $508;
  20270. STACKTOP = sp;return ($mem$0|0);
  20271. } else {
  20272. $nb$0 = $246;
  20273. }
  20274. }
  20275. }
  20276. }
  20277. }
  20278. } while(0);
  20279. $509 = HEAP32[((32544 + 8|0))>>2]|0;
  20280. $510 = ($509>>>0)<($nb$0>>>0);
  20281. if (!($510)) {
  20282. $511 = (($509) - ($nb$0))|0;
  20283. $512 = HEAP32[((32544 + 20|0))>>2]|0;
  20284. $513 = ($511>>>0)>(15);
  20285. if ($513) {
  20286. $514 = (($512) + ($nb$0)|0);
  20287. HEAP32[((32544 + 20|0))>>2] = $514;
  20288. HEAP32[((32544 + 8|0))>>2] = $511;
  20289. $515 = $511 | 1;
  20290. $$sum2 = (($nb$0) + 4)|0;
  20291. $516 = (($512) + ($$sum2)|0);
  20292. HEAP32[$516>>2] = $515;
  20293. $517 = (($512) + ($509)|0);
  20294. HEAP32[$517>>2] = $511;
  20295. $518 = $nb$0 | 3;
  20296. $519 = (($512) + 4|0);
  20297. HEAP32[$519>>2] = $518;
  20298. } else {
  20299. HEAP32[((32544 + 8|0))>>2] = 0;
  20300. HEAP32[((32544 + 20|0))>>2] = 0;
  20301. $520 = $509 | 3;
  20302. $521 = (($512) + 4|0);
  20303. HEAP32[$521>>2] = $520;
  20304. $$sum1 = (($509) + 4)|0;
  20305. $522 = (($512) + ($$sum1)|0);
  20306. $523 = HEAP32[$522>>2]|0;
  20307. $524 = $523 | 1;
  20308. HEAP32[$522>>2] = $524;
  20309. }
  20310. $525 = (($512) + 8|0);
  20311. $mem$0 = $525;
  20312. STACKTOP = sp;return ($mem$0|0);
  20313. }
  20314. $526 = HEAP32[((32544 + 12|0))>>2]|0;
  20315. $527 = ($526>>>0)>($nb$0>>>0);
  20316. if ($527) {
  20317. $528 = (($526) - ($nb$0))|0;
  20318. HEAP32[((32544 + 12|0))>>2] = $528;
  20319. $529 = HEAP32[((32544 + 24|0))>>2]|0;
  20320. $530 = (($529) + ($nb$0)|0);
  20321. HEAP32[((32544 + 24|0))>>2] = $530;
  20322. $531 = $528 | 1;
  20323. $$sum = (($nb$0) + 4)|0;
  20324. $532 = (($529) + ($$sum)|0);
  20325. HEAP32[$532>>2] = $531;
  20326. $533 = $nb$0 | 3;
  20327. $534 = (($529) + 4|0);
  20328. HEAP32[$534>>2] = $533;
  20329. $535 = (($529) + 8|0);
  20330. $mem$0 = $535;
  20331. STACKTOP = sp;return ($mem$0|0);
  20332. }
  20333. $536 = HEAP32[33016>>2]|0;
  20334. $537 = ($536|0)==(0);
  20335. do {
  20336. if ($537) {
  20337. $538 = (_sysconf(30)|0);
  20338. $539 = (($538) + -1)|0;
  20339. $540 = $539 & $538;
  20340. $541 = ($540|0)==(0);
  20341. if ($541) {
  20342. HEAP32[((33016 + 8|0))>>2] = $538;
  20343. HEAP32[((33016 + 4|0))>>2] = $538;
  20344. HEAP32[((33016 + 12|0))>>2] = -1;
  20345. HEAP32[((33016 + 16|0))>>2] = -1;
  20346. HEAP32[((33016 + 20|0))>>2] = 0;
  20347. HEAP32[((32544 + 444|0))>>2] = 0;
  20348. $542 = (_time((0|0))|0);
  20349. $543 = $542 & -16;
  20350. $544 = $543 ^ 1431655768;
  20351. HEAP32[33016>>2] = $544;
  20352. break;
  20353. } else {
  20354. _abort();
  20355. // unreachable;
  20356. }
  20357. }
  20358. } while(0);
  20359. $545 = (($nb$0) + 48)|0;
  20360. $546 = HEAP32[((33016 + 8|0))>>2]|0;
  20361. $547 = (($nb$0) + 47)|0;
  20362. $548 = (($546) + ($547))|0;
  20363. $549 = (0 - ($546))|0;
  20364. $550 = $548 & $549;
  20365. $551 = ($550>>>0)>($nb$0>>>0);
  20366. if (!($551)) {
  20367. $mem$0 = 0;
  20368. STACKTOP = sp;return ($mem$0|0);
  20369. }
  20370. $552 = HEAP32[((32544 + 440|0))>>2]|0;
  20371. $553 = ($552|0)==(0);
  20372. if (!($553)) {
  20373. $554 = HEAP32[((32544 + 432|0))>>2]|0;
  20374. $555 = (($554) + ($550))|0;
  20375. $556 = ($555>>>0)<=($554>>>0);
  20376. $557 = ($555>>>0)>($552>>>0);
  20377. $or$cond1$i = $556 | $557;
  20378. if ($or$cond1$i) {
  20379. $mem$0 = 0;
  20380. STACKTOP = sp;return ($mem$0|0);
  20381. }
  20382. }
  20383. $558 = HEAP32[((32544 + 444|0))>>2]|0;
  20384. $559 = $558 & 4;
  20385. $560 = ($559|0)==(0);
  20386. L266: do {
  20387. if ($560) {
  20388. $561 = HEAP32[((32544 + 24|0))>>2]|0;
  20389. $562 = ($561|0)==(0|0);
  20390. L268: do {
  20391. if ($562) {
  20392. label = 181;
  20393. } else {
  20394. $sp$0$i$i = ((32544 + 448|0));
  20395. while(1) {
  20396. $563 = HEAP32[$sp$0$i$i>>2]|0;
  20397. $564 = ($563>>>0)>($561>>>0);
  20398. if (!($564)) {
  20399. $565 = (($sp$0$i$i) + 4|0);
  20400. $566 = HEAP32[$565>>2]|0;
  20401. $567 = (($563) + ($566)|0);
  20402. $568 = ($567>>>0)>($561>>>0);
  20403. if ($568) {
  20404. break;
  20405. }
  20406. }
  20407. $569 = (($sp$0$i$i) + 8|0);
  20408. $570 = HEAP32[$569>>2]|0;
  20409. $571 = ($570|0)==(0|0);
  20410. if ($571) {
  20411. label = 181;
  20412. break L268;
  20413. } else {
  20414. $sp$0$i$i = $570;
  20415. }
  20416. }
  20417. $572 = ($sp$0$i$i|0)==(0|0);
  20418. if ($572) {
  20419. label = 181;
  20420. } else {
  20421. $595 = HEAP32[((32544 + 12|0))>>2]|0;
  20422. $596 = (($548) - ($595))|0;
  20423. $597 = $596 & $549;
  20424. $598 = ($597>>>0)<(2147483647);
  20425. if ($598) {
  20426. $599 = (_sbrk(($597|0))|0);
  20427. $600 = HEAP32[$sp$0$i$i>>2]|0;
  20428. $601 = HEAP32[$565>>2]|0;
  20429. $602 = (($600) + ($601)|0);
  20430. $603 = ($599|0)==($602|0);
  20431. if ($603) {
  20432. $br$0$i = $599;$ssize$1$i = $597;
  20433. label = 190;
  20434. } else {
  20435. $br$030$i = $599;$ssize$129$i = $597;
  20436. label = 191;
  20437. }
  20438. } else {
  20439. $tsize$03141$i = 0;
  20440. }
  20441. }
  20442. }
  20443. } while(0);
  20444. do {
  20445. if ((label|0) == 181) {
  20446. $573 = (_sbrk(0)|0);
  20447. $574 = ($573|0)==((-1)|0);
  20448. if ($574) {
  20449. $tsize$03141$i = 0;
  20450. } else {
  20451. $575 = $573;
  20452. $576 = HEAP32[((33016 + 4|0))>>2]|0;
  20453. $577 = (($576) + -1)|0;
  20454. $578 = $577 & $575;
  20455. $579 = ($578|0)==(0);
  20456. if ($579) {
  20457. $ssize$0$i = $550;
  20458. } else {
  20459. $580 = (($577) + ($575))|0;
  20460. $581 = (0 - ($576))|0;
  20461. $582 = $580 & $581;
  20462. $583 = (($550) - ($575))|0;
  20463. $584 = (($583) + ($582))|0;
  20464. $ssize$0$i = $584;
  20465. }
  20466. $585 = HEAP32[((32544 + 432|0))>>2]|0;
  20467. $586 = (($585) + ($ssize$0$i))|0;
  20468. $587 = ($ssize$0$i>>>0)>($nb$0>>>0);
  20469. $588 = ($ssize$0$i>>>0)<(2147483647);
  20470. $or$cond$i29 = $587 & $588;
  20471. if ($or$cond$i29) {
  20472. $589 = HEAP32[((32544 + 440|0))>>2]|0;
  20473. $590 = ($589|0)==(0);
  20474. if (!($590)) {
  20475. $591 = ($586>>>0)<=($585>>>0);
  20476. $592 = ($586>>>0)>($589>>>0);
  20477. $or$cond2$i = $591 | $592;
  20478. if ($or$cond2$i) {
  20479. $tsize$03141$i = 0;
  20480. break;
  20481. }
  20482. }
  20483. $593 = (_sbrk(($ssize$0$i|0))|0);
  20484. $594 = ($593|0)==($573|0);
  20485. if ($594) {
  20486. $br$0$i = $573;$ssize$1$i = $ssize$0$i;
  20487. label = 190;
  20488. } else {
  20489. $br$030$i = $593;$ssize$129$i = $ssize$0$i;
  20490. label = 191;
  20491. }
  20492. } else {
  20493. $tsize$03141$i = 0;
  20494. }
  20495. }
  20496. }
  20497. } while(0);
  20498. L288: do {
  20499. if ((label|0) == 190) {
  20500. $604 = ($br$0$i|0)==((-1)|0);
  20501. if ($604) {
  20502. $tsize$03141$i = $ssize$1$i;
  20503. } else {
  20504. $tbase$245$i = $br$0$i;$tsize$244$i = $ssize$1$i;
  20505. label = 201;
  20506. break L266;
  20507. }
  20508. }
  20509. else if ((label|0) == 191) {
  20510. $605 = (0 - ($ssize$129$i))|0;
  20511. $606 = ($br$030$i|0)!=((-1)|0);
  20512. $607 = ($ssize$129$i>>>0)<(2147483647);
  20513. $or$cond5$i = $606 & $607;
  20514. $608 = ($545>>>0)>($ssize$129$i>>>0);
  20515. $or$cond4$i = $or$cond5$i & $608;
  20516. do {
  20517. if ($or$cond4$i) {
  20518. $609 = HEAP32[((33016 + 8|0))>>2]|0;
  20519. $610 = (($547) - ($ssize$129$i))|0;
  20520. $611 = (($610) + ($609))|0;
  20521. $612 = (0 - ($609))|0;
  20522. $613 = $611 & $612;
  20523. $614 = ($613>>>0)<(2147483647);
  20524. if ($614) {
  20525. $615 = (_sbrk(($613|0))|0);
  20526. $616 = ($615|0)==((-1)|0);
  20527. if ($616) {
  20528. (_sbrk(($605|0))|0);
  20529. $tsize$03141$i = 0;
  20530. break L288;
  20531. } else {
  20532. $617 = (($613) + ($ssize$129$i))|0;
  20533. $ssize$2$i = $617;
  20534. break;
  20535. }
  20536. } else {
  20537. $ssize$2$i = $ssize$129$i;
  20538. }
  20539. } else {
  20540. $ssize$2$i = $ssize$129$i;
  20541. }
  20542. } while(0);
  20543. $618 = ($br$030$i|0)==((-1)|0);
  20544. if ($618) {
  20545. $tsize$03141$i = 0;
  20546. } else {
  20547. $tbase$245$i = $br$030$i;$tsize$244$i = $ssize$2$i;
  20548. label = 201;
  20549. break L266;
  20550. }
  20551. }
  20552. } while(0);
  20553. $619 = HEAP32[((32544 + 444|0))>>2]|0;
  20554. $620 = $619 | 4;
  20555. HEAP32[((32544 + 444|0))>>2] = $620;
  20556. $tsize$1$i = $tsize$03141$i;
  20557. label = 198;
  20558. } else {
  20559. $tsize$1$i = 0;
  20560. label = 198;
  20561. }
  20562. } while(0);
  20563. if ((label|0) == 198) {
  20564. $621 = ($550>>>0)<(2147483647);
  20565. if ($621) {
  20566. $622 = (_sbrk(($550|0))|0);
  20567. $623 = (_sbrk(0)|0);
  20568. $624 = ($622|0)!=((-1)|0);
  20569. $625 = ($623|0)!=((-1)|0);
  20570. $or$cond3$i = $624 & $625;
  20571. $626 = ($622>>>0)<($623>>>0);
  20572. $or$cond6$i = $or$cond3$i & $626;
  20573. if ($or$cond6$i) {
  20574. $627 = $623;
  20575. $628 = $622;
  20576. $629 = (($627) - ($628))|0;
  20577. $630 = (($nb$0) + 40)|0;
  20578. $631 = ($629>>>0)>($630>>>0);
  20579. $$tsize$1$i = $631 ? $629 : $tsize$1$i;
  20580. if ($631) {
  20581. $tbase$245$i = $622;$tsize$244$i = $$tsize$1$i;
  20582. label = 201;
  20583. }
  20584. }
  20585. }
  20586. }
  20587. if ((label|0) == 201) {
  20588. $632 = HEAP32[((32544 + 432|0))>>2]|0;
  20589. $633 = (($632) + ($tsize$244$i))|0;
  20590. HEAP32[((32544 + 432|0))>>2] = $633;
  20591. $634 = HEAP32[((32544 + 436|0))>>2]|0;
  20592. $635 = ($633>>>0)>($634>>>0);
  20593. if ($635) {
  20594. HEAP32[((32544 + 436|0))>>2] = $633;
  20595. }
  20596. $636 = HEAP32[((32544 + 24|0))>>2]|0;
  20597. $637 = ($636|0)==(0|0);
  20598. L308: do {
  20599. if ($637) {
  20600. $638 = HEAP32[((32544 + 16|0))>>2]|0;
  20601. $639 = ($638|0)==(0|0);
  20602. $640 = ($tbase$245$i>>>0)<($638>>>0);
  20603. $or$cond8$i = $639 | $640;
  20604. if ($or$cond8$i) {
  20605. HEAP32[((32544 + 16|0))>>2] = $tbase$245$i;
  20606. }
  20607. HEAP32[((32544 + 448|0))>>2] = $tbase$245$i;
  20608. HEAP32[((32544 + 452|0))>>2] = $tsize$244$i;
  20609. HEAP32[((32544 + 460|0))>>2] = 0;
  20610. $641 = HEAP32[33016>>2]|0;
  20611. HEAP32[((32544 + 36|0))>>2] = $641;
  20612. HEAP32[((32544 + 32|0))>>2] = -1;
  20613. $i$02$i$i = 0;
  20614. while(1) {
  20615. $642 = $i$02$i$i << 1;
  20616. $643 = ((32544 + ($642<<2)|0) + 40|0);
  20617. $$sum$i$i = (($642) + 3)|0;
  20618. $644 = ((32544 + ($$sum$i$i<<2)|0) + 40|0);
  20619. HEAP32[$644>>2] = $643;
  20620. $$sum1$i$i = (($642) + 2)|0;
  20621. $645 = ((32544 + ($$sum1$i$i<<2)|0) + 40|0);
  20622. HEAP32[$645>>2] = $643;
  20623. $646 = (($i$02$i$i) + 1)|0;
  20624. $exitcond$i$i = ($646|0)==(32);
  20625. if ($exitcond$i$i) {
  20626. break;
  20627. } else {
  20628. $i$02$i$i = $646;
  20629. }
  20630. }
  20631. $647 = (($tsize$244$i) + -40)|0;
  20632. $648 = (($tbase$245$i) + 8|0);
  20633. $649 = $648;
  20634. $650 = $649 & 7;
  20635. $651 = ($650|0)==(0);
  20636. if ($651) {
  20637. $655 = 0;
  20638. } else {
  20639. $652 = (0 - ($649))|0;
  20640. $653 = $652 & 7;
  20641. $655 = $653;
  20642. }
  20643. $654 = (($tbase$245$i) + ($655)|0);
  20644. $656 = (($647) - ($655))|0;
  20645. HEAP32[((32544 + 24|0))>>2] = $654;
  20646. HEAP32[((32544 + 12|0))>>2] = $656;
  20647. $657 = $656 | 1;
  20648. $$sum$i12$i = (($655) + 4)|0;
  20649. $658 = (($tbase$245$i) + ($$sum$i12$i)|0);
  20650. HEAP32[$658>>2] = $657;
  20651. $$sum2$i$i = (($tsize$244$i) + -36)|0;
  20652. $659 = (($tbase$245$i) + ($$sum2$i$i)|0);
  20653. HEAP32[$659>>2] = 40;
  20654. $660 = HEAP32[((33016 + 16|0))>>2]|0;
  20655. HEAP32[((32544 + 28|0))>>2] = $660;
  20656. } else {
  20657. $sp$073$i = ((32544 + 448|0));
  20658. while(1) {
  20659. $661 = HEAP32[$sp$073$i>>2]|0;
  20660. $662 = (($sp$073$i) + 4|0);
  20661. $663 = HEAP32[$662>>2]|0;
  20662. $664 = (($661) + ($663)|0);
  20663. $665 = ($tbase$245$i|0)==($664|0);
  20664. if ($665) {
  20665. label = 213;
  20666. break;
  20667. }
  20668. $666 = (($sp$073$i) + 8|0);
  20669. $667 = HEAP32[$666>>2]|0;
  20670. $668 = ($667|0)==(0|0);
  20671. if ($668) {
  20672. break;
  20673. } else {
  20674. $sp$073$i = $667;
  20675. }
  20676. }
  20677. if ((label|0) == 213) {
  20678. $669 = (($sp$073$i) + 12|0);
  20679. $670 = HEAP32[$669>>2]|0;
  20680. $671 = $670 & 8;
  20681. $672 = ($671|0)==(0);
  20682. if ($672) {
  20683. $673 = ($636>>>0)>=($661>>>0);
  20684. $674 = ($636>>>0)<($tbase$245$i>>>0);
  20685. $or$cond47$i = $673 & $674;
  20686. if ($or$cond47$i) {
  20687. $675 = (($663) + ($tsize$244$i))|0;
  20688. HEAP32[$662>>2] = $675;
  20689. $676 = HEAP32[((32544 + 12|0))>>2]|0;
  20690. $677 = (($676) + ($tsize$244$i))|0;
  20691. $678 = (($636) + 8|0);
  20692. $679 = $678;
  20693. $680 = $679 & 7;
  20694. $681 = ($680|0)==(0);
  20695. if ($681) {
  20696. $685 = 0;
  20697. } else {
  20698. $682 = (0 - ($679))|0;
  20699. $683 = $682 & 7;
  20700. $685 = $683;
  20701. }
  20702. $684 = (($636) + ($685)|0);
  20703. $686 = (($677) - ($685))|0;
  20704. HEAP32[((32544 + 24|0))>>2] = $684;
  20705. HEAP32[((32544 + 12|0))>>2] = $686;
  20706. $687 = $686 | 1;
  20707. $$sum$i16$i = (($685) + 4)|0;
  20708. $688 = (($636) + ($$sum$i16$i)|0);
  20709. HEAP32[$688>>2] = $687;
  20710. $$sum2$i17$i = (($677) + 4)|0;
  20711. $689 = (($636) + ($$sum2$i17$i)|0);
  20712. HEAP32[$689>>2] = 40;
  20713. $690 = HEAP32[((33016 + 16|0))>>2]|0;
  20714. HEAP32[((32544 + 28|0))>>2] = $690;
  20715. break;
  20716. }
  20717. }
  20718. }
  20719. $691 = HEAP32[((32544 + 16|0))>>2]|0;
  20720. $692 = ($tbase$245$i>>>0)<($691>>>0);
  20721. if ($692) {
  20722. HEAP32[((32544 + 16|0))>>2] = $tbase$245$i;
  20723. $756 = $tbase$245$i;
  20724. } else {
  20725. $756 = $691;
  20726. }
  20727. $693 = (($tbase$245$i) + ($tsize$244$i)|0);
  20728. $sp$166$i = ((32544 + 448|0));
  20729. while(1) {
  20730. $694 = HEAP32[$sp$166$i>>2]|0;
  20731. $695 = ($694|0)==($693|0);
  20732. if ($695) {
  20733. label = 223;
  20734. break;
  20735. }
  20736. $696 = (($sp$166$i) + 8|0);
  20737. $697 = HEAP32[$696>>2]|0;
  20738. $698 = ($697|0)==(0|0);
  20739. if ($698) {
  20740. break;
  20741. } else {
  20742. $sp$166$i = $697;
  20743. }
  20744. }
  20745. if ((label|0) == 223) {
  20746. $699 = (($sp$166$i) + 12|0);
  20747. $700 = HEAP32[$699>>2]|0;
  20748. $701 = $700 & 8;
  20749. $702 = ($701|0)==(0);
  20750. if ($702) {
  20751. HEAP32[$sp$166$i>>2] = $tbase$245$i;
  20752. $703 = (($sp$166$i) + 4|0);
  20753. $704 = HEAP32[$703>>2]|0;
  20754. $705 = (($704) + ($tsize$244$i))|0;
  20755. HEAP32[$703>>2] = $705;
  20756. $706 = (($tbase$245$i) + 8|0);
  20757. $707 = $706;
  20758. $708 = $707 & 7;
  20759. $709 = ($708|0)==(0);
  20760. if ($709) {
  20761. $713 = 0;
  20762. } else {
  20763. $710 = (0 - ($707))|0;
  20764. $711 = $710 & 7;
  20765. $713 = $711;
  20766. }
  20767. $712 = (($tbase$245$i) + ($713)|0);
  20768. $$sum102$i = (($tsize$244$i) + 8)|0;
  20769. $714 = (($tbase$245$i) + ($$sum102$i)|0);
  20770. $715 = $714;
  20771. $716 = $715 & 7;
  20772. $717 = ($716|0)==(0);
  20773. if ($717) {
  20774. $720 = 0;
  20775. } else {
  20776. $718 = (0 - ($715))|0;
  20777. $719 = $718 & 7;
  20778. $720 = $719;
  20779. }
  20780. $$sum103$i = (($720) + ($tsize$244$i))|0;
  20781. $721 = (($tbase$245$i) + ($$sum103$i)|0);
  20782. $722 = $721;
  20783. $723 = $712;
  20784. $724 = (($722) - ($723))|0;
  20785. $$sum$i19$i = (($713) + ($nb$0))|0;
  20786. $725 = (($tbase$245$i) + ($$sum$i19$i)|0);
  20787. $726 = (($724) - ($nb$0))|0;
  20788. $727 = $nb$0 | 3;
  20789. $$sum1$i20$i = (($713) + 4)|0;
  20790. $728 = (($tbase$245$i) + ($$sum1$i20$i)|0);
  20791. HEAP32[$728>>2] = $727;
  20792. $729 = ($721|0)==($636|0);
  20793. L345: do {
  20794. if ($729) {
  20795. $730 = HEAP32[((32544 + 12|0))>>2]|0;
  20796. $731 = (($730) + ($726))|0;
  20797. HEAP32[((32544 + 12|0))>>2] = $731;
  20798. HEAP32[((32544 + 24|0))>>2] = $725;
  20799. $732 = $731 | 1;
  20800. $$sum42$i$i = (($$sum$i19$i) + 4)|0;
  20801. $733 = (($tbase$245$i) + ($$sum42$i$i)|0);
  20802. HEAP32[$733>>2] = $732;
  20803. } else {
  20804. $734 = HEAP32[((32544 + 20|0))>>2]|0;
  20805. $735 = ($721|0)==($734|0);
  20806. if ($735) {
  20807. $736 = HEAP32[((32544 + 8|0))>>2]|0;
  20808. $737 = (($736) + ($726))|0;
  20809. HEAP32[((32544 + 8|0))>>2] = $737;
  20810. HEAP32[((32544 + 20|0))>>2] = $725;
  20811. $738 = $737 | 1;
  20812. $$sum40$i$i = (($$sum$i19$i) + 4)|0;
  20813. $739 = (($tbase$245$i) + ($$sum40$i$i)|0);
  20814. HEAP32[$739>>2] = $738;
  20815. $$sum41$i$i = (($737) + ($$sum$i19$i))|0;
  20816. $740 = (($tbase$245$i) + ($$sum41$i$i)|0);
  20817. HEAP32[$740>>2] = $737;
  20818. break;
  20819. }
  20820. $$sum2$i21$i = (($tsize$244$i) + 4)|0;
  20821. $$sum104$i = (($$sum2$i21$i) + ($720))|0;
  20822. $741 = (($tbase$245$i) + ($$sum104$i)|0);
  20823. $742 = HEAP32[$741>>2]|0;
  20824. $743 = $742 & 3;
  20825. $744 = ($743|0)==(1);
  20826. if ($744) {
  20827. $745 = $742 & -8;
  20828. $746 = $742 >>> 3;
  20829. $747 = ($742>>>0)<(256);
  20830. L353: do {
  20831. if ($747) {
  20832. $$sum3738$i$i = $720 | 8;
  20833. $$sum114$i = (($$sum3738$i$i) + ($tsize$244$i))|0;
  20834. $748 = (($tbase$245$i) + ($$sum114$i)|0);
  20835. $749 = HEAP32[$748>>2]|0;
  20836. $$sum39$i$i = (($tsize$244$i) + 12)|0;
  20837. $$sum115$i = (($$sum39$i$i) + ($720))|0;
  20838. $750 = (($tbase$245$i) + ($$sum115$i)|0);
  20839. $751 = HEAP32[$750>>2]|0;
  20840. $752 = $746 << 1;
  20841. $753 = ((32544 + ($752<<2)|0) + 40|0);
  20842. $754 = ($749|0)==($753|0);
  20843. do {
  20844. if (!($754)) {
  20845. $755 = ($749>>>0)<($756>>>0);
  20846. if ($755) {
  20847. _abort();
  20848. // unreachable;
  20849. }
  20850. $757 = (($749) + 12|0);
  20851. $758 = HEAP32[$757>>2]|0;
  20852. $759 = ($758|0)==($721|0);
  20853. if ($759) {
  20854. break;
  20855. }
  20856. _abort();
  20857. // unreachable;
  20858. }
  20859. } while(0);
  20860. $760 = ($751|0)==($749|0);
  20861. if ($760) {
  20862. $761 = 1 << $746;
  20863. $762 = $761 ^ -1;
  20864. $763 = HEAP32[32544>>2]|0;
  20865. $764 = $763 & $762;
  20866. HEAP32[32544>>2] = $764;
  20867. break;
  20868. }
  20869. $765 = ($751|0)==($753|0);
  20870. do {
  20871. if ($765) {
  20872. $$pre58$i$i = (($751) + 8|0);
  20873. $$pre$phi59$i$iZ2D = $$pre58$i$i;
  20874. } else {
  20875. $766 = ($751>>>0)<($756>>>0);
  20876. if ($766) {
  20877. _abort();
  20878. // unreachable;
  20879. }
  20880. $767 = (($751) + 8|0);
  20881. $768 = HEAP32[$767>>2]|0;
  20882. $769 = ($768|0)==($721|0);
  20883. if ($769) {
  20884. $$pre$phi59$i$iZ2D = $767;
  20885. break;
  20886. }
  20887. _abort();
  20888. // unreachable;
  20889. }
  20890. } while(0);
  20891. $770 = (($749) + 12|0);
  20892. HEAP32[$770>>2] = $751;
  20893. HEAP32[$$pre$phi59$i$iZ2D>>2] = $749;
  20894. } else {
  20895. $$sum34$i$i = $720 | 24;
  20896. $$sum105$i = (($$sum34$i$i) + ($tsize$244$i))|0;
  20897. $771 = (($tbase$245$i) + ($$sum105$i)|0);
  20898. $772 = HEAP32[$771>>2]|0;
  20899. $$sum5$i$i = (($tsize$244$i) + 12)|0;
  20900. $$sum106$i = (($$sum5$i$i) + ($720))|0;
  20901. $773 = (($tbase$245$i) + ($$sum106$i)|0);
  20902. $774 = HEAP32[$773>>2]|0;
  20903. $775 = ($774|0)==($721|0);
  20904. do {
  20905. if ($775) {
  20906. $$sum67$i$i = $720 | 16;
  20907. $$sum112$i = (($$sum2$i21$i) + ($$sum67$i$i))|0;
  20908. $785 = (($tbase$245$i) + ($$sum112$i)|0);
  20909. $786 = HEAP32[$785>>2]|0;
  20910. $787 = ($786|0)==(0|0);
  20911. if ($787) {
  20912. $$sum113$i = (($$sum67$i$i) + ($tsize$244$i))|0;
  20913. $788 = (($tbase$245$i) + ($$sum113$i)|0);
  20914. $789 = HEAP32[$788>>2]|0;
  20915. $790 = ($789|0)==(0|0);
  20916. if ($790) {
  20917. $R$1$i$i = 0;
  20918. break;
  20919. } else {
  20920. $R$0$i$i = $789;$RP$0$i$i = $788;
  20921. }
  20922. } else {
  20923. $R$0$i$i = $786;$RP$0$i$i = $785;
  20924. }
  20925. while(1) {
  20926. $791 = (($R$0$i$i) + 20|0);
  20927. $792 = HEAP32[$791>>2]|0;
  20928. $793 = ($792|0)==(0|0);
  20929. if (!($793)) {
  20930. $R$0$i$i = $792;$RP$0$i$i = $791;
  20931. continue;
  20932. }
  20933. $794 = (($R$0$i$i) + 16|0);
  20934. $795 = HEAP32[$794>>2]|0;
  20935. $796 = ($795|0)==(0|0);
  20936. if ($796) {
  20937. break;
  20938. } else {
  20939. $R$0$i$i = $795;$RP$0$i$i = $794;
  20940. }
  20941. }
  20942. $797 = ($RP$0$i$i>>>0)<($756>>>0);
  20943. if ($797) {
  20944. _abort();
  20945. // unreachable;
  20946. } else {
  20947. HEAP32[$RP$0$i$i>>2] = 0;
  20948. $R$1$i$i = $R$0$i$i;
  20949. break;
  20950. }
  20951. } else {
  20952. $$sum3536$i$i = $720 | 8;
  20953. $$sum107$i = (($$sum3536$i$i) + ($tsize$244$i))|0;
  20954. $776 = (($tbase$245$i) + ($$sum107$i)|0);
  20955. $777 = HEAP32[$776>>2]|0;
  20956. $778 = ($777>>>0)<($756>>>0);
  20957. if ($778) {
  20958. _abort();
  20959. // unreachable;
  20960. }
  20961. $779 = (($777) + 12|0);
  20962. $780 = HEAP32[$779>>2]|0;
  20963. $781 = ($780|0)==($721|0);
  20964. if (!($781)) {
  20965. _abort();
  20966. // unreachable;
  20967. }
  20968. $782 = (($774) + 8|0);
  20969. $783 = HEAP32[$782>>2]|0;
  20970. $784 = ($783|0)==($721|0);
  20971. if ($784) {
  20972. HEAP32[$779>>2] = $774;
  20973. HEAP32[$782>>2] = $777;
  20974. $R$1$i$i = $774;
  20975. break;
  20976. } else {
  20977. _abort();
  20978. // unreachable;
  20979. }
  20980. }
  20981. } while(0);
  20982. $798 = ($772|0)==(0|0);
  20983. if ($798) {
  20984. break;
  20985. }
  20986. $$sum30$i$i = (($tsize$244$i) + 28)|0;
  20987. $$sum108$i = (($$sum30$i$i) + ($720))|0;
  20988. $799 = (($tbase$245$i) + ($$sum108$i)|0);
  20989. $800 = HEAP32[$799>>2]|0;
  20990. $801 = ((32544 + ($800<<2)|0) + 304|0);
  20991. $802 = HEAP32[$801>>2]|0;
  20992. $803 = ($721|0)==($802|0);
  20993. do {
  20994. if ($803) {
  20995. HEAP32[$801>>2] = $R$1$i$i;
  20996. $cond$i$i = ($R$1$i$i|0)==(0|0);
  20997. if (!($cond$i$i)) {
  20998. break;
  20999. }
  21000. $804 = 1 << $800;
  21001. $805 = $804 ^ -1;
  21002. $806 = HEAP32[((32544 + 4|0))>>2]|0;
  21003. $807 = $806 & $805;
  21004. HEAP32[((32544 + 4|0))>>2] = $807;
  21005. break L353;
  21006. } else {
  21007. $808 = HEAP32[((32544 + 16|0))>>2]|0;
  21008. $809 = ($772>>>0)<($808>>>0);
  21009. if ($809) {
  21010. _abort();
  21011. // unreachable;
  21012. }
  21013. $810 = (($772) + 16|0);
  21014. $811 = HEAP32[$810>>2]|0;
  21015. $812 = ($811|0)==($721|0);
  21016. if ($812) {
  21017. HEAP32[$810>>2] = $R$1$i$i;
  21018. } else {
  21019. $813 = (($772) + 20|0);
  21020. HEAP32[$813>>2] = $R$1$i$i;
  21021. }
  21022. $814 = ($R$1$i$i|0)==(0|0);
  21023. if ($814) {
  21024. break L353;
  21025. }
  21026. }
  21027. } while(0);
  21028. $815 = HEAP32[((32544 + 16|0))>>2]|0;
  21029. $816 = ($R$1$i$i>>>0)<($815>>>0);
  21030. if ($816) {
  21031. _abort();
  21032. // unreachable;
  21033. }
  21034. $817 = (($R$1$i$i) + 24|0);
  21035. HEAP32[$817>>2] = $772;
  21036. $$sum3132$i$i = $720 | 16;
  21037. $$sum109$i = (($$sum3132$i$i) + ($tsize$244$i))|0;
  21038. $818 = (($tbase$245$i) + ($$sum109$i)|0);
  21039. $819 = HEAP32[$818>>2]|0;
  21040. $820 = ($819|0)==(0|0);
  21041. do {
  21042. if (!($820)) {
  21043. $821 = ($819>>>0)<($815>>>0);
  21044. if ($821) {
  21045. _abort();
  21046. // unreachable;
  21047. } else {
  21048. $822 = (($R$1$i$i) + 16|0);
  21049. HEAP32[$822>>2] = $819;
  21050. $823 = (($819) + 24|0);
  21051. HEAP32[$823>>2] = $R$1$i$i;
  21052. break;
  21053. }
  21054. }
  21055. } while(0);
  21056. $$sum110$i = (($$sum2$i21$i) + ($$sum3132$i$i))|0;
  21057. $824 = (($tbase$245$i) + ($$sum110$i)|0);
  21058. $825 = HEAP32[$824>>2]|0;
  21059. $826 = ($825|0)==(0|0);
  21060. if ($826) {
  21061. break;
  21062. }
  21063. $827 = HEAP32[((32544 + 16|0))>>2]|0;
  21064. $828 = ($825>>>0)<($827>>>0);
  21065. if ($828) {
  21066. _abort();
  21067. // unreachable;
  21068. } else {
  21069. $829 = (($R$1$i$i) + 20|0);
  21070. HEAP32[$829>>2] = $825;
  21071. $830 = (($825) + 24|0);
  21072. HEAP32[$830>>2] = $R$1$i$i;
  21073. break;
  21074. }
  21075. }
  21076. } while(0);
  21077. $$sum9$i$i = $745 | $720;
  21078. $$sum111$i = (($$sum9$i$i) + ($tsize$244$i))|0;
  21079. $831 = (($tbase$245$i) + ($$sum111$i)|0);
  21080. $832 = (($745) + ($726))|0;
  21081. $oldfirst$0$i$i = $831;$qsize$0$i$i = $832;
  21082. } else {
  21083. $oldfirst$0$i$i = $721;$qsize$0$i$i = $726;
  21084. }
  21085. $833 = (($oldfirst$0$i$i) + 4|0);
  21086. $834 = HEAP32[$833>>2]|0;
  21087. $835 = $834 & -2;
  21088. HEAP32[$833>>2] = $835;
  21089. $836 = $qsize$0$i$i | 1;
  21090. $$sum10$i$i = (($$sum$i19$i) + 4)|0;
  21091. $837 = (($tbase$245$i) + ($$sum10$i$i)|0);
  21092. HEAP32[$837>>2] = $836;
  21093. $$sum11$i22$i = (($qsize$0$i$i) + ($$sum$i19$i))|0;
  21094. $838 = (($tbase$245$i) + ($$sum11$i22$i)|0);
  21095. HEAP32[$838>>2] = $qsize$0$i$i;
  21096. $839 = $qsize$0$i$i >>> 3;
  21097. $840 = ($qsize$0$i$i>>>0)<(256);
  21098. if ($840) {
  21099. $841 = $839 << 1;
  21100. $842 = ((32544 + ($841<<2)|0) + 40|0);
  21101. $843 = HEAP32[32544>>2]|0;
  21102. $844 = 1 << $839;
  21103. $845 = $843 & $844;
  21104. $846 = ($845|0)==(0);
  21105. do {
  21106. if ($846) {
  21107. $847 = $843 | $844;
  21108. HEAP32[32544>>2] = $847;
  21109. $$sum26$pre$i$i = (($841) + 2)|0;
  21110. $$pre$i23$i = ((32544 + ($$sum26$pre$i$i<<2)|0) + 40|0);
  21111. $$pre$phi$i24$iZ2D = $$pre$i23$i;$F4$0$i$i = $842;
  21112. } else {
  21113. $$sum29$i$i = (($841) + 2)|0;
  21114. $848 = ((32544 + ($$sum29$i$i<<2)|0) + 40|0);
  21115. $849 = HEAP32[$848>>2]|0;
  21116. $850 = HEAP32[((32544 + 16|0))>>2]|0;
  21117. $851 = ($849>>>0)<($850>>>0);
  21118. if (!($851)) {
  21119. $$pre$phi$i24$iZ2D = $848;$F4$0$i$i = $849;
  21120. break;
  21121. }
  21122. _abort();
  21123. // unreachable;
  21124. }
  21125. } while(0);
  21126. HEAP32[$$pre$phi$i24$iZ2D>>2] = $725;
  21127. $852 = (($F4$0$i$i) + 12|0);
  21128. HEAP32[$852>>2] = $725;
  21129. $$sum27$i$i = (($$sum$i19$i) + 8)|0;
  21130. $853 = (($tbase$245$i) + ($$sum27$i$i)|0);
  21131. HEAP32[$853>>2] = $F4$0$i$i;
  21132. $$sum28$i$i = (($$sum$i19$i) + 12)|0;
  21133. $854 = (($tbase$245$i) + ($$sum28$i$i)|0);
  21134. HEAP32[$854>>2] = $842;
  21135. break;
  21136. }
  21137. $855 = $qsize$0$i$i >>> 8;
  21138. $856 = ($855|0)==(0);
  21139. do {
  21140. if ($856) {
  21141. $I7$0$i$i = 0;
  21142. } else {
  21143. $857 = ($qsize$0$i$i>>>0)>(16777215);
  21144. if ($857) {
  21145. $I7$0$i$i = 31;
  21146. break;
  21147. }
  21148. $858 = (($855) + 1048320)|0;
  21149. $859 = $858 >>> 16;
  21150. $860 = $859 & 8;
  21151. $861 = $855 << $860;
  21152. $862 = (($861) + 520192)|0;
  21153. $863 = $862 >>> 16;
  21154. $864 = $863 & 4;
  21155. $865 = $864 | $860;
  21156. $866 = $861 << $864;
  21157. $867 = (($866) + 245760)|0;
  21158. $868 = $867 >>> 16;
  21159. $869 = $868 & 2;
  21160. $870 = $865 | $869;
  21161. $871 = (14 - ($870))|0;
  21162. $872 = $866 << $869;
  21163. $873 = $872 >>> 15;
  21164. $874 = (($871) + ($873))|0;
  21165. $875 = $874 << 1;
  21166. $876 = (($874) + 7)|0;
  21167. $877 = $qsize$0$i$i >>> $876;
  21168. $878 = $877 & 1;
  21169. $879 = $878 | $875;
  21170. $I7$0$i$i = $879;
  21171. }
  21172. } while(0);
  21173. $880 = ((32544 + ($I7$0$i$i<<2)|0) + 304|0);
  21174. $$sum12$i$i = (($$sum$i19$i) + 28)|0;
  21175. $881 = (($tbase$245$i) + ($$sum12$i$i)|0);
  21176. HEAP32[$881>>2] = $I7$0$i$i;
  21177. $$sum13$i$i = (($$sum$i19$i) + 16)|0;
  21178. $882 = (($tbase$245$i) + ($$sum13$i$i)|0);
  21179. $$sum14$i$i = (($$sum$i19$i) + 20)|0;
  21180. $883 = (($tbase$245$i) + ($$sum14$i$i)|0);
  21181. HEAP32[$883>>2] = 0;
  21182. HEAP32[$882>>2] = 0;
  21183. $884 = HEAP32[((32544 + 4|0))>>2]|0;
  21184. $885 = 1 << $I7$0$i$i;
  21185. $886 = $884 & $885;
  21186. $887 = ($886|0)==(0);
  21187. if ($887) {
  21188. $888 = $884 | $885;
  21189. HEAP32[((32544 + 4|0))>>2] = $888;
  21190. HEAP32[$880>>2] = $725;
  21191. $$sum15$i$i = (($$sum$i19$i) + 24)|0;
  21192. $889 = (($tbase$245$i) + ($$sum15$i$i)|0);
  21193. HEAP32[$889>>2] = $880;
  21194. $$sum16$i$i = (($$sum$i19$i) + 12)|0;
  21195. $890 = (($tbase$245$i) + ($$sum16$i$i)|0);
  21196. HEAP32[$890>>2] = $725;
  21197. $$sum17$i$i = (($$sum$i19$i) + 8)|0;
  21198. $891 = (($tbase$245$i) + ($$sum17$i$i)|0);
  21199. HEAP32[$891>>2] = $725;
  21200. break;
  21201. }
  21202. $892 = HEAP32[$880>>2]|0;
  21203. $893 = ($I7$0$i$i|0)==(31);
  21204. if ($893) {
  21205. $901 = 0;
  21206. } else {
  21207. $894 = $I7$0$i$i >>> 1;
  21208. $895 = (25 - ($894))|0;
  21209. $901 = $895;
  21210. }
  21211. $896 = (($892) + 4|0);
  21212. $897 = HEAP32[$896>>2]|0;
  21213. $898 = $897 & -8;
  21214. $899 = ($898|0)==($qsize$0$i$i|0);
  21215. L442: do {
  21216. if ($899) {
  21217. $T$0$lcssa$i26$i = $892;
  21218. } else {
  21219. $900 = $qsize$0$i$i << $901;
  21220. $K8$053$i$i = $900;$T$052$i$i = $892;
  21221. while(1) {
  21222. $908 = $K8$053$i$i >>> 31;
  21223. $909 = ((($T$052$i$i) + ($908<<2)|0) + 16|0);
  21224. $904 = HEAP32[$909>>2]|0;
  21225. $910 = ($904|0)==(0|0);
  21226. if ($910) {
  21227. break;
  21228. }
  21229. $902 = $K8$053$i$i << 1;
  21230. $903 = (($904) + 4|0);
  21231. $905 = HEAP32[$903>>2]|0;
  21232. $906 = $905 & -8;
  21233. $907 = ($906|0)==($qsize$0$i$i|0);
  21234. if ($907) {
  21235. $T$0$lcssa$i26$i = $904;
  21236. break L442;
  21237. } else {
  21238. $K8$053$i$i = $902;$T$052$i$i = $904;
  21239. }
  21240. }
  21241. $911 = HEAP32[((32544 + 16|0))>>2]|0;
  21242. $912 = ($909>>>0)<($911>>>0);
  21243. if ($912) {
  21244. _abort();
  21245. // unreachable;
  21246. } else {
  21247. HEAP32[$909>>2] = $725;
  21248. $$sum23$i$i = (($$sum$i19$i) + 24)|0;
  21249. $913 = (($tbase$245$i) + ($$sum23$i$i)|0);
  21250. HEAP32[$913>>2] = $T$052$i$i;
  21251. $$sum24$i$i = (($$sum$i19$i) + 12)|0;
  21252. $914 = (($tbase$245$i) + ($$sum24$i$i)|0);
  21253. HEAP32[$914>>2] = $725;
  21254. $$sum25$i$i = (($$sum$i19$i) + 8)|0;
  21255. $915 = (($tbase$245$i) + ($$sum25$i$i)|0);
  21256. HEAP32[$915>>2] = $725;
  21257. break L345;
  21258. }
  21259. }
  21260. } while(0);
  21261. $916 = (($T$0$lcssa$i26$i) + 8|0);
  21262. $917 = HEAP32[$916>>2]|0;
  21263. $918 = HEAP32[((32544 + 16|0))>>2]|0;
  21264. $919 = ($T$0$lcssa$i26$i>>>0)>=($918>>>0);
  21265. $920 = ($917>>>0)>=($918>>>0);
  21266. $or$cond$i27$i = $919 & $920;
  21267. if ($or$cond$i27$i) {
  21268. $921 = (($917) + 12|0);
  21269. HEAP32[$921>>2] = $725;
  21270. HEAP32[$916>>2] = $725;
  21271. $$sum20$i$i = (($$sum$i19$i) + 8)|0;
  21272. $922 = (($tbase$245$i) + ($$sum20$i$i)|0);
  21273. HEAP32[$922>>2] = $917;
  21274. $$sum21$i$i = (($$sum$i19$i) + 12)|0;
  21275. $923 = (($tbase$245$i) + ($$sum21$i$i)|0);
  21276. HEAP32[$923>>2] = $T$0$lcssa$i26$i;
  21277. $$sum22$i$i = (($$sum$i19$i) + 24)|0;
  21278. $924 = (($tbase$245$i) + ($$sum22$i$i)|0);
  21279. HEAP32[$924>>2] = 0;
  21280. break;
  21281. } else {
  21282. _abort();
  21283. // unreachable;
  21284. }
  21285. }
  21286. } while(0);
  21287. $$sum1819$i$i = $713 | 8;
  21288. $925 = (($tbase$245$i) + ($$sum1819$i$i)|0);
  21289. $mem$0 = $925;
  21290. STACKTOP = sp;return ($mem$0|0);
  21291. }
  21292. }
  21293. $sp$0$i$i$i = ((32544 + 448|0));
  21294. while(1) {
  21295. $926 = HEAP32[$sp$0$i$i$i>>2]|0;
  21296. $927 = ($926>>>0)>($636>>>0);
  21297. if (!($927)) {
  21298. $928 = (($sp$0$i$i$i) + 4|0);
  21299. $929 = HEAP32[$928>>2]|0;
  21300. $930 = (($926) + ($929)|0);
  21301. $931 = ($930>>>0)>($636>>>0);
  21302. if ($931) {
  21303. break;
  21304. }
  21305. }
  21306. $932 = (($sp$0$i$i$i) + 8|0);
  21307. $933 = HEAP32[$932>>2]|0;
  21308. $sp$0$i$i$i = $933;
  21309. }
  21310. $$sum$i13$i = (($929) + -47)|0;
  21311. $$sum1$i14$i = (($929) + -39)|0;
  21312. $934 = (($926) + ($$sum1$i14$i)|0);
  21313. $935 = $934;
  21314. $936 = $935 & 7;
  21315. $937 = ($936|0)==(0);
  21316. if ($937) {
  21317. $940 = 0;
  21318. } else {
  21319. $938 = (0 - ($935))|0;
  21320. $939 = $938 & 7;
  21321. $940 = $939;
  21322. }
  21323. $$sum2$i15$i = (($$sum$i13$i) + ($940))|0;
  21324. $941 = (($926) + ($$sum2$i15$i)|0);
  21325. $942 = (($636) + 16|0);
  21326. $943 = ($941>>>0)<($942>>>0);
  21327. $944 = $943 ? $636 : $941;
  21328. $945 = (($944) + 8|0);
  21329. $946 = (($tsize$244$i) + -40)|0;
  21330. $947 = (($tbase$245$i) + 8|0);
  21331. $948 = $947;
  21332. $949 = $948 & 7;
  21333. $950 = ($949|0)==(0);
  21334. if ($950) {
  21335. $954 = 0;
  21336. } else {
  21337. $951 = (0 - ($948))|0;
  21338. $952 = $951 & 7;
  21339. $954 = $952;
  21340. }
  21341. $953 = (($tbase$245$i) + ($954)|0);
  21342. $955 = (($946) - ($954))|0;
  21343. HEAP32[((32544 + 24|0))>>2] = $953;
  21344. HEAP32[((32544 + 12|0))>>2] = $955;
  21345. $956 = $955 | 1;
  21346. $$sum$i$i$i = (($954) + 4)|0;
  21347. $957 = (($tbase$245$i) + ($$sum$i$i$i)|0);
  21348. HEAP32[$957>>2] = $956;
  21349. $$sum2$i$i$i = (($tsize$244$i) + -36)|0;
  21350. $958 = (($tbase$245$i) + ($$sum2$i$i$i)|0);
  21351. HEAP32[$958>>2] = 40;
  21352. $959 = HEAP32[((33016 + 16|0))>>2]|0;
  21353. HEAP32[((32544 + 28|0))>>2] = $959;
  21354. $960 = (($944) + 4|0);
  21355. HEAP32[$960>>2] = 27;
  21356. ;HEAP32[$945+0>>2]=HEAP32[((32544 + 448|0))+0>>2]|0;HEAP32[$945+4>>2]=HEAP32[((32544 + 448|0))+4>>2]|0;HEAP32[$945+8>>2]=HEAP32[((32544 + 448|0))+8>>2]|0;HEAP32[$945+12>>2]=HEAP32[((32544 + 448|0))+12>>2]|0;
  21357. HEAP32[((32544 + 448|0))>>2] = $tbase$245$i;
  21358. HEAP32[((32544 + 452|0))>>2] = $tsize$244$i;
  21359. HEAP32[((32544 + 460|0))>>2] = 0;
  21360. HEAP32[((32544 + 456|0))>>2] = $945;
  21361. $961 = (($944) + 28|0);
  21362. HEAP32[$961>>2] = 7;
  21363. $962 = (($944) + 32|0);
  21364. $963 = ($962>>>0)<($930>>>0);
  21365. if ($963) {
  21366. $965 = $961;
  21367. while(1) {
  21368. $964 = (($965) + 4|0);
  21369. HEAP32[$964>>2] = 7;
  21370. $966 = (($965) + 8|0);
  21371. $967 = ($966>>>0)<($930>>>0);
  21372. if ($967) {
  21373. $965 = $964;
  21374. } else {
  21375. break;
  21376. }
  21377. }
  21378. }
  21379. $968 = ($944|0)==($636|0);
  21380. if (!($968)) {
  21381. $969 = $944;
  21382. $970 = $636;
  21383. $971 = (($969) - ($970))|0;
  21384. $972 = (($636) + ($971)|0);
  21385. $$sum3$i$i = (($971) + 4)|0;
  21386. $973 = (($636) + ($$sum3$i$i)|0);
  21387. $974 = HEAP32[$973>>2]|0;
  21388. $975 = $974 & -2;
  21389. HEAP32[$973>>2] = $975;
  21390. $976 = $971 | 1;
  21391. $977 = (($636) + 4|0);
  21392. HEAP32[$977>>2] = $976;
  21393. HEAP32[$972>>2] = $971;
  21394. $978 = $971 >>> 3;
  21395. $979 = ($971>>>0)<(256);
  21396. if ($979) {
  21397. $980 = $978 << 1;
  21398. $981 = ((32544 + ($980<<2)|0) + 40|0);
  21399. $982 = HEAP32[32544>>2]|0;
  21400. $983 = 1 << $978;
  21401. $984 = $982 & $983;
  21402. $985 = ($984|0)==(0);
  21403. do {
  21404. if ($985) {
  21405. $986 = $982 | $983;
  21406. HEAP32[32544>>2] = $986;
  21407. $$sum10$pre$i$i = (($980) + 2)|0;
  21408. $$pre$i$i = ((32544 + ($$sum10$pre$i$i<<2)|0) + 40|0);
  21409. $$pre$phi$i$iZ2D = $$pre$i$i;$F$0$i$i = $981;
  21410. } else {
  21411. $$sum11$i$i = (($980) + 2)|0;
  21412. $987 = ((32544 + ($$sum11$i$i<<2)|0) + 40|0);
  21413. $988 = HEAP32[$987>>2]|0;
  21414. $989 = HEAP32[((32544 + 16|0))>>2]|0;
  21415. $990 = ($988>>>0)<($989>>>0);
  21416. if (!($990)) {
  21417. $$pre$phi$i$iZ2D = $987;$F$0$i$i = $988;
  21418. break;
  21419. }
  21420. _abort();
  21421. // unreachable;
  21422. }
  21423. } while(0);
  21424. HEAP32[$$pre$phi$i$iZ2D>>2] = $636;
  21425. $991 = (($F$0$i$i) + 12|0);
  21426. HEAP32[$991>>2] = $636;
  21427. $992 = (($636) + 8|0);
  21428. HEAP32[$992>>2] = $F$0$i$i;
  21429. $993 = (($636) + 12|0);
  21430. HEAP32[$993>>2] = $981;
  21431. break;
  21432. }
  21433. $994 = $971 >>> 8;
  21434. $995 = ($994|0)==(0);
  21435. if ($995) {
  21436. $I1$0$i$i = 0;
  21437. } else {
  21438. $996 = ($971>>>0)>(16777215);
  21439. if ($996) {
  21440. $I1$0$i$i = 31;
  21441. } else {
  21442. $997 = (($994) + 1048320)|0;
  21443. $998 = $997 >>> 16;
  21444. $999 = $998 & 8;
  21445. $1000 = $994 << $999;
  21446. $1001 = (($1000) + 520192)|0;
  21447. $1002 = $1001 >>> 16;
  21448. $1003 = $1002 & 4;
  21449. $1004 = $1003 | $999;
  21450. $1005 = $1000 << $1003;
  21451. $1006 = (($1005) + 245760)|0;
  21452. $1007 = $1006 >>> 16;
  21453. $1008 = $1007 & 2;
  21454. $1009 = $1004 | $1008;
  21455. $1010 = (14 - ($1009))|0;
  21456. $1011 = $1005 << $1008;
  21457. $1012 = $1011 >>> 15;
  21458. $1013 = (($1010) + ($1012))|0;
  21459. $1014 = $1013 << 1;
  21460. $1015 = (($1013) + 7)|0;
  21461. $1016 = $971 >>> $1015;
  21462. $1017 = $1016 & 1;
  21463. $1018 = $1017 | $1014;
  21464. $I1$0$i$i = $1018;
  21465. }
  21466. }
  21467. $1019 = ((32544 + ($I1$0$i$i<<2)|0) + 304|0);
  21468. $1020 = (($636) + 28|0);
  21469. $I1$0$c$i$i = $I1$0$i$i;
  21470. HEAP32[$1020>>2] = $I1$0$c$i$i;
  21471. $1021 = (($636) + 20|0);
  21472. HEAP32[$1021>>2] = 0;
  21473. $1022 = (($636) + 16|0);
  21474. HEAP32[$1022>>2] = 0;
  21475. $1023 = HEAP32[((32544 + 4|0))>>2]|0;
  21476. $1024 = 1 << $I1$0$i$i;
  21477. $1025 = $1023 & $1024;
  21478. $1026 = ($1025|0)==(0);
  21479. if ($1026) {
  21480. $1027 = $1023 | $1024;
  21481. HEAP32[((32544 + 4|0))>>2] = $1027;
  21482. HEAP32[$1019>>2] = $636;
  21483. $1028 = (($636) + 24|0);
  21484. HEAP32[$1028>>2] = $1019;
  21485. $1029 = (($636) + 12|0);
  21486. HEAP32[$1029>>2] = $636;
  21487. $1030 = (($636) + 8|0);
  21488. HEAP32[$1030>>2] = $636;
  21489. break;
  21490. }
  21491. $1031 = HEAP32[$1019>>2]|0;
  21492. $1032 = ($I1$0$i$i|0)==(31);
  21493. if ($1032) {
  21494. $1040 = 0;
  21495. } else {
  21496. $1033 = $I1$0$i$i >>> 1;
  21497. $1034 = (25 - ($1033))|0;
  21498. $1040 = $1034;
  21499. }
  21500. $1035 = (($1031) + 4|0);
  21501. $1036 = HEAP32[$1035>>2]|0;
  21502. $1037 = $1036 & -8;
  21503. $1038 = ($1037|0)==($971|0);
  21504. L493: do {
  21505. if ($1038) {
  21506. $T$0$lcssa$i$i = $1031;
  21507. } else {
  21508. $1039 = $971 << $1040;
  21509. $K2$015$i$i = $1039;$T$014$i$i = $1031;
  21510. while(1) {
  21511. $1047 = $K2$015$i$i >>> 31;
  21512. $1048 = ((($T$014$i$i) + ($1047<<2)|0) + 16|0);
  21513. $1043 = HEAP32[$1048>>2]|0;
  21514. $1049 = ($1043|0)==(0|0);
  21515. if ($1049) {
  21516. break;
  21517. }
  21518. $1041 = $K2$015$i$i << 1;
  21519. $1042 = (($1043) + 4|0);
  21520. $1044 = HEAP32[$1042>>2]|0;
  21521. $1045 = $1044 & -8;
  21522. $1046 = ($1045|0)==($971|0);
  21523. if ($1046) {
  21524. $T$0$lcssa$i$i = $1043;
  21525. break L493;
  21526. } else {
  21527. $K2$015$i$i = $1041;$T$014$i$i = $1043;
  21528. }
  21529. }
  21530. $1050 = HEAP32[((32544 + 16|0))>>2]|0;
  21531. $1051 = ($1048>>>0)<($1050>>>0);
  21532. if ($1051) {
  21533. _abort();
  21534. // unreachable;
  21535. } else {
  21536. HEAP32[$1048>>2] = $636;
  21537. $1052 = (($636) + 24|0);
  21538. HEAP32[$1052>>2] = $T$014$i$i;
  21539. $1053 = (($636) + 12|0);
  21540. HEAP32[$1053>>2] = $636;
  21541. $1054 = (($636) + 8|0);
  21542. HEAP32[$1054>>2] = $636;
  21543. break L308;
  21544. }
  21545. }
  21546. } while(0);
  21547. $1055 = (($T$0$lcssa$i$i) + 8|0);
  21548. $1056 = HEAP32[$1055>>2]|0;
  21549. $1057 = HEAP32[((32544 + 16|0))>>2]|0;
  21550. $1058 = ($T$0$lcssa$i$i>>>0)>=($1057>>>0);
  21551. $1059 = ($1056>>>0)>=($1057>>>0);
  21552. $or$cond$i$i = $1058 & $1059;
  21553. if ($or$cond$i$i) {
  21554. $1060 = (($1056) + 12|0);
  21555. HEAP32[$1060>>2] = $636;
  21556. HEAP32[$1055>>2] = $636;
  21557. $1061 = (($636) + 8|0);
  21558. HEAP32[$1061>>2] = $1056;
  21559. $1062 = (($636) + 12|0);
  21560. HEAP32[$1062>>2] = $T$0$lcssa$i$i;
  21561. $1063 = (($636) + 24|0);
  21562. HEAP32[$1063>>2] = 0;
  21563. break;
  21564. } else {
  21565. _abort();
  21566. // unreachable;
  21567. }
  21568. }
  21569. }
  21570. } while(0);
  21571. $1064 = HEAP32[((32544 + 12|0))>>2]|0;
  21572. $1065 = ($1064>>>0)>($nb$0>>>0);
  21573. if ($1065) {
  21574. $1066 = (($1064) - ($nb$0))|0;
  21575. HEAP32[((32544 + 12|0))>>2] = $1066;
  21576. $1067 = HEAP32[((32544 + 24|0))>>2]|0;
  21577. $1068 = (($1067) + ($nb$0)|0);
  21578. HEAP32[((32544 + 24|0))>>2] = $1068;
  21579. $1069 = $1066 | 1;
  21580. $$sum$i32 = (($nb$0) + 4)|0;
  21581. $1070 = (($1067) + ($$sum$i32)|0);
  21582. HEAP32[$1070>>2] = $1069;
  21583. $1071 = $nb$0 | 3;
  21584. $1072 = (($1067) + 4|0);
  21585. HEAP32[$1072>>2] = $1071;
  21586. $1073 = (($1067) + 8|0);
  21587. $mem$0 = $1073;
  21588. STACKTOP = sp;return ($mem$0|0);
  21589. }
  21590. }
  21591. $1074 = (___errno_location()|0);
  21592. HEAP32[$1074>>2] = 12;
  21593. $mem$0 = 0;
  21594. STACKTOP = sp;return ($mem$0|0);
  21595. }
  21596. function _free($mem) {
  21597. $mem = $mem|0;
  21598. var $$pre = 0, $$pre$phi66Z2D = 0, $$pre$phi68Z2D = 0, $$pre$phiZ2D = 0, $$pre65 = 0, $$pre67 = 0, $$sum = 0, $$sum16$pre = 0, $$sum17 = 0, $$sum18 = 0, $$sum19 = 0, $$sum2 = 0, $$sum20 = 0, $$sum2324 = 0, $$sum25 = 0, $$sum26 = 0, $$sum28 = 0, $$sum29 = 0, $$sum3 = 0, $$sum30 = 0;
  21599. var $$sum31 = 0, $$sum32 = 0, $$sum33 = 0, $$sum34 = 0, $$sum35 = 0, $$sum36 = 0, $$sum37 = 0, $$sum5 = 0, $$sum67 = 0, $$sum8 = 0, $$sum9 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0;
  21600. var $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0;
  21601. var $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0;
  21602. var $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0;
  21603. var $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0;
  21604. var $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0;
  21605. var $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0;
  21606. var $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0;
  21607. var $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0;
  21608. var $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0;
  21609. var $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0;
  21610. var $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0;
  21611. var $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0;
  21612. var $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0;
  21613. var $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0;
  21614. var $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0;
  21615. var $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $F16$0 = 0, $I18$0 = 0, $I18$0$c = 0, $K19$058 = 0, $R$0 = 0, $R$1 = 0, $R7$0 = 0;
  21616. var $R7$1 = 0, $RP$0 = 0, $RP9$0 = 0, $T$0$lcssa = 0, $T$057 = 0, $cond = 0, $cond54 = 0, $or$cond = 0, $p$0 = 0, $psize$0 = 0, $psize$1 = 0, $sp$0$i = 0, $sp$0$in$i = 0, label = 0, sp = 0;
  21617. sp = STACKTOP;
  21618. $0 = ($mem|0)==(0|0);
  21619. if ($0) {
  21620. STACKTOP = sp;return;
  21621. }
  21622. $1 = (($mem) + -8|0);
  21623. $2 = HEAP32[((32544 + 16|0))>>2]|0;
  21624. $3 = ($1>>>0)<($2>>>0);
  21625. if ($3) {
  21626. _abort();
  21627. // unreachable;
  21628. }
  21629. $4 = (($mem) + -4|0);
  21630. $5 = HEAP32[$4>>2]|0;
  21631. $6 = $5 & 3;
  21632. $7 = ($6|0)==(1);
  21633. if ($7) {
  21634. _abort();
  21635. // unreachable;
  21636. }
  21637. $8 = $5 & -8;
  21638. $$sum = (($8) + -8)|0;
  21639. $9 = (($mem) + ($$sum)|0);
  21640. $10 = $5 & 1;
  21641. $11 = ($10|0)==(0);
  21642. do {
  21643. if ($11) {
  21644. $12 = HEAP32[$1>>2]|0;
  21645. $13 = ($6|0)==(0);
  21646. if ($13) {
  21647. STACKTOP = sp;return;
  21648. }
  21649. $$sum2 = (-8 - ($12))|0;
  21650. $14 = (($mem) + ($$sum2)|0);
  21651. $15 = (($12) + ($8))|0;
  21652. $16 = ($14>>>0)<($2>>>0);
  21653. if ($16) {
  21654. _abort();
  21655. // unreachable;
  21656. }
  21657. $17 = HEAP32[((32544 + 20|0))>>2]|0;
  21658. $18 = ($14|0)==($17|0);
  21659. if ($18) {
  21660. $$sum3 = (($8) + -4)|0;
  21661. $103 = (($mem) + ($$sum3)|0);
  21662. $104 = HEAP32[$103>>2]|0;
  21663. $105 = $104 & 3;
  21664. $106 = ($105|0)==(3);
  21665. if (!($106)) {
  21666. $p$0 = $14;$psize$0 = $15;
  21667. break;
  21668. }
  21669. HEAP32[((32544 + 8|0))>>2] = $15;
  21670. $107 = $104 & -2;
  21671. HEAP32[$103>>2] = $107;
  21672. $108 = $15 | 1;
  21673. $$sum26 = (($$sum2) + 4)|0;
  21674. $109 = (($mem) + ($$sum26)|0);
  21675. HEAP32[$109>>2] = $108;
  21676. HEAP32[$9>>2] = $15;
  21677. STACKTOP = sp;return;
  21678. }
  21679. $19 = $12 >>> 3;
  21680. $20 = ($12>>>0)<(256);
  21681. if ($20) {
  21682. $$sum36 = (($$sum2) + 8)|0;
  21683. $21 = (($mem) + ($$sum36)|0);
  21684. $22 = HEAP32[$21>>2]|0;
  21685. $$sum37 = (($$sum2) + 12)|0;
  21686. $23 = (($mem) + ($$sum37)|0);
  21687. $24 = HEAP32[$23>>2]|0;
  21688. $25 = $19 << 1;
  21689. $26 = ((32544 + ($25<<2)|0) + 40|0);
  21690. $27 = ($22|0)==($26|0);
  21691. if (!($27)) {
  21692. $28 = ($22>>>0)<($2>>>0);
  21693. if ($28) {
  21694. _abort();
  21695. // unreachable;
  21696. }
  21697. $29 = (($22) + 12|0);
  21698. $30 = HEAP32[$29>>2]|0;
  21699. $31 = ($30|0)==($14|0);
  21700. if (!($31)) {
  21701. _abort();
  21702. // unreachable;
  21703. }
  21704. }
  21705. $32 = ($24|0)==($22|0);
  21706. if ($32) {
  21707. $33 = 1 << $19;
  21708. $34 = $33 ^ -1;
  21709. $35 = HEAP32[32544>>2]|0;
  21710. $36 = $35 & $34;
  21711. HEAP32[32544>>2] = $36;
  21712. $p$0 = $14;$psize$0 = $15;
  21713. break;
  21714. }
  21715. $37 = ($24|0)==($26|0);
  21716. if ($37) {
  21717. $$pre67 = (($24) + 8|0);
  21718. $$pre$phi68Z2D = $$pre67;
  21719. } else {
  21720. $38 = ($24>>>0)<($2>>>0);
  21721. if ($38) {
  21722. _abort();
  21723. // unreachable;
  21724. }
  21725. $39 = (($24) + 8|0);
  21726. $40 = HEAP32[$39>>2]|0;
  21727. $41 = ($40|0)==($14|0);
  21728. if ($41) {
  21729. $$pre$phi68Z2D = $39;
  21730. } else {
  21731. _abort();
  21732. // unreachable;
  21733. }
  21734. }
  21735. $42 = (($22) + 12|0);
  21736. HEAP32[$42>>2] = $24;
  21737. HEAP32[$$pre$phi68Z2D>>2] = $22;
  21738. $p$0 = $14;$psize$0 = $15;
  21739. break;
  21740. }
  21741. $$sum28 = (($$sum2) + 24)|0;
  21742. $43 = (($mem) + ($$sum28)|0);
  21743. $44 = HEAP32[$43>>2]|0;
  21744. $$sum29 = (($$sum2) + 12)|0;
  21745. $45 = (($mem) + ($$sum29)|0);
  21746. $46 = HEAP32[$45>>2]|0;
  21747. $47 = ($46|0)==($14|0);
  21748. do {
  21749. if ($47) {
  21750. $$sum31 = (($$sum2) + 20)|0;
  21751. $57 = (($mem) + ($$sum31)|0);
  21752. $58 = HEAP32[$57>>2]|0;
  21753. $59 = ($58|0)==(0|0);
  21754. if ($59) {
  21755. $$sum30 = (($$sum2) + 16)|0;
  21756. $60 = (($mem) + ($$sum30)|0);
  21757. $61 = HEAP32[$60>>2]|0;
  21758. $62 = ($61|0)==(0|0);
  21759. if ($62) {
  21760. $R$1 = 0;
  21761. break;
  21762. } else {
  21763. $R$0 = $61;$RP$0 = $60;
  21764. }
  21765. } else {
  21766. $R$0 = $58;$RP$0 = $57;
  21767. }
  21768. while(1) {
  21769. $63 = (($R$0) + 20|0);
  21770. $64 = HEAP32[$63>>2]|0;
  21771. $65 = ($64|0)==(0|0);
  21772. if (!($65)) {
  21773. $R$0 = $64;$RP$0 = $63;
  21774. continue;
  21775. }
  21776. $66 = (($R$0) + 16|0);
  21777. $67 = HEAP32[$66>>2]|0;
  21778. $68 = ($67|0)==(0|0);
  21779. if ($68) {
  21780. break;
  21781. } else {
  21782. $R$0 = $67;$RP$0 = $66;
  21783. }
  21784. }
  21785. $69 = ($RP$0>>>0)<($2>>>0);
  21786. if ($69) {
  21787. _abort();
  21788. // unreachable;
  21789. } else {
  21790. HEAP32[$RP$0>>2] = 0;
  21791. $R$1 = $R$0;
  21792. break;
  21793. }
  21794. } else {
  21795. $$sum35 = (($$sum2) + 8)|0;
  21796. $48 = (($mem) + ($$sum35)|0);
  21797. $49 = HEAP32[$48>>2]|0;
  21798. $50 = ($49>>>0)<($2>>>0);
  21799. if ($50) {
  21800. _abort();
  21801. // unreachable;
  21802. }
  21803. $51 = (($49) + 12|0);
  21804. $52 = HEAP32[$51>>2]|0;
  21805. $53 = ($52|0)==($14|0);
  21806. if (!($53)) {
  21807. _abort();
  21808. // unreachable;
  21809. }
  21810. $54 = (($46) + 8|0);
  21811. $55 = HEAP32[$54>>2]|0;
  21812. $56 = ($55|0)==($14|0);
  21813. if ($56) {
  21814. HEAP32[$51>>2] = $46;
  21815. HEAP32[$54>>2] = $49;
  21816. $R$1 = $46;
  21817. break;
  21818. } else {
  21819. _abort();
  21820. // unreachable;
  21821. }
  21822. }
  21823. } while(0);
  21824. $70 = ($44|0)==(0|0);
  21825. if ($70) {
  21826. $p$0 = $14;$psize$0 = $15;
  21827. } else {
  21828. $$sum32 = (($$sum2) + 28)|0;
  21829. $71 = (($mem) + ($$sum32)|0);
  21830. $72 = HEAP32[$71>>2]|0;
  21831. $73 = ((32544 + ($72<<2)|0) + 304|0);
  21832. $74 = HEAP32[$73>>2]|0;
  21833. $75 = ($14|0)==($74|0);
  21834. if ($75) {
  21835. HEAP32[$73>>2] = $R$1;
  21836. $cond = ($R$1|0)==(0|0);
  21837. if ($cond) {
  21838. $76 = 1 << $72;
  21839. $77 = $76 ^ -1;
  21840. $78 = HEAP32[((32544 + 4|0))>>2]|0;
  21841. $79 = $78 & $77;
  21842. HEAP32[((32544 + 4|0))>>2] = $79;
  21843. $p$0 = $14;$psize$0 = $15;
  21844. break;
  21845. }
  21846. } else {
  21847. $80 = HEAP32[((32544 + 16|0))>>2]|0;
  21848. $81 = ($44>>>0)<($80>>>0);
  21849. if ($81) {
  21850. _abort();
  21851. // unreachable;
  21852. }
  21853. $82 = (($44) + 16|0);
  21854. $83 = HEAP32[$82>>2]|0;
  21855. $84 = ($83|0)==($14|0);
  21856. if ($84) {
  21857. HEAP32[$82>>2] = $R$1;
  21858. } else {
  21859. $85 = (($44) + 20|0);
  21860. HEAP32[$85>>2] = $R$1;
  21861. }
  21862. $86 = ($R$1|0)==(0|0);
  21863. if ($86) {
  21864. $p$0 = $14;$psize$0 = $15;
  21865. break;
  21866. }
  21867. }
  21868. $87 = HEAP32[((32544 + 16|0))>>2]|0;
  21869. $88 = ($R$1>>>0)<($87>>>0);
  21870. if ($88) {
  21871. _abort();
  21872. // unreachable;
  21873. }
  21874. $89 = (($R$1) + 24|0);
  21875. HEAP32[$89>>2] = $44;
  21876. $$sum33 = (($$sum2) + 16)|0;
  21877. $90 = (($mem) + ($$sum33)|0);
  21878. $91 = HEAP32[$90>>2]|0;
  21879. $92 = ($91|0)==(0|0);
  21880. do {
  21881. if (!($92)) {
  21882. $93 = ($91>>>0)<($87>>>0);
  21883. if ($93) {
  21884. _abort();
  21885. // unreachable;
  21886. } else {
  21887. $94 = (($R$1) + 16|0);
  21888. HEAP32[$94>>2] = $91;
  21889. $95 = (($91) + 24|0);
  21890. HEAP32[$95>>2] = $R$1;
  21891. break;
  21892. }
  21893. }
  21894. } while(0);
  21895. $$sum34 = (($$sum2) + 20)|0;
  21896. $96 = (($mem) + ($$sum34)|0);
  21897. $97 = HEAP32[$96>>2]|0;
  21898. $98 = ($97|0)==(0|0);
  21899. if ($98) {
  21900. $p$0 = $14;$psize$0 = $15;
  21901. } else {
  21902. $99 = HEAP32[((32544 + 16|0))>>2]|0;
  21903. $100 = ($97>>>0)<($99>>>0);
  21904. if ($100) {
  21905. _abort();
  21906. // unreachable;
  21907. } else {
  21908. $101 = (($R$1) + 20|0);
  21909. HEAP32[$101>>2] = $97;
  21910. $102 = (($97) + 24|0);
  21911. HEAP32[$102>>2] = $R$1;
  21912. $p$0 = $14;$psize$0 = $15;
  21913. break;
  21914. }
  21915. }
  21916. }
  21917. } else {
  21918. $p$0 = $1;$psize$0 = $8;
  21919. }
  21920. } while(0);
  21921. $110 = ($p$0>>>0)<($9>>>0);
  21922. if (!($110)) {
  21923. _abort();
  21924. // unreachable;
  21925. }
  21926. $$sum25 = (($8) + -4)|0;
  21927. $111 = (($mem) + ($$sum25)|0);
  21928. $112 = HEAP32[$111>>2]|0;
  21929. $113 = $112 & 1;
  21930. $114 = ($113|0)==(0);
  21931. if ($114) {
  21932. _abort();
  21933. // unreachable;
  21934. }
  21935. $115 = $112 & 2;
  21936. $116 = ($115|0)==(0);
  21937. if ($116) {
  21938. $117 = HEAP32[((32544 + 24|0))>>2]|0;
  21939. $118 = ($9|0)==($117|0);
  21940. if ($118) {
  21941. $119 = HEAP32[((32544 + 12|0))>>2]|0;
  21942. $120 = (($119) + ($psize$0))|0;
  21943. HEAP32[((32544 + 12|0))>>2] = $120;
  21944. HEAP32[((32544 + 24|0))>>2] = $p$0;
  21945. $121 = $120 | 1;
  21946. $122 = (($p$0) + 4|0);
  21947. HEAP32[$122>>2] = $121;
  21948. $123 = HEAP32[((32544 + 20|0))>>2]|0;
  21949. $124 = ($p$0|0)==($123|0);
  21950. if (!($124)) {
  21951. STACKTOP = sp;return;
  21952. }
  21953. HEAP32[((32544 + 20|0))>>2] = 0;
  21954. HEAP32[((32544 + 8|0))>>2] = 0;
  21955. STACKTOP = sp;return;
  21956. }
  21957. $125 = HEAP32[((32544 + 20|0))>>2]|0;
  21958. $126 = ($9|0)==($125|0);
  21959. if ($126) {
  21960. $127 = HEAP32[((32544 + 8|0))>>2]|0;
  21961. $128 = (($127) + ($psize$0))|0;
  21962. HEAP32[((32544 + 8|0))>>2] = $128;
  21963. HEAP32[((32544 + 20|0))>>2] = $p$0;
  21964. $129 = $128 | 1;
  21965. $130 = (($p$0) + 4|0);
  21966. HEAP32[$130>>2] = $129;
  21967. $131 = (($p$0) + ($128)|0);
  21968. HEAP32[$131>>2] = $128;
  21969. STACKTOP = sp;return;
  21970. }
  21971. $132 = $112 & -8;
  21972. $133 = (($132) + ($psize$0))|0;
  21973. $134 = $112 >>> 3;
  21974. $135 = ($112>>>0)<(256);
  21975. do {
  21976. if ($135) {
  21977. $136 = (($mem) + ($8)|0);
  21978. $137 = HEAP32[$136>>2]|0;
  21979. $$sum2324 = $8 | 4;
  21980. $138 = (($mem) + ($$sum2324)|0);
  21981. $139 = HEAP32[$138>>2]|0;
  21982. $140 = $134 << 1;
  21983. $141 = ((32544 + ($140<<2)|0) + 40|0);
  21984. $142 = ($137|0)==($141|0);
  21985. if (!($142)) {
  21986. $143 = HEAP32[((32544 + 16|0))>>2]|0;
  21987. $144 = ($137>>>0)<($143>>>0);
  21988. if ($144) {
  21989. _abort();
  21990. // unreachable;
  21991. }
  21992. $145 = (($137) + 12|0);
  21993. $146 = HEAP32[$145>>2]|0;
  21994. $147 = ($146|0)==($9|0);
  21995. if (!($147)) {
  21996. _abort();
  21997. // unreachable;
  21998. }
  21999. }
  22000. $148 = ($139|0)==($137|0);
  22001. if ($148) {
  22002. $149 = 1 << $134;
  22003. $150 = $149 ^ -1;
  22004. $151 = HEAP32[32544>>2]|0;
  22005. $152 = $151 & $150;
  22006. HEAP32[32544>>2] = $152;
  22007. break;
  22008. }
  22009. $153 = ($139|0)==($141|0);
  22010. if ($153) {
  22011. $$pre65 = (($139) + 8|0);
  22012. $$pre$phi66Z2D = $$pre65;
  22013. } else {
  22014. $154 = HEAP32[((32544 + 16|0))>>2]|0;
  22015. $155 = ($139>>>0)<($154>>>0);
  22016. if ($155) {
  22017. _abort();
  22018. // unreachable;
  22019. }
  22020. $156 = (($139) + 8|0);
  22021. $157 = HEAP32[$156>>2]|0;
  22022. $158 = ($157|0)==($9|0);
  22023. if ($158) {
  22024. $$pre$phi66Z2D = $156;
  22025. } else {
  22026. _abort();
  22027. // unreachable;
  22028. }
  22029. }
  22030. $159 = (($137) + 12|0);
  22031. HEAP32[$159>>2] = $139;
  22032. HEAP32[$$pre$phi66Z2D>>2] = $137;
  22033. } else {
  22034. $$sum5 = (($8) + 16)|0;
  22035. $160 = (($mem) + ($$sum5)|0);
  22036. $161 = HEAP32[$160>>2]|0;
  22037. $$sum67 = $8 | 4;
  22038. $162 = (($mem) + ($$sum67)|0);
  22039. $163 = HEAP32[$162>>2]|0;
  22040. $164 = ($163|0)==($9|0);
  22041. do {
  22042. if ($164) {
  22043. $$sum9 = (($8) + 12)|0;
  22044. $175 = (($mem) + ($$sum9)|0);
  22045. $176 = HEAP32[$175>>2]|0;
  22046. $177 = ($176|0)==(0|0);
  22047. if ($177) {
  22048. $$sum8 = (($8) + 8)|0;
  22049. $178 = (($mem) + ($$sum8)|0);
  22050. $179 = HEAP32[$178>>2]|0;
  22051. $180 = ($179|0)==(0|0);
  22052. if ($180) {
  22053. $R7$1 = 0;
  22054. break;
  22055. } else {
  22056. $R7$0 = $179;$RP9$0 = $178;
  22057. }
  22058. } else {
  22059. $R7$0 = $176;$RP9$0 = $175;
  22060. }
  22061. while(1) {
  22062. $181 = (($R7$0) + 20|0);
  22063. $182 = HEAP32[$181>>2]|0;
  22064. $183 = ($182|0)==(0|0);
  22065. if (!($183)) {
  22066. $R7$0 = $182;$RP9$0 = $181;
  22067. continue;
  22068. }
  22069. $184 = (($R7$0) + 16|0);
  22070. $185 = HEAP32[$184>>2]|0;
  22071. $186 = ($185|0)==(0|0);
  22072. if ($186) {
  22073. break;
  22074. } else {
  22075. $R7$0 = $185;$RP9$0 = $184;
  22076. }
  22077. }
  22078. $187 = HEAP32[((32544 + 16|0))>>2]|0;
  22079. $188 = ($RP9$0>>>0)<($187>>>0);
  22080. if ($188) {
  22081. _abort();
  22082. // unreachable;
  22083. } else {
  22084. HEAP32[$RP9$0>>2] = 0;
  22085. $R7$1 = $R7$0;
  22086. break;
  22087. }
  22088. } else {
  22089. $165 = (($mem) + ($8)|0);
  22090. $166 = HEAP32[$165>>2]|0;
  22091. $167 = HEAP32[((32544 + 16|0))>>2]|0;
  22092. $168 = ($166>>>0)<($167>>>0);
  22093. if ($168) {
  22094. _abort();
  22095. // unreachable;
  22096. }
  22097. $169 = (($166) + 12|0);
  22098. $170 = HEAP32[$169>>2]|0;
  22099. $171 = ($170|0)==($9|0);
  22100. if (!($171)) {
  22101. _abort();
  22102. // unreachable;
  22103. }
  22104. $172 = (($163) + 8|0);
  22105. $173 = HEAP32[$172>>2]|0;
  22106. $174 = ($173|0)==($9|0);
  22107. if ($174) {
  22108. HEAP32[$169>>2] = $163;
  22109. HEAP32[$172>>2] = $166;
  22110. $R7$1 = $163;
  22111. break;
  22112. } else {
  22113. _abort();
  22114. // unreachable;
  22115. }
  22116. }
  22117. } while(0);
  22118. $189 = ($161|0)==(0|0);
  22119. if (!($189)) {
  22120. $$sum18 = (($8) + 20)|0;
  22121. $190 = (($mem) + ($$sum18)|0);
  22122. $191 = HEAP32[$190>>2]|0;
  22123. $192 = ((32544 + ($191<<2)|0) + 304|0);
  22124. $193 = HEAP32[$192>>2]|0;
  22125. $194 = ($9|0)==($193|0);
  22126. if ($194) {
  22127. HEAP32[$192>>2] = $R7$1;
  22128. $cond54 = ($R7$1|0)==(0|0);
  22129. if ($cond54) {
  22130. $195 = 1 << $191;
  22131. $196 = $195 ^ -1;
  22132. $197 = HEAP32[((32544 + 4|0))>>2]|0;
  22133. $198 = $197 & $196;
  22134. HEAP32[((32544 + 4|0))>>2] = $198;
  22135. break;
  22136. }
  22137. } else {
  22138. $199 = HEAP32[((32544 + 16|0))>>2]|0;
  22139. $200 = ($161>>>0)<($199>>>0);
  22140. if ($200) {
  22141. _abort();
  22142. // unreachable;
  22143. }
  22144. $201 = (($161) + 16|0);
  22145. $202 = HEAP32[$201>>2]|0;
  22146. $203 = ($202|0)==($9|0);
  22147. if ($203) {
  22148. HEAP32[$201>>2] = $R7$1;
  22149. } else {
  22150. $204 = (($161) + 20|0);
  22151. HEAP32[$204>>2] = $R7$1;
  22152. }
  22153. $205 = ($R7$1|0)==(0|0);
  22154. if ($205) {
  22155. break;
  22156. }
  22157. }
  22158. $206 = HEAP32[((32544 + 16|0))>>2]|0;
  22159. $207 = ($R7$1>>>0)<($206>>>0);
  22160. if ($207) {
  22161. _abort();
  22162. // unreachable;
  22163. }
  22164. $208 = (($R7$1) + 24|0);
  22165. HEAP32[$208>>2] = $161;
  22166. $$sum19 = (($8) + 8)|0;
  22167. $209 = (($mem) + ($$sum19)|0);
  22168. $210 = HEAP32[$209>>2]|0;
  22169. $211 = ($210|0)==(0|0);
  22170. do {
  22171. if (!($211)) {
  22172. $212 = ($210>>>0)<($206>>>0);
  22173. if ($212) {
  22174. _abort();
  22175. // unreachable;
  22176. } else {
  22177. $213 = (($R7$1) + 16|0);
  22178. HEAP32[$213>>2] = $210;
  22179. $214 = (($210) + 24|0);
  22180. HEAP32[$214>>2] = $R7$1;
  22181. break;
  22182. }
  22183. }
  22184. } while(0);
  22185. $$sum20 = (($8) + 12)|0;
  22186. $215 = (($mem) + ($$sum20)|0);
  22187. $216 = HEAP32[$215>>2]|0;
  22188. $217 = ($216|0)==(0|0);
  22189. if (!($217)) {
  22190. $218 = HEAP32[((32544 + 16|0))>>2]|0;
  22191. $219 = ($216>>>0)<($218>>>0);
  22192. if ($219) {
  22193. _abort();
  22194. // unreachable;
  22195. } else {
  22196. $220 = (($R7$1) + 20|0);
  22197. HEAP32[$220>>2] = $216;
  22198. $221 = (($216) + 24|0);
  22199. HEAP32[$221>>2] = $R7$1;
  22200. break;
  22201. }
  22202. }
  22203. }
  22204. }
  22205. } while(0);
  22206. $222 = $133 | 1;
  22207. $223 = (($p$0) + 4|0);
  22208. HEAP32[$223>>2] = $222;
  22209. $224 = (($p$0) + ($133)|0);
  22210. HEAP32[$224>>2] = $133;
  22211. $225 = HEAP32[((32544 + 20|0))>>2]|0;
  22212. $226 = ($p$0|0)==($225|0);
  22213. if ($226) {
  22214. HEAP32[((32544 + 8|0))>>2] = $133;
  22215. STACKTOP = sp;return;
  22216. } else {
  22217. $psize$1 = $133;
  22218. }
  22219. } else {
  22220. $227 = $112 & -2;
  22221. HEAP32[$111>>2] = $227;
  22222. $228 = $psize$0 | 1;
  22223. $229 = (($p$0) + 4|0);
  22224. HEAP32[$229>>2] = $228;
  22225. $230 = (($p$0) + ($psize$0)|0);
  22226. HEAP32[$230>>2] = $psize$0;
  22227. $psize$1 = $psize$0;
  22228. }
  22229. $231 = $psize$1 >>> 3;
  22230. $232 = ($psize$1>>>0)<(256);
  22231. if ($232) {
  22232. $233 = $231 << 1;
  22233. $234 = ((32544 + ($233<<2)|0) + 40|0);
  22234. $235 = HEAP32[32544>>2]|0;
  22235. $236 = 1 << $231;
  22236. $237 = $235 & $236;
  22237. $238 = ($237|0)==(0);
  22238. if ($238) {
  22239. $239 = $235 | $236;
  22240. HEAP32[32544>>2] = $239;
  22241. $$sum16$pre = (($233) + 2)|0;
  22242. $$pre = ((32544 + ($$sum16$pre<<2)|0) + 40|0);
  22243. $$pre$phiZ2D = $$pre;$F16$0 = $234;
  22244. } else {
  22245. $$sum17 = (($233) + 2)|0;
  22246. $240 = ((32544 + ($$sum17<<2)|0) + 40|0);
  22247. $241 = HEAP32[$240>>2]|0;
  22248. $242 = HEAP32[((32544 + 16|0))>>2]|0;
  22249. $243 = ($241>>>0)<($242>>>0);
  22250. if ($243) {
  22251. _abort();
  22252. // unreachable;
  22253. } else {
  22254. $$pre$phiZ2D = $240;$F16$0 = $241;
  22255. }
  22256. }
  22257. HEAP32[$$pre$phiZ2D>>2] = $p$0;
  22258. $244 = (($F16$0) + 12|0);
  22259. HEAP32[$244>>2] = $p$0;
  22260. $245 = (($p$0) + 8|0);
  22261. HEAP32[$245>>2] = $F16$0;
  22262. $246 = (($p$0) + 12|0);
  22263. HEAP32[$246>>2] = $234;
  22264. STACKTOP = sp;return;
  22265. }
  22266. $247 = $psize$1 >>> 8;
  22267. $248 = ($247|0)==(0);
  22268. if ($248) {
  22269. $I18$0 = 0;
  22270. } else {
  22271. $249 = ($psize$1>>>0)>(16777215);
  22272. if ($249) {
  22273. $I18$0 = 31;
  22274. } else {
  22275. $250 = (($247) + 1048320)|0;
  22276. $251 = $250 >>> 16;
  22277. $252 = $251 & 8;
  22278. $253 = $247 << $252;
  22279. $254 = (($253) + 520192)|0;
  22280. $255 = $254 >>> 16;
  22281. $256 = $255 & 4;
  22282. $257 = $256 | $252;
  22283. $258 = $253 << $256;
  22284. $259 = (($258) + 245760)|0;
  22285. $260 = $259 >>> 16;
  22286. $261 = $260 & 2;
  22287. $262 = $257 | $261;
  22288. $263 = (14 - ($262))|0;
  22289. $264 = $258 << $261;
  22290. $265 = $264 >>> 15;
  22291. $266 = (($263) + ($265))|0;
  22292. $267 = $266 << 1;
  22293. $268 = (($266) + 7)|0;
  22294. $269 = $psize$1 >>> $268;
  22295. $270 = $269 & 1;
  22296. $271 = $270 | $267;
  22297. $I18$0 = $271;
  22298. }
  22299. }
  22300. $272 = ((32544 + ($I18$0<<2)|0) + 304|0);
  22301. $273 = (($p$0) + 28|0);
  22302. $I18$0$c = $I18$0;
  22303. HEAP32[$273>>2] = $I18$0$c;
  22304. $274 = (($p$0) + 20|0);
  22305. HEAP32[$274>>2] = 0;
  22306. $275 = (($p$0) + 16|0);
  22307. HEAP32[$275>>2] = 0;
  22308. $276 = HEAP32[((32544 + 4|0))>>2]|0;
  22309. $277 = 1 << $I18$0;
  22310. $278 = $276 & $277;
  22311. $279 = ($278|0)==(0);
  22312. L199: do {
  22313. if ($279) {
  22314. $280 = $276 | $277;
  22315. HEAP32[((32544 + 4|0))>>2] = $280;
  22316. HEAP32[$272>>2] = $p$0;
  22317. $281 = (($p$0) + 24|0);
  22318. HEAP32[$281>>2] = $272;
  22319. $282 = (($p$0) + 12|0);
  22320. HEAP32[$282>>2] = $p$0;
  22321. $283 = (($p$0) + 8|0);
  22322. HEAP32[$283>>2] = $p$0;
  22323. } else {
  22324. $284 = HEAP32[$272>>2]|0;
  22325. $285 = ($I18$0|0)==(31);
  22326. if ($285) {
  22327. $293 = 0;
  22328. } else {
  22329. $286 = $I18$0 >>> 1;
  22330. $287 = (25 - ($286))|0;
  22331. $293 = $287;
  22332. }
  22333. $288 = (($284) + 4|0);
  22334. $289 = HEAP32[$288>>2]|0;
  22335. $290 = $289 & -8;
  22336. $291 = ($290|0)==($psize$1|0);
  22337. L205: do {
  22338. if ($291) {
  22339. $T$0$lcssa = $284;
  22340. } else {
  22341. $292 = $psize$1 << $293;
  22342. $K19$058 = $292;$T$057 = $284;
  22343. while(1) {
  22344. $300 = $K19$058 >>> 31;
  22345. $301 = ((($T$057) + ($300<<2)|0) + 16|0);
  22346. $296 = HEAP32[$301>>2]|0;
  22347. $302 = ($296|0)==(0|0);
  22348. if ($302) {
  22349. break;
  22350. }
  22351. $294 = $K19$058 << 1;
  22352. $295 = (($296) + 4|0);
  22353. $297 = HEAP32[$295>>2]|0;
  22354. $298 = $297 & -8;
  22355. $299 = ($298|0)==($psize$1|0);
  22356. if ($299) {
  22357. $T$0$lcssa = $296;
  22358. break L205;
  22359. } else {
  22360. $K19$058 = $294;$T$057 = $296;
  22361. }
  22362. }
  22363. $303 = HEAP32[((32544 + 16|0))>>2]|0;
  22364. $304 = ($301>>>0)<($303>>>0);
  22365. if ($304) {
  22366. _abort();
  22367. // unreachable;
  22368. } else {
  22369. HEAP32[$301>>2] = $p$0;
  22370. $305 = (($p$0) + 24|0);
  22371. HEAP32[$305>>2] = $T$057;
  22372. $306 = (($p$0) + 12|0);
  22373. HEAP32[$306>>2] = $p$0;
  22374. $307 = (($p$0) + 8|0);
  22375. HEAP32[$307>>2] = $p$0;
  22376. break L199;
  22377. }
  22378. }
  22379. } while(0);
  22380. $308 = (($T$0$lcssa) + 8|0);
  22381. $309 = HEAP32[$308>>2]|0;
  22382. $310 = HEAP32[((32544 + 16|0))>>2]|0;
  22383. $311 = ($T$0$lcssa>>>0)>=($310>>>0);
  22384. $312 = ($309>>>0)>=($310>>>0);
  22385. $or$cond = $311 & $312;
  22386. if ($or$cond) {
  22387. $313 = (($309) + 12|0);
  22388. HEAP32[$313>>2] = $p$0;
  22389. HEAP32[$308>>2] = $p$0;
  22390. $314 = (($p$0) + 8|0);
  22391. HEAP32[$314>>2] = $309;
  22392. $315 = (($p$0) + 12|0);
  22393. HEAP32[$315>>2] = $T$0$lcssa;
  22394. $316 = (($p$0) + 24|0);
  22395. HEAP32[$316>>2] = 0;
  22396. break;
  22397. } else {
  22398. _abort();
  22399. // unreachable;
  22400. }
  22401. }
  22402. } while(0);
  22403. $317 = HEAP32[((32544 + 32|0))>>2]|0;
  22404. $318 = (($317) + -1)|0;
  22405. HEAP32[((32544 + 32|0))>>2] = $318;
  22406. $319 = ($318|0)==(0);
  22407. if ($319) {
  22408. $sp$0$in$i = ((32544 + 456|0));
  22409. } else {
  22410. STACKTOP = sp;return;
  22411. }
  22412. while(1) {
  22413. $sp$0$i = HEAP32[$sp$0$in$i>>2]|0;
  22414. $320 = ($sp$0$i|0)==(0|0);
  22415. $321 = (($sp$0$i) + 8|0);
  22416. if ($320) {
  22417. break;
  22418. } else {
  22419. $sp$0$in$i = $321;
  22420. }
  22421. }
  22422. HEAP32[((32544 + 32|0))>>2] = -1;
  22423. STACKTOP = sp;return;
  22424. }
  22425. function runPostSets() {
  22426. }
  22427. function _bitshift64Ashr(low, high, bits) {
  22428. low = low|0; high = high|0; bits = bits|0;
  22429. var ander = 0;
  22430. if ((bits|0) < 32) {
  22431. ander = ((1 << bits) - 1)|0;
  22432. tempRet0 = high >> bits;
  22433. return (low >>> bits) | ((high&ander) << (32 - bits));
  22434. }
  22435. tempRet0 = (high|0) < 0 ? -1 : 0;
  22436. return (high >> (bits - 32))|0;
  22437. }
  22438. function _i64Subtract(a, b, c, d) {
  22439. a = a|0; b = b|0; c = c|0; d = d|0;
  22440. var l = 0, h = 0;
  22441. l = (a - c)>>>0;
  22442. h = (b - d)>>>0;
  22443. h = (b - d - (((c>>>0) > (a>>>0))|0))>>>0; // Borrow one from high word to low word on underflow.
  22444. return ((tempRet0 = h,l|0)|0);
  22445. }
  22446. function _i64Add(a, b, c, d) {
  22447. /*
  22448. x = a + b*2^32
  22449. y = c + d*2^32
  22450. result = l + h*2^32
  22451. */
  22452. a = a|0; b = b|0; c = c|0; d = d|0;
  22453. var l = 0, h = 0;
  22454. l = (a + c)>>>0;
  22455. h = (b + d + (((l>>>0) < (a>>>0))|0))>>>0; // Add carry from low word to high word on overflow.
  22456. return ((tempRet0 = h,l|0)|0);
  22457. }
  22458. function _memset(ptr, value, num) {
  22459. ptr = ptr|0; value = value|0; num = num|0;
  22460. var stop = 0, value4 = 0, stop4 = 0, unaligned = 0;
  22461. stop = (ptr + num)|0;
  22462. if ((num|0) >= 20) {
  22463. // This is unaligned, but quite large, so work hard to get to aligned settings
  22464. value = value & 0xff;
  22465. unaligned = ptr & 3;
  22466. value4 = value | (value << 8) | (value << 16) | (value << 24);
  22467. stop4 = stop & ~3;
  22468. if (unaligned) {
  22469. unaligned = (ptr + 4 - unaligned)|0;
  22470. while ((ptr|0) < (unaligned|0)) { // no need to check for stop, since we have large num
  22471. HEAP8[((ptr)>>0)]=value;
  22472. ptr = (ptr+1)|0;
  22473. }
  22474. }
  22475. while ((ptr|0) < (stop4|0)) {
  22476. HEAP32[((ptr)>>2)]=value4;
  22477. ptr = (ptr+4)|0;
  22478. }
  22479. }
  22480. while ((ptr|0) < (stop|0)) {
  22481. HEAP8[((ptr)>>0)]=value;
  22482. ptr = (ptr+1)|0;
  22483. }
  22484. return (ptr-num)|0;
  22485. }
  22486. function _bitshift64Lshr(low, high, bits) {
  22487. low = low|0; high = high|0; bits = bits|0;
  22488. var ander = 0;
  22489. if ((bits|0) < 32) {
  22490. ander = ((1 << bits) - 1)|0;
  22491. tempRet0 = high >>> bits;
  22492. return (low >>> bits) | ((high&ander) << (32 - bits));
  22493. }
  22494. tempRet0 = 0;
  22495. return (high >>> (bits - 32))|0;
  22496. }
  22497. function _bitshift64Shl(low, high, bits) {
  22498. low = low|0; high = high|0; bits = bits|0;
  22499. var ander = 0;
  22500. if ((bits|0) < 32) {
  22501. ander = ((1 << bits) - 1)|0;
  22502. tempRet0 = (high << bits) | ((low&(ander << (32 - bits))) >>> (32 - bits));
  22503. return low << bits;
  22504. }
  22505. tempRet0 = low << (bits - 32);
  22506. return 0;
  22507. }
  22508. function _strlen(ptr) {
  22509. ptr = ptr|0;
  22510. var curr = 0;
  22511. curr = ptr;
  22512. while (((HEAP8[((curr)>>0)])|0)) {
  22513. curr = (curr + 1)|0;
  22514. }
  22515. return (curr - ptr)|0;
  22516. }
  22517. function _memcpy(dest, src, num) {
  22518. dest = dest|0; src = src|0; num = num|0;
  22519. var ret = 0;
  22520. if ((num|0) >= 4096) return _emscripten_memcpy_big(dest|0, src|0, num|0)|0;
  22521. ret = dest|0;
  22522. if ((dest&3) == (src&3)) {
  22523. while (dest & 3) {
  22524. if ((num|0) == 0) return ret|0;
  22525. HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0);
  22526. dest = (dest+1)|0;
  22527. src = (src+1)|0;
  22528. num = (num-1)|0;
  22529. }
  22530. while ((num|0) >= 4) {
  22531. HEAP32[((dest)>>2)]=((HEAP32[((src)>>2)])|0);
  22532. dest = (dest+4)|0;
  22533. src = (src+4)|0;
  22534. num = (num-4)|0;
  22535. }
  22536. }
  22537. while ((num|0) > 0) {
  22538. HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0);
  22539. dest = (dest+1)|0;
  22540. src = (src+1)|0;
  22541. num = (num-1)|0;
  22542. }
  22543. return ret|0;
  22544. }
  22545. function _memmove(dest, src, num) {
  22546. dest = dest|0; src = src|0; num = num|0;
  22547. var ret = 0;
  22548. if (((src|0) < (dest|0)) & ((dest|0) < ((src + num)|0))) {
  22549. // Unlikely case: Copy backwards in a safe manner
  22550. ret = dest;
  22551. src = (src + num)|0;
  22552. dest = (dest + num)|0;
  22553. while ((num|0) > 0) {
  22554. dest = (dest - 1)|0;
  22555. src = (src - 1)|0;
  22556. num = (num - 1)|0;
  22557. HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0);
  22558. }
  22559. dest = ret;
  22560. } else {
  22561. _memcpy(dest, src, num) | 0;
  22562. }
  22563. return dest | 0;
  22564. }
  22565. function _llvm_ctlz_i32(x) {
  22566. x = x|0;
  22567. var ret = 0;
  22568. ret = ((HEAP8[(((ctlz_i8)+(x >>> 24))>>0)])|0);
  22569. if ((ret|0) < 8) return ret|0;
  22570. ret = ((HEAP8[(((ctlz_i8)+((x >> 16)&0xff))>>0)])|0);
  22571. if ((ret|0) < 8) return (ret + 8)|0;
  22572. ret = ((HEAP8[(((ctlz_i8)+((x >> 8)&0xff))>>0)])|0);
  22573. if ((ret|0) < 8) return (ret + 16)|0;
  22574. return (((HEAP8[(((ctlz_i8)+(x&0xff))>>0)])|0) + 24)|0;
  22575. }
  22576. function _llvm_cttz_i32(x) {
  22577. x = x|0;
  22578. var ret = 0;
  22579. ret = ((HEAP8[(((cttz_i8)+(x & 0xff))>>0)])|0);
  22580. if ((ret|0) < 8) return ret|0;
  22581. ret = ((HEAP8[(((cttz_i8)+((x >> 8)&0xff))>>0)])|0);
  22582. if ((ret|0) < 8) return (ret + 8)|0;
  22583. ret = ((HEAP8[(((cttz_i8)+((x >> 16)&0xff))>>0)])|0);
  22584. if ((ret|0) < 8) return (ret + 16)|0;
  22585. return (((HEAP8[(((cttz_i8)+(x >>> 24))>>0)])|0) + 24)|0;
  22586. }
  22587. // ======== compiled code from system/lib/compiler-rt , see readme therein
  22588. function ___muldsi3($a, $b) {
  22589. $a = $a | 0;
  22590. $b = $b | 0;
  22591. var $1 = 0, $2 = 0, $3 = 0, $6 = 0, $8 = 0, $11 = 0, $12 = 0;
  22592. $1 = $a & 65535;
  22593. $2 = $b & 65535;
  22594. $3 = Math_imul($2, $1) | 0;
  22595. $6 = $a >>> 16;
  22596. $8 = ($3 >>> 16) + (Math_imul($2, $6) | 0) | 0;
  22597. $11 = $b >>> 16;
  22598. $12 = Math_imul($11, $1) | 0;
  22599. return (tempRet0 = (($8 >>> 16) + (Math_imul($11, $6) | 0) | 0) + ((($8 & 65535) + $12 | 0) >>> 16) | 0, 0 | ($8 + $12 << 16 | $3 & 65535)) | 0;
  22600. }
  22601. function ___divdi3($a$0, $a$1, $b$0, $b$1) {
  22602. $a$0 = $a$0 | 0;
  22603. $a$1 = $a$1 | 0;
  22604. $b$0 = $b$0 | 0;
  22605. $b$1 = $b$1 | 0;
  22606. var $1$0 = 0, $1$1 = 0, $2$0 = 0, $2$1 = 0, $4$0 = 0, $4$1 = 0, $6$0 = 0, $7$0 = 0, $7$1 = 0, $8$0 = 0, $10$0 = 0;
  22607. $1$0 = $a$1 >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1;
  22608. $1$1 = (($a$1 | 0) < 0 ? -1 : 0) >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1;
  22609. $2$0 = $b$1 >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1;
  22610. $2$1 = (($b$1 | 0) < 0 ? -1 : 0) >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1;
  22611. $4$0 = _i64Subtract($1$0 ^ $a$0, $1$1 ^ $a$1, $1$0, $1$1) | 0;
  22612. $4$1 = tempRet0;
  22613. $6$0 = _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0;
  22614. $7$0 = $2$0 ^ $1$0;
  22615. $7$1 = $2$1 ^ $1$1;
  22616. $8$0 = ___udivmoddi4($4$0, $4$1, $6$0, tempRet0, 0) | 0;
  22617. $10$0 = _i64Subtract($8$0 ^ $7$0, tempRet0 ^ $7$1, $7$0, $7$1) | 0;
  22618. return (tempRet0 = tempRet0, $10$0) | 0;
  22619. }
  22620. function ___remdi3($a$0, $a$1, $b$0, $b$1) {
  22621. $a$0 = $a$0 | 0;
  22622. $a$1 = $a$1 | 0;
  22623. $b$0 = $b$0 | 0;
  22624. $b$1 = $b$1 | 0;
  22625. var $rem = 0, $1$0 = 0, $1$1 = 0, $2$0 = 0, $2$1 = 0, $4$0 = 0, $4$1 = 0, $6$0 = 0, $10$0 = 0, $10$1 = 0, __stackBase__ = 0;
  22626. __stackBase__ = STACKTOP;
  22627. STACKTOP = STACKTOP + 8 | 0;
  22628. $rem = __stackBase__ | 0;
  22629. $1$0 = $a$1 >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1;
  22630. $1$1 = (($a$1 | 0) < 0 ? -1 : 0) >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1;
  22631. $2$0 = $b$1 >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1;
  22632. $2$1 = (($b$1 | 0) < 0 ? -1 : 0) >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1;
  22633. $4$0 = _i64Subtract($1$0 ^ $a$0, $1$1 ^ $a$1, $1$0, $1$1) | 0;
  22634. $4$1 = tempRet0;
  22635. $6$0 = _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0;
  22636. ___udivmoddi4($4$0, $4$1, $6$0, tempRet0, $rem) | 0;
  22637. $10$0 = _i64Subtract(HEAP32[$rem >> 2] ^ $1$0, HEAP32[$rem + 4 >> 2] ^ $1$1, $1$0, $1$1) | 0;
  22638. $10$1 = tempRet0;
  22639. STACKTOP = __stackBase__;
  22640. return (tempRet0 = $10$1, $10$0) | 0;
  22641. }
  22642. function ___muldi3($a$0, $a$1, $b$0, $b$1) {
  22643. $a$0 = $a$0 | 0;
  22644. $a$1 = $a$1 | 0;
  22645. $b$0 = $b$0 | 0;
  22646. $b$1 = $b$1 | 0;
  22647. var $x_sroa_0_0_extract_trunc = 0, $y_sroa_0_0_extract_trunc = 0, $1$0 = 0, $1$1 = 0, $2 = 0;
  22648. $x_sroa_0_0_extract_trunc = $a$0;
  22649. $y_sroa_0_0_extract_trunc = $b$0;
  22650. $1$0 = ___muldsi3($x_sroa_0_0_extract_trunc, $y_sroa_0_0_extract_trunc) | 0;
  22651. $1$1 = tempRet0;
  22652. $2 = Math_imul($a$1, $y_sroa_0_0_extract_trunc) | 0;
  22653. return (tempRet0 = ((Math_imul($b$1, $x_sroa_0_0_extract_trunc) | 0) + $2 | 0) + $1$1 | $1$1 & 0, 0 | $1$0 & -1) | 0;
  22654. }
  22655. function ___udivdi3($a$0, $a$1, $b$0, $b$1) {
  22656. $a$0 = $a$0 | 0;
  22657. $a$1 = $a$1 | 0;
  22658. $b$0 = $b$0 | 0;
  22659. $b$1 = $b$1 | 0;
  22660. var $1$0 = 0;
  22661. $1$0 = ___udivmoddi4($a$0, $a$1, $b$0, $b$1, 0) | 0;
  22662. return (tempRet0 = tempRet0, $1$0) | 0;
  22663. }
  22664. function ___uremdi3($a$0, $a$1, $b$0, $b$1) {
  22665. $a$0 = $a$0 | 0;
  22666. $a$1 = $a$1 | 0;
  22667. $b$0 = $b$0 | 0;
  22668. $b$1 = $b$1 | 0;
  22669. var $rem = 0, __stackBase__ = 0;
  22670. __stackBase__ = STACKTOP;
  22671. STACKTOP = STACKTOP + 8 | 0;
  22672. $rem = __stackBase__ | 0;
  22673. ___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) | 0;
  22674. STACKTOP = __stackBase__;
  22675. return (tempRet0 = HEAP32[$rem + 4 >> 2] | 0, HEAP32[$rem >> 2] | 0) | 0;
  22676. }
  22677. function ___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) {
  22678. $a$0 = $a$0 | 0;
  22679. $a$1 = $a$1 | 0;
  22680. $b$0 = $b$0 | 0;
  22681. $b$1 = $b$1 | 0;
  22682. $rem = $rem | 0;
  22683. var $n_sroa_0_0_extract_trunc = 0, $n_sroa_1_4_extract_shift$0 = 0, $n_sroa_1_4_extract_trunc = 0, $d_sroa_0_0_extract_trunc = 0, $d_sroa_1_4_extract_shift$0 = 0, $d_sroa_1_4_extract_trunc = 0, $4 = 0, $17 = 0, $37 = 0, $49 = 0, $51 = 0, $57 = 0, $58 = 0, $66 = 0, $78 = 0, $86 = 0, $88 = 0, $89 = 0, $91 = 0, $92 = 0, $95 = 0, $105 = 0, $117 = 0, $119 = 0, $125 = 0, $126 = 0, $130 = 0, $q_sroa_1_1_ph = 0, $q_sroa_0_1_ph = 0, $r_sroa_1_1_ph = 0, $r_sroa_0_1_ph = 0, $sr_1_ph = 0, $d_sroa_0_0_insert_insert99$0 = 0, $d_sroa_0_0_insert_insert99$1 = 0, $137$0 = 0, $137$1 = 0, $carry_0203 = 0, $sr_1202 = 0, $r_sroa_0_1201 = 0, $r_sroa_1_1200 = 0, $q_sroa_0_1199 = 0, $q_sroa_1_1198 = 0, $147 = 0, $149 = 0, $r_sroa_0_0_insert_insert42$0 = 0, $r_sroa_0_0_insert_insert42$1 = 0, $150$1 = 0, $151$0 = 0, $152 = 0, $154$0 = 0, $r_sroa_0_0_extract_trunc = 0, $r_sroa_1_4_extract_trunc = 0, $155 = 0, $carry_0_lcssa$0 = 0, $carry_0_lcssa$1 = 0, $r_sroa_0_1_lcssa = 0, $r_sroa_1_1_lcssa = 0, $q_sroa_0_1_lcssa = 0, $q_sroa_1_1_lcssa = 0, $q_sroa_0_0_insert_ext75$0 = 0, $q_sroa_0_0_insert_ext75$1 = 0, $q_sroa_0_0_insert_insert77$1 = 0, $_0$0 = 0, $_0$1 = 0;
  22684. $n_sroa_0_0_extract_trunc = $a$0;
  22685. $n_sroa_1_4_extract_shift$0 = $a$1;
  22686. $n_sroa_1_4_extract_trunc = $n_sroa_1_4_extract_shift$0;
  22687. $d_sroa_0_0_extract_trunc = $b$0;
  22688. $d_sroa_1_4_extract_shift$0 = $b$1;
  22689. $d_sroa_1_4_extract_trunc = $d_sroa_1_4_extract_shift$0;
  22690. if (($n_sroa_1_4_extract_trunc | 0) == 0) {
  22691. $4 = ($rem | 0) != 0;
  22692. if (($d_sroa_1_4_extract_trunc | 0) == 0) {
  22693. if ($4) {
  22694. HEAP32[$rem >> 2] = ($n_sroa_0_0_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0);
  22695. HEAP32[$rem + 4 >> 2] = 0;
  22696. }
  22697. $_0$1 = 0;
  22698. $_0$0 = ($n_sroa_0_0_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0) >>> 0;
  22699. return (tempRet0 = $_0$1, $_0$0) | 0;
  22700. } else {
  22701. if (!$4) {
  22702. $_0$1 = 0;
  22703. $_0$0 = 0;
  22704. return (tempRet0 = $_0$1, $_0$0) | 0;
  22705. }
  22706. HEAP32[$rem >> 2] = $a$0 & -1;
  22707. HEAP32[$rem + 4 >> 2] = $a$1 & 0;
  22708. $_0$1 = 0;
  22709. $_0$0 = 0;
  22710. return (tempRet0 = $_0$1, $_0$0) | 0;
  22711. }
  22712. }
  22713. $17 = ($d_sroa_1_4_extract_trunc | 0) == 0;
  22714. do {
  22715. if (($d_sroa_0_0_extract_trunc | 0) == 0) {
  22716. if ($17) {
  22717. if (($rem | 0) != 0) {
  22718. HEAP32[$rem >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0);
  22719. HEAP32[$rem + 4 >> 2] = 0;
  22720. }
  22721. $_0$1 = 0;
  22722. $_0$0 = ($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0) >>> 0;
  22723. return (tempRet0 = $_0$1, $_0$0) | 0;
  22724. }
  22725. if (($n_sroa_0_0_extract_trunc | 0) == 0) {
  22726. if (($rem | 0) != 0) {
  22727. HEAP32[$rem >> 2] = 0;
  22728. HEAP32[$rem + 4 >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_1_4_extract_trunc >>> 0);
  22729. }
  22730. $_0$1 = 0;
  22731. $_0$0 = ($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_1_4_extract_trunc >>> 0) >>> 0;
  22732. return (tempRet0 = $_0$1, $_0$0) | 0;
  22733. }
  22734. $37 = $d_sroa_1_4_extract_trunc - 1 | 0;
  22735. if (($37 & $d_sroa_1_4_extract_trunc | 0) == 0) {
  22736. if (($rem | 0) != 0) {
  22737. HEAP32[$rem >> 2] = 0 | $a$0 & -1;
  22738. HEAP32[$rem + 4 >> 2] = $37 & $n_sroa_1_4_extract_trunc | $a$1 & 0;
  22739. }
  22740. $_0$1 = 0;
  22741. $_0$0 = $n_sroa_1_4_extract_trunc >>> ((_llvm_cttz_i32($d_sroa_1_4_extract_trunc | 0) | 0) >>> 0);
  22742. return (tempRet0 = $_0$1, $_0$0) | 0;
  22743. }
  22744. $49 = _llvm_ctlz_i32($d_sroa_1_4_extract_trunc | 0) | 0;
  22745. $51 = $49 - (_llvm_ctlz_i32($n_sroa_1_4_extract_trunc | 0) | 0) | 0;
  22746. if ($51 >>> 0 <= 30) {
  22747. $57 = $51 + 1 | 0;
  22748. $58 = 31 - $51 | 0;
  22749. $sr_1_ph = $57;
  22750. $r_sroa_0_1_ph = $n_sroa_1_4_extract_trunc << $58 | $n_sroa_0_0_extract_trunc >>> ($57 >>> 0);
  22751. $r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($57 >>> 0);
  22752. $q_sroa_0_1_ph = 0;
  22753. $q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $58;
  22754. break;
  22755. }
  22756. if (($rem | 0) == 0) {
  22757. $_0$1 = 0;
  22758. $_0$0 = 0;
  22759. return (tempRet0 = $_0$1, $_0$0) | 0;
  22760. }
  22761. HEAP32[$rem >> 2] = 0 | $a$0 & -1;
  22762. HEAP32[$rem + 4 >> 2] = $n_sroa_1_4_extract_shift$0 | $a$1 & 0;
  22763. $_0$1 = 0;
  22764. $_0$0 = 0;
  22765. return (tempRet0 = $_0$1, $_0$0) | 0;
  22766. } else {
  22767. if (!$17) {
  22768. $117 = _llvm_ctlz_i32($d_sroa_1_4_extract_trunc | 0) | 0;
  22769. $119 = $117 - (_llvm_ctlz_i32($n_sroa_1_4_extract_trunc | 0) | 0) | 0;
  22770. if ($119 >>> 0 <= 31) {
  22771. $125 = $119 + 1 | 0;
  22772. $126 = 31 - $119 | 0;
  22773. $130 = $119 - 31 >> 31;
  22774. $sr_1_ph = $125;
  22775. $r_sroa_0_1_ph = $n_sroa_0_0_extract_trunc >>> ($125 >>> 0) & $130 | $n_sroa_1_4_extract_trunc << $126;
  22776. $r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($125 >>> 0) & $130;
  22777. $q_sroa_0_1_ph = 0;
  22778. $q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $126;
  22779. break;
  22780. }
  22781. if (($rem | 0) == 0) {
  22782. $_0$1 = 0;
  22783. $_0$0 = 0;
  22784. return (tempRet0 = $_0$1, $_0$0) | 0;
  22785. }
  22786. HEAP32[$rem >> 2] = 0 | $a$0 & -1;
  22787. HEAP32[$rem + 4 >> 2] = $n_sroa_1_4_extract_shift$0 | $a$1 & 0;
  22788. $_0$1 = 0;
  22789. $_0$0 = 0;
  22790. return (tempRet0 = $_0$1, $_0$0) | 0;
  22791. }
  22792. $66 = $d_sroa_0_0_extract_trunc - 1 | 0;
  22793. if (($66 & $d_sroa_0_0_extract_trunc | 0) != 0) {
  22794. $86 = (_llvm_ctlz_i32($d_sroa_0_0_extract_trunc | 0) | 0) + 33 | 0;
  22795. $88 = $86 - (_llvm_ctlz_i32($n_sroa_1_4_extract_trunc | 0) | 0) | 0;
  22796. $89 = 64 - $88 | 0;
  22797. $91 = 32 - $88 | 0;
  22798. $92 = $91 >> 31;
  22799. $95 = $88 - 32 | 0;
  22800. $105 = $95 >> 31;
  22801. $sr_1_ph = $88;
  22802. $r_sroa_0_1_ph = $91 - 1 >> 31 & $n_sroa_1_4_extract_trunc >>> ($95 >>> 0) | ($n_sroa_1_4_extract_trunc << $91 | $n_sroa_0_0_extract_trunc >>> ($88 >>> 0)) & $105;
  22803. $r_sroa_1_1_ph = $105 & $n_sroa_1_4_extract_trunc >>> ($88 >>> 0);
  22804. $q_sroa_0_1_ph = $n_sroa_0_0_extract_trunc << $89 & $92;
  22805. $q_sroa_1_1_ph = ($n_sroa_1_4_extract_trunc << $89 | $n_sroa_0_0_extract_trunc >>> ($95 >>> 0)) & $92 | $n_sroa_0_0_extract_trunc << $91 & $88 - 33 >> 31;
  22806. break;
  22807. }
  22808. if (($rem | 0) != 0) {
  22809. HEAP32[$rem >> 2] = $66 & $n_sroa_0_0_extract_trunc;
  22810. HEAP32[$rem + 4 >> 2] = 0;
  22811. }
  22812. if (($d_sroa_0_0_extract_trunc | 0) == 1) {
  22813. $_0$1 = $n_sroa_1_4_extract_shift$0 | $a$1 & 0;
  22814. $_0$0 = 0 | $a$0 & -1;
  22815. return (tempRet0 = $_0$1, $_0$0) | 0;
  22816. } else {
  22817. $78 = _llvm_cttz_i32($d_sroa_0_0_extract_trunc | 0) | 0;
  22818. $_0$1 = 0 | $n_sroa_1_4_extract_trunc >>> ($78 >>> 0);
  22819. $_0$0 = $n_sroa_1_4_extract_trunc << 32 - $78 | $n_sroa_0_0_extract_trunc >>> ($78 >>> 0) | 0;
  22820. return (tempRet0 = $_0$1, $_0$0) | 0;
  22821. }
  22822. }
  22823. } while (0);
  22824. if (($sr_1_ph | 0) == 0) {
  22825. $q_sroa_1_1_lcssa = $q_sroa_1_1_ph;
  22826. $q_sroa_0_1_lcssa = $q_sroa_0_1_ph;
  22827. $r_sroa_1_1_lcssa = $r_sroa_1_1_ph;
  22828. $r_sroa_0_1_lcssa = $r_sroa_0_1_ph;
  22829. $carry_0_lcssa$1 = 0;
  22830. $carry_0_lcssa$0 = 0;
  22831. } else {
  22832. $d_sroa_0_0_insert_insert99$0 = 0 | $b$0 & -1;
  22833. $d_sroa_0_0_insert_insert99$1 = $d_sroa_1_4_extract_shift$0 | $b$1 & 0;
  22834. $137$0 = _i64Add($d_sroa_0_0_insert_insert99$0, $d_sroa_0_0_insert_insert99$1, -1, -1) | 0;
  22835. $137$1 = tempRet0;
  22836. $q_sroa_1_1198 = $q_sroa_1_1_ph;
  22837. $q_sroa_0_1199 = $q_sroa_0_1_ph;
  22838. $r_sroa_1_1200 = $r_sroa_1_1_ph;
  22839. $r_sroa_0_1201 = $r_sroa_0_1_ph;
  22840. $sr_1202 = $sr_1_ph;
  22841. $carry_0203 = 0;
  22842. while (1) {
  22843. $147 = $q_sroa_0_1199 >>> 31 | $q_sroa_1_1198 << 1;
  22844. $149 = $carry_0203 | $q_sroa_0_1199 << 1;
  22845. $r_sroa_0_0_insert_insert42$0 = 0 | ($r_sroa_0_1201 << 1 | $q_sroa_1_1198 >>> 31);
  22846. $r_sroa_0_0_insert_insert42$1 = $r_sroa_0_1201 >>> 31 | $r_sroa_1_1200 << 1 | 0;
  22847. _i64Subtract($137$0, $137$1, $r_sroa_0_0_insert_insert42$0, $r_sroa_0_0_insert_insert42$1) | 0;
  22848. $150$1 = tempRet0;
  22849. $151$0 = $150$1 >> 31 | (($150$1 | 0) < 0 ? -1 : 0) << 1;
  22850. $152 = $151$0 & 1;
  22851. $154$0 = _i64Subtract($r_sroa_0_0_insert_insert42$0, $r_sroa_0_0_insert_insert42$1, $151$0 & $d_sroa_0_0_insert_insert99$0, ((($150$1 | 0) < 0 ? -1 : 0) >> 31 | (($150$1 | 0) < 0 ? -1 : 0) << 1) & $d_sroa_0_0_insert_insert99$1) | 0;
  22852. $r_sroa_0_0_extract_trunc = $154$0;
  22853. $r_sroa_1_4_extract_trunc = tempRet0;
  22854. $155 = $sr_1202 - 1 | 0;
  22855. if (($155 | 0) == 0) {
  22856. break;
  22857. } else {
  22858. $q_sroa_1_1198 = $147;
  22859. $q_sroa_0_1199 = $149;
  22860. $r_sroa_1_1200 = $r_sroa_1_4_extract_trunc;
  22861. $r_sroa_0_1201 = $r_sroa_0_0_extract_trunc;
  22862. $sr_1202 = $155;
  22863. $carry_0203 = $152;
  22864. }
  22865. }
  22866. $q_sroa_1_1_lcssa = $147;
  22867. $q_sroa_0_1_lcssa = $149;
  22868. $r_sroa_1_1_lcssa = $r_sroa_1_4_extract_trunc;
  22869. $r_sroa_0_1_lcssa = $r_sroa_0_0_extract_trunc;
  22870. $carry_0_lcssa$1 = 0;
  22871. $carry_0_lcssa$0 = $152;
  22872. }
  22873. $q_sroa_0_0_insert_ext75$0 = $q_sroa_0_1_lcssa;
  22874. $q_sroa_0_0_insert_ext75$1 = 0;
  22875. $q_sroa_0_0_insert_insert77$1 = $q_sroa_1_1_lcssa | $q_sroa_0_0_insert_ext75$1;
  22876. if (($rem | 0) != 0) {
  22877. HEAP32[$rem >> 2] = 0 | $r_sroa_0_1_lcssa;
  22878. HEAP32[$rem + 4 >> 2] = $r_sroa_1_1_lcssa | 0;
  22879. }
  22880. $_0$1 = (0 | $q_sroa_0_0_insert_ext75$0) >>> 31 | $q_sroa_0_0_insert_insert77$1 << 1 | ($q_sroa_0_0_insert_ext75$1 << 1 | $q_sroa_0_0_insert_ext75$0 >>> 31) & 0 | $carry_0_lcssa$1;
  22881. $_0$0 = ($q_sroa_0_0_insert_ext75$0 << 1 | 0 >>> 31) & -2 | $carry_0_lcssa$0;
  22882. return (tempRet0 = $_0$1, $_0$0) | 0;
  22883. }
  22884. // =======================================================================
  22885. // EMSCRIPTEN_END_FUNCS
  22886. // EMSCRIPTEN_END_FUNCS
  22887. return { _curve25519_verify: _curve25519_verify, _crypto_sign_ed25519_ref10_ge_scalarmult_base: _crypto_sign_ed25519_ref10_ge_scalarmult_base, _curve25519_sign: _curve25519_sign, _free: _free, _i64Add: _i64Add, _memmove: _memmove, _bitshift64Ashr: _bitshift64Ashr, _sph_sha512_init: _sph_sha512_init, _curve25519_donna: _curve25519_donna, _memset: _memset, _malloc: _malloc, _memcpy: _memcpy, _strlen: _strlen, _bitshift64Lshr: _bitshift64Lshr, _i64Subtract: _i64Subtract, _bitshift64Shl: _bitshift64Shl, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0 };
  22888. })
  22889. // EMSCRIPTEN_END_ASM
  22890. (Module.asmGlobalArg, Module.asmLibraryArg, buffer);
  22891. var _curve25519_verify = Module["_curve25519_verify"] = asm["_curve25519_verify"];
  22892. var _crypto_sign_ed25519_ref10_ge_scalarmult_base = Module["_crypto_sign_ed25519_ref10_ge_scalarmult_base"] = asm["_crypto_sign_ed25519_ref10_ge_scalarmult_base"];
  22893. var _curve25519_sign = Module["_curve25519_sign"] = asm["_curve25519_sign"];
  22894. var _free = Module["_free"] = asm["_free"];
  22895. var _i64Add = Module["_i64Add"] = asm["_i64Add"];
  22896. var _memmove = Module["_memmove"] = asm["_memmove"];
  22897. var _bitshift64Ashr = Module["_bitshift64Ashr"] = asm["_bitshift64Ashr"];
  22898. var _sph_sha512_init = Module["_sph_sha512_init"] = asm["_sph_sha512_init"];
  22899. var _curve25519_donna = Module["_curve25519_donna"] = asm["_curve25519_donna"];
  22900. var _memset = Module["_memset"] = asm["_memset"];
  22901. var _malloc = Module["_malloc"] = asm["_malloc"];
  22902. var _memcpy = Module["_memcpy"] = asm["_memcpy"];
  22903. var _strlen = Module["_strlen"] = asm["_strlen"];
  22904. var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"];
  22905. var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"];
  22906. var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
  22907. var runPostSets = Module["runPostSets"] = asm["runPostSets"];
  22908. Runtime.stackAlloc = asm['stackAlloc'];
  22909. Runtime.stackSave = asm['stackSave'];
  22910. Runtime.stackRestore = asm['stackRestore'];
  22911. Runtime.setTempRet0 = asm['setTempRet0'];
  22912. Runtime.getTempRet0 = asm['getTempRet0'];
  22913. // TODO: strip out parts of this we do not need
  22914. //======= begin closure i64 code =======
  22915. // Copyright 2009 The Closure Library Authors. All Rights Reserved.
  22916. //
  22917. // Licensed under the Apache License, Version 2.0 (the "License");
  22918. // you may not use this file except in compliance with the License.
  22919. // You may obtain a copy of the License at
  22920. //
  22921. // http://www.apache.org/licenses/LICENSE-2.0
  22922. //
  22923. // Unless required by applicable law or agreed to in writing, software
  22924. // distributed under the License is distributed on an "AS-IS" BASIS,
  22925. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  22926. // See the License for the specific language governing permissions and
  22927. // limitations under the License.
  22928. /**
  22929. * @fileoverview Defines a Long class for representing a 64-bit two's-complement
  22930. * integer value, which faithfully simulates the behavior of a Java "long". This
  22931. * implementation is derived from LongLib in GWT.
  22932. *
  22933. */
  22934. var i64Math = (function() { // Emscripten wrapper
  22935. var goog = { math: {} };
  22936. /**
  22937. * Constructs a 64-bit two's-complement integer, given its low and high 32-bit
  22938. * values as *signed* integers. See the from* functions below for more
  22939. * convenient ways of constructing Longs.
  22940. *
  22941. * The internal representation of a long is the two given signed, 32-bit values.
  22942. * We use 32-bit pieces because these are the size of integers on which
  22943. * Javascript performs bit-operations. For operations like addition and
  22944. * multiplication, we split each number into 16-bit pieces, which can easily be
  22945. * multiplied within Javascript's floating-point representation without overflow
  22946. * or change in sign.
  22947. *
  22948. * In the algorithms below, we frequently reduce the negative case to the
  22949. * positive case by negating the input(s) and then post-processing the result.
  22950. * Note that we must ALWAYS check specially whether those values are MIN_VALUE
  22951. * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as
  22952. * a positive number, it overflows back into a negative). Not handling this
  22953. * case would often result in infinite recursion.
  22954. *
  22955. * @param {number} low The low (signed) 32 bits of the long.
  22956. * @param {number} high The high (signed) 32 bits of the long.
  22957. * @constructor
  22958. */
  22959. goog.math.Long = function(low, high) {
  22960. /**
  22961. * @type {number}
  22962. * @private
  22963. */
  22964. this.low_ = low | 0; // force into 32 signed bits.
  22965. /**
  22966. * @type {number}
  22967. * @private
  22968. */
  22969. this.high_ = high | 0; // force into 32 signed bits.
  22970. };
  22971. // NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the
  22972. // from* methods on which they depend.
  22973. /**
  22974. * A cache of the Long representations of small integer values.
  22975. * @type {!Object}
  22976. * @private
  22977. */
  22978. goog.math.Long.IntCache_ = {};
  22979. /**
  22980. * Returns a Long representing the given (32-bit) integer value.
  22981. * @param {number} value The 32-bit integer in question.
  22982. * @return {!goog.math.Long} The corresponding Long value.
  22983. */
  22984. goog.math.Long.fromInt = function(value) {
  22985. if (-128 <= value && value < 128) {
  22986. var cachedObj = goog.math.Long.IntCache_[value];
  22987. if (cachedObj) {
  22988. return cachedObj;
  22989. }
  22990. }
  22991. var obj = new goog.math.Long(value | 0, value < 0 ? -1 : 0);
  22992. if (-128 <= value && value < 128) {
  22993. goog.math.Long.IntCache_[value] = obj;
  22994. }
  22995. return obj;
  22996. };
  22997. /**
  22998. * Returns a Long representing the given value, provided that it is a finite
  22999. * number. Otherwise, zero is returned.
  23000. * @param {number} value The number in question.
  23001. * @return {!goog.math.Long} The corresponding Long value.
  23002. */
  23003. goog.math.Long.fromNumber = function(value) {
  23004. if (isNaN(value) || !isFinite(value)) {
  23005. return goog.math.Long.ZERO;
  23006. } else if (value <= -goog.math.Long.TWO_PWR_63_DBL_) {
  23007. return goog.math.Long.MIN_VALUE;
  23008. } else if (value + 1 >= goog.math.Long.TWO_PWR_63_DBL_) {
  23009. return goog.math.Long.MAX_VALUE;
  23010. } else if (value < 0) {
  23011. return goog.math.Long.fromNumber(-value).negate();
  23012. } else {
  23013. return new goog.math.Long(
  23014. (value % goog.math.Long.TWO_PWR_32_DBL_) | 0,
  23015. (value / goog.math.Long.TWO_PWR_32_DBL_) | 0);
  23016. }
  23017. };
  23018. /**
  23019. * Returns a Long representing the 64-bit integer that comes by concatenating
  23020. * the given high and low bits. Each is assumed to use 32 bits.
  23021. * @param {number} lowBits The low 32-bits.
  23022. * @param {number} highBits The high 32-bits.
  23023. * @return {!goog.math.Long} The corresponding Long value.
  23024. */
  23025. goog.math.Long.fromBits = function(lowBits, highBits) {
  23026. return new goog.math.Long(lowBits, highBits);
  23027. };
  23028. /**
  23029. * Returns a Long representation of the given string, written using the given
  23030. * radix.
  23031. * @param {string} str The textual representation of the Long.
  23032. * @param {number=} opt_radix The radix in which the text is written.
  23033. * @return {!goog.math.Long} The corresponding Long value.
  23034. */
  23035. goog.math.Long.fromString = function(str, opt_radix) {
  23036. if (str.length == 0) {
  23037. throw Error('number format error: empty string');
  23038. }
  23039. var radix = opt_radix || 10;
  23040. if (radix < 2 || 36 < radix) {
  23041. throw Error('radix out of range: ' + radix);
  23042. }
  23043. if (str.charAt(0) == '-') {
  23044. return goog.math.Long.fromString(str.substring(1), radix).negate();
  23045. } else if (str.indexOf('-') >= 0) {
  23046. throw Error('number format error: interior "-" character: ' + str);
  23047. }
  23048. // Do several (8) digits each time through the loop, so as to
  23049. // minimize the calls to the very expensive emulated div.
  23050. var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 8));
  23051. var result = goog.math.Long.ZERO;
  23052. for (var i = 0; i < str.length; i += 8) {
  23053. var size = Math.min(8, str.length - i);
  23054. var value = parseInt(str.substring(i, i + size), radix);
  23055. if (size < 8) {
  23056. var power = goog.math.Long.fromNumber(Math.pow(radix, size));
  23057. result = result.multiply(power).add(goog.math.Long.fromNumber(value));
  23058. } else {
  23059. result = result.multiply(radixToPower);
  23060. result = result.add(goog.math.Long.fromNumber(value));
  23061. }
  23062. }
  23063. return result;
  23064. };
  23065. // NOTE: the compiler should inline these constant values below and then remove
  23066. // these variables, so there should be no runtime penalty for these.
  23067. /**
  23068. * Number used repeated below in calculations. This must appear before the
  23069. * first call to any from* function below.
  23070. * @type {number}
  23071. * @private
  23072. */
  23073. goog.math.Long.TWO_PWR_16_DBL_ = 1 << 16;
  23074. /**
  23075. * @type {number}
  23076. * @private
  23077. */
  23078. goog.math.Long.TWO_PWR_24_DBL_ = 1 << 24;
  23079. /**
  23080. * @type {number}
  23081. * @private
  23082. */
  23083. goog.math.Long.TWO_PWR_32_DBL_ =
  23084. goog.math.Long.TWO_PWR_16_DBL_ * goog.math.Long.TWO_PWR_16_DBL_;
  23085. /**
  23086. * @type {number}
  23087. * @private
  23088. */
  23089. goog.math.Long.TWO_PWR_31_DBL_ =
  23090. goog.math.Long.TWO_PWR_32_DBL_ / 2;
  23091. /**
  23092. * @type {number}
  23093. * @private
  23094. */
  23095. goog.math.Long.TWO_PWR_48_DBL_ =
  23096. goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_16_DBL_;
  23097. /**
  23098. * @type {number}
  23099. * @private
  23100. */
  23101. goog.math.Long.TWO_PWR_64_DBL_ =
  23102. goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_32_DBL_;
  23103. /**
  23104. * @type {number}
  23105. * @private
  23106. */
  23107. goog.math.Long.TWO_PWR_63_DBL_ =
  23108. goog.math.Long.TWO_PWR_64_DBL_ / 2;
  23109. /** @type {!goog.math.Long} */
  23110. goog.math.Long.ZERO = goog.math.Long.fromInt(0);
  23111. /** @type {!goog.math.Long} */
  23112. goog.math.Long.ONE = goog.math.Long.fromInt(1);
  23113. /** @type {!goog.math.Long} */
  23114. goog.math.Long.NEG_ONE = goog.math.Long.fromInt(-1);
  23115. /** @type {!goog.math.Long} */
  23116. goog.math.Long.MAX_VALUE =
  23117. goog.math.Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0);
  23118. /** @type {!goog.math.Long} */
  23119. goog.math.Long.MIN_VALUE = goog.math.Long.fromBits(0, 0x80000000 | 0);
  23120. /**
  23121. * @type {!goog.math.Long}
  23122. * @private
  23123. */
  23124. goog.math.Long.TWO_PWR_24_ = goog.math.Long.fromInt(1 << 24);
  23125. /** @return {number} The value, assuming it is a 32-bit integer. */
  23126. goog.math.Long.prototype.toInt = function() {
  23127. return this.low_;
  23128. };
  23129. /** @return {number} The closest floating-point representation to this value. */
  23130. goog.math.Long.prototype.toNumber = function() {
  23131. return this.high_ * goog.math.Long.TWO_PWR_32_DBL_ +
  23132. this.getLowBitsUnsigned();
  23133. };
  23134. /**
  23135. * @param {number=} opt_radix The radix in which the text should be written.
  23136. * @return {string} The textual representation of this value.
  23137. */
  23138. goog.math.Long.prototype.toString = function(opt_radix) {
  23139. var radix = opt_radix || 10;
  23140. if (radix < 2 || 36 < radix) {
  23141. throw Error('radix out of range: ' + radix);
  23142. }
  23143. if (this.isZero()) {
  23144. return '0';
  23145. }
  23146. if (this.isNegative()) {
  23147. if (this.equals(goog.math.Long.MIN_VALUE)) {
  23148. // We need to change the Long value before it can be negated, so we remove
  23149. // the bottom-most digit in this base and then recurse to do the rest.
  23150. var radixLong = goog.math.Long.fromNumber(radix);
  23151. var div = this.div(radixLong);
  23152. var rem = div.multiply(radixLong).subtract(this);
  23153. return div.toString(radix) + rem.toInt().toString(radix);
  23154. } else {
  23155. return '-' + this.negate().toString(radix);
  23156. }
  23157. }
  23158. // Do several (6) digits each time through the loop, so as to
  23159. // minimize the calls to the very expensive emulated div.
  23160. var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 6));
  23161. var rem = this;
  23162. var result = '';
  23163. while (true) {
  23164. var remDiv = rem.div(radixToPower);
  23165. var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt();
  23166. var digits = intval.toString(radix);
  23167. rem = remDiv;
  23168. if (rem.isZero()) {
  23169. return digits + result;
  23170. } else {
  23171. while (digits.length < 6) {
  23172. digits = '0' + digits;
  23173. }
  23174. result = '' + digits + result;
  23175. }
  23176. }
  23177. };
  23178. /** @return {number} The high 32-bits as a signed value. */
  23179. goog.math.Long.prototype.getHighBits = function() {
  23180. return this.high_;
  23181. };
  23182. /** @return {number} The low 32-bits as a signed value. */
  23183. goog.math.Long.prototype.getLowBits = function() {
  23184. return this.low_;
  23185. };
  23186. /** @return {number} The low 32-bits as an unsigned value. */
  23187. goog.math.Long.prototype.getLowBitsUnsigned = function() {
  23188. return (this.low_ >= 0) ?
  23189. this.low_ : goog.math.Long.TWO_PWR_32_DBL_ + this.low_;
  23190. };
  23191. /**
  23192. * @return {number} Returns the number of bits needed to represent the absolute
  23193. * value of this Long.
  23194. */
  23195. goog.math.Long.prototype.getNumBitsAbs = function() {
  23196. if (this.isNegative()) {
  23197. if (this.equals(goog.math.Long.MIN_VALUE)) {
  23198. return 64;
  23199. } else {
  23200. return this.negate().getNumBitsAbs();
  23201. }
  23202. } else {
  23203. var val = this.high_ != 0 ? this.high_ : this.low_;
  23204. for (var bit = 31; bit > 0; bit--) {
  23205. if ((val & (1 << bit)) != 0) {
  23206. break;
  23207. }
  23208. }
  23209. return this.high_ != 0 ? bit + 33 : bit + 1;
  23210. }
  23211. };
  23212. /** @return {boolean} Whether this value is zero. */
  23213. goog.math.Long.prototype.isZero = function() {
  23214. return this.high_ == 0 && this.low_ == 0;
  23215. };
  23216. /** @return {boolean} Whether this value is negative. */
  23217. goog.math.Long.prototype.isNegative = function() {
  23218. return this.high_ < 0;
  23219. };
  23220. /** @return {boolean} Whether this value is odd. */
  23221. goog.math.Long.prototype.isOdd = function() {
  23222. return (this.low_ & 1) == 1;
  23223. };
  23224. /**
  23225. * @param {goog.math.Long} other Long to compare against.
  23226. * @return {boolean} Whether this Long equals the other.
  23227. */
  23228. goog.math.Long.prototype.equals = function(other) {
  23229. return (this.high_ == other.high_) && (this.low_ == other.low_);
  23230. };
  23231. /**
  23232. * @param {goog.math.Long} other Long to compare against.
  23233. * @return {boolean} Whether this Long does not equal the other.
  23234. */
  23235. goog.math.Long.prototype.notEquals = function(other) {
  23236. return (this.high_ != other.high_) || (this.low_ != other.low_);
  23237. };
  23238. /**
  23239. * @param {goog.math.Long} other Long to compare against.
  23240. * @return {boolean} Whether this Long is less than the other.
  23241. */
  23242. goog.math.Long.prototype.lessThan = function(other) {
  23243. return this.compare(other) < 0;
  23244. };
  23245. /**
  23246. * @param {goog.math.Long} other Long to compare against.
  23247. * @return {boolean} Whether this Long is less than or equal to the other.
  23248. */
  23249. goog.math.Long.prototype.lessThanOrEqual = function(other) {
  23250. return this.compare(other) <= 0;
  23251. };
  23252. /**
  23253. * @param {goog.math.Long} other Long to compare against.
  23254. * @return {boolean} Whether this Long is greater than the other.
  23255. */
  23256. goog.math.Long.prototype.greaterThan = function(other) {
  23257. return this.compare(other) > 0;
  23258. };
  23259. /**
  23260. * @param {goog.math.Long} other Long to compare against.
  23261. * @return {boolean} Whether this Long is greater than or equal to the other.
  23262. */
  23263. goog.math.Long.prototype.greaterThanOrEqual = function(other) {
  23264. return this.compare(other) >= 0;
  23265. };
  23266. /**
  23267. * Compares this Long with the given one.
  23268. * @param {goog.math.Long} other Long to compare against.
  23269. * @return {number} 0 if they are the same, 1 if the this is greater, and -1
  23270. * if the given one is greater.
  23271. */
  23272. goog.math.Long.prototype.compare = function(other) {
  23273. if (this.equals(other)) {
  23274. return 0;
  23275. }
  23276. var thisNeg = this.isNegative();
  23277. var otherNeg = other.isNegative();
  23278. if (thisNeg && !otherNeg) {
  23279. return -1;
  23280. }
  23281. if (!thisNeg && otherNeg) {
  23282. return 1;
  23283. }
  23284. // at this point, the signs are the same, so subtraction will not overflow
  23285. if (this.subtract(other).isNegative()) {
  23286. return -1;
  23287. } else {
  23288. return 1;
  23289. }
  23290. };
  23291. /** @return {!goog.math.Long} The negation of this value. */
  23292. goog.math.Long.prototype.negate = function() {
  23293. if (this.equals(goog.math.Long.MIN_VALUE)) {
  23294. return goog.math.Long.MIN_VALUE;
  23295. } else {
  23296. return this.not().add(goog.math.Long.ONE);
  23297. }
  23298. };
  23299. /**
  23300. * Returns the sum of this and the given Long.
  23301. * @param {goog.math.Long} other Long to add to this one.
  23302. * @return {!goog.math.Long} The sum of this and the given Long.
  23303. */
  23304. goog.math.Long.prototype.add = function(other) {
  23305. // Divide each number into 4 chunks of 16 bits, and then sum the chunks.
  23306. var a48 = this.high_ >>> 16;
  23307. var a32 = this.high_ & 0xFFFF;
  23308. var a16 = this.low_ >>> 16;
  23309. var a00 = this.low_ & 0xFFFF;
  23310. var b48 = other.high_ >>> 16;
  23311. var b32 = other.high_ & 0xFFFF;
  23312. var b16 = other.low_ >>> 16;
  23313. var b00 = other.low_ & 0xFFFF;
  23314. var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
  23315. c00 += a00 + b00;
  23316. c16 += c00 >>> 16;
  23317. c00 &= 0xFFFF;
  23318. c16 += a16 + b16;
  23319. c32 += c16 >>> 16;
  23320. c16 &= 0xFFFF;
  23321. c32 += a32 + b32;
  23322. c48 += c32 >>> 16;
  23323. c32 &= 0xFFFF;
  23324. c48 += a48 + b48;
  23325. c48 &= 0xFFFF;
  23326. return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);
  23327. };
  23328. /**
  23329. * Returns the difference of this and the given Long.
  23330. * @param {goog.math.Long} other Long to subtract from this.
  23331. * @return {!goog.math.Long} The difference of this and the given Long.
  23332. */
  23333. goog.math.Long.prototype.subtract = function(other) {
  23334. return this.add(other.negate());
  23335. };
  23336. /**
  23337. * Returns the product of this and the given long.
  23338. * @param {goog.math.Long} other Long to multiply with this.
  23339. * @return {!goog.math.Long} The product of this and the other.
  23340. */
  23341. goog.math.Long.prototype.multiply = function(other) {
  23342. if (this.isZero()) {
  23343. return goog.math.Long.ZERO;
  23344. } else if (other.isZero()) {
  23345. return goog.math.Long.ZERO;
  23346. }
  23347. if (this.equals(goog.math.Long.MIN_VALUE)) {
  23348. return other.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO;
  23349. } else if (other.equals(goog.math.Long.MIN_VALUE)) {
  23350. return this.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO;
  23351. }
  23352. if (this.isNegative()) {
  23353. if (other.isNegative()) {
  23354. return this.negate().multiply(other.negate());
  23355. } else {
  23356. return this.negate().multiply(other).negate();
  23357. }
  23358. } else if (other.isNegative()) {
  23359. return this.multiply(other.negate()).negate();
  23360. }
  23361. // If both longs are small, use float multiplication
  23362. if (this.lessThan(goog.math.Long.TWO_PWR_24_) &&
  23363. other.lessThan(goog.math.Long.TWO_PWR_24_)) {
  23364. return goog.math.Long.fromNumber(this.toNumber() * other.toNumber());
  23365. }
  23366. // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.
  23367. // We can skip products that would overflow.
  23368. var a48 = this.high_ >>> 16;
  23369. var a32 = this.high_ & 0xFFFF;
  23370. var a16 = this.low_ >>> 16;
  23371. var a00 = this.low_ & 0xFFFF;
  23372. var b48 = other.high_ >>> 16;
  23373. var b32 = other.high_ & 0xFFFF;
  23374. var b16 = other.low_ >>> 16;
  23375. var b00 = other.low_ & 0xFFFF;
  23376. var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
  23377. c00 += a00 * b00;
  23378. c16 += c00 >>> 16;
  23379. c00 &= 0xFFFF;
  23380. c16 += a16 * b00;
  23381. c32 += c16 >>> 16;
  23382. c16 &= 0xFFFF;
  23383. c16 += a00 * b16;
  23384. c32 += c16 >>> 16;
  23385. c16 &= 0xFFFF;
  23386. c32 += a32 * b00;
  23387. c48 += c32 >>> 16;
  23388. c32 &= 0xFFFF;
  23389. c32 += a16 * b16;
  23390. c48 += c32 >>> 16;
  23391. c32 &= 0xFFFF;
  23392. c32 += a00 * b32;
  23393. c48 += c32 >>> 16;
  23394. c32 &= 0xFFFF;
  23395. c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
  23396. c48 &= 0xFFFF;
  23397. return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);
  23398. };
  23399. /**
  23400. * Returns this Long divided by the given one.
  23401. * @param {goog.math.Long} other Long by which to divide.
  23402. * @return {!goog.math.Long} This Long divided by the given one.
  23403. */
  23404. goog.math.Long.prototype.div = function(other) {
  23405. if (other.isZero()) {
  23406. throw Error('division by zero');
  23407. } else if (this.isZero()) {
  23408. return goog.math.Long.ZERO;
  23409. }
  23410. if (this.equals(goog.math.Long.MIN_VALUE)) {
  23411. if (other.equals(goog.math.Long.ONE) ||
  23412. other.equals(goog.math.Long.NEG_ONE)) {
  23413. return goog.math.Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE
  23414. } else if (other.equals(goog.math.Long.MIN_VALUE)) {
  23415. return goog.math.Long.ONE;
  23416. } else {
  23417. // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.
  23418. var halfThis = this.shiftRight(1);
  23419. var approx = halfThis.div(other).shiftLeft(1);
  23420. if (approx.equals(goog.math.Long.ZERO)) {
  23421. return other.isNegative() ? goog.math.Long.ONE : goog.math.Long.NEG_ONE;
  23422. } else {
  23423. var rem = this.subtract(other.multiply(approx));
  23424. var result = approx.add(rem.div(other));
  23425. return result;
  23426. }
  23427. }
  23428. } else if (other.equals(goog.math.Long.MIN_VALUE)) {
  23429. return goog.math.Long.ZERO;
  23430. }
  23431. if (this.isNegative()) {
  23432. if (other.isNegative()) {
  23433. return this.negate().div(other.negate());
  23434. } else {
  23435. return this.negate().div(other).negate();
  23436. }
  23437. } else if (other.isNegative()) {
  23438. return this.div(other.negate()).negate();
  23439. }
  23440. // Repeat the following until the remainder is less than other: find a
  23441. // floating-point that approximates remainder / other *from below*, add this
  23442. // into the result, and subtract it from the remainder. It is critical that
  23443. // the approximate value is less than or equal to the real value so that the
  23444. // remainder never becomes negative.
  23445. var res = goog.math.Long.ZERO;
  23446. var rem = this;
  23447. while (rem.greaterThanOrEqual(other)) {
  23448. // Approximate the result of division. This may be a little greater or
  23449. // smaller than the actual value.
  23450. var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber()));
  23451. // We will tweak the approximate result by changing it in the 48-th digit or
  23452. // the smallest non-fractional digit, whichever is larger.
  23453. var log2 = Math.ceil(Math.log(approx) / Math.LN2);
  23454. var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48);
  23455. // Decrease the approximation until it is smaller than the remainder. Note
  23456. // that if it is too large, the product overflows and is negative.
  23457. var approxRes = goog.math.Long.fromNumber(approx);
  23458. var approxRem = approxRes.multiply(other);
  23459. while (approxRem.isNegative() || approxRem.greaterThan(rem)) {
  23460. approx -= delta;
  23461. approxRes = goog.math.Long.fromNumber(approx);
  23462. approxRem = approxRes.multiply(other);
  23463. }
  23464. // We know the answer can't be zero... and actually, zero would cause
  23465. // infinite recursion since we would make no progress.
  23466. if (approxRes.isZero()) {
  23467. approxRes = goog.math.Long.ONE;
  23468. }
  23469. res = res.add(approxRes);
  23470. rem = rem.subtract(approxRem);
  23471. }
  23472. return res;
  23473. };
  23474. /**
  23475. * Returns this Long modulo the given one.
  23476. * @param {goog.math.Long} other Long by which to mod.
  23477. * @return {!goog.math.Long} This Long modulo the given one.
  23478. */
  23479. goog.math.Long.prototype.modulo = function(other) {
  23480. return this.subtract(this.div(other).multiply(other));
  23481. };
  23482. /** @return {!goog.math.Long} The bitwise-NOT of this value. */
  23483. goog.math.Long.prototype.not = function() {
  23484. return goog.math.Long.fromBits(~this.low_, ~this.high_);
  23485. };
  23486. /**
  23487. * Returns the bitwise-AND of this Long and the given one.
  23488. * @param {goog.math.Long} other The Long with which to AND.
  23489. * @return {!goog.math.Long} The bitwise-AND of this and the other.
  23490. */
  23491. goog.math.Long.prototype.and = function(other) {
  23492. return goog.math.Long.fromBits(this.low_ & other.low_,
  23493. this.high_ & other.high_);
  23494. };
  23495. /**
  23496. * Returns the bitwise-OR of this Long and the given one.
  23497. * @param {goog.math.Long} other The Long with which to OR.
  23498. * @return {!goog.math.Long} The bitwise-OR of this and the other.
  23499. */
  23500. goog.math.Long.prototype.or = function(other) {
  23501. return goog.math.Long.fromBits(this.low_ | other.low_,
  23502. this.high_ | other.high_);
  23503. };
  23504. /**
  23505. * Returns the bitwise-XOR of this Long and the given one.
  23506. * @param {goog.math.Long} other The Long with which to XOR.
  23507. * @return {!goog.math.Long} The bitwise-XOR of this and the other.
  23508. */
  23509. goog.math.Long.prototype.xor = function(other) {
  23510. return goog.math.Long.fromBits(this.low_ ^ other.low_,
  23511. this.high_ ^ other.high_);
  23512. };
  23513. /**
  23514. * Returns this Long with bits shifted to the left by the given amount.
  23515. * @param {number} numBits The number of bits by which to shift.
  23516. * @return {!goog.math.Long} This shifted to the left by the given amount.
  23517. */
  23518. goog.math.Long.prototype.shiftLeft = function(numBits) {
  23519. numBits &= 63;
  23520. if (numBits == 0) {
  23521. return this;
  23522. } else {
  23523. var low = this.low_;
  23524. if (numBits < 32) {
  23525. var high = this.high_;
  23526. return goog.math.Long.fromBits(
  23527. low << numBits,
  23528. (high << numBits) | (low >>> (32 - numBits)));
  23529. } else {
  23530. return goog.math.Long.fromBits(0, low << (numBits - 32));
  23531. }
  23532. }
  23533. };
  23534. /**
  23535. * Returns this Long with bits shifted to the right by the given amount.
  23536. * @param {number} numBits The number of bits by which to shift.
  23537. * @return {!goog.math.Long} This shifted to the right by the given amount.
  23538. */
  23539. goog.math.Long.prototype.shiftRight = function(numBits) {
  23540. numBits &= 63;
  23541. if (numBits == 0) {
  23542. return this;
  23543. } else {
  23544. var high = this.high_;
  23545. if (numBits < 32) {
  23546. var low = this.low_;
  23547. return goog.math.Long.fromBits(
  23548. (low >>> numBits) | (high << (32 - numBits)),
  23549. high >> numBits);
  23550. } else {
  23551. return goog.math.Long.fromBits(
  23552. high >> (numBits - 32),
  23553. high >= 0 ? 0 : -1);
  23554. }
  23555. }
  23556. };
  23557. /**
  23558. * Returns this Long with bits shifted to the right by the given amount, with
  23559. * the new top bits matching the current sign bit.
  23560. * @param {number} numBits The number of bits by which to shift.
  23561. * @return {!goog.math.Long} This shifted to the right by the given amount, with
  23562. * zeros placed into the new leading bits.
  23563. */
  23564. goog.math.Long.prototype.shiftRightUnsigned = function(numBits) {
  23565. numBits &= 63;
  23566. if (numBits == 0) {
  23567. return this;
  23568. } else {
  23569. var high = this.high_;
  23570. if (numBits < 32) {
  23571. var low = this.low_;
  23572. return goog.math.Long.fromBits(
  23573. (low >>> numBits) | (high << (32 - numBits)),
  23574. high >>> numBits);
  23575. } else if (numBits == 32) {
  23576. return goog.math.Long.fromBits(high, 0);
  23577. } else {
  23578. return goog.math.Long.fromBits(high >>> (numBits - 32), 0);
  23579. }
  23580. }
  23581. };
  23582. //======= begin jsbn =======
  23583. var navigator = { appName: 'Modern Browser' }; // polyfill a little
  23584. // Copyright (c) 2005 Tom Wu
  23585. // All Rights Reserved.
  23586. // http://www-cs-students.stanford.edu/~tjw/jsbn/
  23587. /*
  23588. * Copyright (c) 2003-2005 Tom Wu
  23589. * All Rights Reserved.
  23590. *
  23591. * Permission is hereby granted, free of charge, to any person obtaining
  23592. * a copy of this software and associated documentation files (the
  23593. * "Software"), to deal in the Software without restriction, including
  23594. * without limitation the rights to use, copy, modify, merge, publish,
  23595. * distribute, sublicense, and/or sell copies of the Software, and to
  23596. * permit persons to whom the Software is furnished to do so, subject to
  23597. * the following conditions:
  23598. *
  23599. * The above copyright notice and this permission notice shall be
  23600. * included in all copies or substantial portions of the Software.
  23601. *
  23602. * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
  23603. * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
  23604. * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  23605. *
  23606. * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
  23607. * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
  23608. * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF
  23609. * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT
  23610. * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  23611. *
  23612. * In addition, the following condition applies:
  23613. *
  23614. * All redistributions must retain an intact copy of this copyright notice
  23615. * and disclaimer.
  23616. */
  23617. // Basic JavaScript BN library - subset useful for RSA encryption.
  23618. // Bits per digit
  23619. var dbits;
  23620. // JavaScript engine analysis
  23621. var canary = 0xdeadbeefcafe;
  23622. var j_lm = ((canary&0xffffff)==0xefcafe);
  23623. // (public) Constructor
  23624. function BigInteger(a,b,c) {
  23625. if(a != null)
  23626. if("number" == typeof a) this.fromNumber(a,b,c);
  23627. else if(b == null && "string" != typeof a) this.fromString(a,256);
  23628. else this.fromString(a,b);
  23629. }
  23630. // return new, unset BigInteger
  23631. function nbi() { return new BigInteger(null); }
  23632. // am: Compute w_j += (x*this_i), propagate carries,
  23633. // c is initial carry, returns final carry.
  23634. // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
  23635. // We need to select the fastest one that works in this environment.
  23636. // am1: use a single mult and divide to get the high bits,
  23637. // max digit bits should be 26 because
  23638. // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
  23639. function am1(i,x,w,j,c,n) {
  23640. while(--n >= 0) {
  23641. var v = x*this[i++]+w[j]+c;
  23642. c = Math.floor(v/0x4000000);
  23643. w[j++] = v&0x3ffffff;
  23644. }
  23645. return c;
  23646. }
  23647. // am2 avoids a big mult-and-extract completely.
  23648. // Max digit bits should be <= 30 because we do bitwise ops
  23649. // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
  23650. function am2(i,x,w,j,c,n) {
  23651. var xl = x&0x7fff, xh = x>>15;
  23652. while(--n >= 0) {
  23653. var l = this[i]&0x7fff;
  23654. var h = this[i++]>>15;
  23655. var m = xh*l+h*xl;
  23656. l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);
  23657. c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);
  23658. w[j++] = l&0x3fffffff;
  23659. }
  23660. return c;
  23661. }
  23662. // Alternately, set max digit bits to 28 since some
  23663. // browsers slow down when dealing with 32-bit numbers.
  23664. function am3(i,x,w,j,c,n) {
  23665. var xl = x&0x3fff, xh = x>>14;
  23666. while(--n >= 0) {
  23667. var l = this[i]&0x3fff;
  23668. var h = this[i++]>>14;
  23669. var m = xh*l+h*xl;
  23670. l = xl*l+((m&0x3fff)<<14)+w[j]+c;
  23671. c = (l>>28)+(m>>14)+xh*h;
  23672. w[j++] = l&0xfffffff;
  23673. }
  23674. return c;
  23675. }
  23676. if(j_lm && (navigator.appName == "Microsoft Internet Explorer")) {
  23677. BigInteger.prototype.am = am2;
  23678. dbits = 30;
  23679. }
  23680. else if(j_lm && (navigator.appName != "Netscape")) {
  23681. BigInteger.prototype.am = am1;
  23682. dbits = 26;
  23683. }
  23684. else { // Mozilla/Netscape seems to prefer am3
  23685. BigInteger.prototype.am = am3;
  23686. dbits = 28;
  23687. }
  23688. BigInteger.prototype.DB = dbits;
  23689. BigInteger.prototype.DM = ((1<<dbits)-1);
  23690. BigInteger.prototype.DV = (1<<dbits);
  23691. var BI_FP = 52;
  23692. BigInteger.prototype.FV = Math.pow(2,BI_FP);
  23693. BigInteger.prototype.F1 = BI_FP-dbits;
  23694. BigInteger.prototype.F2 = 2*dbits-BI_FP;
  23695. // Digit conversions
  23696. var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
  23697. var BI_RC = new Array();
  23698. var rr,vv;
  23699. rr = "0".charCodeAt(0);
  23700. for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;
  23701. rr = "a".charCodeAt(0);
  23702. for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
  23703. rr = "A".charCodeAt(0);
  23704. for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
  23705. function int2char(n) { return BI_RM.charAt(n); }
  23706. function intAt(s,i) {
  23707. var c = BI_RC[s.charCodeAt(i)];
  23708. return (c==null)?-1:c;
  23709. }
  23710. // (protected) copy this to r
  23711. function bnpCopyTo(r) {
  23712. for(var i = this.t-1; i >= 0; --i) r[i] = this[i];
  23713. r.t = this.t;
  23714. r.s = this.s;
  23715. }
  23716. // (protected) set from integer value x, -DV <= x < DV
  23717. function bnpFromInt(x) {
  23718. this.t = 1;
  23719. this.s = (x<0)?-1:0;
  23720. if(x > 0) this[0] = x;
  23721. else if(x < -1) this[0] = x+DV;
  23722. else this.t = 0;
  23723. }
  23724. // return bigint initialized to value
  23725. function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
  23726. // (protected) set from string and radix
  23727. function bnpFromString(s,b) {
  23728. var k;
  23729. if(b == 16) k = 4;
  23730. else if(b == 8) k = 3;
  23731. else if(b == 256) k = 8; // byte array
  23732. else if(b == 2) k = 1;
  23733. else if(b == 32) k = 5;
  23734. else if(b == 4) k = 2;
  23735. else { this.fromRadix(s,b); return; }
  23736. this.t = 0;
  23737. this.s = 0;
  23738. var i = s.length, mi = false, sh = 0;
  23739. while(--i >= 0) {
  23740. var x = (k==8)?s[i]&0xff:intAt(s,i);
  23741. if(x < 0) {
  23742. if(s.charAt(i) == "-") mi = true;
  23743. continue;
  23744. }
  23745. mi = false;
  23746. if(sh == 0)
  23747. this[this.t++] = x;
  23748. else if(sh+k > this.DB) {
  23749. this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;
  23750. this[this.t++] = (x>>(this.DB-sh));
  23751. }
  23752. else
  23753. this[this.t-1] |= x<<sh;
  23754. sh += k;
  23755. if(sh >= this.DB) sh -= this.DB;
  23756. }
  23757. if(k == 8 && (s[0]&0x80) != 0) {
  23758. this.s = -1;
  23759. if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;
  23760. }
  23761. this.clamp();
  23762. if(mi) BigInteger.ZERO.subTo(this,this);
  23763. }
  23764. // (protected) clamp off excess high words
  23765. function bnpClamp() {
  23766. var c = this.s&this.DM;
  23767. while(this.t > 0 && this[this.t-1] == c) --this.t;
  23768. }
  23769. // (public) return string representation in given radix
  23770. function bnToString(b) {
  23771. if(this.s < 0) return "-"+this.negate().toString(b);
  23772. var k;
  23773. if(b == 16) k = 4;
  23774. else if(b == 8) k = 3;
  23775. else if(b == 2) k = 1;
  23776. else if(b == 32) k = 5;
  23777. else if(b == 4) k = 2;
  23778. else return this.toRadix(b);
  23779. var km = (1<<k)-1, d, m = false, r = "", i = this.t;
  23780. var p = this.DB-(i*this.DB)%k;
  23781. if(i-- > 0) {
  23782. if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }
  23783. while(i >= 0) {
  23784. if(p < k) {
  23785. d = (this[i]&((1<<p)-1))<<(k-p);
  23786. d |= this[--i]>>(p+=this.DB-k);
  23787. }
  23788. else {
  23789. d = (this[i]>>(p-=k))&km;
  23790. if(p <= 0) { p += this.DB; --i; }
  23791. }
  23792. if(d > 0) m = true;
  23793. if(m) r += int2char(d);
  23794. }
  23795. }
  23796. return m?r:"0";
  23797. }
  23798. // (public) -this
  23799. function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }
  23800. // (public) |this|
  23801. function bnAbs() { return (this.s<0)?this.negate():this; }
  23802. // (public) return + if this > a, - if this < a, 0 if equal
  23803. function bnCompareTo(a) {
  23804. var r = this.s-a.s;
  23805. if(r != 0) return r;
  23806. var i = this.t;
  23807. r = i-a.t;
  23808. if(r != 0) return (this.s<0)?-r:r;
  23809. while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;
  23810. return 0;
  23811. }
  23812. // returns bit length of the integer x
  23813. function nbits(x) {
  23814. var r = 1, t;
  23815. if((t=x>>>16) != 0) { x = t; r += 16; }
  23816. if((t=x>>8) != 0) { x = t; r += 8; }
  23817. if((t=x>>4) != 0) { x = t; r += 4; }
  23818. if((t=x>>2) != 0) { x = t; r += 2; }
  23819. if((t=x>>1) != 0) { x = t; r += 1; }
  23820. return r;
  23821. }
  23822. // (public) return the number of bits in "this"
  23823. function bnBitLength() {
  23824. if(this.t <= 0) return 0;
  23825. return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));
  23826. }
  23827. // (protected) r = this << n*DB
  23828. function bnpDLShiftTo(n,r) {
  23829. var i;
  23830. for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];
  23831. for(i = n-1; i >= 0; --i) r[i] = 0;
  23832. r.t = this.t+n;
  23833. r.s = this.s;
  23834. }
  23835. // (protected) r = this >> n*DB
  23836. function bnpDRShiftTo(n,r) {
  23837. for(var i = n; i < this.t; ++i) r[i-n] = this[i];
  23838. r.t = Math.max(this.t-n,0);
  23839. r.s = this.s;
  23840. }
  23841. // (protected) r = this << n
  23842. function bnpLShiftTo(n,r) {
  23843. var bs = n%this.DB;
  23844. var cbs = this.DB-bs;
  23845. var bm = (1<<cbs)-1;
  23846. var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;
  23847. for(i = this.t-1; i >= 0; --i) {
  23848. r[i+ds+1] = (this[i]>>cbs)|c;
  23849. c = (this[i]&bm)<<bs;
  23850. }
  23851. for(i = ds-1; i >= 0; --i) r[i] = 0;
  23852. r[ds] = c;
  23853. r.t = this.t+ds+1;
  23854. r.s = this.s;
  23855. r.clamp();
  23856. }
  23857. // (protected) r = this >> n
  23858. function bnpRShiftTo(n,r) {
  23859. r.s = this.s;
  23860. var ds = Math.floor(n/this.DB);
  23861. if(ds >= this.t) { r.t = 0; return; }
  23862. var bs = n%this.DB;
  23863. var cbs = this.DB-bs;
  23864. var bm = (1<<bs)-1;
  23865. r[0] = this[ds]>>bs;
  23866. for(var i = ds+1; i < this.t; ++i) {
  23867. r[i-ds-1] |= (this[i]&bm)<<cbs;
  23868. r[i-ds] = this[i]>>bs;
  23869. }
  23870. if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;
  23871. r.t = this.t-ds;
  23872. r.clamp();
  23873. }
  23874. // (protected) r = this - a
  23875. function bnpSubTo(a,r) {
  23876. var i = 0, c = 0, m = Math.min(a.t,this.t);
  23877. while(i < m) {
  23878. c += this[i]-a[i];
  23879. r[i++] = c&this.DM;
  23880. c >>= this.DB;
  23881. }
  23882. if(a.t < this.t) {
  23883. c -= a.s;
  23884. while(i < this.t) {
  23885. c += this[i];
  23886. r[i++] = c&this.DM;
  23887. c >>= this.DB;
  23888. }
  23889. c += this.s;
  23890. }
  23891. else {
  23892. c += this.s;
  23893. while(i < a.t) {
  23894. c -= a[i];
  23895. r[i++] = c&this.DM;
  23896. c >>= this.DB;
  23897. }
  23898. c -= a.s;
  23899. }
  23900. r.s = (c<0)?-1:0;
  23901. if(c < -1) r[i++] = this.DV+c;
  23902. else if(c > 0) r[i++] = c;
  23903. r.t = i;
  23904. r.clamp();
  23905. }
  23906. // (protected) r = this * a, r != this,a (HAC 14.12)
  23907. // "this" should be the larger one if appropriate.
  23908. function bnpMultiplyTo(a,r) {
  23909. var x = this.abs(), y = a.abs();
  23910. var i = x.t;
  23911. r.t = i+y.t;
  23912. while(--i >= 0) r[i] = 0;
  23913. for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);
  23914. r.s = 0;
  23915. r.clamp();
  23916. if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
  23917. }
  23918. // (protected) r = this^2, r != this (HAC 14.16)
  23919. function bnpSquareTo(r) {
  23920. var x = this.abs();
  23921. var i = r.t = 2*x.t;
  23922. while(--i >= 0) r[i] = 0;
  23923. for(i = 0; i < x.t-1; ++i) {
  23924. var c = x.am(i,x[i],r,2*i,0,1);
  23925. if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {
  23926. r[i+x.t] -= x.DV;
  23927. r[i+x.t+1] = 1;
  23928. }
  23929. }
  23930. if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);
  23931. r.s = 0;
  23932. r.clamp();
  23933. }
  23934. // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
  23935. // r != q, this != m. q or r may be null.
  23936. function bnpDivRemTo(m,q,r) {
  23937. var pm = m.abs();
  23938. if(pm.t <= 0) return;
  23939. var pt = this.abs();
  23940. if(pt.t < pm.t) {
  23941. if(q != null) q.fromInt(0);
  23942. if(r != null) this.copyTo(r);
  23943. return;
  23944. }
  23945. if(r == null) r = nbi();
  23946. var y = nbi(), ts = this.s, ms = m.s;
  23947. var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus
  23948. if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }
  23949. else { pm.copyTo(y); pt.copyTo(r); }
  23950. var ys = y.t;
  23951. var y0 = y[ys-1];
  23952. if(y0 == 0) return;
  23953. var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);
  23954. var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;
  23955. var i = r.t, j = i-ys, t = (q==null)?nbi():q;
  23956. y.dlShiftTo(j,t);
  23957. if(r.compareTo(t) >= 0) {
  23958. r[r.t++] = 1;
  23959. r.subTo(t,r);
  23960. }
  23961. BigInteger.ONE.dlShiftTo(ys,t);
  23962. t.subTo(y,y); // "negative" y so we can replace sub with am later
  23963. while(y.t < ys) y[y.t++] = 0;
  23964. while(--j >= 0) {
  23965. // Estimate quotient digit
  23966. var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);
  23967. if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out
  23968. y.dlShiftTo(j,t);
  23969. r.subTo(t,r);
  23970. while(r[i] < --qd) r.subTo(t,r);
  23971. }
  23972. }
  23973. if(q != null) {
  23974. r.drShiftTo(ys,q);
  23975. if(ts != ms) BigInteger.ZERO.subTo(q,q);
  23976. }
  23977. r.t = ys;
  23978. r.clamp();
  23979. if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder
  23980. if(ts < 0) BigInteger.ZERO.subTo(r,r);
  23981. }
  23982. // (public) this mod a
  23983. function bnMod(a) {
  23984. var r = nbi();
  23985. this.abs().divRemTo(a,null,r);
  23986. if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);
  23987. return r;
  23988. }
  23989. // Modular reduction using "classic" algorithm
  23990. function Classic(m) { this.m = m; }
  23991. function cConvert(x) {
  23992. if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);
  23993. else return x;
  23994. }
  23995. function cRevert(x) { return x; }
  23996. function cReduce(x) { x.divRemTo(this.m,null,x); }
  23997. function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
  23998. function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
  23999. Classic.prototype.convert = cConvert;
  24000. Classic.prototype.revert = cRevert;
  24001. Classic.prototype.reduce = cReduce;
  24002. Classic.prototype.mulTo = cMulTo;
  24003. Classic.prototype.sqrTo = cSqrTo;
  24004. // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
  24005. // justification:
  24006. // xy == 1 (mod m)
  24007. // xy = 1+km
  24008. // xy(2-xy) = (1+km)(1-km)
  24009. // x[y(2-xy)] = 1-k^2m^2
  24010. // x[y(2-xy)] == 1 (mod m^2)
  24011. // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
  24012. // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
  24013. // JS multiply "overflows" differently from C/C++, so care is needed here.
  24014. function bnpInvDigit() {
  24015. if(this.t < 1) return 0;
  24016. var x = this[0];
  24017. if((x&1) == 0) return 0;
  24018. var y = x&3; // y == 1/x mod 2^2
  24019. y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4
  24020. y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8
  24021. y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16
  24022. // last step - calculate inverse mod DV directly;
  24023. // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
  24024. y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits
  24025. // we really want the negative inverse, and -DV < y < DV
  24026. return (y>0)?this.DV-y:-y;
  24027. }
  24028. // Montgomery reduction
  24029. function Montgomery(m) {
  24030. this.m = m;
  24031. this.mp = m.invDigit();
  24032. this.mpl = this.mp&0x7fff;
  24033. this.mph = this.mp>>15;
  24034. this.um = (1<<(m.DB-15))-1;
  24035. this.mt2 = 2*m.t;
  24036. }
  24037. // xR mod m
  24038. function montConvert(x) {
  24039. var r = nbi();
  24040. x.abs().dlShiftTo(this.m.t,r);
  24041. r.divRemTo(this.m,null,r);
  24042. if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);
  24043. return r;
  24044. }
  24045. // x/R mod m
  24046. function montRevert(x) {
  24047. var r = nbi();
  24048. x.copyTo(r);
  24049. this.reduce(r);
  24050. return r;
  24051. }
  24052. // x = x/R mod m (HAC 14.32)
  24053. function montReduce(x) {
  24054. while(x.t <= this.mt2) // pad x so am has enough room later
  24055. x[x.t++] = 0;
  24056. for(var i = 0; i < this.m.t; ++i) {
  24057. // faster way of calculating u0 = x[i]*mp mod DV
  24058. var j = x[i]&0x7fff;
  24059. var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;
  24060. // use am to combine the multiply-shift-add into one call
  24061. j = i+this.m.t;
  24062. x[j] += this.m.am(0,u0,x,i,0,this.m.t);
  24063. // propagate carry
  24064. while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }
  24065. }
  24066. x.clamp();
  24067. x.drShiftTo(this.m.t,x);
  24068. if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
  24069. }
  24070. // r = "x^2/R mod m"; x != r
  24071. function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
  24072. // r = "xy/R mod m"; x,y != r
  24073. function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
  24074. Montgomery.prototype.convert = montConvert;
  24075. Montgomery.prototype.revert = montRevert;
  24076. Montgomery.prototype.reduce = montReduce;
  24077. Montgomery.prototype.mulTo = montMulTo;
  24078. Montgomery.prototype.sqrTo = montSqrTo;
  24079. // (protected) true iff this is even
  24080. function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }
  24081. // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
  24082. function bnpExp(e,z) {
  24083. if(e > 0xffffffff || e < 1) return BigInteger.ONE;
  24084. var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;
  24085. g.copyTo(r);
  24086. while(--i >= 0) {
  24087. z.sqrTo(r,r2);
  24088. if((e&(1<<i)) > 0) z.mulTo(r2,g,r);
  24089. else { var t = r; r = r2; r2 = t; }
  24090. }
  24091. return z.revert(r);
  24092. }
  24093. // (public) this^e % m, 0 <= e < 2^32
  24094. function bnModPowInt(e,m) {
  24095. var z;
  24096. if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);
  24097. return this.exp(e,z);
  24098. }
  24099. // protected
  24100. BigInteger.prototype.copyTo = bnpCopyTo;
  24101. BigInteger.prototype.fromInt = bnpFromInt;
  24102. BigInteger.prototype.fromString = bnpFromString;
  24103. BigInteger.prototype.clamp = bnpClamp;
  24104. BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
  24105. BigInteger.prototype.drShiftTo = bnpDRShiftTo;
  24106. BigInteger.prototype.lShiftTo = bnpLShiftTo;
  24107. BigInteger.prototype.rShiftTo = bnpRShiftTo;
  24108. BigInteger.prototype.subTo = bnpSubTo;
  24109. BigInteger.prototype.multiplyTo = bnpMultiplyTo;
  24110. BigInteger.prototype.squareTo = bnpSquareTo;
  24111. BigInteger.prototype.divRemTo = bnpDivRemTo;
  24112. BigInteger.prototype.invDigit = bnpInvDigit;
  24113. BigInteger.prototype.isEven = bnpIsEven;
  24114. BigInteger.prototype.exp = bnpExp;
  24115. // public
  24116. BigInteger.prototype.toString = bnToString;
  24117. BigInteger.prototype.negate = bnNegate;
  24118. BigInteger.prototype.abs = bnAbs;
  24119. BigInteger.prototype.compareTo = bnCompareTo;
  24120. BigInteger.prototype.bitLength = bnBitLength;
  24121. BigInteger.prototype.mod = bnMod;
  24122. BigInteger.prototype.modPowInt = bnModPowInt;
  24123. // "constants"
  24124. BigInteger.ZERO = nbv(0);
  24125. BigInteger.ONE = nbv(1);
  24126. // jsbn2 stuff
  24127. // (protected) convert from radix string
  24128. function bnpFromRadix(s,b) {
  24129. this.fromInt(0);
  24130. if(b == null) b = 10;
  24131. var cs = this.chunkSize(b);
  24132. var d = Math.pow(b,cs), mi = false, j = 0, w = 0;
  24133. for(var i = 0; i < s.length; ++i) {
  24134. var x = intAt(s,i);
  24135. if(x < 0) {
  24136. if(s.charAt(i) == "-" && this.signum() == 0) mi = true;
  24137. continue;
  24138. }
  24139. w = b*w+x;
  24140. if(++j >= cs) {
  24141. this.dMultiply(d);
  24142. this.dAddOffset(w,0);
  24143. j = 0;
  24144. w = 0;
  24145. }
  24146. }
  24147. if(j > 0) {
  24148. this.dMultiply(Math.pow(b,j));
  24149. this.dAddOffset(w,0);
  24150. }
  24151. if(mi) BigInteger.ZERO.subTo(this,this);
  24152. }
  24153. // (protected) return x s.t. r^x < DV
  24154. function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }
  24155. // (public) 0 if this == 0, 1 if this > 0
  24156. function bnSigNum() {
  24157. if(this.s < 0) return -1;
  24158. else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;
  24159. else return 1;
  24160. }
  24161. // (protected) this *= n, this >= 0, 1 < n < DV
  24162. function bnpDMultiply(n) {
  24163. this[this.t] = this.am(0,n-1,this,0,0,this.t);
  24164. ++this.t;
  24165. this.clamp();
  24166. }
  24167. // (protected) this += n << w words, this >= 0
  24168. function bnpDAddOffset(n,w) {
  24169. if(n == 0) return;
  24170. while(this.t <= w) this[this.t++] = 0;
  24171. this[w] += n;
  24172. while(this[w] >= this.DV) {
  24173. this[w] -= this.DV;
  24174. if(++w >= this.t) this[this.t++] = 0;
  24175. ++this[w];
  24176. }
  24177. }
  24178. // (protected) convert to radix string
  24179. function bnpToRadix(b) {
  24180. if(b == null) b = 10;
  24181. if(this.signum() == 0 || b < 2 || b > 36) return "0";
  24182. var cs = this.chunkSize(b);
  24183. var a = Math.pow(b,cs);
  24184. var d = nbv(a), y = nbi(), z = nbi(), r = "";
  24185. this.divRemTo(d,y,z);
  24186. while(y.signum() > 0) {
  24187. r = (a+z.intValue()).toString(b).substr(1) + r;
  24188. y.divRemTo(d,y,z);
  24189. }
  24190. return z.intValue().toString(b) + r;
  24191. }
  24192. // (public) return value as integer
  24193. function bnIntValue() {
  24194. if(this.s < 0) {
  24195. if(this.t == 1) return this[0]-this.DV;
  24196. else if(this.t == 0) return -1;
  24197. }
  24198. else if(this.t == 1) return this[0];
  24199. else if(this.t == 0) return 0;
  24200. // assumes 16 < DB < 32
  24201. return ((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0];
  24202. }
  24203. // (protected) r = this + a
  24204. function bnpAddTo(a,r) {
  24205. var i = 0, c = 0, m = Math.min(a.t,this.t);
  24206. while(i < m) {
  24207. c += this[i]+a[i];
  24208. r[i++] = c&this.DM;
  24209. c >>= this.DB;
  24210. }
  24211. if(a.t < this.t) {
  24212. c += a.s;
  24213. while(i < this.t) {
  24214. c += this[i];
  24215. r[i++] = c&this.DM;
  24216. c >>= this.DB;
  24217. }
  24218. c += this.s;
  24219. }
  24220. else {
  24221. c += this.s;
  24222. while(i < a.t) {
  24223. c += a[i];
  24224. r[i++] = c&this.DM;
  24225. c >>= this.DB;
  24226. }
  24227. c += a.s;
  24228. }
  24229. r.s = (c<0)?-1:0;
  24230. if(c > 0) r[i++] = c;
  24231. else if(c < -1) r[i++] = this.DV+c;
  24232. r.t = i;
  24233. r.clamp();
  24234. }
  24235. BigInteger.prototype.fromRadix = bnpFromRadix;
  24236. BigInteger.prototype.chunkSize = bnpChunkSize;
  24237. BigInteger.prototype.signum = bnSigNum;
  24238. BigInteger.prototype.dMultiply = bnpDMultiply;
  24239. BigInteger.prototype.dAddOffset = bnpDAddOffset;
  24240. BigInteger.prototype.toRadix = bnpToRadix;
  24241. BigInteger.prototype.intValue = bnIntValue;
  24242. BigInteger.prototype.addTo = bnpAddTo;
  24243. //======= end jsbn =======
  24244. // Emscripten wrapper
  24245. var Wrapper = {
  24246. abs: function(l, h) {
  24247. var x = new goog.math.Long(l, h);
  24248. var ret;
  24249. if (x.isNegative()) {
  24250. ret = x.negate();
  24251. } else {
  24252. ret = x;
  24253. }
  24254. HEAP32[tempDoublePtr>>2] = ret.low_;
  24255. HEAP32[tempDoublePtr+4>>2] = ret.high_;
  24256. },
  24257. ensureTemps: function() {
  24258. if (Wrapper.ensuredTemps) return;
  24259. Wrapper.ensuredTemps = true;
  24260. Wrapper.two32 = new BigInteger();
  24261. Wrapper.two32.fromString('4294967296', 10);
  24262. Wrapper.two64 = new BigInteger();
  24263. Wrapper.two64.fromString('18446744073709551616', 10);
  24264. Wrapper.temp1 = new BigInteger();
  24265. Wrapper.temp2 = new BigInteger();
  24266. },
  24267. lh2bignum: function(l, h) {
  24268. var a = new BigInteger();
  24269. a.fromString(h.toString(), 10);
  24270. var b = new BigInteger();
  24271. a.multiplyTo(Wrapper.two32, b);
  24272. var c = new BigInteger();
  24273. c.fromString(l.toString(), 10);
  24274. var d = new BigInteger();
  24275. c.addTo(b, d);
  24276. return d;
  24277. },
  24278. stringify: function(l, h, unsigned) {
  24279. var ret = new goog.math.Long(l, h).toString();
  24280. if (unsigned && ret[0] == '-') {
  24281. // unsign slowly using jsbn bignums
  24282. Wrapper.ensureTemps();
  24283. var bignum = new BigInteger();
  24284. bignum.fromString(ret, 10);
  24285. ret = new BigInteger();
  24286. Wrapper.two64.addTo(bignum, ret);
  24287. ret = ret.toString(10);
  24288. }
  24289. return ret;
  24290. },
  24291. fromString: function(str, base, min, max, unsigned) {
  24292. Wrapper.ensureTemps();
  24293. var bignum = new BigInteger();
  24294. bignum.fromString(str, base);
  24295. var bigmin = new BigInteger();
  24296. bigmin.fromString(min, 10);
  24297. var bigmax = new BigInteger();
  24298. bigmax.fromString(max, 10);
  24299. if (unsigned && bignum.compareTo(BigInteger.ZERO) < 0) {
  24300. var temp = new BigInteger();
  24301. bignum.addTo(Wrapper.two64, temp);
  24302. bignum = temp;
  24303. }
  24304. var error = false;
  24305. if (bignum.compareTo(bigmin) < 0) {
  24306. bignum = bigmin;
  24307. error = true;
  24308. } else if (bignum.compareTo(bigmax) > 0) {
  24309. bignum = bigmax;
  24310. error = true;
  24311. }
  24312. var ret = goog.math.Long.fromString(bignum.toString()); // min-max checks should have clamped this to a range goog.math.Long can handle well
  24313. HEAP32[tempDoublePtr>>2] = ret.low_;
  24314. HEAP32[tempDoublePtr+4>>2] = ret.high_;
  24315. if (error) throw 'range error';
  24316. }
  24317. };
  24318. return Wrapper;
  24319. })();
  24320. //======= end closure i64 code =======
  24321. // === Auto-generated postamble setup entry stuff ===
  24322. if (memoryInitializer) {
  24323. if (typeof Module['locateFile'] === 'function') {
  24324. memoryInitializer = Module['locateFile'](memoryInitializer);
  24325. } else if (Module['memoryInitializerPrefixURL']) {
  24326. memoryInitializer = Module['memoryInitializerPrefixURL'] + memoryInitializer;
  24327. }
  24328. if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
  24329. var data = Module['readBinary'](memoryInitializer);
  24330. HEAPU8.set(data, STATIC_BASE);
  24331. } else {
  24332. addRunDependency('memory initializer');
  24333. Browser.asyncLoad(memoryInitializer, function(data) {
  24334. HEAPU8.set(data, STATIC_BASE);
  24335. removeRunDependency('memory initializer');
  24336. }, function(data) {
  24337. throw 'could not load memory initializer ' + memoryInitializer;
  24338. });
  24339. }
  24340. }
  24341. function ExitStatus(status) {
  24342. this.name = "ExitStatus";
  24343. this.message = "Program terminated with exit(" + status + ")";
  24344. this.status = status;
  24345. };
  24346. ExitStatus.prototype = new Error();
  24347. ExitStatus.prototype.constructor = ExitStatus;
  24348. var initialStackTop;
  24349. var preloadStartTime = null;
  24350. var calledMain = false;
  24351. dependenciesFulfilled = function runCaller() {
  24352. // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)
  24353. if (!Module['calledRun'] && shouldRunNow) run();
  24354. if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled
  24355. }
  24356. Module['callMain'] = Module.callMain = function callMain(args) {
  24357. assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)');
  24358. assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called');
  24359. args = args || [];
  24360. ensureInitRuntime();
  24361. var argc = args.length+1;
  24362. function pad() {
  24363. for (var i = 0; i < 4-1; i++) {
  24364. argv.push(0);
  24365. }
  24366. }
  24367. var argv = [allocate(intArrayFromString(Module['thisProgram']), 'i8', ALLOC_NORMAL) ];
  24368. pad();
  24369. for (var i = 0; i < argc-1; i = i + 1) {
  24370. argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL));
  24371. pad();
  24372. }
  24373. argv.push(0);
  24374. argv = allocate(argv, 'i32', ALLOC_NORMAL);
  24375. initialStackTop = STACKTOP;
  24376. try {
  24377. var ret = Module['_main'](argc, argv, 0);
  24378. // if we're not running an evented main loop, it's time to exit
  24379. exit(ret);
  24380. }
  24381. catch(e) {
  24382. if (e instanceof ExitStatus) {
  24383. // exit() throws this once it's done to make sure execution
  24384. // has been stopped completely
  24385. return;
  24386. } else if (e == 'SimulateInfiniteLoop') {
  24387. // running an evented main loop, don't immediately exit
  24388. Module['noExitRuntime'] = true;
  24389. return;
  24390. } else {
  24391. if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]);
  24392. throw e;
  24393. }
  24394. } finally {
  24395. calledMain = true;
  24396. }
  24397. }
  24398. function run(args) {
  24399. args = args || Module['arguments'];
  24400. if (preloadStartTime === null) preloadStartTime = Date.now();
  24401. if (runDependencies > 0) {
  24402. return;
  24403. }
  24404. preRun();
  24405. if (runDependencies > 0) return; // a preRun added a dependency, run will be called later
  24406. if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame
  24407. function doRun() {
  24408. if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening
  24409. Module['calledRun'] = true;
  24410. if (ABORT) return;
  24411. ensureInitRuntime();
  24412. preMain();
  24413. if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) {
  24414. Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms');
  24415. }
  24416. if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized']();
  24417. if (Module['_main'] && shouldRunNow) Module['callMain'](args);
  24418. postRun();
  24419. }
  24420. if (Module['setStatus']) {
  24421. Module['setStatus']('Running...');
  24422. setTimeout(function() {
  24423. setTimeout(function() {
  24424. Module['setStatus']('');
  24425. }, 1);
  24426. doRun();
  24427. }, 1);
  24428. } else {
  24429. doRun();
  24430. }
  24431. }
  24432. Module['run'] = Module.run = run;
  24433. function exit(status) {
  24434. if (Module['noExitRuntime']) {
  24435. return;
  24436. }
  24437. ABORT = true;
  24438. EXITSTATUS = status;
  24439. STACKTOP = initialStackTop;
  24440. // exit the runtime
  24441. exitRuntime();
  24442. if (ENVIRONMENT_IS_NODE) {
  24443. // Work around a node.js bug where stdout buffer is not flushed at process exit:
  24444. // Instead of process.exit() directly, wait for stdout flush event.
  24445. // See https://github.com/joyent/node/issues/1669 and https://github.com/kripken/emscripten/issues/2582
  24446. // Workaround is based on https://github.com/RReverser/acorn/commit/50ab143cecc9ed71a2d66f78b4aec3bb2e9844f6
  24447. process['stdout']['once']('drain', function () {
  24448. process['exit'](status);
  24449. });
  24450. console.log(' '); // Make sure to print something to force the drain event to occur, in case the stdout buffer was empty.
  24451. // Work around another node bug where sometimes 'drain' is never fired - make another effort
  24452. // to emit the exit status, after a significant delay (if node hasn't fired drain by then, give up)
  24453. setTimeout(function() {
  24454. process['exit'](status);
  24455. }, 500);
  24456. } else
  24457. if (ENVIRONMENT_IS_SHELL && typeof quit === 'function') {
  24458. quit(status);
  24459. }
  24460. // if we reach here, we must throw an exception to halt the current execution
  24461. throw new ExitStatus(status);
  24462. }
  24463. Module['exit'] = Module.exit = exit;
  24464. function abort(text) {
  24465. if (text) {
  24466. Module.print(text);
  24467. Module.printErr(text);
  24468. }
  24469. ABORT = true;
  24470. EXITSTATUS = 1;
  24471. var extra = '\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.';
  24472. throw 'abort() at ' + stackTrace() + extra;
  24473. }
  24474. Module['abort'] = Module.abort = abort;
  24475. // {{PRE_RUN_ADDITIONS}}
  24476. if (Module['preInit']) {
  24477. if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];
  24478. while (Module['preInit'].length > 0) {
  24479. Module['preInit'].pop()();
  24480. }
  24481. }
  24482. // shouldRunNow refers to calling main(), not run().
  24483. var shouldRunNow = true;
  24484. if (Module['noInitialRun']) {
  24485. shouldRunNow = false;
  24486. }
  24487. run();
  24488. // {{POST_RUN_ADDITIONS}}
  24489. // {{MODULE_ADDITIONS}}
  24490. /* vim: ts=4:sw=4:expandtab */
  24491. var Internal = Internal || {};
  24492. (function() {
  24493. 'use strict';
  24494. // Insert some bytes into the emscripten memory and return a pointer
  24495. function _allocate(bytes) {
  24496. var address = Module._malloc(bytes.length);
  24497. Module.HEAPU8.set(bytes, address);
  24498. return address;
  24499. }
  24500. function _readBytes(address, length, array) {
  24501. array.set(Module.HEAPU8.subarray(address, address + length));
  24502. }
  24503. var basepoint = new Uint8Array(32);
  24504. basepoint[0] = 9;
  24505. Internal.curve25519 = {
  24506. keyPair: function(privKey) {
  24507. var priv = new Uint8Array(privKey);
  24508. priv[0] &= 248;
  24509. priv[31] &= 127;
  24510. priv[31] |= 64;
  24511. // Where to store the result
  24512. var publicKey_ptr = Module._malloc(32);
  24513. // Get a pointer to the private key
  24514. var privateKey_ptr = _allocate(priv);
  24515. // The basepoint for generating public keys
  24516. var basepoint_ptr = _allocate(basepoint);
  24517. // The return value is just 0, the operation is done in place
  24518. var err = Module._curve25519_donna(publicKey_ptr,
  24519. privateKey_ptr,
  24520. basepoint_ptr);
  24521. var res = new Uint8Array(32);
  24522. _readBytes(publicKey_ptr, 32, res);
  24523. Module._free(publicKey_ptr);
  24524. Module._free(privateKey_ptr);
  24525. Module._free(basepoint_ptr);
  24526. return { pubKey: res.buffer, privKey: priv.buffer };
  24527. },
  24528. sharedSecret: function(pubKey, privKey) {
  24529. // Where to store the result
  24530. var sharedKey_ptr = Module._malloc(32);
  24531. // Get a pointer to our private key
  24532. var privateKey_ptr = _allocate(new Uint8Array(privKey));
  24533. // Get a pointer to their public key, the basepoint when you're
  24534. // generating a shared secret
  24535. var basepoint_ptr = _allocate(new Uint8Array(pubKey));
  24536. // Return value is 0 here too of course
  24537. var err = Module._curve25519_donna(sharedKey_ptr,
  24538. privateKey_ptr,
  24539. basepoint_ptr);
  24540. var res = new Uint8Array(32);
  24541. _readBytes(sharedKey_ptr, 32, res);
  24542. Module._free(sharedKey_ptr);
  24543. Module._free(privateKey_ptr);
  24544. Module._free(basepoint_ptr);
  24545. return res.buffer;
  24546. },
  24547. sign: function(privKey, message) {
  24548. // Where to store the result
  24549. var signature_ptr = Module._malloc(64);
  24550. // Get a pointer to our private key
  24551. var privateKey_ptr = _allocate(new Uint8Array(privKey));
  24552. // Get a pointer to the message
  24553. var message_ptr = _allocate(new Uint8Array(message));
  24554. var err = Module._curve25519_sign(signature_ptr,
  24555. privateKey_ptr,
  24556. message_ptr,
  24557. message.byteLength);
  24558. var res = new Uint8Array(64);
  24559. _readBytes(signature_ptr, 64, res);
  24560. Module._free(signature_ptr);
  24561. Module._free(privateKey_ptr);
  24562. Module._free(message_ptr);
  24563. return res.buffer;
  24564. },
  24565. verify: function(pubKey, message, sig) {
  24566. // Get a pointer to their public key
  24567. var publicKey_ptr = _allocate(new Uint8Array(pubKey));
  24568. // Get a pointer to the signature
  24569. var signature_ptr = _allocate(new Uint8Array(sig));
  24570. // Get a pointer to the message
  24571. var message_ptr = _allocate(new Uint8Array(message));
  24572. var res = Module._curve25519_verify(signature_ptr,
  24573. publicKey_ptr,
  24574. message_ptr,
  24575. message.byteLength);
  24576. Module._free(publicKey_ptr);
  24577. Module._free(signature_ptr);
  24578. Module._free(message_ptr);
  24579. return res !== 0;
  24580. }
  24581. };
  24582. Internal.curve25519_async = {
  24583. keyPair: function(privKey) {
  24584. return new Promise(function(resolve) {
  24585. resolve(Internal.curve25519.keyPair(privKey));
  24586. });
  24587. },
  24588. sharedSecret: function(pubKey, privKey) {
  24589. return new Promise(function(resolve) {
  24590. resolve(Internal.curve25519.sharedSecret(pubKey, privKey));
  24591. });
  24592. },
  24593. sign: function(privKey, message) {
  24594. return new Promise(function(resolve) {
  24595. resolve(Internal.curve25519.sign(privKey, message));
  24596. });
  24597. },
  24598. verify: function(pubKey, message, sig) {
  24599. return new Promise(function(resolve, reject) {
  24600. if (Internal.curve25519.verify(pubKey, message, sig)) {
  24601. reject(new Error("Invalid signature"));
  24602. } else {
  24603. resolve();
  24604. }
  24605. });
  24606. },
  24607. };
  24608. })();
  24609. var Internal = Internal || {};
  24610. // I am the worker
  24611. this.onmessage = function(e) {
  24612. Internal.curve25519_async[e.data.methodName].apply(null, e.data.args).then(function(result) {
  24613. postMessage({ id: e.data.id, result: result });
  24614. }).catch(function(error) {
  24615. postMessage({ id: e.data.id, error: error.message });
  24616. });
  24617. };
  24618. })();