audio_raw_stream.js 912 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081190821908319084190851908619087190881908919090190911909219093190941909519096190971909819099191001910119102191031910419105191061910719108191091911019111191121911319114191151911619117191181911919120191211912219123191241912519126191271912819129191301913119132191331913419135191361913719138191391914019141191421914319144191451914619147191481914919150191511915219153191541915519156191571915819159191601916119162191631916419165191661916719168191691917019171191721917319174191751917619177191781917919180191811918219183191841918519186191871918819189191901919119192191931919419195191961919719198191991920019201192021920319204192051920619207192081920919210192111921219213192141921519216192171921819219192201922119222192231922419225192261922719228192291923019231192321923319234192351923619237192381923919240192411924219243192441924519246192471924819249192501925119252192531925419255192561925719258192591926019261192621926319264192651926619267192681926919270192711927219273192741927519276192771927819279192801928119282192831928419285192861928719288192891929019291192921929319294192951929619297192981929919300193011930219303193041930519306193071930819309193101931119312193131931419315193161931719318193191932019321193221932319324193251932619327193281932919330193311933219333193341933519336193371933819339193401934119342193431934419345193461934719348193491935019351193521935319354193551935619357193581935919360193611936219363193641936519366193671936819369193701937119372193731937419375193761937719378193791938019381193821938319384193851938619387193881938919390193911939219393193941939519396193971939819399194001940119402194031940419405194061940719408194091941019411194121941319414194151941619417194181941919420194211942219423194241942519426194271942819429194301943119432194331943419435194361943719438194391944019441194421944319444194451944619447194481944919450194511945219453194541945519456194571945819459194601946119462194631946419465194661946719468194691947019471194721947319474194751947619477194781947919480194811948219483194841948519486194871948819489194901949119492194931949419495194961949719498194991950019501195021950319504195051950619507195081950919510195111951219513195141951519516195171951819519195201952119522195231952419525195261952719528195291953019531195321953319534195351953619537195381953919540195411954219543195441954519546195471954819549195501955119552195531955419555195561955719558195591956019561195621956319564195651956619567195681956919570195711957219573195741957519576195771957819579195801958119582195831958419585195861958719588195891959019591195921959319594195951959619597195981959919600196011960219603196041960519606196071960819609196101961119612196131961419615196161961719618196191962019621196221962319624196251962619627196281962919630196311963219633196341963519636196371963819639196401964119642196431964419645196461964719648196491965019651196521965319654196551965619657196581965919660196611966219663196641966519666196671966819669196701967119672196731967419675196761967719678196791968019681196821968319684196851968619687196881968919690196911969219693196941969519696196971969819699197001970119702197031970419705197061970719708197091971019711197121971319714197151971619717197181971919720197211972219723197241972519726197271972819729197301973119732197331973419735197361973719738197391974019741197421974319744197451974619747197481974919750197511975219753197541975519756197571975819759197601976119762197631976419765197661976719768197691977019771197721977319774197751977619777197781977919780197811978219783197841978519786197871978819789197901979119792197931979419795197961979719798197991980019801198021980319804198051980619807198081980919810198111981219813198141981519816198171981819819198201982119822198231982419825198261982719828198291983019831198321983319834198351983619837198381983919840198411984219843198441984519846198471984819849198501985119852198531985419855198561985719858198591986019861198621986319864198651986619867198681986919870198711987219873198741987519876198771987819879198801988119882198831988419885198861988719888198891989019891198921989319894198951989619897198981989919900199011990219903199041990519906199071990819909199101991119912199131991419915199161991719918199191992019921199221992319924199251992619927199281992919930199311993219933199341993519936199371993819939199401994119942199431994419945199461994719948199491995019951199521995319954199551995619957199581995919960199611996219963199641996519966199671996819969199701997119972199731997419975199761997719978199791998019981199821998319984199851998619987199881998919990199911999219993199941999519996199971999819999200002000120002200032000420005200062000720008200092001020011200122001320014200152001620017200182001920020200212002220023200242002520026200272002820029200302003120032200332003420035200362003720038200392004020041200422004320044200452004620047200482004920050200512005220053200542005520056200572005820059200602006120062200632006420065200662006720068200692007020071200722007320074200752007620077200782007920080200812008220083200842008520086200872008820089200902009120092200932009420095200962009720098200992010020101201022010320104201052010620107201082010920110201112011220113201142011520116201172011820119201202012120122201232012420125201262012720128201292013020131201322013320134201352013620137201382013920140201412014220143201442014520146201472014820149201502015120152201532015420155201562015720158201592016020161201622016320164201652016620167201682016920170201712017220173201742017520176201772017820179201802018120182201832018420185201862018720188201892019020191201922019320194201952019620197201982019920200202012020220203202042020520206202072020820209202102021120212202132021420215202162021720218202192022020221202222022320224202252022620227202282022920230202312023220233202342023520236202372023820239202402024120242202432024420245202462024720248202492025020251202522025320254202552025620257202582025920260202612026220263202642026520266202672026820269202702027120272202732027420275202762027720278202792028020281202822028320284202852028620287202882028920290202912029220293202942029520296202972029820299203002030120302203032030420305203062030720308203092031020311203122031320314203152031620317203182031920320203212032220323203242032520326203272032820329203302033120332203332033420335203362033720338203392034020341203422034320344203452034620347203482034920350203512035220353203542035520356203572035820359203602036120362203632036420365203662036720368203692037020371203722037320374203752037620377203782037920380203812038220383203842038520386203872038820389203902039120392203932039420395203962039720398203992040020401204022040320404204052040620407204082040920410204112041220413204142041520416204172041820419204202042120422204232042420425204262042720428204292043020431204322043320434204352043620437204382043920440204412044220443204442044520446204472044820449204502045120452204532045420455204562045720458204592046020461204622046320464204652046620467204682046920470204712047220473204742047520476204772047820479204802048120482204832048420485204862048720488204892049020491204922049320494204952049620497204982049920500205012050220503205042050520506205072050820509205102051120512205132051420515205162051720518205192052020521205222052320524205252052620527205282052920530205312053220533205342053520536205372053820539205402054120542205432054420545205462054720548205492055020551205522055320554205552055620557205582055920560205612056220563205642056520566205672056820569205702057120572205732057420575205762057720578205792058020581205822058320584205852058620587205882058920590205912059220593205942059520596205972059820599206002060120602206032060420605206062060720608206092061020611206122061320614206152061620617206182061920620206212062220623206242062520626206272062820629206302063120632206332063420635206362063720638206392064020641206422064320644206452064620647206482064920650206512065220653206542065520656206572065820659206602066120662206632066420665206662066720668206692067020671206722067320674206752067620677206782067920680206812068220683206842068520686206872068820689206902069120692206932069420695206962069720698206992070020701207022070320704207052070620707207082070920710207112071220713207142071520716207172071820719207202072120722207232072420725207262072720728207292073020731207322073320734207352073620737207382073920740207412074220743207442074520746207472074820749207502075120752207532075420755207562075720758207592076020761207622076320764207652076620767207682076920770207712077220773207742077520776207772077820779207802078120782207832078420785207862078720788207892079020791207922079320794207952079620797207982079920800208012080220803208042080520806208072080820809208102081120812208132081420815208162081720818208192082020821208222082320824208252082620827208282082920830208312083220833208342083520836208372083820839208402084120842208432084420845208462084720848208492085020851208522085320854208552085620857208582085920860208612086220863208642086520866208672086820869208702087120872208732087420875208762087720878208792088020881208822088320884208852088620887208882088920890208912089220893208942089520896208972089820899209002090120902209032090420905209062090720908209092091020911209122091320914209152091620917209182091920920209212092220923209242092520926209272092820929209302093120932209332093420935209362093720938209392094020941209422094320944209452094620947209482094920950209512095220953209542095520956209572095820959209602096120962209632096420965209662096720968209692097020971209722097320974209752097620977209782097920980209812098220983209842098520986209872098820989209902099120992209932099420995209962099720998209992100021001210022100321004210052100621007210082100921010210112101221013210142101521016210172101821019210202102121022210232102421025210262102721028210292103021031210322103321034210352103621037210382103921040210412104221043210442104521046210472104821049210502105121052210532105421055210562105721058210592106021061210622106321064210652106621067210682106921070210712107221073210742107521076210772107821079210802108121082210832108421085210862108721088210892109021091210922109321094210952109621097210982109921100211012110221103211042110521106211072110821109211102111121112211132111421115211162111721118211192112021121211222112321124211252112621127211282112921130211312113221133211342113521136211372113821139211402114121142211432114421145211462114721148211492115021151211522115321154211552115621157211582115921160211612116221163211642116521166211672116821169211702117121172211732117421175211762117721178211792118021181211822118321184211852118621187211882118921190211912119221193211942119521196211972119821199212002120121202212032120421205212062120721208212092121021211212122121321214212152121621217212182121921220212212122221223212242122521226212272122821229212302123121232212332123421235212362123721238212392124021241212422124321244212452124621247212482124921250212512125221253212542125521256212572125821259212602126121262212632126421265212662126721268212692127021271212722127321274212752127621277212782127921280212812128221283212842128521286212872128821289212902129121292212932129421295212962129721298212992130021301213022130321304213052130621307213082130921310213112131221313213142131521316213172131821319213202132121322213232132421325213262132721328213292133021331213322133321334213352133621337213382133921340213412134221343213442134521346213472134821349213502135121352213532135421355213562135721358213592136021361213622136321364213652136621367213682136921370213712137221373213742137521376213772137821379213802138121382213832138421385213862138721388213892139021391213922139321394213952139621397213982139921400214012140221403214042140521406214072140821409214102141121412214132141421415214162141721418214192142021421214222142321424214252142621427214282142921430214312143221433214342143521436214372143821439214402144121442214432144421445214462144721448214492145021451214522145321454214552145621457214582145921460214612146221463214642146521466214672146821469214702147121472214732147421475214762147721478214792148021481214822148321484214852148621487214882148921490214912149221493214942149521496214972149821499215002150121502215032150421505215062150721508215092151021511215122151321514215152151621517215182151921520215212152221523215242152521526215272152821529215302153121532215332153421535215362153721538215392154021541215422154321544215452154621547215482154921550215512155221553215542155521556215572155821559215602156121562215632156421565215662156721568215692157021571215722157321574215752157621577215782157921580215812158221583215842158521586215872158821589215902159121592215932159421595215962159721598215992160021601216022160321604216052160621607216082160921610216112161221613216142161521616216172161821619216202162121622216232162421625216262162721628216292163021631216322163321634216352163621637216382163921640216412164221643216442164521646216472164821649216502165121652216532165421655216562165721658216592166021661216622166321664216652166621667216682166921670216712167221673216742167521676216772167821679216802168121682216832168421685216862168721688216892169021691216922169321694216952169621697216982169921700217012170221703217042170521706217072170821709217102171121712217132171421715217162171721718217192172021721217222172321724217252172621727217282172921730217312173221733217342173521736217372173821739217402174121742217432174421745217462174721748217492175021751217522175321754217552175621757217582175921760217612176221763217642176521766217672176821769217702177121772217732177421775217762177721778217792178021781217822178321784217852178621787217882178921790217912179221793217942179521796217972179821799218002180121802218032180421805218062180721808218092181021811218122181321814218152181621817218182181921820218212182221823218242182521826218272182821829218302183121832218332183421835218362183721838218392184021841218422184321844218452184621847218482184921850218512185221853218542185521856218572185821859218602186121862218632186421865218662186721868218692187021871218722187321874218752187621877218782187921880218812188221883218842188521886218872188821889218902189121892218932189421895218962189721898218992190021901219022190321904219052190621907219082190921910219112191221913219142191521916219172191821919219202192121922219232192421925219262192721928219292193021931219322193321934219352193621937219382193921940219412194221943219442194521946219472194821949219502195121952219532195421955219562195721958219592196021961219622196321964219652196621967219682196921970219712197221973219742197521976219772197821979219802198121982219832198421985219862198721988219892199021991219922199321994219952199621997219982199922000220012200222003220042200522006220072200822009220102201122012220132201422015220162201722018220192202022021220222202322024220252202622027220282202922030220312203222033220342203522036220372203822039220402204122042220432204422045220462204722048220492205022051220522205322054220552205622057220582205922060220612206222063220642206522066220672206822069220702207122072220732207422075220762207722078220792208022081220822208322084220852208622087220882208922090220912209222093220942209522096220972209822099221002210122102221032210422105221062210722108221092211022111221122211322114221152211622117221182211922120221212212222123221242212522126221272212822129221302213122132221332213422135221362213722138221392214022141221422214322144221452214622147221482214922150221512215222153221542215522156221572215822159221602216122162221632216422165221662216722168221692217022171221722217322174221752217622177221782217922180221812218222183221842218522186221872218822189221902219122192221932219422195221962219722198221992220022201222022220322204222052220622207222082220922210222112221222213222142221522216222172221822219222202222122222222232222422225222262222722228222292223022231222322223322234222352223622237222382223922240222412224222243222442224522246222472224822249222502225122252222532225422255222562225722258222592226022261222622226322264222652226622267222682226922270222712227222273222742227522276222772227822279222802228122282222832228422285222862228722288222892229022291222922229322294222952229622297222982229922300223012230222303223042230522306223072230822309223102231122312223132231422315223162231722318223192232022321223222232322324223252232622327223282232922330223312233222333223342233522336223372233822339223402234122342223432234422345223462234722348223492235022351223522235322354223552235622357223582235922360223612236222363223642236522366223672236822369223702237122372223732237422375223762237722378223792238022381223822238322384223852238622387223882238922390223912239222393223942239522396223972239822399224002240122402224032240422405224062240722408224092241022411224122241322414224152241622417224182241922420224212242222423224242242522426224272242822429224302243122432224332243422435224362243722438224392244022441224422244322444224452244622447224482244922450224512245222453224542245522456224572245822459224602246122462224632246422465224662246722468224692247022471224722247322474224752247622477224782247922480224812248222483224842248522486224872248822489224902249122492224932249422495224962249722498224992250022501225022250322504225052250622507225082250922510225112251222513225142251522516225172251822519225202252122522225232252422525225262252722528225292253022531225322253322534225352253622537225382253922540225412254222543225442254522546225472254822549225502255122552225532255422555225562255722558225592256022561225622256322564225652256622567225682256922570225712257222573225742257522576225772257822579225802258122582225832258422585225862258722588225892259022591225922259322594225952259622597225982259922600226012260222603226042260522606226072260822609226102261122612226132261422615226162261722618226192262022621226222262322624226252262622627226282262922630226312263222633226342263522636226372263822639226402264122642226432264422645226462264722648226492265022651226522265322654226552265622657226582265922660226612266222663226642266522666226672266822669226702267122672226732267422675226762267722678226792268022681226822268322684226852268622687226882268922690226912269222693226942269522696226972269822699227002270122702227032270422705227062270722708227092271022711227122271322714227152271622717227182271922720227212272222723227242272522726227272272822729227302273122732227332273422735227362273722738227392274022741227422274322744227452274622747227482274922750227512275222753227542275522756227572275822759227602276122762227632276422765227662276722768227692277022771227722277322774227752277622777227782277922780227812278222783227842278522786227872278822789227902279122792227932279422795227962279722798227992280022801228022280322804228052280622807228082280922810228112281222813228142281522816228172281822819228202282122822228232282422825228262282722828228292283022831228322283322834228352283622837228382283922840228412284222843228442284522846228472284822849228502285122852228532285422855228562285722858228592286022861228622286322864228652286622867228682286922870228712287222873228742287522876228772287822879228802288122882228832288422885228862288722888228892289022891228922289322894228952289622897228982289922900229012290222903229042290522906229072290822909229102291122912229132291422915229162291722918229192292022921229222292322924229252292622927229282292922930229312293222933229342293522936229372293822939229402294122942229432294422945229462294722948229492295022951229522295322954229552295622957229582295922960229612296222963229642296522966229672296822969229702297122972229732297422975229762297722978229792298022981229822298322984229852298622987229882298922990229912299222993229942299522996229972299822999230002300123002230032300423005230062300723008230092301023011230122301323014230152301623017230182301923020230212302223023230242302523026230272302823029230302303123032230332303423035230362303723038230392304023041230422304323044230452304623047230482304923050230512305223053230542305523056230572305823059230602306123062230632306423065230662306723068230692307023071230722307323074230752307623077230782307923080230812308223083230842308523086230872308823089230902309123092230932309423095230962309723098230992310023101231022310323104231052310623107231082310923110231112311223113231142311523116231172311823119231202312123122231232312423125231262312723128231292313023131231322313323134231352313623137231382313923140231412314223143231442314523146231472314823149231502315123152231532315423155231562315723158231592316023161231622316323164231652316623167231682316923170231712317223173231742317523176231772317823179231802318123182231832318423185231862318723188231892319023191231922319323194231952319623197231982319923200232012320223203232042320523206232072320823209232102321123212232132321423215232162321723218232192322023221232222322323224232252322623227232282322923230232312323223233232342323523236232372323823239232402324123242232432324423245232462324723248232492325023251232522325323254232552325623257232582325923260232612326223263232642326523266232672326823269232702327123272232732327423275232762327723278232792328023281232822328323284232852328623287232882328923290232912329223293232942329523296232972329823299233002330123302233032330423305233062330723308233092331023311233122331323314233152331623317233182331923320233212332223323233242332523326233272332823329233302333123332233332333423335233362333723338233392334023341233422334323344233452334623347233482334923350233512335223353233542335523356233572335823359233602336123362233632336423365233662336723368233692337023371233722337323374233752337623377233782337923380233812338223383233842338523386233872338823389233902339123392233932339423395233962339723398233992340023401234022340323404234052340623407234082340923410234112341223413234142341523416234172341823419234202342123422234232342423425234262342723428234292343023431234322343323434234352343623437234382343923440234412344223443234442344523446234472344823449234502345123452234532345423455234562345723458234592346023461234622346323464234652346623467234682346923470234712347223473234742347523476234772347823479234802348123482234832348423485234862348723488234892349023491234922349323494234952349623497234982349923500235012350223503235042350523506235072350823509235102351123512235132351423515235162351723518235192352023521235222352323524235252352623527235282352923530235312353223533235342353523536235372353823539235402354123542235432354423545235462354723548235492355023551235522355323554235552355623557235582355923560235612356223563235642356523566235672356823569235702357123572235732357423575235762357723578235792358023581235822358323584235852358623587235882358923590235912359223593235942359523596235972359823599236002360123602236032360423605236062360723608236092361023611236122361323614236152361623617236182361923620236212362223623236242362523626236272362823629236302363123632236332363423635236362363723638236392364023641236422364323644236452364623647236482364923650236512365223653236542365523656236572365823659236602366123662236632366423665236662366723668236692367023671236722367323674236752367623677236782367923680236812368223683236842368523686236872368823689236902369123692236932369423695236962369723698236992370023701237022370323704237052370623707237082370923710237112371223713237142371523716237172371823719237202372123722237232372423725237262372723728237292373023731237322373323734237352373623737237382373923740237412374223743237442374523746237472374823749237502375123752237532375423755237562375723758237592376023761237622376323764237652376623767237682376923770237712377223773237742377523776237772377823779237802378123782237832378423785237862378723788237892379023791237922379323794237952379623797237982379923800238012380223803238042380523806238072380823809238102381123812238132381423815238162381723818238192382023821238222382323824238252382623827238282382923830238312383223833238342383523836238372383823839238402384123842238432384423845238462384723848238492385023851238522385323854238552385623857238582385923860238612386223863238642386523866238672386823869238702387123872238732387423875238762387723878238792388023881238822388323884238852388623887238882388923890238912389223893238942389523896238972389823899239002390123902239032390423905239062390723908239092391023911239122391323914239152391623917239182391923920239212392223923239242392523926239272392823929239302393123932239332393423935239362393723938239392394023941239422394323944239452394623947239482394923950239512395223953239542395523956239572395823959239602396123962239632396423965239662396723968239692397023971239722397323974239752397623977239782397923980239812398223983239842398523986239872398823989239902399123992239932399423995239962399723998239992400024001240022400324004240052400624007240082400924010240112401224013240142401524016240172401824019240202402124022240232402424025240262402724028240292403024031240322403324034240352403624037240382403924040240412404224043240442404524046240472404824049240502405124052240532405424055240562405724058240592406024061240622406324064240652406624067240682406924070240712407224073240742407524076240772407824079240802408124082240832408424085240862408724088240892409024091240922409324094240952409624097240982409924100241012410224103241042410524106241072410824109241102411124112241132411424115241162411724118241192412024121241222412324124241252412624127241282412924130241312413224133241342413524136241372413824139241402414124142241432414424145241462414724148241492415024151241522415324154241552415624157241582415924160241612416224163241642416524166241672416824169241702417124172241732417424175241762417724178241792418024181241822418324184241852418624187241882418924190241912419224193241942419524196241972419824199242002420124202242032420424205242062420724208242092421024211242122421324214242152421624217242182421924220242212422224223242242422524226242272422824229242302423124232242332423424235242362423724238242392424024241242422424324244242452424624247242482424924250242512425224253242542425524256242572425824259242602426124262242632426424265242662426724268242692427024271242722427324274242752427624277242782427924280242812428224283242842428524286242872428824289242902429124292242932429424295242962429724298242992430024301243022430324304243052430624307243082430924310243112431224313243142431524316243172431824319243202432124322243232432424325243262432724328243292433024331243322433324334243352433624337243382433924340243412434224343243442434524346243472434824349243502435124352243532435424355243562435724358243592436024361243622436324364243652436624367243682436924370243712437224373243742437524376243772437824379243802438124382243832438424385243862438724388243892439024391243922439324394243952439624397243982439924400244012440224403244042440524406244072440824409244102441124412244132441424415244162441724418244192442024421244222442324424244252442624427244282442924430244312443224433244342443524436244372443824439244402444124442244432444424445244462444724448244492445024451244522445324454244552445624457244582445924460244612446224463244642446524466244672446824469244702447124472244732447424475244762447724478244792448024481244822448324484244852448624487244882448924490244912449224493244942449524496244972449824499245002450124502245032450424505245062450724508245092451024511245122451324514245152451624517245182451924520245212452224523245242452524526245272452824529245302453124532245332453424535245362453724538245392454024541245422454324544245452454624547245482454924550245512455224553245542455524556245572455824559245602456124562245632456424565245662456724568245692457024571245722457324574245752457624577245782457924580245812458224583245842458524586245872458824589245902459124592245932459424595245962459724598245992460024601246022460324604246052460624607246082460924610246112461224613246142461524616246172461824619246202462124622246232462424625246262462724628246292463024631246322463324634246352463624637246382463924640246412464224643246442464524646246472464824649246502465124652246532465424655246562465724658246592466024661246622466324664246652466624667246682466924670246712467224673246742467524676246772467824679246802468124682246832468424685246862468724688246892469024691246922469324694246952469624697246982469924700247012470224703247042470524706247072470824709247102471124712247132471424715247162471724718247192472024721247222472324724247252472624727247282472924730247312473224733247342473524736247372473824739247402474124742247432474424745247462474724748247492475024751247522475324754247552475624757247582475924760247612476224763247642476524766247672476824769247702477124772247732477424775247762477724778247792478024781247822478324784247852478624787247882478924790247912479224793247942479524796247972479824799248002480124802248032480424805248062480724808248092481024811248122481324814248152481624817248182481924820248212482224823248242482524826248272482824829248302483124832248332483424835248362483724838248392484024841248422484324844248452484624847248482484924850248512485224853248542485524856248572485824859248602486124862248632486424865248662486724868248692487024871248722487324874248752487624877248782487924880248812488224883248842488524886248872488824889248902489124892248932489424895248962489724898248992490024901249022490324904249052490624907249082490924910249112491224913249142491524916249172491824919249202492124922249232492424925249262492724928249292493024931249322493324934249352493624937249382493924940249412494224943249442494524946249472494824949249502495124952249532495424955249562495724958249592496024961249622496324964249652496624967249682496924970249712497224973249742497524976249772497824979249802498124982249832498424985249862498724988249892499024991249922499324994249952499624997249982499925000250012500225003250042500525006250072500825009250102501125012250132501425015250162501725018250192502025021250222502325024250252502625027250282502925030250312503225033250342503525036250372503825039250402504125042250432504425045250462504725048250492505025051250522505325054250552505625057250582505925060250612506225063250642506525066250672506825069250702507125072250732507425075250762507725078250792508025081250822508325084250852508625087250882508925090250912509225093250942509525096250972509825099251002510125102251032510425105251062510725108251092511025111251122511325114251152511625117251182511925120251212512225123251242512525126251272512825129251302513125132251332513425135251362513725138251392514025141251422514325144251452514625147251482514925150251512515225153251542515525156251572515825159251602516125162251632516425165251662516725168251692517025171251722517325174251752517625177251782517925180251812518225183251842518525186251872518825189251902519125192251932519425195251962519725198251992520025201252022520325204252052520625207252082520925210252112521225213252142521525216252172521825219252202522125222252232522425225252262522725228252292523025231252322523325234252352523625237252382523925240252412524225243252442524525246252472524825249252502525125252252532525425255252562525725258252592526025261252622526325264252652526625267252682526925270252712527225273252742527525276252772527825279252802528125282252832528425285252862528725288252892529025291252922529325294252952529625297252982529925300253012530225303253042530525306253072530825309253102531125312253132531425315253162531725318253192532025321253222532325324253252532625327253282532925330253312533225333253342533525336253372533825339253402534125342253432534425345253462534725348253492535025351253522535325354253552535625357253582535925360253612536225363253642536525366253672536825369253702537125372253732537425375253762537725378253792538025381253822538325384253852538625387253882538925390253912539225393253942539525396253972539825399254002540125402254032540425405254062540725408254092541025411254122541325414
  1. // The Module object: Our interface to the outside world. We import
  2. // and export values on it, and do the work to get that through
  3. // closure compiler if necessary. There are various ways Module can be used:
  4. // 1. Not defined. We create it here
  5. // 2. A function parameter, function(Module) { ..generated code.. }
  6. // 3. pre-run appended it, var Module = {}; ..generated code..
  7. // 4. External script tag defines var Module.
  8. // We need to do an eval in order to handle the closure compiler
  9. // case, where this code here is minified but Module was defined
  10. // elsewhere (e.g. case 4 above). We also need to check if Module
  11. // already exists (e.g. case 3 above).
  12. // Note that if you want to run closure, and also to use Module
  13. // after the generated code, you will need to define var Module = {};
  14. // before the code. Then that object will be used in the code, and you
  15. // can continue to use Module afterwards as well.
  16. var Module;
  17. if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {};
  18. // Sometimes an existing Module object exists with properties
  19. // meant to overwrite the default module functionality. Here
  20. // we collect those properties and reapply _after_ we configure
  21. // the current environment's defaults to avoid having to be so
  22. // defensive during initialization.
  23. var moduleOverrides = {};
  24. for (var key in Module) {
  25. if (Module.hasOwnProperty(key)) {
  26. moduleOverrides[key] = Module[key];
  27. }
  28. }
  29. // The environment setup code below is customized to use Module.
  30. // *** Environment setup code ***
  31. var ENVIRONMENT_IS_WEB = false;
  32. var ENVIRONMENT_IS_WORKER = false;
  33. var ENVIRONMENT_IS_NODE = false;
  34. var ENVIRONMENT_IS_SHELL = false;
  35. // Three configurations we can be running in:
  36. // 1) We could be the application main() thread running in the main JS UI thread. (ENVIRONMENT_IS_WORKER == false and ENVIRONMENT_IS_PTHREAD == false)
  37. // 2) We could be the application main() thread proxied to worker. (with Emscripten -s PROXY_TO_WORKER=1) (ENVIRONMENT_IS_WORKER == true, ENVIRONMENT_IS_PTHREAD == false)
  38. // 3) We could be an application pthread running in a worker. (ENVIRONMENT_IS_WORKER == true and ENVIRONMENT_IS_PTHREAD == true)
  39. if (Module['ENVIRONMENT']) {
  40. if (Module['ENVIRONMENT'] === 'WEB') {
  41. ENVIRONMENT_IS_WEB = true;
  42. } else if (Module['ENVIRONMENT'] === 'WORKER') {
  43. ENVIRONMENT_IS_WORKER = true;
  44. } else if (Module['ENVIRONMENT'] === 'NODE') {
  45. ENVIRONMENT_IS_NODE = true;
  46. } else if (Module['ENVIRONMENT'] === 'SHELL') {
  47. ENVIRONMENT_IS_SHELL = true;
  48. } else {
  49. throw new Error('The provided Module[\'ENVIRONMENT\'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.');
  50. }
  51. } else {
  52. ENVIRONMENT_IS_WEB = typeof window === 'object';
  53. ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';
  54. ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function' && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;
  55. ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
  56. }
  57. if (ENVIRONMENT_IS_NODE) {
  58. // Expose functionality in the same simple way that the shells work
  59. // Note that we pollute the global namespace here, otherwise we break in node
  60. if (!Module['print']) Module['print'] = console.log;
  61. if (!Module['printErr']) Module['printErr'] = console.warn;
  62. var nodeFS;
  63. var nodePath;
  64. Module['read'] = function read(filename, binary) {
  65. if (!nodeFS) nodeFS = require('fs');
  66. if (!nodePath) nodePath = require('path');
  67. filename = nodePath['normalize'](filename);
  68. var ret = nodeFS['readFileSync'](filename);
  69. return binary ? ret : ret.toString();
  70. };
  71. Module['readBinary'] = function readBinary(filename) {
  72. var ret = Module['read'](filename, true);
  73. if (!ret.buffer) {
  74. ret = new Uint8Array(ret);
  75. }
  76. assert(ret.buffer);
  77. return ret;
  78. };
  79. Module['load'] = function load(f) {
  80. globalEval(read(f));
  81. };
  82. if (!Module['thisProgram']) {
  83. if (process['argv'].length > 1) {
  84. Module['thisProgram'] = process['argv'][1].replace(/\\/g, '/');
  85. } else {
  86. Module['thisProgram'] = 'unknown-program';
  87. }
  88. }
  89. Module['arguments'] = process['argv'].slice(2);
  90. if (typeof module !== 'undefined') {
  91. module['exports'] = Module;
  92. }
  93. process['on']('uncaughtException', function(ex) {
  94. // suppress ExitStatus exceptions from showing an error
  95. if (!(ex instanceof ExitStatus)) {
  96. throw ex;
  97. }
  98. });
  99. Module['inspect'] = function () { return '[Emscripten Module object]'; };
  100. }
  101. else if (ENVIRONMENT_IS_SHELL) {
  102. if (!Module['print']) Module['print'] = print;
  103. if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm
  104. if (typeof read != 'undefined') {
  105. Module['read'] = read;
  106. } else {
  107. Module['read'] = function read() { throw 'no read() available' };
  108. }
  109. Module['readBinary'] = function readBinary(f) {
  110. if (typeof readbuffer === 'function') {
  111. return new Uint8Array(readbuffer(f));
  112. }
  113. var data = read(f, 'binary');
  114. assert(typeof data === 'object');
  115. return data;
  116. };
  117. if (typeof scriptArgs != 'undefined') {
  118. Module['arguments'] = scriptArgs;
  119. } else if (typeof arguments != 'undefined') {
  120. Module['arguments'] = arguments;
  121. }
  122. if (typeof quit === 'function') {
  123. Module['quit'] = function(status, toThrow) {
  124. quit(status);
  125. }
  126. }
  127. }
  128. else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
  129. Module['read'] = function read(url) {
  130. var xhr = new XMLHttpRequest();
  131. xhr.open('GET', url, false);
  132. xhr.send(null);
  133. return xhr.responseText;
  134. };
  135. if (ENVIRONMENT_IS_WORKER) {
  136. Module['readBinary'] = function read(url) {
  137. var xhr = new XMLHttpRequest();
  138. xhr.open('GET', url, false);
  139. xhr.responseType = 'arraybuffer';
  140. xhr.send(null);
  141. return xhr.response;
  142. };
  143. }
  144. Module['readAsync'] = function readAsync(url, onload, onerror) {
  145. var xhr = new XMLHttpRequest();
  146. xhr.open('GET', url, true);
  147. xhr.responseType = 'arraybuffer';
  148. xhr.onload = function xhr_onload() {
  149. if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
  150. onload(xhr.response);
  151. } else {
  152. onerror();
  153. }
  154. };
  155. xhr.onerror = onerror;
  156. xhr.send(null);
  157. };
  158. if (typeof arguments != 'undefined') {
  159. Module['arguments'] = arguments;
  160. }
  161. if (typeof console !== 'undefined') {
  162. if (!Module['print']) Module['print'] = function print(x) {
  163. console.log(x);
  164. };
  165. if (!Module['printErr']) Module['printErr'] = function printErr(x) {
  166. console.warn(x);
  167. };
  168. } else {
  169. // Probably a worker, and without console.log. We can do very little here...
  170. var TRY_USE_DUMP = false;
  171. if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) {
  172. dump(x);
  173. }) : (function(x) {
  174. // self.postMessage(x); // enable this if you want stdout to be sent as messages
  175. }));
  176. }
  177. if (ENVIRONMENT_IS_WORKER) {
  178. Module['load'] = importScripts;
  179. }
  180. if (typeof Module['setWindowTitle'] === 'undefined') {
  181. Module['setWindowTitle'] = function(title) { document.title = title };
  182. }
  183. }
  184. else {
  185. // Unreachable because SHELL is dependant on the others
  186. throw 'Unknown runtime environment. Where are we?';
  187. }
  188. function globalEval(x) {
  189. eval.call(null, x);
  190. }
  191. if (!Module['load'] && Module['read']) {
  192. Module['load'] = function load(f) {
  193. globalEval(Module['read'](f));
  194. };
  195. }
  196. if (!Module['print']) {
  197. Module['print'] = function(){};
  198. }
  199. if (!Module['printErr']) {
  200. Module['printErr'] = Module['print'];
  201. }
  202. if (!Module['arguments']) {
  203. Module['arguments'] = [];
  204. }
  205. if (!Module['thisProgram']) {
  206. Module['thisProgram'] = './this.program';
  207. }
  208. if (!Module['quit']) {
  209. Module['quit'] = function(status, toThrow) {
  210. throw toThrow;
  211. }
  212. }
  213. // *** Environment setup code ***
  214. // Closure helpers
  215. Module.print = Module['print'];
  216. Module.printErr = Module['printErr'];
  217. // Callbacks
  218. Module['preRun'] = [];
  219. Module['postRun'] = [];
  220. // Merge back in the overrides
  221. for (var key in moduleOverrides) {
  222. if (moduleOverrides.hasOwnProperty(key)) {
  223. Module[key] = moduleOverrides[key];
  224. }
  225. }
  226. // Free the object hierarchy contained in the overrides, this lets the GC
  227. // reclaim data used e.g. in memoryInitializerRequest, which is a large typed array.
  228. moduleOverrides = undefined;
  229. // {{PREAMBLE_ADDITIONS}}
  230. // === Preamble library stuff ===
  231. // Documentation for the public APIs defined in this file must be updated in:
  232. // site/source/docs/api_reference/preamble.js.rst
  233. // A prebuilt local version of the documentation is available at:
  234. // site/build/text/docs/api_reference/preamble.js.txt
  235. // You can also build docs locally as HTML or other formats in site/
  236. // An online HTML version (which may be of a different version of Emscripten)
  237. // is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html
  238. //========================================
  239. // Runtime code shared with compiler
  240. //========================================
  241. var Runtime = {
  242. setTempRet0: function (value) {
  243. tempRet0 = value;
  244. return value;
  245. },
  246. getTempRet0: function () {
  247. return tempRet0;
  248. },
  249. stackSave: function () {
  250. return STACKTOP;
  251. },
  252. stackRestore: function (stackTop) {
  253. STACKTOP = stackTop;
  254. },
  255. getNativeTypeSize: function (type) {
  256. switch (type) {
  257. case 'i1': case 'i8': return 1;
  258. case 'i16': return 2;
  259. case 'i32': return 4;
  260. case 'i64': return 8;
  261. case 'float': return 4;
  262. case 'double': return 8;
  263. default: {
  264. if (type[type.length-1] === '*') {
  265. return Runtime.QUANTUM_SIZE; // A pointer
  266. } else if (type[0] === 'i') {
  267. var bits = parseInt(type.substr(1));
  268. assert(bits % 8 === 0);
  269. return bits/8;
  270. } else {
  271. return 0;
  272. }
  273. }
  274. }
  275. },
  276. getNativeFieldSize: function (type) {
  277. return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE);
  278. },
  279. STACK_ALIGN: 16,
  280. prepVararg: function (ptr, type) {
  281. if (type === 'double' || type === 'i64') {
  282. // move so the load is aligned
  283. if (ptr & 7) {
  284. assert((ptr & 7) === 4);
  285. ptr += 4;
  286. }
  287. } else {
  288. assert((ptr & 3) === 0);
  289. }
  290. return ptr;
  291. },
  292. getAlignSize: function (type, size, vararg) {
  293. // we align i64s and doubles on 64-bit boundaries, unlike x86
  294. if (!vararg && (type == 'i64' || type == 'double')) return 8;
  295. if (!type) return Math.min(size, 8); // align structures internally to 64 bits
  296. return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE);
  297. },
  298. dynCall: function (sig, ptr, args) {
  299. if (args && args.length) {
  300. assert(args.length == sig.length-1);
  301. assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\'');
  302. return Module['dynCall_' + sig].apply(null, [ptr].concat(args));
  303. } else {
  304. assert(sig.length == 1);
  305. assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\'');
  306. return Module['dynCall_' + sig].call(null, ptr);
  307. }
  308. },
  309. functionPointers: [],
  310. addFunction: function (func) {
  311. for (var i = 0; i < Runtime.functionPointers.length; i++) {
  312. if (!Runtime.functionPointers[i]) {
  313. Runtime.functionPointers[i] = func;
  314. return 2*(1 + i);
  315. }
  316. }
  317. throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.';
  318. },
  319. removeFunction: function (index) {
  320. Runtime.functionPointers[(index-2)/2] = null;
  321. },
  322. warnOnce: function (text) {
  323. if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};
  324. if (!Runtime.warnOnce.shown[text]) {
  325. Runtime.warnOnce.shown[text] = 1;
  326. Module.printErr(text);
  327. }
  328. },
  329. funcWrappers: {},
  330. getFuncWrapper: function (func, sig) {
  331. assert(sig);
  332. if (!Runtime.funcWrappers[sig]) {
  333. Runtime.funcWrappers[sig] = {};
  334. }
  335. var sigCache = Runtime.funcWrappers[sig];
  336. if (!sigCache[func]) {
  337. // optimize away arguments usage in common cases
  338. if (sig.length === 1) {
  339. sigCache[func] = function dynCall_wrapper() {
  340. return Runtime.dynCall(sig, func);
  341. };
  342. } else if (sig.length === 2) {
  343. sigCache[func] = function dynCall_wrapper(arg) {
  344. return Runtime.dynCall(sig, func, [arg]);
  345. };
  346. } else {
  347. // general case
  348. sigCache[func] = function dynCall_wrapper() {
  349. return Runtime.dynCall(sig, func, Array.prototype.slice.call(arguments));
  350. };
  351. }
  352. }
  353. return sigCache[func];
  354. },
  355. getCompilerSetting: function (name) {
  356. throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work';
  357. },
  358. stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+15)&-16);(assert((((STACKTOP|0) < (STACK_MAX|0))|0))|0); return ret; },
  359. staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + (assert(!staticSealed),size))|0;STATICTOP = (((STATICTOP)+15)&-16); return ret; },
  360. dynamicAlloc: function (size) { assert(DYNAMICTOP_PTR);var ret = HEAP32[DYNAMICTOP_PTR>>2];var end = (((ret + size + 15)|0) & -16);HEAP32[DYNAMICTOP_PTR>>2] = end;if (end >= TOTAL_MEMORY) {var success = enlargeMemory();if (!success) {HEAP32[DYNAMICTOP_PTR>>2] = ret;return 0;}}return ret;},
  361. alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 16))*(quantum ? quantum : 16); return ret; },
  362. makeBigInt: function (low,high,unsigned) { var ret = (unsigned ? ((+((low>>>0)))+((+((high>>>0)))*4294967296.0)) : ((+((low>>>0)))+((+((high|0)))*4294967296.0))); return ret; },
  363. GLOBAL_BASE: 8,
  364. QUANTUM_SIZE: 4,
  365. __dummy__: 0
  366. }
  367. Module["Runtime"] = Runtime;
  368. //========================================
  369. // Runtime essentials
  370. //========================================
  371. var ABORT = 0; // whether we are quitting the application. no code should run after this. set in exit() and abort()
  372. var EXITSTATUS = 0;
  373. function assert(condition, text) {
  374. if (!condition) {
  375. abort('Assertion failed: ' + text);
  376. }
  377. }
  378. var globalScope = this;
  379. // Returns the C function with a specified identifier (for C++, you need to do manual name mangling)
  380. function getCFunc(ident) {
  381. var func = Module['_' + ident]; // closure exported function
  382. if (!func) {
  383. try { func = eval('_' + ident); } catch(e) {}
  384. }
  385. assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)');
  386. return func;
  387. }
  388. var cwrap, ccall;
  389. (function(){
  390. var JSfuncs = {
  391. // Helpers for cwrap -- it can't refer to Runtime directly because it might
  392. // be renamed by closure, instead it calls JSfuncs['stackSave'].body to find
  393. // out what the minified function name is.
  394. 'stackSave': function() {
  395. Runtime.stackSave()
  396. },
  397. 'stackRestore': function() {
  398. Runtime.stackRestore()
  399. },
  400. // type conversion from js to c
  401. 'arrayToC' : function(arr) {
  402. var ret = Runtime.stackAlloc(arr.length);
  403. writeArrayToMemory(arr, ret);
  404. return ret;
  405. },
  406. 'stringToC' : function(str) {
  407. var ret = 0;
  408. if (str !== null && str !== undefined && str !== 0) { // null string
  409. // at most 4 bytes per UTF-8 code point, +1 for the trailing '\0'
  410. var len = (str.length << 2) + 1;
  411. ret = Runtime.stackAlloc(len);
  412. stringToUTF8(str, ret, len);
  413. }
  414. return ret;
  415. }
  416. };
  417. // For fast lookup of conversion functions
  418. var toC = {'string' : JSfuncs['stringToC'], 'array' : JSfuncs['arrayToC']};
  419. // C calling interface.
  420. ccall = function ccallFunc(ident, returnType, argTypes, args, opts) {
  421. var func = getCFunc(ident);
  422. var cArgs = [];
  423. var stack = 0;
  424. assert(returnType !== 'array', 'Return type should not be "array".');
  425. if (args) {
  426. for (var i = 0; i < args.length; i++) {
  427. var converter = toC[argTypes[i]];
  428. if (converter) {
  429. if (stack === 0) stack = Runtime.stackSave();
  430. cArgs[i] = converter(args[i]);
  431. } else {
  432. cArgs[i] = args[i];
  433. }
  434. }
  435. }
  436. var ret = func.apply(null, cArgs);
  437. if ((!opts || !opts.async) && typeof EmterpreterAsync === 'object') {
  438. assert(!EmterpreterAsync.state, 'cannot start async op with normal JS calling ccall');
  439. }
  440. if (opts && opts.async) assert(!returnType, 'async ccalls cannot return values');
  441. if (returnType === 'string') ret = Pointer_stringify(ret);
  442. if (stack !== 0) {
  443. if (opts && opts.async) {
  444. EmterpreterAsync.asyncFinalizers.push(function() {
  445. Runtime.stackRestore(stack);
  446. });
  447. return;
  448. }
  449. Runtime.stackRestore(stack);
  450. }
  451. return ret;
  452. }
  453. var sourceRegex = /^function\s*[a-zA-Z$_0-9]*\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;
  454. function parseJSFunc(jsfunc) {
  455. // Match the body and the return value of a javascript function source
  456. var parsed = jsfunc.toString().match(sourceRegex).slice(1);
  457. return {arguments : parsed[0], body : parsed[1], returnValue: parsed[2]}
  458. }
  459. // sources of useful functions. we create this lazily as it can trigger a source decompression on this entire file
  460. var JSsource = null;
  461. function ensureJSsource() {
  462. if (!JSsource) {
  463. JSsource = {};
  464. for (var fun in JSfuncs) {
  465. if (JSfuncs.hasOwnProperty(fun)) {
  466. // Elements of toCsource are arrays of three items:
  467. // the code, and the return value
  468. JSsource[fun] = parseJSFunc(JSfuncs[fun]);
  469. }
  470. }
  471. }
  472. }
  473. cwrap = function cwrap(ident, returnType, argTypes) {
  474. argTypes = argTypes || [];
  475. var cfunc = getCFunc(ident);
  476. // When the function takes numbers and returns a number, we can just return
  477. // the original function
  478. var numericArgs = argTypes.every(function(type){ return type === 'number'});
  479. var numericRet = (returnType !== 'string');
  480. if ( numericRet && numericArgs) {
  481. return cfunc;
  482. }
  483. // Creation of the arguments list (["$1","$2",...,"$nargs"])
  484. var argNames = argTypes.map(function(x,i){return '$'+i});
  485. var funcstr = "(function(" + argNames.join(',') + ") {";
  486. var nargs = argTypes.length;
  487. if (!numericArgs) {
  488. // Generate the code needed to convert the arguments from javascript
  489. // values to pointers
  490. ensureJSsource();
  491. funcstr += 'var stack = ' + JSsource['stackSave'].body + ';';
  492. for (var i = 0; i < nargs; i++) {
  493. var arg = argNames[i], type = argTypes[i];
  494. if (type === 'number') continue;
  495. var convertCode = JSsource[type + 'ToC']; // [code, return]
  496. funcstr += 'var ' + convertCode.arguments + ' = ' + arg + ';';
  497. funcstr += convertCode.body + ';';
  498. funcstr += arg + '=(' + convertCode.returnValue + ');';
  499. }
  500. }
  501. // When the code is compressed, the name of cfunc is not literally 'cfunc' anymore
  502. var cfuncname = parseJSFunc(function(){return cfunc}).returnValue;
  503. // Call the function
  504. funcstr += 'var ret = ' + cfuncname + '(' + argNames.join(',') + ');';
  505. if (!numericRet) { // Return type can only by 'string' or 'number'
  506. // Convert the result to a string
  507. var strgfy = parseJSFunc(function(){return Pointer_stringify}).returnValue;
  508. funcstr += 'ret = ' + strgfy + '(ret);';
  509. }
  510. funcstr += "if (typeof EmterpreterAsync === 'object') { assert(!EmterpreterAsync.state, 'cannot start async op with normal JS calling cwrap') }";
  511. if (!numericArgs) {
  512. // If we had a stack, restore it
  513. ensureJSsource();
  514. funcstr += JSsource['stackRestore'].body.replace('()', '(stack)') + ';';
  515. }
  516. funcstr += 'return ret})';
  517. return eval(funcstr);
  518. };
  519. })();
  520. Module["ccall"] = ccall;
  521. Module["cwrap"] = cwrap;
  522. function setValue(ptr, value, type, noSafe) {
  523. type = type || 'i8';
  524. if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit
  525. switch(type) {
  526. case 'i1': HEAP8[((ptr)>>0)]=value; break;
  527. case 'i8': HEAP8[((ptr)>>0)]=value; break;
  528. case 'i16': HEAP16[((ptr)>>1)]=value; break;
  529. case 'i32': HEAP32[((ptr)>>2)]=value; break;
  530. 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;
  531. case 'float': HEAPF32[((ptr)>>2)]=value; break;
  532. case 'double': HEAPF64[((ptr)>>3)]=value; break;
  533. default: abort('invalid type for setValue: ' + type);
  534. }
  535. }
  536. Module["setValue"] = setValue;
  537. function getValue(ptr, type, noSafe) {
  538. type = type || 'i8';
  539. if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit
  540. switch(type) {
  541. case 'i1': return HEAP8[((ptr)>>0)];
  542. case 'i8': return HEAP8[((ptr)>>0)];
  543. case 'i16': return HEAP16[((ptr)>>1)];
  544. case 'i32': return HEAP32[((ptr)>>2)];
  545. case 'i64': return HEAP32[((ptr)>>2)];
  546. case 'float': return HEAPF32[((ptr)>>2)];
  547. case 'double': return HEAPF64[((ptr)>>3)];
  548. default: abort('invalid type for setValue: ' + type);
  549. }
  550. return null;
  551. }
  552. Module["getValue"] = getValue;
  553. var ALLOC_NORMAL = 0; // Tries to use _malloc()
  554. var ALLOC_STACK = 1; // Lives for the duration of the current function call
  555. var ALLOC_STATIC = 2; // Cannot be freed
  556. var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk
  557. var ALLOC_NONE = 4; // Do not allocate
  558. Module["ALLOC_NORMAL"] = ALLOC_NORMAL;
  559. Module["ALLOC_STACK"] = ALLOC_STACK;
  560. Module["ALLOC_STATIC"] = ALLOC_STATIC;
  561. Module["ALLOC_DYNAMIC"] = ALLOC_DYNAMIC;
  562. Module["ALLOC_NONE"] = ALLOC_NONE;
  563. // allocate(): This is for internal use. You can use it yourself as well, but the interface
  564. // is a little tricky (see docs right below). The reason is that it is optimized
  565. // for multiple syntaxes to save space in generated code. So you should
  566. // normally not use allocate(), and instead allocate memory using _malloc(),
  567. // initialize it with setValue(), and so forth.
  568. // @slab: An array of data, or a number. If a number, then the size of the block to allocate,
  569. // in *bytes* (note that this is sometimes confusing: the next parameter does not
  570. // affect this!)
  571. // @types: Either an array of types, one for each byte (or 0 if no type at that position),
  572. // or a single type which is used for the entire block. This only matters if there
  573. // is initial data - if @slab is a number, then this does not matter at all and is
  574. // ignored.
  575. // @allocator: How to allocate memory, see ALLOC_*
  576. function allocate(slab, types, allocator, ptr) {
  577. var zeroinit, size;
  578. if (typeof slab === 'number') {
  579. zeroinit = true;
  580. size = slab;
  581. } else {
  582. zeroinit = false;
  583. size = slab.length;
  584. }
  585. var singleType = typeof types === 'string' ? types : null;
  586. var ret;
  587. if (allocator == ALLOC_NONE) {
  588. ret = ptr;
  589. } else {
  590. ret = [typeof _malloc === 'function' ? _malloc : Runtime.staticAlloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));
  591. }
  592. if (zeroinit) {
  593. var ptr = ret, stop;
  594. assert((ret & 3) == 0);
  595. stop = ret + (size & ~3);
  596. for (; ptr < stop; ptr += 4) {
  597. HEAP32[((ptr)>>2)]=0;
  598. }
  599. stop = ret + size;
  600. while (ptr < stop) {
  601. HEAP8[((ptr++)>>0)]=0;
  602. }
  603. return ret;
  604. }
  605. if (singleType === 'i8') {
  606. if (slab.subarray || slab.slice) {
  607. HEAPU8.set(slab, ret);
  608. } else {
  609. HEAPU8.set(new Uint8Array(slab), ret);
  610. }
  611. return ret;
  612. }
  613. var i = 0, type, typeSize, previousType;
  614. while (i < size) {
  615. var curr = slab[i];
  616. if (typeof curr === 'function') {
  617. curr = Runtime.getFunctionIndex(curr);
  618. }
  619. type = singleType || types[i];
  620. if (type === 0) {
  621. i++;
  622. continue;
  623. }
  624. assert(type, 'Must know what type to store in allocate!');
  625. if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later
  626. setValue(ret+i, curr, type);
  627. // no need to look up size unless type changes, so cache it
  628. if (previousType !== type) {
  629. typeSize = Runtime.getNativeTypeSize(type);
  630. previousType = type;
  631. }
  632. i += typeSize;
  633. }
  634. return ret;
  635. }
  636. Module["allocate"] = allocate;
  637. // Allocate memory during any stage of startup - static memory early on, dynamic memory later, malloc when ready
  638. function getMemory(size) {
  639. if (!staticSealed) return Runtime.staticAlloc(size);
  640. if (!runtimeInitialized) return Runtime.dynamicAlloc(size);
  641. return _malloc(size);
  642. }
  643. Module["getMemory"] = getMemory;
  644. function Pointer_stringify(ptr, /* optional */ length) {
  645. if (length === 0 || !ptr) return '';
  646. // TODO: use TextDecoder
  647. // Find the length, and check for UTF while doing so
  648. var hasUtf = 0;
  649. var t;
  650. var i = 0;
  651. while (1) {
  652. assert(ptr + i < TOTAL_MEMORY);
  653. t = HEAPU8[(((ptr)+(i))>>0)];
  654. hasUtf |= t;
  655. if (t == 0 && !length) break;
  656. i++;
  657. if (length && i == length) break;
  658. }
  659. if (!length) length = i;
  660. var ret = '';
  661. if (hasUtf < 128) {
  662. var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack
  663. var curr;
  664. while (length > 0) {
  665. curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
  666. ret = ret ? ret + curr : curr;
  667. ptr += MAX_CHUNK;
  668. length -= MAX_CHUNK;
  669. }
  670. return ret;
  671. }
  672. return Module['UTF8ToString'](ptr);
  673. }
  674. Module["Pointer_stringify"] = Pointer_stringify;
  675. // Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns
  676. // a copy of that string as a Javascript String object.
  677. function AsciiToString(ptr) {
  678. var str = '';
  679. while (1) {
  680. var ch = HEAP8[((ptr++)>>0)];
  681. if (!ch) return str;
  682. str += String.fromCharCode(ch);
  683. }
  684. }
  685. Module["AsciiToString"] = AsciiToString;
  686. // Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
  687. // null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP.
  688. function stringToAscii(str, outPtr) {
  689. return writeAsciiToMemory(str, outPtr, false);
  690. }
  691. Module["stringToAscii"] = stringToAscii;
  692. // Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns
  693. // a copy of that string as a Javascript String object.
  694. var UTF8Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined;
  695. function UTF8ArrayToString(u8Array, idx) {
  696. var endPtr = idx;
  697. // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself.
  698. // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage.
  699. while (u8Array[endPtr]) ++endPtr;
  700. if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {
  701. return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));
  702. } else {
  703. var u0, u1, u2, u3, u4, u5;
  704. var str = '';
  705. while (1) {
  706. // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629
  707. u0 = u8Array[idx++];
  708. if (!u0) return str;
  709. if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; }
  710. u1 = u8Array[idx++] & 63;
  711. if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; }
  712. u2 = u8Array[idx++] & 63;
  713. if ((u0 & 0xF0) == 0xE0) {
  714. u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;
  715. } else {
  716. u3 = u8Array[idx++] & 63;
  717. if ((u0 & 0xF8) == 0xF0) {
  718. u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | u3;
  719. } else {
  720. u4 = u8Array[idx++] & 63;
  721. if ((u0 & 0xFC) == 0xF8) {
  722. u0 = ((u0 & 3) << 24) | (u1 << 18) | (u2 << 12) | (u3 << 6) | u4;
  723. } else {
  724. u5 = u8Array[idx++] & 63;
  725. u0 = ((u0 & 1) << 30) | (u1 << 24) | (u2 << 18) | (u3 << 12) | (u4 << 6) | u5;
  726. }
  727. }
  728. }
  729. if (u0 < 0x10000) {
  730. str += String.fromCharCode(u0);
  731. } else {
  732. var ch = u0 - 0x10000;
  733. str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));
  734. }
  735. }
  736. }
  737. }
  738. Module["UTF8ArrayToString"] = UTF8ArrayToString;
  739. // Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns
  740. // a copy of that string as a Javascript String object.
  741. function UTF8ToString(ptr) {
  742. return UTF8ArrayToString(HEAPU8,ptr);
  743. }
  744. Module["UTF8ToString"] = UTF8ToString;
  745. // Copies the given Javascript String object 'str' to the given byte array at address 'outIdx',
  746. // encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP.
  747. // Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write.
  748. // Parameters:
  749. // str: the Javascript string to copy.
  750. // outU8Array: the array to copy to. Each index in this array is assumed to be one 8-byte element.
  751. // outIdx: The starting offset in the array to begin the copying.
  752. // maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null
  753. // terminator, i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else.
  754. // maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator.
  755. // Returns the number of bytes written, EXCLUDING the null terminator.
  756. function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {
  757. if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes.
  758. return 0;
  759. var startIdx = outIdx;
  760. var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator.
  761. for (var i = 0; i < str.length; ++i) {
  762. // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.
  763. // See http://unicode.org/faq/utf_bom.html#utf16-3
  764. // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629
  765. var u = str.charCodeAt(i); // possibly a lead surrogate
  766. if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);
  767. if (u <= 0x7F) {
  768. if (outIdx >= endIdx) break;
  769. outU8Array[outIdx++] = u;
  770. } else if (u <= 0x7FF) {
  771. if (outIdx + 1 >= endIdx) break;
  772. outU8Array[outIdx++] = 0xC0 | (u >> 6);
  773. outU8Array[outIdx++] = 0x80 | (u & 63);
  774. } else if (u <= 0xFFFF) {
  775. if (outIdx + 2 >= endIdx) break;
  776. outU8Array[outIdx++] = 0xE0 | (u >> 12);
  777. outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);
  778. outU8Array[outIdx++] = 0x80 | (u & 63);
  779. } else if (u <= 0x1FFFFF) {
  780. if (outIdx + 3 >= endIdx) break;
  781. outU8Array[outIdx++] = 0xF0 | (u >> 18);
  782. outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);
  783. outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);
  784. outU8Array[outIdx++] = 0x80 | (u & 63);
  785. } else if (u <= 0x3FFFFFF) {
  786. if (outIdx + 4 >= endIdx) break;
  787. outU8Array[outIdx++] = 0xF8 | (u >> 24);
  788. outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63);
  789. outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);
  790. outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);
  791. outU8Array[outIdx++] = 0x80 | (u & 63);
  792. } else {
  793. if (outIdx + 5 >= endIdx) break;
  794. outU8Array[outIdx++] = 0xFC | (u >> 30);
  795. outU8Array[outIdx++] = 0x80 | ((u >> 24) & 63);
  796. outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63);
  797. outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);
  798. outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);
  799. outU8Array[outIdx++] = 0x80 | (u & 63);
  800. }
  801. }
  802. // Null-terminate the pointer to the buffer.
  803. outU8Array[outIdx] = 0;
  804. return outIdx - startIdx;
  805. }
  806. Module["stringToUTF8Array"] = stringToUTF8Array;
  807. // Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
  808. // null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP.
  809. // Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write.
  810. // Returns the number of bytes written, EXCLUDING the null terminator.
  811. function stringToUTF8(str, outPtr, maxBytesToWrite) {
  812. assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!');
  813. return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite);
  814. }
  815. Module["stringToUTF8"] = stringToUTF8;
  816. // Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte.
  817. function lengthBytesUTF8(str) {
  818. var len = 0;
  819. for (var i = 0; i < str.length; ++i) {
  820. // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.
  821. // See http://unicode.org/faq/utf_bom.html#utf16-3
  822. var u = str.charCodeAt(i); // possibly a lead surrogate
  823. if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);
  824. if (u <= 0x7F) {
  825. ++len;
  826. } else if (u <= 0x7FF) {
  827. len += 2;
  828. } else if (u <= 0xFFFF) {
  829. len += 3;
  830. } else if (u <= 0x1FFFFF) {
  831. len += 4;
  832. } else if (u <= 0x3FFFFFF) {
  833. len += 5;
  834. } else {
  835. len += 6;
  836. }
  837. }
  838. return len;
  839. }
  840. Module["lengthBytesUTF8"] = lengthBytesUTF8;
  841. // Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns
  842. // a copy of that string as a Javascript String object.
  843. var UTF16Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-16le') : undefined;
  844. function UTF16ToString(ptr) {
  845. assert(ptr % 2 == 0, 'Pointer passed to UTF16ToString must be aligned to two bytes!');
  846. var endPtr = ptr;
  847. // TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself.
  848. // Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage.
  849. var idx = endPtr >> 1;
  850. while (HEAP16[idx]) ++idx;
  851. endPtr = idx << 1;
  852. if (endPtr - ptr > 32 && UTF16Decoder) {
  853. return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr));
  854. } else {
  855. var i = 0;
  856. var str = '';
  857. while (1) {
  858. var codeUnit = HEAP16[(((ptr)+(i*2))>>1)];
  859. if (codeUnit == 0) return str;
  860. ++i;
  861. // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through.
  862. str += String.fromCharCode(codeUnit);
  863. }
  864. }
  865. }
  866. // Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
  867. // null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP.
  868. // Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write.
  869. // Parameters:
  870. // str: the Javascript string to copy.
  871. // outPtr: Byte address in Emscripten HEAP where to write the string to.
  872. // maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null
  873. // terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else.
  874. // maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator.
  875. // Returns the number of bytes written, EXCLUDING the null terminator.
  876. function stringToUTF16(str, outPtr, maxBytesToWrite) {
  877. assert(outPtr % 2 == 0, 'Pointer passed to stringToUTF16 must be aligned to two bytes!');
  878. assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!');
  879. // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.
  880. if (maxBytesToWrite === undefined) {
  881. maxBytesToWrite = 0x7FFFFFFF;
  882. }
  883. if (maxBytesToWrite < 2) return 0;
  884. maxBytesToWrite -= 2; // Null terminator.
  885. var startPtr = outPtr;
  886. var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length;
  887. for (var i = 0; i < numCharsToWrite; ++i) {
  888. // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.
  889. var codeUnit = str.charCodeAt(i); // possibly a lead surrogate
  890. HEAP16[((outPtr)>>1)]=codeUnit;
  891. outPtr += 2;
  892. }
  893. // Null-terminate the pointer to the HEAP.
  894. HEAP16[((outPtr)>>1)]=0;
  895. return outPtr - startPtr;
  896. }
  897. // Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte.
  898. function lengthBytesUTF16(str) {
  899. return str.length*2;
  900. }
  901. function UTF32ToString(ptr) {
  902. assert(ptr % 4 == 0, 'Pointer passed to UTF32ToString must be aligned to four bytes!');
  903. var i = 0;
  904. var str = '';
  905. while (1) {
  906. var utf32 = HEAP32[(((ptr)+(i*4))>>2)];
  907. if (utf32 == 0)
  908. return str;
  909. ++i;
  910. // 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.
  911. // See http://unicode.org/faq/utf_bom.html#utf16-3
  912. if (utf32 >= 0x10000) {
  913. var ch = utf32 - 0x10000;
  914. str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));
  915. } else {
  916. str += String.fromCharCode(utf32);
  917. }
  918. }
  919. }
  920. // Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
  921. // null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP.
  922. // Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write.
  923. // Parameters:
  924. // str: the Javascript string to copy.
  925. // outPtr: Byte address in Emscripten HEAP where to write the string to.
  926. // maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null
  927. // terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else.
  928. // maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator.
  929. // Returns the number of bytes written, EXCLUDING the null terminator.
  930. function stringToUTF32(str, outPtr, maxBytesToWrite) {
  931. assert(outPtr % 4 == 0, 'Pointer passed to stringToUTF32 must be aligned to four bytes!');
  932. assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!');
  933. // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.
  934. if (maxBytesToWrite === undefined) {
  935. maxBytesToWrite = 0x7FFFFFFF;
  936. }
  937. if (maxBytesToWrite < 4) return 0;
  938. var startPtr = outPtr;
  939. var endPtr = startPtr + maxBytesToWrite - 4;
  940. for (var i = 0; i < str.length; ++i) {
  941. // 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.
  942. // See http://unicode.org/faq/utf_bom.html#utf16-3
  943. var codeUnit = str.charCodeAt(i); // possibly a lead surrogate
  944. if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) {
  945. var trailSurrogate = str.charCodeAt(++i);
  946. codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF);
  947. }
  948. HEAP32[((outPtr)>>2)]=codeUnit;
  949. outPtr += 4;
  950. if (outPtr + 4 > endPtr) break;
  951. }
  952. // Null-terminate the pointer to the HEAP.
  953. HEAP32[((outPtr)>>2)]=0;
  954. return outPtr - startPtr;
  955. }
  956. // Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte.
  957. function lengthBytesUTF32(str) {
  958. var len = 0;
  959. for (var i = 0; i < str.length; ++i) {
  960. // 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.
  961. // See http://unicode.org/faq/utf_bom.html#utf16-3
  962. var codeUnit = str.charCodeAt(i);
  963. if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate.
  964. len += 4;
  965. }
  966. return len;
  967. }
  968. function demangle(func) {
  969. var __cxa_demangle_func = Module['___cxa_demangle'] || Module['__cxa_demangle'];
  970. if (__cxa_demangle_func) {
  971. try {
  972. var s =
  973. func.substr(1);
  974. var len = lengthBytesUTF8(s)+1;
  975. var buf = _malloc(len);
  976. stringToUTF8(s, buf, len);
  977. var status = _malloc(4);
  978. var ret = __cxa_demangle_func(buf, 0, 0, status);
  979. if (getValue(status, 'i32') === 0 && ret) {
  980. return Pointer_stringify(ret);
  981. }
  982. // otherwise, libcxxabi failed
  983. } catch(e) {
  984. // ignore problems here
  985. } finally {
  986. if (buf) _free(buf);
  987. if (status) _free(status);
  988. if (ret) _free(ret);
  989. }
  990. // failure when using libcxxabi, don't demangle
  991. return func;
  992. }
  993. Runtime.warnOnce('warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling');
  994. return func;
  995. }
  996. function demangleAll(text) {
  997. var regex =
  998. /__Z[\w\d_]+/g;
  999. return text.replace(regex,
  1000. function(x) {
  1001. var y = demangle(x);
  1002. return x === y ? x : (x + ' [' + y + ']');
  1003. });
  1004. }
  1005. function jsStackTrace() {
  1006. var err = new Error();
  1007. if (!err.stack) {
  1008. // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown,
  1009. // so try that as a special-case.
  1010. try {
  1011. throw new Error(0);
  1012. } catch(e) {
  1013. err = e;
  1014. }
  1015. if (!err.stack) {
  1016. return '(no stack trace available)';
  1017. }
  1018. }
  1019. return err.stack.toString();
  1020. }
  1021. function stackTrace() {
  1022. var js = jsStackTrace();
  1023. if (Module['extraStackTrace']) js += '\n' + Module['extraStackTrace']();
  1024. return demangleAll(js);
  1025. }
  1026. Module["stackTrace"] = stackTrace;
  1027. // Memory management
  1028. var PAGE_SIZE = 16384;
  1029. var WASM_PAGE_SIZE = 65536;
  1030. var ASMJS_PAGE_SIZE = 16777216;
  1031. var MIN_TOTAL_MEMORY = 16777216;
  1032. function alignUp(x, multiple) {
  1033. if (x % multiple > 0) {
  1034. x += multiple - (x % multiple);
  1035. }
  1036. return x;
  1037. }
  1038. var HEAP;
  1039. var buffer;
  1040. var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
  1041. function updateGlobalBuffer(buf) {
  1042. Module['buffer'] = buffer = buf;
  1043. }
  1044. function updateGlobalBufferViews() {
  1045. Module['HEAP8'] = HEAP8 = new Int8Array(buffer);
  1046. Module['HEAP16'] = HEAP16 = new Int16Array(buffer);
  1047. Module['HEAP32'] = HEAP32 = new Int32Array(buffer);
  1048. Module['HEAPU8'] = HEAPU8 = new Uint8Array(buffer);
  1049. Module['HEAPU16'] = HEAPU16 = new Uint16Array(buffer);
  1050. Module['HEAPU32'] = HEAPU32 = new Uint32Array(buffer);
  1051. Module['HEAPF32'] = HEAPF32 = new Float32Array(buffer);
  1052. Module['HEAPF64'] = HEAPF64 = new Float64Array(buffer);
  1053. }
  1054. var STATIC_BASE, STATICTOP, staticSealed; // static area
  1055. var STACK_BASE, STACKTOP, STACK_MAX; // stack area
  1056. var DYNAMIC_BASE, DYNAMICTOP_PTR; // dynamic area handled by sbrk
  1057. STATIC_BASE = STATICTOP = STACK_BASE = STACKTOP = STACK_MAX = DYNAMIC_BASE = DYNAMICTOP_PTR = 0;
  1058. staticSealed = false;
  1059. // Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode.
  1060. function writeStackCookie() {
  1061. assert((STACK_MAX & 3) == 0);
  1062. HEAPU32[(STACK_MAX >> 2)-1] = 0x02135467;
  1063. HEAPU32[(STACK_MAX >> 2)-2] = 0x89BACDFE;
  1064. }
  1065. function checkStackCookie() {
  1066. if (HEAPU32[(STACK_MAX >> 2)-1] != 0x02135467 || HEAPU32[(STACK_MAX >> 2)-2] != 0x89BACDFE) {
  1067. abort('Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x' + HEAPU32[(STACK_MAX >> 2)-2].toString(16) + ' ' + HEAPU32[(STACK_MAX >> 2)-1].toString(16));
  1068. }
  1069. // Also test the global address 0 for integrity. This check is not compatible with SAFE_SPLIT_MEMORY though, since that mode already tests all address 0 accesses on its own.
  1070. if (HEAP32[0] !== 0x63736d65 /* 'emsc' */) throw 'Runtime error: The application has corrupted its heap memory area (address zero)!';
  1071. }
  1072. function abortStackOverflow(allocSize) {
  1073. abort('Stack overflow! Attempted to allocate ' + allocSize + ' bytes on the stack, but stack has only ' + (STACK_MAX - asm.stackSave() + allocSize) + ' bytes available!');
  1074. }
  1075. function abortOnCannotGrowMemory() {
  1076. 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 -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ');
  1077. }
  1078. if (!Module['reallocBuffer']) Module['reallocBuffer'] = function(size) {
  1079. var ret;
  1080. try {
  1081. if (ArrayBuffer.transfer) {
  1082. ret = ArrayBuffer.transfer(buffer, size);
  1083. } else {
  1084. var oldHEAP8 = HEAP8;
  1085. ret = new ArrayBuffer(size);
  1086. var temp = new Int8Array(ret);
  1087. temp.set(oldHEAP8);
  1088. }
  1089. } catch(e) {
  1090. return false;
  1091. }
  1092. var success = _emscripten_replace_memory(ret);
  1093. if (!success) return false;
  1094. return ret;
  1095. };
  1096. function enlargeMemory() {
  1097. // TOTAL_MEMORY is the current size of the actual array, and DYNAMICTOP is the new top.
  1098. assert(HEAP32[DYNAMICTOP_PTR>>2] > TOTAL_MEMORY); // This function should only ever be called after the ceiling of the dynamic heap has already been bumped to exceed the current total size of the asm.js heap.
  1099. var PAGE_MULTIPLE = Module["usingWasm"] ? WASM_PAGE_SIZE : ASMJS_PAGE_SIZE; // In wasm, heap size must be a multiple of 64KB. In asm.js, they need to be multiples of 16MB.
  1100. var LIMIT = 2147483648 - PAGE_MULTIPLE; // We can do one page short of 2GB as theoretical maximum.
  1101. if (HEAP32[DYNAMICTOP_PTR>>2] > LIMIT) {
  1102. Module.printErr('Cannot enlarge memory, asked to go up to ' + HEAP32[DYNAMICTOP_PTR>>2] + ' bytes, but the limit is ' + LIMIT + ' bytes!');
  1103. return false;
  1104. }
  1105. var OLD_TOTAL_MEMORY = TOTAL_MEMORY;
  1106. TOTAL_MEMORY = Math.max(TOTAL_MEMORY, MIN_TOTAL_MEMORY); // So the loop below will not be infinite, and minimum asm.js memory size is 16MB.
  1107. while (TOTAL_MEMORY < HEAP32[DYNAMICTOP_PTR>>2]) { // Keep incrementing the heap size as long as it's less than what is requested.
  1108. if (TOTAL_MEMORY <= 536870912) {
  1109. TOTAL_MEMORY = alignUp(2 * TOTAL_MEMORY, PAGE_MULTIPLE); // Simple heuristic: double until 1GB...
  1110. } else {
  1111. TOTAL_MEMORY = Math.min(alignUp((3 * TOTAL_MEMORY + 2147483648) / 4, PAGE_MULTIPLE), LIMIT); // ..., but after that, add smaller increments towards 2GB, which we cannot reach
  1112. }
  1113. }
  1114. var start = Date.now();
  1115. var replacement = Module['reallocBuffer'](TOTAL_MEMORY);
  1116. if (!replacement || replacement.byteLength != TOTAL_MEMORY) {
  1117. Module.printErr('Failed to grow the heap from ' + OLD_TOTAL_MEMORY + ' bytes to ' + TOTAL_MEMORY + ' bytes, not enough memory!');
  1118. if (replacement) {
  1119. Module.printErr('Expected to get back a buffer of size ' + TOTAL_MEMORY + ' bytes, but instead got back a buffer of size ' + replacement.byteLength);
  1120. }
  1121. return false;
  1122. }
  1123. // everything worked
  1124. updateGlobalBuffer(replacement);
  1125. updateGlobalBufferViews();
  1126. Module.printErr('enlarged memory arrays from ' + OLD_TOTAL_MEMORY + ' to ' + TOTAL_MEMORY + ', took ' + (Date.now() - start) + ' ms (has ArrayBuffer.transfer? ' + (!!ArrayBuffer.transfer) + ')');
  1127. if (!Module["usingWasm"]) {
  1128. Module.printErr('Warning: Enlarging memory arrays, this is not fast! ' + [OLD_TOTAL_MEMORY, TOTAL_MEMORY]);
  1129. }
  1130. return true;
  1131. }
  1132. var byteLength;
  1133. try {
  1134. byteLength = Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength').get);
  1135. byteLength(new ArrayBuffer(4)); // can fail on older ie
  1136. } catch(e) { // can fail on older node/v8
  1137. byteLength = function(buffer) { return buffer.byteLength; };
  1138. }
  1139. var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;
  1140. var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 16777216;
  1141. if (TOTAL_MEMORY < TOTAL_STACK) Module.printErr('TOTAL_MEMORY should be larger than TOTAL_STACK, was ' + TOTAL_MEMORY + '! (TOTAL_STACK=' + TOTAL_STACK + ')');
  1142. // Initialize the runtime's memory
  1143. // check for full engine support (use string 'subarray' to avoid closure compiler confusion)
  1144. assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']),
  1145. 'JS engine does not provide full typed array support');
  1146. // Use a provided buffer, if there is one, or else allocate a new one
  1147. if (Module['buffer']) {
  1148. buffer = Module['buffer'];
  1149. assert(buffer.byteLength === TOTAL_MEMORY, 'provided buffer should be ' + TOTAL_MEMORY + ' bytes, but it is ' + buffer.byteLength);
  1150. } else {
  1151. // Use a WebAssembly memory where available
  1152. {
  1153. buffer = new ArrayBuffer(TOTAL_MEMORY);
  1154. }
  1155. assert(buffer.byteLength === TOTAL_MEMORY);
  1156. }
  1157. updateGlobalBufferViews();
  1158. function getTotalMemory() {
  1159. return TOTAL_MEMORY;
  1160. }
  1161. // Endianness check (note: assumes compiler arch was little-endian)
  1162. HEAP32[0] = 0x63736d65; /* 'emsc' */
  1163. HEAP16[1] = 0x6373;
  1164. if (HEAPU8[2] !== 0x73 || HEAPU8[3] !== 0x63) throw 'Runtime error: expected the system to be little-endian!';
  1165. Module['HEAP'] = HEAP;
  1166. Module['buffer'] = buffer;
  1167. Module['HEAP8'] = HEAP8;
  1168. Module['HEAP16'] = HEAP16;
  1169. Module['HEAP32'] = HEAP32;
  1170. Module['HEAPU8'] = HEAPU8;
  1171. Module['HEAPU16'] = HEAPU16;
  1172. Module['HEAPU32'] = HEAPU32;
  1173. Module['HEAPF32'] = HEAPF32;
  1174. Module['HEAPF64'] = HEAPF64;
  1175. function callRuntimeCallbacks(callbacks) {
  1176. while(callbacks.length > 0) {
  1177. var callback = callbacks.shift();
  1178. if (typeof callback == 'function') {
  1179. callback();
  1180. continue;
  1181. }
  1182. var func = callback.func;
  1183. if (typeof func === 'number') {
  1184. if (callback.arg === undefined) {
  1185. Module['dynCall_v'](func);
  1186. } else {
  1187. Module['dynCall_vi'](func, callback.arg);
  1188. }
  1189. } else {
  1190. func(callback.arg === undefined ? null : callback.arg);
  1191. }
  1192. }
  1193. }
  1194. var __ATPRERUN__ = []; // functions called before the runtime is initialized
  1195. var __ATINIT__ = []; // functions called during startup
  1196. var __ATMAIN__ = []; // functions called when main() is to be run
  1197. var __ATEXIT__ = []; // functions called during shutdown
  1198. var __ATPOSTRUN__ = []; // functions called after the runtime has exited
  1199. var runtimeInitialized = false;
  1200. var runtimeExited = false;
  1201. function preRun() {
  1202. // compatibility - merge in anything from Module['preRun'] at this time
  1203. if (Module['preRun']) {
  1204. if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
  1205. while (Module['preRun'].length) {
  1206. addOnPreRun(Module['preRun'].shift());
  1207. }
  1208. }
  1209. callRuntimeCallbacks(__ATPRERUN__);
  1210. }
  1211. function ensureInitRuntime() {
  1212. checkStackCookie();
  1213. if (runtimeInitialized) return;
  1214. runtimeInitialized = true;
  1215. callRuntimeCallbacks(__ATINIT__);
  1216. }
  1217. function preMain() {
  1218. checkStackCookie();
  1219. callRuntimeCallbacks(__ATMAIN__);
  1220. }
  1221. function exitRuntime() {
  1222. checkStackCookie();
  1223. callRuntimeCallbacks(__ATEXIT__);
  1224. runtimeExited = true;
  1225. }
  1226. function postRun() {
  1227. checkStackCookie();
  1228. // compatibility - merge in anything from Module['postRun'] at this time
  1229. if (Module['postRun']) {
  1230. if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];
  1231. while (Module['postRun'].length) {
  1232. addOnPostRun(Module['postRun'].shift());
  1233. }
  1234. }
  1235. callRuntimeCallbacks(__ATPOSTRUN__);
  1236. }
  1237. function addOnPreRun(cb) {
  1238. __ATPRERUN__.unshift(cb);
  1239. }
  1240. Module["addOnPreRun"] = addOnPreRun;
  1241. function addOnInit(cb) {
  1242. __ATINIT__.unshift(cb);
  1243. }
  1244. Module["addOnInit"] = addOnInit;
  1245. function addOnPreMain(cb) {
  1246. __ATMAIN__.unshift(cb);
  1247. }
  1248. Module["addOnPreMain"] = addOnPreMain;
  1249. function addOnExit(cb) {
  1250. __ATEXIT__.unshift(cb);
  1251. }
  1252. Module["addOnExit"] = addOnExit;
  1253. function addOnPostRun(cb) {
  1254. __ATPOSTRUN__.unshift(cb);
  1255. }
  1256. Module["addOnPostRun"] = addOnPostRun;
  1257. // Tools
  1258. function intArrayFromString(stringy, dontAddNull, length /* optional */) {
  1259. var len = length > 0 ? length : lengthBytesUTF8(stringy)+1;
  1260. var u8array = new Array(len);
  1261. var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);
  1262. if (dontAddNull) u8array.length = numBytesWritten;
  1263. return u8array;
  1264. }
  1265. Module["intArrayFromString"] = intArrayFromString;
  1266. function intArrayToString(array) {
  1267. var ret = [];
  1268. for (var i = 0; i < array.length; i++) {
  1269. var chr = array[i];
  1270. if (chr > 0xFF) {
  1271. assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.');
  1272. chr &= 0xFF;
  1273. }
  1274. ret.push(String.fromCharCode(chr));
  1275. }
  1276. return ret.join('');
  1277. }
  1278. Module["intArrayToString"] = intArrayToString;
  1279. // Deprecated: This function should not be called because it is unsafe and does not provide
  1280. // a maximum length limit of how many bytes it is allowed to write. Prefer calling the
  1281. // function stringToUTF8Array() instead, which takes in a maximum length that can be used
  1282. // to be secure from out of bounds writes.
  1283. function writeStringToMemory(string, buffer, dontAddNull) {
  1284. Runtime.warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!');
  1285. var lastChar, end;
  1286. if (dontAddNull) {
  1287. // stringToUTF8Array always appends null. If we don't want to do that, remember the
  1288. // character that existed at the location where the null will be placed, and restore
  1289. // that after the write (below).
  1290. end = buffer + lengthBytesUTF8(string);
  1291. lastChar = HEAP8[end];
  1292. }
  1293. stringToUTF8(string, buffer, Infinity);
  1294. if (dontAddNull) HEAP8[end] = lastChar; // Restore the value under the null character.
  1295. }
  1296. Module["writeStringToMemory"] = writeStringToMemory;
  1297. function writeArrayToMemory(array, buffer) {
  1298. assert(array.length >= 0, 'writeArrayToMemory array must have a length (should be an array or typed array)')
  1299. HEAP8.set(array, buffer);
  1300. }
  1301. Module["writeArrayToMemory"] = writeArrayToMemory;
  1302. function writeAsciiToMemory(str, buffer, dontAddNull) {
  1303. for (var i = 0; i < str.length; ++i) {
  1304. assert(str.charCodeAt(i) === str.charCodeAt(i)&0xff);
  1305. HEAP8[((buffer++)>>0)]=str.charCodeAt(i);
  1306. }
  1307. // Null-terminate the pointer to the HEAP.
  1308. if (!dontAddNull) HEAP8[((buffer)>>0)]=0;
  1309. }
  1310. Module["writeAsciiToMemory"] = writeAsciiToMemory;
  1311. function unSign(value, bits, ignore) {
  1312. if (value >= 0) {
  1313. return value;
  1314. }
  1315. 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
  1316. : Math.pow(2, bits) + value;
  1317. }
  1318. function reSign(value, bits, ignore) {
  1319. if (value <= 0) {
  1320. return value;
  1321. }
  1322. var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32
  1323. : Math.pow(2, bits-1);
  1324. 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
  1325. // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors
  1326. // TODO: In i64 mode 1, resign the two parts separately and safely
  1327. value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts
  1328. }
  1329. return value;
  1330. }
  1331. // check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 )
  1332. if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) {
  1333. var ah = a >>> 16;
  1334. var al = a & 0xffff;
  1335. var bh = b >>> 16;
  1336. var bl = b & 0xffff;
  1337. return (al*bl + ((ah*bl + al*bh) << 16))|0;
  1338. };
  1339. Math.imul = Math['imul'];
  1340. if (!Math['clz32']) Math['clz32'] = function(x) {
  1341. x = x >>> 0;
  1342. for (var i = 0; i < 32; i++) {
  1343. if (x & (1 << (31 - i))) return i;
  1344. }
  1345. return 32;
  1346. };
  1347. Math.clz32 = Math['clz32']
  1348. if (!Math['trunc']) Math['trunc'] = function(x) {
  1349. return x < 0 ? Math.ceil(x) : Math.floor(x);
  1350. };
  1351. Math.trunc = Math['trunc'];
  1352. var Math_abs = Math.abs;
  1353. var Math_cos = Math.cos;
  1354. var Math_sin = Math.sin;
  1355. var Math_tan = Math.tan;
  1356. var Math_acos = Math.acos;
  1357. var Math_asin = Math.asin;
  1358. var Math_atan = Math.atan;
  1359. var Math_atan2 = Math.atan2;
  1360. var Math_exp = Math.exp;
  1361. var Math_log = Math.log;
  1362. var Math_sqrt = Math.sqrt;
  1363. var Math_ceil = Math.ceil;
  1364. var Math_floor = Math.floor;
  1365. var Math_pow = Math.pow;
  1366. var Math_imul = Math.imul;
  1367. var Math_fround = Math.fround;
  1368. var Math_round = Math.round;
  1369. var Math_min = Math.min;
  1370. var Math_clz32 = Math.clz32;
  1371. var Math_trunc = Math.trunc;
  1372. // A counter of dependencies for calling run(). If we need to
  1373. // do asynchronous work before running, increment this and
  1374. // decrement it. Incrementing must happen in a place like
  1375. // PRE_RUN_ADDITIONS (used by emcc to add file preloading).
  1376. // Note that you can add dependencies in preRun, even though
  1377. // it happens right before run - run will be postponed until
  1378. // the dependencies are met.
  1379. var runDependencies = 0;
  1380. var runDependencyWatcher = null;
  1381. var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled
  1382. var runDependencyTracking = {};
  1383. function getUniqueRunDependency(id) {
  1384. var orig = id;
  1385. while (1) {
  1386. if (!runDependencyTracking[id]) return id;
  1387. id = orig + Math.random();
  1388. }
  1389. return id;
  1390. }
  1391. function addRunDependency(id) {
  1392. runDependencies++;
  1393. if (Module['monitorRunDependencies']) {
  1394. Module['monitorRunDependencies'](runDependencies);
  1395. }
  1396. if (id) {
  1397. assert(!runDependencyTracking[id]);
  1398. runDependencyTracking[id] = 1;
  1399. if (runDependencyWatcher === null && typeof setInterval !== 'undefined') {
  1400. // Check for missing dependencies every few seconds
  1401. runDependencyWatcher = setInterval(function() {
  1402. if (ABORT) {
  1403. clearInterval(runDependencyWatcher);
  1404. runDependencyWatcher = null;
  1405. return;
  1406. }
  1407. var shown = false;
  1408. for (var dep in runDependencyTracking) {
  1409. if (!shown) {
  1410. shown = true;
  1411. Module.printErr('still waiting on run dependencies:');
  1412. }
  1413. Module.printErr('dependency: ' + dep);
  1414. }
  1415. if (shown) {
  1416. Module.printErr('(end of list)');
  1417. }
  1418. }, 10000);
  1419. }
  1420. } else {
  1421. Module.printErr('warning: run dependency added without ID');
  1422. }
  1423. }
  1424. Module["addRunDependency"] = addRunDependency;
  1425. function removeRunDependency(id) {
  1426. runDependencies--;
  1427. if (Module['monitorRunDependencies']) {
  1428. Module['monitorRunDependencies'](runDependencies);
  1429. }
  1430. if (id) {
  1431. assert(runDependencyTracking[id]);
  1432. delete runDependencyTracking[id];
  1433. } else {
  1434. Module.printErr('warning: run dependency removed without ID');
  1435. }
  1436. if (runDependencies == 0) {
  1437. if (runDependencyWatcher !== null) {
  1438. clearInterval(runDependencyWatcher);
  1439. runDependencyWatcher = null;
  1440. }
  1441. if (dependenciesFulfilled) {
  1442. var callback = dependenciesFulfilled;
  1443. dependenciesFulfilled = null;
  1444. callback(); // can add another dependenciesFulfilled
  1445. }
  1446. }
  1447. }
  1448. Module["removeRunDependency"] = removeRunDependency;
  1449. Module["preloadedImages"] = {}; // maps url to image data
  1450. Module["preloadedAudios"] = {}; // maps url to audio data
  1451. var memoryInitializer = null;
  1452. var /* show errors on likely calls to FS when it was not included */ FS = {
  1453. error: function() {
  1454. abort('Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1');
  1455. },
  1456. init: function() { FS.error() },
  1457. createDataFile: function() { FS.error() },
  1458. createPreloadedFile: function() { FS.error() },
  1459. createLazyFile: function() { FS.error() },
  1460. open: function() { FS.error() },
  1461. mkdev: function() { FS.error() },
  1462. registerDevice: function() { FS.error() },
  1463. analyzePath: function() { FS.error() },
  1464. loadFilesFromDB: function() { FS.error() },
  1465. ErrnoError: function ErrnoError() { FS.error() },
  1466. };
  1467. Module['FS_createDataFile'] = FS.createDataFile;
  1468. Module['FS_createPreloadedFile'] = FS.createPreloadedFile;
  1469. // === Body ===
  1470. var ASM_CONSTS = [function($0, $1) { { Module.printErr('bad name in getProcAddress: ' + [Pointer_stringify($0), Pointer_stringify($1)]); } }];
  1471. function _emscripten_asm_const_iii(code, a0, a1) {
  1472. return ASM_CONSTS[code](a0, a1);
  1473. }
  1474. STATIC_BASE = 8;
  1475. STATICTOP = STATIC_BASE + 19552;
  1476. /* global initializers */ __ATINIT__.push();
  1477. /* memory initializer */ allocate([34,86,0,0,34,86,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,176,1,0,0,0,0,0,0,0,0,0,32,37,249,142,0,10,2,0,0,128,190,125,95,244,125,31,160,242,43,74,30,9,82,8,0,64,34,65,80,20,4,16,32,32,41,46,18,8,34,8,0,32,34,65,80,20,4,16,32,32,249,16,76,8,250,62,60,16,34,125,222,247,125,16,32,32,161,232,50,8,34,8,0,8,34,5,16,4,69,16,0,240,163,164,50,8,82,8,0,4,34,5,16,4,69,16,32,32,249,226,94,8,2,0,129,2,62,125,31,244,125,16,0,0,32,0,0,176,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,15,0,192,15,224,247,251,125,126,191,95,232,190,80,0,162,8,8,68,232,47,20,10,133,2,129,80,72,160,80,0,162,40,228,73,40,40,20,10,132,2,129,64,72,160,72,0,190,15,2,16,175,235,247,9,132,62,159,216,79,160,71,0,34,136,228,9,161,42,20,10,132,2,129,80,72,160,72,0,34,40,8,4,160,47,20,10,133,2,129,80,72,162,80,0,190,143,0,0,33,32,244,251,125,126,129,95,232,156,208,7,0,128,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,1,12,0,130,66,191,223,239,247,251,11,5,5,133,66,191,4,72,0,198,66,161,80,40,20,64,8,5,37,133,66,160,8,168,0,170,70,161,80,40,20,64,8,5,37,133,66,144,16,8,0,146,74,161,95,232,247,67,8,5,37,121,126,136,32,8,0,130,82,161,64,40,1,66,8,137,36,133,64,132,64,8,0,130,98,161,64,42,2,66,8,81,36,133,64,130,128,8,0,130,66,191,192,47,244,67,248,33,252,133,126,191,0,9,62,0,0,0,0,4,0,0,0,0,0,0,0,128,1,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,0,4,0,32,72,65,0,0,0,0,0,8,0,0,4,4,0,4,60,32,0,65,0,0,0,0,0,8,0,0,240,125,223,247,133,239,75,81,190,239,251,190,239,59,81,4,0,69,65,20,133,40,74,73,170,40,138,162,32,8,81,4,240,69,65,244,157,40,74,71,170,40,138,162,224,11,81,4,16,69,65,20,132,40,74,73,170,40,138,162,0,10,145,2,240,125,223,247,133,47,74,209,170,232,251,190,224,123,31,1,0,0,0,0,4,8,64,0,0,0,8,32,0,0,0,0,0,0,0,0,132,15,96,0,0,0,8,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172,1,15,0,0,0,0,0,0,0,0,0,0,0,0,0,36,1,9,0,0,0,0,0,0,0,0,0,6,0,0,0,36,1,9,0,0,0,0,0,0,0,128,16,9,162,40,250,36,1,9,0,0,0,0,0,0,0,0,62,1,42,37,66,34,82,9,0,0,0,0,0,0,0,128,138,3,42,34,34,36,41,9,0,0,0,0,0,0,0,128,10,1,42,37,18,36,1,9,0,0,0,0,0,0,0,128,10,1,190,232,251,36,1,9,0,0,0,0,0,0,0,128,190,14,0,0,2,172,1,15,0,0,0,0,0,0,0,128,4,0,0,224,3,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,14,184,67,132,3,58,32,0,128,160,190,2,32,0,0,240,138,32,82,196,2,43,32,4,34,145,2,248,59,0,240,7,142,56,75,228,2,58,32,2,28,138,30,8,42,233,17,4,224,11,66,244,2,130,36,1,20,4,20,232,186,4,209,5,128,184,195,231,10,58,137,0,28,14,60,40,2,9,80,4,128,0,64,196,2,128,68,0,34,132,32,232,2,0,80,4,0,0,64,128,2,0,32,5,0,142,62,8,2,0,16,4,224,3,64,128,66,0,0,7,0,132,0,248,3,0,240,7,0,0,64,128,34,0,0,4,0,0,0,0,0,0,0,0,0,0,64,128,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,7,128,0,194,160,72,24,0,0,1,132,33,9,146,2,66,38,4,1,33,81,0,0,127,63,2,66,2,16,41,0,34,20,192,239,247,251,253,126,9,161,223,239,247,187,187,3,18,15,68,40,20,10,133,66,9,129,64,32,16,16,17,1,8,4,68,40,20,10,133,66,127,129,64,32,16,16,17,1,4,130,199,239,247,251,253,126,9,129,207,231,243,17,17,1,50,169,80,40,20,10,133,66,9,161,64,32,16,16,17,1,64,184,80,40,20,10,133,66,121,191,223,239,247,187,187,3,32,160,31,0,0,0,0,0,0,16,0,0,0,0,0,0,112,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,2,8,131,34,1,0,2,8,67,2,1,0,1,1,124,20,4,132,68,1,0,32,4,132,4,128,8,63,130,0,132,66,191,223,239,247,3,126,161,80,40,20,10,33,0,0,132,70,161,80,40,20,138,82,161,80,40,20,122,161,239,3,158,74,161,80,40,20,82,82,161,80,40,20,74,31,8,2,132,82,161,80,40,20,34,74,161,80,40,244,75,161,239,3,132,98,161,80,40,20,82,74,161,80,40,4,122,161,40,2,124,66,191,223,239,247,139,126,191,223,239,247,11,189,239,3,0,0,0,0,0,0,0,4,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,5,32,0,0,4,132,0,34,129,69,17,16,66,1,0,148,66,81,0,0,8,66,81,148,42,162,32,8,165,80,0,0,0,32,0,0,0,0,0,0,0,5,0,0,0,0,8,190,239,251,254,251,190,239,251,20,145,235,251,190,239,251,0,32,8,130,32,10,162,40,138,20,145,40,138,162,40,138,62,190,239,251,254,11,190,239,251,20,145,40,138,162,40,138,0,162,40,138,34,8,130,32,8,20,145,40,138,162,40,138,8,190,239,251,254,251,190,239,251,20,145,47,250,190,239,251,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,33,0,4,0,0,0,0,0,0,0,0,0,0,0,0,130,80,20,2,20,0,0,0,0,0,0,0,0,0,0,16,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,190,40,138,162,40,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,168,34,0,0,0,0,0,0,0,0,0,0,170,40,138,162,232,34,0,0,0,0,0,0,0,0,0,0,190,239,251,190,47,62,0,0,0,0,0,0,0,0,0,0,4,0,0,0,40,32,0,0,0,0,0,0,0,0,0,0,0,0,0,128,15,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,2,0,0,0,7,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,1,0,0,0,2,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,7,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,7,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,1,0,0,0,7,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,4,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,9,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,3,0,0,0,5,0,0,0,255,255,255,255,0,1,0,0,255,255,255,255,0,0,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,12,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,91,72,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,12,0,0,114,97,121,108,105,98,32,91,97,117,100,105,111,93,32,101,120,97,109,112,108,101,32,45,32,114,97,119,32,97,117,100,105,111,32,115,116,114,101,97,109,105,110,103,0,83,73,78,69,32,87,65,86,69,32,83,72,79,85,76,68,32,66,69,32,80,76,65,89,73,78,71,33,0,73,110,105,116,105,97,108,105,122,105,110,103,32,114,97,121,108,105,98,32,40,118,49,46,55,46,48,41,0,35,99,97,110,118,97,115,0,84,97,114,103,101,116,32,116,105,109,101,32,112,101,114,32,102,114,97,109,101,58,32,37,48,50,46,48,51,102,32,109,105,108,108,105,115,101,99,111,110,100,115,0,69,115,99,97,112,101,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,102,117,108,108,115,99,114,101,101,110,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,67,97,110,118,97,115,32,115,99,97,108,101,100,32,116,111,32,119,105,110,100,111,119,101,100,46,32,69,108,101,109,101,110,116,83,105,122,101,58,32,40,37,105,120,37,105,41,44,32,83,99,114,101,101,110,83,105,122,101,40,37,105,120,37,105,41,0,91,84,69,88,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,102,111,110,116,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,69,84,67,50,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,84,101,120,116,117,114,101,32,102,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,84,101,120,116,117,114,101,32,99,114,101,97,116,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,37,105,120,37,105,41,0,84,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,99,114,101,97,116,101,100,0,73,109,97,103,101,32,100,97,116,97,32,102,111,114,109,97,116,32,105,115,32,99,111,109,112,114,101,115,115,101,100,44,32,99,97,110,32,110,111,116,32,98,101,32,99,111,110,118,101,114,116,101,100,0,70,111,114,109,97,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,112,105,120,101,108,32,100,97,116,97,32,114,101,116,114,105,101,118,97,108,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,71,76,70,87,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,77,83,65,65,32,120,52,0,67,108,111,115,101,115,116,32,102,117,108,108,115,99,114,101,101,110,32,118,105,100,101,111,109,111,100,101,58,32,37,105,32,120,32,37,105,0,71,76,70,87,32,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,87,105,110,100,111,119,0,68,105,115,112,108,97,121,32,100,101,118,105,99,101,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,82,101,110,100,101,114,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,83,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,86,105,101,119,112,111,114,116,32,111,102,102,115,101,116,115,58,32,37,105,44,32,37,105,0,84,114,121,105,110,103,32,116,111,32,101,110,97,98,108,101,32,86,83,89,78,67,0,71,80,85,58,32,86,101,110,100,111,114,58,32,32,32,37,115,0,71,80,85,58,32,82,101,110,100,101,114,101,114,58,32,37,115,0,71,80,85,58,32,86,101,114,115,105,111,110,58,32,32,37,115,0,71,80,85,58,32,71,76,83,76,58,32,32,32,32,32,37,115,0,32,0,78,117,109,98,101,114,32,111,102,32,115,117,112,112,111,114,116,101,100,32,101,120,116,101,110,115,105,111,110,115,58,32,37,105,0,71,76,95,79,69,83,95,118,101,114,116,101,120,95,97,114,114,97,121,95,111,98,106,101,99,116,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,79,69,83,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,79,69,83,0,71,76,95,79,69,83,95,116,101,120,116,117,114,101,95,110,112,111,116,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,115,51,116,99,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,87,69,66,75,73,84,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,115,51,116,99,0,71,76,95,79,69,83,95,99,111,109,112,114,101,115,115,101,100,95,69,84,67,49,95,82,71,66,56,95,116,101,120,116,117,114,101,0,71,76,95,87,69,66,71,76,95,99,111,109,112,114,101,115,115,101,100,95,116,101,120,116,117,114,101,95,101,116,99,49,0,71,76,95,65,82,66,95,69,83,51,95,99,111,109,112,97,116,105,98,105,108,105,116,121,0,71,76,95,73,77,71,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,112,118,114,116,99,0,71,76,95,75,72,82,95,116,101,120,116,117,114,101,95,99,111,109,112,114,101,115,115,105,111,110,95,97,115,116,99,95,104,100,114,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,102,105,108,116,101,114,95,97,110,105,115,111,116,114,111,112,105,99,0,71,76,95,69,88,84,95,116,101,120,116,117,114,101,95,109,105,114,114,111,114,95,99,108,97,109,112,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,86,65,79,32,102,117,110,99,116,105,111,110,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,69,88,84,69,78,83,73,79,78,93,32,86,65,79,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,86,65,79,32,117,115,97,103,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,100,101,116,101,99,116,101,100,44,32,102,117,108,108,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,78,80,79,84,32,116,101,120,116,117,114,101,115,32,101,120,116,101,110,115,105,111,110,32,110,111,116,32,102,111,117,110,100,44,32,108,105,109,105,116,101,100,32,78,80,79,84,32,115,117,112,112,111,114,116,32,40,110,111,45,109,105,112,109,97,112,115,44,32,110,111,45,114,101,112,101,97,116,41,0,91,69,88,84,69,78,83,73,79,78,93,32,68,88,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,49,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,69,84,67,50,47,69,65,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,80,86,82,84,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,83,84,67,32,99,111,109,112,114,101,115,115,101,100,32,116,101,120,116,117,114,101,115,32,115,117,112,112,111,114,116,101,100,0,91,69,88,84,69,78,83,73,79,78,93,32,65,110,105,115,111,116,114,111,112,105,99,32,116,101,120,116,117,114,101,115,32,102,105,108,116,101,114,105,110,103,32,115,117,112,112,111,114,116,101,100,32,40,109,97,120,58,32,37,46,48,102,88,41,0,91,69,88,84,69,78,83,73,79,78,93,32,67,108,97,109,112,32,109,105,114,114,111,114,32,119,114,97,112,32,116,101,120,116,117,114,101,32,109,111,100,101,32,115,117,112,112,111,114,116,101,100,0,91,84,69,88,32,73,68,32,37,105,93,32,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,66,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,79,112,101,110,71,76,32,100,101,102,97,117,108,116,32,115,116,97,116,101,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,67,80,85,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,44,32,116,114,105,97,110,103,108,101,115,44,32,113,117,97,100,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,108,105,110,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,116,114,105,97,110,103,108,101,115,41,0,91,86,65,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,65,79,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,91,86,66,79,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,98,117,102,102,101,114,115,32,86,66,79,115,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,113,117,97,100,115,41,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,51,32,118,101,114,116,101,120,80,111,115,105,116,105,111,110,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,50,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,32,32,32,32,10,97,116,116,114,105,98,117,116,101,32,118,101,99,52,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,109,97,116,52,32,109,118,112,77,97,116,114,105,120,59,32,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,102,114,97,103,84,101,120,67,111,111,114,100,32,61,32,118,101,114,116,101,120,84,101,120,67,111,111,114,100,59,32,10,32,32,32,32,102,114,97,103,67,111,108,111,114,32,61,32,118,101,114,116,101,120,67,111,108,111,114,59,32,32,32,32,32,32,32,10,32,32,32,32,103,108,95,80,111,115,105,116,105,111,110,32,61,32,109,118,112,77,97,116,114,105,120,42,118,101,99,52,40,118,101,114,116,101,120,80,111,115,105,116,105,111,110,44,32,49,46,48,41,59,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,35,118,101,114,115,105,111,110,32,49,48,48,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,112,114,101,99,105,115,105,111,110,32,109,101,100,105,117,109,112,32,102,108,111,97,116,59,32,32,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,50,32,102,114,97,103,84,101,120,67,111,111,114,100,59,32,32,32,32,32,32,32,32,32,10,118,97,114,121,105,110,103,32,118,101,99,52,32,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,115,97,109,112,108,101,114,50,68,32,116,101,120,116,117,114,101,48,59,32,32,32,32,32,32,32,32,10,117,110,105,102,111,114,109,32,118,101,99,52,32,99,111,108,68,105,102,102,117,115,101,59,32,32,32,32,32,32,32,32,32,32,32,10,118,111,105,100,32,109,97,105,110,40,41,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,123,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,32,32,32,32,118,101,99,52,32,116,101,120,101,108,67,111,108,111,114,32,61,32,116,101,120,116,117,114,101,50,68,40,116,101,120,116,117,114,101,48,44,32,102,114,97,103,84,101,120,67,111,111,114,100,41,59,32,10,32,32,32,32,103,108,95,70,114,97,103,67,111,108,111,114,32,61,32,116,101,120,101,108,67,111,108,111,114,42,99,111,108,68,105,102,102,117,115,101,42,102,114,97,103,67,111,108,111,114,59,32,32,32,32,32,32,10,125,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,68,101,102,97,117,108,116,32,115,104,97,100,101,114,32,99,111,117,108,100,32,110,111,116,32,98,101,32,108,111,97,100,101,100,0,118,101,114,116,101,120,80,111,115,105,116,105,111,110,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,0,118,101,114,116,101,120,84,101,120,67,111,111,114,100,50,0,118,101,114,116,101,120,78,111,114,109,97,108,0,118,101,114,116,101,120,84,97,110,103,101,110,116,0,118,101,114,116,101,120,67,111,108,111,114,0,109,118,112,77,97,116,114,105,120,0,99,111,108,68,105,102,102,117,115,101,0,99,111,108,65,109,98,105,101,110,116,0,99,111,108,83,112,101,99,117,108,97,114,0,116,101,120,116,117,114,101,48,0,116,101,120,116,117,114,101,49,0,116,101,120,116,117,114,101,50,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,118,101,114,116,101,120,32,115,104,97,100,101,114,46,46,46,0,37,115,0,91,86,83,72,68,82,32,73,68,32,37,105,93,32,86,101,114,116,101,120,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,99,111,109,112,105,108,101,32,102,114,97,103,109,101,110,116,32,115,104,97,100,101,114,46,46,46,0,91,70,83,72,68,82,32,73,68,32,37,105,93,32,70,114,97,103,109,101,110,116,32,115,104,97,100,101,114,32,99,111,109,112,105,108,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,83,72,68,82,32,73,68,32,37,105,93,32,70,97,105,108,101,100,32,116,111,32,108,105,110,107,32,115,104,97,100,101,114,32,112,114,111,103,114,97,109,46,46,46,0,91,83,72,68,82,32,73,68,32,37,105,93,32,83,104,97,100,101,114,32,112,114,111,103,114,97,109,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,68,79,87,78,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,32,40,37,105,120,37,105,41,32,105,115,32,98,105,103,103,101,114,32,116,104,97,110,32,100,105,115,112,108,97,121,32,115,105,122,101,32,40,37,105,120,37,105,41,0,68,111,119,110,115,99,97,108,101,32,109,97,116,114,105,120,32,103,101,110,101,114,97,116,101,100,44,32,99,111,110,116,101,110,116,32,119,105,108,108,32,98,101,32,114,101,110,100,101,114,101,100,32,97,116,58,32,37,105,32,120,32,37,105,0,85,80,83,67,65,76,73,78,71,58,32,82,101,113,117,105,114,101,100,32,115,99,114,101,101,110,32,115,105,122,101,58,32,37,105,32,120,32,37,105,32,45,62,32,68,105,115,112,108,97,121,32,115,105,122,101,58,32,37,105,32,120,32,37,105,0,91,71,76,70,87,51,32,69,114,114,111,114,93,32,67,111,100,101,58,32,37,105,32,68,101,99,114,105,112,116,105,111,110,58,32,37,115,0,73,78,70,79,58,32,0,87,65,82,78,73,78,71,58,32,0,87,105,110,100,111,119,32,99,108,111,115,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,40,98,97,115,101,32,119,104,105,116,101,32,116,101,120,116,117,114,101,41,32,102,114,111,109,32,86,82,65,77,0,91,84,69,88,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,116,101,120,116,117,114,101,32,100,97,116,97,32,102,114,111,109,32,86,82,65,77,32,40,71,80,85,41,0,83,116,97,99,107,32,66,117,102,102,101,114,32,79,118,101,114,102,108,111,119,32,40,77,65,88,32,37,105,32,77,97,116,114,105,120,41,0,77,65,88,95,76,73,78,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,84,82,73,65,78,71,76,69,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,77,65,88,95,81,85,65,68,83,95,66,65,84,67,72,32,111,118,101,114,102,108,111,119,0,65,117,100,105,111,32,100,101,118,105,99,101,32,99,111,117,108,100,32,110,111,116,32,98,101,32,111,112,101,110,101,100,0,67,111,117,108,100,32,110,111,116,32,105,110,105,116,105,97,108,105,122,101,32,97,117,100,105,111,32,99,111,110,116,101,120,116,0,65,117,100,105,111,32,100,101,118,105,99,101,32,97,110,100,32,99,111,110,116,101,120,116,32,105,110,105,116,105,97,108,105,122,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,58,32,37,115,0,67,111,117,108,100,32,110,111,116,32,103,101,116,32,99,117,114,114,101,110,116,32,97,117,100,105,111,32,99,111,110,116,101,120,116,32,102,111,114,32,99,108,111,115,105,110,103,0,65,117,100,105,111,32,100,101,118,105,99,101,32,99,108,111,115,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,0,77,111,110,111,0,83,116,101,114,101,111,0,73,110,105,116,32,97,117,100,105,111,32,115,116,114,101,97,109,58,32,78,117,109,98,101,114,32,111,102,32,99,104,97,110,110,101,108,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,58,32,37,105,0,73,110,105,116,32,97,117,100,105,111,32,115,116,114,101,97,109,58,32,83,97,109,112,108,101,32,115,105,122,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,58,32,37,105,0,91,65,85,68,32,73,68,32,37,105,93,32,65,117,100,105,111,32,115,116,114,101,97,109,32,108,111,97,100,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,32,40,37,105,32,72,122,44,32,37,105,32,98,105,116,44,32,37,115,41,0,91,65,85,68,32,73,68,32,37,105,93,32,85,110,108,111,97,100,101,100,32,97,117,100,105,111,32,115,116,114,101,97,109,32,100,97,116,97,0,69,88,84,0,65,82,66,0,79,69,83,0,65,78,71,76,69,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,80,114,111,103,114,97,109,0,103,108,85,115,101,80,114,111,103,114,97,109,79,98,106,101,99,116,0,103,108,85,115,101,80,114,111,103,114,97,109,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,79,98,106,101,99,116,0,103,108,67,114,101,97,116,101,83,104,97,100,101,114,0,103,108,65,116,116,97,99,104,79,98,106,101,99,116,0,103,108,65,116,116,97,99,104,83,104,97,100,101,114,0,103,108,68,101,116,97,99,104,79,98,106,101,99,116,0,103,108,68,101,116,97,99,104,83,104,97,100,101,114,0,103,108,80,105,120,101,108,83,116,111,114,101,105,0,103,108,71,101,116,83,116,114,105,110,103,0,103,108,71,101,116,73,110,116,101,103,101,114,118,0,103,108,71,101,116,70,108,111,97,116,118,0,103,108,71,101,116,66,111,111,108,101,97,110,118,0,103,108,71,101,110,84,101,120,116,117,114,101,115,0,103,108,68,101,108,101,116,101,84,101,120,116,117,114,101,115,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,109,112,114,101,115,115,101,100,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,84,101,120,73,109,97,103,101,50,68,0,103,108,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,82,101,97,100,80,105,120,101,108,115,0,103,108,66,105,110,100,84,101,120,116,117,114,101,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,71,101,116,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,118,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,84,101,120,116,117,114,101,0,103,108,71,101,110,66,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,66,117,102,102,101,114,115,0,103,108,71,101,116,66,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,66,117,102,102,101,114,68,97,116,97,0,103,108,66,117,102,102,101,114,83,117,98,68,97,116,97,0,103,108,73,115,66,117,102,102,101,114,0,103,108,71,101,110,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,82,101,110,100,101,114,98,117,102,102,101,114,115,0,103,108,66,105,110,100,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,82,101,110,100,101,114,98,117,102,102,101,114,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,71,101,116,85,110,105,102,111,114,109,102,118,0,103,108,71,101,116,85,110,105,102,111,114,109,105,118,0,103,108,71,101,116,85,110,105,102,111,114,109,76,111,99,97,116,105,111,110,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,102,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,105,118,0,103,108,71,101,116,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,118,0,103,108,71,101,116,65,99,116,105,118,101,85,110,105,102,111,114,109,0,103,108,85,110,105,102,111,114,109,49,102,0,103,108,85,110,105,102,111,114,109,50,102,0,103,108,85,110,105,102,111,114,109,51,102,0,103,108,85,110,105,102,111,114,109,52,102,0,103,108,85,110,105,102,111,114,109,49,105,0,103,108,85,110,105,102,111,114,109,50,105,0,103,108,85,110,105,102,111,114,109,51,105,0,103,108,85,110,105,102,111,114,109,52,105,0,103,108,85,110,105,102,111,114,109,49,105,118,0,103,108,85,110,105,102,111,114,109,50,105,118,0,103,108,85,110,105,102,111,114,109,51,105,118,0,103,108,85,110,105,102,111,114,109,52,105,118,0,103,108,85,110,105,102,111,114,109,49,102,118,0,103,108,85,110,105,102,111,114,109,50,102,118,0,103,108,85,110,105,102,111,114,109,51,102,118,0,103,108,85,110,105,102,111,114,109,52,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,50,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,51,102,118,0,103,108,85,110,105,102,111,114,109,77,97,116,114,105,120,52,102,118,0,103,108,66,105,110,100,66,117,102,102,101,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,118,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,118,0,103,108,71,101,116,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,71,101,116,65,99,116,105,118,101,65,116,116,114,105,98,0,103,108,68,101,108,101,116,101,83,104,97,100,101,114,0,103,108,71,101,116,65,116,116,97,99,104,101,100,83,104,97,100,101,114,115,0,103,108,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,71,101,116,83,104,97,100,101,114,83,111,117,114,99,101,0,103,108,67,111,109,112,105,108,101,83,104,97,100,101,114,0,103,108,71,101,116,83,104,97,100,101,114,73,110,102,111,76,111,103,0,103,108,71,101,116,83,104,97,100,101,114,105,118,0,103,108,71,101,116,80,114,111,103,114,97,109,105,118,0,103,108,73,115,83,104,97,100,101,114,0,103,108,68,101,108,101,116,101,80,114,111,103,114,97,109,0,103,108,71,101,116,83,104,97,100,101,114,80,114,101,99,105,115,105,111,110,70,111,114,109,97,116,0,103,108,76,105,110,107,80,114,111,103,114,97,109,0,103,108,71,101,116,80,114,111,103,114,97,109,73,110,102,111,76,111,103,0,103,108,86,97,108,105,100,97,116,101,80,114,111,103,114,97,109,0,103,108,73,115,80,114,111,103,114,97,109,0,103,108,66,105,110,100,65,116,116,114,105,98,76,111,99,97,116,105,111,110,0,103,108,66,105,110,100,70,114,97,109,101,98,117,102,102,101,114,0,103,108,71,101,110,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,68,101,108,101,116,101,70,114,97,109,101,98,117,102,102,101,114,115,0,103,108,70,114,97,109,101,98,117,102,102,101,114,82,101,110,100,101,114,98,117,102,102,101,114,0,103,108,70,114,97,109,101,98,117,102,102,101,114,84,101,120,116,117,114], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
  1478. /* memory initializer */ allocate([101,50,68,0,103,108,71,101,116,70,114,97,109,101,98,117,102,102,101,114,65,116,116,97,99,104,109,101,110,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,73,115,70,114,97,109,101,98,117,102,102,101,114,0,103,108,68,101,108,101,116,101,79,98,106,101,99,116,0,103,108,71,101,116,79,98,106,101,99,116,80,97,114,97,109,101,116,101,114,105,118,0,103,108,71,101,116,73,110,102,111,76,111,103,0,103,108,66,105,110,100,80,114,111,103,114,97,109,0,103,108,71,101,116,80,111,105,110,116,101,114,118,0,103,108,68,114,97,119,82,97,110,103,101,69,108,101,109,101,110,116,115,0,103,108,69,110,97,98,108,101,67,108,105,101,110,116,83,116,97,116,101,0,103,108,86,101,114,116,101,120,80,111,105,110,116,101,114,0,103,108,84,101,120,67,111,111,114,100,80,111,105,110,116,101,114,0,103,108,78,111,114,109,97,108,80,111,105,110,116,101,114,0,103,108,67,111,108,111,114,80,111,105,110,116,101,114,0,103,108,67,108,105,101,110,116,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,71,101,110,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,68,101,108,101,116,101,86,101,114,116,101,120,65,114,114,97,121,115,0,103,108,66,105,110,100,86,101,114,116,101,120,65,114,114,97,121,0,103,108,77,97,116,114,105,120,77,111,100,101,0,103,108,76,111,97,100,73,100,101,110,116,105,116,121,0,103,108,76,111,97,100,77,97,116,114,105,120,102,0,103,108,70,114,117,115,116,117,109,0,103,108,82,111,116,97,116,101,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,80,111,105,110,116,101,114,0,103,108,69,110,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,105,115,97,98,108,101,86,101,114,116,101,120,65,116,116,114,105,98,65,114,114,97,121,0,103,108,68,114,97,119,65,114,114,97,121,115,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,0,103,108,83,104,97,100,101,114,66,105,110,97,114,121,0,103,108,82,101,108,101,97,115,101,83,104,97,100,101,114,67,111,109,112,105,108,101,114,0,103,108,71,101,116,69,114,114,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,68,105,118,105,115,111,114,0,103,108,68,114,97,119,65,114,114,97,121,115,73,110,115,116,97,110,99,101,100,0,103,108,68,114,97,119,69,108,101,109,101,110,116,115,73,110,115,116,97,110,99,101,100,0,103,108,70,105,110,105,115,104,0,103,108,70,108,117,115,104,0,103,108,67,108,101,97,114,68,101,112,116,104,0,103,108,67,108,101,97,114,68,101,112,116,104,102,0,103,108,68,101,112,116,104,70,117,110,99,0,103,108,69,110,97,98,108,101,0,103,108,68,105,115,97,98,108,101,0,103,108,70,114,111,110,116,70,97,99,101,0,103,108,67,117,108,108,70,97,99,101,0,103,108,67,108,101,97,114,0,103,108,76,105,110,101,87,105,100,116,104,0,103,108,67,108,101,97,114,83,116,101,110,99,105,108,0,103,108,68,101,112,116,104,77,97,115,107,0,103,108,83,116,101,110,99,105,108,77,97,115,107,0,103,108,67,104,101,99,107,70,114,97,109,101,98,117,102,102,101,114,83,116,97,116,117,115,0,103,108,71,101,110,101,114,97,116,101,77,105,112,109,97,112,0,103,108,65,99,116,105,118,101,84,101,120,116,117,114,101,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,0,103,108,73,115,69,110,97,98,108,101,100,0,103,108,66,108,101,110,100,70,117,110,99,0,103,108,66,108,101,110,100,69,113,117,97,116,105,111,110,83,101,112,97,114,97,116,101,0,103,108,68,101,112,116,104,82,97,110,103,101,0,103,108,68,101,112,116,104,82,97,110,103,101,102,0,103,108,83,116,101,110,99,105,108,77,97,115,107,83,101,112,97,114,97,116,101,0,103,108,72,105,110,116,0,103,108,80,111,108,121,103,111,110,79,102,102,115,101,116,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,49,102,0,103,108,83,97,109,112,108,101,67,111,118,101,114,97,103,101,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,0,103,108,84,101,120,80,97,114,97,109,101,116,101,114,102,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,50,102,0,103,108,83,116,101,110,99,105,108,70,117,110,99,0,103,108,83,116,101,110,99,105,108,79,112,0,103,108,86,105,101,119,112,111,114,116,0,103,108,67,108,101,97,114,67,111,108,111,114,0,103,108,83,99,105,115,115,111,114,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,51,102,0,103,108,67,111,108,111,114,77,97,115,107,0,103,108,82,101,110,100,101,114,98,117,102,102,101,114,83,116,111,114,97,103,101,0,103,108,66,108,101,110,100,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,66,108,101,110,100,67,111,108,111,114,0,103,108,83,116,101,110,99,105,108,70,117,110,99,83,101,112,97,114,97,116,101,0,103,108,83,116,101,110,99,105,108,79,112,83,101,112,97,114,97,116,101,0,103,108,86,101,114,116,101,120,65,116,116,114,105,98,52,102,0,103,108,67,111,112,121,84,101,120,73,109,97,103,101,50,68,0,103,108,67,111,112,121,84,101,120,83,117,98,73,109,97,103,101,50,68,0,103,108,68,114,97,119,66,117,102,102,101,114,115,0,123,32,77,111,100,117,108,101,46,112,114,105,110,116,69,114,114,40,39,98,97,100,32,110,97,109,101,32,105,110,32,103,101,116,80,114,111,99,65,100,100,114,101,115,115,58,32,39,32,43,32,91,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,48,41,44,32,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,49,41,93,41,59,32,125,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);
  1479. /* no memory initializer */
  1480. var tempDoublePtr = STATICTOP; STATICTOP += 16;
  1481. assert(tempDoublePtr % 8 == 0);
  1482. function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much
  1483. HEAP8[tempDoublePtr] = HEAP8[ptr];
  1484. HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
  1485. HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
  1486. HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
  1487. }
  1488. function copyTempDouble(ptr) {
  1489. HEAP8[tempDoublePtr] = HEAP8[ptr];
  1490. HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
  1491. HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
  1492. HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
  1493. HEAP8[tempDoublePtr+4] = HEAP8[ptr+4];
  1494. HEAP8[tempDoublePtr+5] = HEAP8[ptr+5];
  1495. HEAP8[tempDoublePtr+6] = HEAP8[ptr+6];
  1496. HEAP8[tempDoublePtr+7] = HEAP8[ptr+7];
  1497. }
  1498. // {{PRE_LIBRARY}}
  1499. var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],programInfos:{},stringCache:{},tempFixedLengthArray:[],packAlignment:4,unpackAlignment:4,init:function () {
  1500. GL.miniTempBuffer = new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);
  1501. for (var i = 0; i < GL.MINI_TEMP_BUFFER_SIZE; i++) {
  1502. GL.miniTempBufferViews[i] = GL.miniTempBuffer.subarray(0, i+1);
  1503. }
  1504. // For functions such as glDrawBuffers, glInvalidateFramebuffer and glInvalidateSubFramebuffer that need to pass a short array to the WebGL API,
  1505. // create a set of short fixed-length arrays to avoid having to generate any garbage when calling those functions.
  1506. for (var i = 0; i < 32; i++) {
  1507. GL.tempFixedLengthArray.push(new Array(i));
  1508. }
  1509. },recordError:function recordError(errorCode) {
  1510. if (!GL.lastError) {
  1511. GL.lastError = errorCode;
  1512. }
  1513. },getNewId:function (table) {
  1514. var ret = GL.counter++;
  1515. for (var i = table.length; i < ret; i++) {
  1516. table[i] = null;
  1517. }
  1518. return ret;
  1519. },MINI_TEMP_BUFFER_SIZE:256,miniTempBuffer:null,miniTempBufferViews:[0],getSource:function (shader, count, string, length) {
  1520. var source = '';
  1521. for (var i = 0; i < count; ++i) {
  1522. var frag;
  1523. if (length) {
  1524. var len = HEAP32[(((length)+(i*4))>>2)];
  1525. if (len < 0) {
  1526. frag = Pointer_stringify(HEAP32[(((string)+(i*4))>>2)]);
  1527. } else {
  1528. frag = Pointer_stringify(HEAP32[(((string)+(i*4))>>2)], len);
  1529. }
  1530. } else {
  1531. frag = Pointer_stringify(HEAP32[(((string)+(i*4))>>2)]);
  1532. }
  1533. source += frag;
  1534. }
  1535. return source;
  1536. },createContext:function (canvas, webGLContextAttributes) {
  1537. if (typeof webGLContextAttributes['majorVersion'] === 'undefined' && typeof webGLContextAttributes['minorVersion'] === 'undefined') {
  1538. webGLContextAttributes['majorVersion'] = 1;
  1539. webGLContextAttributes['minorVersion'] = 0;
  1540. }
  1541. var ctx;
  1542. var errorInfo = '?';
  1543. function onContextCreationError(event) {
  1544. errorInfo = event.statusMessage || errorInfo;
  1545. }
  1546. try {
  1547. canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false);
  1548. try {
  1549. if (webGLContextAttributes['majorVersion'] == 1 && webGLContextAttributes['minorVersion'] == 0) {
  1550. ctx = canvas.getContext("webgl", webGLContextAttributes) || canvas.getContext("experimental-webgl", webGLContextAttributes);
  1551. } else if (webGLContextAttributes['majorVersion'] == 2 && webGLContextAttributes['minorVersion'] == 0) {
  1552. ctx = canvas.getContext("webgl2", webGLContextAttributes) || canvas.getContext("experimental-webgl2", webGLContextAttributes);
  1553. } else {
  1554. throw 'Unsupported WebGL context version ' + majorVersion + '.' + minorVersion + '!'
  1555. }
  1556. } finally {
  1557. canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false);
  1558. }
  1559. if (!ctx) throw ':(';
  1560. } catch (e) {
  1561. Module.print('Could not create canvas: ' + [errorInfo, e, JSON.stringify(webGLContextAttributes)]);
  1562. return 0;
  1563. }
  1564. // possible GL_DEBUG entry point: ctx = wrapDebugGL(ctx);
  1565. if (!ctx) return 0;
  1566. return GL.registerContext(ctx, webGLContextAttributes);
  1567. },registerContext:function (ctx, webGLContextAttributes) {
  1568. var handle = GL.getNewId(GL.contexts);
  1569. var context = {
  1570. handle: handle,
  1571. attributes: webGLContextAttributes,
  1572. version: webGLContextAttributes['majorVersion'],
  1573. GLctx: ctx
  1574. };
  1575. // Store the created context object so that we can access the context given a canvas without having to pass the parameters again.
  1576. if (ctx.canvas) ctx.canvas.GLctxObject = context;
  1577. GL.contexts[handle] = context;
  1578. if (typeof webGLContextAttributes['enableExtensionsByDefault'] === 'undefined' || webGLContextAttributes['enableExtensionsByDefault']) {
  1579. GL.initExtensions(context);
  1580. }
  1581. return handle;
  1582. },makeContextCurrent:function (contextHandle) {
  1583. var context = GL.contexts[contextHandle];
  1584. if (!context) return false;
  1585. GLctx = Module.ctx = context.GLctx; // Active WebGL context object.
  1586. GL.currentContext = context; // Active Emscripten GL layer context object.
  1587. return true;
  1588. },getContext:function (contextHandle) {
  1589. return GL.contexts[contextHandle];
  1590. },deleteContext:function (contextHandle) {
  1591. if (GL.currentContext === GL.contexts[contextHandle]) GL.currentContext = null;
  1592. if (typeof JSEvents === 'object') JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas); // Release all JS event handlers on the DOM element that the GL context is associated with since the context is now deleted.
  1593. if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas) GL.contexts[contextHandle].GLctx.canvas.GLctxObject = undefined; // Make sure the canvas object no longer refers to the context object so there are no GC surprises.
  1594. GL.contexts[contextHandle] = null;
  1595. },initExtensions:function (context) {
  1596. // If this function is called without a specific context object, init the extensions of the currently active context.
  1597. if (!context) context = GL.currentContext;
  1598. if (context.initExtensionsDone) return;
  1599. context.initExtensionsDone = true;
  1600. var GLctx = context.GLctx;
  1601. context.maxVertexAttribs = GLctx.getParameter(GLctx.MAX_VERTEX_ATTRIBS);
  1602. // Detect the presence of a few extensions manually, this GL interop layer itself will need to know if they exist.
  1603. if (context.version < 2) {
  1604. // Extension available from Firefox 26 and Google Chrome 30
  1605. var instancedArraysExt = GLctx.getExtension('ANGLE_instanced_arrays');
  1606. if (instancedArraysExt) {
  1607. GLctx['vertexAttribDivisor'] = function(index, divisor) { instancedArraysExt['vertexAttribDivisorANGLE'](index, divisor); };
  1608. GLctx['drawArraysInstanced'] = function(mode, first, count, primcount) { instancedArraysExt['drawArraysInstancedANGLE'](mode, first, count, primcount); };
  1609. GLctx['drawElementsInstanced'] = function(mode, count, type, indices, primcount) { instancedArraysExt['drawElementsInstancedANGLE'](mode, count, type, indices, primcount); };
  1610. }
  1611. // Extension available from Firefox 25 and WebKit
  1612. var vaoExt = GLctx.getExtension('OES_vertex_array_object');
  1613. if (vaoExt) {
  1614. GLctx['createVertexArray'] = function() { return vaoExt['createVertexArrayOES'](); };
  1615. GLctx['deleteVertexArray'] = function(vao) { vaoExt['deleteVertexArrayOES'](vao); };
  1616. GLctx['bindVertexArray'] = function(vao) { vaoExt['bindVertexArrayOES'](vao); };
  1617. GLctx['isVertexArray'] = function(vao) { return vaoExt['isVertexArrayOES'](vao); };
  1618. }
  1619. var drawBuffersExt = GLctx.getExtension('WEBGL_draw_buffers');
  1620. if (drawBuffersExt) {
  1621. GLctx['drawBuffers'] = function(n, bufs) { drawBuffersExt['drawBuffersWEBGL'](n, bufs); };
  1622. }
  1623. }
  1624. GLctx.disjointTimerQueryExt = GLctx.getExtension("EXT_disjoint_timer_query");
  1625. // These are the 'safe' feature-enabling extensions that don't add any performance impact related to e.g. debugging, and
  1626. // should be enabled by default so that client GLES2/GL code will not need to go through extra hoops to get its stuff working.
  1627. // As new extensions are ratified at http://www.khronos.org/registry/webgl/extensions/ , feel free to add your new extensions
  1628. // here, as long as they don't produce a performance impact for users that might not be using those extensions.
  1629. // E.g. debugging-related extensions should probably be off by default.
  1630. var automaticallyEnabledExtensions = [ "OES_texture_float", "OES_texture_half_float", "OES_standard_derivatives",
  1631. "OES_vertex_array_object", "WEBGL_compressed_texture_s3tc", "WEBGL_depth_texture",
  1632. "OES_element_index_uint", "EXT_texture_filter_anisotropic", "ANGLE_instanced_arrays",
  1633. "OES_texture_float_linear", "OES_texture_half_float_linear", "WEBGL_compressed_texture_atc",
  1634. "WEBGL_compressed_texture_pvrtc", "EXT_color_buffer_half_float", "WEBGL_color_buffer_float",
  1635. "EXT_frag_depth", "EXT_sRGB", "WEBGL_draw_buffers", "WEBGL_shared_resources",
  1636. "EXT_shader_texture_lod", "EXT_color_buffer_float"];
  1637. function shouldEnableAutomatically(extension) {
  1638. var ret = false;
  1639. automaticallyEnabledExtensions.forEach(function(include) {
  1640. if (ext.indexOf(include) != -1) {
  1641. ret = true;
  1642. }
  1643. });
  1644. return ret;
  1645. }
  1646. var exts = GLctx.getSupportedExtensions();
  1647. if (exts && exts.length > 0) {
  1648. GLctx.getSupportedExtensions().forEach(function(ext) {
  1649. if (automaticallyEnabledExtensions.indexOf(ext) != -1) {
  1650. GLctx.getExtension(ext); // Calling .getExtension enables that extension permanently, no need to store the return value to be enabled.
  1651. }
  1652. });
  1653. }
  1654. },populateUniformTable:function (program) {
  1655. var p = GL.programs[program];
  1656. GL.programInfos[program] = {
  1657. uniforms: {},
  1658. maxUniformLength: 0, // This is eagerly computed below, since we already enumerate all uniforms anyway.
  1659. maxAttributeLength: -1, // This is lazily computed and cached, computed when/if first asked, "-1" meaning not computed yet.
  1660. maxUniformBlockNameLength: -1 // Lazily computed as well
  1661. };
  1662. var ptable = GL.programInfos[program];
  1663. var utable = ptable.uniforms;
  1664. // A program's uniform table maps the string name of an uniform to an integer location of that uniform.
  1665. // The global GL.uniforms map maps integer locations to WebGLUniformLocations.
  1666. var numUniforms = GLctx.getProgramParameter(p, GLctx.ACTIVE_UNIFORMS);
  1667. for (var i = 0; i < numUniforms; ++i) {
  1668. var u = GLctx.getActiveUniform(p, i);
  1669. var name = u.name;
  1670. ptable.maxUniformLength = Math.max(ptable.maxUniformLength, name.length+1);
  1671. // Strip off any trailing array specifier we might have got, e.g. "[0]".
  1672. if (name.indexOf(']', name.length-1) !== -1) {
  1673. var ls = name.lastIndexOf('[');
  1674. name = name.slice(0, ls);
  1675. }
  1676. // Optimize memory usage slightly: If we have an array of uniforms, e.g. 'vec3 colors[3];', then
  1677. // only store the string 'colors' in utable, and 'colors[0]', 'colors[1]' and 'colors[2]' will be parsed as 'colors'+i.
  1678. // Note that for the GL.uniforms table, we still need to fetch the all WebGLUniformLocations for all the indices.
  1679. var loc = GLctx.getUniformLocation(p, name);
  1680. if (loc != null)
  1681. {
  1682. var id = GL.getNewId(GL.uniforms);
  1683. utable[name] = [u.size, id];
  1684. GL.uniforms[id] = loc;
  1685. for (var j = 1; j < u.size; ++j) {
  1686. var n = name + '['+j+']';
  1687. loc = GLctx.getUniformLocation(p, n);
  1688. id = GL.getNewId(GL.uniforms);
  1689. GL.uniforms[id] = loc;
  1690. }
  1691. }
  1692. }
  1693. }};function _emscripten_glIsRenderbuffer(renderbuffer) {
  1694. var rb = GL.renderbuffers[renderbuffer];
  1695. if (!rb) return 0;
  1696. return GLctx.isRenderbuffer(rb);
  1697. }
  1698. function _emscripten_glStencilMaskSeparate(x0, x1) { GLctx['stencilMaskSeparate'](x0, x1) }
  1699. function _emscripten_get_now() { abort() }
  1700. function _emscripten_set_main_loop_timing(mode, value) {
  1701. Browser.mainLoop.timingMode = mode;
  1702. Browser.mainLoop.timingValue = value;
  1703. if (!Browser.mainLoop.func) {
  1704. console.error('emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up.');
  1705. return 1; // Return non-zero on failure, can't set timing mode when there is no main loop.
  1706. }
  1707. if (mode == 0 /*EM_TIMING_SETTIMEOUT*/) {
  1708. Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setTimeout() {
  1709. var timeUntilNextTick = Math.max(0, Browser.mainLoop.tickStartTime + value - _emscripten_get_now())|0;
  1710. setTimeout(Browser.mainLoop.runner, timeUntilNextTick); // doing this each time means that on exception, we stop
  1711. };
  1712. Browser.mainLoop.method = 'timeout';
  1713. } else if (mode == 1 /*EM_TIMING_RAF*/) {
  1714. Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() {
  1715. Browser.requestAnimationFrame(Browser.mainLoop.runner);
  1716. };
  1717. Browser.mainLoop.method = 'rAF';
  1718. } else if (mode == 2 /*EM_TIMING_SETIMMEDIATE*/) {
  1719. if (!window['setImmediate']) {
  1720. // Emulate setImmediate. (note: not a complete polyfill, we don't emulate clearImmediate() to keep code size to minimum, since not needed)
  1721. var setImmediates = [];
  1722. var emscriptenMainLoopMessageId = 'setimmediate';
  1723. function Browser_setImmediate_messageHandler(event) {
  1724. if (event.source === window && event.data === emscriptenMainLoopMessageId) {
  1725. event.stopPropagation();
  1726. setImmediates.shift()();
  1727. }
  1728. }
  1729. window.addEventListener("message", Browser_setImmediate_messageHandler, true);
  1730. window['setImmediate'] = function Browser_emulated_setImmediate(func) {
  1731. setImmediates.push(func);
  1732. if (ENVIRONMENT_IS_WORKER) {
  1733. if (Module['setImmediates'] === undefined) Module['setImmediates'] = [];
  1734. Module['setImmediates'].push(func);
  1735. window.postMessage({target: emscriptenMainLoopMessageId}); // In --proxy-to-worker, route the message via proxyClient.js
  1736. } else window.postMessage(emscriptenMainLoopMessageId, "*"); // On the main thread, can just send the message to itself.
  1737. }
  1738. }
  1739. Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate() {
  1740. window['setImmediate'](Browser.mainLoop.runner);
  1741. };
  1742. Browser.mainLoop.method = 'immediate';
  1743. }
  1744. return 0;
  1745. }function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop, arg, noSetTiming) {
  1746. Module['noExitRuntime'] = true;
  1747. 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.');
  1748. Browser.mainLoop.func = func;
  1749. Browser.mainLoop.arg = arg;
  1750. var browserIterationFunc;
  1751. if (typeof arg !== 'undefined') {
  1752. browserIterationFunc = function() {
  1753. Module['dynCall_vi'](func, arg);
  1754. };
  1755. } else {
  1756. browserIterationFunc = function() {
  1757. Module['dynCall_v'](func);
  1758. };
  1759. }
  1760. var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop;
  1761. Browser.mainLoop.runner = function Browser_mainLoop_runner() {
  1762. if (ABORT) return;
  1763. if (Browser.mainLoop.queue.length > 0) {
  1764. var start = Date.now();
  1765. var blocker = Browser.mainLoop.queue.shift();
  1766. blocker.func(blocker.arg);
  1767. if (Browser.mainLoop.remainingBlockers) {
  1768. var remaining = Browser.mainLoop.remainingBlockers;
  1769. var next = remaining%1 == 0 ? remaining-1 : Math.floor(remaining);
  1770. if (blocker.counted) {
  1771. Browser.mainLoop.remainingBlockers = next;
  1772. } else {
  1773. // not counted, but move the progress along a tiny bit
  1774. next = next + 0.5; // do not steal all the next one's progress
  1775. Browser.mainLoop.remainingBlockers = (8*remaining + next)/9;
  1776. }
  1777. }
  1778. console.log('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + ' ms'); //, left: ' + Browser.mainLoop.remainingBlockers);
  1779. Browser.mainLoop.updateStatus();
  1780. // catches pause/resume main loop from blocker execution
  1781. if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;
  1782. setTimeout(Browser.mainLoop.runner, 0);
  1783. return;
  1784. }
  1785. // catch pauses from non-main loop sources
  1786. if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;
  1787. // Implement very basic swap interval control
  1788. Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0;
  1789. if (Browser.mainLoop.timingMode == 1/*EM_TIMING_RAF*/ && Browser.mainLoop.timingValue > 1 && Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0) {
  1790. // Not the scheduled time to render this frame - skip.
  1791. Browser.mainLoop.scheduler();
  1792. return;
  1793. } else if (Browser.mainLoop.timingMode == 0/*EM_TIMING_SETTIMEOUT*/) {
  1794. Browser.mainLoop.tickStartTime = _emscripten_get_now();
  1795. }
  1796. // Signal GL rendering layer that processing of a new frame is about to start. This helps it optimize
  1797. // VBO double-buffering and reduce GPU stalls.
  1798. if (Browser.mainLoop.method === 'timeout' && Module.ctx) {
  1799. 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!');
  1800. Browser.mainLoop.method = ''; // just warn once per call to set main loop
  1801. }
  1802. Browser.mainLoop.runIter(browserIterationFunc);
  1803. checkStackCookie();
  1804. // catch pauses from the main loop itself
  1805. if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;
  1806. // Queue new audio data. This is important to be right after the main loop invocation, so that we will immediately be able
  1807. // to queue the newest produced audio samples.
  1808. // TODO: Consider adding pre- and post- rAF callbacks so that GL.newRenderingFrameStarted() and SDL.audio.queueNewAudioData()
  1809. // do not need to be hardcoded into this function, but can be more generic.
  1810. if (typeof SDL === 'object' && SDL.audio && SDL.audio.queueNewAudioData) SDL.audio.queueNewAudioData();
  1811. Browser.mainLoop.scheduler();
  1812. }
  1813. if (!noSetTiming) {
  1814. if (fps && fps > 0) _emscripten_set_main_loop_timing(0/*EM_TIMING_SETTIMEOUT*/, 1000.0 / fps);
  1815. else _emscripten_set_main_loop_timing(1/*EM_TIMING_RAF*/, 1); // Do rAF by rendering each frame (no decimating)
  1816. Browser.mainLoop.scheduler();
  1817. }
  1818. if (simulateInfiniteLoop) {
  1819. throw 'SimulateInfiniteLoop';
  1820. }
  1821. }var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function () {
  1822. Browser.mainLoop.scheduler = null;
  1823. Browser.mainLoop.currentlyRunningMainloop++; // Incrementing this signals the previous main loop that it's now become old, and it must return.
  1824. },resume:function () {
  1825. Browser.mainLoop.currentlyRunningMainloop++;
  1826. var timingMode = Browser.mainLoop.timingMode;
  1827. var timingValue = Browser.mainLoop.timingValue;
  1828. var func = Browser.mainLoop.func;
  1829. Browser.mainLoop.func = null;
  1830. _emscripten_set_main_loop(func, 0, false, Browser.mainLoop.arg, true /* do not set timing and call scheduler, we will do it on the next lines */);
  1831. _emscripten_set_main_loop_timing(timingMode, timingValue);
  1832. Browser.mainLoop.scheduler();
  1833. },updateStatus:function () {
  1834. if (Module['setStatus']) {
  1835. var message = Module['statusMessage'] || 'Please wait...';
  1836. var remaining = Browser.mainLoop.remainingBlockers;
  1837. var expected = Browser.mainLoop.expectedBlockers;
  1838. if (remaining) {
  1839. if (remaining < expected) {
  1840. Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')');
  1841. } else {
  1842. Module['setStatus'](message);
  1843. }
  1844. } else {
  1845. Module['setStatus']('');
  1846. }
  1847. }
  1848. },runIter:function (func) {
  1849. if (ABORT) return;
  1850. if (Module['preMainLoop']) {
  1851. var preRet = Module['preMainLoop']();
  1852. if (preRet === false) {
  1853. return; // |return false| skips a frame
  1854. }
  1855. }
  1856. try {
  1857. func();
  1858. } catch (e) {
  1859. if (e instanceof ExitStatus) {
  1860. return;
  1861. } else {
  1862. if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]);
  1863. throw e;
  1864. }
  1865. }
  1866. if (Module['postMainLoop']) Module['postMainLoop']();
  1867. }},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () {
  1868. if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers
  1869. if (Browser.initted) return;
  1870. Browser.initted = true;
  1871. try {
  1872. new Blob();
  1873. Browser.hasBlobConstructor = true;
  1874. } catch(e) {
  1875. Browser.hasBlobConstructor = false;
  1876. console.log("warning: no blob constructor, cannot create blobs with mimetypes");
  1877. }
  1878. Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null));
  1879. Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined;
  1880. if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') {
  1881. console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");
  1882. Module.noImageDecoding = true;
  1883. }
  1884. // Support for plugins that can process preloaded files. You can add more of these to
  1885. // your app by creating and appending to Module.preloadPlugins.
  1886. //
  1887. // Each plugin is asked if it can handle a file based on the file's name. If it can,
  1888. // it is given the file's raw data. When it is done, it calls a callback with the file's
  1889. // (possibly modified) data. For example, a plugin might decompress a file, or it
  1890. // might create some side data structure for use later (like an Image element, etc.).
  1891. var imagePlugin = {};
  1892. imagePlugin['canHandle'] = function imagePlugin_canHandle(name) {
  1893. return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name);
  1894. };
  1895. imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) {
  1896. var b = null;
  1897. if (Browser.hasBlobConstructor) {
  1898. try {
  1899. b = new Blob([byteArray], { type: Browser.getMimetype(name) });
  1900. if (b.size !== byteArray.length) { // Safari bug #118630
  1901. // Safari's Blob can only take an ArrayBuffer
  1902. b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) });
  1903. }
  1904. } catch(e) {
  1905. Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder');
  1906. }
  1907. }
  1908. if (!b) {
  1909. var bb = new Browser.BlobBuilder();
  1910. bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range
  1911. b = bb.getBlob();
  1912. }
  1913. var url = Browser.URLObject.createObjectURL(b);
  1914. assert(typeof url == 'string', 'createObjectURL must return a url as a string');
  1915. var img = new Image();
  1916. img.onload = function img_onload() {
  1917. assert(img.complete, 'Image ' + name + ' could not be decoded');
  1918. var canvas = document.createElement('canvas');
  1919. canvas.width = img.width;
  1920. canvas.height = img.height;
  1921. var ctx = canvas.getContext('2d');
  1922. ctx.drawImage(img, 0, 0);
  1923. Module["preloadedImages"][name] = canvas;
  1924. Browser.URLObject.revokeObjectURL(url);
  1925. if (onload) onload(byteArray);
  1926. };
  1927. img.onerror = function img_onerror(event) {
  1928. console.log('Image ' + url + ' could not be decoded');
  1929. if (onerror) onerror();
  1930. };
  1931. img.src = url;
  1932. };
  1933. Module['preloadPlugins'].push(imagePlugin);
  1934. var audioPlugin = {};
  1935. audioPlugin['canHandle'] = function audioPlugin_canHandle(name) {
  1936. return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 };
  1937. };
  1938. audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) {
  1939. var done = false;
  1940. function finish(audio) {
  1941. if (done) return;
  1942. done = true;
  1943. Module["preloadedAudios"][name] = audio;
  1944. if (onload) onload(byteArray);
  1945. }
  1946. function fail() {
  1947. if (done) return;
  1948. done = true;
  1949. Module["preloadedAudios"][name] = new Audio(); // empty shim
  1950. if (onerror) onerror();
  1951. }
  1952. if (Browser.hasBlobConstructor) {
  1953. try {
  1954. var b = new Blob([byteArray], { type: Browser.getMimetype(name) });
  1955. } catch(e) {
  1956. return fail();
  1957. }
  1958. var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this!
  1959. assert(typeof url == 'string', 'createObjectURL must return a url as a string');
  1960. var audio = new Audio();
  1961. audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926
  1962. audio.onerror = function audio_onerror(event) {
  1963. if (done) return;
  1964. console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach');
  1965. function encode64(data) {
  1966. var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
  1967. var PAD = '=';
  1968. var ret = '';
  1969. var leftchar = 0;
  1970. var leftbits = 0;
  1971. for (var i = 0; i < data.length; i++) {
  1972. leftchar = (leftchar << 8) | data[i];
  1973. leftbits += 8;
  1974. while (leftbits >= 6) {
  1975. var curr = (leftchar >> (leftbits-6)) & 0x3f;
  1976. leftbits -= 6;
  1977. ret += BASE[curr];
  1978. }
  1979. }
  1980. if (leftbits == 2) {
  1981. ret += BASE[(leftchar&3) << 4];
  1982. ret += PAD + PAD;
  1983. } else if (leftbits == 4) {
  1984. ret += BASE[(leftchar&0xf) << 2];
  1985. ret += PAD;
  1986. }
  1987. return ret;
  1988. }
  1989. audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray);
  1990. finish(audio); // we don't wait for confirmation this worked - but it's worth trying
  1991. };
  1992. audio.src = url;
  1993. // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror
  1994. Browser.safeSetTimeout(function() {
  1995. finish(audio); // try to use it even though it is not necessarily ready to play
  1996. }, 10000);
  1997. } else {
  1998. return fail();
  1999. }
  2000. };
  2001. Module['preloadPlugins'].push(audioPlugin);
  2002. // Canvas event setup
  2003. function pointerLockChange() {
  2004. Browser.pointerLock = document['pointerLockElement'] === Module['canvas'] ||
  2005. document['mozPointerLockElement'] === Module['canvas'] ||
  2006. document['webkitPointerLockElement'] === Module['canvas'] ||
  2007. document['msPointerLockElement'] === Module['canvas'];
  2008. }
  2009. var canvas = Module['canvas'];
  2010. if (canvas) {
  2011. // forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module
  2012. // Module['forcedAspectRatio'] = 4 / 3;
  2013. canvas.requestPointerLock = canvas['requestPointerLock'] ||
  2014. canvas['mozRequestPointerLock'] ||
  2015. canvas['webkitRequestPointerLock'] ||
  2016. canvas['msRequestPointerLock'] ||
  2017. function(){};
  2018. canvas.exitPointerLock = document['exitPointerLock'] ||
  2019. document['mozExitPointerLock'] ||
  2020. document['webkitExitPointerLock'] ||
  2021. document['msExitPointerLock'] ||
  2022. function(){}; // no-op if function does not exist
  2023. canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
  2024. document.addEventListener('pointerlockchange', pointerLockChange, false);
  2025. document.addEventListener('mozpointerlockchange', pointerLockChange, false);
  2026. document.addEventListener('webkitpointerlockchange', pointerLockChange, false);
  2027. document.addEventListener('mspointerlockchange', pointerLockChange, false);
  2028. if (Module['elementPointerLock']) {
  2029. canvas.addEventListener("click", function(ev) {
  2030. if (!Browser.pointerLock && Module['canvas'].requestPointerLock) {
  2031. Module['canvas'].requestPointerLock();
  2032. ev.preventDefault();
  2033. }
  2034. }, false);
  2035. }
  2036. }
  2037. },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) {
  2038. 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.
  2039. var ctx;
  2040. var contextHandle;
  2041. if (useWebGL) {
  2042. // For GLES2/desktop GL compatibility, adjust a few defaults to be different to WebGL defaults, so that they align better with the desktop defaults.
  2043. var contextAttributes = {
  2044. antialias: false,
  2045. alpha: false
  2046. };
  2047. if (webGLContextAttributes) {
  2048. for (var attribute in webGLContextAttributes) {
  2049. contextAttributes[attribute] = webGLContextAttributes[attribute];
  2050. }
  2051. }
  2052. contextHandle = GL.createContext(canvas, contextAttributes);
  2053. if (contextHandle) {
  2054. ctx = GL.getContext(contextHandle).GLctx;
  2055. }
  2056. } else {
  2057. ctx = canvas.getContext('2d');
  2058. }
  2059. if (!ctx) return null;
  2060. if (setInModule) {
  2061. 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');
  2062. Module.ctx = ctx;
  2063. if (useWebGL) GL.makeContextCurrent(contextHandle);
  2064. Module.useWebGL = useWebGL;
  2065. Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() });
  2066. Browser.init();
  2067. }
  2068. return ctx;
  2069. },destroyContext:function (canvas, useWebGL, setInModule) {},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function (lockPointer, resizeCanvas, vrDevice) {
  2070. Browser.lockPointer = lockPointer;
  2071. Browser.resizeCanvas = resizeCanvas;
  2072. Browser.vrDevice = vrDevice;
  2073. if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true;
  2074. if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false;
  2075. if (typeof Browser.vrDevice === 'undefined') Browser.vrDevice = null;
  2076. var canvas = Module['canvas'];
  2077. function fullscreenChange() {
  2078. Browser.isFullscreen = false;
  2079. var canvasContainer = canvas.parentNode;
  2080. if ((document['fullscreenElement'] || document['mozFullScreenElement'] ||
  2081. document['msFullscreenElement'] || document['webkitFullscreenElement'] ||
  2082. document['webkitCurrentFullScreenElement']) === canvasContainer) {
  2083. canvas.exitFullscreen = document['exitFullscreen'] ||
  2084. document['cancelFullScreen'] ||
  2085. document['mozCancelFullScreen'] ||
  2086. document['msExitFullscreen'] ||
  2087. document['webkitCancelFullScreen'] ||
  2088. function() {};
  2089. canvas.exitFullscreen = canvas.exitFullscreen.bind(document);
  2090. if (Browser.lockPointer) canvas.requestPointerLock();
  2091. Browser.isFullscreen = true;
  2092. if (Browser.resizeCanvas) Browser.setFullscreenCanvasSize();
  2093. } else {
  2094. // remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen
  2095. canvasContainer.parentNode.insertBefore(canvas, canvasContainer);
  2096. canvasContainer.parentNode.removeChild(canvasContainer);
  2097. if (Browser.resizeCanvas) Browser.setWindowedCanvasSize();
  2098. }
  2099. if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullscreen);
  2100. if (Module['onFullscreen']) Module['onFullscreen'](Browser.isFullscreen);
  2101. Browser.updateCanvasDimensions(canvas);
  2102. }
  2103. if (!Browser.fullscreenHandlersInstalled) {
  2104. Browser.fullscreenHandlersInstalled = true;
  2105. document.addEventListener('fullscreenchange', fullscreenChange, false);
  2106. document.addEventListener('mozfullscreenchange', fullscreenChange, false);
  2107. document.addEventListener('webkitfullscreenchange', fullscreenChange, false);
  2108. document.addEventListener('MSFullscreenChange', fullscreenChange, false);
  2109. }
  2110. // 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
  2111. var canvasContainer = document.createElement("div");
  2112. canvas.parentNode.insertBefore(canvasContainer, canvas);
  2113. canvasContainer.appendChild(canvas);
  2114. // use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size)
  2115. canvasContainer.requestFullscreen = canvasContainer['requestFullscreen'] ||
  2116. canvasContainer['mozRequestFullScreen'] ||
  2117. canvasContainer['msRequestFullscreen'] ||
  2118. (canvasContainer['webkitRequestFullscreen'] ? function() { canvasContainer['webkitRequestFullscreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null) ||
  2119. (canvasContainer['webkitRequestFullScreen'] ? function() { canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null);
  2120. if (vrDevice) {
  2121. canvasContainer.requestFullscreen({ vrDisplay: vrDevice });
  2122. } else {
  2123. canvasContainer.requestFullscreen();
  2124. }
  2125. },requestFullScreen:function (lockPointer, resizeCanvas, vrDevice) {
  2126. Module.printErr('Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.');
  2127. Browser.requestFullScreen = function(lockPointer, resizeCanvas, vrDevice) {
  2128. return Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice);
  2129. }
  2130. return Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice);
  2131. },nextRAF:0,fakeRequestAnimationFrame:function (func) {
  2132. // try to keep 60fps between calls to here
  2133. var now = Date.now();
  2134. if (Browser.nextRAF === 0) {
  2135. Browser.nextRAF = now + 1000/60;
  2136. } else {
  2137. while (now + 2 >= Browser.nextRAF) { // fudge a little, to avoid timer jitter causing us to do lots of delay:0
  2138. Browser.nextRAF += 1000/60;
  2139. }
  2140. }
  2141. var delay = Math.max(Browser.nextRAF - now, 0);
  2142. setTimeout(func, delay);
  2143. },requestAnimationFrame:function requestAnimationFrame(func) {
  2144. if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js)
  2145. Browser.fakeRequestAnimationFrame(func);
  2146. } else {
  2147. if (!window.requestAnimationFrame) {
  2148. window.requestAnimationFrame = window['requestAnimationFrame'] ||
  2149. window['mozRequestAnimationFrame'] ||
  2150. window['webkitRequestAnimationFrame'] ||
  2151. window['msRequestAnimationFrame'] ||
  2152. window['oRequestAnimationFrame'] ||
  2153. Browser.fakeRequestAnimationFrame;
  2154. }
  2155. window.requestAnimationFrame(func);
  2156. }
  2157. },safeCallback:function (func) {
  2158. return function() {
  2159. if (!ABORT) return func.apply(null, arguments);
  2160. };
  2161. },allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function () {
  2162. Browser.allowAsyncCallbacks = false;
  2163. },resumeAsyncCallbacks:function () { // marks future callbacks as ok to execute, and synchronously runs any remaining ones right now
  2164. Browser.allowAsyncCallbacks = true;
  2165. if (Browser.queuedAsyncCallbacks.length > 0) {
  2166. var callbacks = Browser.queuedAsyncCallbacks;
  2167. Browser.queuedAsyncCallbacks = [];
  2168. callbacks.forEach(function(func) {
  2169. func();
  2170. });
  2171. }
  2172. },safeRequestAnimationFrame:function (func) {
  2173. return Browser.requestAnimationFrame(function() {
  2174. if (ABORT) return;
  2175. if (Browser.allowAsyncCallbacks) {
  2176. func();
  2177. } else {
  2178. Browser.queuedAsyncCallbacks.push(func);
  2179. }
  2180. });
  2181. },safeSetTimeout:function (func, timeout) {
  2182. Module['noExitRuntime'] = true;
  2183. return setTimeout(function() {
  2184. if (ABORT) return;
  2185. if (Browser.allowAsyncCallbacks) {
  2186. func();
  2187. } else {
  2188. Browser.queuedAsyncCallbacks.push(func);
  2189. }
  2190. }, timeout);
  2191. },safeSetInterval:function (func, timeout) {
  2192. Module['noExitRuntime'] = true;
  2193. return setInterval(function() {
  2194. if (ABORT) return;
  2195. if (Browser.allowAsyncCallbacks) {
  2196. func();
  2197. } // drop it on the floor otherwise, next interval will kick in
  2198. }, timeout);
  2199. },getMimetype:function (name) {
  2200. return {
  2201. 'jpg': 'image/jpeg',
  2202. 'jpeg': 'image/jpeg',
  2203. 'png': 'image/png',
  2204. 'bmp': 'image/bmp',
  2205. 'ogg': 'audio/ogg',
  2206. 'wav': 'audio/wav',
  2207. 'mp3': 'audio/mpeg'
  2208. }[name.substr(name.lastIndexOf('.')+1)];
  2209. },getUserMedia:function (func) {
  2210. if(!window.getUserMedia) {
  2211. window.getUserMedia = navigator['getUserMedia'] ||
  2212. navigator['mozGetUserMedia'];
  2213. }
  2214. window.getUserMedia(func);
  2215. },getMovementX:function (event) {
  2216. return event['movementX'] ||
  2217. event['mozMovementX'] ||
  2218. event['webkitMovementX'] ||
  2219. 0;
  2220. },getMovementY:function (event) {
  2221. return event['movementY'] ||
  2222. event['mozMovementY'] ||
  2223. event['webkitMovementY'] ||
  2224. 0;
  2225. },getMouseWheelDelta:function (event) {
  2226. var delta = 0;
  2227. switch (event.type) {
  2228. case 'DOMMouseScroll':
  2229. delta = event.detail;
  2230. break;
  2231. case 'mousewheel':
  2232. delta = event.wheelDelta;
  2233. break;
  2234. case 'wheel':
  2235. delta = event['deltaY'];
  2236. break;
  2237. default:
  2238. throw 'unrecognized mouse wheel event: ' + event.type;
  2239. }
  2240. return delta;
  2241. },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup
  2242. if (Browser.pointerLock) {
  2243. // When the pointer is locked, calculate the coordinates
  2244. // based on the movement of the mouse.
  2245. // Workaround for Firefox bug 764498
  2246. if (event.type != 'mousemove' &&
  2247. ('mozMovementX' in event)) {
  2248. Browser.mouseMovementX = Browser.mouseMovementY = 0;
  2249. } else {
  2250. Browser.mouseMovementX = Browser.getMovementX(event);
  2251. Browser.mouseMovementY = Browser.getMovementY(event);
  2252. }
  2253. // check if SDL is available
  2254. if (typeof SDL != "undefined") {
  2255. Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;
  2256. Browser.mouseY = SDL.mouseY + Browser.mouseMovementY;
  2257. } else {
  2258. // just add the mouse delta to the current absolut mouse position
  2259. // FIXME: ideally this should be clamped against the canvas size and zero
  2260. Browser.mouseX += Browser.mouseMovementX;
  2261. Browser.mouseY += Browser.mouseMovementY;
  2262. }
  2263. } else {
  2264. // Otherwise, calculate the movement based on the changes
  2265. // in the coordinates.
  2266. var rect = Module["canvas"].getBoundingClientRect();
  2267. var cw = Module["canvas"].width;
  2268. var ch = Module["canvas"].height;
  2269. // Neither .scrollX or .pageXOffset are defined in a spec, but
  2270. // we prefer .scrollX because it is currently in a spec draft.
  2271. // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/)
  2272. var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset);
  2273. var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset);
  2274. // If this assert lands, it's likely because the browser doesn't support scrollX or pageXOffset
  2275. // and we have no viable fallback.
  2276. assert((typeof scrollX !== 'undefined') && (typeof scrollY !== 'undefined'), 'Unable to retrieve scroll position, mouse positions likely broken.');
  2277. if (event.type === 'touchstart' || event.type === 'touchend' || event.type === 'touchmove') {
  2278. var touch = event.touch;
  2279. if (touch === undefined) {
  2280. return; // the "touch" property is only defined in SDL
  2281. }
  2282. var adjustedX = touch.pageX - (scrollX + rect.left);
  2283. var adjustedY = touch.pageY - (scrollY + rect.top);
  2284. adjustedX = adjustedX * (cw / rect.width);
  2285. adjustedY = adjustedY * (ch / rect.height);
  2286. var coords = { x: adjustedX, y: adjustedY };
  2287. if (event.type === 'touchstart') {
  2288. Browser.lastTouches[touch.identifier] = coords;
  2289. Browser.touches[touch.identifier] = coords;
  2290. } else if (event.type === 'touchend' || event.type === 'touchmove') {
  2291. var last = Browser.touches[touch.identifier];
  2292. if (!last) last = coords;
  2293. Browser.lastTouches[touch.identifier] = last;
  2294. Browser.touches[touch.identifier] = coords;
  2295. }
  2296. return;
  2297. }
  2298. var x = event.pageX - (scrollX + rect.left);
  2299. var y = event.pageY - (scrollY + rect.top);
  2300. // the canvas might be CSS-scaled compared to its backbuffer;
  2301. // SDL-using content will want mouse coordinates in terms
  2302. // of backbuffer units.
  2303. x = x * (cw / rect.width);
  2304. y = y * (ch / rect.height);
  2305. Browser.mouseMovementX = x - Browser.mouseX;
  2306. Browser.mouseMovementY = y - Browser.mouseY;
  2307. Browser.mouseX = x;
  2308. Browser.mouseY = y;
  2309. }
  2310. },asyncLoad:function (url, onload, onerror, noRunDep) {
  2311. var dep = !noRunDep ? getUniqueRunDependency('al ' + url) : '';
  2312. Module['readAsync'](url, function(arrayBuffer) {
  2313. assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).');
  2314. onload(new Uint8Array(arrayBuffer));
  2315. if (dep) removeRunDependency(dep);
  2316. }, function(event) {
  2317. if (onerror) {
  2318. onerror();
  2319. } else {
  2320. throw 'Loading data file "' + url + '" failed.';
  2321. }
  2322. });
  2323. if (dep) addRunDependency(dep);
  2324. },resizeListeners:[],updateResizeListeners:function () {
  2325. var canvas = Module['canvas'];
  2326. Browser.resizeListeners.forEach(function(listener) {
  2327. listener(canvas.width, canvas.height);
  2328. });
  2329. },setCanvasSize:function (width, height, noUpdates) {
  2330. var canvas = Module['canvas'];
  2331. Browser.updateCanvasDimensions(canvas, width, height);
  2332. if (!noUpdates) Browser.updateResizeListeners();
  2333. },windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function () {
  2334. // check if SDL is available
  2335. if (typeof SDL != "undefined") {
  2336. var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
  2337. flags = flags | 0x00800000; // set SDL_FULLSCREEN flag
  2338. HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
  2339. }
  2340. Browser.updateResizeListeners();
  2341. },setWindowedCanvasSize:function () {
  2342. // check if SDL is available
  2343. if (typeof SDL != "undefined") {
  2344. var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
  2345. flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag
  2346. HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
  2347. }
  2348. Browser.updateResizeListeners();
  2349. },updateCanvasDimensions:function (canvas, wNative, hNative) {
  2350. if (wNative && hNative) {
  2351. canvas.widthNative = wNative;
  2352. canvas.heightNative = hNative;
  2353. } else {
  2354. wNative = canvas.widthNative;
  2355. hNative = canvas.heightNative;
  2356. }
  2357. var w = wNative;
  2358. var h = hNative;
  2359. if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) {
  2360. if (w/h < Module['forcedAspectRatio']) {
  2361. w = Math.round(h * Module['forcedAspectRatio']);
  2362. } else {
  2363. h = Math.round(w / Module['forcedAspectRatio']);
  2364. }
  2365. }
  2366. if (((document['fullscreenElement'] || document['mozFullScreenElement'] ||
  2367. document['msFullscreenElement'] || document['webkitFullscreenElement'] ||
  2368. document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) {
  2369. var factor = Math.min(screen.width / w, screen.height / h);
  2370. w = Math.round(w * factor);
  2371. h = Math.round(h * factor);
  2372. }
  2373. if (Browser.resizeCanvas) {
  2374. if (canvas.width != w) canvas.width = w;
  2375. if (canvas.height != h) canvas.height = h;
  2376. if (typeof canvas.style != 'undefined') {
  2377. canvas.style.removeProperty( "width");
  2378. canvas.style.removeProperty("height");
  2379. }
  2380. } else {
  2381. if (canvas.width != wNative) canvas.width = wNative;
  2382. if (canvas.height != hNative) canvas.height = hNative;
  2383. if (typeof canvas.style != 'undefined') {
  2384. if (w != wNative || h != hNative) {
  2385. canvas.style.setProperty( "width", w + "px", "important");
  2386. canvas.style.setProperty("height", h + "px", "important");
  2387. } else {
  2388. canvas.style.removeProperty( "width");
  2389. canvas.style.removeProperty("height");
  2390. }
  2391. }
  2392. }
  2393. },wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function () {
  2394. var handle = Browser.nextWgetRequestHandle;
  2395. Browser.nextWgetRequestHandle++;
  2396. return handle;
  2397. }};var GLFW={Window:function (id, width, height, title, monitor, share) {
  2398. this.id = id;
  2399. this.x = 0;
  2400. this.y = 0;
  2401. this.fullscreen = false; // Used to determine if app in fullscreen mode
  2402. this.storedX = 0; // Used to store X before fullscreen
  2403. this.storedY = 0; // Used to store Y before fullscreen
  2404. this.width = width;
  2405. this.height = height;
  2406. this.storedWidth = width; // Used to store width before fullscreen
  2407. this.storedHeight = height; // Used to store height before fullscreen
  2408. this.title = title;
  2409. this.monitor = monitor;
  2410. this.share = share;
  2411. this.attributes = GLFW.hints;
  2412. this.inputModes = {
  2413. 0x00033001:0x00034001, // GLFW_CURSOR (GLFW_CURSOR_NORMAL)
  2414. 0x00033002:0, // GLFW_STICKY_KEYS
  2415. 0x00033003:0, // GLFW_STICKY_MOUSE_BUTTONS
  2416. };
  2417. this.buttons = 0;
  2418. this.keys = new Array();
  2419. this.shouldClose = 0;
  2420. this.title = null;
  2421. this.windowPosFunc = null; // GLFWwindowposfun
  2422. this.windowSizeFunc = null; // GLFWwindowsizefun
  2423. this.windowCloseFunc = null; // GLFWwindowclosefun
  2424. this.windowRefreshFunc = null; // GLFWwindowrefreshfun
  2425. this.windowFocusFunc = null; // GLFWwindowfocusfun
  2426. this.windowIconifyFunc = null; // GLFWwindowiconifyfun
  2427. this.framebufferSizeFunc = null; // GLFWframebuffersizefun
  2428. this.mouseButtonFunc = null; // GLFWmousebuttonfun
  2429. this.cursorPosFunc = null; // GLFWcursorposfun
  2430. this.cursorEnterFunc = null; // GLFWcursorenterfun
  2431. this.scrollFunc = null; // GLFWscrollfun
  2432. this.keyFunc = null; // GLFWkeyfun
  2433. this.charFunc = null; // GLFWcharfun
  2434. this.userptr = null;
  2435. },WindowFromId:function (id) {
  2436. if (id <= 0 || !GLFW.windows) return null;
  2437. return GLFW.windows[id - 1];
  2438. },errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function (keycode) {
  2439. switch (keycode) {
  2440. // these keycodes are only defined for GLFW3, assume they are the same for GLFW2
  2441. case 0x20:return 32; // DOM_VK_SPACE -> GLFW_KEY_SPACE
  2442. case 0xDE:return 39; // DOM_VK_QUOTE -> GLFW_KEY_APOSTROPHE
  2443. case 0xBC:return 44; // DOM_VK_COMMA -> GLFW_KEY_COMMA
  2444. case 0xAD:return 45; // DOM_VK_HYPHEN_MINUS -> GLFW_KEY_MINUS
  2445. case 0xBD:return 45; // DOM_VK_MINUS -> GLFW_KEY_MINUS
  2446. case 0xBE:return 46; // DOM_VK_PERIOD -> GLFW_KEY_PERIOD
  2447. case 0xBF:return 47; // DOM_VK_SLASH -> GLFW_KEY_SLASH
  2448. case 0x30:return 48; // DOM_VK_0 -> GLFW_KEY_0
  2449. case 0x31:return 49; // DOM_VK_1 -> GLFW_KEY_1
  2450. case 0x32:return 50; // DOM_VK_2 -> GLFW_KEY_2
  2451. case 0x33:return 51; // DOM_VK_3 -> GLFW_KEY_3
  2452. case 0x34:return 52; // DOM_VK_4 -> GLFW_KEY_4
  2453. case 0x35:return 53; // DOM_VK_5 -> GLFW_KEY_5
  2454. case 0x36:return 54; // DOM_VK_6 -> GLFW_KEY_6
  2455. case 0x37:return 55; // DOM_VK_7 -> GLFW_KEY_7
  2456. case 0x38:return 56; // DOM_VK_8 -> GLFW_KEY_8
  2457. case 0x39:return 57; // DOM_VK_9 -> GLFW_KEY_9
  2458. case 0x3B:return 59; // DOM_VK_SEMICOLON -> GLFW_KEY_SEMICOLON
  2459. case 0x3D:return 61; // DOM_VK_EQUALS -> GLFW_KEY_EQUAL
  2460. case 0xBB:return 61; // DOM_VK_EQUALS -> GLFW_KEY_EQUAL
  2461. case 0x41:return 65; // DOM_VK_A -> GLFW_KEY_A
  2462. case 0x42:return 66; // DOM_VK_B -> GLFW_KEY_B
  2463. case 0x43:return 67; // DOM_VK_C -> GLFW_KEY_C
  2464. case 0x44:return 68; // DOM_VK_D -> GLFW_KEY_D
  2465. case 0x45:return 69; // DOM_VK_E -> GLFW_KEY_E
  2466. case 0x46:return 70; // DOM_VK_F -> GLFW_KEY_F
  2467. case 0x47:return 71; // DOM_VK_G -> GLFW_KEY_G
  2468. case 0x48:return 72; // DOM_VK_H -> GLFW_KEY_H
  2469. case 0x49:return 73; // DOM_VK_I -> GLFW_KEY_I
  2470. case 0x4A:return 74; // DOM_VK_J -> GLFW_KEY_J
  2471. case 0x4B:return 75; // DOM_VK_K -> GLFW_KEY_K
  2472. case 0x4C:return 76; // DOM_VK_L -> GLFW_KEY_L
  2473. case 0x4D:return 77; // DOM_VK_M -> GLFW_KEY_M
  2474. case 0x4E:return 78; // DOM_VK_N -> GLFW_KEY_N
  2475. case 0x4F:return 79; // DOM_VK_O -> GLFW_KEY_O
  2476. case 0x50:return 80; // DOM_VK_P -> GLFW_KEY_P
  2477. case 0x51:return 81; // DOM_VK_Q -> GLFW_KEY_Q
  2478. case 0x52:return 82; // DOM_VK_R -> GLFW_KEY_R
  2479. case 0x53:return 83; // DOM_VK_S -> GLFW_KEY_S
  2480. case 0x54:return 84; // DOM_VK_T -> GLFW_KEY_T
  2481. case 0x55:return 85; // DOM_VK_U -> GLFW_KEY_U
  2482. case 0x56:return 86; // DOM_VK_V -> GLFW_KEY_V
  2483. case 0x57:return 87; // DOM_VK_W -> GLFW_KEY_W
  2484. case 0x58:return 88; // DOM_VK_X -> GLFW_KEY_X
  2485. case 0x59:return 89; // DOM_VK_Y -> GLFW_KEY_Y
  2486. case 0x5a:return 90; // DOM_VK_Z -> GLFW_KEY_Z
  2487. case 0xDB:return 91; // DOM_VK_OPEN_BRACKET -> GLFW_KEY_LEFT_BRACKET
  2488. case 0xDC:return 92; // DOM_VK_BACKSLASH -> GLFW_KEY_BACKSLASH
  2489. case 0xDD:return 93; // DOM_VK_CLOSE_BRACKET -> GLFW_KEY_RIGHT_BRACKET
  2490. case 0xC0:return 94; // DOM_VK_BACK_QUOTE -> GLFW_KEY_GRAVE_ACCENT
  2491. case 0x1B:return 256; // DOM_VK_ESCAPE -> GLFW_KEY_ESCAPE
  2492. case 0x0D:return 257; // DOM_VK_RETURN -> GLFW_KEY_ENTER
  2493. case 0x09:return 258; // DOM_VK_TAB -> GLFW_KEY_TAB
  2494. case 0x08:return 259; // DOM_VK_BACK -> GLFW_KEY_BACKSPACE
  2495. case 0x2D:return 260; // DOM_VK_INSERT -> GLFW_KEY_INSERT
  2496. case 0x2E:return 261; // DOM_VK_DELETE -> GLFW_KEY_DELETE
  2497. case 0x27:return 262; // DOM_VK_RIGHT -> GLFW_KEY_RIGHT
  2498. case 0x25:return 263; // DOM_VK_LEFT -> GLFW_KEY_LEFT
  2499. case 0x28:return 264; // DOM_VK_DOWN -> GLFW_KEY_DOWN
  2500. case 0x26:return 265; // DOM_VK_UP -> GLFW_KEY_UP
  2501. case 0x21:return 266; // DOM_VK_PAGE_UP -> GLFW_KEY_PAGE_UP
  2502. case 0x22:return 267; // DOM_VK_PAGE_DOWN -> GLFW_KEY_PAGE_DOWN
  2503. case 0x24:return 268; // DOM_VK_HOME -> GLFW_KEY_HOME
  2504. case 0x23:return 269; // DOM_VK_END -> GLFW_KEY_END
  2505. case 0x14:return 280; // DOM_VK_CAPS_LOCK -> GLFW_KEY_CAPS_LOCK
  2506. case 0x91:return 281; // DOM_VK_SCROLL_LOCK -> GLFW_KEY_SCROLL_LOCK
  2507. case 0x90:return 282; // DOM_VK_NUM_LOCK -> GLFW_KEY_NUM_LOCK
  2508. case 0x2C:return 283; // DOM_VK_SNAPSHOT -> GLFW_KEY_PRINT_SCREEN
  2509. case 0x13:return 284; // DOM_VK_PAUSE -> GLFW_KEY_PAUSE
  2510. case 0x70:return 290; // DOM_VK_F1 -> GLFW_KEY_F1
  2511. case 0x71:return 291; // DOM_VK_F2 -> GLFW_KEY_F2
  2512. case 0x72:return 292; // DOM_VK_F3 -> GLFW_KEY_F3
  2513. case 0x73:return 293; // DOM_VK_F4 -> GLFW_KEY_F4
  2514. case 0x74:return 294; // DOM_VK_F5 -> GLFW_KEY_F5
  2515. case 0x75:return 295; // DOM_VK_F6 -> GLFW_KEY_F6
  2516. case 0x76:return 296; // DOM_VK_F7 -> GLFW_KEY_F7
  2517. case 0x77:return 297; // DOM_VK_F8 -> GLFW_KEY_F8
  2518. case 0x78:return 298; // DOM_VK_F9 -> GLFW_KEY_F9
  2519. case 0x79:return 299; // DOM_VK_F10 -> GLFW_KEY_F10
  2520. case 0x7A:return 300; // DOM_VK_F11 -> GLFW_KEY_F11
  2521. case 0x7B:return 301; // DOM_VK_F12 -> GLFW_KEY_F12
  2522. case 0x7C:return 302; // DOM_VK_F13 -> GLFW_KEY_F13
  2523. case 0x7D:return 303; // DOM_VK_F14 -> GLFW_KEY_F14
  2524. case 0x7E:return 304; // DOM_VK_F15 -> GLFW_KEY_F15
  2525. case 0x7F:return 305; // DOM_VK_F16 -> GLFW_KEY_F16
  2526. case 0x80:return 306; // DOM_VK_F17 -> GLFW_KEY_F17
  2527. case 0x81:return 307; // DOM_VK_F18 -> GLFW_KEY_F18
  2528. case 0x82:return 308; // DOM_VK_F19 -> GLFW_KEY_F19
  2529. case 0x83:return 309; // DOM_VK_F20 -> GLFW_KEY_F20
  2530. case 0x84:return 310; // DOM_VK_F21 -> GLFW_KEY_F21
  2531. case 0x85:return 311; // DOM_VK_F22 -> GLFW_KEY_F22
  2532. case 0x86:return 312; // DOM_VK_F23 -> GLFW_KEY_F23
  2533. case 0x87:return 313; // DOM_VK_F24 -> GLFW_KEY_F24
  2534. case 0x88:return 314; // 0x88 (not used?) -> GLFW_KEY_F25
  2535. case 0x60:return 320; // DOM_VK_NUMPAD0 -> GLFW_KEY_KP_0
  2536. case 0x61:return 321; // DOM_VK_NUMPAD1 -> GLFW_KEY_KP_1
  2537. case 0x62:return 322; // DOM_VK_NUMPAD2 -> GLFW_KEY_KP_2
  2538. case 0x63:return 323; // DOM_VK_NUMPAD3 -> GLFW_KEY_KP_3
  2539. case 0x64:return 324; // DOM_VK_NUMPAD4 -> GLFW_KEY_KP_4
  2540. case 0x65:return 325; // DOM_VK_NUMPAD5 -> GLFW_KEY_KP_5
  2541. case 0x66:return 326; // DOM_VK_NUMPAD6 -> GLFW_KEY_KP_6
  2542. case 0x67:return 327; // DOM_VK_NUMPAD7 -> GLFW_KEY_KP_7
  2543. case 0x68:return 328; // DOM_VK_NUMPAD8 -> GLFW_KEY_KP_8
  2544. case 0x69:return 329; // DOM_VK_NUMPAD9 -> GLFW_KEY_KP_9
  2545. case 0x6E:return 330; // DOM_VK_DECIMAL -> GLFW_KEY_KP_DECIMAL
  2546. case 0x6F:return 331; // DOM_VK_DIVIDE -> GLFW_KEY_KP_DIVIDE
  2547. case 0x6A:return 332; // DOM_VK_MULTIPLY -> GLFW_KEY_KP_MULTIPLY
  2548. case 0x6D:return 333; // DOM_VK_SUBTRACT -> GLFW_KEY_KP_SUBTRACT
  2549. case 0x6B:return 334; // DOM_VK_ADD -> GLFW_KEY_KP_ADD
  2550. // case 0x0D:return 335; // DOM_VK_RETURN -> GLFW_KEY_KP_ENTER (DOM_KEY_LOCATION_RIGHT)
  2551. // case 0x61:return 336; // DOM_VK_EQUALS -> GLFW_KEY_KP_EQUAL (DOM_KEY_LOCATION_RIGHT)
  2552. case 0x10:return 340; // DOM_VK_SHIFT -> GLFW_KEY_LEFT_SHIFT
  2553. case 0x11:return 341; // DOM_VK_CONTROL -> GLFW_KEY_LEFT_CONTROL
  2554. case 0x12:return 342; // DOM_VK_ALT -> GLFW_KEY_LEFT_ALT
  2555. case 0x5B:return 343; // DOM_VK_WIN -> GLFW_KEY_LEFT_SUPER
  2556. // case 0x10:return 344; // DOM_VK_SHIFT -> GLFW_KEY_RIGHT_SHIFT (DOM_KEY_LOCATION_RIGHT)
  2557. // case 0x11:return 345; // DOM_VK_CONTROL -> GLFW_KEY_RIGHT_CONTROL (DOM_KEY_LOCATION_RIGHT)
  2558. // case 0x12:return 346; // DOM_VK_ALT -> GLFW_KEY_RIGHT_ALT (DOM_KEY_LOCATION_RIGHT)
  2559. // case 0x5B:return 347; // DOM_VK_WIN -> GLFW_KEY_RIGHT_SUPER (DOM_KEY_LOCATION_RIGHT)
  2560. case 0x5D:return 348; // DOM_VK_CONTEXT_MENU -> GLFW_KEY_MENU
  2561. // XXX: GLFW_KEY_WORLD_1, GLFW_KEY_WORLD_2 what are these?
  2562. default:return -1; // GLFW_KEY_UNKNOWN
  2563. };
  2564. },getModBits:function (win) {
  2565. var mod = 0;
  2566. if (win.keys[340]) mod |= 0x0001; // GLFW_MOD_SHIFT
  2567. if (win.keys[341]) mod |= 0x0002; // GLFW_MOD_CONTROL
  2568. if (win.keys[342]) mod |= 0x0004; // GLFW_MOD_ALT
  2569. if (win.keys[343]) mod |= 0x0008; // GLFW_MOD_SUPER
  2570. return mod;
  2571. },onKeyPress:function (event) {
  2572. if (!GLFW.active || !GLFW.active.charFunc) return;
  2573. // correct unicode charCode is only available with onKeyPress event
  2574. var charCode = event.charCode;
  2575. if (charCode == 0 || (charCode >= 0x00 && charCode <= 0x1F)) return;
  2576. Module['dynCall_vii'](GLFW.active.charFunc, GLFW.active.id, charCode);
  2577. },onKeyChanged:function (event, status) {
  2578. if (!GLFW.active) return;
  2579. var key = GLFW.DOMToGLFWKeyCode(event.keyCode);
  2580. if (key == -1) return;
  2581. var repeat = status && GLFW.active.keys[key];
  2582. GLFW.active.keys[key] = status;
  2583. if (!GLFW.active.keyFunc) return;
  2584. if (repeat) status = 2; // GLFW_REPEAT
  2585. Module['dynCall_viiiii'](GLFW.active.keyFunc, GLFW.active.id, key, event.keyCode, status, GLFW.getModBits(GLFW.active));
  2586. },onKeydown:function (event) {
  2587. GLFW.onKeyChanged(event, 1); // GLFW_PRESS or GLFW_REPEAT
  2588. // This logic comes directly from the sdl implementation. We cannot
  2589. // call preventDefault on all keydown events otherwise onKeyPress will
  2590. // not get called
  2591. if (event.keyCode === 8 /* backspace */ || event.keyCode === 9 /* tab */) {
  2592. event.preventDefault();
  2593. }
  2594. },onKeyup:function (event) {
  2595. GLFW.onKeyChanged(event, 0); // GLFW_RELEASE
  2596. },onMousemove:function (event) {
  2597. if (!GLFW.active) return;
  2598. Browser.calculateMouseEvent(event);
  2599. if (event.target != Module["canvas"] || !GLFW.active.cursorPosFunc) return;
  2600. Module['dynCall_vidd'](GLFW.active.cursorPosFunc, GLFW.active.id, Browser.mouseX, Browser.mouseY);
  2601. },DOMToGLFWMouseButton:function (event) {
  2602. // DOM and glfw have different button codes.
  2603. // See http://www.w3schools.com/jsref/event_button.asp.
  2604. var eventButton = event['button'];
  2605. if (eventButton > 0) {
  2606. if (eventButton == 1) {
  2607. eventButton = 2;
  2608. } else {
  2609. eventButton = 1;
  2610. }
  2611. }
  2612. return eventButton;
  2613. },onMouseenter:function (event) {
  2614. if (!GLFW.active) return;
  2615. if (event.target != Module["canvas"] || !GLFW.active.cursorEnterFunc) return;
  2616. Module['dynCall_vii'](GLFW.active.cursorEnterFunc, GLFW.active.id, 1);
  2617. },onMouseleave:function (event) {
  2618. if (!GLFW.active) return;
  2619. if (event.target != Module["canvas"] || !GLFW.active.cursorEnterFunc) return;
  2620. Module['dynCall_vii'](GLFW.active.cursorEnterFunc, GLFW.active.id, 0);
  2621. },onMouseButtonChanged:function (event, status) {
  2622. if (!GLFW.active) return;
  2623. Browser.calculateMouseEvent(event);
  2624. if (event.target != Module["canvas"]) return;
  2625. eventButton = GLFW.DOMToGLFWMouseButton(event);
  2626. if (status == 1) { // GLFW_PRESS
  2627. GLFW.active.buttons |= (1 << eventButton);
  2628. try {
  2629. event.target.setCapture();
  2630. } catch (e) {}
  2631. } else { // GLFW_RELEASE
  2632. GLFW.active.buttons &= ~(1 << eventButton);
  2633. }
  2634. if (!GLFW.active.mouseButtonFunc) return;
  2635. Module['dynCall_viiii'](GLFW.active.mouseButtonFunc, GLFW.active.id, eventButton, status, GLFW.getModBits(GLFW.active));
  2636. },onMouseButtonDown:function (event) {
  2637. if (!GLFW.active) return;
  2638. GLFW.onMouseButtonChanged(event, 1); // GLFW_PRESS
  2639. },onMouseButtonUp:function (event) {
  2640. if (!GLFW.active) return;
  2641. GLFW.onMouseButtonChanged(event, 0); // GLFW_RELEASE
  2642. },onMouseWheel:function (event) {
  2643. // Note the minus sign that flips browser wheel direction (positive direction scrolls page down) to native wheel direction (positive direction is mouse wheel up)
  2644. var delta = -Browser.getMouseWheelDelta(event);
  2645. delta = (delta == 0) ? 0 : (delta > 0 ? Math.max(delta, 1) : Math.min(delta, -1)); // Quantize to integer so that minimum scroll is at least +/- 1.
  2646. GLFW.wheelPos += delta;
  2647. if (!GLFW.active || !GLFW.active.scrollFunc || event.target != Module['canvas']) return;
  2648. var sx = 0;
  2649. var sy = 0;
  2650. if (event.type == 'mousewheel') {
  2651. sx = event.wheelDeltaX;
  2652. sy = event.wheelDeltaY;
  2653. } else {
  2654. sx = event.deltaX;
  2655. sy = event.deltaY;
  2656. }
  2657. Module['dynCall_vidd'](GLFW.active.scrollFunc, GLFW.active.id, sx, sy);
  2658. event.preventDefault();
  2659. },onCanvasResize:function (width, height) {
  2660. if (!GLFW.active) return;
  2661. var resizeNeeded = true;
  2662. // If the client is requestiong fullscreen mode
  2663. if (document["fullscreen"] || document["fullScreen"] || document["mozFullScreen"] || document["webkitIsFullScreen"]) {
  2664. GLFW.active.storedX = GLFW.active.x;
  2665. GLFW.active.storedY = GLFW.active.y;
  2666. GLFW.active.storedWidth = GLFW.active.width;
  2667. GLFW.active.storedHeight = GLFW.active.height;
  2668. GLFW.active.x = GLFW.active.y = 0;
  2669. GLFW.active.width = screen.width;
  2670. GLFW.active.height = screen.height;
  2671. GLFW.active.fullscreen = true;
  2672. // If the client is reverting from fullscreen mode
  2673. } else if (GLFW.active.fullscreen == true) {
  2674. GLFW.active.x = GLFW.active.storedX;
  2675. GLFW.active.y = GLFW.active.storedY;
  2676. GLFW.active.width = GLFW.active.storedWidth;
  2677. GLFW.active.height = GLFW.active.storedHeight;
  2678. GLFW.active.fullscreen = false;
  2679. // If the width/height values do not match current active window sizes
  2680. } else if (GLFW.active.width != width || GLFW.active.height != height) {
  2681. GLFW.active.width = width;
  2682. GLFW.active.height = height;
  2683. } else {
  2684. resizeNeeded = false;
  2685. }
  2686. // If any of the above conditions were true, we need to resize the canvas
  2687. if (resizeNeeded) {
  2688. // resets the canvas size to counter the aspect preservation of Browser.updateCanvasDimensions
  2689. Browser.setCanvasSize(GLFW.active.width, GLFW.active.height, true);
  2690. // TODO: Client dimensions (clientWidth/clientHeight) vs pixel dimensions (width/height) of
  2691. // the canvas should drive window and framebuffer size respectfully.
  2692. GLFW.onWindowSizeChanged();
  2693. GLFW.onFramebufferSizeChanged();
  2694. }
  2695. },onWindowSizeChanged:function () {
  2696. if (!GLFW.active) return;
  2697. if (!GLFW.active.windowSizeFunc) return;
  2698. Module['dynCall_viii'](GLFW.active.windowSizeFunc, GLFW.active.id, GLFW.active.width, GLFW.active.height);
  2699. },onFramebufferSizeChanged:function () {
  2700. if (!GLFW.active) return;
  2701. if (!GLFW.active.framebufferSizeFunc) return;
  2702. Module['dynCall_viii'](GLFW.active.framebufferSizeFunc, GLFW.active.id, GLFW.active.width, GLFW.active.height);
  2703. },requestFullscreen:function () {
  2704. var RFS = Module["canvas"]['requestFullscreen'] ||
  2705. Module["canvas"]['mozRequestFullScreen'] ||
  2706. Module["canvas"]['webkitRequestFullScreen'] ||
  2707. (function() {});
  2708. RFS.apply(Module["canvas"], []);
  2709. },requestFullScreen:function () {
  2710. Module.printErr('GLFW.requestFullScreen() is deprecated. Please call GLFW.requestFullscreen instead.');
  2711. GLFW.requestFullScreen = function() {
  2712. return GLFW.requestFullscreen();
  2713. }
  2714. return GLFW.requestFullscreen();
  2715. },exitFullscreen:function () {
  2716. var CFS = document['exitFullscreen'] ||
  2717. document['cancelFullScreen'] ||
  2718. document['mozCancelFullScreen'] ||
  2719. document['webkitCancelFullScreen'] ||
  2720. (function() {});
  2721. CFS.apply(document, []);
  2722. },cancelFullScreen:function () {
  2723. Module.printErr('GLFW.cancelFullScreen() is deprecated. Please call GLFW.exitFullscreen instead.');
  2724. GLFW.cancelFullScreen = function() {
  2725. return GLFW.exitFullscreen();
  2726. }
  2727. return GLFW.exitFullscreen();
  2728. },getTime:function () {
  2729. return _emscripten_get_now() / 1000;
  2730. },setWindowTitle:function (winid, title) {
  2731. var win = GLFW.WindowFromId(winid);
  2732. if (!win) return;
  2733. win.title = Pointer_stringify(title);
  2734. if (GLFW.active.id == win.id) {
  2735. document.title = win.title;
  2736. }
  2737. },setKeyCallback:function (winid, cbfun) {
  2738. var win = GLFW.WindowFromId(winid);
  2739. if (!win) return;
  2740. win.keyFunc = cbfun;
  2741. },setCharCallback:function (winid, cbfun) {
  2742. var win = GLFW.WindowFromId(winid);
  2743. if (!win) return;
  2744. win.charFunc = cbfun;
  2745. },setMouseButtonCallback:function (winid, cbfun) {
  2746. var win = GLFW.WindowFromId(winid);
  2747. if (!win) return;
  2748. win.mouseButtonFunc = cbfun;
  2749. },setCursorPosCallback:function (winid, cbfun) {
  2750. var win = GLFW.WindowFromId(winid);
  2751. if (!win) return;
  2752. win.cursorPosFunc = cbfun;
  2753. },setScrollCallback:function (winid, cbfun) {
  2754. var win = GLFW.WindowFromId(winid);
  2755. if (!win) return;
  2756. win.scrollFunc = cbfun;
  2757. },setWindowSizeCallback:function (winid, cbfun) {
  2758. var win = GLFW.WindowFromId(winid);
  2759. if (!win) return;
  2760. win.windowSizeFunc = cbfun;
  2761. },setWindowCloseCallback:function (winid, cbfun) {
  2762. var win = GLFW.WindowFromId(winid);
  2763. if (!win) return;
  2764. win.windowCloseFunc = cbfun;
  2765. },setWindowRefreshCallback:function (winid, cbfun) {
  2766. var win = GLFW.WindowFromId(winid);
  2767. if (!win) return;
  2768. win.windowRefreshFunc = cbfun;
  2769. },onClickRequestPointerLock:function (e) {
  2770. if (!Browser.pointerLock && Module['canvas'].requestPointerLock) {
  2771. Module['canvas'].requestPointerLock();
  2772. e.preventDefault();
  2773. }
  2774. },setInputMode:function (winid, mode, value) {
  2775. var win = GLFW.WindowFromId(winid);
  2776. if (!win) return;
  2777. switch(mode) {
  2778. case 0x00033001: { // GLFW_CURSOR
  2779. switch(value) {
  2780. case 0x00034001: { // GLFW_CURSOR_NORMAL
  2781. win.inputModes[mode] = value;
  2782. Module['canvas'].removeEventListener('click', GLFW.onClickRequestPointerLock, true);
  2783. Module['canvas'].exitPointerLock();
  2784. break;
  2785. }
  2786. case 0x00034002: { // GLFW_CURSOR_HIDDEN
  2787. console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");
  2788. break;
  2789. }
  2790. case 0x00034003: { // GLFW_CURSOR_DISABLED
  2791. win.inputModes[mode] = value;
  2792. Module['canvas'].addEventListener('click', GLFW.onClickRequestPointerLock, true);
  2793. Module['canvas'].requestPointerLock();
  2794. break;
  2795. }
  2796. default: {
  2797. console.log("glfwSetInputMode called with unknown value parameter value: " + value + ".");
  2798. break;
  2799. }
  2800. }
  2801. break;
  2802. }
  2803. case 0x00033002: { // GLFW_STICKY_KEYS
  2804. console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");
  2805. break;
  2806. }
  2807. case 0x00033003: { // GLFW_STICKY_MOUSE_BUTTONS
  2808. console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");
  2809. break;
  2810. }
  2811. default: {
  2812. console.log("glfwSetInputMode called with unknown mode parameter value: " + mode + ".");
  2813. break;
  2814. }
  2815. }
  2816. },getKey:function (winid, key) {
  2817. var win = GLFW.WindowFromId(winid);
  2818. if (!win) return 0;
  2819. return win.keys[key];
  2820. },getMouseButton:function (winid, button) {
  2821. var win = GLFW.WindowFromId(winid);
  2822. if (!win) return 0;
  2823. return (win.buttons & (1 << button)) > 0;
  2824. },getCursorPos:function (winid, x, y) {
  2825. setValue(x, Browser.mouseX, 'double');
  2826. setValue(y, Browser.mouseY, 'double');
  2827. },getMousePos:function (winid, x, y) {
  2828. setValue(x, Browser.mouseX, 'i32');
  2829. setValue(y, Browser.mouseY, 'i32');
  2830. },setCursorPos:function (winid, x, y) {
  2831. },getWindowPos:function (winid, x, y) {
  2832. var wx = 0;
  2833. var wy = 0;
  2834. var win = GLFW.WindowFromId(winid);
  2835. if (win) {
  2836. wx = win.x;
  2837. wy = win.y;
  2838. }
  2839. setValue(x, wx, 'i32');
  2840. setValue(y, wy, 'i32');
  2841. },setWindowPos:function (winid, x, y) {
  2842. var win = GLFW.WindowFromId(winid);
  2843. if (!win) return;
  2844. win.x = x;
  2845. win.y = y;
  2846. },getWindowSize:function (winid, width, height) {
  2847. var ww = 0;
  2848. var wh = 0;
  2849. var win = GLFW.WindowFromId(winid);
  2850. if (win) {
  2851. ww = win.width;
  2852. wh = win.height;
  2853. }
  2854. setValue(width, ww, 'i32');
  2855. setValue(height, wh, 'i32');
  2856. },setWindowSize:function (winid, width, height) {
  2857. var win = GLFW.WindowFromId(winid);
  2858. if (!win) return;
  2859. if (GLFW.active.id == win.id) {
  2860. if (width == screen.width && height == screen.height) {
  2861. GLFW.requestFullscreen();
  2862. } else {
  2863. GLFW.exitFullscreen();
  2864. Browser.setCanvasSize(width, height);
  2865. win.width = width;
  2866. win.height = height;
  2867. }
  2868. }
  2869. if (!win.windowSizeFunc) return;
  2870. Module['dynCall_viii'](win.windowSizeFunc, win.id, width, height);
  2871. },createWindow:function (width, height, title, monitor, share) {
  2872. var i, id;
  2873. for (i = 0; i < GLFW.windows.length && GLFW.windows[i] !== null; i++);
  2874. if (i > 0) throw "glfwCreateWindow only supports one window at time currently";
  2875. // id for window
  2876. id = i + 1;
  2877. // not valid
  2878. if (width <= 0 || height <= 0) return 0;
  2879. if (monitor) {
  2880. GLFW.requestFullscreen();
  2881. } else {
  2882. Browser.setCanvasSize(width, height);
  2883. }
  2884. // Create context when there are no existing alive windows
  2885. for (i = 0; i < GLFW.windows.length && GLFW.windows[i] == null; i++);
  2886. if (i == GLFW.windows.length) {
  2887. var contextAttributes = {
  2888. antialias: (GLFW.hints[0x0002100D] > 1), // GLFW_SAMPLES
  2889. depth: (GLFW.hints[0x00021005] > 0), // GLFW_DEPTH_BITS
  2890. stencil: (GLFW.hints[0x00021006] > 0), // GLFW_STENCIL_BITS
  2891. alpha: (GLFW.hints[0x00021004] > 0) // GLFW_ALPHA_BITS
  2892. }
  2893. Module.ctx = Browser.createContext(Module['canvas'], true, true, contextAttributes);
  2894. }
  2895. // If context creation failed, do not return a valid window
  2896. if (!Module.ctx) return 0;
  2897. // Get non alive id
  2898. var win = new GLFW.Window(id, width, height, title, monitor, share);
  2899. // Set window to array
  2900. if (id - 1 == GLFW.windows.length) {
  2901. GLFW.windows.push(win);
  2902. } else {
  2903. GLFW.windows[id - 1] = win;
  2904. }
  2905. GLFW.active = win;
  2906. return win.id;
  2907. },destroyWindow:function (winid) {
  2908. var win = GLFW.WindowFromId(winid);
  2909. if (!win) return;
  2910. if (win.windowCloseFunc)
  2911. Module['dynCall_vi'](win.windowCloseFunc, win.id);
  2912. GLFW.windows[win.id - 1] = null;
  2913. if (GLFW.active.id == win.id)
  2914. GLFW.active = null;
  2915. // Destroy context when no alive windows
  2916. for (var i = 0; i < GLFW.windows.length; i++)
  2917. if (GLFW.windows[i] !== null) return;
  2918. Module.ctx = Browser.destroyContext(Module['canvas'], true, true);
  2919. },swapBuffers:function (winid) {
  2920. },GLFW2ParamToGLFW3Param:function (param) {
  2921. table = {
  2922. 0x00030001:0, // GLFW_MOUSE_CURSOR
  2923. 0x00030002:0, // GLFW_STICKY_KEYS
  2924. 0x00030003:0, // GLFW_STICKY_MOUSE_BUTTONS
  2925. 0x00030004:0, // GLFW_SYSTEM_KEYS
  2926. 0x00030005:0, // GLFW_KEY_REPEAT
  2927. 0x00030006:0, // GLFW_AUTO_POLL_EVENTS
  2928. 0x00020001:0, // GLFW_OPENED
  2929. 0x00020002:0, // GLFW_ACTIVE
  2930. 0x00020003:0, // GLFW_ICONIFIED
  2931. 0x00020004:0, // GLFW_ACCELERATED
  2932. 0x00020005:0x00021001, // GLFW_RED_BITS
  2933. 0x00020006:0x00021002, // GLFW_GREEN_BITS
  2934. 0x00020007:0x00021003, // GLFW_BLUE_BITS
  2935. 0x00020008:0x00021004, // GLFW_ALPHA_BITS
  2936. 0x00020009:0x00021005, // GLFW_DEPTH_BITS
  2937. 0x0002000A:0x00021006, // GLFW_STENCIL_BITS
  2938. 0x0002000B:0x0002100F, // GLFW_REFRESH_RATE
  2939. 0x0002000C:0x00021007, // GLFW_ACCUM_RED_BITS
  2940. 0x0002000D:0x00021008, // GLFW_ACCUM_GREEN_BITS
  2941. 0x0002000E:0x00021009, // GLFW_ACCUM_BLUE_BITS
  2942. 0x0002000F:0x0002100A, // GLFW_ACCUM_ALPHA_BITS
  2943. 0x00020010:0x0002100B, // GLFW_AUX_BUFFERS
  2944. 0x00020011:0x0002100C, // GLFW_STEREO
  2945. 0x00020012:0, // GLFW_WINDOW_NO_RESIZE
  2946. 0x00020013:0x0002100D, // GLFW_FSAA_SAMPLES
  2947. 0x00020014:0x00022002, // GLFW_OPENGL_VERSION_MAJOR
  2948. 0x00020015:0x00022003, // GLFW_OPENGL_VERSION_MINOR
  2949. 0x00020016:0x00022006, // GLFW_OPENGL_FORWARD_COMPAT
  2950. 0x00020017:0x00022007, // GLFW_OPENGL_DEBUG_CONTEXT
  2951. 0x00020018:0x00022008, // GLFW_OPENGL_PROFILE
  2952. };
  2953. return table[param];
  2954. }};function _glfwGetVideoModes(monitor, count) {
  2955. setValue(count, 0, 'i32');
  2956. return 0;
  2957. }
  2958. function _glLinkProgram(program) {
  2959. GLctx.linkProgram(GL.programs[program]);
  2960. GL.programInfos[program] = null; // uniforms no longer keep the same names after linking
  2961. GL.populateUniformTable(program);
  2962. }
  2963. function _glBindTexture(target, texture) {
  2964. GLctx.bindTexture(target, texture ? GL.textures[texture] : null);
  2965. }
  2966. function _emscripten_glStencilFunc(x0, x1, x2) { GLctx['stencilFunc'](x0, x1, x2) }
  2967. function _glGetString(name_) {
  2968. if (GL.stringCache[name_]) return GL.stringCache[name_];
  2969. var ret;
  2970. switch(name_) {
  2971. case 0x1F00 /* GL_VENDOR */:
  2972. case 0x1F01 /* GL_RENDERER */:
  2973. case 0x9245 /* UNMASKED_VENDOR_WEBGL */:
  2974. case 0x9246 /* UNMASKED_RENDERER_WEBGL */:
  2975. ret = allocate(intArrayFromString(GLctx.getParameter(name_)), 'i8', ALLOC_NORMAL);
  2976. break;
  2977. case 0x1F02 /* GL_VERSION */:
  2978. var glVersion = GLctx.getParameter(GLctx.VERSION);
  2979. // return GLES version string corresponding to the version of the WebGL context
  2980. {
  2981. glVersion = 'OpenGL ES 2.0 (' + glVersion + ')';
  2982. }
  2983. ret = allocate(intArrayFromString(glVersion), 'i8', ALLOC_NORMAL);
  2984. break;
  2985. case 0x1F03 /* GL_EXTENSIONS */:
  2986. var exts = GLctx.getSupportedExtensions();
  2987. var gl_exts = [];
  2988. for (var i = 0; i < exts.length; ++i) {
  2989. gl_exts.push(exts[i]);
  2990. gl_exts.push("GL_" + exts[i]);
  2991. }
  2992. ret = allocate(intArrayFromString(gl_exts.join(' ')), 'i8', ALLOC_NORMAL);
  2993. break;
  2994. case 0x8B8C /* GL_SHADING_LANGUAGE_VERSION */:
  2995. var glslVersion = GLctx.getParameter(GLctx.SHADING_LANGUAGE_VERSION);
  2996. // extract the version number 'N.M' from the string 'WebGL GLSL ES N.M ...'
  2997. var ver_re = /^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;
  2998. var ver_num = glslVersion.match(ver_re);
  2999. if (ver_num !== null) {
  3000. if (ver_num[1].length == 3) ver_num[1] = ver_num[1] + '0'; // ensure minor version has 2 digits
  3001. glslVersion = 'OpenGL ES GLSL ES ' + ver_num[1] + ' (' + glslVersion + ')';
  3002. }
  3003. ret = allocate(intArrayFromString(glslVersion), 'i8', ALLOC_NORMAL);
  3004. break;
  3005. default:
  3006. GL.recordError(0x0500/*GL_INVALID_ENUM*/);
  3007. return 0;
  3008. }
  3009. GL.stringCache[name_] = ret;
  3010. return ret;
  3011. }
  3012. function _emscripten_glUniform3iv(location, count, value) {
  3013. GLctx.uniform3iv(GL.uniforms[location], HEAP32.subarray((value)>>2,(value+count*12)>>2));
  3014. }
  3015. function _emscripten_glShaderSource(shader, count, string, length) {
  3016. var source = GL.getSource(shader, count, string, length);
  3017. GLctx.shaderSource(GL.shaders[shader], source);
  3018. }
  3019. function _emscripten_glReleaseShaderCompiler() {
  3020. // NOP (as allowed by GLES 2.0 spec)
  3021. }
  3022. function _glfwSetScrollCallback(winid, cbfun) {
  3023. GLFW.setScrollCallback(winid, cbfun);
  3024. }
  3025. function _emscripten_glTexParameterf(x0, x1, x2) { GLctx['texParameterf'](x0, x1, x2) }
  3026. function _emscripten_glTexParameteri(x0, x1, x2) { GLctx['texParameteri'](x0, x1, x2) }
  3027. function _glCompileShader(shader) {
  3028. GLctx.compileShader(GL.shaders[shader]);
  3029. }
  3030. var SYSCALLS={varargs:0,get:function (varargs) {
  3031. SYSCALLS.varargs += 4;
  3032. var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)];
  3033. return ret;
  3034. },getStr:function () {
  3035. var ret = Pointer_stringify(SYSCALLS.get());
  3036. return ret;
  3037. },get64:function () {
  3038. var low = SYSCALLS.get(), high = SYSCALLS.get();
  3039. if (low >= 0) assert(high === 0);
  3040. else assert(high === -1);
  3041. return low;
  3042. },getZero:function () {
  3043. assert(SYSCALLS.get() === 0);
  3044. }};function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs;
  3045. try {
  3046. // ioctl
  3047. return 0;
  3048. } catch (e) {
  3049. if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
  3050. return -e.errno;
  3051. }
  3052. }
  3053. function _emscripten_glSampleCoverage(value, invert) {
  3054. GLctx.sampleCoverage(value, !!invert);
  3055. }
  3056. function _glDeleteTextures(n, textures) {
  3057. for (var i = 0; i < n; i++) {
  3058. var id = HEAP32[(((textures)+(i*4))>>2)];
  3059. var texture = GL.textures[id];
  3060. if (!texture) continue; // GL spec: "glDeleteTextures silently ignores 0s and names that do not correspond to existing textures".
  3061. GLctx.deleteTexture(texture);
  3062. texture.name = 0;
  3063. GL.textures[id] = null;
  3064. }
  3065. }
  3066. function _emscripten_glFrustum() {
  3067. Module['printErr']('missing function: emscripten_glFrustum'); abort(-1);
  3068. }
  3069. function _glfwSetWindowSizeCallback(winid, cbfun) {
  3070. GLFW.setWindowSizeCallback(winid, cbfun);
  3071. }
  3072. function _emscripten_glGetTexParameterfv(target, pname, params) {
  3073. if (!params) {
  3074. // GLES2 specification does not specify how to behave if params is a null pointer. Since calling this function does not make sense
  3075. // if p == null, issue a GL error to notify user about it.
  3076. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  3077. return;
  3078. }
  3079. HEAPF32[((params)>>2)]=GLctx.getTexParameter(target, pname);
  3080. }
  3081. function _emscripten_glUniform4i(location, v0, v1, v2, v3) {
  3082. GLctx.uniform4i(GL.uniforms[location], v0, v1, v2, v3);
  3083. }
  3084. function _emscripten_glBindRenderbuffer(target, renderbuffer) {
  3085. GLctx.bindRenderbuffer(target, renderbuffer ? GL.renderbuffers[renderbuffer] : null);
  3086. }
  3087. var AL={contexts:[],currentContext:null,alcErr:0,stringCache:{},alcStringCache:{},QUEUE_INTERVAL:25,QUEUE_LOOKAHEAD:100,newSrcId:1,updateSources:function updateSources(context) {
  3088. // If we are animating using the requestAnimationFrame method, then the main loop does not run when in the background.
  3089. // To give a perfect glitch-free audio stop when switching from foreground to background, we need to avoid updating
  3090. // audio altogether when in the background, so detect that case and kill audio buffer streaming if so.
  3091. if (Browser.mainLoop.timingMode == 1/*EM_TIMING_RAF*/ && document['visibilityState'] != 'visible') return;
  3092. for (var srcId in context.src) {
  3093. AL.updateSource(context.src[srcId]);
  3094. }
  3095. },updateSource:function updateSource(src) {
  3096. // See comment on updateSources above.
  3097. if (Browser.mainLoop.timingMode == 1/*EM_TIMING_RAF*/ && document['visibilityState'] != 'visible') return;
  3098. if (src.state !== 0x1012 /* AL_PLAYING */) {
  3099. return;
  3100. }
  3101. var currentTime = src.context.ctx.currentTime;
  3102. var startTime = src.bufferPosition;
  3103. for (var i = src.buffersPlayed; i < src.queue.length; i++) {
  3104. var entry = src.queue[i];
  3105. var startOffset = (startTime - currentTime) / src.playbackRate;
  3106. var endTime;
  3107. if (entry.src) endTime = startTime + entry.src.duration; // n.b. entry.src.duration already factors in playbackRate, so no divide by src.playbackRate on it.
  3108. else endTime = startTime + entry.buffer.duration / src.playbackRate;
  3109. // Clean up old buffers.
  3110. if (currentTime >= endTime) {
  3111. // Update our location in the queue.
  3112. src.bufferPosition = endTime;
  3113. src.buffersPlayed = i + 1;
  3114. // Stop / restart the source when we hit the end.
  3115. if (src.buffersPlayed >= src.queue.length) {
  3116. if (src.loop) {
  3117. AL.setSourceState(src, 0x1012 /* AL_PLAYING */);
  3118. } else {
  3119. AL.setSourceState(src, 0x1014 /* AL_STOPPED */);
  3120. }
  3121. }
  3122. }
  3123. // Process all buffers that'll be played before the next tick.
  3124. else if (startOffset < (AL.QUEUE_LOOKAHEAD / 1000) && !entry.src) {
  3125. // If the start offset is negative, we need to offset the actual buffer.
  3126. var offset = Math.abs(Math.min(startOffset, 0));
  3127. entry.src = src.context.ctx.createBufferSource();
  3128. entry.src.buffer = entry.buffer;
  3129. entry.src.connect(src.gain);
  3130. if (src.playbackRate != 1.0) entry.src.playbackRate.value = src.playbackRate;
  3131. entry.src.duration = entry.buffer.duration / src.playbackRate;
  3132. if (typeof(entry.src.start) !== 'undefined') {
  3133. entry.src.start(startTime, offset);
  3134. } else if (typeof(entry.src.noteOn) !== 'undefined') {
  3135. entry.src.noteOn(startTime);
  3136. }
  3137. }
  3138. startTime = endTime;
  3139. }
  3140. },setSourceState:function setSourceState(src, state) {
  3141. if (state === 0x1012 /* AL_PLAYING */) {
  3142. if (src.state !== 0x1013 /* AL_PAUSED */) {
  3143. src.state = 0x1012 /* AL_PLAYING */;
  3144. // Reset our position.
  3145. src.bufferPosition = AL.currentContext.ctx.currentTime;
  3146. src.buffersPlayed = 0;
  3147. } else {
  3148. src.state = 0x1012 /* AL_PLAYING */;
  3149. // Use the current offset from src.bufferPosition to resume at the correct point.
  3150. src.bufferPosition = AL.currentContext.ctx.currentTime - src.bufferPosition;
  3151. }
  3152. AL.stopSourceQueue(src);
  3153. AL.updateSource(src);
  3154. } else if (state === 0x1013 /* AL_PAUSED */) {
  3155. if (src.state === 0x1012 /* AL_PLAYING */) {
  3156. src.state = 0x1013 /* AL_PAUSED */;
  3157. // Store off the current offset to restore with on resume.
  3158. src.bufferPosition = AL.currentContext.ctx.currentTime - src.bufferPosition;
  3159. AL.stopSourceQueue(src);
  3160. }
  3161. } else if (state === 0x1014 /* AL_STOPPED */) {
  3162. if (src.state !== 0x1011 /* AL_INITIAL */) {
  3163. src.state = 0x1014 /* AL_STOPPED */;
  3164. src.buffersPlayed = src.queue.length;
  3165. AL.stopSourceQueue(src);
  3166. }
  3167. } else if (state == 0x1011 /* AL_INITIAL */) {
  3168. if (src.state !== 0x1011 /* AL_INITIAL */) {
  3169. src.state = 0x1011 /* AL_INITIAL */;
  3170. src.bufferPosition = 0;
  3171. src.buffersPlayed = 0;
  3172. }
  3173. }
  3174. },stopSourceQueue:function stopSourceQueue(src) {
  3175. for (var i = 0; i < src.queue.length; i++) {
  3176. var entry = src.queue[i];
  3177. if (entry.src) {
  3178. entry.src.stop(0);
  3179. entry.src = null;
  3180. }
  3181. }
  3182. }};function _alcGetCurrentContext() {
  3183. for (var i = 0; i < AL.contexts.length; ++i) {
  3184. if (AL.contexts[i] == AL.currentContext) {
  3185. return i + 1;
  3186. }
  3187. }
  3188. return 0;
  3189. }
  3190. function _emscripten_glViewport(x0, x1, x2, x3) { GLctx['viewport'](x0, x1, x2, x3) }
  3191. var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,lastGamepadState:null,lastGamepadStateFrame:null,numGamepadsConnected:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,staticInit:function () {
  3192. if (typeof window !== 'undefined') {
  3193. window.addEventListener("gamepadconnected", function() { ++JSEvents.numGamepadsConnected; });
  3194. window.addEventListener("gamepaddisconnected", function() { --JSEvents.numGamepadsConnected; });
  3195. }
  3196. },registerRemoveEventListeners:function () {
  3197. if (!JSEvents.removeEventListenersRegistered) {
  3198. __ATEXIT__.push(function() {
  3199. for(var i = JSEvents.eventHandlers.length-1; i >= 0; --i) {
  3200. JSEvents._removeHandler(i);
  3201. }
  3202. });
  3203. JSEvents.removeEventListenersRegistered = true;
  3204. }
  3205. },findEventTarget:function (target) {
  3206. if (target) {
  3207. if (typeof target == "number") {
  3208. target = Pointer_stringify(target);
  3209. }
  3210. if (target == '#window') return window;
  3211. else if (target == '#document') return document;
  3212. else if (target == '#screen') return window.screen;
  3213. else if (target == '#canvas') return Module['canvas'];
  3214. if (typeof target == 'string') return document.getElementById(target);
  3215. else return target;
  3216. } else {
  3217. // The sensible target varies between events, but use window as the default
  3218. // since DOM events mostly can default to that. Specific callback registrations
  3219. // override their own defaults.
  3220. return window;
  3221. }
  3222. },deferredCalls:[],deferCall:function (targetFunction, precedence, argsList) {
  3223. function arraysHaveEqualContent(arrA, arrB) {
  3224. if (arrA.length != arrB.length) return false;
  3225. for(var i in arrA) {
  3226. if (arrA[i] != arrB[i]) return false;
  3227. }
  3228. return true;
  3229. }
  3230. // Test if the given call was already queued, and if so, don't add it again.
  3231. for(var i in JSEvents.deferredCalls) {
  3232. var call = JSEvents.deferredCalls[i];
  3233. if (call.targetFunction == targetFunction && arraysHaveEqualContent(call.argsList, argsList)) {
  3234. return;
  3235. }
  3236. }
  3237. JSEvents.deferredCalls.push({
  3238. targetFunction: targetFunction,
  3239. precedence: precedence,
  3240. argsList: argsList
  3241. });
  3242. JSEvents.deferredCalls.sort(function(x,y) { return x.precedence < y.precedence; });
  3243. },removeDeferredCalls:function (targetFunction) {
  3244. for(var i = 0; i < JSEvents.deferredCalls.length; ++i) {
  3245. if (JSEvents.deferredCalls[i].targetFunction == targetFunction) {
  3246. JSEvents.deferredCalls.splice(i, 1);
  3247. --i;
  3248. }
  3249. }
  3250. },canPerformEventHandlerRequests:function () {
  3251. return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls;
  3252. },runDeferredCalls:function () {
  3253. if (!JSEvents.canPerformEventHandlerRequests()) {
  3254. return;
  3255. }
  3256. for(var i = 0; i < JSEvents.deferredCalls.length; ++i) {
  3257. var call = JSEvents.deferredCalls[i];
  3258. JSEvents.deferredCalls.splice(i, 1);
  3259. --i;
  3260. call.targetFunction.apply(this, call.argsList);
  3261. }
  3262. },inEventHandler:0,currentEventHandler:null,eventHandlers:[],isInternetExplorer:function () { return navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0; },removeAllHandlersOnTarget:function (target, eventTypeString) {
  3263. for(var i = 0; i < JSEvents.eventHandlers.length; ++i) {
  3264. if (JSEvents.eventHandlers[i].target == target &&
  3265. (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i].eventTypeString)) {
  3266. JSEvents._removeHandler(i--);
  3267. }
  3268. }
  3269. },_removeHandler:function (i) {
  3270. var h = JSEvents.eventHandlers[i];
  3271. h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture);
  3272. JSEvents.eventHandlers.splice(i, 1);
  3273. },registerOrRemoveHandler:function (eventHandler) {
  3274. var jsEventHandler = function jsEventHandler(event) {
  3275. // Increment nesting count for the event handler.
  3276. ++JSEvents.inEventHandler;
  3277. JSEvents.currentEventHandler = eventHandler;
  3278. // Process any old deferred calls the user has placed.
  3279. JSEvents.runDeferredCalls();
  3280. // Process the actual event, calls back to user C code handler.
  3281. eventHandler.handlerFunc(event);
  3282. // Process any new deferred calls that were placed right now from this event handler.
  3283. JSEvents.runDeferredCalls();
  3284. // Out of event handler - restore nesting count.
  3285. --JSEvents.inEventHandler;
  3286. }
  3287. if (eventHandler.callbackfunc) {
  3288. eventHandler.eventListenerFunc = jsEventHandler;
  3289. eventHandler.target.addEventListener(eventHandler.eventTypeString, jsEventHandler, eventHandler.useCapture);
  3290. JSEvents.eventHandlers.push(eventHandler);
  3291. JSEvents.registerRemoveEventListeners();
  3292. } else {
  3293. for(var i = 0; i < JSEvents.eventHandlers.length; ++i) {
  3294. if (JSEvents.eventHandlers[i].target == eventHandler.target
  3295. && JSEvents.eventHandlers[i].eventTypeString == eventHandler.eventTypeString) {
  3296. JSEvents._removeHandler(i--);
  3297. }
  3298. }
  3299. }
  3300. },registerKeyEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3301. if (!JSEvents.keyEvent) {
  3302. JSEvents.keyEvent = _malloc( 164 );
  3303. }
  3304. var handlerFunc = function(event) {
  3305. var e = event || window.event;
  3306. stringToUTF8(e.key ? e.key : "", JSEvents.keyEvent + 0, 32);
  3307. stringToUTF8(e.code ? e.code : "", JSEvents.keyEvent + 32, 32);
  3308. HEAP32[(((JSEvents.keyEvent)+(64))>>2)]=e.location;
  3309. HEAP32[(((JSEvents.keyEvent)+(68))>>2)]=e.ctrlKey;
  3310. HEAP32[(((JSEvents.keyEvent)+(72))>>2)]=e.shiftKey;
  3311. HEAP32[(((JSEvents.keyEvent)+(76))>>2)]=e.altKey;
  3312. HEAP32[(((JSEvents.keyEvent)+(80))>>2)]=e.metaKey;
  3313. HEAP32[(((JSEvents.keyEvent)+(84))>>2)]=e.repeat;
  3314. stringToUTF8(e.locale ? e.locale : "", JSEvents.keyEvent + 88, 32);
  3315. stringToUTF8(e.char ? e.char : "", JSEvents.keyEvent + 120, 32);
  3316. HEAP32[(((JSEvents.keyEvent)+(152))>>2)]=e.charCode;
  3317. HEAP32[(((JSEvents.keyEvent)+(156))>>2)]=e.keyCode;
  3318. HEAP32[(((JSEvents.keyEvent)+(160))>>2)]=e.which;
  3319. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.keyEvent, userData);
  3320. if (shouldCancel) {
  3321. e.preventDefault();
  3322. }
  3323. };
  3324. var eventHandler = {
  3325. target: JSEvents.findEventTarget(target),
  3326. allowsDeferredCalls: JSEvents.isInternetExplorer() ? false : true, // MSIE doesn't allow fullscreen and pointerlock requests from key handlers, others do.
  3327. eventTypeString: eventTypeString,
  3328. callbackfunc: callbackfunc,
  3329. handlerFunc: handlerFunc,
  3330. useCapture: useCapture
  3331. };
  3332. JSEvents.registerOrRemoveHandler(eventHandler);
  3333. },getBoundingClientRectOrZeros:function (target) {
  3334. return target.getBoundingClientRect ? target.getBoundingClientRect() : { left: 0, top: 0 };
  3335. },fillMouseEventData:function (eventStruct, e, target) {
  3336. HEAPF64[((eventStruct)>>3)]=JSEvents.tick();
  3337. HEAP32[(((eventStruct)+(8))>>2)]=e.screenX;
  3338. HEAP32[(((eventStruct)+(12))>>2)]=e.screenY;
  3339. HEAP32[(((eventStruct)+(16))>>2)]=e.clientX;
  3340. HEAP32[(((eventStruct)+(20))>>2)]=e.clientY;
  3341. HEAP32[(((eventStruct)+(24))>>2)]=e.ctrlKey;
  3342. HEAP32[(((eventStruct)+(28))>>2)]=e.shiftKey;
  3343. HEAP32[(((eventStruct)+(32))>>2)]=e.altKey;
  3344. HEAP32[(((eventStruct)+(36))>>2)]=e.metaKey;
  3345. HEAP16[(((eventStruct)+(40))>>1)]=e.button;
  3346. HEAP16[(((eventStruct)+(42))>>1)]=e.buttons;
  3347. HEAP32[(((eventStruct)+(44))>>2)]=e["movementX"] || e["mozMovementX"] || e["webkitMovementX"] || (e.screenX-JSEvents.previousScreenX);
  3348. HEAP32[(((eventStruct)+(48))>>2)]=e["movementY"] || e["mozMovementY"] || e["webkitMovementY"] || (e.screenY-JSEvents.previousScreenY);
  3349. if (Module['canvas']) {
  3350. var rect = Module['canvas'].getBoundingClientRect();
  3351. HEAP32[(((eventStruct)+(60))>>2)]=e.clientX - rect.left;
  3352. HEAP32[(((eventStruct)+(64))>>2)]=e.clientY - rect.top;
  3353. } else { // Canvas is not initialized, return 0.
  3354. HEAP32[(((eventStruct)+(60))>>2)]=0;
  3355. HEAP32[(((eventStruct)+(64))>>2)]=0;
  3356. }
  3357. if (target) {
  3358. var rect = JSEvents.getBoundingClientRectOrZeros(target);
  3359. HEAP32[(((eventStruct)+(52))>>2)]=e.clientX - rect.left;
  3360. HEAP32[(((eventStruct)+(56))>>2)]=e.clientY - rect.top;
  3361. } else { // No specific target passed, return 0.
  3362. HEAP32[(((eventStruct)+(52))>>2)]=0;
  3363. HEAP32[(((eventStruct)+(56))>>2)]=0;
  3364. }
  3365. // wheel and mousewheel events contain wrong screenX/screenY on chrome/opera
  3366. // https://github.com/kripken/emscripten/pull/4997
  3367. // https://bugs.chromium.org/p/chromium/issues/detail?id=699956
  3368. if (e.type !== 'wheel' && e.type !== 'mousewheel') {
  3369. JSEvents.previousScreenX = e.screenX;
  3370. JSEvents.previousScreenY = e.screenY;
  3371. }
  3372. },registerMouseEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3373. if (!JSEvents.mouseEvent) {
  3374. JSEvents.mouseEvent = _malloc( 72 );
  3375. }
  3376. target = JSEvents.findEventTarget(target);
  3377. var handlerFunc = function(event) {
  3378. var e = event || window.event;
  3379. JSEvents.fillMouseEventData(JSEvents.mouseEvent, e, target);
  3380. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.mouseEvent, userData);
  3381. if (shouldCancel) {
  3382. e.preventDefault();
  3383. }
  3384. };
  3385. var eventHandler = {
  3386. target: target,
  3387. allowsDeferredCalls: eventTypeString != 'mousemove' && eventTypeString != 'mouseenter' && eventTypeString != 'mouseleave', // Mouse move events do not allow fullscreen/pointer lock requests to be handled in them!
  3388. eventTypeString: eventTypeString,
  3389. callbackfunc: callbackfunc,
  3390. handlerFunc: handlerFunc,
  3391. useCapture: useCapture
  3392. };
  3393. // In IE, mousedown events don't either allow deferred calls to be run!
  3394. if (JSEvents.isInternetExplorer() && eventTypeString == 'mousedown') eventHandler.allowsDeferredCalls = false;
  3395. JSEvents.registerOrRemoveHandler(eventHandler);
  3396. },registerWheelEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3397. if (!JSEvents.wheelEvent) {
  3398. JSEvents.wheelEvent = _malloc( 104 );
  3399. }
  3400. target = JSEvents.findEventTarget(target);
  3401. // The DOM Level 3 events spec event 'wheel'
  3402. var wheelHandlerFunc = function(event) {
  3403. var e = event || window.event;
  3404. JSEvents.fillMouseEventData(JSEvents.wheelEvent, e, target);
  3405. HEAPF64[(((JSEvents.wheelEvent)+(72))>>3)]=e["deltaX"];
  3406. HEAPF64[(((JSEvents.wheelEvent)+(80))>>3)]=e["deltaY"];
  3407. HEAPF64[(((JSEvents.wheelEvent)+(88))>>3)]=e["deltaZ"];
  3408. HEAP32[(((JSEvents.wheelEvent)+(96))>>2)]=e["deltaMode"];
  3409. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.wheelEvent, userData);
  3410. if (shouldCancel) {
  3411. e.preventDefault();
  3412. }
  3413. };
  3414. // The 'mousewheel' event as implemented in Safari 6.0.5
  3415. var mouseWheelHandlerFunc = function(event) {
  3416. var e = event || window.event;
  3417. JSEvents.fillMouseEventData(JSEvents.wheelEvent, e, target);
  3418. HEAPF64[(((JSEvents.wheelEvent)+(72))>>3)]=e["wheelDeltaX"] || 0;
  3419. HEAPF64[(((JSEvents.wheelEvent)+(80))>>3)]=-(e["wheelDeltaY"] ? e["wheelDeltaY"] : e["wheelDelta"]) /* 1. Invert to unify direction with the DOM Level 3 wheel event. 2. MSIE does not provide wheelDeltaY, so wheelDelta is used as a fallback. */;
  3420. HEAPF64[(((JSEvents.wheelEvent)+(88))>>3)]=0 /* Not available */;
  3421. HEAP32[(((JSEvents.wheelEvent)+(96))>>2)]=0 /* DOM_DELTA_PIXEL */;
  3422. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.wheelEvent, userData);
  3423. if (shouldCancel) {
  3424. e.preventDefault();
  3425. }
  3426. };
  3427. var eventHandler = {
  3428. target: target,
  3429. allowsDeferredCalls: true,
  3430. eventTypeString: eventTypeString,
  3431. callbackfunc: callbackfunc,
  3432. handlerFunc: (eventTypeString == 'wheel') ? wheelHandlerFunc : mouseWheelHandlerFunc,
  3433. useCapture: useCapture
  3434. };
  3435. JSEvents.registerOrRemoveHandler(eventHandler);
  3436. },pageScrollPos:function () {
  3437. if (window.pageXOffset > 0 || window.pageYOffset > 0) {
  3438. return [window.pageXOffset, window.pageYOffset];
  3439. }
  3440. if (typeof document.documentElement.scrollLeft !== 'undefined' || typeof document.documentElement.scrollTop !== 'undefined') {
  3441. return [document.documentElement.scrollLeft, document.documentElement.scrollTop];
  3442. }
  3443. return [document.body.scrollLeft|0, document.body.scrollTop|0];
  3444. },registerUiEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3445. if (!JSEvents.uiEvent) {
  3446. JSEvents.uiEvent = _malloc( 36 );
  3447. }
  3448. if (eventTypeString == "scroll" && !target) {
  3449. target = document; // By default read scroll events on document rather than window.
  3450. } else {
  3451. target = JSEvents.findEventTarget(target);
  3452. }
  3453. var handlerFunc = function(event) {
  3454. var e = event || window.event;
  3455. if (e.target != target) {
  3456. // Never take ui events such as scroll via a 'bubbled' route, but always from the direct element that
  3457. // was targeted. Otherwise e.g. if app logs a message in response to a page scroll, the Emscripten log
  3458. // message box could cause to scroll, generating a new (bubbled) scroll message, causing a new log print,
  3459. // causing a new scroll, etc..
  3460. return;
  3461. }
  3462. var scrollPos = JSEvents.pageScrollPos();
  3463. HEAP32[((JSEvents.uiEvent)>>2)]=e.detail;
  3464. HEAP32[(((JSEvents.uiEvent)+(4))>>2)]=document.body.clientWidth;
  3465. HEAP32[(((JSEvents.uiEvent)+(8))>>2)]=document.body.clientHeight;
  3466. HEAP32[(((JSEvents.uiEvent)+(12))>>2)]=window.innerWidth;
  3467. HEAP32[(((JSEvents.uiEvent)+(16))>>2)]=window.innerHeight;
  3468. HEAP32[(((JSEvents.uiEvent)+(20))>>2)]=window.outerWidth;
  3469. HEAP32[(((JSEvents.uiEvent)+(24))>>2)]=window.outerHeight;
  3470. HEAP32[(((JSEvents.uiEvent)+(28))>>2)]=scrollPos[0];
  3471. HEAP32[(((JSEvents.uiEvent)+(32))>>2)]=scrollPos[1];
  3472. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.uiEvent, userData);
  3473. if (shouldCancel) {
  3474. e.preventDefault();
  3475. }
  3476. };
  3477. var eventHandler = {
  3478. target: target,
  3479. allowsDeferredCalls: false, // Neither scroll or resize events allow running requests inside them.
  3480. eventTypeString: eventTypeString,
  3481. callbackfunc: callbackfunc,
  3482. handlerFunc: handlerFunc,
  3483. useCapture: useCapture
  3484. };
  3485. JSEvents.registerOrRemoveHandler(eventHandler);
  3486. },getNodeNameForTarget:function (target) {
  3487. if (!target) return '';
  3488. if (target == window) return '#window';
  3489. if (target == window.screen) return '#screen';
  3490. return (target && target.nodeName) ? target.nodeName : '';
  3491. },registerFocusEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3492. if (!JSEvents.focusEvent) {
  3493. JSEvents.focusEvent = _malloc( 256 );
  3494. }
  3495. var handlerFunc = function(event) {
  3496. var e = event || window.event;
  3497. var nodeName = JSEvents.getNodeNameForTarget(e.target);
  3498. var id = e.target.id ? e.target.id : '';
  3499. stringToUTF8(nodeName, JSEvents.focusEvent + 0, 128);
  3500. stringToUTF8(id, JSEvents.focusEvent + 128, 128);
  3501. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.focusEvent, userData);
  3502. if (shouldCancel) {
  3503. e.preventDefault();
  3504. }
  3505. };
  3506. var eventHandler = {
  3507. target: JSEvents.findEventTarget(target),
  3508. allowsDeferredCalls: false,
  3509. eventTypeString: eventTypeString,
  3510. callbackfunc: callbackfunc,
  3511. handlerFunc: handlerFunc,
  3512. useCapture: useCapture
  3513. };
  3514. JSEvents.registerOrRemoveHandler(eventHandler);
  3515. },tick:function () {
  3516. if (window['performance'] && window['performance']['now']) return window['performance']['now']();
  3517. else return Date.now();
  3518. },registerDeviceOrientationEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3519. if (!JSEvents.deviceOrientationEvent) {
  3520. JSEvents.deviceOrientationEvent = _malloc( 40 );
  3521. }
  3522. var handlerFunc = function(event) {
  3523. var e = event || window.event;
  3524. HEAPF64[((JSEvents.deviceOrientationEvent)>>3)]=JSEvents.tick();
  3525. HEAPF64[(((JSEvents.deviceOrientationEvent)+(8))>>3)]=e.alpha;
  3526. HEAPF64[(((JSEvents.deviceOrientationEvent)+(16))>>3)]=e.beta;
  3527. HEAPF64[(((JSEvents.deviceOrientationEvent)+(24))>>3)]=e.gamma;
  3528. HEAP32[(((JSEvents.deviceOrientationEvent)+(32))>>2)]=e.absolute;
  3529. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.deviceOrientationEvent, userData);
  3530. if (shouldCancel) {
  3531. e.preventDefault();
  3532. }
  3533. };
  3534. var eventHandler = {
  3535. target: JSEvents.findEventTarget(target),
  3536. allowsDeferredCalls: false,
  3537. eventTypeString: eventTypeString,
  3538. callbackfunc: callbackfunc,
  3539. handlerFunc: handlerFunc,
  3540. useCapture: useCapture
  3541. };
  3542. JSEvents.registerOrRemoveHandler(eventHandler);
  3543. },registerDeviceMotionEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3544. if (!JSEvents.deviceMotionEvent) {
  3545. JSEvents.deviceMotionEvent = _malloc( 80 );
  3546. }
  3547. var handlerFunc = function(event) {
  3548. var e = event || window.event;
  3549. HEAPF64[((JSEvents.deviceOrientationEvent)>>3)]=JSEvents.tick();
  3550. HEAPF64[(((JSEvents.deviceMotionEvent)+(8))>>3)]=e.acceleration.x;
  3551. HEAPF64[(((JSEvents.deviceMotionEvent)+(16))>>3)]=e.acceleration.y;
  3552. HEAPF64[(((JSEvents.deviceMotionEvent)+(24))>>3)]=e.acceleration.z;
  3553. HEAPF64[(((JSEvents.deviceMotionEvent)+(32))>>3)]=e.accelerationIncludingGravity.x;
  3554. HEAPF64[(((JSEvents.deviceMotionEvent)+(40))>>3)]=e.accelerationIncludingGravity.y;
  3555. HEAPF64[(((JSEvents.deviceMotionEvent)+(48))>>3)]=e.accelerationIncludingGravity.z;
  3556. HEAPF64[(((JSEvents.deviceMotionEvent)+(56))>>3)]=e.rotationRate.alpha;
  3557. HEAPF64[(((JSEvents.deviceMotionEvent)+(64))>>3)]=e.rotationRate.beta;
  3558. HEAPF64[(((JSEvents.deviceMotionEvent)+(72))>>3)]=e.rotationRate.gamma;
  3559. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.deviceMotionEvent, userData);
  3560. if (shouldCancel) {
  3561. e.preventDefault();
  3562. }
  3563. };
  3564. var eventHandler = {
  3565. target: JSEvents.findEventTarget(target),
  3566. allowsDeferredCalls: false,
  3567. eventTypeString: eventTypeString,
  3568. callbackfunc: callbackfunc,
  3569. handlerFunc: handlerFunc,
  3570. useCapture: useCapture
  3571. };
  3572. JSEvents.registerOrRemoveHandler(eventHandler);
  3573. },screenOrientation:function () {
  3574. if (!window.screen) return undefined;
  3575. return window.screen.orientation || window.screen.mozOrientation || window.screen.webkitOrientation || window.screen.msOrientation;
  3576. },fillOrientationChangeEventData:function (eventStruct, e) {
  3577. var orientations = ["portrait-primary", "portrait-secondary", "landscape-primary", "landscape-secondary"];
  3578. var orientations2 = ["portrait", "portrait", "landscape", "landscape"];
  3579. var orientationString = JSEvents.screenOrientation();
  3580. var orientation = orientations.indexOf(orientationString);
  3581. if (orientation == -1) {
  3582. orientation = orientations2.indexOf(orientationString);
  3583. }
  3584. HEAP32[((eventStruct)>>2)]=1 << orientation;
  3585. HEAP32[(((eventStruct)+(4))>>2)]=window.orientation;
  3586. },registerOrientationChangeEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3587. if (!JSEvents.orientationChangeEvent) {
  3588. JSEvents.orientationChangeEvent = _malloc( 8 );
  3589. }
  3590. if (!target) {
  3591. target = window.screen; // Orientation events need to be captured from 'window.screen' instead of 'window'
  3592. } else {
  3593. target = JSEvents.findEventTarget(target);
  3594. }
  3595. var handlerFunc = function(event) {
  3596. var e = event || window.event;
  3597. JSEvents.fillOrientationChangeEventData(JSEvents.orientationChangeEvent, e);
  3598. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.orientationChangeEvent, userData);
  3599. if (shouldCancel) {
  3600. e.preventDefault();
  3601. }
  3602. };
  3603. if (eventTypeString == "orientationchange" && window.screen.mozOrientation !== undefined) {
  3604. eventTypeString = "mozorientationchange";
  3605. }
  3606. var eventHandler = {
  3607. target: target,
  3608. allowsDeferredCalls: false,
  3609. eventTypeString: eventTypeString,
  3610. callbackfunc: callbackfunc,
  3611. handlerFunc: handlerFunc,
  3612. useCapture: useCapture
  3613. };
  3614. JSEvents.registerOrRemoveHandler(eventHandler);
  3615. },fullscreenEnabled:function () {
  3616. return document.fullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled || document.msFullscreenEnabled;
  3617. },fillFullscreenChangeEventData:function (eventStruct, e) {
  3618. var fullscreenElement = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement;
  3619. var isFullscreen = !!fullscreenElement;
  3620. HEAP32[((eventStruct)>>2)]=isFullscreen;
  3621. HEAP32[(((eventStruct)+(4))>>2)]=JSEvents.fullscreenEnabled();
  3622. // If transitioning to fullscreen, report info about the element that is now fullscreen.
  3623. // If transitioning to windowed mode, report info about the element that just was fullscreen.
  3624. var reportedElement = isFullscreen ? fullscreenElement : JSEvents.previousFullscreenElement;
  3625. var nodeName = JSEvents.getNodeNameForTarget(reportedElement);
  3626. var id = (reportedElement && reportedElement.id) ? reportedElement.id : '';
  3627. stringToUTF8(nodeName, eventStruct + 8, 128);
  3628. stringToUTF8(id, eventStruct + 136, 128);
  3629. HEAP32[(((eventStruct)+(264))>>2)]=reportedElement ? reportedElement.clientWidth : 0;
  3630. HEAP32[(((eventStruct)+(268))>>2)]=reportedElement ? reportedElement.clientHeight : 0;
  3631. HEAP32[(((eventStruct)+(272))>>2)]=screen.width;
  3632. HEAP32[(((eventStruct)+(276))>>2)]=screen.height;
  3633. if (isFullscreen) {
  3634. JSEvents.previousFullscreenElement = fullscreenElement;
  3635. }
  3636. },registerFullscreenChangeEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3637. if (!JSEvents.fullscreenChangeEvent) {
  3638. JSEvents.fullscreenChangeEvent = _malloc( 280 );
  3639. }
  3640. if (!target) {
  3641. target = document; // Fullscreen change events need to be captured from 'document' by default instead of 'window'
  3642. } else {
  3643. target = JSEvents.findEventTarget(target);
  3644. }
  3645. var handlerFunc = function(event) {
  3646. var e = event || window.event;
  3647. JSEvents.fillFullscreenChangeEventData(JSEvents.fullscreenChangeEvent, e);
  3648. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.fullscreenChangeEvent, userData);
  3649. if (shouldCancel) {
  3650. e.preventDefault();
  3651. }
  3652. };
  3653. var eventHandler = {
  3654. target: target,
  3655. allowsDeferredCalls: false,
  3656. eventTypeString: eventTypeString,
  3657. callbackfunc: callbackfunc,
  3658. handlerFunc: handlerFunc,
  3659. useCapture: useCapture
  3660. };
  3661. JSEvents.registerOrRemoveHandler(eventHandler);
  3662. },resizeCanvasForFullscreen:function (target, strategy) {
  3663. var restoreOldStyle = __registerRestoreOldStyle(target);
  3664. var cssWidth = strategy.softFullscreen ? window.innerWidth : screen.width;
  3665. var cssHeight = strategy.softFullscreen ? window.innerHeight : screen.height;
  3666. var rect = target.getBoundingClientRect();
  3667. var windowedCssWidth = rect.right - rect.left;
  3668. var windowedCssHeight = rect.bottom - rect.top;
  3669. var windowedRttWidth = target.width;
  3670. var windowedRttHeight = target.height;
  3671. if (strategy.scaleMode == 3) {
  3672. __setLetterbox(target, (cssHeight - windowedCssHeight) / 2, (cssWidth - windowedCssWidth) / 2);
  3673. cssWidth = windowedCssWidth;
  3674. cssHeight = windowedCssHeight;
  3675. } else if (strategy.scaleMode == 2) {
  3676. if (cssWidth*windowedRttHeight < windowedRttWidth*cssHeight) {
  3677. var desiredCssHeight = windowedRttHeight * cssWidth / windowedRttWidth;
  3678. __setLetterbox(target, (cssHeight - desiredCssHeight) / 2, 0);
  3679. cssHeight = desiredCssHeight;
  3680. } else {
  3681. var desiredCssWidth = windowedRttWidth * cssHeight / windowedRttHeight;
  3682. __setLetterbox(target, 0, (cssWidth - desiredCssWidth) / 2);
  3683. cssWidth = desiredCssWidth;
  3684. }
  3685. }
  3686. // If we are adding padding, must choose a background color or otherwise Chrome will give the
  3687. // padding a default white color. Do it only if user has not customized their own background color.
  3688. if (!target.style.backgroundColor) target.style.backgroundColor = 'black';
  3689. // IE11 does the same, but requires the color to be set in the document body.
  3690. if (!document.body.style.backgroundColor) document.body.style.backgroundColor = 'black'; // IE11
  3691. // Firefox always shows black letterboxes independent of style color.
  3692. target.style.width = cssWidth + 'px';
  3693. target.style.height = cssHeight + 'px';
  3694. if (strategy.filteringMode == 1) {
  3695. target.style.imageRendering = 'optimizeSpeed';
  3696. target.style.imageRendering = '-moz-crisp-edges';
  3697. target.style.imageRendering = '-o-crisp-edges';
  3698. target.style.imageRendering = '-webkit-optimize-contrast';
  3699. target.style.imageRendering = 'optimize-contrast';
  3700. target.style.imageRendering = 'crisp-edges';
  3701. target.style.imageRendering = 'pixelated';
  3702. }
  3703. var dpiScale = (strategy.canvasResolutionScaleMode == 2) ? window.devicePixelRatio : 1;
  3704. if (strategy.canvasResolutionScaleMode != 0) {
  3705. target.width = cssWidth * dpiScale;
  3706. target.height = cssHeight * dpiScale;
  3707. if (target.GLctxObject) target.GLctxObject.GLctx.viewport(0, 0, target.width, target.height);
  3708. }
  3709. return restoreOldStyle;
  3710. },requestFullscreen:function (target, strategy) {
  3711. // EMSCRIPTEN_FULLSCREEN_SCALE_DEFAULT + EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_NONE is a mode where no extra logic is performed to the DOM elements.
  3712. if (strategy.scaleMode != 0 || strategy.canvasResolutionScaleMode != 0) {
  3713. JSEvents.resizeCanvasForFullscreen(target, strategy);
  3714. }
  3715. if (target.requestFullscreen) {
  3716. target.requestFullscreen();
  3717. } else if (target.msRequestFullscreen) {
  3718. target.msRequestFullscreen();
  3719. } else if (target.mozRequestFullScreen) {
  3720. target.mozRequestFullScreen();
  3721. } else if (target.mozRequestFullscreen) {
  3722. target.mozRequestFullscreen();
  3723. } else if (target.webkitRequestFullscreen) {
  3724. target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
  3725. } else {
  3726. if (typeof JSEvents.fullscreenEnabled() === 'undefined') {
  3727. return -1;
  3728. } else {
  3729. return -3;
  3730. }
  3731. }
  3732. if (strategy.canvasResizedCallback) {
  3733. Module['dynCall_iiii'](strategy.canvasResizedCallback, 37, 0, strategy.canvasResizedCallbackUserData);
  3734. }
  3735. return 0;
  3736. },fillPointerlockChangeEventData:function (eventStruct, e) {
  3737. var pointerLockElement = document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement || document.msPointerLockElement;
  3738. var isPointerlocked = !!pointerLockElement;
  3739. HEAP32[((eventStruct)>>2)]=isPointerlocked;
  3740. var nodeName = JSEvents.getNodeNameForTarget(pointerLockElement);
  3741. var id = (pointerLockElement && pointerLockElement.id) ? pointerLockElement.id : '';
  3742. stringToUTF8(nodeName, eventStruct + 4, 128);
  3743. stringToUTF8(id, eventStruct + 132, 128);
  3744. },registerPointerlockChangeEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3745. if (!JSEvents.pointerlockChangeEvent) {
  3746. JSEvents.pointerlockChangeEvent = _malloc( 260 );
  3747. }
  3748. if (!target) {
  3749. target = document; // Pointer lock change events need to be captured from 'document' by default instead of 'window'
  3750. } else {
  3751. target = JSEvents.findEventTarget(target);
  3752. }
  3753. var handlerFunc = function(event) {
  3754. var e = event || window.event;
  3755. JSEvents.fillPointerlockChangeEventData(JSEvents.pointerlockChangeEvent, e);
  3756. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.pointerlockChangeEvent, userData);
  3757. if (shouldCancel) {
  3758. e.preventDefault();
  3759. }
  3760. };
  3761. var eventHandler = {
  3762. target: target,
  3763. allowsDeferredCalls: false,
  3764. eventTypeString: eventTypeString,
  3765. callbackfunc: callbackfunc,
  3766. handlerFunc: handlerFunc,
  3767. useCapture: useCapture
  3768. };
  3769. JSEvents.registerOrRemoveHandler(eventHandler);
  3770. },registerPointerlockErrorEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3771. if (!target) {
  3772. target = document; // Pointer lock events need to be captured from 'document' by default instead of 'window'
  3773. } else {
  3774. target = JSEvents.findEventTarget(target);
  3775. }
  3776. var handlerFunc = function(event) {
  3777. var e = event || window.event;
  3778. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, 0, userData);
  3779. if (shouldCancel) {
  3780. e.preventDefault();
  3781. }
  3782. };
  3783. var eventHandler = {
  3784. target: target,
  3785. allowsDeferredCalls: false,
  3786. eventTypeString: eventTypeString,
  3787. callbackfunc: callbackfunc,
  3788. handlerFunc: handlerFunc,
  3789. useCapture: useCapture
  3790. };
  3791. JSEvents.registerOrRemoveHandler(eventHandler);
  3792. },requestPointerLock:function (target) {
  3793. if (target.requestPointerLock) {
  3794. target.requestPointerLock();
  3795. } else if (target.mozRequestPointerLock) {
  3796. target.mozRequestPointerLock();
  3797. } else if (target.webkitRequestPointerLock) {
  3798. target.webkitRequestPointerLock();
  3799. } else if (target.msRequestPointerLock) {
  3800. target.msRequestPointerLock();
  3801. } else {
  3802. // document.body is known to accept pointer lock, so use that to differentiate if the user passed a bad element,
  3803. // or if the whole browser just doesn't support the feature.
  3804. if (document.body.requestPointerLock || document.body.mozRequestPointerLock || document.body.webkitRequestPointerLock || document.body.msRequestPointerLock) {
  3805. return -3;
  3806. } else {
  3807. return -1;
  3808. }
  3809. }
  3810. return 0;
  3811. },fillVisibilityChangeEventData:function (eventStruct, e) {
  3812. var visibilityStates = [ "hidden", "visible", "prerender", "unloaded" ];
  3813. var visibilityState = visibilityStates.indexOf(document.visibilityState);
  3814. HEAP32[((eventStruct)>>2)]=document.hidden;
  3815. HEAP32[(((eventStruct)+(4))>>2)]=visibilityState;
  3816. },registerVisibilityChangeEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3817. if (!JSEvents.visibilityChangeEvent) {
  3818. JSEvents.visibilityChangeEvent = _malloc( 8 );
  3819. }
  3820. if (!target) {
  3821. target = document; // Visibility change events need to be captured from 'document' by default instead of 'window'
  3822. } else {
  3823. target = JSEvents.findEventTarget(target);
  3824. }
  3825. var handlerFunc = function(event) {
  3826. var e = event || window.event;
  3827. JSEvents.fillVisibilityChangeEventData(JSEvents.visibilityChangeEvent, e);
  3828. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.visibilityChangeEvent, userData);
  3829. if (shouldCancel) {
  3830. e.preventDefault();
  3831. }
  3832. };
  3833. var eventHandler = {
  3834. target: target,
  3835. allowsDeferredCalls: false,
  3836. eventTypeString: eventTypeString,
  3837. callbackfunc: callbackfunc,
  3838. handlerFunc: handlerFunc,
  3839. useCapture: useCapture
  3840. };
  3841. JSEvents.registerOrRemoveHandler(eventHandler);
  3842. },registerTouchEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3843. if (!JSEvents.touchEvent) {
  3844. JSEvents.touchEvent = _malloc( 1684 );
  3845. }
  3846. target = JSEvents.findEventTarget(target);
  3847. var handlerFunc = function(event) {
  3848. var e = event || window.event;
  3849. var touches = {};
  3850. for(var i = 0; i < e.touches.length; ++i) {
  3851. var touch = e.touches[i];
  3852. touches[touch.identifier] = touch;
  3853. }
  3854. for(var i = 0; i < e.changedTouches.length; ++i) {
  3855. var touch = e.changedTouches[i];
  3856. touches[touch.identifier] = touch;
  3857. touch.changed = true;
  3858. }
  3859. for(var i = 0; i < e.targetTouches.length; ++i) {
  3860. var touch = e.targetTouches[i];
  3861. touches[touch.identifier].onTarget = true;
  3862. }
  3863. var ptr = JSEvents.touchEvent;
  3864. HEAP32[(((ptr)+(4))>>2)]=e.ctrlKey;
  3865. HEAP32[(((ptr)+(8))>>2)]=e.shiftKey;
  3866. HEAP32[(((ptr)+(12))>>2)]=e.altKey;
  3867. HEAP32[(((ptr)+(16))>>2)]=e.metaKey;
  3868. ptr += 20; // Advance to the start of the touch array.
  3869. var canvasRect = Module['canvas'] ? Module['canvas'].getBoundingClientRect() : undefined;
  3870. var targetRect = JSEvents.getBoundingClientRectOrZeros(target);
  3871. var numTouches = 0;
  3872. for(var i in touches) {
  3873. var t = touches[i];
  3874. HEAP32[((ptr)>>2)]=t.identifier;
  3875. HEAP32[(((ptr)+(4))>>2)]=t.screenX;
  3876. HEAP32[(((ptr)+(8))>>2)]=t.screenY;
  3877. HEAP32[(((ptr)+(12))>>2)]=t.clientX;
  3878. HEAP32[(((ptr)+(16))>>2)]=t.clientY;
  3879. HEAP32[(((ptr)+(20))>>2)]=t.pageX;
  3880. HEAP32[(((ptr)+(24))>>2)]=t.pageY;
  3881. HEAP32[(((ptr)+(28))>>2)]=t.changed;
  3882. HEAP32[(((ptr)+(32))>>2)]=t.onTarget;
  3883. if (canvasRect) {
  3884. HEAP32[(((ptr)+(44))>>2)]=t.clientX - canvasRect.left;
  3885. HEAP32[(((ptr)+(48))>>2)]=t.clientY - canvasRect.top;
  3886. } else {
  3887. HEAP32[(((ptr)+(44))>>2)]=0;
  3888. HEAP32[(((ptr)+(48))>>2)]=0;
  3889. }
  3890. HEAP32[(((ptr)+(36))>>2)]=t.clientX - targetRect.left;
  3891. HEAP32[(((ptr)+(40))>>2)]=t.clientY - targetRect.top;
  3892. ptr += 52;
  3893. if (++numTouches >= 32) {
  3894. break;
  3895. }
  3896. }
  3897. HEAP32[((JSEvents.touchEvent)>>2)]=numTouches;
  3898. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.touchEvent, userData);
  3899. if (shouldCancel) {
  3900. e.preventDefault();
  3901. }
  3902. };
  3903. var eventHandler = {
  3904. target: target,
  3905. allowsDeferredCalls: false, // XXX Currently disabled, see bug https://bugzilla.mozilla.org/show_bug.cgi?id=966493
  3906. // Once the above bug is resolved, enable the following condition if possible:
  3907. // allowsDeferredCalls: eventTypeString == 'touchstart',
  3908. eventTypeString: eventTypeString,
  3909. callbackfunc: callbackfunc,
  3910. handlerFunc: handlerFunc,
  3911. useCapture: useCapture
  3912. };
  3913. JSEvents.registerOrRemoveHandler(eventHandler);
  3914. },fillGamepadEventData:function (eventStruct, e) {
  3915. HEAPF64[((eventStruct)>>3)]=e.timestamp;
  3916. for(var i = 0; i < e.axes.length; ++i) {
  3917. HEAPF64[(((eventStruct+i*8)+(16))>>3)]=e.axes[i];
  3918. }
  3919. for(var i = 0; i < e.buttons.length; ++i) {
  3920. if (typeof(e.buttons[i]) === 'object') {
  3921. HEAPF64[(((eventStruct+i*8)+(528))>>3)]=e.buttons[i].value;
  3922. } else {
  3923. HEAPF64[(((eventStruct+i*8)+(528))>>3)]=e.buttons[i];
  3924. }
  3925. }
  3926. for(var i = 0; i < e.buttons.length; ++i) {
  3927. if (typeof(e.buttons[i]) === 'object') {
  3928. HEAP32[(((eventStruct+i*4)+(1040))>>2)]=e.buttons[i].pressed;
  3929. } else {
  3930. HEAP32[(((eventStruct+i*4)+(1040))>>2)]=e.buttons[i] == 1.0;
  3931. }
  3932. }
  3933. HEAP32[(((eventStruct)+(1296))>>2)]=e.connected;
  3934. HEAP32[(((eventStruct)+(1300))>>2)]=e.index;
  3935. HEAP32[(((eventStruct)+(8))>>2)]=e.axes.length;
  3936. HEAP32[(((eventStruct)+(12))>>2)]=e.buttons.length;
  3937. stringToUTF8(e.id, eventStruct + 1304, 64);
  3938. stringToUTF8(e.mapping, eventStruct + 1368, 64);
  3939. },registerGamepadEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3940. if (!JSEvents.gamepadEvent) {
  3941. JSEvents.gamepadEvent = _malloc( 1432 );
  3942. }
  3943. var handlerFunc = function(event) {
  3944. var e = event || window.event;
  3945. JSEvents.fillGamepadEventData(JSEvents.gamepadEvent, e.gamepad);
  3946. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.gamepadEvent, userData);
  3947. if (shouldCancel) {
  3948. e.preventDefault();
  3949. }
  3950. };
  3951. var eventHandler = {
  3952. target: JSEvents.findEventTarget(target),
  3953. allowsDeferredCalls: true,
  3954. eventTypeString: eventTypeString,
  3955. callbackfunc: callbackfunc,
  3956. handlerFunc: handlerFunc,
  3957. useCapture: useCapture
  3958. };
  3959. JSEvents.registerOrRemoveHandler(eventHandler);
  3960. },registerBeforeUnloadEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3961. var handlerFunc = function(event) {
  3962. var e = event || window.event;
  3963. var confirmationMessage = Module['dynCall_iiii'](callbackfunc, eventTypeId, 0, userData);
  3964. if (confirmationMessage) {
  3965. confirmationMessage = Pointer_stringify(confirmationMessage);
  3966. }
  3967. if (confirmationMessage) {
  3968. e.preventDefault();
  3969. e.returnValue = confirmationMessage;
  3970. return confirmationMessage;
  3971. }
  3972. };
  3973. var eventHandler = {
  3974. target: JSEvents.findEventTarget(target),
  3975. allowsDeferredCalls: false,
  3976. eventTypeString: eventTypeString,
  3977. callbackfunc: callbackfunc,
  3978. handlerFunc: handlerFunc,
  3979. useCapture: useCapture
  3980. };
  3981. JSEvents.registerOrRemoveHandler(eventHandler);
  3982. },battery:function () { return navigator.battery || navigator.mozBattery || navigator.webkitBattery; },fillBatteryEventData:function (eventStruct, e) {
  3983. HEAPF64[((eventStruct)>>3)]=e.chargingTime;
  3984. HEAPF64[(((eventStruct)+(8))>>3)]=e.dischargingTime;
  3985. HEAPF64[(((eventStruct)+(16))>>3)]=e.level;
  3986. HEAP32[(((eventStruct)+(24))>>2)]=e.charging;
  3987. },registerBatteryEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  3988. if (!JSEvents.batteryEvent) {
  3989. JSEvents.batteryEvent = _malloc( 32 );
  3990. }
  3991. var handlerFunc = function(event) {
  3992. var e = event || window.event;
  3993. JSEvents.fillBatteryEventData(JSEvents.batteryEvent, JSEvents.battery());
  3994. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, JSEvents.batteryEvent, userData);
  3995. if (shouldCancel) {
  3996. e.preventDefault();
  3997. }
  3998. };
  3999. var eventHandler = {
  4000. target: JSEvents.findEventTarget(target),
  4001. allowsDeferredCalls: false,
  4002. eventTypeString: eventTypeString,
  4003. callbackfunc: callbackfunc,
  4004. handlerFunc: handlerFunc,
  4005. useCapture: useCapture
  4006. };
  4007. JSEvents.registerOrRemoveHandler(eventHandler);
  4008. },registerWebGlEventCallback:function (target, userData, useCapture, callbackfunc, eventTypeId, eventTypeString) {
  4009. if (!target) {
  4010. target = Module['canvas'];
  4011. }
  4012. var handlerFunc = function(event) {
  4013. var e = event || window.event;
  4014. var shouldCancel = Module['dynCall_iiii'](callbackfunc, eventTypeId, 0, userData);
  4015. if (shouldCancel) {
  4016. e.preventDefault();
  4017. }
  4018. };
  4019. var eventHandler = {
  4020. target: JSEvents.findEventTarget(target),
  4021. allowsDeferredCalls: false,
  4022. eventTypeString: eventTypeString,
  4023. callbackfunc: callbackfunc,
  4024. handlerFunc: handlerFunc,
  4025. useCapture: useCapture
  4026. };
  4027. JSEvents.registerOrRemoveHandler(eventHandler);
  4028. }};function __emscripten_sample_gamepad_data() {
  4029. // Polling gamepads generates garbage, so don't do it when we know there are no gamepads connected.
  4030. if (!JSEvents.numGamepadsConnected) return;
  4031. // Produce a new Gamepad API sample if we are ticking a new game frame, or if not using emscripten_set_main_loop() at all to drive animation.
  4032. if (Browser.mainLoop.currentFrameNumber !== JSEvents.lastGamepadStateFrame || !Browser.mainLoop.currentFrameNumber) {
  4033. JSEvents.lastGamepadState = navigator.getGamepads ? navigator.getGamepads() : (navigator.webkitGetGamepads ? navigator.webkitGetGamepads : null);
  4034. JSEvents.lastGamepadStateFrame = Browser.mainLoop.currentFrameNumber;
  4035. }
  4036. }function _emscripten_get_gamepad_status(index, gamepadState) {
  4037. __emscripten_sample_gamepad_data();
  4038. if (!JSEvents.lastGamepadState) return -1;
  4039. // INVALID_PARAM is returned on a Gamepad index that never was there.
  4040. if (index < 0 || index >= JSEvents.lastGamepadState.length) return -5;
  4041. // NO_DATA is returned on a Gamepad index that was removed.
  4042. // For previously disconnected gamepads there should be an empty slot (null/undefined/false) at the index.
  4043. // This is because gamepads must keep their original position in the array.
  4044. // For example, removing the first of two gamepads produces [null/undefined/false, gamepad].
  4045. if (!JSEvents.lastGamepadState[index]) return -7;
  4046. JSEvents.fillGamepadEventData(gamepadState, JSEvents.lastGamepadState[index]);
  4047. return 0;
  4048. }
  4049. function _emscripten_glCopyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7) { GLctx['copyTexImage2D'](x0, x1, x2, x3, x4, x5, x6, x7) }
  4050. function _alcGetString(device, param) {
  4051. if (AL.alcStringCache[param]) return AL.alcStringCache[param];
  4052. var ret;
  4053. switch (param) {
  4054. case 0 /* ALC_NO_ERROR */:
  4055. ret = 'No Error';
  4056. break;
  4057. case 0xA001 /* ALC_INVALID_DEVICE */:
  4058. ret = 'Invalid Device';
  4059. break;
  4060. case 0xA002 /* ALC_INVALID_CONTEXT */:
  4061. ret = 'Invalid Context';
  4062. break;
  4063. case 0xA003 /* ALC_INVALID_ENUM */:
  4064. ret = 'Invalid Enum';
  4065. break;
  4066. case 0xA004 /* ALC_INVALID_VALUE */:
  4067. ret = 'Invalid Value';
  4068. break;
  4069. case 0xA005 /* ALC_OUT_OF_MEMORY */:
  4070. ret = 'Out of Memory';
  4071. break;
  4072. case 0x1004 /* ALC_DEFAULT_DEVICE_SPECIFIER */:
  4073. if (typeof(AudioContext) !== "undefined" ||
  4074. typeof(webkitAudioContext) !== "undefined") {
  4075. ret = 'Device';
  4076. } else {
  4077. return 0;
  4078. }
  4079. break;
  4080. case 0x1005 /* ALC_DEVICE_SPECIFIER */:
  4081. if (typeof(AudioContext) !== "undefined" ||
  4082. typeof(webkitAudioContext) !== "undefined") {
  4083. ret = 'Device\0';
  4084. } else {
  4085. ret = '\0';
  4086. }
  4087. break;
  4088. case 0x311 /* ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER */:
  4089. return 0;
  4090. break;
  4091. case 0x310 /* ALC_CAPTURE_DEVICE_SPECIFIER */:
  4092. ret = '\0'
  4093. break;
  4094. case 0x1006 /* ALC_EXTENSIONS */:
  4095. if (!device) {
  4096. AL.alcErr = 0xA001 /* ALC_INVALID_DEVICE */;
  4097. return 0;
  4098. }
  4099. ret = '';
  4100. break;
  4101. default:
  4102. AL.alcErr = 0xA003 /* ALC_INVALID_ENUM */;
  4103. return 0;
  4104. }
  4105. ret = allocate(intArrayFromString(ret), 'i8', ALLOC_NORMAL);
  4106. AL.alcStringCache[param] = ret;
  4107. return ret;
  4108. }
  4109. function _emscripten_glTexParameterfv(target, pname, params) {
  4110. var param = HEAPF32[((params)>>2)];
  4111. GLctx.texParameterf(target, pname, param);
  4112. }
  4113. function _emscripten_glLinkProgram(program) {
  4114. GLctx.linkProgram(GL.programs[program]);
  4115. GL.programInfos[program] = null; // uniforms no longer keep the same names after linking
  4116. GL.populateUniformTable(program);
  4117. }
  4118. function _emscripten_glUniform3f(location, v0, v1, v2) {
  4119. GLctx.uniform3f(GL.uniforms[location], v0, v1, v2);
  4120. }
  4121. function _emscripten_glGetObjectParameterivARB() {
  4122. Module['printErr']('missing function: emscripten_glGetObjectParameterivARB'); abort(-1);
  4123. }
  4124. function _emscripten_glBlendFunc(x0, x1) { GLctx['blendFunc'](x0, x1) }
  4125. function _emscripten_glUniform3i(location, v0, v1, v2) {
  4126. GLctx.uniform3i(GL.uniforms[location], v0, v1, v2);
  4127. }
  4128. function _emscripten_glStencilOp(x0, x1, x2) { GLctx['stencilOp'](x0, x1, x2) }
  4129. function _glCreateShader(shaderType) {
  4130. var id = GL.getNewId(GL.shaders);
  4131. GL.shaders[id] = GLctx.createShader(shaderType);
  4132. return id;
  4133. }
  4134. function _glUniform1i(location, v0) {
  4135. GLctx.uniform1i(GL.uniforms[location], v0);
  4136. }
  4137. function _emscripten_glBindAttribLocation(program, index, name) {
  4138. name = Pointer_stringify(name);
  4139. GLctx.bindAttribLocation(GL.programs[program], index, name);
  4140. }
  4141. function _glCompressedTexImage2D(target, level, internalFormat, width, height, border, imageSize, data) {
  4142. GLctx['compressedTexImage2D'](target, level, internalFormat, width, height, border, data ? HEAPU8.subarray((data),(data+imageSize)) : null);
  4143. }
  4144. function _glDisable(x0) { GLctx['disable'](x0) }
  4145. function _emscripten_glEnableVertexAttribArray(index) {
  4146. GLctx.enableVertexAttribArray(index);
  4147. }
  4148. Module["_memset"] = _memset;
  4149. function _alDeleteBuffers(count, buffers)
  4150. {
  4151. if (!AL.currentContext) {
  4152. return;
  4153. }
  4154. if (count > AL.currentContext.buf.length) {
  4155. AL.currentContext.err = 0xA003 /* AL_INVALID_VALUE */;
  4156. return;
  4157. }
  4158. for (var i = 0; i < count; ++i) {
  4159. var bufferIdx = HEAP32[(((buffers)+(i*4))>>2)] - 1;
  4160. // Make sure the buffer index is valid.
  4161. if (bufferIdx >= AL.currentContext.buf.length || !AL.currentContext.buf[bufferIdx]) {
  4162. AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */;
  4163. return;
  4164. }
  4165. // Make sure the buffer is no longer in use.
  4166. var buffer = AL.currentContext.buf[bufferIdx];
  4167. for (var srcId in AL.currentContext.src) {
  4168. var src = AL.currentContext.src[srcId];
  4169. if (!src) {
  4170. continue;
  4171. }
  4172. for (var k = 0; k < src.queue.length; k++) {
  4173. if (buffer === src.queue[k].buffer) {
  4174. AL.currentContext.err = 0xA004 /* AL_INVALID_OPERATION */;
  4175. return;
  4176. }
  4177. }
  4178. }
  4179. }
  4180. for (var i = 0; i < count; ++i) {
  4181. var bufferIdx = HEAP32[(((buffers)+(i*4))>>2)] - 1;
  4182. delete AL.currentContext.buf[bufferIdx];
  4183. }
  4184. }
  4185. function _alListener3f(param, v1, v2, v3) {
  4186. if (!AL.currentContext) {
  4187. return;
  4188. }
  4189. switch (param) {
  4190. case 0x1004 /* AL_POSITION */:
  4191. AL.currentContext.ctx.listener._position[0] = v1;
  4192. AL.currentContext.ctx.listener._position[1] = v2;
  4193. AL.currentContext.ctx.listener._position[2] = v3;
  4194. AL.currentContext.ctx.listener.setPosition(v1, v2, v3);
  4195. break;
  4196. case 0x1006 /* AL_VELOCITY */:
  4197. AL.currentContext.ctx.listener._velocity[0] = v1;
  4198. AL.currentContext.ctx.listener._velocity[1] = v2;
  4199. AL.currentContext.ctx.listener._velocity[2] = v3;
  4200. // TODO: The velocity values are not currently used to implement a doppler effect.
  4201. // If support for doppler effect is reintroduced, compute the doppler
  4202. // speed pitch factor and apply it here.
  4203. break;
  4204. default:
  4205. AL.currentContext.err = 0xA002 /* AL_INVALID_ENUM */;
  4206. break;
  4207. }
  4208. }
  4209. function _glfwMakeContextCurrent(winid) {}
  4210. function _emscripten_set_touchcancel_callback(target, userData, useCapture, callbackfunc) {
  4211. JSEvents.registerTouchEventCallback(target, userData, useCapture, callbackfunc, 25, "touchcancel");
  4212. return 0;
  4213. }
  4214. function ___lock() {}
  4215. function _emscripten_glBlendFuncSeparate(x0, x1, x2, x3) { GLctx['blendFuncSeparate'](x0, x1, x2, x3) }
  4216. function _glCullFace(x0) { GLctx['cullFace'](x0) }
  4217. function _emscripten_glGetVertexAttribPointerv(index, pname, pointer) {
  4218. if (!pointer) {
  4219. // GLES2 specification does not specify how to behave if pointer is a null pointer. Since calling this function does not make sense
  4220. // if pointer == null, issue a GL error to notify user about it.
  4221. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  4222. return;
  4223. }
  4224. HEAP32[((pointer)>>2)]=GLctx.getVertexAttribOffset(index, pname);
  4225. }
  4226. function _emscripten_glVertexAttrib3f(x0, x1, x2, x3) { GLctx['vertexAttrib3f'](x0, x1, x2, x3) }
  4227. function _alSource3f(source, param, v1, v2, v3) {
  4228. if (!AL.currentContext) {
  4229. return;
  4230. }
  4231. var src = AL.currentContext.src[source];
  4232. if (!src) {
  4233. AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */;
  4234. return;
  4235. }
  4236. switch (param) {
  4237. case 0x1004 /* AL_POSITION */:
  4238. src.position[0] = v1;
  4239. src.position[1] = v2;
  4240. src.position[2] = v3;
  4241. break;
  4242. case 0x1005 /* AL_DIRECTION */:
  4243. src.direction[0] = v1;
  4244. src.direction[1] = v2;
  4245. src.direction[2] = v3;
  4246. break;
  4247. case 0x1006 /* AL_VELOCITY */:
  4248. src.velocity[0] = v1;
  4249. src.velocity[1] = v2;
  4250. src.velocity[2] = v3;
  4251. break;
  4252. default:
  4253. AL.currentContext.err = 0xA002 /* AL_INVALID_ENUM */;
  4254. break;
  4255. }
  4256. }
  4257. function _emscripten_glEnable(x0) { GLctx['enable'](x0) }
  4258. function _emscripten_glNormalPointer() {
  4259. Module['printErr']('missing function: emscripten_glNormalPointer'); abort(-1);
  4260. }
  4261. var _emscripten_GetProcAddress=undefined;
  4262. Module["_emscripten_GetProcAddress"] = _emscripten_GetProcAddress;
  4263. var EGL={errorCode:12288,defaultDisplayInitialized:false,currentContext:0,currentReadSurface:0,currentDrawSurface:0,stringCache:{},setErrorCode:function (code) {
  4264. EGL.errorCode = code;
  4265. },chooseConfig:function (display, attribList, config, config_size, numConfigs) {
  4266. if (display != 62000 /* Magic ID for Emscripten 'default display' */) {
  4267. EGL.setErrorCode(0x3008 /* EGL_BAD_DISPLAY */);
  4268. return 0;
  4269. }
  4270. // TODO: read attribList.
  4271. if ((!config || !config_size) && !numConfigs) {
  4272. EGL.setErrorCode(0x300C /* EGL_BAD_PARAMETER */);
  4273. return 0;
  4274. }
  4275. if (numConfigs) {
  4276. HEAP32[((numConfigs)>>2)]=1; // Total number of supported configs: 1.
  4277. }
  4278. if (config && config_size > 0) {
  4279. HEAP32[((config)>>2)]=62002;
  4280. }
  4281. EGL.setErrorCode(0x3000 /* EGL_SUCCESS */);
  4282. return 1;
  4283. }};function _eglGetProcAddress(name_) {
  4284. return _emscripten_GetProcAddress(name_);
  4285. }
  4286. function _glDeleteProgram(id) {
  4287. if (!id) return;
  4288. var program = GL.programs[id];
  4289. if (!program) { // glDeleteProgram actually signals an error when deleting a nonexisting object, unlike some other GL delete functions.
  4290. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  4291. return;
  4292. }
  4293. GLctx.deleteProgram(program);
  4294. program.name = 0;
  4295. GL.programs[id] = null;
  4296. GL.programInfos[id] = null;
  4297. }
  4298. function _emscripten_get_pointerlock_status(pointerlockStatus) {
  4299. if (pointerlockStatus) JSEvents.fillPointerlockChangeEventData(pointerlockStatus);
  4300. if (!document.body || (!document.body.requestPointerLock && !document.body.mozRequestPointerLock && !document.body.webkitRequestPointerLock && !document.body.msRequestPointerLock)) {
  4301. return -1;
  4302. }
  4303. return 0;
  4304. }
  4305. function _alSourcePlay(source) {
  4306. if (!AL.currentContext) {
  4307. return;
  4308. }
  4309. var src = AL.currentContext.src[source];
  4310. if (!src) {
  4311. AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */;
  4312. return;
  4313. }
  4314. AL.setSourceState(src, 0x1012 /* AL_PLAYING */);
  4315. }
  4316. function _glAttachShader(program, shader) {
  4317. GLctx.attachShader(GL.programs[program],
  4318. GL.shaders[shader]);
  4319. }
  4320. function _glfwGetPrimaryMonitor() {
  4321. return 1;
  4322. }
  4323. function emscriptenWebGLGetVertexAttrib(index, pname, params, type) {
  4324. if (!params) {
  4325. // GLES2 specification does not specify how to behave if params is a null pointer. Since calling this function does not make sense
  4326. // if params == null, issue a GL error to notify user about it.
  4327. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  4328. return;
  4329. }
  4330. var data = GLctx.getVertexAttrib(index, pname);
  4331. if (pname == 0x889F/*VERTEX_ATTRIB_ARRAY_BUFFER_BINDING*/) {
  4332. HEAP32[((params)>>2)]=data["name"];
  4333. } else if (typeof data == 'number' || typeof data == 'boolean') {
  4334. switch (type) {
  4335. case 'Integer': HEAP32[((params)>>2)]=data; break;
  4336. case 'Float': HEAPF32[((params)>>2)]=data; break;
  4337. case 'FloatToInteger': HEAP32[((params)>>2)]=Math.fround(data); break;
  4338. default: throw 'internal emscriptenWebGLGetVertexAttrib() error, bad type: ' + type;
  4339. }
  4340. } else {
  4341. for (var i = 0; i < data.length; i++) {
  4342. switch (type) {
  4343. case 'Integer': HEAP32[(((params)+(i))>>2)]=data[i]; break;
  4344. case 'Float': HEAPF32[(((params)+(i))>>2)]=data[i]; break;
  4345. case 'FloatToInteger': HEAP32[(((params)+(i))>>2)]=Math.fround(data[i]); break;
  4346. default: throw 'internal emscriptenWebGLGetVertexAttrib() error, bad type: ' + type;
  4347. }
  4348. }
  4349. }
  4350. }function _emscripten_glGetVertexAttribfv(index, pname, params) {
  4351. // N.B. This function may only be called if the vertex attribute was specified using the function glVertexAttrib*f(),
  4352. // otherwise the results are undefined. (GLES3 spec 6.1.12)
  4353. emscriptenWebGLGetVertexAttrib(index, pname, params, 'Float');
  4354. }
  4355. function _emscripten_set_touchstart_callback(target, userData, useCapture, callbackfunc) {
  4356. JSEvents.registerTouchEventCallback(target, userData, useCapture, callbackfunc, 22, "touchstart");
  4357. return 0;
  4358. }
  4359. function _emscripten_glDeleteShader(id) {
  4360. if (!id) return;
  4361. var shader = GL.shaders[id];
  4362. if (!shader) { // glDeleteShader actually signals an error when deleting a nonexisting object, unlike some other GL delete functions.
  4363. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  4364. return;
  4365. }
  4366. GLctx.deleteShader(shader);
  4367. GL.shaders[id] = null;
  4368. }
  4369. function _emscripten_glVertexPointer(){ throw 'Legacy GL function (glVertexPointer) called. If you want legacy GL emulation, you need to compile with -s LEGACY_GL_EMULATION=1 to enable legacy GL emulation.'; }
  4370. function _emscripten_glDeleteBuffers(n, buffers) {
  4371. for (var i = 0; i < n; i++) {
  4372. var id = HEAP32[(((buffers)+(i*4))>>2)];
  4373. var buffer = GL.buffers[id];
  4374. // From spec: "glDeleteBuffers silently ignores 0's and names that do not
  4375. // correspond to existing buffer objects."
  4376. if (!buffer) continue;
  4377. GLctx.deleteBuffer(buffer);
  4378. buffer.name = 0;
  4379. GL.buffers[id] = null;
  4380. if (id == GL.currArrayBuffer) GL.currArrayBuffer = 0;
  4381. if (id == GL.currElementArrayBuffer) GL.currElementArrayBuffer = 0;
  4382. }
  4383. }
  4384. function _emscripten_glTexParameteriv(target, pname, params) {
  4385. var param = HEAP32[((params)>>2)];
  4386. GLctx.texParameteri(target, pname, param);
  4387. }
  4388. function _glDrawElements(mode, count, type, indices) {
  4389. GLctx.drawElements(mode, count, type, indices);
  4390. }
  4391. function _glfwTerminate() {
  4392. window.removeEventListener("keydown", GLFW.onKeydown, true);
  4393. window.removeEventListener("keypress", GLFW.onKeyPress, true);
  4394. window.removeEventListener("keyup", GLFW.onKeyup, true);
  4395. Module["canvas"].removeEventListener("mousemove", GLFW.onMousemove, true);
  4396. Module["canvas"].removeEventListener("mousedown", GLFW.onMouseButtonDown, true);
  4397. Module["canvas"].removeEventListener("mouseup", GLFW.onMouseButtonUp, true);
  4398. Module["canvas"].removeEventListener('wheel', GLFW.onMouseWheel, true);
  4399. Module["canvas"].removeEventListener('mousewheel', GLFW.onMouseWheel, true);
  4400. Module["canvas"].removeEventListener('mouseenter', GLFW.onMouseenter, true);
  4401. Module["canvas"].removeEventListener('mouseleave', GLFW.onMouseleave, true);
  4402. Module["canvas"].width = Module["canvas"].height = 1;
  4403. GLFW.windows = null;
  4404. GLFW.active = null;
  4405. }
  4406. function _emscripten_glUniformMatrix2fv(location, count, transpose, value) {
  4407. var view;
  4408. if (4*count <= GL.MINI_TEMP_BUFFER_SIZE) {
  4409. // avoid allocation when uploading few enough uniforms
  4410. view = GL.miniTempBufferViews[4*count-1];
  4411. for (var i = 0; i < 4*count; i += 4) {
  4412. view[i] = HEAPF32[(((value)+(4*i))>>2)];
  4413. view[i+1] = HEAPF32[(((value)+(4*i+4))>>2)];
  4414. view[i+2] = HEAPF32[(((value)+(4*i+8))>>2)];
  4415. view[i+3] = HEAPF32[(((value)+(4*i+12))>>2)];
  4416. }
  4417. } else {
  4418. view = HEAPF32.subarray((value)>>2,(value+count*16)>>2);
  4419. }
  4420. GLctx.uniformMatrix2fv(GL.uniforms[location], !!transpose, view);
  4421. }
  4422. function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs;
  4423. try {
  4424. // close
  4425. var stream = SYSCALLS.getStreamFromFD();
  4426. FS.close(stream);
  4427. return 0;
  4428. } catch (e) {
  4429. if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
  4430. return -e.errno;
  4431. }
  4432. }
  4433. function _llvm_stacksave() {
  4434. var self = _llvm_stacksave;
  4435. if (!self.LLVM_SAVEDSTACKS) {
  4436. self.LLVM_SAVEDSTACKS = [];
  4437. }
  4438. self.LLVM_SAVEDSTACKS.push(Runtime.stackSave());
  4439. return self.LLVM_SAVEDSTACKS.length-1;
  4440. }
  4441. function _emscripten_glGetVertexAttribiv(index, pname, params) {
  4442. // N.B. This function may only be called if the vertex attribute was specified using the function glVertexAttrib*f(),
  4443. // otherwise the results are undefined. (GLES3 spec 6.1.12)
  4444. emscriptenWebGLGetVertexAttrib(index, pname, params, 'FloatToInteger');
  4445. }
  4446. function _emscripten_glUniformMatrix4fv(location, count, transpose, value) {
  4447. var view;
  4448. if (16*count <= GL.MINI_TEMP_BUFFER_SIZE) {
  4449. // avoid allocation when uploading few enough uniforms
  4450. view = GL.miniTempBufferViews[16*count-1];
  4451. for (var i = 0; i < 16*count; i += 16) {
  4452. view[i] = HEAPF32[(((value)+(4*i))>>2)];
  4453. view[i+1] = HEAPF32[(((value)+(4*i+4))>>2)];
  4454. view[i+2] = HEAPF32[(((value)+(4*i+8))>>2)];
  4455. view[i+3] = HEAPF32[(((value)+(4*i+12))>>2)];
  4456. view[i+4] = HEAPF32[(((value)+(4*i+16))>>2)];
  4457. view[i+5] = HEAPF32[(((value)+(4*i+20))>>2)];
  4458. view[i+6] = HEAPF32[(((value)+(4*i+24))>>2)];
  4459. view[i+7] = HEAPF32[(((value)+(4*i+28))>>2)];
  4460. view[i+8] = HEAPF32[(((value)+(4*i+32))>>2)];
  4461. view[i+9] = HEAPF32[(((value)+(4*i+36))>>2)];
  4462. view[i+10] = HEAPF32[(((value)+(4*i+40))>>2)];
  4463. view[i+11] = HEAPF32[(((value)+(4*i+44))>>2)];
  4464. view[i+12] = HEAPF32[(((value)+(4*i+48))>>2)];
  4465. view[i+13] = HEAPF32[(((value)+(4*i+52))>>2)];
  4466. view[i+14] = HEAPF32[(((value)+(4*i+56))>>2)];
  4467. view[i+15] = HEAPF32[(((value)+(4*i+60))>>2)];
  4468. }
  4469. } else {
  4470. view = HEAPF32.subarray((value)>>2,(value+count*64)>>2);
  4471. }
  4472. GLctx.uniformMatrix4fv(GL.uniforms[location], !!transpose, view);
  4473. }
  4474. function _emscripten_glDrawArraysInstanced(mode, first, count, primcount) {
  4475. GLctx['drawArraysInstanced'](mode, first, count, primcount);
  4476. }
  4477. function _emscripten_glEnableClientState() {
  4478. Module['printErr']('missing function: emscripten_glEnableClientState'); abort(-1);
  4479. }
  4480. function _emscripten_glGetPointerv() {
  4481. Module['printErr']('missing function: emscripten_glGetPointerv'); abort(-1);
  4482. }
  4483. function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs;
  4484. try {
  4485. // llseek
  4486. var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();
  4487. var offset = offset_low;
  4488. assert(offset_high === 0);
  4489. FS.llseek(stream, offset, whence);
  4490. HEAP32[((result)>>2)]=stream.position;
  4491. if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state
  4492. return 0;
  4493. } catch (e) {
  4494. if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
  4495. return -e.errno;
  4496. }
  4497. }
  4498. function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs;
  4499. try {
  4500. // writev
  4501. // hack to support printf in NO_FILESYSTEM
  4502. var stream = SYSCALLS.get(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
  4503. var ret = 0;
  4504. if (!___syscall146.buffer) {
  4505. ___syscall146.buffers = [null, [], []]; // 1 => stdout, 2 => stderr
  4506. ___syscall146.printChar = function(stream, curr) {
  4507. var buffer = ___syscall146.buffers[stream];
  4508. assert(buffer);
  4509. if (curr === 0 || curr === 10) {
  4510. (stream === 1 ? Module['print'] : Module['printErr'])(UTF8ArrayToString(buffer, 0));
  4511. buffer.length = 0;
  4512. } else {
  4513. buffer.push(curr);
  4514. }
  4515. };
  4516. }
  4517. for (var i = 0; i < iovcnt; i++) {
  4518. var ptr = HEAP32[(((iov)+(i*8))>>2)];
  4519. var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
  4520. for (var j = 0; j < len; j++) {
  4521. ___syscall146.printChar(stream, HEAPU8[ptr+j]);
  4522. }
  4523. ret += len;
  4524. }
  4525. return ret;
  4526. } catch (e) {
  4527. if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
  4528. return -e.errno;
  4529. }
  4530. }
  4531. function _emscripten_glUniform1i(location, v0) {
  4532. GLctx.uniform1i(GL.uniforms[location], v0);
  4533. }
  4534. function _emscripten_glStencilMask(x0) { GLctx['stencilMask'](x0) }
  4535. function _emscripten_glStencilFuncSeparate(x0, x1, x2, x3) { GLctx['stencilFuncSeparate'](x0, x1, x2, x3) }
  4536. Module["_i64Subtract"] = _i64Subtract;
  4537. Module["_i64Add"] = _i64Add;
  4538. function _emscripten_set_touchend_callback(target, userData, useCapture, callbackfunc) {
  4539. JSEvents.registerTouchEventCallback(target, userData, useCapture, callbackfunc, 23, "touchend");
  4540. return 0;
  4541. }
  4542. function _glUseProgram(program) {
  4543. GLctx.useProgram(program ? GL.programs[program] : null);
  4544. }
  4545. function _emscripten_glDisableVertexAttribArray(index) {
  4546. GLctx.disableVertexAttribArray(index);
  4547. }
  4548. function _emscripten_glVertexAttrib1f(x0, x1) { GLctx['vertexAttrib1f'](x0, x1) }
  4549. function _emscripten_glFinish() { GLctx['finish']() }
  4550. function _glDrawArrays(mode, first, count) {
  4551. GLctx.drawArrays(mode, first, count);
  4552. }
  4553. function _emscripten_glDepthFunc(x0) { GLctx['depthFunc'](x0) }
  4554. function _alcOpenDevice(deviceName) {
  4555. if (typeof(AudioContext) !== "undefined" ||
  4556. typeof(webkitAudioContext) !== "undefined") {
  4557. return 1; // non-null pointer -- we just simulate one device
  4558. } else {
  4559. return 0;
  4560. }
  4561. }
  4562. function _emscripten_get_num_gamepads() {
  4563. // Polling gamepads generates garbage, so don't do it when we know there are no gamepads connected.
  4564. if (!JSEvents.numGamepadsConnected) return 0;
  4565. __emscripten_sample_gamepad_data();
  4566. if (!JSEvents.lastGamepadState) return -1;
  4567. return JSEvents.lastGamepadState.length;
  4568. }
  4569. function _emscripten_glUniform4iv(location, count, value) {
  4570. GLctx.uniform4iv(GL.uniforms[location], HEAP32.subarray((value)>>2,(value+count*16)>>2));
  4571. }
  4572. function _glClear(x0) { GLctx['clear'](x0) }
  4573. function _emscripten_glLoadIdentity(){ throw 'Legacy GL function (glLoadIdentity) called. If you want legacy GL emulation, you need to compile with -s LEGACY_GL_EMULATION=1 to enable legacy GL emulation.'; }
  4574. function _emscripten_glUniform3fv(location, count, value) {
  4575. var view;
  4576. if (3*count <= GL.MINI_TEMP_BUFFER_SIZE) {
  4577. // avoid allocation when uploading few enough uniforms
  4578. view = GL.miniTempBufferViews[3*count-1];
  4579. for (var i = 0; i < 3*count; i += 3) {
  4580. view[i] = HEAPF32[(((value)+(4*i))>>2)];
  4581. view[i+1] = HEAPF32[(((value)+(4*i+4))>>2)];
  4582. view[i+2] = HEAPF32[(((value)+(4*i+8))>>2)];
  4583. }
  4584. } else {
  4585. view = HEAPF32.subarray((value)>>2,(value+count*12)>>2);
  4586. }
  4587. GLctx.uniform3fv(GL.uniforms[location], view);
  4588. }
  4589. function _emscripten_glIsTexture(texture) {
  4590. var texture = GL.textures[texture];
  4591. if (!texture) return 0;
  4592. return GLctx.isTexture(texture);
  4593. }
  4594. function _glEnableVertexAttribArray(index) {
  4595. GLctx.enableVertexAttribArray(index);
  4596. }
  4597. function _emscripten_glAttachShader(program, shader) {
  4598. GLctx.attachShader(GL.programs[program],
  4599. GL.shaders[shader]);
  4600. }
  4601. function _alSourceUnqueueBuffers(source, count, buffers) {
  4602. if (!AL.currentContext) {
  4603. return;
  4604. }
  4605. var src = AL.currentContext.src[source];
  4606. if (!src) {
  4607. AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */;
  4608. return;
  4609. }
  4610. if (count > src.buffersPlayed) {
  4611. AL.currentContext.err = 0xA003 /* AL_INVALID_VALUE */;
  4612. return;
  4613. }
  4614. for (var i = 0; i < count; i++) {
  4615. var entry = src.queue.shift();
  4616. // Write the buffers index out to the return list.
  4617. for (var j = 0; j < AL.currentContext.buf.length; j++) {
  4618. var b = AL.currentContext.buf[j];
  4619. if (b && b == entry.buffer) {
  4620. HEAP32[(((buffers)+(i*4))>>2)]=j+1;
  4621. break;
  4622. }
  4623. }
  4624. src.buffersPlayed--;
  4625. }
  4626. AL.updateSource(src);
  4627. }
  4628. function _glUniform4f(location, v0, v1, v2, v3) {
  4629. GLctx.uniform4f(GL.uniforms[location], v0, v1, v2, v3);
  4630. }
  4631. function _emscripten_request_pointerlock(target, deferUntilInEventHandler) {
  4632. if (!target) target = '#canvas';
  4633. target = JSEvents.findEventTarget(target);
  4634. if (!target) return -4;
  4635. if (!target.requestPointerLock && !target.mozRequestPointerLock && !target.webkitRequestPointerLock && !target.msRequestPointerLock) {
  4636. return -1;
  4637. }
  4638. var canPerformRequests = JSEvents.canPerformEventHandlerRequests();
  4639. // Queue this function call if we're not currently in an event handler and the user saw it appropriate to do so.
  4640. if (!canPerformRequests) {
  4641. if (deferUntilInEventHandler) {
  4642. JSEvents.deferCall(JSEvents.requestPointerLock, 2 /* priority below fullscreen */, [target]);
  4643. return 1;
  4644. } else {
  4645. return -2;
  4646. }
  4647. }
  4648. return JSEvents.requestPointerLock(target);
  4649. }
  4650. function _emscripten_glVertexAttrib2f(x0, x1, x2) { GLctx['vertexAttrib2f'](x0, x1, x2) }
  4651. function _glfwCreateWindow(width, height, title, monitor, share) {
  4652. return GLFW.createWindow(width, height, title, monitor, share);
  4653. }
  4654. function _alGetSourcei(source, param, value) {
  4655. if (!AL.currentContext) {
  4656. return;
  4657. }
  4658. var src = AL.currentContext.src[source];
  4659. if (!src) {
  4660. AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */;
  4661. return;
  4662. }
  4663. // Being that we have no way to receive end events from buffer nodes,
  4664. // we currently proccess and update a source's buffer queue every
  4665. // ~QUEUE_INTERVAL milliseconds. However, this interval is not precise,
  4666. // so we also forcefully update the source when alGetSourcei is queried
  4667. // to aid in the common scenario of application calling alGetSourcei(AL_BUFFERS_PROCESSED)
  4668. // to recycle buffers.
  4669. AL.updateSource(src);
  4670. switch (param) {
  4671. case 0x202 /* AL_SOURCE_RELATIVE */:
  4672. HEAP32[((value)>>2)]=src.panner ? 1 : 0;
  4673. break;
  4674. case 0x1001 /* AL_CONE_INNER_ANGLE */:
  4675. HEAP32[((value)>>2)]=src.coneInnerAngle;
  4676. break;
  4677. case 0x1002 /* AL_CONE_OUTER_ANGLE */:
  4678. HEAP32[((value)>>2)]=src.coneOuterAngle;
  4679. break;
  4680. case 0x1007 /* AL_LOOPING */:
  4681. HEAP32[((value)>>2)]=src.loop;
  4682. break;
  4683. case 0x1009 /* AL_BUFFER */:
  4684. if (!src.queue.length) {
  4685. HEAP32[((value)>>2)]=0;
  4686. } else {
  4687. // Find the first unprocessed buffer.
  4688. var buffer = src.queue[src.buffersPlayed].buffer;
  4689. // Return its index.
  4690. for (var i = 0; i < AL.currentContext.buf.length; ++i) {
  4691. if (buffer == AL.currentContext.buf[i]) {
  4692. HEAP32[((value)>>2)]=i+1;
  4693. return;
  4694. }
  4695. }
  4696. HEAP32[((value)>>2)]=0;
  4697. }
  4698. break;
  4699. case 0x1010 /* AL_SOURCE_STATE */:
  4700. HEAP32[((value)>>2)]=src.state;
  4701. break;
  4702. case 0x1015 /* AL_BUFFERS_QUEUED */:
  4703. HEAP32[((value)>>2)]=src.queue.length
  4704. break;
  4705. case 0x1016 /* AL_BUFFERS_PROCESSED */:
  4706. if (src.loop) {
  4707. HEAP32[((value)>>2)]=0
  4708. } else {
  4709. HEAP32[((value)>>2)]=src.buffersPlayed
  4710. }
  4711. break;
  4712. default:
  4713. AL.currentContext.err = 0xA002 /* AL_INVALID_ENUM */;
  4714. break;
  4715. }
  4716. }
  4717. function _emscripten_glClearStencil(x0) { GLctx['clearStencil'](x0) }
  4718. function _emscripten_glDetachShader(program, shader) {
  4719. GLctx.detachShader(GL.programs[program],
  4720. GL.shaders[shader]);
  4721. }
  4722. function _emscripten_glDeleteVertexArrays(n, vaos) {
  4723. for (var i = 0; i < n; i++) {
  4724. var id = HEAP32[(((vaos)+(i*4))>>2)];
  4725. GLctx['deleteVertexArray'](GL.vaos[id]);
  4726. GL.vaos[id] = null;
  4727. }
  4728. }
  4729. function _alGenSources(count, sources) {
  4730. if (!AL.currentContext) {
  4731. return;
  4732. }
  4733. for (var i = 0; i < count; ++i) {
  4734. var gain = AL.currentContext.ctx.createGain();
  4735. gain.connect(AL.currentContext.gain);
  4736. AL.currentContext.src[AL.newSrcId] = {
  4737. context: AL.currentContext,
  4738. state: 0x1011 /* AL_INITIAL */,
  4739. queue: [],
  4740. loop: false,
  4741. playbackRate: 1,
  4742. _position: [0, 0, 0],
  4743. _velocity: [0, 0, 0],
  4744. _direction: [0, 0, 0],
  4745. get refDistance() {
  4746. return this._refDistance || 1;
  4747. },
  4748. set refDistance(val) {
  4749. this._refDistance = val;
  4750. if (this.panner) this.panner.refDistance = val;
  4751. },
  4752. get maxDistance() {
  4753. return this._maxDistance || 10000;
  4754. },
  4755. set maxDistance(val) {
  4756. this._maxDistance = val;
  4757. if (this.panner) this.panner.maxDistance = val;
  4758. },
  4759. get rolloffFactor() {
  4760. return this._rolloffFactor || 1;
  4761. },
  4762. set rolloffFactor(val) {
  4763. this._rolloffFactor = val;
  4764. if (this.panner) this.panner.rolloffFactor = val;
  4765. },
  4766. get position() {
  4767. return this._position;
  4768. },
  4769. set position(val) {
  4770. this._position[0] = val[0];
  4771. this._position[1] = val[1];
  4772. this._position[2] = val[2];
  4773. if (this.panner) this.panner.setPosition(val[0], val[1], val[2]);
  4774. },
  4775. get velocity() {
  4776. return this._velocity;
  4777. },
  4778. set velocity(val) {
  4779. this._velocity[0] = val[0];
  4780. this._velocity[1] = val[1];
  4781. this._velocity[2] = val[2];
  4782. // TODO: The velocity values are not currently used to implement a doppler effect.
  4783. // If support for doppler effect is reintroduced, compute the doppler
  4784. // speed pitch factor and apply it here.
  4785. },
  4786. get direction() {
  4787. return this._direction;
  4788. },
  4789. set direction(val) {
  4790. this._direction[0] = val[0];
  4791. this._direction[1] = val[1];
  4792. this._direction[2] = val[2];
  4793. if (this.panner) this.panner.setOrientation(val[0], val[1], val[2]);
  4794. },
  4795. get coneOuterGain() {
  4796. return this._coneOuterGain || 0.0;
  4797. },
  4798. set coneOuterGain(val) {
  4799. this._coneOuterGain = val;
  4800. if (this.panner) this.panner.coneOuterGain = val;
  4801. },
  4802. get coneInnerAngle() {
  4803. return this._coneInnerAngle || 360.0;
  4804. },
  4805. set coneInnerAngle(val) {
  4806. this._coneInnerAngle = val;
  4807. if (this.panner) this.panner.coneInnerAngle = val;
  4808. },
  4809. get coneOuterAngle() {
  4810. return this._coneOuterAngle || 360.0;
  4811. },
  4812. set coneOuterAngle(val) {
  4813. this._coneOuterAngle = val;
  4814. if (this.panner) this.panner.coneOuterAngle = val;
  4815. },
  4816. gain: gain,
  4817. panner: null,
  4818. buffersPlayed: 0,
  4819. bufferPosition: 0
  4820. };
  4821. HEAP32[(((sources)+(i*4))>>2)]=AL.newSrcId;
  4822. AL.newSrcId++;
  4823. }
  4824. }
  4825. function _glfwInit() {
  4826. if (GLFW.windows) return 1; // GL_TRUE
  4827. GLFW.initialTime = GLFW.getTime();
  4828. GLFW.hints = GLFW.defaultHints;
  4829. GLFW.windows = new Array()
  4830. GLFW.active = null;
  4831. window.addEventListener("keydown", GLFW.onKeydown, true);
  4832. window.addEventListener("keypress", GLFW.onKeyPress, true);
  4833. window.addEventListener("keyup", GLFW.onKeyup, true);
  4834. Module["canvas"].addEventListener("mousemove", GLFW.onMousemove, true);
  4835. Module["canvas"].addEventListener("mousedown", GLFW.onMouseButtonDown, true);
  4836. Module["canvas"].addEventListener("mouseup", GLFW.onMouseButtonUp, true);
  4837. Module["canvas"].addEventListener('wheel', GLFW.onMouseWheel, true);
  4838. Module["canvas"].addEventListener('mousewheel', GLFW.onMouseWheel, true);
  4839. Module["canvas"].addEventListener('mouseenter', GLFW.onMouseenter, true);
  4840. Module["canvas"].addEventListener('mouseleave', GLFW.onMouseleave, true);
  4841. Browser.resizeListeners.push(function(width, height) {
  4842. GLFW.onCanvasResize(width, height);
  4843. });
  4844. return 1; // GL_TRUE
  4845. }
  4846. function _emscripten_glGetTexParameteriv(target, pname, params) {
  4847. if (!params) {
  4848. // GLES2 specification does not specify how to behave if params is a null pointer. Since calling this function does not make sense
  4849. // if p == null, issue a GL error to notify user about it.
  4850. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  4851. return;
  4852. }
  4853. HEAP32[((params)>>2)]=GLctx.getTexParameter(target, pname);
  4854. }
  4855. function _alDeleteSources(count, sources) {
  4856. if (!AL.currentContext) {
  4857. return;
  4858. }
  4859. for (var i = 0; i < count; ++i) {
  4860. var sourceIdx = HEAP32[(((sources)+(i*4))>>2)];
  4861. delete AL.currentContext.src[sourceIdx];
  4862. }
  4863. }
  4864. function _glfwSwapBuffers(winid) {
  4865. GLFW.swapBuffers(winid);
  4866. }
  4867. function _emscripten_glGenerateMipmap(x0) { GLctx['generateMipmap'](x0) }
  4868. function _emscripten_glCullFace(x0) { GLctx['cullFace'](x0) }
  4869. function _emscripten_glUniform4f(location, v0, v1, v2, v3) {
  4870. GLctx.uniform4f(GL.uniforms[location], v0, v1, v2, v3);
  4871. }
  4872. function _glDisableVertexAttribArray(index) {
  4873. GLctx.disableVertexAttribArray(index);
  4874. }
  4875. function _emscripten_glUseProgram(program) {
  4876. GLctx.useProgram(program ? GL.programs[program] : null);
  4877. }
  4878. function _emscripten_glHint(x0, x1) { GLctx['hint'](x0, x1) }
  4879. function _emscripten_glUniform2fv(location, count, value) {
  4880. var view;
  4881. if (2*count <= GL.MINI_TEMP_BUFFER_SIZE) {
  4882. // avoid allocation when uploading few enough uniforms
  4883. view = GL.miniTempBufferViews[2*count-1];
  4884. for (var i = 0; i < 2*count; i += 2) {
  4885. view[i] = HEAPF32[(((value)+(4*i))>>2)];
  4886. view[i+1] = HEAPF32[(((value)+(4*i+4))>>2)];
  4887. }
  4888. } else {
  4889. view = HEAPF32.subarray((value)>>2,(value+count*8)>>2);
  4890. }
  4891. GLctx.uniform2fv(GL.uniforms[location], view);
  4892. }
  4893. function _glfwSwapInterval(interval) {
  4894. interval = Math.abs(interval); // GLFW uses negative values to enable GLX_EXT_swap_control_tear, which we don't have, so just treat negative and positive the same.
  4895. if (interval == 0) _emscripten_set_main_loop_timing(0/*EM_TIMING_SETTIMEOUT*/, 0);
  4896. else _emscripten_set_main_loop_timing(1/*EM_TIMING_RAF*/, interval);
  4897. }
  4898. function _glGetShaderInfoLog(shader, maxLength, length, infoLog) {
  4899. var log = GLctx.getShaderInfoLog(GL.shaders[shader]);
  4900. if (log === null) log = '(unknown error)';
  4901. if (maxLength > 0 && infoLog) {
  4902. var numBytesWrittenExclNull = stringToUTF8(log, infoLog, maxLength);
  4903. if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
  4904. } else {
  4905. if (length) HEAP32[((length)>>2)]=0;
  4906. }
  4907. }
  4908. function _emscripten_glMatrixMode(){ throw 'Legacy GL function (glMatrixMode) called. If you want legacy GL emulation, you need to compile with -s LEGACY_GL_EMULATION=1 to enable legacy GL emulation.'; }
  4909. function _abort() {
  4910. Module['abort']();
  4911. }
  4912. function _emscripten_glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer) {
  4913. GLctx.framebufferRenderbuffer(target, attachment, renderbuffertarget,
  4914. GL.renderbuffers[renderbuffer]);
  4915. }
  4916. function _alGenBuffers(count, buffers) {
  4917. if (!AL.currentContext) {
  4918. return;
  4919. }
  4920. for (var i = 0; i < count; ++i) {
  4921. AL.currentContext.buf.push(null);
  4922. HEAP32[(((buffers)+(i*4))>>2)]=AL.currentContext.buf.length;
  4923. }
  4924. }
  4925. function _emscripten_glDeleteFramebuffers(n, framebuffers) {
  4926. for (var i = 0; i < n; ++i) {
  4927. var id = HEAP32[(((framebuffers)+(i*4))>>2)];
  4928. var framebuffer = GL.framebuffers[id];
  4929. if (!framebuffer) continue; // GL spec: "glDeleteFramebuffers silently ignores 0s and names that do not correspond to existing framebuffer objects".
  4930. GLctx.deleteFramebuffer(framebuffer);
  4931. framebuffer.name = 0;
  4932. GL.framebuffers[id] = null;
  4933. }
  4934. }
  4935. function _emscripten_glIsBuffer(buffer) {
  4936. var b = GL.buffers[buffer];
  4937. if (!b) return 0;
  4938. return GLctx.isBuffer(b);
  4939. }
  4940. function _emscripten_glUniform2iv(location, count, value) {
  4941. GLctx.uniform2iv(GL.uniforms[location], HEAP32.subarray((value)>>2,(value+count*8)>>2));
  4942. }
  4943. function _emscripten_glVertexAttrib1fv(index, v) {
  4944. GLctx.vertexAttrib1f(index, HEAPF32[v>>2]);
  4945. }
  4946. function _glEnable(x0) { GLctx['enable'](x0) }
  4947. function _alBufferData(buffer, format, data, size, freq) {
  4948. if (!AL.currentContext) {
  4949. return;
  4950. }
  4951. if (buffer > AL.currentContext.buf.length) {
  4952. return;
  4953. }
  4954. try {
  4955. switch (format) {
  4956. case 0x1100 /* AL_FORMAT_MONO8 */:
  4957. var buf = AL.currentContext.ctx.createBuffer(1, size, freq);
  4958. buf.bytesPerSample = 1;
  4959. var channel0 = buf.getChannelData(0);
  4960. for (var i = 0; i < size; ++i) channel0[i] = HEAPU8[data++] * 0.0078125 /* 1/128 */ - 1.0;
  4961. break;
  4962. case 0x1101 /* AL_FORMAT_MONO16 */:
  4963. var buf = AL.currentContext.ctx.createBuffer(1, size>>1, freq);
  4964. buf.bytesPerSample = 2;
  4965. var channel0 = buf.getChannelData(0);
  4966. data >>= 1;
  4967. for (var i = 0; i < size>>1; ++i) channel0[i] = HEAP16[data++] * 0.000030517578125 /* 1/32768 */;
  4968. break;
  4969. case 0x1102 /* AL_FORMAT_STEREO8 */:
  4970. var buf = AL.currentContext.ctx.createBuffer(2, size>>1, freq);
  4971. buf.bytesPerSample = 1;
  4972. var channel0 = buf.getChannelData(0);
  4973. var channel1 = buf.getChannelData(1);
  4974. for (var i = 0; i < size>>1; ++i) {
  4975. channel0[i] = HEAPU8[data++] * 0.0078125 /* 1/128 */ - 1.0;
  4976. channel1[i] = HEAPU8[data++] * 0.0078125 /* 1/128 */ - 1.0;
  4977. }
  4978. break;
  4979. case 0x1103 /* AL_FORMAT_STEREO16 */:
  4980. var buf = AL.currentContext.ctx.createBuffer(2, size>>2, freq);
  4981. buf.bytesPerSample = 2;
  4982. var channel0 = buf.getChannelData(0);
  4983. var channel1 = buf.getChannelData(1);
  4984. data >>= 1;
  4985. for (var i = 0; i < size>>2; ++i) {
  4986. channel0[i] = HEAP16[data++] * 0.000030517578125 /* 1/32768 */;
  4987. channel1[i] = HEAP16[data++] * 0.000030517578125 /* 1/32768 */;
  4988. }
  4989. break;
  4990. case 0x10010 /* AL_FORMAT_MONO_FLOAT32 */:
  4991. var buf = AL.currentContext.ctx.createBuffer(1, size>>2, freq);
  4992. buf.bytesPerSample = 4;
  4993. var channel0 = buf.getChannelData(0);
  4994. data >>= 2;
  4995. for (var i = 0; i < size>>2; ++i) channel0[i] = HEAPF32[data++];
  4996. break;
  4997. case 0x10011 /* AL_FORMAT_STEREO_FLOAT32 */:
  4998. var buf = AL.currentContext.ctx.createBuffer(2, size>>3, freq);
  4999. buf.bytesPerSample = 4;
  5000. var channel0 = buf.getChannelData(0);
  5001. var channel1 = buf.getChannelData(1);
  5002. data >>= 2;
  5003. for (var i = 0; i < size>>2; ++i) {
  5004. channel0[i] = HEAPF32[data++];
  5005. channel1[i] = HEAPF32[data++];
  5006. }
  5007. break;
  5008. default:
  5009. AL.currentContext.err = 0xA003 /* AL_INVALID_VALUE */;
  5010. break;
  5011. }
  5012. AL.currentContext.buf[buffer - 1] = buf;
  5013. } catch (e) {
  5014. AL.currentContext.err = 0xA003 /* AL_INVALID_VALUE */;
  5015. }
  5016. }
  5017. function _alSourceStop(source) {
  5018. if (!AL.currentContext) {
  5019. return;
  5020. }
  5021. var src = AL.currentContext.src[source];
  5022. if (!src) {
  5023. AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */;
  5024. return;
  5025. }
  5026. AL.setSourceState(src, 0x1014 /* AL_STOPPED */);
  5027. }
  5028. function emscriptenWebGLComputeImageSize(width, height, sizePerPixel, alignment) {
  5029. function roundedToNextMultipleOf(x, y) {
  5030. return Math.floor((x + y - 1) / y) * y
  5031. }
  5032. var plainRowSize = width * sizePerPixel;
  5033. var alignedRowSize = roundedToNextMultipleOf(plainRowSize, alignment);
  5034. return (height <= 0) ? 0 :
  5035. ((height - 1) * alignedRowSize + plainRowSize);
  5036. }function emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, internalFormat) {
  5037. var sizePerPixel;
  5038. var numChannels;
  5039. switch(format) {
  5040. case 0x1906 /* GL_ALPHA */:
  5041. case 0x1909 /* GL_LUMINANCE */:
  5042. case 0x1902 /* GL_DEPTH_COMPONENT */:
  5043. numChannels = 1;
  5044. break;
  5045. case 0x190A /* GL_LUMINANCE_ALPHA */:
  5046. numChannels = 2;
  5047. break;
  5048. case 0x1907 /* GL_RGB */:
  5049. case 0x8C40 /* GL_SRGB_EXT */:
  5050. numChannels = 3;
  5051. break;
  5052. case 0x1908 /* GL_RGBA */:
  5053. case 0x8C42 /* GL_SRGB_ALPHA_EXT */:
  5054. numChannels = 4;
  5055. break;
  5056. default:
  5057. GL.recordError(0x0500); // GL_INVALID_ENUM
  5058. return null;
  5059. }
  5060. switch (type) {
  5061. case 0x1401 /* GL_UNSIGNED_BYTE */:
  5062. sizePerPixel = numChannels*1;
  5063. break;
  5064. case 0x1403 /* GL_UNSIGNED_SHORT */:
  5065. case 0x8D61 /* GL_HALF_FLOAT_OES */:
  5066. sizePerPixel = numChannels*2;
  5067. break;
  5068. case 0x1405 /* GL_UNSIGNED_INT */:
  5069. case 0x1406 /* GL_FLOAT */:
  5070. sizePerPixel = numChannels*4;
  5071. break;
  5072. case 0x84FA /* GL_UNSIGNED_INT_24_8_WEBGL/GL_UNSIGNED_INT_24_8 */:
  5073. sizePerPixel = 4;
  5074. break;
  5075. case 0x8363 /* GL_UNSIGNED_SHORT_5_6_5 */:
  5076. case 0x8033 /* GL_UNSIGNED_SHORT_4_4_4_4 */:
  5077. case 0x8034 /* GL_UNSIGNED_SHORT_5_5_5_1 */:
  5078. sizePerPixel = 2;
  5079. break;
  5080. default:
  5081. GL.recordError(0x0500); // GL_INVALID_ENUM
  5082. return null;
  5083. }
  5084. var bytes = emscriptenWebGLComputeImageSize(width, height, sizePerPixel, GL.unpackAlignment);
  5085. switch(type) {
  5086. case 0x1401 /* GL_UNSIGNED_BYTE */:
  5087. return HEAPU8.subarray((pixels),(pixels+bytes));
  5088. case 0x1406 /* GL_FLOAT */:
  5089. return HEAPF32.subarray((pixels)>>2,(pixels+bytes)>>2);
  5090. case 0x1405 /* GL_UNSIGNED_INT */:
  5091. case 0x84FA /* GL_UNSIGNED_INT_24_8_WEBGL/GL_UNSIGNED_INT_24_8 */:
  5092. return HEAPU32.subarray((pixels)>>2,(pixels+bytes)>>2);
  5093. case 0x1403 /* GL_UNSIGNED_SHORT */:
  5094. case 0x8363 /* GL_UNSIGNED_SHORT_5_6_5 */:
  5095. case 0x8033 /* GL_UNSIGNED_SHORT_4_4_4_4 */:
  5096. case 0x8034 /* GL_UNSIGNED_SHORT_5_5_5_1 */:
  5097. case 0x8D61 /* GL_HALF_FLOAT_OES */:
  5098. return HEAPU16.subarray((pixels)>>1,(pixels+bytes)>>1);
  5099. default:
  5100. GL.recordError(0x0500); // GL_INVALID_ENUM
  5101. return null;
  5102. }
  5103. }function _emscripten_glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) {
  5104. var pixelData = null;
  5105. if (pixels) pixelData = emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, 0);
  5106. GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixelData);
  5107. }
  5108. function _emscripten_glPolygonOffset(x0, x1) { GLctx['polygonOffset'](x0, x1) }
  5109. var _emscripten_asm_const_int=true;
  5110. function _emscripten_glUniform2f(location, v0, v1) {
  5111. GLctx.uniform2f(GL.uniforms[location], v0, v1);
  5112. }
  5113. function _glGetAttribLocation(program, name) {
  5114. program = GL.programs[program];
  5115. name = Pointer_stringify(name);
  5116. return GLctx.getAttribLocation(program, name);
  5117. }
  5118. function _glfwWindowHint(target, hint) {
  5119. GLFW.hints[target] = hint;
  5120. }
  5121. function _emscripten_glUniform2i(location, v0, v1) {
  5122. GLctx.uniform2i(GL.uniforms[location], v0, v1);
  5123. }
  5124. function _glBlendFunc(x0, x1) { GLctx['blendFunc'](x0, x1) }
  5125. function _glCreateProgram() {
  5126. var id = GL.getNewId(GL.programs);
  5127. var program = GLctx.createProgram();
  5128. program.name = id;
  5129. GL.programs[id] = program;
  5130. return id;
  5131. }
  5132. function _emscripten_glDeleteRenderbuffers(n, renderbuffers) {
  5133. for (var i = 0; i < n; i++) {
  5134. var id = HEAP32[(((renderbuffers)+(i*4))>>2)];
  5135. var renderbuffer = GL.renderbuffers[id];
  5136. if (!renderbuffer) continue; // GL spec: "glDeleteRenderbuffers silently ignores 0s and names that do not correspond to existing renderbuffer objects".
  5137. GLctx.deleteRenderbuffer(renderbuffer);
  5138. renderbuffer.name = 0;
  5139. GL.renderbuffers[id] = null;
  5140. }
  5141. }
  5142. function _emscripten_glGetBufferParameteriv(target, value, data) {
  5143. if (!data) {
  5144. // GLES2 specification does not specify how to behave if data is a null pointer. Since calling this function does not make sense
  5145. // if data == null, issue a GL error to notify user about it.
  5146. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  5147. return;
  5148. }
  5149. HEAP32[((data)>>2)]=GLctx.getBufferParameter(target, value);
  5150. }
  5151. function emscriptenWebGLGetUniform(program, location, params, type) {
  5152. if (!params) {
  5153. // GLES2 specification does not specify how to behave if params is a null pointer. Since calling this function does not make sense
  5154. // if params == null, issue a GL error to notify user about it.
  5155. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  5156. return;
  5157. }
  5158. var data = GLctx.getUniform(GL.programs[program], GL.uniforms[location]);
  5159. if (typeof data == 'number' || typeof data == 'boolean') {
  5160. switch (type) {
  5161. case 'Integer': HEAP32[((params)>>2)]=data; break;
  5162. case 'Float': HEAPF32[((params)>>2)]=data; break;
  5163. default: throw 'internal emscriptenWebGLGetUniform() error, bad type: ' + type;
  5164. }
  5165. } else {
  5166. for (var i = 0; i < data.length; i++) {
  5167. switch (type) {
  5168. case 'Integer': HEAP32[(((params)+(i))>>2)]=data[i]; break;
  5169. case 'Float': HEAPF32[(((params)+(i))>>2)]=data[i]; break;
  5170. default: throw 'internal emscriptenWebGLGetUniform() error, bad type: ' + type;
  5171. }
  5172. }
  5173. }
  5174. }function _emscripten_glGetUniformiv(program, location, params) {
  5175. emscriptenWebGLGetUniform(program, location, params, 'Integer');
  5176. }
  5177. function _emscripten_glDepthMask(flag) {
  5178. GLctx.depthMask(!!flag);
  5179. }
  5180. function _emscripten_glDepthRangef(x0, x1) { GLctx['depthRange'](x0, x1) }
  5181. function _emscripten_glDepthRange(x0, x1) { GLctx['depthRange'](x0, x1) }
  5182. function _emscripten_set_fullscreenchange_callback(target, userData, useCapture, callbackfunc) {
  5183. if (typeof JSEvents.fullscreenEnabled() === 'undefined') return -1;
  5184. if (!target) target = document;
  5185. else {
  5186. target = JSEvents.findEventTarget(target);
  5187. if (!target) return -4;
  5188. }
  5189. JSEvents.registerFullscreenChangeEventCallback(target, userData, useCapture, callbackfunc, 19, "fullscreenchange");
  5190. JSEvents.registerFullscreenChangeEventCallback(target, userData, useCapture, callbackfunc, 19, "mozfullscreenchange");
  5191. JSEvents.registerFullscreenChangeEventCallback(target, userData, useCapture, callbackfunc, 19, "webkitfullscreenchange");
  5192. JSEvents.registerFullscreenChangeEventCallback(target, userData, useCapture, callbackfunc, 19, "msfullscreenchange");
  5193. return 0;
  5194. }
  5195. function _emscripten_glGetShaderPrecisionFormat(shaderType, precisionType, range, precision) {
  5196. var result = GLctx.getShaderPrecisionFormat(shaderType, precisionType);
  5197. HEAP32[((range)>>2)]=result.rangeMin;
  5198. HEAP32[(((range)+(4))>>2)]=result.rangeMax;
  5199. HEAP32[((precision)>>2)]=result.precision;
  5200. }
  5201. function _emscripten_glUniform1fv(location, count, value) {
  5202. var view;
  5203. if (count <= GL.MINI_TEMP_BUFFER_SIZE) {
  5204. // avoid allocation when uploading few enough uniforms
  5205. view = GL.miniTempBufferViews[count-1];
  5206. for (var i = 0; i < count; ++i) {
  5207. view[i] = HEAPF32[(((value)+(4*i))>>2)];
  5208. }
  5209. } else {
  5210. view = HEAPF32.subarray((value)>>2,(value+count*4)>>2);
  5211. }
  5212. GLctx.uniform1fv(GL.uniforms[location], view);
  5213. }
  5214. function _alSourceQueueBuffers(source, count, buffers) {
  5215. if (!AL.currentContext) {
  5216. return;
  5217. }
  5218. var src = AL.currentContext.src[source];
  5219. if (!src) {
  5220. AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */;
  5221. return;
  5222. }
  5223. for (var i = 0; i < count; ++i) {
  5224. var bufferIdx = HEAP32[(((buffers)+(i*4))>>2)];
  5225. if (bufferIdx > AL.currentContext.buf.length) {
  5226. AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */;
  5227. return;
  5228. }
  5229. }
  5230. for (var i = 0; i < count; ++i) {
  5231. var bufferIdx = HEAP32[(((buffers)+(i*4))>>2)];
  5232. var buffer = AL.currentContext.buf[bufferIdx - 1];
  5233. src.queue.push({ buffer: buffer, src: null });
  5234. }
  5235. AL.updateSource(src);
  5236. }
  5237. function _glDeleteBuffers(n, buffers) {
  5238. for (var i = 0; i < n; i++) {
  5239. var id = HEAP32[(((buffers)+(i*4))>>2)];
  5240. var buffer = GL.buffers[id];
  5241. // From spec: "glDeleteBuffers silently ignores 0's and names that do not
  5242. // correspond to existing buffer objects."
  5243. if (!buffer) continue;
  5244. GLctx.deleteBuffer(buffer);
  5245. buffer.name = 0;
  5246. GL.buffers[id] = null;
  5247. if (id == GL.currArrayBuffer) GL.currArrayBuffer = 0;
  5248. if (id == GL.currElementArrayBuffer) GL.currElementArrayBuffer = 0;
  5249. }
  5250. }
  5251. function _emscripten_set_gamepaddisconnected_callback(userData, useCapture, callbackfunc) {
  5252. if (!navigator.getGamepads && !navigator.webkitGetGamepads) return -1;
  5253. JSEvents.registerGamepadEventCallback(window, userData, useCapture, callbackfunc, 27, "gamepaddisconnected");
  5254. return 0;
  5255. }
  5256. function _emscripten_glBindProgramARB() {
  5257. Module['printErr']('missing function: emscripten_glBindProgramARB'); abort(-1);
  5258. }
  5259. function _emscripten_glBindTexture(target, texture) {
  5260. GLctx.bindTexture(target, texture ? GL.textures[texture] : null);
  5261. }
  5262. function _glfwDefaultWindowHints() {
  5263. GLFW.hints = GLFW.defaultHints;
  5264. }
  5265. function _emscripten_glDeleteProgram(id) {
  5266. if (!id) return;
  5267. var program = GL.programs[id];
  5268. if (!program) { // glDeleteProgram actually signals an error when deleting a nonexisting object, unlike some other GL delete functions.
  5269. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  5270. return;
  5271. }
  5272. GLctx.deleteProgram(program);
  5273. program.name = 0;
  5274. GL.programs[id] = null;
  5275. GL.programInfos[id] = null;
  5276. }
  5277. function _emscripten_glDisable(x0) { GLctx['disable'](x0) }
  5278. function _emscripten_glVertexAttrib3fv(index, v) {
  5279. GLctx.vertexAttrib3f(index, HEAPF32[v>>2], HEAPF32[v+4>>2], HEAPF32[v+8>>2]);
  5280. }
  5281. function _glClearColor(x0, x1, x2, x3) { GLctx['clearColor'](x0, x1, x2, x3) }
  5282. function _emscripten_glGetActiveAttrib(program, index, bufSize, length, size, type, name) {
  5283. program = GL.programs[program];
  5284. var info = GLctx.getActiveAttrib(program, index);
  5285. if (!info) return; // If an error occurs, nothing will be written to length, size and type and name.
  5286. if (bufSize > 0 && name) {
  5287. var numBytesWrittenExclNull = stringToUTF8(info.name, name, bufSize);
  5288. if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
  5289. } else {
  5290. if (length) HEAP32[((length)>>2)]=0;
  5291. }
  5292. if (size) HEAP32[((size)>>2)]=info.size;
  5293. if (type) HEAP32[((type)>>2)]=info.type;
  5294. }
  5295. function _emscripten_glIsFramebuffer(framebuffer) {
  5296. var fb = GL.framebuffers[framebuffer];
  5297. if (!fb) return 0;
  5298. return GLctx.isFramebuffer(fb);
  5299. }
  5300. function _emscripten_glLineWidth(x0) { GLctx['lineWidth'](x0) }
  5301. function _glfwGetCursorPos(winid, x, y) {
  5302. GLFW.getCursorPos(winid, x, y);
  5303. }
  5304. function _emscripten_glGetString(name_) {
  5305. if (GL.stringCache[name_]) return GL.stringCache[name_];
  5306. var ret;
  5307. switch(name_) {
  5308. case 0x1F00 /* GL_VENDOR */:
  5309. case 0x1F01 /* GL_RENDERER */:
  5310. case 0x9245 /* UNMASKED_VENDOR_WEBGL */:
  5311. case 0x9246 /* UNMASKED_RENDERER_WEBGL */:
  5312. ret = allocate(intArrayFromString(GLctx.getParameter(name_)), 'i8', ALLOC_NORMAL);
  5313. break;
  5314. case 0x1F02 /* GL_VERSION */:
  5315. var glVersion = GLctx.getParameter(GLctx.VERSION);
  5316. // return GLES version string corresponding to the version of the WebGL context
  5317. {
  5318. glVersion = 'OpenGL ES 2.0 (' + glVersion + ')';
  5319. }
  5320. ret = allocate(intArrayFromString(glVersion), 'i8', ALLOC_NORMAL);
  5321. break;
  5322. case 0x1F03 /* GL_EXTENSIONS */:
  5323. var exts = GLctx.getSupportedExtensions();
  5324. var gl_exts = [];
  5325. for (var i = 0; i < exts.length; ++i) {
  5326. gl_exts.push(exts[i]);
  5327. gl_exts.push("GL_" + exts[i]);
  5328. }
  5329. ret = allocate(intArrayFromString(gl_exts.join(' ')), 'i8', ALLOC_NORMAL);
  5330. break;
  5331. case 0x8B8C /* GL_SHADING_LANGUAGE_VERSION */:
  5332. var glslVersion = GLctx.getParameter(GLctx.SHADING_LANGUAGE_VERSION);
  5333. // extract the version number 'N.M' from the string 'WebGL GLSL ES N.M ...'
  5334. var ver_re = /^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;
  5335. var ver_num = glslVersion.match(ver_re);
  5336. if (ver_num !== null) {
  5337. if (ver_num[1].length == 3) ver_num[1] = ver_num[1] + '0'; // ensure minor version has 2 digits
  5338. glslVersion = 'OpenGL ES GLSL ES ' + ver_num[1] + ' (' + glslVersion + ')';
  5339. }
  5340. ret = allocate(intArrayFromString(glslVersion), 'i8', ALLOC_NORMAL);
  5341. break;
  5342. default:
  5343. GL.recordError(0x0500/*GL_INVALID_ENUM*/);
  5344. return 0;
  5345. }
  5346. GL.stringCache[name_] = ret;
  5347. return ret;
  5348. }
  5349. function _emscripten_glGetAttribLocation(program, name) {
  5350. program = GL.programs[program];
  5351. name = Pointer_stringify(name);
  5352. return GLctx.getAttribLocation(program, name);
  5353. }
  5354. function _emscripten_glRotatef() {
  5355. Module['printErr']('missing function: emscripten_glRotatef'); abort(-1);
  5356. }
  5357. function emscriptenWebGLGet(name_, p, type) {
  5358. // Guard against user passing a null pointer.
  5359. // Note that GLES2 spec does not say anything about how passing a null pointer should be treated.
  5360. // Testing on desktop core GL 3, the application crashes on glGetIntegerv to a null pointer, but
  5361. // better to report an error instead of doing anything random.
  5362. if (!p) {
  5363. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  5364. return;
  5365. }
  5366. var ret = undefined;
  5367. switch(name_) { // Handle a few trivial GLES values
  5368. case 0x8DFA: // GL_SHADER_COMPILER
  5369. ret = 1;
  5370. break;
  5371. case 0x8DF8: // GL_SHADER_BINARY_FORMATS
  5372. if (type !== 'Integer' && type !== 'Integer64') {
  5373. GL.recordError(0x0500); // GL_INVALID_ENUM
  5374. }
  5375. return; // Do not write anything to the out pointer, since no binary formats are supported.
  5376. case 0x8DF9: // GL_NUM_SHADER_BINARY_FORMATS
  5377. ret = 0;
  5378. break;
  5379. case 0x86A2: // GL_NUM_COMPRESSED_TEXTURE_FORMATS
  5380. // WebGL doesn't have GL_NUM_COMPRESSED_TEXTURE_FORMATS (it's obsolete since GL_COMPRESSED_TEXTURE_FORMATS returns a JS array that can be queried for length),
  5381. // so implement it ourselves to allow C++ GLES2 code get the length.
  5382. var formats = GLctx.getParameter(0x86A3 /*GL_COMPRESSED_TEXTURE_FORMATS*/);
  5383. ret = formats.length;
  5384. break;
  5385. }
  5386. if (ret === undefined) {
  5387. var result = GLctx.getParameter(name_);
  5388. switch (typeof(result)) {
  5389. case "number":
  5390. ret = result;
  5391. break;
  5392. case "boolean":
  5393. ret = result ? 1 : 0;
  5394. break;
  5395. case "string":
  5396. GL.recordError(0x0500); // GL_INVALID_ENUM
  5397. return;
  5398. case "object":
  5399. if (result === null) {
  5400. // null is a valid result for some (e.g., which buffer is bound - perhaps nothing is bound), but otherwise
  5401. // can mean an invalid name_, which we need to report as an error
  5402. switch(name_) {
  5403. case 0x8894: // ARRAY_BUFFER_BINDING
  5404. case 0x8B8D: // CURRENT_PROGRAM
  5405. case 0x8895: // ELEMENT_ARRAY_BUFFER_BINDING
  5406. case 0x8CA6: // FRAMEBUFFER_BINDING
  5407. case 0x8CA7: // RENDERBUFFER_BINDING
  5408. case 0x8069: // TEXTURE_BINDING_2D
  5409. case 0x8514: { // TEXTURE_BINDING_CUBE_MAP
  5410. ret = 0;
  5411. break;
  5412. }
  5413. default: {
  5414. GL.recordError(0x0500); // GL_INVALID_ENUM
  5415. return;
  5416. }
  5417. }
  5418. } else if (result instanceof Float32Array ||
  5419. result instanceof Uint32Array ||
  5420. result instanceof Int32Array ||
  5421. result instanceof Array) {
  5422. for (var i = 0; i < result.length; ++i) {
  5423. switch (type) {
  5424. case 'Integer': HEAP32[(((p)+(i*4))>>2)]=result[i]; break;
  5425. case 'Float': HEAPF32[(((p)+(i*4))>>2)]=result[i]; break;
  5426. case 'Boolean': HEAP8[(((p)+(i))>>0)]=result[i] ? 1 : 0; break;
  5427. default: throw 'internal glGet error, bad type: ' + type;
  5428. }
  5429. }
  5430. return;
  5431. } else if (result instanceof WebGLBuffer ||
  5432. result instanceof WebGLProgram ||
  5433. result instanceof WebGLFramebuffer ||
  5434. result instanceof WebGLRenderbuffer ||
  5435. result instanceof WebGLTexture) {
  5436. ret = result.name | 0;
  5437. } else {
  5438. GL.recordError(0x0500); // GL_INVALID_ENUM
  5439. return;
  5440. }
  5441. break;
  5442. default:
  5443. GL.recordError(0x0500); // GL_INVALID_ENUM
  5444. return;
  5445. }
  5446. }
  5447. switch (type) {
  5448. case 'Integer64': (tempI64 = [ret>>>0,(tempDouble=ret,(+(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[((p)>>2)]=tempI64[0],HEAP32[(((p)+(4))>>2)]=tempI64[1]); break;
  5449. case 'Integer': HEAP32[((p)>>2)]=ret; break;
  5450. case 'Float': HEAPF32[((p)>>2)]=ret; break;
  5451. case 'Boolean': HEAP8[((p)>>0)]=ret ? 1 : 0; break;
  5452. default: throw 'internal glGet error, bad type: ' + type;
  5453. }
  5454. }function _emscripten_glGetIntegerv(name_, p) {
  5455. emscriptenWebGLGet(name_, p, 'Integer');
  5456. }
  5457. function _emscripten_glGetFramebufferAttachmentParameteriv(target, attachment, pname, params) {
  5458. var result = GLctx.getFramebufferAttachmentParameter(target, attachment, pname);
  5459. HEAP32[((params)>>2)]=result;
  5460. }
  5461. function _llvm_stackrestore(p) {
  5462. var self = _llvm_stacksave;
  5463. var ret = self.LLVM_SAVEDSTACKS[p];
  5464. self.LLVM_SAVEDSTACKS.splice(p, 1);
  5465. Runtime.stackRestore(ret);
  5466. }
  5467. function _glfwSetWindowShouldClose(winid, value) {
  5468. var win = GLFW.WindowFromId(winid);
  5469. if (!win) return;
  5470. win.shouldClose = value;
  5471. }
  5472. function _emscripten_glClientActiveTexture() {
  5473. Module['printErr']('missing function: emscripten_glClientActiveTexture'); abort(-1);
  5474. }
  5475. function _glGenBuffers(n, buffers) {
  5476. for (var i = 0; i < n; i++) {
  5477. var buffer = GLctx.createBuffer();
  5478. if (!buffer) {
  5479. GL.recordError(0x0502 /* GL_INVALID_OPERATION */);
  5480. while(i < n) HEAP32[(((buffers)+(i++*4))>>2)]=0;
  5481. return;
  5482. }
  5483. var id = GL.getNewId(GL.buffers);
  5484. buffer.name = id;
  5485. GL.buffers[id] = buffer;
  5486. HEAP32[(((buffers)+(i*4))>>2)]=id;
  5487. }
  5488. }
  5489. function _emscripten_memcpy_big(dest, src, num) {
  5490. HEAPU8.set(HEAPU8.subarray(src, src+num), dest);
  5491. return dest;
  5492. }
  5493. Module["_memcpy"] = _memcpy;
  5494. function _emscripten_glGetShaderInfoLog(shader, maxLength, length, infoLog) {
  5495. var log = GLctx.getShaderInfoLog(GL.shaders[shader]);
  5496. if (log === null) log = '(unknown error)';
  5497. if (maxLength > 0 && infoLog) {
  5498. var numBytesWrittenExclNull = stringToUTF8(log, infoLog, maxLength);
  5499. if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
  5500. } else {
  5501. if (length) HEAP32[((length)>>2)]=0;
  5502. }
  5503. }
  5504. function _glfwGetTime() {
  5505. return GLFW.getTime() - GLFW.initialTime;
  5506. }
  5507. function _emscripten_glGetRenderbufferParameteriv(target, pname, params) {
  5508. if (!params) {
  5509. // GLES2 specification does not specify how to behave if params is a null pointer. Since calling this function does not make sense
  5510. // if params == null, issue a GL error to notify user about it.
  5511. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  5512. return;
  5513. }
  5514. HEAP32[((params)>>2)]=GLctx.getRenderbufferParameter(target, pname);
  5515. }
  5516. function _emscripten_glStencilOpSeparate(x0, x1, x2, x3) { GLctx['stencilOpSeparate'](x0, x1, x2, x3) }
  5517. function _emscripten_glReadPixels(x, y, width, height, format, type, pixels) {
  5518. var pixelData = emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, format);
  5519. if (!pixelData) {
  5520. GL.recordError(0x0500/*GL_INVALID_ENUM*/);
  5521. return;
  5522. }
  5523. GLctx.readPixels(x, y, width, height, format, type, pixelData);
  5524. }
  5525. function _emscripten_glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data) {
  5526. GLctx['compressedTexSubImage2D'](target, level, xoffset, yoffset, width, height, format, data ? HEAPU8.subarray((data),(data+imageSize)) : null);
  5527. }
  5528. function _emscripten_glGetError() {
  5529. // First return any GL error generated by the emscripten library_gl.js interop layer.
  5530. if (GL.lastError) {
  5531. var error = GL.lastError;
  5532. GL.lastError = 0/*GL_NO_ERROR*/;
  5533. return error;
  5534. } else { // If there were none, return the GL error from the browser GL context.
  5535. return GLctx.getError();
  5536. }
  5537. }
  5538. function _emscripten_glFramebufferTexture2D(target, attachment, textarget, texture, level) {
  5539. GLctx.framebufferTexture2D(target, attachment, textarget,
  5540. GL.textures[texture], level);
  5541. }
  5542. function _emscripten_glIsEnabled(x0) { return GLctx['isEnabled'](x0) }
  5543. function _glClearDepthf(x0) { GLctx['clearDepth'](x0) }
  5544. function _alSourcef(source, param, value) {
  5545. if (!AL.currentContext) {
  5546. return;
  5547. }
  5548. var src = AL.currentContext.src[source];
  5549. if (!src) {
  5550. AL.currentContext.err = 0xA001 /* AL_INVALID_NAME */;
  5551. return;
  5552. }
  5553. switch (param) {
  5554. case 0x1003 /* AL_PITCH */:
  5555. if (value <= 0) {
  5556. AL.currentContext.err = 0xA003 /* AL_INVALID_VALUE */;
  5557. return;
  5558. }
  5559. src.playbackRate = value;
  5560. if (src.state === 0x1012 /* AL_PLAYING */) {
  5561. // update currently playing entry
  5562. var entry = src.queue[src.buffersPlayed];
  5563. if (!entry || !entry.src) return; // It is possible that AL.updateSources() has not yet fed the next buffer, if so, skip.
  5564. var currentTime = AL.currentContext.ctx.currentTime;
  5565. var oldrate = entry.src.playbackRate.value;
  5566. var offset = currentTime - src.bufferPosition;
  5567. // entry.src.duration is expressed after factoring in playbackRate, so when changing playback rate, need
  5568. // to recompute/rescale the rate to the new playback speed.
  5569. entry.src.duration = (entry.src.duration - offset) * oldrate / src.playbackRate;
  5570. if (entry.src.playbackRate.value != src.playbackRate) entry.src.playbackRate.value = src.playbackRate;
  5571. src.bufferPosition = currentTime;
  5572. // stop other buffers
  5573. for (var k = src.buffersPlayed + 1; k < src.queue.length; k++) {
  5574. var entry = src.queue[k];
  5575. if (entry.src) {
  5576. entry.src.stop();
  5577. entry.src = null;
  5578. }
  5579. }
  5580. // update the source to reschedule buffers with the new playbackRate
  5581. AL.updateSource(src);
  5582. }
  5583. break;
  5584. case 0x100A /* AL_GAIN */:
  5585. if (src.gain.gain.value != value) src.gain.gain.value = value;
  5586. break;
  5587. // case 0x100D /* AL_MIN_GAIN */:
  5588. // break;
  5589. // case 0x100E /* AL_MAX_GAIN */:
  5590. // break;
  5591. case 0x1023 /* AL_MAX_DISTANCE */:
  5592. src.maxDistance = value;
  5593. break;
  5594. case 0x1021 /* AL_ROLLOFF_FACTOR */:
  5595. src.rolloffFactor = value;
  5596. break;
  5597. case 0x1022 /* AL_CONE_OUTER_GAIN */:
  5598. src.coneOuterGain = value;
  5599. break;
  5600. case 0x1001 /* AL_CONE_INNER_ANGLE */:
  5601. src.coneInnerAngle = value;
  5602. break;
  5603. case 0x1002 /* AL_CONE_OUTER_ANGLE */:
  5604. src.coneOuterAngle = value;
  5605. break;
  5606. case 0x1020 /* AL_REFERENCE_DISTANCE */:
  5607. src.refDistance = value;
  5608. break;
  5609. default:
  5610. AL.currentContext.err = 0xA002 /* AL_INVALID_ENUM */;
  5611. break;
  5612. }
  5613. }
  5614. Module["_memmove"] = _memmove;
  5615. function _glGenTextures(n, textures) {
  5616. for (var i = 0; i < n; i++) {
  5617. var texture = GLctx.createTexture();
  5618. if (!texture) {
  5619. GL.recordError(0x0502 /* GL_INVALID_OPERATION */); // GLES + EGL specs don't specify what should happen here, so best to issue an error and create IDs with 0.
  5620. while(i < n) HEAP32[(((textures)+(i++*4))>>2)]=0;
  5621. return;
  5622. }
  5623. var id = GL.getNewId(GL.textures);
  5624. texture.name = id;
  5625. GL.textures[id] = texture;
  5626. HEAP32[(((textures)+(i*4))>>2)]=id;
  5627. }
  5628. }
  5629. function _emscripten_glVertexAttrib4f(x0, x1, x2, x3, x4) { GLctx['vertexAttrib4f'](x0, x1, x2, x3, x4) }
  5630. function _glDepthFunc(x0) { GLctx['depthFunc'](x0) }
  5631. 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_STATIC);
  5632. Module["_llvm_cttz_i32"] = _llvm_cttz_i32;
  5633. Module["___udivmoddi4"] = ___udivmoddi4;
  5634. Module["___uremdi3"] = ___uremdi3;
  5635. function _emscripten_glClearDepthf(x0) { GLctx['clearDepth'](x0) }
  5636. function _alListenerf(param, value) {
  5637. if (!AL.currentContext) {
  5638. return;
  5639. }
  5640. switch (param) {
  5641. case 0x100A /* AL_GAIN */:
  5642. if (AL.currentContext.gain.gain.value != value) AL.currentContext.gain.gain.value = value;
  5643. break;
  5644. default:
  5645. AL.currentContext.err = 0xA002 /* AL_INVALID_ENUM */;
  5646. break;
  5647. }
  5648. }
  5649. function _emscripten_glClear(x0) { GLctx['clear'](x0) }
  5650. function _alGetError() {
  5651. if (!AL.currentContext) {
  5652. return 0xA004 /* AL_INVALID_OPERATION */;
  5653. } else {
  5654. // Reset error on get.
  5655. var err = AL.currentContext.err;
  5656. AL.currentContext.err = 0 /* AL_NO_ERROR */;
  5657. return err;
  5658. }
  5659. }
  5660. function _emscripten_glBindBuffer(target, buffer) {
  5661. var bufferObj = buffer ? GL.buffers[buffer] : null;
  5662. GLctx.bindBuffer(target, bufferObj);
  5663. }
  5664. function _emscripten_glGetUniformfv(program, location, params) {
  5665. emscriptenWebGLGetUniform(program, location, params, 'Float');
  5666. }
  5667. function _glGetProgramiv(program, pname, p) {
  5668. if (!p) {
  5669. // GLES2 specification does not specify how to behave if p is a null pointer. Since calling this function does not make sense
  5670. // if p == null, issue a GL error to notify user about it.
  5671. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  5672. return;
  5673. }
  5674. if (program >= GL.counter) {
  5675. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  5676. return;
  5677. }
  5678. var ptable = GL.programInfos[program];
  5679. if (!ptable) {
  5680. GL.recordError(0x0502 /* GL_INVALID_OPERATION */);
  5681. return;
  5682. }
  5683. if (pname == 0x8B84) { // GL_INFO_LOG_LENGTH
  5684. var log = GLctx.getProgramInfoLog(GL.programs[program]);
  5685. if (log === null) log = '(unknown error)';
  5686. HEAP32[((p)>>2)]=log.length + 1;
  5687. } else if (pname == 0x8B87 /* GL_ACTIVE_UNIFORM_MAX_LENGTH */) {
  5688. HEAP32[((p)>>2)]=ptable.maxUniformLength;
  5689. } else if (pname == 0x8B8A /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */) {
  5690. if (ptable.maxAttributeLength == -1) {
  5691. var program = GL.programs[program];
  5692. var numAttribs = GLctx.getProgramParameter(program, GLctx.ACTIVE_ATTRIBUTES);
  5693. ptable.maxAttributeLength = 0; // Spec says if there are no active attribs, 0 must be returned.
  5694. for (var i = 0; i < numAttribs; ++i) {
  5695. var activeAttrib = GLctx.getActiveAttrib(program, i);
  5696. ptable.maxAttributeLength = Math.max(ptable.maxAttributeLength, activeAttrib.name.length+1);
  5697. }
  5698. }
  5699. HEAP32[((p)>>2)]=ptable.maxAttributeLength;
  5700. } else if (pname == 0x8A35 /* GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH */) {
  5701. if (ptable.maxUniformBlockNameLength == -1) {
  5702. var program = GL.programs[program];
  5703. var numBlocks = GLctx.getProgramParameter(program, GLctx.ACTIVE_UNIFORM_BLOCKS);
  5704. ptable.maxUniformBlockNameLength = 0;
  5705. for (var i = 0; i < numBlocks; ++i) {
  5706. var activeBlockName = GLctx.getActiveUniformBlockName(program, i);
  5707. ptable.maxUniformBlockNameLength = Math.max(ptable.maxUniformBlockNameLength, activeBlockName.length+1);
  5708. }
  5709. }
  5710. HEAP32[((p)>>2)]=ptable.maxUniformBlockNameLength;
  5711. } else {
  5712. HEAP32[((p)>>2)]=GLctx.getProgramParameter(GL.programs[program], pname);
  5713. }
  5714. }
  5715. function _glVertexAttribPointer(index, size, type, normalized, stride, ptr) {
  5716. GLctx.vertexAttribPointer(index, size, type, !!normalized, stride, ptr);
  5717. }
  5718. function _emscripten_exit_pointerlock() {
  5719. // Make sure no queued up calls will fire after this.
  5720. JSEvents.removeDeferredCalls(JSEvents.requestPointerLock);
  5721. if (document.exitPointerLock) {
  5722. document.exitPointerLock();
  5723. } else if (document.msExitPointerLock) {
  5724. document.msExitPointerLock();
  5725. } else if (document.mozExitPointerLock) {
  5726. document.mozExitPointerLock();
  5727. } else if (document.webkitExitPointerLock) {
  5728. document.webkitExitPointerLock();
  5729. } else {
  5730. return -1;
  5731. }
  5732. return 0;
  5733. }
  5734. function _glGetUniformLocation(program, name) {
  5735. name = Pointer_stringify(name);
  5736. var arrayOffset = 0;
  5737. // If user passed an array accessor "[index]", parse the array index off the accessor.
  5738. if (name.indexOf(']', name.length-1) !== -1) {
  5739. var ls = name.lastIndexOf('[');
  5740. var arrayIndex = name.slice(ls+1, -1);
  5741. if (arrayIndex.length > 0) {
  5742. arrayOffset = parseInt(arrayIndex);
  5743. if (arrayOffset < 0) {
  5744. return -1;
  5745. }
  5746. }
  5747. name = name.slice(0, ls);
  5748. }
  5749. var ptable = GL.programInfos[program];
  5750. if (!ptable) {
  5751. return -1;
  5752. }
  5753. var utable = ptable.uniforms;
  5754. var uniformInfo = utable[name]; // returns pair [ dimension_of_uniform_array, uniform_location ]
  5755. if (uniformInfo && arrayOffset < uniformInfo[0]) { // Check if user asked for an out-of-bounds element, i.e. for 'vec4 colors[3];' user could ask for 'colors[10]' which should return -1.
  5756. return uniformInfo[1]+arrayOffset;
  5757. } else {
  5758. return -1;
  5759. }
  5760. }
  5761. function _emscripten_glGetAttachedShaders(program, maxCount, count, shaders) {
  5762. var result = GLctx.getAttachedShaders(GL.programs[program]);
  5763. var len = result.length;
  5764. if (len > maxCount) {
  5765. len = maxCount;
  5766. }
  5767. HEAP32[((count)>>2)]=len;
  5768. for (var i = 0; i < len; ++i) {
  5769. var id = GL.shaders.indexOf(result[i]);
  5770. assert(id !== -1, 'shader not bound to local id');
  5771. HEAP32[(((shaders)+(i*4))>>2)]=id;
  5772. }
  5773. }
  5774. function _emscripten_glGenRenderbuffers(n, renderbuffers) {
  5775. for (var i = 0; i < n; i++) {
  5776. var renderbuffer = GLctx.createRenderbuffer();
  5777. if (!renderbuffer) {
  5778. GL.recordError(0x0502 /* GL_INVALID_OPERATION */);
  5779. while(i < n) HEAP32[(((renderbuffers)+(i++*4))>>2)]=0;
  5780. return;
  5781. }
  5782. var id = GL.getNewId(GL.renderbuffers);
  5783. renderbuffer.name = id;
  5784. GL.renderbuffers[id] = renderbuffer;
  5785. HEAP32[(((renderbuffers)+(i*4))>>2)]=id;
  5786. }
  5787. }
  5788. function _emscripten_glFrontFace(x0) { GLctx['frontFace'](x0) }
  5789. function _emscripten_glActiveTexture(x0) { GLctx['activeTexture'](x0) }
  5790. function _emscripten_glUniform1iv(location, count, value) {
  5791. GLctx.uniform1iv(GL.uniforms[location], HEAP32.subarray((value)>>2,(value+count*4)>>2));
  5792. }
  5793. function _emscripten_glTexCoordPointer() {
  5794. Module['printErr']('missing function: emscripten_glTexCoordPointer'); abort(-1);
  5795. }
  5796. function _emscripten_glGetInfoLogARB() {
  5797. Module['printErr']('missing function: emscripten_glGetInfoLogARB'); abort(-1);
  5798. }
  5799. function __exit(status) {
  5800. // void _exit(int status);
  5801. // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html
  5802. Module['exit'](status);
  5803. }function _exit(status) {
  5804. __exit(status);
  5805. }
  5806. function _emscripten_glRenderbufferStorage(x0, x1, x2, x3) { GLctx['renderbufferStorage'](x0, x1, x2, x3) }
  5807. function _emscripten_glCopyTexSubImage2D(x0, x1, x2, x3, x4, x5, x6, x7) { GLctx['copyTexSubImage2D'](x0, x1, x2, x3, x4, x5, x6, x7) }
  5808. function _glfwSetCursorPosCallback(winid, cbfun) {
  5809. GLFW.setCursorPosCallback(winid, cbfun);
  5810. }
  5811. function _glBindAttribLocation(program, index, name) {
  5812. name = Pointer_stringify(name);
  5813. GLctx.bindAttribLocation(GL.programs[program], index, name);
  5814. }
  5815. function _emscripten_glShaderBinary() {
  5816. GL.recordError(0x0500/*GL_INVALID_ENUM*/);
  5817. }
  5818. function _emscripten_glIsProgram(program) {
  5819. var program = GL.programs[program];
  5820. if (!program) return 0;
  5821. return GLctx.isProgram(program);
  5822. }
  5823. Module["_bitshift64Shl"] = _bitshift64Shl;
  5824. function _emscripten_glBlendColor(x0, x1, x2, x3) { GLctx['blendColor'](x0, x1, x2, x3) }
  5825. function _emscripten_glGetShaderiv(shader, pname, p) {
  5826. if (!p) {
  5827. // GLES2 specification does not specify how to behave if p is a null pointer. Since calling this function does not make sense
  5828. // if p == null, issue a GL error to notify user about it.
  5829. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  5830. return;
  5831. }
  5832. if (pname == 0x8B84) { // GL_INFO_LOG_LENGTH
  5833. var log = GLctx.getShaderInfoLog(GL.shaders[shader]);
  5834. if (log === null) log = '(unknown error)';
  5835. HEAP32[((p)>>2)]=log.length + 1;
  5836. } else {
  5837. HEAP32[((p)>>2)]=GLctx.getShaderParameter(GL.shaders[shader], pname);
  5838. }
  5839. }
  5840. function _emscripten_glUniformMatrix3fv(location, count, transpose, value) {
  5841. var view;
  5842. if (9*count <= GL.MINI_TEMP_BUFFER_SIZE) {
  5843. // avoid allocation when uploading few enough uniforms
  5844. view = GL.miniTempBufferViews[9*count-1];
  5845. for (var i = 0; i < 9*count; i += 9) {
  5846. view[i] = HEAPF32[(((value)+(4*i))>>2)];
  5847. view[i+1] = HEAPF32[(((value)+(4*i+4))>>2)];
  5848. view[i+2] = HEAPF32[(((value)+(4*i+8))>>2)];
  5849. view[i+3] = HEAPF32[(((value)+(4*i+12))>>2)];
  5850. view[i+4] = HEAPF32[(((value)+(4*i+16))>>2)];
  5851. view[i+5] = HEAPF32[(((value)+(4*i+20))>>2)];
  5852. view[i+6] = HEAPF32[(((value)+(4*i+24))>>2)];
  5853. view[i+7] = HEAPF32[(((value)+(4*i+28))>>2)];
  5854. view[i+8] = HEAPF32[(((value)+(4*i+32))>>2)];
  5855. }
  5856. } else {
  5857. view = HEAPF32.subarray((value)>>2,(value+count*36)>>2);
  5858. }
  5859. GLctx.uniformMatrix3fv(GL.uniforms[location], !!transpose, view);
  5860. }
  5861. Module["___udivdi3"] = ___udivdi3;
  5862. function _emscripten_glUniform4fv(location, count, value) {
  5863. var view;
  5864. if (4*count <= GL.MINI_TEMP_BUFFER_SIZE) {
  5865. // avoid allocation when uploading few enough uniforms
  5866. view = GL.miniTempBufferViews[4*count-1];
  5867. for (var i = 0; i < 4*count; i += 4) {
  5868. view[i] = HEAPF32[(((value)+(4*i))>>2)];
  5869. view[i+1] = HEAPF32[(((value)+(4*i+4))>>2)];
  5870. view[i+2] = HEAPF32[(((value)+(4*i+8))>>2)];
  5871. view[i+3] = HEAPF32[(((value)+(4*i+12))>>2)];
  5872. }
  5873. } else {
  5874. view = HEAPF32.subarray((value)>>2,(value+count*16)>>2);
  5875. }
  5876. GLctx.uniform4fv(GL.uniforms[location], view);
  5877. }
  5878. function _glBufferSubData(target, offset, size, data) {
  5879. GLctx.bufferSubData(target, offset, HEAPU8.subarray(data, data+size));
  5880. }
  5881. function _alcDestroyContext(context) {
  5882. // Stop playback, etc
  5883. clearInterval(AL.contexts[context - 1].interval);
  5884. }
  5885. function _emscripten_glGenFramebuffers(n, ids) {
  5886. for (var i = 0; i < n; ++i) {
  5887. var framebuffer = GLctx.createFramebuffer();
  5888. if (!framebuffer) {
  5889. GL.recordError(0x0502 /* GL_INVALID_OPERATION */);
  5890. while(i < n) HEAP32[(((ids)+(i++*4))>>2)]=0;
  5891. return;
  5892. }
  5893. var id = GL.getNewId(GL.framebuffers);
  5894. framebuffer.name = id;
  5895. GL.framebuffers[id] = framebuffer;
  5896. HEAP32[(((ids)+(i*4))>>2)]=id;
  5897. }
  5898. }
  5899. function _glGetShaderiv(shader, pname, p) {
  5900. if (!p) {
  5901. // GLES2 specification does not specify how to behave if p is a null pointer. Since calling this function does not make sense
  5902. // if p == null, issue a GL error to notify user about it.
  5903. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  5904. return;
  5905. }
  5906. if (pname == 0x8B84) { // GL_INFO_LOG_LENGTH
  5907. var log = GLctx.getShaderInfoLog(GL.shaders[shader]);
  5908. if (log === null) log = '(unknown error)';
  5909. HEAP32[((p)>>2)]=log.length + 1;
  5910. } else {
  5911. HEAP32[((p)>>2)]=GLctx.getShaderParameter(GL.shaders[shader], pname);
  5912. }
  5913. }
  5914. function _emscripten_glBlendEquationSeparate(x0, x1) { GLctx['blendEquationSeparate'](x0, x1) }
  5915. function _glfwSetWindowIconifyCallback(winid, cbfun) {
  5916. var win = GLFW.WindowFromId(winid);
  5917. if (!win) return;
  5918. win.windowIconifyFunc = cbfun;
  5919. }
  5920. function _emscripten_glDrawRangeElements() {
  5921. Module['printErr']('missing function: emscripten_glDrawRangeElements'); abort(-1);
  5922. }
  5923. function _emscripten_glGenTextures(n, textures) {
  5924. for (var i = 0; i < n; i++) {
  5925. var texture = GLctx.createTexture();
  5926. if (!texture) {
  5927. GL.recordError(0x0502 /* GL_INVALID_OPERATION */); // GLES + EGL specs don't specify what should happen here, so best to issue an error and create IDs with 0.
  5928. while(i < n) HEAP32[(((textures)+(i++*4))>>2)]=0;
  5929. return;
  5930. }
  5931. var id = GL.getNewId(GL.textures);
  5932. texture.name = id;
  5933. GL.textures[id] = texture;
  5934. HEAP32[(((textures)+(i*4))>>2)]=id;
  5935. }
  5936. }
  5937. function _emscripten_glVertexAttrib2fv(index, v) {
  5938. GLctx.vertexAttrib2f(index, HEAPF32[v>>2], HEAPF32[v+4>>2]);
  5939. }
  5940. function _emscripten_glGetActiveUniform(program, index, bufSize, length, size, type, name) {
  5941. program = GL.programs[program];
  5942. var info = GLctx.getActiveUniform(program, index);
  5943. if (!info) return; // If an error occurs, nothing will be written to length, size, type and name.
  5944. if (bufSize > 0 && name) {
  5945. var numBytesWrittenExclNull = stringToUTF8(info.name, name, bufSize);
  5946. if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
  5947. } else {
  5948. if (length) HEAP32[((length)>>2)]=0;
  5949. }
  5950. if (size) HEAP32[((size)>>2)]=info.size;
  5951. if (type) HEAP32[((type)>>2)]=info.type;
  5952. }
  5953. Module["_roundf"] = _roundf;
  5954. function _emscripten_glDeleteObjectARB() {
  5955. Module['printErr']('missing function: emscripten_glDeleteObjectARB'); abort(-1);
  5956. }
  5957. function _emscripten_set_touchmove_callback(target, userData, useCapture, callbackfunc) {
  5958. JSEvents.registerTouchEventCallback(target, userData, useCapture, callbackfunc, 24, "touchmove");
  5959. return 0;
  5960. }
  5961. function _emscripten_glUniform1f(location, v0) {
  5962. GLctx.uniform1f(GL.uniforms[location], v0);
  5963. }
  5964. function _alcCreateContext(device, attrList) {
  5965. if (device != 1) {
  5966. return 0;
  5967. }
  5968. if (attrList) {
  5969. return 0;
  5970. }
  5971. var ctx;
  5972. try {
  5973. ctx = new AudioContext();
  5974. } catch (e) {
  5975. try {
  5976. ctx = new webkitAudioContext();
  5977. } catch (e) {}
  5978. }
  5979. if (ctx) {
  5980. // Old Web Audio API (e.g. Safari 6.0.5) had an inconsistently named createGainNode function.
  5981. if (typeof(ctx.createGain) === 'undefined') ctx.createGain = ctx.createGainNode;
  5982. var gain = ctx.createGain();
  5983. gain.connect(ctx.destination);
  5984. // Extend the Web Audio API AudioListener object with a few tracking values of our own.
  5985. ctx.listener._position = [0, 0, 0];
  5986. ctx.listener._velocity = [0, 0, 0];
  5987. ctx.listener._orientation = [0, 0, 0, 0, 0, 0];
  5988. var context = {
  5989. ctx: ctx,
  5990. err: 0,
  5991. src: {},
  5992. buf: [],
  5993. interval: setInterval(function() { AL.updateSources(context); }, AL.QUEUE_INTERVAL),
  5994. gain: gain
  5995. };
  5996. AL.contexts.push(context);
  5997. return AL.contexts.length;
  5998. } else {
  5999. return 0;
  6000. }
  6001. }
  6002. function _emscripten_glVertexAttribPointer(index, size, type, normalized, stride, ptr) {
  6003. GLctx.vertexAttribPointer(index, size, type, !!normalized, stride, ptr);
  6004. }
  6005. function _alcCloseDevice(device) {
  6006. // Stop playback, etc
  6007. }
  6008. function _glShaderSource(shader, count, string, length) {
  6009. var source = GL.getSource(shader, count, string, length);
  6010. GLctx.shaderSource(GL.shaders[shader], source);
  6011. }
  6012. function _emscripten_glDrawArrays(mode, first, count) {
  6013. GLctx.drawArrays(mode, first, count);
  6014. }
  6015. function _emscripten_glGenBuffers(n, buffers) {
  6016. for (var i = 0; i < n; i++) {
  6017. var buffer = GLctx.createBuffer();
  6018. if (!buffer) {
  6019. GL.recordError(0x0502 /* GL_INVALID_OPERATION */);
  6020. while(i < n) HEAP32[(((buffers)+(i++*4))>>2)]=0;
  6021. return;
  6022. }
  6023. var id = GL.getNewId(GL.buffers);
  6024. buffer.name = id;
  6025. GL.buffers[id] = buffer;
  6026. HEAP32[(((buffers)+(i*4))>>2)]=id;
  6027. }
  6028. }
  6029. function _emscripten_glClearDepth(x0) { GLctx['clearDepth'](x0) }
  6030. function _emscripten_set_keypress_callback(target, userData, useCapture, callbackfunc) {
  6031. JSEvents.registerKeyEventCallback(target, userData, useCapture, callbackfunc, 1, "keypress");
  6032. return 0;
  6033. }
  6034. function _glfwSetCharCallback(winid, cbfun) {
  6035. GLFW.setCharCallback(winid, cbfun);
  6036. }
  6037. function _emscripten_glGetUniformLocation(program, name) {
  6038. name = Pointer_stringify(name);
  6039. var arrayOffset = 0;
  6040. // If user passed an array accessor "[index]", parse the array index off the accessor.
  6041. if (name.indexOf(']', name.length-1) !== -1) {
  6042. var ls = name.lastIndexOf('[');
  6043. var arrayIndex = name.slice(ls+1, -1);
  6044. if (arrayIndex.length > 0) {
  6045. arrayOffset = parseInt(arrayIndex);
  6046. if (arrayOffset < 0) {
  6047. return -1;
  6048. }
  6049. }
  6050. name = name.slice(0, ls);
  6051. }
  6052. var ptable = GL.programInfos[program];
  6053. if (!ptable) {
  6054. return -1;
  6055. }
  6056. var utable = ptable.uniforms;
  6057. var uniformInfo = utable[name]; // returns pair [ dimension_of_uniform_array, uniform_location ]
  6058. if (uniformInfo && arrayOffset < uniformInfo[0]) { // Check if user asked for an out-of-bounds element, i.e. for 'vec4 colors[3];' user could ask for 'colors[10]' which should return -1.
  6059. return uniformInfo[1]+arrayOffset;
  6060. } else {
  6061. return -1;
  6062. }
  6063. }
  6064. function _glBindBuffer(target, buffer) {
  6065. var bufferObj = buffer ? GL.buffers[buffer] : null;
  6066. GLctx.bindBuffer(target, bufferObj);
  6067. }
  6068. function _emscripten_glVertexAttrib4fv(index, v) {
  6069. GLctx.vertexAttrib4f(index, HEAPF32[v>>2], HEAPF32[v+4>>2], HEAPF32[v+8>>2], HEAPF32[v+12>>2]);
  6070. }
  6071. function _emscripten_glScissor(x0, x1, x2, x3) { GLctx['scissor'](x0, x1, x2, x3) }
  6072. function _glfwSetCursorEnterCallback(winid, cbfun) {
  6073. var win = GLFW.WindowFromId(winid);
  6074. if (!win) return;
  6075. win.cursorEnterFunc = cbfun;
  6076. }
  6077. Module["_bitshift64Lshr"] = _bitshift64Lshr;
  6078. function _glBufferData(target, size, data, usage) {
  6079. if (!data) {
  6080. GLctx.bufferData(target, size, usage);
  6081. } else {
  6082. GLctx.bufferData(target, HEAPU8.subarray(data, data+size), usage);
  6083. }
  6084. }
  6085. function _emscripten_glIsShader(shader) {
  6086. var s = GL.shaders[shader];
  6087. if (!s) return 0;
  6088. return GLctx.isShader(s);
  6089. }
  6090. function _emscripten_glDrawBuffers(n, bufs) {
  6091. var bufArray = GL.tempFixedLengthArray[n];
  6092. for (var i = 0; i < n; i++) {
  6093. bufArray[i] = HEAP32[(((bufs)+(i*4))>>2)];
  6094. }
  6095. GLctx['drawBuffers'](bufArray);
  6096. }
  6097. function _glGetFloatv(name_, p) {
  6098. emscriptenWebGLGet(name_, p, 'Float');
  6099. }
  6100. function _emscripten_glBindFramebuffer(target, framebuffer) {
  6101. GLctx.bindFramebuffer(target, framebuffer ? GL.framebuffers[framebuffer] : null);
  6102. }
  6103. function _alcGetContextsDevice(context) {
  6104. if (context <= AL.contexts.length && context > 0) {
  6105. // Returns the only one audio device
  6106. return 1;
  6107. }
  6108. return 0;
  6109. }
  6110. function _emscripten_glBlendEquation(x0) { GLctx['blendEquation'](x0) }
  6111. function _emscripten_glBufferSubData(target, offset, size, data) {
  6112. GLctx.bufferSubData(target, offset, HEAPU8.subarray(data, data+size));
  6113. }
  6114. function _emscripten_glBufferData(target, size, data, usage) {
  6115. if (!data) {
  6116. GLctx.bufferData(target, size, usage);
  6117. } else {
  6118. GLctx.bufferData(target, HEAPU8.subarray(data, data+size), usage);
  6119. }
  6120. }
  6121. function ___setErrNo(value) {
  6122. if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;
  6123. else Module.printErr('failed to set errno from JS');
  6124. return value;
  6125. }
  6126. Module["_sbrk"] = _sbrk;
  6127. function _alcMakeContextCurrent(context) {
  6128. if (context == 0) {
  6129. AL.currentContext = null;
  6130. return 0;
  6131. } else {
  6132. AL.currentContext = AL.contexts[context - 1];
  6133. return 1;
  6134. }
  6135. }
  6136. function _emscripten_glGetShaderSource(shader, bufSize, length, source) {
  6137. var result = GLctx.getShaderSource(GL.shaders[shader]);
  6138. if (!result) return; // If an error occurs, nothing will be written to length or source.
  6139. if (bufSize > 0 && source) {
  6140. var numBytesWrittenExclNull = stringToUTF8(result, source, bufSize);
  6141. if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
  6142. } else {
  6143. if (length) HEAP32[((length)>>2)]=0;
  6144. }
  6145. }
  6146. Module["_llvm_bswap_i32"] = _llvm_bswap_i32;
  6147. function _emscripten_set_click_callback(target, userData, useCapture, callbackfunc) {
  6148. JSEvents.registerMouseEventCallback(target, userData, useCapture, callbackfunc, 4, "click");
  6149. return 0;
  6150. }
  6151. function _glfwSetKeyCallback(winid, cbfun) {
  6152. GLFW.setKeyCallback(winid, cbfun);
  6153. }
  6154. function _emscripten_set_gamepadconnected_callback(userData, useCapture, callbackfunc) {
  6155. if (!navigator.getGamepads && !navigator.webkitGetGamepads) return -1;
  6156. JSEvents.registerGamepadEventCallback(window, userData, useCapture, callbackfunc, 26, "gamepadconnected");
  6157. return 0;
  6158. }
  6159. function _emscripten_glGetFloatv(name_, p) {
  6160. emscriptenWebGLGet(name_, p, 'Float');
  6161. }
  6162. function _glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels) {
  6163. var pixelData = null;
  6164. if (pixels) pixelData = emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, internalFormat);
  6165. GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixelData);
  6166. }
  6167. function _glGetProgramInfoLog(program, maxLength, length, infoLog) {
  6168. var log = GLctx.getProgramInfoLog(GL.programs[program]);
  6169. if (log === null) log = '(unknown error)';
  6170. if (maxLength > 0 && infoLog) {
  6171. var numBytesWrittenExclNull = stringToUTF8(log, infoLog, maxLength);
  6172. if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
  6173. } else {
  6174. if (length) HEAP32[((length)>>2)]=0;
  6175. }
  6176. }
  6177. function _emscripten_glVertexAttribDivisor(index, divisor) {
  6178. GLctx['vertexAttribDivisor'](index, divisor);
  6179. }
  6180. function _emscripten_glDrawElementsInstanced(mode, count, type, indices, primcount) {
  6181. GLctx['drawElementsInstanced'](mode, count, type, indices, primcount);
  6182. }
  6183. function _emscripten_glDrawElements(mode, count, type, indices) {
  6184. GLctx.drawElements(mode, count, type, indices);
  6185. }
  6186. function _glfwSetMouseButtonCallback(winid, cbfun) {
  6187. GLFW.setMouseButtonCallback(winid, cbfun);
  6188. }
  6189. function _emscripten_glCreateProgram() {
  6190. var id = GL.getNewId(GL.programs);
  6191. var program = GLctx.createProgram();
  6192. program.name = id;
  6193. GL.programs[id] = program;
  6194. return id;
  6195. }
  6196. function _emscripten_glCompressedTexImage2D(target, level, internalFormat, width, height, border, imageSize, data) {
  6197. GLctx['compressedTexImage2D'](target, level, internalFormat, width, height, border, data ? HEAPU8.subarray((data),(data+imageSize)) : null);
  6198. }
  6199. function _emscripten_glClearColor(x0, x1, x2, x3) { GLctx['clearColor'](x0, x1, x2, x3) }
  6200. function _emscripten_glBindVertexArray(vao) {
  6201. GLctx['bindVertexArray'](GL.vaos[vao]);
  6202. }
  6203. function _emscripten_glLoadMatrixf() {
  6204. Module['printErr']('missing function: emscripten_glLoadMatrixf'); abort(-1);
  6205. }
  6206. function _glDeleteShader(id) {
  6207. if (!id) return;
  6208. var shader = GL.shaders[id];
  6209. if (!shader) { // glDeleteShader actually signals an error when deleting a nonexisting object, unlike some other GL delete functions.
  6210. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  6211. return;
  6212. }
  6213. GLctx.deleteShader(shader);
  6214. GL.shaders[id] = null;
  6215. }
  6216. function _emscripten_glGetProgramiv(program, pname, p) {
  6217. if (!p) {
  6218. // GLES2 specification does not specify how to behave if p is a null pointer. Since calling this function does not make sense
  6219. // if p == null, issue a GL error to notify user about it.
  6220. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  6221. return;
  6222. }
  6223. if (program >= GL.counter) {
  6224. GL.recordError(0x0501 /* GL_INVALID_VALUE */);
  6225. return;
  6226. }
  6227. var ptable = GL.programInfos[program];
  6228. if (!ptable) {
  6229. GL.recordError(0x0502 /* GL_INVALID_OPERATION */);
  6230. return;
  6231. }
  6232. if (pname == 0x8B84) { // GL_INFO_LOG_LENGTH
  6233. var log = GLctx.getProgramInfoLog(GL.programs[program]);
  6234. if (log === null) log = '(unknown error)';
  6235. HEAP32[((p)>>2)]=log.length + 1;
  6236. } else if (pname == 0x8B87 /* GL_ACTIVE_UNIFORM_MAX_LENGTH */) {
  6237. HEAP32[((p)>>2)]=ptable.maxUniformLength;
  6238. } else if (pname == 0x8B8A /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */) {
  6239. if (ptable.maxAttributeLength == -1) {
  6240. var program = GL.programs[program];
  6241. var numAttribs = GLctx.getProgramParameter(program, GLctx.ACTIVE_ATTRIBUTES);
  6242. ptable.maxAttributeLength = 0; // Spec says if there are no active attribs, 0 must be returned.
  6243. for (var i = 0; i < numAttribs; ++i) {
  6244. var activeAttrib = GLctx.getActiveAttrib(program, i);
  6245. ptable.maxAttributeLength = Math.max(ptable.maxAttributeLength, activeAttrib.name.length+1);
  6246. }
  6247. }
  6248. HEAP32[((p)>>2)]=ptable.maxAttributeLength;
  6249. } else if (pname == 0x8A35 /* GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH */) {
  6250. if (ptable.maxUniformBlockNameLength == -1) {
  6251. var program = GL.programs[program];
  6252. var numBlocks = GLctx.getProgramParameter(program, GLctx.ACTIVE_UNIFORM_BLOCKS);
  6253. ptable.maxUniformBlockNameLength = 0;
  6254. for (var i = 0; i < numBlocks; ++i) {
  6255. var activeBlockName = GLctx.getActiveUniformBlockName(program, i);
  6256. ptable.maxUniformBlockNameLength = Math.max(ptable.maxUniformBlockNameLength, activeBlockName.length+1);
  6257. }
  6258. }
  6259. HEAP32[((p)>>2)]=ptable.maxUniformBlockNameLength;
  6260. } else {
  6261. HEAP32[((p)>>2)]=GLctx.getProgramParameter(GL.programs[program], pname);
  6262. }
  6263. }
  6264. function _emscripten_glGetProgramInfoLog(program, maxLength, length, infoLog) {
  6265. var log = GLctx.getProgramInfoLog(GL.programs[program]);
  6266. if (log === null) log = '(unknown error)';
  6267. if (maxLength > 0 && infoLog) {
  6268. var numBytesWrittenExclNull = stringToUTF8(log, infoLog, maxLength);
  6269. if (length) HEAP32[((length)>>2)]=numBytesWrittenExclNull;
  6270. } else {
  6271. if (length) HEAP32[((length)>>2)]=0;
  6272. }
  6273. }
  6274. function _emscripten_glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels) {
  6275. var pixelData = null;
  6276. if (pixels) pixelData = emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, internalFormat);
  6277. GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixelData);
  6278. }
  6279. function _glPixelStorei(pname, param) {
  6280. if (pname == 0x0D05 /* GL_PACK_ALIGNMENT */) {
  6281. GL.packAlignment = param;
  6282. } else if (pname == 0x0cf5 /* GL_UNPACK_ALIGNMENT */) {
  6283. GL.unpackAlignment = param;
  6284. }
  6285. GLctx.pixelStorei(pname, param);
  6286. }
  6287. function ___unlock() {}
  6288. function _emscripten_glColorPointer() {
  6289. Module['printErr']('missing function: emscripten_glColorPointer'); abort(-1);
  6290. }
  6291. function _glViewport(x0, x1, x2, x3) { GLctx['viewport'](x0, x1, x2, x3) }
  6292. function _emscripten_glCheckFramebufferStatus(x0) { return GLctx['checkFramebufferStatus'](x0) }
  6293. function _glfwDestroyWindow(winid) {
  6294. return GLFW.destroyWindow(winid);
  6295. }
  6296. function _emscripten_glFlush() { GLctx['flush']() }
  6297. function _glfwSetErrorCallback(cbfun) {
  6298. GLFW.errorFunc = cbfun;
  6299. }
  6300. function _emscripten_glCreateShader(shaderType) {
  6301. var id = GL.getNewId(GL.shaders);
  6302. GL.shaders[id] = GLctx.createShader(shaderType);
  6303. return id;
  6304. }
  6305. function _glUniformMatrix4fv(location, count, transpose, value) {
  6306. var view;
  6307. if (16*count <= GL.MINI_TEMP_BUFFER_SIZE) {
  6308. // avoid allocation when uploading few enough uniforms
  6309. view = GL.miniTempBufferViews[16*count-1];
  6310. for (var i = 0; i < 16*count; i += 16) {
  6311. view[i] = HEAPF32[(((value)+(4*i))>>2)];
  6312. view[i+1] = HEAPF32[(((value)+(4*i+4))>>2)];
  6313. view[i+2] = HEAPF32[(((value)+(4*i+8))>>2)];
  6314. view[i+3] = HEAPF32[(((value)+(4*i+12))>>2)];
  6315. view[i+4] = HEAPF32[(((value)+(4*i+16))>>2)];
  6316. view[i+5] = HEAPF32[(((value)+(4*i+20))>>2)];
  6317. view[i+6] = HEAPF32[(((value)+(4*i+24))>>2)];
  6318. view[i+7] = HEAPF32[(((value)+(4*i+28))>>2)];
  6319. view[i+8] = HEAPF32[(((value)+(4*i+32))>>2)];
  6320. view[i+9] = HEAPF32[(((value)+(4*i+36))>>2)];
  6321. view[i+10] = HEAPF32[(((value)+(4*i+40))>>2)];
  6322. view[i+11] = HEAPF32[(((value)+(4*i+44))>>2)];
  6323. view[i+12] = HEAPF32[(((value)+(4*i+48))>>2)];
  6324. view[i+13] = HEAPF32[(((value)+(4*i+52))>>2)];
  6325. view[i+14] = HEAPF32[(((value)+(4*i+56))>>2)];
  6326. view[i+15] = HEAPF32[(((value)+(4*i+60))>>2)];
  6327. }
  6328. } else {
  6329. view = HEAPF32.subarray((value)>>2,(value+count*64)>>2);
  6330. }
  6331. GLctx.uniformMatrix4fv(GL.uniforms[location], !!transpose, view);
  6332. }
  6333. function _emscripten_glValidateProgram(program) {
  6334. GLctx.validateProgram(GL.programs[program]);
  6335. }
  6336. function _glTexParameteri(x0, x1, x2) { GLctx['texParameteri'](x0, x1, x2) }
  6337. function _glFrontFace(x0) { GLctx['frontFace'](x0) }
  6338. function _emscripten_glColorMask(red, green, blue, alpha) {
  6339. GLctx.colorMask(!!red, !!green, !!blue, !!alpha);
  6340. }
  6341. function _emscripten_glPixelStorei(pname, param) {
  6342. if (pname == 0x0D05 /* GL_PACK_ALIGNMENT */) {
  6343. GL.packAlignment = param;
  6344. } else if (pname == 0x0cf5 /* GL_UNPACK_ALIGNMENT */) {
  6345. GL.unpackAlignment = param;
  6346. }
  6347. GLctx.pixelStorei(pname, param);
  6348. }
  6349. function _emscripten_glDeleteTextures(n, textures) {
  6350. for (var i = 0; i < n; i++) {
  6351. var id = HEAP32[(((textures)+(i*4))>>2)];
  6352. var texture = GL.textures[id];
  6353. if (!texture) continue; // GL spec: "glDeleteTextures silently ignores 0s and names that do not correspond to existing textures".
  6354. GLctx.deleteTexture(texture);
  6355. texture.name = 0;
  6356. GL.textures[id] = null;
  6357. }
  6358. }
  6359. function _emscripten_glGenVertexArrays(n, arrays) {
  6360. for (var i = 0; i < n; i++) {
  6361. var vao = GLctx['createVertexArray']();
  6362. if (!vao) {
  6363. GL.recordError(0x0502 /* GL_INVALID_OPERATION */);
  6364. while(i < n) HEAP32[(((arrays)+(i++*4))>>2)]=0;
  6365. return;
  6366. }
  6367. var id = GL.getNewId(GL.vaos);
  6368. vao.name = id;
  6369. GL.vaos[id] = vao;
  6370. HEAP32[(((arrays)+(i*4))>>2)]=id;
  6371. }
  6372. }
  6373. function _time(ptr) {
  6374. var ret = (Date.now()/1000)|0;
  6375. if (ptr) {
  6376. HEAP32[((ptr)>>2)]=ret;
  6377. }
  6378. return ret;
  6379. }
  6380. function _emscripten_glGetBooleanv(name_, p) {
  6381. emscriptenWebGLGet(name_, p, 'Boolean');
  6382. }
  6383. function _emscripten_glCompileShader(shader) {
  6384. GLctx.compileShader(GL.shaders[shader]);
  6385. }
  6386. var GLctx; GL.init();
  6387. if (ENVIRONMENT_IS_NODE) {
  6388. _emscripten_get_now = function _emscripten_get_now_actual() {
  6389. var t = process['hrtime']();
  6390. return t[0] * 1e3 + t[1] / 1e6;
  6391. };
  6392. } else if (typeof dateNow !== 'undefined') {
  6393. _emscripten_get_now = dateNow;
  6394. } else if (typeof self === 'object' && self['performance'] && typeof self['performance']['now'] === 'function') {
  6395. _emscripten_get_now = function() { return self['performance']['now'](); };
  6396. } else if (typeof performance === 'object' && typeof performance['now'] === 'function') {
  6397. _emscripten_get_now = function() { return performance['now'](); };
  6398. } else {
  6399. _emscripten_get_now = Date.now;
  6400. };
  6401. Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas, vrDevice) { Module.printErr("Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead."); Module["requestFullScreen"] = Module["requestFullscreen"]; Browser.requestFullScreen(lockPointer, resizeCanvas, vrDevice) };
  6402. Module["requestFullscreen"] = function Module_requestFullscreen(lockPointer, resizeCanvas, vrDevice) { Browser.requestFullscreen(lockPointer, resizeCanvas, vrDevice) };
  6403. Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) };
  6404. Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) };
  6405. Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() };
  6406. Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() };
  6407. Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() }
  6408. Module["createContext"] = function Module_createContext(canvas, useWebGL, setInModule, webGLContextAttributes) { return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes) };
  6409. JSEvents.staticInit();;
  6410. /* flush anything remaining in the buffer during shutdown */ __ATEXIT__.push(function() { var fflush = Module["_fflush"]; if (fflush) fflush(0); var printChar = ___syscall146.printChar; if (!printChar) return; var buffers = ___syscall146.buffers; if (buffers[1].length) printChar(1, 10); if (buffers[2].length) printChar(2, 10); });;
  6411. DYNAMICTOP_PTR = allocate(1, "i32", ALLOC_STATIC);
  6412. STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
  6413. STACK_MAX = STACK_BASE + TOTAL_STACK;
  6414. DYNAMIC_BASE = Runtime.alignMemory(STACK_MAX);
  6415. HEAP32[DYNAMICTOP_PTR>>2] = DYNAMIC_BASE;
  6416. staticSealed = true; // seal the static portion of memory
  6417. assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack");
  6418. function nullFunc_viiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6419. function nullFunc_vd(x) { Module["printErr"]("Invalid function pointer called with signature 'vd'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6420. function nullFunc_vid(x) { Module["printErr"]("Invalid function pointer called with signature 'vid'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6421. function nullFunc_vi(x) { Module["printErr"]("Invalid function pointer called with signature 'vi'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6422. function nullFunc_vii(x) { Module["printErr"]("Invalid function pointer called with signature 'vii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6423. function nullFunc_ii(x) { Module["printErr"]("Invalid function pointer called with signature 'ii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6424. function nullFunc_viddd(x) { Module["printErr"]("Invalid function pointer called with signature 'viddd'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6425. function nullFunc_vidd(x) { Module["printErr"]("Invalid function pointer called with signature 'vidd'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6426. function nullFunc_iiii(x) { Module["printErr"]("Invalid function pointer called with signature 'iiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6427. function nullFunc_viiiiiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiiiiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6428. function nullFunc_viiiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6429. function nullFunc_viii(x) { Module["printErr"]("Invalid function pointer called with signature 'viii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6430. function nullFunc_vidddd(x) { Module["printErr"]("Invalid function pointer called with signature 'vidddd'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6431. function nullFunc_vdi(x) { Module["printErr"]("Invalid function pointer called with signature 'vdi'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6432. function nullFunc_viiiiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiiiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6433. function nullFunc_viiiiiiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiiiiiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6434. function nullFunc_iii(x) { Module["printErr"]("Invalid function pointer called with signature 'iii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6435. function nullFunc_i(x) { Module["printErr"]("Invalid function pointer called with signature 'i'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6436. function nullFunc_vdddddd(x) { Module["printErr"]("Invalid function pointer called with signature 'vdddddd'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6437. function nullFunc_vdddd(x) { Module["printErr"]("Invalid function pointer called with signature 'vdddd'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6438. function nullFunc_vdd(x) { Module["printErr"]("Invalid function pointer called with signature 'vdd'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6439. function nullFunc_v(x) { Module["printErr"]("Invalid function pointer called with signature 'v'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6440. function nullFunc_viid(x) { Module["printErr"]("Invalid function pointer called with signature 'viid'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6441. function nullFunc_viiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)"); Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }
  6442. function invoke_viiiii(index,a1,a2,a3,a4,a5) {
  6443. try {
  6444. Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5);
  6445. } catch(e) {
  6446. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6447. Module["setThrew"](1, 0);
  6448. }
  6449. }
  6450. function invoke_vd(index,a1) {
  6451. try {
  6452. Module["dynCall_vd"](index,a1);
  6453. } catch(e) {
  6454. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6455. Module["setThrew"](1, 0);
  6456. }
  6457. }
  6458. function invoke_vid(index,a1,a2) {
  6459. try {
  6460. Module["dynCall_vid"](index,a1,a2);
  6461. } catch(e) {
  6462. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6463. Module["setThrew"](1, 0);
  6464. }
  6465. }
  6466. function invoke_vi(index,a1) {
  6467. try {
  6468. Module["dynCall_vi"](index,a1);
  6469. } catch(e) {
  6470. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6471. Module["setThrew"](1, 0);
  6472. }
  6473. }
  6474. function invoke_vii(index,a1,a2) {
  6475. try {
  6476. Module["dynCall_vii"](index,a1,a2);
  6477. } catch(e) {
  6478. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6479. Module["setThrew"](1, 0);
  6480. }
  6481. }
  6482. function invoke_ii(index,a1) {
  6483. try {
  6484. return Module["dynCall_ii"](index,a1);
  6485. } catch(e) {
  6486. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6487. Module["setThrew"](1, 0);
  6488. }
  6489. }
  6490. function invoke_viddd(index,a1,a2,a3,a4) {
  6491. try {
  6492. Module["dynCall_viddd"](index,a1,a2,a3,a4);
  6493. } catch(e) {
  6494. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6495. Module["setThrew"](1, 0);
  6496. }
  6497. }
  6498. function invoke_vidd(index,a1,a2,a3) {
  6499. try {
  6500. Module["dynCall_vidd"](index,a1,a2,a3);
  6501. } catch(e) {
  6502. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6503. Module["setThrew"](1, 0);
  6504. }
  6505. }
  6506. function invoke_iiii(index,a1,a2,a3) {
  6507. try {
  6508. return Module["dynCall_iiii"](index,a1,a2,a3);
  6509. } catch(e) {
  6510. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6511. Module["setThrew"](1, 0);
  6512. }
  6513. }
  6514. function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8) {
  6515. try {
  6516. Module["dynCall_viiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8);
  6517. } catch(e) {
  6518. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6519. Module["setThrew"](1, 0);
  6520. }
  6521. }
  6522. function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6) {
  6523. try {
  6524. Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6);
  6525. } catch(e) {
  6526. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6527. Module["setThrew"](1, 0);
  6528. }
  6529. }
  6530. function invoke_viii(index,a1,a2,a3) {
  6531. try {
  6532. Module["dynCall_viii"](index,a1,a2,a3);
  6533. } catch(e) {
  6534. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6535. Module["setThrew"](1, 0);
  6536. }
  6537. }
  6538. function invoke_vidddd(index,a1,a2,a3,a4,a5) {
  6539. try {
  6540. Module["dynCall_vidddd"](index,a1,a2,a3,a4,a5);
  6541. } catch(e) {
  6542. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6543. Module["setThrew"](1, 0);
  6544. }
  6545. }
  6546. function invoke_vdi(index,a1,a2) {
  6547. try {
  6548. Module["dynCall_vdi"](index,a1,a2);
  6549. } catch(e) {
  6550. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6551. Module["setThrew"](1, 0);
  6552. }
  6553. }
  6554. function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7) {
  6555. try {
  6556. Module["dynCall_viiiiiii"](index,a1,a2,a3,a4,a5,a6,a7);
  6557. } catch(e) {
  6558. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6559. Module["setThrew"](1, 0);
  6560. }
  6561. }
  6562. function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) {
  6563. try {
  6564. Module["dynCall_viiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9);
  6565. } catch(e) {
  6566. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6567. Module["setThrew"](1, 0);
  6568. }
  6569. }
  6570. function invoke_iii(index,a1,a2) {
  6571. try {
  6572. return Module["dynCall_iii"](index,a1,a2);
  6573. } catch(e) {
  6574. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6575. Module["setThrew"](1, 0);
  6576. }
  6577. }
  6578. function invoke_i(index) {
  6579. try {
  6580. return Module["dynCall_i"](index);
  6581. } catch(e) {
  6582. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6583. Module["setThrew"](1, 0);
  6584. }
  6585. }
  6586. function invoke_vdddddd(index,a1,a2,a3,a4,a5,a6) {
  6587. try {
  6588. Module["dynCall_vdddddd"](index,a1,a2,a3,a4,a5,a6);
  6589. } catch(e) {
  6590. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6591. Module["setThrew"](1, 0);
  6592. }
  6593. }
  6594. function invoke_vdddd(index,a1,a2,a3,a4) {
  6595. try {
  6596. Module["dynCall_vdddd"](index,a1,a2,a3,a4);
  6597. } catch(e) {
  6598. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6599. Module["setThrew"](1, 0);
  6600. }
  6601. }
  6602. function invoke_vdd(index,a1,a2) {
  6603. try {
  6604. Module["dynCall_vdd"](index,a1,a2);
  6605. } catch(e) {
  6606. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6607. Module["setThrew"](1, 0);
  6608. }
  6609. }
  6610. function invoke_v(index) {
  6611. try {
  6612. Module["dynCall_v"](index);
  6613. } catch(e) {
  6614. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6615. Module["setThrew"](1, 0);
  6616. }
  6617. }
  6618. function invoke_viid(index,a1,a2,a3) {
  6619. try {
  6620. Module["dynCall_viid"](index,a1,a2,a3);
  6621. } catch(e) {
  6622. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6623. Module["setThrew"](1, 0);
  6624. }
  6625. }
  6626. function invoke_viiii(index,a1,a2,a3,a4) {
  6627. try {
  6628. Module["dynCall_viiii"](index,a1,a2,a3,a4);
  6629. } catch(e) {
  6630. if (typeof e !== 'number' && e !== 'longjmp') throw e;
  6631. Module["setThrew"](1, 0);
  6632. }
  6633. }
  6634. Module.asmGlobalArg = { "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array, "NaN": NaN, "Infinity": Infinity, "byteLength": byteLength };
  6635. Module.asmLibraryArg = { "abort": abort, "assert": assert, "enlargeMemory": enlargeMemory, "getTotalMemory": getTotalMemory, "abortOnCannotGrowMemory": abortOnCannotGrowMemory, "abortStackOverflow": abortStackOverflow, "nullFunc_viiiii": nullFunc_viiiii, "nullFunc_vd": nullFunc_vd, "nullFunc_vid": nullFunc_vid, "nullFunc_vi": nullFunc_vi, "nullFunc_vii": nullFunc_vii, "nullFunc_ii": nullFunc_ii, "nullFunc_viddd": nullFunc_viddd, "nullFunc_vidd": nullFunc_vidd, "nullFunc_iiii": nullFunc_iiii, "nullFunc_viiiiiiii": nullFunc_viiiiiiii, "nullFunc_viiiiii": nullFunc_viiiiii, "nullFunc_viii": nullFunc_viii, "nullFunc_vidddd": nullFunc_vidddd, "nullFunc_vdi": nullFunc_vdi, "nullFunc_viiiiiii": nullFunc_viiiiiii, "nullFunc_viiiiiiiii": nullFunc_viiiiiiiii, "nullFunc_iii": nullFunc_iii, "nullFunc_i": nullFunc_i, "nullFunc_vdddddd": nullFunc_vdddddd, "nullFunc_vdddd": nullFunc_vdddd, "nullFunc_vdd": nullFunc_vdd, "nullFunc_v": nullFunc_v, "nullFunc_viid": nullFunc_viid, "nullFunc_viiii": nullFunc_viiii, "invoke_viiiii": invoke_viiiii, "invoke_vd": invoke_vd, "invoke_vid": invoke_vid, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viddd": invoke_viddd, "invoke_vidd": invoke_vidd, "invoke_iiii": invoke_iiii, "invoke_viiiiiiii": invoke_viiiiiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_viii": invoke_viii, "invoke_vidddd": invoke_vidddd, "invoke_vdi": invoke_vdi, "invoke_viiiiiii": invoke_viiiiiii, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_iii": invoke_iii, "invoke_i": invoke_i, "invoke_vdddddd": invoke_vdddddd, "invoke_vdddd": invoke_vdddd, "invoke_vdd": invoke_vdd, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_viiii": invoke_viiii, "_emscripten_glGetTexParameterfv": _emscripten_glGetTexParameterfv, "_glUseProgram": _glUseProgram, "_emscripten_glShaderSource": _emscripten_glShaderSource, "_glfwCreateWindow": _glfwCreateWindow, "_emscripten_glReleaseShaderCompiler": _emscripten_glReleaseShaderCompiler, "_emscripten_glBlendFuncSeparate": _emscripten_glBlendFuncSeparate, "_emscripten_glUniform4iv": _emscripten_glUniform4iv, "_emscripten_glVertexAttribPointer": _emscripten_glVertexAttribPointer, "_emscripten_glGetIntegerv": _emscripten_glGetIntegerv, "_emscripten_glCullFace": _emscripten_glCullFace, "_emscripten_glIsProgram": _emscripten_glIsProgram, "_emscripten_glStencilMaskSeparate": _emscripten_glStencilMaskSeparate, "_emscripten_glViewport": _emscripten_glViewport, "_emscripten_glFrontFace": _emscripten_glFrontFace, "_alBufferData": _alBufferData, "_glDeleteProgram": _glDeleteProgram, "_emscripten_glUniform3fv": _emscripten_glUniform3fv, "_emscripten_glPolygonOffset": _emscripten_glPolygonOffset, "_emscripten_glUseProgram": _emscripten_glUseProgram, "_emscripten_glBlendColor": _emscripten_glBlendColor, "_glBindBuffer": _glBindBuffer, "_emscripten_glDepthFunc": _emscripten_glDepthFunc, "_glGetShaderInfoLog": _glGetShaderInfoLog, "_alSource3f": _alSource3f, "_emscripten_set_fullscreenchange_callback": _emscripten_set_fullscreenchange_callback, "_emscripten_set_touchmove_callback": _emscripten_set_touchmove_callback, "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing, "_emscripten_set_gamepaddisconnected_callback": _emscripten_set_gamepaddisconnected_callback, "_glDisable": _glDisable, "_glBlendFunc": _glBlendFunc, "_emscripten_glDisableVertexAttribArray": _emscripten_glDisableVertexAttribArray, "_glGetAttribLocation": _glGetAttribLocation, "_glDisableVertexAttribArray": _glDisableVertexAttribArray, "_glCreateShader": _glCreateShader, "_alcGetString": _alcGetString, "_emscripten_glSampleCoverage": _emscripten_glSampleCoverage, "_emscripten_glVertexPointer": _emscripten_glVertexPointer, "_emscripten_set_touchstart_callback": _emscripten_set_touchstart_callback, "emscriptenWebGLComputeImageSize": emscriptenWebGLComputeImageSize, "_emscripten_glGetBooleanv": _emscripten_glGetBooleanv, "_emscripten_glGetShaderSource": _emscripten_glGetShaderSource, "_glUniform4f": _glUniform4f, "_llvm_stacksave": _llvm_stacksave, "_emscripten_glUniform1i": _emscripten_glUniform1i, "_emscripten_glStencilFuncSeparate": _emscripten_glStencilFuncSeparate, "_emscripten_glFrustum": _emscripten_glFrustum, "_emscripten_glGenBuffers": _emscripten_glGenBuffers, "_emscripten_glDeleteObjectARB": _emscripten_glDeleteObjectARB, "_glfwSetWindowSizeCallback": _glfwSetWindowSizeCallback, "_emscripten_glGetShaderPrecisionFormat": _emscripten_glGetShaderPrecisionFormat, "_glfwInit": _glfwInit, "_glGenBuffers": _glGenBuffers, "_glShaderSource": _glShaderSource, "_emscripten_glGetString": _emscripten_glGetString, "_emscripten_glIsFramebuffer": _emscripten_glIsFramebuffer, "_emscripten_glIsEnabled": _emscripten_glIsEnabled, "_emscripten_glScissor": _emscripten_glScissor, "_emscripten_glVertexAttrib4fv": _emscripten_glVertexAttrib4fv, "_emscripten_glFramebufferTexture2D": _emscripten_glFramebufferTexture2D, "_emscripten_glTexParameteriv": _emscripten_glTexParameteriv, "_emscripten_glBindProgramARB": _emscripten_glBindProgramARB, "_emscripten_glStencilOpSeparate": _emscripten_glStencilOpSeparate, "_alSourcePlay": _alSourcePlay, "_emscripten_glFramebufferRenderbuffer": _emscripten_glFramebufferRenderbuffer, "___syscall140": ___syscall140, "_glfwSetErrorCallback": _glfwSetErrorCallback, "_glfwDefaultWindowHints": _glfwDefaultWindowHints, "_glfwDestroyWindow": _glfwDestroyWindow, "___syscall146": ___syscall146, "_emscripten_glGetActiveAttrib": _emscripten_glGetActiveAttrib, "_emscripten_glAttachShader": _emscripten_glAttachShader, "_glVertexAttribPointer": _glVertexAttribPointer, "_emscripten_glUniform2i": _emscripten_glUniform2i, "_emscripten_glUniform2f": _emscripten_glUniform2f, "_alcCreateContext": _alcCreateContext, "_glfwTerminate": _glfwTerminate, "_emscripten_glTexParameterfv": _emscripten_glTexParameterfv, "_emscripten_glUniformMatrix2fv": _emscripten_glUniformMatrix2fv, "_glGetProgramInfoLog": _glGetProgramInfoLog, "_emscripten_glGetUniformiv": _emscripten_glGetUniformiv, "_emscripten_glTexParameterf": _emscripten_glTexParameterf, "_emscripten_glGetAttachedShaders": _emscripten_glGetAttachedShaders, "_emscripten_glGenTextures": _emscripten_glGenTextures, "_emscripten_glTexParameteri": _emscripten_glTexParameteri, "_llvm_stackrestore": _llvm_stackrestore, "_glfwMakeContextCurrent": _glfwMakeContextCurrent, "_emscripten_glClear": _emscripten_glClear, "_glDrawElements": _glDrawElements, "_alGetSourcei": _alGetSourcei, "_glBufferSubData": _glBufferSubData, "_alcMakeContextCurrent": _alcMakeContextCurrent, "_emscripten_glGenVertexArrays": _emscripten_glGenVertexArrays, "_emscripten_glVertexAttrib2fv": _emscripten_glVertexAttrib2fv, "_glViewport": _glViewport, "_alSourceQueueBuffers": _alSourceQueueBuffers, "_emscripten_glGetTexParameteriv": _emscripten_glGetTexParameteriv, "___setErrNo": ___setErrNo, "_eglGetProcAddress": _eglGetProcAddress, "_alcGetCurrentContext": _alcGetCurrentContext, "_emscripten_glBindAttribLocation": _emscripten_glBindAttribLocation, "_glDeleteTextures": _glDeleteTextures, "_glDepthFunc": _glDepthFunc, "_emscripten_glClientActiveTexture": _emscripten_glClientActiveTexture, "_emscripten_glVertexAttrib2f": _emscripten_glVertexAttrib2f, "_emscripten_glFlush": _emscripten_glFlush, "_emscripten_glCheckFramebufferStatus": _emscripten_glCheckFramebufferStatus, "_emscripten_glGenerateMipmap": _emscripten_glGenerateMipmap, "_emscripten_glGetError": _emscripten_glGetError, "_alGenBuffers": _alGenBuffers, "_emscripten_glClearDepthf": _emscripten_glClearDepthf, "_emscripten_glBufferData": _emscripten_glBufferData, "_emscripten_glUniform3i": _emscripten_glUniform3i, "_emscripten_glRotatef": _emscripten_glRotatef, "_emscripten_glDeleteShader": _emscripten_glDeleteShader, "_glEnable": _glEnable, "_emscripten_glReadPixels": _emscripten_glReadPixels, "_emscripten_glMatrixMode": _emscripten_glMatrixMode, "_alDeleteSources": _alDeleteSources, "_emscripten_glClearStencil": _emscripten_glClearStencil, "_emscripten_glGetUniformLocation": _emscripten_glGetUniformLocation, "emscriptenWebGLGet": emscriptenWebGLGet, "_alSourceUnqueueBuffers": _alSourceUnqueueBuffers, "_emscripten_glEnableVertexAttribArray": _emscripten_glEnableVertexAttribArray, "_alGetError": _alGetError, "_emscripten_get_now": _emscripten_get_now, "_emscripten_glNormalPointer": _emscripten_glNormalPointer, "_glAttachShader": _glAttachShader, "_emscripten_glTexCoordPointer": _emscripten_glTexCoordPointer, "_emscripten_glEnable": _emscripten_glEnable, "_glCreateProgram": _glCreateProgram, "_glUniformMatrix4fv": _glUniformMatrix4fv, "_emscripten_glClearDepth": _emscripten_glClearDepth, "___lock": ___lock, "emscriptenWebGLGetTexPixelData": emscriptenWebGLGetTexPixelData, "___syscall6": ___syscall6, "_emscripten_glIsBuffer": _emscripten_glIsBuffer, "_emscripten_glVertexAttrib3f": _emscripten_glVertexAttrib3f, "_time": _time, "_emscripten_glVertexAttrib1f": _emscripten_glVertexAttrib1f, "_emscripten_glGetFramebufferAttachmentParameteriv": _emscripten_glGetFramebufferAttachmentParameteriv, "_emscripten_glBlendEquationSeparate": _emscripten_glBlendEquationSeparate, "_exit": _exit, "_glGetString": _glGetString, "_emscripten_glUniform4i": _emscripten_glUniform4i, "_alSourcef": _alSourcef, "_emscripten_glDrawRangeElements": _emscripten_glDrawRangeElements, "_glCullFace": _glCullFace, "_emscripten_glGetPointerv": _emscripten_glGetPointerv, "_emscripten_set_keypress_callback": _emscripten_set_keypress_callback, "__emscripten_sample_gamepad_data": __emscripten_sample_gamepad_data, "_emscripten_get_gamepad_status": _emscripten_get_gamepad_status, "_emscripten_glUniform4f": _emscripten_glUniform4f, "_glfwSwapInterval": _glfwSwapInterval, "_glfwGetVideoModes": _glfwGetVideoModes, "_emscripten_set_click_callback": _emscripten_set_click_callback, "_emscripten_glShaderBinary": _emscripten_glShaderBinary, "_emscripten_glDrawElements": _emscripten_glDrawElements, "_emscripten_glBlendFunc": _emscripten_glBlendFunc, "_emscripten_get_num_gamepads": _emscripten_get_num_gamepads, "_glCompressedTexImage2D": _glCompressedTexImage2D, "_emscripten_glUniform1iv": _emscripten_glUniform1iv, "_emscripten_glGetVertexAttribPointerv": _emscripten_glGetVertexAttribPointerv, "_glClearDepthf": _glClearDepthf, "_emscripten_glCompressedTexSubImage2D": _emscripten_glCompressedTexSubImage2D, "emscriptenWebGLGetUniform": emscriptenWebGLGetUniform, "_emscripten_glGenRenderbuffers": _emscripten_glGenRenderbuffers, "_emscripten_glDeleteVertexArrays": _emscripten_glDeleteVertexArrays, "_glfwSetWindowShouldClose": _glfwSetWindowShouldClose, "_emscripten_glUniform1fv": _emscripten_glUniform1fv, "_emscripten_glGetActiveUniform": _emscripten_glGetActiveUniform, "_glBindTexture": _glBindTexture, "_emscripten_glUniform3iv": _emscripten_glUniform3iv, "_emscripten_glUniform2iv": _emscripten_glUniform2iv, "_emscripten_glHint": _emscripten_glHint, "_glfwSetCharCallback": _glfwSetCharCallback, "emscriptenWebGLGetVertexAttrib": emscriptenWebGLGetVertexAttrib, "_emscripten_glLoadMatrixf": _emscripten_glLoadMatrixf, "_emscripten_glDeleteProgram": _emscripten_glDeleteProgram, "_emscripten_glDeleteRenderbuffers": _emscripten_glDeleteRenderbuffers, "_glfwSetScrollCallback": _glfwSetScrollCallback, "_emscripten_glDrawElementsInstanced": _emscripten_glDrawElementsInstanced, "_emscripten_glVertexAttrib4f": _emscripten_glVertexAttrib4f, "_alcDestroyContext": _alcDestroyContext, "_glDrawArrays": _glDrawArrays, "_emscripten_glTexSubImage2D": _emscripten_glTexSubImage2D, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_emscripten_glPixelStorei": _emscripten_glPixelStorei, "_glCompileShader": _glCompileShader, "_alListenerf": _alListenerf, "_emscripten_glUniformMatrix3fv": _emscripten_glUniformMatrix3fv, "_emscripten_glColorPointer": _emscripten_glColorPointer, "_emscripten_glGetBufferParameteriv": _emscripten_glGetBufferParameteriv, "_emscripten_glFinish": _emscripten_glFinish, "_emscripten_request_pointerlock": _emscripten_request_pointerlock, "_glGetFloatv": _glGetFloatv, "_emscripten_asm_const_iii": _emscripten_asm_const_iii, "_emscripten_glDepthMask": _emscripten_glDepthMask, "_glfwSetWindowIconifyCallback": _glfwSetWindowIconifyCallback, "_emscripten_glDrawBuffers": _emscripten_glDrawBuffers, "_alSourceStop": _alSourceStop, "_glFrontFace": _glFrontFace, "_emscripten_glGetObjectParameterivARB": _emscripten_glGetObjectParameterivARB, "_emscripten_exit_pointerlock": _emscripten_exit_pointerlock, "_alcCloseDevice": _alcCloseDevice, "_glUniform1i": _glUniform1i, "_glEnableVertexAttribArray": _glEnableVertexAttribArray, "_emscripten_glStencilFunc": _emscripten_glStencilFunc, "_abort": _abort, "_alcGetContextsDevice": _alcGetContextsDevice, "_emscripten_glUniform2fv": _emscripten_glUniform2fv, "_glfwGetCursorPos": _glfwGetCursorPos, "_glDeleteBuffers": _glDeleteBuffers, "_glBufferData": _glBufferData, "_glTexImage2D": _glTexImage2D, "_emscripten_glGetShaderiv": _emscripten_glGetShaderiv, "_glfwSetKeyCallback": _glfwSetKeyCallback, "_emscripten_glGenFramebuffers": _emscripten_glGenFramebuffers, "_emscripten_glUniformMatrix4fv": _emscripten_glUniformMatrix4fv, "_emscripten_glLoadIdentity": _emscripten_glLoadIdentity, "_glDeleteShader": _glDeleteShader, "_emscripten_glUniform1f": _emscripten_glUniform1f, "_glGetProgramiv": _glGetProgramiv, "_emscripten_glBindFramebuffer": _emscripten_glBindFramebuffer, "_emscripten_glIsRenderbuffer": _emscripten_glIsRenderbuffer, "_glfwGetTime": _glfwGetTime, "_emscripten_glRenderbufferStorage": _emscripten_glRenderbufferStorage, "_emscripten_set_gamepadconnected_callback": _emscripten_set_gamepadconnected_callback, "_alListener3f": _alListener3f, "_emscripten_glGetVertexAttribiv": _emscripten_glGetVertexAttribiv, "_emscripten_glBindVertexArray": _emscripten_glBindVertexArray, "_emscripten_glDrawArraysInstanced": _emscripten_glDrawArraysInstanced, "_emscripten_set_touchcancel_callback": _emscripten_set_touchcancel_callback, "_emscripten_glCreateShader": _emscripten_glCreateShader, "_emscripten_glStencilMask": _emscripten_glStencilMask, "_emscripten_glDeleteTextures": _emscripten_glDeleteTextures, "_emscripten_glBindRenderbuffer": _emscripten_glBindRenderbuffer, "_glfwGetPrimaryMonitor": _glfwGetPrimaryMonitor, "_glLinkProgram": _glLinkProgram, "_emscripten_glVertexAttribDivisor": _emscripten_glVertexAttribDivisor, "_emscripten_set_touchend_callback": _emscripten_set_touchend_callback, "_emscripten_glGetUniformfv": _emscripten_glGetUniformfv, "_emscripten_glGetVertexAttribfv": _emscripten_glGetVertexAttribfv, "_emscripten_glGetRenderbufferParameteriv": _emscripten_glGetRenderbufferParameteriv, "_emscripten_glDeleteFramebuffers": _emscripten_glDeleteFramebuffers, "_glGetShaderiv": _glGetShaderiv, "_emscripten_glVertexAttrib3fv": _emscripten_glVertexAttrib3fv, "_glGetUniformLocation": _glGetUniformLocation, "_emscripten_glGetInfoLogARB": _emscripten_glGetInfoLogARB, "_emscripten_glCompileShader": _emscripten_glCompileShader, "_glClear": _glClear, "_glGenTextures": _glGenTextures, "_emscripten_glDisable": _emscripten_glDisable, "_emscripten_glDepthRangef": _emscripten_glDepthRangef, "__exit": __exit, "_emscripten_glLineWidth": _emscripten_glLineWidth, "_emscripten_glUniform3f": _emscripten_glUniform3f, "_emscripten_glGetShaderInfoLog": _emscripten_glGetShaderInfoLog, "_emscripten_glStencilOp": _emscripten_glStencilOp, "_glBindAttribLocation": _glBindAttribLocation, "_glPixelStorei": _glPixelStorei, "_emscripten_glColorMask": _emscripten_glColorMask, "_emscripten_glLinkProgram": _emscripten_glLinkProgram, "_emscripten_glBlendEquation": _emscripten_glBlendEquation, "_emscripten_glIsTexture": _emscripten_glIsTexture, "_alDeleteBuffers": _alDeleteBuffers, "_emscripten_glGetProgramiv": _emscripten_glGetProgramiv, "_emscripten_glVertexAttrib1fv": _emscripten_glVertexAttrib1fv, "_emscripten_glBindTexture": _emscripten_glBindTexture, "_glfwSetMouseButtonCallback": _glfwSetMouseButtonCallback, "_emscripten_get_pointerlock_status": _emscripten_get_pointerlock_status, "_emscripten_glActiveTexture": _emscripten_glActiveTexture, "_emscripten_glDeleteBuffers": _emscripten_glDeleteBuffers, "___syscall54": ___syscall54, "___unlock": ___unlock, "_emscripten_glBufferSubData": _emscripten_glBufferSubData, "_glfwSwapBuffers": _glfwSwapBuffers, "_emscripten_glDepthRange": _emscripten_glDepthRange, "_emscripten_set_main_loop": _emscripten_set_main_loop, "_emscripten_glGetProgramInfoLog": _emscripten_glGetProgramInfoLog, "_glfwWindowHint": _glfwWindowHint, "_alGenSources": _alGenSources, "_glfwSetCursorPosCallback": _glfwSetCursorPosCallback, "_emscripten_glIsShader": _emscripten_glIsShader, "_emscripten_glUniform4fv": _emscripten_glUniform4fv, "_alcOpenDevice": _alcOpenDevice, "_emscripten_glDrawArrays": _emscripten_glDrawArrays, "_emscripten_glCompressedTexImage2D": _emscripten_glCompressedTexImage2D, "_emscripten_glClearColor": _emscripten_glClearColor, "_emscripten_glCreateProgram": _emscripten_glCreateProgram, "_emscripten_glCopyTexSubImage2D": _emscripten_glCopyTexSubImage2D, "_emscripten_glGetAttribLocation": _emscripten_glGetAttribLocation, "_glTexParameteri": _glTexParameteri, "_emscripten_glValidateProgram": _emscripten_glValidateProgram, "_emscripten_glBindBuffer": _emscripten_glBindBuffer, "_emscripten_glGetFloatv": _emscripten_glGetFloatv, "_emscripten_glDetachShader": _emscripten_glDetachShader, "_glClearColor": _glClearColor, "_emscripten_glEnableClientState": _emscripten_glEnableClientState, "_glfwSetCursorEnterCallback": _glfwSetCursorEnterCallback, "_emscripten_glCopyTexImage2D": _emscripten_glCopyTexImage2D, "_emscripten_glTexImage2D": _emscripten_glTexImage2D, "DYNAMICTOP_PTR": DYNAMICTOP_PTR, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "cttz_i8": cttz_i8 };
  6636. // EMSCRIPTEN_START_ASM
  6637. var asm = (function(global, env, buffer) {
  6638. 'almost asm';
  6639. var Int8View = global.Int8Array;
  6640. var Int16View = global.Int16Array;
  6641. var Int32View = global.Int32Array;
  6642. var Uint8View = global.Uint8Array;
  6643. var Uint16View = global.Uint16Array;
  6644. var Uint32View = global.Uint32Array;
  6645. var Float32View = global.Float32Array;
  6646. var Float64View = global.Float64Array;
  6647. var HEAP8 = new Int8View(buffer);
  6648. var HEAP16 = new Int16View(buffer);
  6649. var HEAP32 = new Int32View(buffer);
  6650. var HEAPU8 = new Uint8View(buffer);
  6651. var HEAPU16 = new Uint16View(buffer);
  6652. var HEAPU32 = new Uint32View(buffer);
  6653. var HEAPF32 = new Float32View(buffer);
  6654. var HEAPF64 = new Float64View(buffer);
  6655. var byteLength = global.byteLength;
  6656. var DYNAMICTOP_PTR=env.DYNAMICTOP_PTR|0;
  6657. var tempDoublePtr=env.tempDoublePtr|0;
  6658. var ABORT=env.ABORT|0;
  6659. var STACKTOP=env.STACKTOP|0;
  6660. var STACK_MAX=env.STACK_MAX|0;
  6661. var cttz_i8=env.cttz_i8|0;
  6662. var __THREW__ = 0;
  6663. var threwValue = 0;
  6664. var setjmpId = 0;
  6665. var undef = 0;
  6666. var nan = global.NaN, inf = global.Infinity;
  6667. var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0;
  6668. var tempRet0 = 0;
  6669. var Math_floor=global.Math.floor;
  6670. var Math_abs=global.Math.abs;
  6671. var Math_sqrt=global.Math.sqrt;
  6672. var Math_pow=global.Math.pow;
  6673. var Math_cos=global.Math.cos;
  6674. var Math_sin=global.Math.sin;
  6675. var Math_tan=global.Math.tan;
  6676. var Math_acos=global.Math.acos;
  6677. var Math_asin=global.Math.asin;
  6678. var Math_atan=global.Math.atan;
  6679. var Math_atan2=global.Math.atan2;
  6680. var Math_exp=global.Math.exp;
  6681. var Math_log=global.Math.log;
  6682. var Math_ceil=global.Math.ceil;
  6683. var Math_imul=global.Math.imul;
  6684. var Math_min=global.Math.min;
  6685. var Math_max=global.Math.max;
  6686. var Math_clz32=global.Math.clz32;
  6687. var abort=env.abort;
  6688. var assert=env.assert;
  6689. var enlargeMemory=env.enlargeMemory;
  6690. var getTotalMemory=env.getTotalMemory;
  6691. var abortOnCannotGrowMemory=env.abortOnCannotGrowMemory;
  6692. var abortStackOverflow=env.abortStackOverflow;
  6693. var nullFunc_viiiii=env.nullFunc_viiiii;
  6694. var nullFunc_vd=env.nullFunc_vd;
  6695. var nullFunc_vid=env.nullFunc_vid;
  6696. var nullFunc_vi=env.nullFunc_vi;
  6697. var nullFunc_vii=env.nullFunc_vii;
  6698. var nullFunc_ii=env.nullFunc_ii;
  6699. var nullFunc_viddd=env.nullFunc_viddd;
  6700. var nullFunc_vidd=env.nullFunc_vidd;
  6701. var nullFunc_iiii=env.nullFunc_iiii;
  6702. var nullFunc_viiiiiiii=env.nullFunc_viiiiiiii;
  6703. var nullFunc_viiiiii=env.nullFunc_viiiiii;
  6704. var nullFunc_viii=env.nullFunc_viii;
  6705. var nullFunc_vidddd=env.nullFunc_vidddd;
  6706. var nullFunc_vdi=env.nullFunc_vdi;
  6707. var nullFunc_viiiiiii=env.nullFunc_viiiiiii;
  6708. var nullFunc_viiiiiiiii=env.nullFunc_viiiiiiiii;
  6709. var nullFunc_iii=env.nullFunc_iii;
  6710. var nullFunc_i=env.nullFunc_i;
  6711. var nullFunc_vdddddd=env.nullFunc_vdddddd;
  6712. var nullFunc_vdddd=env.nullFunc_vdddd;
  6713. var nullFunc_vdd=env.nullFunc_vdd;
  6714. var nullFunc_v=env.nullFunc_v;
  6715. var nullFunc_viid=env.nullFunc_viid;
  6716. var nullFunc_viiii=env.nullFunc_viiii;
  6717. var invoke_viiiii=env.invoke_viiiii;
  6718. var invoke_vd=env.invoke_vd;
  6719. var invoke_vid=env.invoke_vid;
  6720. var invoke_vi=env.invoke_vi;
  6721. var invoke_vii=env.invoke_vii;
  6722. var invoke_ii=env.invoke_ii;
  6723. var invoke_viddd=env.invoke_viddd;
  6724. var invoke_vidd=env.invoke_vidd;
  6725. var invoke_iiii=env.invoke_iiii;
  6726. var invoke_viiiiiiii=env.invoke_viiiiiiii;
  6727. var invoke_viiiiii=env.invoke_viiiiii;
  6728. var invoke_viii=env.invoke_viii;
  6729. var invoke_vidddd=env.invoke_vidddd;
  6730. var invoke_vdi=env.invoke_vdi;
  6731. var invoke_viiiiiii=env.invoke_viiiiiii;
  6732. var invoke_viiiiiiiii=env.invoke_viiiiiiiii;
  6733. var invoke_iii=env.invoke_iii;
  6734. var invoke_i=env.invoke_i;
  6735. var invoke_vdddddd=env.invoke_vdddddd;
  6736. var invoke_vdddd=env.invoke_vdddd;
  6737. var invoke_vdd=env.invoke_vdd;
  6738. var invoke_v=env.invoke_v;
  6739. var invoke_viid=env.invoke_viid;
  6740. var invoke_viiii=env.invoke_viiii;
  6741. var _emscripten_glGetTexParameterfv=env._emscripten_glGetTexParameterfv;
  6742. var _glUseProgram=env._glUseProgram;
  6743. var _emscripten_glShaderSource=env._emscripten_glShaderSource;
  6744. var _glfwCreateWindow=env._glfwCreateWindow;
  6745. var _emscripten_glReleaseShaderCompiler=env._emscripten_glReleaseShaderCompiler;
  6746. var _emscripten_glBlendFuncSeparate=env._emscripten_glBlendFuncSeparate;
  6747. var _emscripten_glUniform4iv=env._emscripten_glUniform4iv;
  6748. var _emscripten_glVertexAttribPointer=env._emscripten_glVertexAttribPointer;
  6749. var _emscripten_glGetIntegerv=env._emscripten_glGetIntegerv;
  6750. var _emscripten_glCullFace=env._emscripten_glCullFace;
  6751. var _emscripten_glIsProgram=env._emscripten_glIsProgram;
  6752. var _emscripten_glStencilMaskSeparate=env._emscripten_glStencilMaskSeparate;
  6753. var _emscripten_glViewport=env._emscripten_glViewport;
  6754. var _emscripten_glFrontFace=env._emscripten_glFrontFace;
  6755. var _alBufferData=env._alBufferData;
  6756. var _glDeleteProgram=env._glDeleteProgram;
  6757. var _emscripten_glUniform3fv=env._emscripten_glUniform3fv;
  6758. var _emscripten_glPolygonOffset=env._emscripten_glPolygonOffset;
  6759. var _emscripten_glUseProgram=env._emscripten_glUseProgram;
  6760. var _emscripten_glBlendColor=env._emscripten_glBlendColor;
  6761. var _glBindBuffer=env._glBindBuffer;
  6762. var _emscripten_glDepthFunc=env._emscripten_glDepthFunc;
  6763. var _glGetShaderInfoLog=env._glGetShaderInfoLog;
  6764. var _alSource3f=env._alSource3f;
  6765. var _emscripten_set_fullscreenchange_callback=env._emscripten_set_fullscreenchange_callback;
  6766. var _emscripten_set_touchmove_callback=env._emscripten_set_touchmove_callback;
  6767. var _emscripten_set_main_loop_timing=env._emscripten_set_main_loop_timing;
  6768. var _emscripten_set_gamepaddisconnected_callback=env._emscripten_set_gamepaddisconnected_callback;
  6769. var _glDisable=env._glDisable;
  6770. var _glBlendFunc=env._glBlendFunc;
  6771. var _emscripten_glDisableVertexAttribArray=env._emscripten_glDisableVertexAttribArray;
  6772. var _glGetAttribLocation=env._glGetAttribLocation;
  6773. var _glDisableVertexAttribArray=env._glDisableVertexAttribArray;
  6774. var _glCreateShader=env._glCreateShader;
  6775. var _alcGetString=env._alcGetString;
  6776. var _emscripten_glSampleCoverage=env._emscripten_glSampleCoverage;
  6777. var _emscripten_glVertexPointer=env._emscripten_glVertexPointer;
  6778. var _emscripten_set_touchstart_callback=env._emscripten_set_touchstart_callback;
  6779. var emscriptenWebGLComputeImageSize=env.emscriptenWebGLComputeImageSize;
  6780. var _emscripten_glGetBooleanv=env._emscripten_glGetBooleanv;
  6781. var _emscripten_glGetShaderSource=env._emscripten_glGetShaderSource;
  6782. var _glUniform4f=env._glUniform4f;
  6783. var _llvm_stacksave=env._llvm_stacksave;
  6784. var _emscripten_glUniform1i=env._emscripten_glUniform1i;
  6785. var _emscripten_glStencilFuncSeparate=env._emscripten_glStencilFuncSeparate;
  6786. var _emscripten_glFrustum=env._emscripten_glFrustum;
  6787. var _emscripten_glGenBuffers=env._emscripten_glGenBuffers;
  6788. var _emscripten_glDeleteObjectARB=env._emscripten_glDeleteObjectARB;
  6789. var _glfwSetWindowSizeCallback=env._glfwSetWindowSizeCallback;
  6790. var _emscripten_glGetShaderPrecisionFormat=env._emscripten_glGetShaderPrecisionFormat;
  6791. var _glfwInit=env._glfwInit;
  6792. var _glGenBuffers=env._glGenBuffers;
  6793. var _glShaderSource=env._glShaderSource;
  6794. var _emscripten_glGetString=env._emscripten_glGetString;
  6795. var _emscripten_glIsFramebuffer=env._emscripten_glIsFramebuffer;
  6796. var _emscripten_glIsEnabled=env._emscripten_glIsEnabled;
  6797. var _emscripten_glScissor=env._emscripten_glScissor;
  6798. var _emscripten_glVertexAttrib4fv=env._emscripten_glVertexAttrib4fv;
  6799. var _emscripten_glFramebufferTexture2D=env._emscripten_glFramebufferTexture2D;
  6800. var _emscripten_glTexParameteriv=env._emscripten_glTexParameteriv;
  6801. var _emscripten_glBindProgramARB=env._emscripten_glBindProgramARB;
  6802. var _emscripten_glStencilOpSeparate=env._emscripten_glStencilOpSeparate;
  6803. var _alSourcePlay=env._alSourcePlay;
  6804. var _emscripten_glFramebufferRenderbuffer=env._emscripten_glFramebufferRenderbuffer;
  6805. var ___syscall140=env.___syscall140;
  6806. var _glfwSetErrorCallback=env._glfwSetErrorCallback;
  6807. var _glfwDefaultWindowHints=env._glfwDefaultWindowHints;
  6808. var _glfwDestroyWindow=env._glfwDestroyWindow;
  6809. var ___syscall146=env.___syscall146;
  6810. var _emscripten_glGetActiveAttrib=env._emscripten_glGetActiveAttrib;
  6811. var _emscripten_glAttachShader=env._emscripten_glAttachShader;
  6812. var _glVertexAttribPointer=env._glVertexAttribPointer;
  6813. var _emscripten_glUniform2i=env._emscripten_glUniform2i;
  6814. var _emscripten_glUniform2f=env._emscripten_glUniform2f;
  6815. var _alcCreateContext=env._alcCreateContext;
  6816. var _glfwTerminate=env._glfwTerminate;
  6817. var _emscripten_glTexParameterfv=env._emscripten_glTexParameterfv;
  6818. var _emscripten_glUniformMatrix2fv=env._emscripten_glUniformMatrix2fv;
  6819. var _glGetProgramInfoLog=env._glGetProgramInfoLog;
  6820. var _emscripten_glGetUniformiv=env._emscripten_glGetUniformiv;
  6821. var _emscripten_glTexParameterf=env._emscripten_glTexParameterf;
  6822. var _emscripten_glGetAttachedShaders=env._emscripten_glGetAttachedShaders;
  6823. var _emscripten_glGenTextures=env._emscripten_glGenTextures;
  6824. var _emscripten_glTexParameteri=env._emscripten_glTexParameteri;
  6825. var _llvm_stackrestore=env._llvm_stackrestore;
  6826. var _glfwMakeContextCurrent=env._glfwMakeContextCurrent;
  6827. var _emscripten_glClear=env._emscripten_glClear;
  6828. var _glDrawElements=env._glDrawElements;
  6829. var _alGetSourcei=env._alGetSourcei;
  6830. var _glBufferSubData=env._glBufferSubData;
  6831. var _alcMakeContextCurrent=env._alcMakeContextCurrent;
  6832. var _emscripten_glGenVertexArrays=env._emscripten_glGenVertexArrays;
  6833. var _emscripten_glVertexAttrib2fv=env._emscripten_glVertexAttrib2fv;
  6834. var _glViewport=env._glViewport;
  6835. var _alSourceQueueBuffers=env._alSourceQueueBuffers;
  6836. var _emscripten_glGetTexParameteriv=env._emscripten_glGetTexParameteriv;
  6837. var ___setErrNo=env.___setErrNo;
  6838. var _eglGetProcAddress=env._eglGetProcAddress;
  6839. var _alcGetCurrentContext=env._alcGetCurrentContext;
  6840. var _emscripten_glBindAttribLocation=env._emscripten_glBindAttribLocation;
  6841. var _glDeleteTextures=env._glDeleteTextures;
  6842. var _glDepthFunc=env._glDepthFunc;
  6843. var _emscripten_glClientActiveTexture=env._emscripten_glClientActiveTexture;
  6844. var _emscripten_glVertexAttrib2f=env._emscripten_glVertexAttrib2f;
  6845. var _emscripten_glFlush=env._emscripten_glFlush;
  6846. var _emscripten_glCheckFramebufferStatus=env._emscripten_glCheckFramebufferStatus;
  6847. var _emscripten_glGenerateMipmap=env._emscripten_glGenerateMipmap;
  6848. var _emscripten_glGetError=env._emscripten_glGetError;
  6849. var _alGenBuffers=env._alGenBuffers;
  6850. var _emscripten_glClearDepthf=env._emscripten_glClearDepthf;
  6851. var _emscripten_glBufferData=env._emscripten_glBufferData;
  6852. var _emscripten_glUniform3i=env._emscripten_glUniform3i;
  6853. var _emscripten_glRotatef=env._emscripten_glRotatef;
  6854. var _emscripten_glDeleteShader=env._emscripten_glDeleteShader;
  6855. var _glEnable=env._glEnable;
  6856. var _emscripten_glReadPixels=env._emscripten_glReadPixels;
  6857. var _emscripten_glMatrixMode=env._emscripten_glMatrixMode;
  6858. var _alDeleteSources=env._alDeleteSources;
  6859. var _emscripten_glClearStencil=env._emscripten_glClearStencil;
  6860. var _emscripten_glGetUniformLocation=env._emscripten_glGetUniformLocation;
  6861. var emscriptenWebGLGet=env.emscriptenWebGLGet;
  6862. var _alSourceUnqueueBuffers=env._alSourceUnqueueBuffers;
  6863. var _emscripten_glEnableVertexAttribArray=env._emscripten_glEnableVertexAttribArray;
  6864. var _alGetError=env._alGetError;
  6865. var _emscripten_get_now=env._emscripten_get_now;
  6866. var _emscripten_glNormalPointer=env._emscripten_glNormalPointer;
  6867. var _glAttachShader=env._glAttachShader;
  6868. var _emscripten_glTexCoordPointer=env._emscripten_glTexCoordPointer;
  6869. var _emscripten_glEnable=env._emscripten_glEnable;
  6870. var _glCreateProgram=env._glCreateProgram;
  6871. var _glUniformMatrix4fv=env._glUniformMatrix4fv;
  6872. var _emscripten_glClearDepth=env._emscripten_glClearDepth;
  6873. var ___lock=env.___lock;
  6874. var emscriptenWebGLGetTexPixelData=env.emscriptenWebGLGetTexPixelData;
  6875. var ___syscall6=env.___syscall6;
  6876. var _emscripten_glIsBuffer=env._emscripten_glIsBuffer;
  6877. var _emscripten_glVertexAttrib3f=env._emscripten_glVertexAttrib3f;
  6878. var _time=env._time;
  6879. var _emscripten_glVertexAttrib1f=env._emscripten_glVertexAttrib1f;
  6880. var _emscripten_glGetFramebufferAttachmentParameteriv=env._emscripten_glGetFramebufferAttachmentParameteriv;
  6881. var _emscripten_glBlendEquationSeparate=env._emscripten_glBlendEquationSeparate;
  6882. var _exit=env._exit;
  6883. var _glGetString=env._glGetString;
  6884. var _emscripten_glUniform4i=env._emscripten_glUniform4i;
  6885. var _alSourcef=env._alSourcef;
  6886. var _emscripten_glDrawRangeElements=env._emscripten_glDrawRangeElements;
  6887. var _glCullFace=env._glCullFace;
  6888. var _emscripten_glGetPointerv=env._emscripten_glGetPointerv;
  6889. var _emscripten_set_keypress_callback=env._emscripten_set_keypress_callback;
  6890. var __emscripten_sample_gamepad_data=env.__emscripten_sample_gamepad_data;
  6891. var _emscripten_get_gamepad_status=env._emscripten_get_gamepad_status;
  6892. var _emscripten_glUniform4f=env._emscripten_glUniform4f;
  6893. var _glfwSwapInterval=env._glfwSwapInterval;
  6894. var _glfwGetVideoModes=env._glfwGetVideoModes;
  6895. var _emscripten_set_click_callback=env._emscripten_set_click_callback;
  6896. var _emscripten_glShaderBinary=env._emscripten_glShaderBinary;
  6897. var _emscripten_glDrawElements=env._emscripten_glDrawElements;
  6898. var _emscripten_glBlendFunc=env._emscripten_glBlendFunc;
  6899. var _emscripten_get_num_gamepads=env._emscripten_get_num_gamepads;
  6900. var _glCompressedTexImage2D=env._glCompressedTexImage2D;
  6901. var _emscripten_glUniform1iv=env._emscripten_glUniform1iv;
  6902. var _emscripten_glGetVertexAttribPointerv=env._emscripten_glGetVertexAttribPointerv;
  6903. var _glClearDepthf=env._glClearDepthf;
  6904. var _emscripten_glCompressedTexSubImage2D=env._emscripten_glCompressedTexSubImage2D;
  6905. var emscriptenWebGLGetUniform=env.emscriptenWebGLGetUniform;
  6906. var _emscripten_glGenRenderbuffers=env._emscripten_glGenRenderbuffers;
  6907. var _emscripten_glDeleteVertexArrays=env._emscripten_glDeleteVertexArrays;
  6908. var _glfwSetWindowShouldClose=env._glfwSetWindowShouldClose;
  6909. var _emscripten_glUniform1fv=env._emscripten_glUniform1fv;
  6910. var _emscripten_glGetActiveUniform=env._emscripten_glGetActiveUniform;
  6911. var _glBindTexture=env._glBindTexture;
  6912. var _emscripten_glUniform3iv=env._emscripten_glUniform3iv;
  6913. var _emscripten_glUniform2iv=env._emscripten_glUniform2iv;
  6914. var _emscripten_glHint=env._emscripten_glHint;
  6915. var _glfwSetCharCallback=env._glfwSetCharCallback;
  6916. var emscriptenWebGLGetVertexAttrib=env.emscriptenWebGLGetVertexAttrib;
  6917. var _emscripten_glLoadMatrixf=env._emscripten_glLoadMatrixf;
  6918. var _emscripten_glDeleteProgram=env._emscripten_glDeleteProgram;
  6919. var _emscripten_glDeleteRenderbuffers=env._emscripten_glDeleteRenderbuffers;
  6920. var _glfwSetScrollCallback=env._glfwSetScrollCallback;
  6921. var _emscripten_glDrawElementsInstanced=env._emscripten_glDrawElementsInstanced;
  6922. var _emscripten_glVertexAttrib4f=env._emscripten_glVertexAttrib4f;
  6923. var _alcDestroyContext=env._alcDestroyContext;
  6924. var _glDrawArrays=env._glDrawArrays;
  6925. var _emscripten_glTexSubImage2D=env._emscripten_glTexSubImage2D;
  6926. var _emscripten_memcpy_big=env._emscripten_memcpy_big;
  6927. var _emscripten_glPixelStorei=env._emscripten_glPixelStorei;
  6928. var _glCompileShader=env._glCompileShader;
  6929. var _alListenerf=env._alListenerf;
  6930. var _emscripten_glUniformMatrix3fv=env._emscripten_glUniformMatrix3fv;
  6931. var _emscripten_glColorPointer=env._emscripten_glColorPointer;
  6932. var _emscripten_glGetBufferParameteriv=env._emscripten_glGetBufferParameteriv;
  6933. var _emscripten_glFinish=env._emscripten_glFinish;
  6934. var _emscripten_request_pointerlock=env._emscripten_request_pointerlock;
  6935. var _glGetFloatv=env._glGetFloatv;
  6936. var _emscripten_asm_const_iii=env._emscripten_asm_const_iii;
  6937. var _emscripten_glDepthMask=env._emscripten_glDepthMask;
  6938. var _glfwSetWindowIconifyCallback=env._glfwSetWindowIconifyCallback;
  6939. var _emscripten_glDrawBuffers=env._emscripten_glDrawBuffers;
  6940. var _alSourceStop=env._alSourceStop;
  6941. var _glFrontFace=env._glFrontFace;
  6942. var _emscripten_glGetObjectParameterivARB=env._emscripten_glGetObjectParameterivARB;
  6943. var _emscripten_exit_pointerlock=env._emscripten_exit_pointerlock;
  6944. var _alcCloseDevice=env._alcCloseDevice;
  6945. var _glUniform1i=env._glUniform1i;
  6946. var _glEnableVertexAttribArray=env._glEnableVertexAttribArray;
  6947. var _emscripten_glStencilFunc=env._emscripten_glStencilFunc;
  6948. var _abort=env._abort;
  6949. var _alcGetContextsDevice=env._alcGetContextsDevice;
  6950. var _emscripten_glUniform2fv=env._emscripten_glUniform2fv;
  6951. var _glfwGetCursorPos=env._glfwGetCursorPos;
  6952. var _glDeleteBuffers=env._glDeleteBuffers;
  6953. var _glBufferData=env._glBufferData;
  6954. var _glTexImage2D=env._glTexImage2D;
  6955. var _emscripten_glGetShaderiv=env._emscripten_glGetShaderiv;
  6956. var _glfwSetKeyCallback=env._glfwSetKeyCallback;
  6957. var _emscripten_glGenFramebuffers=env._emscripten_glGenFramebuffers;
  6958. var _emscripten_glUniformMatrix4fv=env._emscripten_glUniformMatrix4fv;
  6959. var _emscripten_glLoadIdentity=env._emscripten_glLoadIdentity;
  6960. var _glDeleteShader=env._glDeleteShader;
  6961. var _emscripten_glUniform1f=env._emscripten_glUniform1f;
  6962. var _glGetProgramiv=env._glGetProgramiv;
  6963. var _emscripten_glBindFramebuffer=env._emscripten_glBindFramebuffer;
  6964. var _emscripten_glIsRenderbuffer=env._emscripten_glIsRenderbuffer;
  6965. var _glfwGetTime=env._glfwGetTime;
  6966. var _emscripten_glRenderbufferStorage=env._emscripten_glRenderbufferStorage;
  6967. var _emscripten_set_gamepadconnected_callback=env._emscripten_set_gamepadconnected_callback;
  6968. var _alListener3f=env._alListener3f;
  6969. var _emscripten_glGetVertexAttribiv=env._emscripten_glGetVertexAttribiv;
  6970. var _emscripten_glBindVertexArray=env._emscripten_glBindVertexArray;
  6971. var _emscripten_glDrawArraysInstanced=env._emscripten_glDrawArraysInstanced;
  6972. var _emscripten_set_touchcancel_callback=env._emscripten_set_touchcancel_callback;
  6973. var _emscripten_glCreateShader=env._emscripten_glCreateShader;
  6974. var _emscripten_glStencilMask=env._emscripten_glStencilMask;
  6975. var _emscripten_glDeleteTextures=env._emscripten_glDeleteTextures;
  6976. var _emscripten_glBindRenderbuffer=env._emscripten_glBindRenderbuffer;
  6977. var _glfwGetPrimaryMonitor=env._glfwGetPrimaryMonitor;
  6978. var _glLinkProgram=env._glLinkProgram;
  6979. var _emscripten_glVertexAttribDivisor=env._emscripten_glVertexAttribDivisor;
  6980. var _emscripten_set_touchend_callback=env._emscripten_set_touchend_callback;
  6981. var _emscripten_glGetUniformfv=env._emscripten_glGetUniformfv;
  6982. var _emscripten_glGetVertexAttribfv=env._emscripten_glGetVertexAttribfv;
  6983. var _emscripten_glGetRenderbufferParameteriv=env._emscripten_glGetRenderbufferParameteriv;
  6984. var _emscripten_glDeleteFramebuffers=env._emscripten_glDeleteFramebuffers;
  6985. var _glGetShaderiv=env._glGetShaderiv;
  6986. var _emscripten_glVertexAttrib3fv=env._emscripten_glVertexAttrib3fv;
  6987. var _glGetUniformLocation=env._glGetUniformLocation;
  6988. var _emscripten_glGetInfoLogARB=env._emscripten_glGetInfoLogARB;
  6989. var _emscripten_glCompileShader=env._emscripten_glCompileShader;
  6990. var _glClear=env._glClear;
  6991. var _glGenTextures=env._glGenTextures;
  6992. var _emscripten_glDisable=env._emscripten_glDisable;
  6993. var _emscripten_glDepthRangef=env._emscripten_glDepthRangef;
  6994. var __exit=env.__exit;
  6995. var _emscripten_glLineWidth=env._emscripten_glLineWidth;
  6996. var _emscripten_glUniform3f=env._emscripten_glUniform3f;
  6997. var _emscripten_glGetShaderInfoLog=env._emscripten_glGetShaderInfoLog;
  6998. var _emscripten_glStencilOp=env._emscripten_glStencilOp;
  6999. var _glBindAttribLocation=env._glBindAttribLocation;
  7000. var _glPixelStorei=env._glPixelStorei;
  7001. var _emscripten_glColorMask=env._emscripten_glColorMask;
  7002. var _emscripten_glLinkProgram=env._emscripten_glLinkProgram;
  7003. var _emscripten_glBlendEquation=env._emscripten_glBlendEquation;
  7004. var _emscripten_glIsTexture=env._emscripten_glIsTexture;
  7005. var _alDeleteBuffers=env._alDeleteBuffers;
  7006. var _emscripten_glGetProgramiv=env._emscripten_glGetProgramiv;
  7007. var _emscripten_glVertexAttrib1fv=env._emscripten_glVertexAttrib1fv;
  7008. var _emscripten_glBindTexture=env._emscripten_glBindTexture;
  7009. var _glfwSetMouseButtonCallback=env._glfwSetMouseButtonCallback;
  7010. var _emscripten_get_pointerlock_status=env._emscripten_get_pointerlock_status;
  7011. var _emscripten_glActiveTexture=env._emscripten_glActiveTexture;
  7012. var _emscripten_glDeleteBuffers=env._emscripten_glDeleteBuffers;
  7013. var ___syscall54=env.___syscall54;
  7014. var ___unlock=env.___unlock;
  7015. var _emscripten_glBufferSubData=env._emscripten_glBufferSubData;
  7016. var _glfwSwapBuffers=env._glfwSwapBuffers;
  7017. var _emscripten_glDepthRange=env._emscripten_glDepthRange;
  7018. var _emscripten_set_main_loop=env._emscripten_set_main_loop;
  7019. var _emscripten_glGetProgramInfoLog=env._emscripten_glGetProgramInfoLog;
  7020. var _glfwWindowHint=env._glfwWindowHint;
  7021. var _alGenSources=env._alGenSources;
  7022. var _glfwSetCursorPosCallback=env._glfwSetCursorPosCallback;
  7023. var _emscripten_glIsShader=env._emscripten_glIsShader;
  7024. var _emscripten_glUniform4fv=env._emscripten_glUniform4fv;
  7025. var _alcOpenDevice=env._alcOpenDevice;
  7026. var _emscripten_glDrawArrays=env._emscripten_glDrawArrays;
  7027. var _emscripten_glCompressedTexImage2D=env._emscripten_glCompressedTexImage2D;
  7028. var _emscripten_glClearColor=env._emscripten_glClearColor;
  7029. var _emscripten_glCreateProgram=env._emscripten_glCreateProgram;
  7030. var _emscripten_glCopyTexSubImage2D=env._emscripten_glCopyTexSubImage2D;
  7031. var _emscripten_glGetAttribLocation=env._emscripten_glGetAttribLocation;
  7032. var _glTexParameteri=env._glTexParameteri;
  7033. var _emscripten_glValidateProgram=env._emscripten_glValidateProgram;
  7034. var _emscripten_glBindBuffer=env._emscripten_glBindBuffer;
  7035. var _emscripten_glGetFloatv=env._emscripten_glGetFloatv;
  7036. var _emscripten_glDetachShader=env._emscripten_glDetachShader;
  7037. var _glClearColor=env._glClearColor;
  7038. var _emscripten_glEnableClientState=env._emscripten_glEnableClientState;
  7039. var _glfwSetCursorEnterCallback=env._glfwSetCursorEnterCallback;
  7040. var _emscripten_glCopyTexImage2D=env._emscripten_glCopyTexImage2D;
  7041. var _emscripten_glTexImage2D=env._emscripten_glTexImage2D;
  7042. var tempFloat = 0.0;
  7043. function _emscripten_replace_memory(newBuffer) {
  7044. if ((byteLength(newBuffer) & 0xffffff || byteLength(newBuffer) <= 0xffffff) || byteLength(newBuffer) > 0x80000000) return false;
  7045. HEAP8 = new Int8View(newBuffer);
  7046. HEAP16 = new Int16View(newBuffer);
  7047. HEAP32 = new Int32View(newBuffer);
  7048. HEAPU8 = new Uint8View(newBuffer);
  7049. HEAPU16 = new Uint16View(newBuffer);
  7050. HEAPU32 = new Uint32View(newBuffer);
  7051. HEAPF32 = new Float32View(newBuffer);
  7052. HEAPF64 = new Float64View(newBuffer);
  7053. buffer = newBuffer;
  7054. return true;
  7055. }
  7056. // EMSCRIPTEN_START_FUNCS
  7057. function stackAlloc(size) {
  7058. size = size|0;
  7059. var ret = 0;
  7060. ret = STACKTOP;
  7061. STACKTOP = (STACKTOP + size)|0;
  7062. STACKTOP = (STACKTOP + 15)&-16;
  7063. if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(size|0);
  7064. return ret|0;
  7065. }
  7066. function stackSave() {
  7067. return STACKTOP|0;
  7068. }
  7069. function stackRestore(top) {
  7070. top = top|0;
  7071. STACKTOP = top;
  7072. }
  7073. function establishStackSpace(stackBase, stackMax) {
  7074. stackBase = stackBase|0;
  7075. stackMax = stackMax|0;
  7076. STACKTOP = stackBase;
  7077. STACK_MAX = stackMax;
  7078. }
  7079. function setThrew(threw, value) {
  7080. threw = threw|0;
  7081. value = value|0;
  7082. if ((__THREW__|0) == 0) {
  7083. __THREW__ = threw;
  7084. threwValue = value;
  7085. }
  7086. }
  7087. function setTempRet0(value) {
  7088. value = value|0;
  7089. tempRet0 = value;
  7090. }
  7091. function getTempRet0() {
  7092. return tempRet0|0;
  7093. }
  7094. function _main() {
  7095. var $$05 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $2 = 0, $3 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0.0, $9 = 0, $exitcond = 0, $stream$byval_copy1 = 0, label = 0, sp = 0;
  7096. sp = STACKTOP;
  7097. STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
  7098. $stream$byval_copy1 = sp + 28|0;
  7099. $0 = sp;
  7100. _InitWindow(800,450,3356);
  7101. _InitAudioDevice();
  7102. _InitAudioStream($0,22050,16,1);
  7103. ;HEAP32[14352>>2]=HEAP32[$0>>2]|0;HEAP32[14352+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[14352+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[14352+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[14352+16>>2]=HEAP32[$0+16>>2]|0;HEAP32[14352+20>>2]=HEAP32[$0+20>>2]|0;HEAP32[14352+24>>2]=HEAP32[$0+24>>2]|0;
  7104. $1 = (_malloc(44100)|0);
  7105. HEAP32[3595] = $1;
  7106. $$05 = 0;
  7107. while(1) {
  7108. $3 = (+($$05|0));
  7109. $4 = $3 * 6.2831854820251465;
  7110. $5 = $4 * 0.5;
  7111. $6 = $5 * 0.01745329238474369;
  7112. $7 = (+Math_sin((+$6)));
  7113. $8 = $7 * 32000.0;
  7114. $9 = (~~(($8)));
  7115. $10 = (($1) + ($$05<<1)|0);
  7116. HEAP16[$10>>1] = $9;
  7117. $11 = (($$05) + 1)|0;
  7118. $exitcond = ($11|0)==(22050);
  7119. if ($exitcond) {
  7120. break;
  7121. } else {
  7122. $$05 = $11;
  7123. }
  7124. }
  7125. ;HEAP32[$stream$byval_copy1>>2]=HEAP32[14352>>2]|0;HEAP32[$stream$byval_copy1+4>>2]=HEAP32[14352+4>>2]|0;HEAP32[$stream$byval_copy1+8>>2]=HEAP32[14352+8>>2]|0;HEAP32[$stream$byval_copy1+12>>2]=HEAP32[14352+12>>2]|0;HEAP32[$stream$byval_copy1+16>>2]=HEAP32[14352+16>>2]|0;HEAP32[$stream$byval_copy1+20>>2]=HEAP32[14352+20>>2]|0;HEAP32[$stream$byval_copy1+24>>2]=HEAP32[14352+24>>2]|0;
  7126. _PlayAudioStream($stream$byval_copy1);
  7127. _emscripten_set_main_loop((1|0),0,1);
  7128. $2 = HEAP32[3595]|0;
  7129. _free($2);
  7130. ;HEAP32[$stream$byval_copy1>>2]=HEAP32[14352>>2]|0;HEAP32[$stream$byval_copy1+4>>2]=HEAP32[14352+4>>2]|0;HEAP32[$stream$byval_copy1+8>>2]=HEAP32[14352+8>>2]|0;HEAP32[$stream$byval_copy1+12>>2]=HEAP32[14352+12>>2]|0;HEAP32[$stream$byval_copy1+16>>2]=HEAP32[14352+16>>2]|0;HEAP32[$stream$byval_copy1+20>>2]=HEAP32[14352+20>>2]|0;HEAP32[$stream$byval_copy1+24>>2]=HEAP32[14352+24>>2]|0;
  7131. _CloseAudioStream($stream$byval_copy1);
  7132. _CloseAudioDevice();
  7133. _CloseWindow();
  7134. STACKTOP = sp;return 0;
  7135. }
  7136. function _UpdateDrawFrame() {
  7137. var $$ = 0, $$010 = 0, $$byval_copy3 = 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;
  7138. var $24 = 0, $25 = 0, $26 = 0.0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0.0, $32 = 0, $33 = 0, $34 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $addconv = 0, $position$byval_copy = 0;
  7139. var label = 0, sp = 0;
  7140. sp = STACKTOP;
  7141. STACKTOP = STACKTOP + 48|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(48|0);
  7142. $$byval_copy3 = sp + 8|0;
  7143. $position$byval_copy = sp;
  7144. $0 = sp + 44|0;
  7145. $1 = sp + 40|0;
  7146. $2 = sp + 36|0;
  7147. ;HEAP32[$$byval_copy3>>2]=HEAP32[14352>>2]|0;HEAP32[$$byval_copy3+4>>2]=HEAP32[14352+4>>2]|0;HEAP32[$$byval_copy3+8>>2]=HEAP32[14352+8>>2]|0;HEAP32[$$byval_copy3+12>>2]=HEAP32[14352+12>>2]|0;HEAP32[$$byval_copy3+16>>2]=HEAP32[14352+16>>2]|0;HEAP32[$$byval_copy3+20>>2]=HEAP32[14352+20>>2]|0;HEAP32[$$byval_copy3+24>>2]=HEAP32[14352+24>>2]|0;
  7148. $3 = (_IsAudioBufferProcessed($$byval_copy3)|0);
  7149. $4 = ($3|0)==(0);
  7150. if (!($4)) {
  7151. $5 = HEAP32[3]|0;
  7152. $6 = ($5|0)<(4096);
  7153. $$ = $6 ? $5 : 4096;
  7154. $7 = HEAP32[3595]|0;
  7155. $8 = HEAP32[2]|0;
  7156. $9 = (($8) - ($5))|0;
  7157. $10 = (($7) + ($9<<1)|0);
  7158. ;HEAP32[$$byval_copy3>>2]=HEAP32[14352>>2]|0;HEAP32[$$byval_copy3+4>>2]=HEAP32[14352+4>>2]|0;HEAP32[$$byval_copy3+8>>2]=HEAP32[14352+8>>2]|0;HEAP32[$$byval_copy3+12>>2]=HEAP32[14352+12>>2]|0;HEAP32[$$byval_copy3+16>>2]=HEAP32[14352+16>>2]|0;HEAP32[$$byval_copy3+20>>2]=HEAP32[14352+20>>2]|0;HEAP32[$$byval_copy3+24>>2]=HEAP32[14352+24>>2]|0;
  7159. _UpdateAudioStream($$byval_copy3,$10,$$);
  7160. $11 = HEAP32[3]|0;
  7161. $12 = (($11) - ($$))|0;
  7162. HEAP32[3] = $12;
  7163. $13 = ($12|0)<(1);
  7164. if ($13) {
  7165. $14 = HEAP32[2]|0;
  7166. HEAP32[3] = $14;
  7167. }
  7168. }
  7169. _BeginDrawing();
  7170. HEAP8[$0>>0] = -11;
  7171. $15 = ((($0)) + 1|0);
  7172. HEAP8[$15>>0] = -11;
  7173. $16 = ((($0)) + 2|0);
  7174. HEAP8[$16>>0] = -11;
  7175. $17 = ((($0)) + 3|0);
  7176. HEAP8[$17>>0] = -1;
  7177. ;HEAP8[$$byval_copy3>>0]=HEAP8[$0>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$0+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$0+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$0+3>>0]|0;
  7178. _ClearBackground($$byval_copy3);
  7179. HEAP8[$1>>0] = -56;
  7180. $18 = ((($1)) + 1|0);
  7181. HEAP8[$18>>0] = -56;
  7182. $19 = ((($1)) + 2|0);
  7183. HEAP8[$19>>0] = -56;
  7184. $20 = ((($1)) + 3|0);
  7185. HEAP8[$20>>0] = -1;
  7186. ;HEAP8[$$byval_copy3>>0]=HEAP8[$1>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$1+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$1+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$1+3>>0]|0;
  7187. _DrawText(3401,240,140,20,$$byval_copy3);
  7188. $21 = (_GetScreenWidth()|0);
  7189. $22 = ($21|0)>(0);
  7190. if (!($22)) {
  7191. _EndDrawing();
  7192. STACKTOP = sp;return;
  7193. }
  7194. $23 = ((($2)) + 1|0);
  7195. $24 = ((($2)) + 2|0);
  7196. $25 = ((($2)) + 3|0);
  7197. $$010 = 0;
  7198. while(1) {
  7199. $26 = (+($$010|0));
  7200. HEAPF32[3586] = $26;
  7201. $27 = HEAP32[3595]|0;
  7202. $28 = (($27) + ($$010<<1)|0);
  7203. $29 = HEAP16[$28>>1]|0;
  7204. $30 = (($29<<16>>16) / 640)&-1;
  7205. $addconv = (($30) + 250)<<16>>16;
  7206. $31 = (+($addconv<<16>>16));
  7207. HEAPF32[(14348)>>2] = $31;
  7208. HEAP8[$2>>0] = -26;
  7209. HEAP8[$23>>0] = 41;
  7210. HEAP8[$24>>0] = 55;
  7211. HEAP8[$25>>0] = -1;
  7212. ;HEAP32[$position$byval_copy>>2]=HEAP32[14344>>2]|0;HEAP32[$position$byval_copy+4>>2]=HEAP32[14344+4>>2]|0;
  7213. ;HEAP8[$$byval_copy3>>0]=HEAP8[$2>>0]|0;HEAP8[$$byval_copy3+1>>0]=HEAP8[$2+1>>0]|0;HEAP8[$$byval_copy3+2>>0]=HEAP8[$2+2>>0]|0;HEAP8[$$byval_copy3+3>>0]=HEAP8[$2+3>>0]|0;
  7214. _DrawPixelV($position$byval_copy,$$byval_copy3);
  7215. $32 = (($$010) + 1)|0;
  7216. $33 = (_GetScreenWidth()|0);
  7217. $34 = ($32|0)<($33|0);
  7218. if ($34) {
  7219. $$010 = $32;
  7220. } else {
  7221. break;
  7222. }
  7223. }
  7224. _EndDrawing();
  7225. STACKTOP = sp;return;
  7226. }
  7227. function _Vector2Distance($0,$1) {
  7228. $0 = $0|0;
  7229. $1 = $1|0;
  7230. var $10 = 0.0, $11 = 0.0, $12 = 0.0, $13 = 0.0, $2 = 0.0, $3 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0, $7 = 0.0, $8 = 0, $9 = 0.0, label = 0, sp = 0;
  7231. sp = STACKTOP;
  7232. $2 = +HEAPF32[$0>>2];
  7233. $3 = +HEAPF32[$1>>2];
  7234. $4 = $2 - $3;
  7235. $5 = $4 * $4;
  7236. $6 = ((($0)) + 4|0);
  7237. $7 = +HEAPF32[$6>>2];
  7238. $8 = ((($1)) + 4|0);
  7239. $9 = +HEAPF32[$8>>2];
  7240. $10 = $7 - $9;
  7241. $11 = $10 * $10;
  7242. $12 = $5 + $11;
  7243. $13 = (+Math_sqrt((+$12)));
  7244. return (+$13);
  7245. }
  7246. function _Vector2Angle($0,$1) {
  7247. $0 = $0|0;
  7248. $1 = $1|0;
  7249. var $$0 = 0.0, $10 = 0.0, $11 = 0.0, $12 = 0, $13 = 0.0, $2 = 0, $3 = 0.0, $4 = 0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0.0, $9 = 0.0, label = 0, sp = 0;
  7250. sp = STACKTOP;
  7251. $2 = ((($1)) + 4|0);
  7252. $3 = +HEAPF32[$2>>2];
  7253. $4 = ((($0)) + 4|0);
  7254. $5 = +HEAPF32[$4>>2];
  7255. $6 = $3 - $5;
  7256. $7 = +HEAPF32[$1>>2];
  7257. $8 = +HEAPF32[$0>>2];
  7258. $9 = $7 - $8;
  7259. $10 = (+Math_atan2((+$6),(+$9)));
  7260. $11 = $10 * 57.2957763671875;
  7261. $12 = $11 < 0.0;
  7262. $13 = $11 + 360.0;
  7263. $$0 = $12 ? $13 : $11;
  7264. return (+$$0);
  7265. }
  7266. function _VectorZero($0) {
  7267. $0 = $0|0;
  7268. var $1 = 0, $2 = 0, label = 0, sp = 0;
  7269. sp = STACKTOP;
  7270. HEAPF32[$0>>2] = 0.0;
  7271. $1 = ((($0)) + 4|0);
  7272. HEAPF32[$1>>2] = 0.0;
  7273. $2 = ((($0)) + 8|0);
  7274. HEAPF32[$2>>2] = 0.0;
  7275. return;
  7276. }
  7277. function _VectorLength($0) {
  7278. $0 = $0|0;
  7279. var $1 = 0.0, $10 = 0.0, $11 = 0.0, $2 = 0.0, $3 = 0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0, $8 = 0.0, $9 = 0.0, label = 0, sp = 0;
  7280. sp = STACKTOP;
  7281. $1 = +HEAPF32[$0>>2];
  7282. $2 = $1 * $1;
  7283. $3 = ((($0)) + 4|0);
  7284. $4 = +HEAPF32[$3>>2];
  7285. $5 = $4 * $4;
  7286. $6 = $2 + $5;
  7287. $7 = ((($0)) + 8|0);
  7288. $8 = +HEAPF32[$7>>2];
  7289. $9 = $8 * $8;
  7290. $10 = $6 + $9;
  7291. $11 = (+Math_sqrt((+$10)));
  7292. return (+$11);
  7293. }
  7294. function _VectorNormalize($0) {
  7295. $0 = $0|0;
  7296. var $$byval_copy = 0, $$op = 0.0, $1 = 0.0, $10 = 0.0, $11 = 0.0, $2 = 0, $3 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0, $7 = 0.0, $8 = 0.0, $9 = 0, label = 0, sp = 0;
  7297. sp = STACKTOP;
  7298. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  7299. $$byval_copy = sp;
  7300. ;HEAP32[$$byval_copy>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[$0+8>>2]|0;
  7301. $1 = (+_VectorLength($$byval_copy));
  7302. $2 = $1 == 0.0;
  7303. $$op = 1.0 / $1;
  7304. $3 = $2 ? 1.0 : $$op;
  7305. $4 = +HEAPF32[$0>>2];
  7306. $5 = $4 * $3;
  7307. HEAPF32[$0>>2] = $5;
  7308. $6 = ((($0)) + 4|0);
  7309. $7 = +HEAPF32[$6>>2];
  7310. $8 = $3 * $7;
  7311. HEAPF32[$6>>2] = $8;
  7312. $9 = ((($0)) + 8|0);
  7313. $10 = +HEAPF32[$9>>2];
  7314. $11 = $3 * $10;
  7315. HEAPF32[$9>>2] = $11;
  7316. STACKTOP = sp;return;
  7317. }
  7318. function _VectorTransform($0,$1) {
  7319. $0 = $0|0;
  7320. $1 = $1|0;
  7321. var $10 = 0.0, $11 = 0.0, $12 = 0.0, $13 = 0, $14 = 0.0, $15 = 0.0, $16 = 0.0, $17 = 0, $18 = 0.0, $19 = 0.0, $2 = 0.0, $20 = 0, $21 = 0.0, $22 = 0.0, $23 = 0, $24 = 0.0, $25 = 0.0, $26 = 0.0, $27 = 0, $28 = 0.0;
  7322. var $29 = 0.0, $3 = 0, $30 = 0.0, $31 = 0, $32 = 0.0, $33 = 0.0, $34 = 0, $35 = 0.0, $36 = 0.0, $37 = 0, $38 = 0.0, $39 = 0.0, $4 = 0.0, $40 = 0.0, $41 = 0, $42 = 0.0, $43 = 0.0, $44 = 0.0, $45 = 0, $46 = 0.0;
  7323. var $47 = 0.0, $5 = 0, $6 = 0.0, $7 = 0.0, $8 = 0.0, $9 = 0, label = 0, sp = 0;
  7324. sp = STACKTOP;
  7325. $2 = +HEAPF32[$0>>2];
  7326. $3 = ((($0)) + 4|0);
  7327. $4 = +HEAPF32[$3>>2];
  7328. $5 = ((($0)) + 8|0);
  7329. $6 = +HEAPF32[$5>>2];
  7330. $7 = +HEAPF32[$1>>2];
  7331. $8 = $2 * $7;
  7332. $9 = ((($1)) + 4|0);
  7333. $10 = +HEAPF32[$9>>2];
  7334. $11 = $4 * $10;
  7335. $12 = $8 + $11;
  7336. $13 = ((($1)) + 8|0);
  7337. $14 = +HEAPF32[$13>>2];
  7338. $15 = $6 * $14;
  7339. $16 = $12 + $15;
  7340. $17 = ((($1)) + 12|0);
  7341. $18 = +HEAPF32[$17>>2];
  7342. $19 = $18 + $16;
  7343. HEAPF32[$0>>2] = $19;
  7344. $20 = ((($1)) + 16|0);
  7345. $21 = +HEAPF32[$20>>2];
  7346. $22 = $2 * $21;
  7347. $23 = ((($1)) + 20|0);
  7348. $24 = +HEAPF32[$23>>2];
  7349. $25 = $4 * $24;
  7350. $26 = $22 + $25;
  7351. $27 = ((($1)) + 24|0);
  7352. $28 = +HEAPF32[$27>>2];
  7353. $29 = $6 * $28;
  7354. $30 = $26 + $29;
  7355. $31 = ((($1)) + 28|0);
  7356. $32 = +HEAPF32[$31>>2];
  7357. $33 = $32 + $30;
  7358. HEAPF32[$3>>2] = $33;
  7359. $34 = ((($1)) + 32|0);
  7360. $35 = +HEAPF32[$34>>2];
  7361. $36 = $2 * $35;
  7362. $37 = ((($1)) + 36|0);
  7363. $38 = +HEAPF32[$37>>2];
  7364. $39 = $4 * $38;
  7365. $40 = $36 + $39;
  7366. $41 = ((($1)) + 40|0);
  7367. $42 = +HEAPF32[$41>>2];
  7368. $43 = $6 * $42;
  7369. $44 = $40 + $43;
  7370. $45 = ((($1)) + 44|0);
  7371. $46 = +HEAPF32[$45>>2];
  7372. $47 = $46 + $44;
  7373. HEAPF32[$5>>2] = $47;
  7374. return;
  7375. }
  7376. function _MatrixTranspose($0) {
  7377. $0 = $0|0;
  7378. var $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, $5 = 0;
  7379. var $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  7380. sp = STACKTOP;
  7381. $1 = ((($0)) + 4|0);
  7382. $2 = HEAP32[$1>>2]|0;
  7383. $3 = ((($0)) + 8|0);
  7384. $4 = HEAP32[$3>>2]|0;
  7385. $5 = ((($0)) + 12|0);
  7386. $6 = HEAP32[$5>>2]|0;
  7387. $7 = ((($0)) + 16|0);
  7388. $8 = HEAP32[$7>>2]|0;
  7389. $9 = ((($0)) + 24|0);
  7390. $10 = HEAP32[$9>>2]|0;
  7391. $11 = ((($0)) + 28|0);
  7392. $12 = HEAP32[$11>>2]|0;
  7393. $13 = ((($0)) + 32|0);
  7394. $14 = HEAP32[$13>>2]|0;
  7395. $15 = ((($0)) + 36|0);
  7396. $16 = HEAP32[$15>>2]|0;
  7397. $17 = ((($0)) + 44|0);
  7398. $18 = HEAP32[$17>>2]|0;
  7399. $19 = ((($0)) + 48|0);
  7400. $20 = HEAP32[$19>>2]|0;
  7401. $21 = ((($0)) + 52|0);
  7402. $22 = HEAP32[$21>>2]|0;
  7403. $23 = ((($0)) + 56|0);
  7404. $24 = HEAP32[$23>>2]|0;
  7405. HEAP32[$1>>2] = $8;
  7406. HEAP32[$3>>2] = $14;
  7407. HEAP32[$5>>2] = $20;
  7408. HEAP32[$7>>2] = $2;
  7409. HEAP32[$9>>2] = $16;
  7410. HEAP32[$11>>2] = $22;
  7411. HEAP32[$13>>2] = $4;
  7412. HEAP32[$15>>2] = $10;
  7413. HEAP32[$17>>2] = $24;
  7414. HEAP32[$19>>2] = $6;
  7415. HEAP32[$21>>2] = $12;
  7416. HEAP32[$23>>2] = $18;
  7417. return;
  7418. }
  7419. function _MatrixIdentity($0) {
  7420. $0 = $0|0;
  7421. var $$sroa$5$0$$sroa_idx = 0, $$sroa$55$0$$sroa_idx6 = 0, $$sroa$6$0$$sroa_idx = 0, $$sroa$611$0$$sroa_idx12 = 0, $$sroa$7$0$$sroa_idx = 0, $$sroa$717$0$$sroa_idx18 = 0, label = 0, sp = 0;
  7422. sp = STACKTOP;
  7423. HEAPF32[$0>>2] = 1.0;
  7424. $$sroa$5$0$$sroa_idx = ((($0)) + 4|0);
  7425. ;HEAP32[$$sroa$5$0$$sroa_idx>>2]=0|0;HEAP32[$$sroa$5$0$$sroa_idx+4>>2]=0|0;HEAP32[$$sroa$5$0$$sroa_idx+8>>2]=0|0;HEAP32[$$sroa$5$0$$sroa_idx+12>>2]=0|0;
  7426. $$sroa$55$0$$sroa_idx6 = ((($0)) + 20|0);
  7427. HEAPF32[$$sroa$55$0$$sroa_idx6>>2] = 1.0;
  7428. $$sroa$6$0$$sroa_idx = ((($0)) + 24|0);
  7429. ;HEAP32[$$sroa$6$0$$sroa_idx>>2]=0|0;HEAP32[$$sroa$6$0$$sroa_idx+4>>2]=0|0;HEAP32[$$sroa$6$0$$sroa_idx+8>>2]=0|0;HEAP32[$$sroa$6$0$$sroa_idx+12>>2]=0|0;
  7430. $$sroa$611$0$$sroa_idx12 = ((($0)) + 40|0);
  7431. HEAPF32[$$sroa$611$0$$sroa_idx12>>2] = 1.0;
  7432. $$sroa$7$0$$sroa_idx = ((($0)) + 44|0);
  7433. ;HEAP32[$$sroa$7$0$$sroa_idx>>2]=0|0;HEAP32[$$sroa$7$0$$sroa_idx+4>>2]=0|0;HEAP32[$$sroa$7$0$$sroa_idx+8>>2]=0|0;HEAP32[$$sroa$7$0$$sroa_idx+12>>2]=0|0;
  7434. $$sroa$717$0$$sroa_idx18 = ((($0)) + 60|0);
  7435. HEAPF32[$$sroa$717$0$$sroa_idx18>>2] = 1.0;
  7436. return;
  7437. }
  7438. function _MatrixTranslate($0,$1,$2,$3) {
  7439. $0 = $0|0;
  7440. $1 = +$1;
  7441. $2 = +$2;
  7442. $3 = +$3;
  7443. var $$sroa$13$0$$sroa_idx20 = 0, $$sroa$14$0$$sroa_idx22 = 0, $$sroa$15$0$$sroa_idx24 = 0, $$sroa$16$0$$sroa_idx26 = 0, $$sroa$17$0$$sroa_idx28 = 0, $$sroa$18$0$$sroa_idx30 = 0, $$sroa$4$0$$sroa_idx2 = 0, $$sroa$8$0$$sroa_idx10 = 0, $$sroa$9$0$$sroa_idx12 = 0, label = 0, sp = 0;
  7444. sp = STACKTOP;
  7445. HEAPF32[$0>>2] = 1.0;
  7446. $$sroa$4$0$$sroa_idx2 = ((($0)) + 4|0);
  7447. $$sroa$8$0$$sroa_idx10 = ((($0)) + 20|0);
  7448. ;HEAP32[$$sroa$4$0$$sroa_idx2>>2]=0|0;HEAP32[$$sroa$4$0$$sroa_idx2+4>>2]=0|0;HEAP32[$$sroa$4$0$$sroa_idx2+8>>2]=0|0;HEAP32[$$sroa$4$0$$sroa_idx2+12>>2]=0|0;
  7449. HEAPF32[$$sroa$8$0$$sroa_idx10>>2] = 1.0;
  7450. $$sroa$9$0$$sroa_idx12 = ((($0)) + 24|0);
  7451. $$sroa$13$0$$sroa_idx20 = ((($0)) + 40|0);
  7452. ;HEAP32[$$sroa$9$0$$sroa_idx12>>2]=0|0;HEAP32[$$sroa$9$0$$sroa_idx12+4>>2]=0|0;HEAP32[$$sroa$9$0$$sroa_idx12+8>>2]=0|0;HEAP32[$$sroa$9$0$$sroa_idx12+12>>2]=0|0;
  7453. HEAPF32[$$sroa$13$0$$sroa_idx20>>2] = 1.0;
  7454. $$sroa$14$0$$sroa_idx22 = ((($0)) + 44|0);
  7455. HEAPF32[$$sroa$14$0$$sroa_idx22>>2] = 0.0;
  7456. $$sroa$15$0$$sroa_idx24 = ((($0)) + 48|0);
  7457. HEAPF32[$$sroa$15$0$$sroa_idx24>>2] = $1;
  7458. $$sroa$16$0$$sroa_idx26 = ((($0)) + 52|0);
  7459. HEAPF32[$$sroa$16$0$$sroa_idx26>>2] = $2;
  7460. $$sroa$17$0$$sroa_idx28 = ((($0)) + 56|0);
  7461. HEAPF32[$$sroa$17$0$$sroa_idx28>>2] = $3;
  7462. $$sroa$18$0$$sroa_idx30 = ((($0)) + 60|0);
  7463. HEAPF32[$$sroa$18$0$$sroa_idx30>>2] = 1.0;
  7464. return;
  7465. }
  7466. function _MatrixRotate($0,$1,$2) {
  7467. $0 = $0|0;
  7468. $1 = $1|0;
  7469. $2 = +$2;
  7470. var $$ = 0.0, $$221 = 0.0, $$222 = 0.0, $$sroa$10$0$$sroa_idx199 = 0, $$sroa$11$0$$sroa_idx201 = 0, $$sroa$12$0$$sroa_idx203 = 0, $$sroa$13$0$$sroa_idx205 = 0, $$sroa$14$0$$sroa_idx207 = 0, $$sroa$15$0$$sroa_idx209 = 0, $$sroa$16$0$$sroa_idx211 = 0, $$sroa$17$0$$sroa_idx213 = 0, $$sroa$18$0$$sroa_idx215 = 0, $$sroa$4$0$$sroa_idx187 = 0, $$sroa$5$0$$sroa_idx189 = 0, $$sroa$6$0$$sroa_idx191 = 0, $$sroa$7$0$$sroa_idx193 = 0, $$sroa$8$0$$sroa_idx195 = 0, $$sroa$9$0$$sroa_idx197 = 0, $10 = 0.0, $100 = 0.0;
  7471. var $101 = 0.0, $102 = 0.0, $103 = 0.0, $104 = 0.0, $105 = 0.0, $106 = 0.0, $107 = 0.0, $108 = 0.0, $109 = 0.0, $11 = 0.0, $110 = 0.0, $111 = 0.0, $112 = 0.0, $113 = 0.0, $114 = 0.0, $115 = 0.0, $116 = 0.0, $117 = 0.0, $118 = 0.0, $119 = 0.0;
  7472. var $12 = 0.0, $120 = 0.0, $121 = 0.0, $122 = 0.0, $123 = 0.0, $124 = 0.0, $125 = 0.0, $126 = 0.0, $127 = 0.0, $128 = 0.0, $129 = 0.0, $13 = 0.0, $130 = 0.0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0;
  7473. var $138 = 0, $14 = 0.0, $15 = 0, $16 = 0, $17 = 0.0, $18 = 0.0, $19 = 0.0, $20 = 0.0, $21 = 0.0, $22 = 0.0, $23 = 0.0, $24 = 0.0, $25 = 0, $26 = 0.0, $27 = 0, $28 = 0.0, $29 = 0, $3 = 0, $30 = 0.0, $31 = 0;
  7474. var $32 = 0.0, $33 = 0, $34 = 0.0, $35 = 0, $36 = 0.0, $37 = 0, $38 = 0.0, $39 = 0, $4 = 0.0, $40 = 0.0, $41 = 0, $42 = 0.0, $43 = 0, $44 = 0.0, $45 = 0, $46 = 0.0, $47 = 0.0, $48 = 0.0, $49 = 0.0, $5 = 0;
  7475. var $50 = 0.0, $51 = 0.0, $52 = 0.0, $53 = 0.0, $54 = 0.0, $55 = 0.0, $56 = 0.0, $57 = 0.0, $58 = 0.0, $59 = 0.0, $6 = 0.0, $60 = 0.0, $61 = 0.0, $62 = 0.0, $63 = 0.0, $64 = 0.0, $65 = 0.0, $66 = 0.0, $67 = 0.0, $68 = 0.0;
  7476. var $69 = 0.0, $7 = 0, $70 = 0.0, $71 = 0.0, $72 = 0.0, $73 = 0.0, $74 = 0.0, $75 = 0.0, $76 = 0.0, $77 = 0.0, $78 = 0.0, $79 = 0.0, $8 = 0.0, $80 = 0.0, $81 = 0.0, $82 = 0.0, $83 = 0.0, $84 = 0.0, $85 = 0.0, $86 = 0.0;
  7477. var $87 = 0.0, $88 = 0.0, $89 = 0.0, $9 = 0.0, $90 = 0.0, $91 = 0.0, $92 = 0.0, $93 = 0.0, $94 = 0.0, $95 = 0.0, $96 = 0.0, $97 = 0.0, $98 = 0.0, $99 = 0.0, $or$cond = 0, label = 0, sp = 0;
  7478. sp = STACKTOP;
  7479. STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
  7480. $3 = sp;
  7481. _MatrixIdentity($3);
  7482. $4 = +HEAPF32[$1>>2];
  7483. $5 = ((($1)) + 4|0);
  7484. $6 = +HEAPF32[$5>>2];
  7485. $7 = ((($1)) + 8|0);
  7486. $8 = +HEAPF32[$7>>2];
  7487. $9 = $4 * $4;
  7488. $10 = $6 * $6;
  7489. $11 = $9 + $10;
  7490. $12 = $8 * $8;
  7491. $13 = $11 + $12;
  7492. $14 = (+Math_sqrt((+$13)));
  7493. $15 = $14 != 1.0;
  7494. $16 = $14 != 0.0;
  7495. $or$cond = $15 & $16;
  7496. $17 = 1.0 / $14;
  7497. $18 = $4 * $17;
  7498. $19 = $6 * $17;
  7499. $20 = $8 * $17;
  7500. $$ = $or$cond ? $20 : $8;
  7501. $$221 = $or$cond ? $19 : $6;
  7502. $$222 = $or$cond ? $18 : $4;
  7503. $21 = (+Math_sin((+$2)));
  7504. $22 = (+Math_cos((+$2)));
  7505. $23 = 1.0 - $22;
  7506. $24 = +HEAPF32[$3>>2];
  7507. $25 = ((($3)) + 16|0);
  7508. $26 = +HEAPF32[$25>>2];
  7509. $27 = ((($3)) + 32|0);
  7510. $28 = +HEAPF32[$27>>2];
  7511. $29 = ((($3)) + 48|0);
  7512. $30 = +HEAPF32[$29>>2];
  7513. $31 = ((($3)) + 4|0);
  7514. $32 = +HEAPF32[$31>>2];
  7515. $33 = ((($3)) + 20|0);
  7516. $34 = +HEAPF32[$33>>2];
  7517. $35 = ((($3)) + 36|0);
  7518. $36 = +HEAPF32[$35>>2];
  7519. $37 = ((($3)) + 52|0);
  7520. $38 = +HEAPF32[$37>>2];
  7521. $39 = ((($3)) + 8|0);
  7522. $40 = +HEAPF32[$39>>2];
  7523. $41 = ((($3)) + 24|0);
  7524. $42 = +HEAPF32[$41>>2];
  7525. $43 = ((($3)) + 40|0);
  7526. $44 = +HEAPF32[$43>>2];
  7527. $45 = ((($3)) + 56|0);
  7528. $46 = +HEAPF32[$45>>2];
  7529. $47 = $$222 * $$222;
  7530. $48 = $23 * $47;
  7531. $49 = $22 + $48;
  7532. $50 = $$221 * $$222;
  7533. $51 = $23 * $50;
  7534. $52 = $21 * $$;
  7535. $53 = $52 + $51;
  7536. $54 = $$ * $$222;
  7537. $55 = $23 * $54;
  7538. $56 = $21 * $$221;
  7539. $57 = $55 - $56;
  7540. $58 = $51 - $52;
  7541. $59 = $$221 * $$221;
  7542. $60 = $23 * $59;
  7543. $61 = $22 + $60;
  7544. $62 = $$ * $$221;
  7545. $63 = $23 * $62;
  7546. $64 = $21 * $$222;
  7547. $65 = $64 + $63;
  7548. $66 = $56 + $55;
  7549. $67 = $63 - $64;
  7550. $68 = $$ * $$;
  7551. $69 = $23 * $68;
  7552. $70 = $22 + $69;
  7553. $71 = $24 * $49;
  7554. $72 = $53 * $32;
  7555. $73 = $71 + $72;
  7556. $74 = $57 * $40;
  7557. $75 = $73 + $74;
  7558. $76 = $26 * $49;
  7559. $77 = $53 * $34;
  7560. $78 = $76 + $77;
  7561. $79 = $57 * $42;
  7562. $80 = $78 + $79;
  7563. $81 = $28 * $49;
  7564. $82 = $53 * $36;
  7565. $83 = $81 + $82;
  7566. $84 = $57 * $44;
  7567. $85 = $83 + $84;
  7568. $86 = $30 * $49;
  7569. $87 = $53 * $38;
  7570. $88 = $86 + $87;
  7571. $89 = $57 * $46;
  7572. $90 = $88 + $89;
  7573. $91 = $24 * $58;
  7574. $92 = $61 * $32;
  7575. $93 = $91 + $92;
  7576. $94 = $65 * $40;
  7577. $95 = $93 + $94;
  7578. $96 = $26 * $58;
  7579. $97 = $61 * $34;
  7580. $98 = $96 + $97;
  7581. $99 = $65 * $42;
  7582. $100 = $98 + $99;
  7583. $101 = $28 * $58;
  7584. $102 = $61 * $36;
  7585. $103 = $101 + $102;
  7586. $104 = $65 * $44;
  7587. $105 = $103 + $104;
  7588. $106 = $30 * $58;
  7589. $107 = $61 * $38;
  7590. $108 = $106 + $107;
  7591. $109 = $65 * $46;
  7592. $110 = $108 + $109;
  7593. $111 = $24 * $66;
  7594. $112 = $67 * $32;
  7595. $113 = $111 + $112;
  7596. $114 = $70 * $40;
  7597. $115 = $113 + $114;
  7598. $116 = $26 * $66;
  7599. $117 = $67 * $34;
  7600. $118 = $116 + $117;
  7601. $119 = $70 * $42;
  7602. $120 = $118 + $119;
  7603. $121 = $28 * $66;
  7604. $122 = $67 * $36;
  7605. $123 = $121 + $122;
  7606. $124 = $70 * $44;
  7607. $125 = $123 + $124;
  7608. $126 = $30 * $66;
  7609. $127 = $67 * $38;
  7610. $128 = $126 + $127;
  7611. $129 = $70 * $46;
  7612. $130 = $128 + $129;
  7613. $131 = ((($3)) + 12|0);
  7614. $132 = HEAP32[$131>>2]|0;
  7615. $133 = ((($3)) + 28|0);
  7616. $134 = HEAP32[$133>>2]|0;
  7617. $135 = ((($3)) + 44|0);
  7618. $136 = HEAP32[$135>>2]|0;
  7619. $137 = ((($3)) + 60|0);
  7620. $138 = HEAP32[$137>>2]|0;
  7621. HEAPF32[$0>>2] = $75;
  7622. $$sroa$4$0$$sroa_idx187 = ((($0)) + 4|0);
  7623. HEAPF32[$$sroa$4$0$$sroa_idx187>>2] = $95;
  7624. $$sroa$5$0$$sroa_idx189 = ((($0)) + 8|0);
  7625. HEAPF32[$$sroa$5$0$$sroa_idx189>>2] = $115;
  7626. $$sroa$6$0$$sroa_idx191 = ((($0)) + 12|0);
  7627. HEAP32[$$sroa$6$0$$sroa_idx191>>2] = $132;
  7628. $$sroa$7$0$$sroa_idx193 = ((($0)) + 16|0);
  7629. HEAPF32[$$sroa$7$0$$sroa_idx193>>2] = $80;
  7630. $$sroa$8$0$$sroa_idx195 = ((($0)) + 20|0);
  7631. HEAPF32[$$sroa$8$0$$sroa_idx195>>2] = $100;
  7632. $$sroa$9$0$$sroa_idx197 = ((($0)) + 24|0);
  7633. HEAPF32[$$sroa$9$0$$sroa_idx197>>2] = $120;
  7634. $$sroa$10$0$$sroa_idx199 = ((($0)) + 28|0);
  7635. HEAP32[$$sroa$10$0$$sroa_idx199>>2] = $134;
  7636. $$sroa$11$0$$sroa_idx201 = ((($0)) + 32|0);
  7637. HEAPF32[$$sroa$11$0$$sroa_idx201>>2] = $85;
  7638. $$sroa$12$0$$sroa_idx203 = ((($0)) + 36|0);
  7639. HEAPF32[$$sroa$12$0$$sroa_idx203>>2] = $105;
  7640. $$sroa$13$0$$sroa_idx205 = ((($0)) + 40|0);
  7641. HEAPF32[$$sroa$13$0$$sroa_idx205>>2] = $125;
  7642. $$sroa$14$0$$sroa_idx207 = ((($0)) + 44|0);
  7643. HEAP32[$$sroa$14$0$$sroa_idx207>>2] = $136;
  7644. $$sroa$15$0$$sroa_idx209 = ((($0)) + 48|0);
  7645. HEAPF32[$$sroa$15$0$$sroa_idx209>>2] = $90;
  7646. $$sroa$16$0$$sroa_idx211 = ((($0)) + 52|0);
  7647. HEAPF32[$$sroa$16$0$$sroa_idx211>>2] = $110;
  7648. $$sroa$17$0$$sroa_idx213 = ((($0)) + 56|0);
  7649. HEAPF32[$$sroa$17$0$$sroa_idx213>>2] = $130;
  7650. $$sroa$18$0$$sroa_idx215 = ((($0)) + 60|0);
  7651. HEAP32[$$sroa$18$0$$sroa_idx215>>2] = $138;
  7652. STACKTOP = sp;return;
  7653. }
  7654. function _MatrixScale($0,$1,$2,$3) {
  7655. $0 = $0|0;
  7656. $1 = +$1;
  7657. $2 = +$2;
  7658. $3 = +$3;
  7659. var $$sroa$5$0$$sroa_idx = 0, $$sroa$55$0$$sroa_idx6 = 0, $$sroa$6$0$$sroa_idx = 0, $$sroa$611$0$$sroa_idx12 = 0, $$sroa$7$0$$sroa_idx = 0, $$sroa$717$0$$sroa_idx18 = 0, label = 0, sp = 0;
  7660. sp = STACKTOP;
  7661. HEAPF32[$0>>2] = $1;
  7662. $$sroa$5$0$$sroa_idx = ((($0)) + 4|0);
  7663. ;HEAP32[$$sroa$5$0$$sroa_idx>>2]=0|0;HEAP32[$$sroa$5$0$$sroa_idx+4>>2]=0|0;HEAP32[$$sroa$5$0$$sroa_idx+8>>2]=0|0;HEAP32[$$sroa$5$0$$sroa_idx+12>>2]=0|0;
  7664. $$sroa$55$0$$sroa_idx6 = ((($0)) + 20|0);
  7665. HEAPF32[$$sroa$55$0$$sroa_idx6>>2] = $2;
  7666. $$sroa$6$0$$sroa_idx = ((($0)) + 24|0);
  7667. ;HEAP32[$$sroa$6$0$$sroa_idx>>2]=0|0;HEAP32[$$sroa$6$0$$sroa_idx+4>>2]=0|0;HEAP32[$$sroa$6$0$$sroa_idx+8>>2]=0|0;HEAP32[$$sroa$6$0$$sroa_idx+12>>2]=0|0;
  7668. $$sroa$611$0$$sroa_idx12 = ((($0)) + 40|0);
  7669. HEAPF32[$$sroa$611$0$$sroa_idx12>>2] = $3;
  7670. $$sroa$7$0$$sroa_idx = ((($0)) + 44|0);
  7671. ;HEAP32[$$sroa$7$0$$sroa_idx>>2]=0|0;HEAP32[$$sroa$7$0$$sroa_idx+4>>2]=0|0;HEAP32[$$sroa$7$0$$sroa_idx+8>>2]=0|0;HEAP32[$$sroa$7$0$$sroa_idx+12>>2]=0|0;
  7672. $$sroa$717$0$$sroa_idx18 = ((($0)) + 60|0);
  7673. HEAPF32[$$sroa$717$0$$sroa_idx18>>2] = 1.0;
  7674. return;
  7675. }
  7676. function _MatrixMultiply($0,$1,$2) {
  7677. $0 = $0|0;
  7678. $1 = $1|0;
  7679. $2 = $2|0;
  7680. var $$sroa$10$0$$sroa_idx14 = 0, $$sroa$11$0$$sroa_idx16 = 0, $$sroa$12$0$$sroa_idx18 = 0, $$sroa$13$0$$sroa_idx20 = 0, $$sroa$14$0$$sroa_idx22 = 0, $$sroa$15$0$$sroa_idx24 = 0, $$sroa$16$0$$sroa_idx26 = 0, $$sroa$17$0$$sroa_idx28 = 0, $$sroa$18$0$$sroa_idx30 = 0, $$sroa$4$0$$sroa_idx2 = 0, $$sroa$5$0$$sroa_idx4 = 0, $$sroa$6$0$$sroa_idx6 = 0, $$sroa$7$0$$sroa_idx8 = 0, $$sroa$8$0$$sroa_idx10 = 0, $$sroa$9$0$$sroa_idx12 = 0, $10 = 0.0, $100 = 0.0, $101 = 0.0, $102 = 0.0, $103 = 0.0;
  7681. var $104 = 0.0, $105 = 0, $106 = 0.0, $107 = 0.0, $108 = 0, $109 = 0.0, $11 = 0.0, $110 = 0.0, $111 = 0.0, $112 = 0, $113 = 0.0, $114 = 0.0, $115 = 0.0, $116 = 0, $117 = 0.0, $118 = 0.0, $119 = 0.0, $12 = 0, $120 = 0.0, $121 = 0.0;
  7682. var $122 = 0.0, $123 = 0.0, $124 = 0.0, $125 = 0.0, $126 = 0.0, $127 = 0.0, $128 = 0.0, $129 = 0.0, $13 = 0.0, $130 = 0.0, $131 = 0.0, $132 = 0.0, $133 = 0.0, $134 = 0.0, $135 = 0.0, $136 = 0.0, $137 = 0.0, $138 = 0.0, $139 = 0.0, $14 = 0;
  7683. var $140 = 0.0, $141 = 0, $142 = 0.0, $143 = 0.0, $144 = 0, $145 = 0.0, $146 = 0.0, $147 = 0.0, $148 = 0, $149 = 0.0, $15 = 0.0, $150 = 0.0, $151 = 0.0, $152 = 0, $153 = 0.0, $154 = 0.0, $155 = 0.0, $156 = 0.0, $157 = 0.0, $158 = 0.0;
  7684. var $159 = 0.0, $16 = 0.0, $160 = 0.0, $161 = 0.0, $162 = 0.0, $163 = 0.0, $164 = 0.0, $165 = 0.0, $166 = 0.0, $167 = 0.0, $168 = 0.0, $169 = 0.0, $17 = 0.0, $170 = 0.0, $171 = 0.0, $172 = 0.0, $173 = 0.0, $174 = 0.0, $175 = 0.0, $176 = 0.0;
  7685. var $18 = 0, $19 = 0.0, $20 = 0, $21 = 0.0, $22 = 0.0, $23 = 0.0, $24 = 0, $25 = 0.0, $26 = 0.0, $27 = 0, $28 = 0.0, $29 = 0.0, $3 = 0.0, $30 = 0.0, $31 = 0, $32 = 0.0, $33 = 0.0, $34 = 0.0, $35 = 0, $36 = 0.0;
  7686. var $37 = 0.0, $38 = 0.0, $39 = 0, $4 = 0.0, $40 = 0.0, $41 = 0.0, $42 = 0, $43 = 0.0, $44 = 0.0, $45 = 0.0, $46 = 0, $47 = 0.0, $48 = 0.0, $49 = 0.0, $5 = 0.0, $50 = 0, $51 = 0.0, $52 = 0.0, $53 = 0.0, $54 = 0;
  7687. var $55 = 0.0, $56 = 0.0, $57 = 0, $58 = 0.0, $59 = 0.0, $6 = 0, $60 = 0.0, $61 = 0, $62 = 0.0, $63 = 0.0, $64 = 0.0, $65 = 0, $66 = 0.0, $67 = 0.0, $68 = 0.0, $69 = 0, $7 = 0.0, $70 = 0.0, $71 = 0.0, $72 = 0;
  7688. var $73 = 0.0, $74 = 0.0, $75 = 0.0, $76 = 0, $77 = 0.0, $78 = 0.0, $79 = 0.0, $8 = 0, $80 = 0, $81 = 0.0, $82 = 0.0, $83 = 0.0, $84 = 0.0, $85 = 0.0, $86 = 0.0, $87 = 0.0, $88 = 0.0, $89 = 0.0, $9 = 0.0, $90 = 0.0;
  7689. var $91 = 0.0, $92 = 0.0, $93 = 0.0, $94 = 0.0, $95 = 0.0, $96 = 0.0, $97 = 0.0, $98 = 0.0, $99 = 0.0, label = 0, sp = 0;
  7690. sp = STACKTOP;
  7691. $3 = +HEAPF32[$2>>2];
  7692. $4 = +HEAPF32[$1>>2];
  7693. $5 = $3 * $4;
  7694. $6 = ((($2)) + 16|0);
  7695. $7 = +HEAPF32[$6>>2];
  7696. $8 = ((($1)) + 4|0);
  7697. $9 = +HEAPF32[$8>>2];
  7698. $10 = $7 * $9;
  7699. $11 = $5 + $10;
  7700. $12 = ((($2)) + 32|0);
  7701. $13 = +HEAPF32[$12>>2];
  7702. $14 = ((($1)) + 8|0);
  7703. $15 = +HEAPF32[$14>>2];
  7704. $16 = $13 * $15;
  7705. $17 = $11 + $16;
  7706. $18 = ((($2)) + 48|0);
  7707. $19 = +HEAPF32[$18>>2];
  7708. $20 = ((($1)) + 12|0);
  7709. $21 = +HEAPF32[$20>>2];
  7710. $22 = $19 * $21;
  7711. $23 = $17 + $22;
  7712. $24 = ((($1)) + 16|0);
  7713. $25 = +HEAPF32[$24>>2];
  7714. $26 = $3 * $25;
  7715. $27 = ((($1)) + 20|0);
  7716. $28 = +HEAPF32[$27>>2];
  7717. $29 = $7 * $28;
  7718. $30 = $26 + $29;
  7719. $31 = ((($1)) + 24|0);
  7720. $32 = +HEAPF32[$31>>2];
  7721. $33 = $13 * $32;
  7722. $34 = $30 + $33;
  7723. $35 = ((($1)) + 28|0);
  7724. $36 = +HEAPF32[$35>>2];
  7725. $37 = $19 * $36;
  7726. $38 = $34 + $37;
  7727. $39 = ((($1)) + 32|0);
  7728. $40 = +HEAPF32[$39>>2];
  7729. $41 = $3 * $40;
  7730. $42 = ((($1)) + 36|0);
  7731. $43 = +HEAPF32[$42>>2];
  7732. $44 = $7 * $43;
  7733. $45 = $41 + $44;
  7734. $46 = ((($1)) + 40|0);
  7735. $47 = +HEAPF32[$46>>2];
  7736. $48 = $13 * $47;
  7737. $49 = $45 + $48;
  7738. $50 = ((($1)) + 44|0);
  7739. $51 = +HEAPF32[$50>>2];
  7740. $52 = $19 * $51;
  7741. $53 = $49 + $52;
  7742. $54 = ((($1)) + 48|0);
  7743. $55 = +HEAPF32[$54>>2];
  7744. $56 = $3 * $55;
  7745. $57 = ((($1)) + 52|0);
  7746. $58 = +HEAPF32[$57>>2];
  7747. $59 = $7 * $58;
  7748. $60 = $56 + $59;
  7749. $61 = ((($1)) + 56|0);
  7750. $62 = +HEAPF32[$61>>2];
  7751. $63 = $13 * $62;
  7752. $64 = $60 + $63;
  7753. $65 = ((($1)) + 60|0);
  7754. $66 = +HEAPF32[$65>>2];
  7755. $67 = $19 * $66;
  7756. $68 = $64 + $67;
  7757. $69 = ((($2)) + 4|0);
  7758. $70 = +HEAPF32[$69>>2];
  7759. $71 = $4 * $70;
  7760. $72 = ((($2)) + 20|0);
  7761. $73 = +HEAPF32[$72>>2];
  7762. $74 = $9 * $73;
  7763. $75 = $71 + $74;
  7764. $76 = ((($2)) + 36|0);
  7765. $77 = +HEAPF32[$76>>2];
  7766. $78 = $15 * $77;
  7767. $79 = $75 + $78;
  7768. $80 = ((($2)) + 52|0);
  7769. $81 = +HEAPF32[$80>>2];
  7770. $82 = $21 * $81;
  7771. $83 = $79 + $82;
  7772. $84 = $25 * $70;
  7773. $85 = $28 * $73;
  7774. $86 = $84 + $85;
  7775. $87 = $32 * $77;
  7776. $88 = $86 + $87;
  7777. $89 = $36 * $81;
  7778. $90 = $88 + $89;
  7779. $91 = $40 * $70;
  7780. $92 = $43 * $73;
  7781. $93 = $91 + $92;
  7782. $94 = $47 * $77;
  7783. $95 = $93 + $94;
  7784. $96 = $51 * $81;
  7785. $97 = $95 + $96;
  7786. $98 = $55 * $70;
  7787. $99 = $58 * $73;
  7788. $100 = $98 + $99;
  7789. $101 = $62 * $77;
  7790. $102 = $100 + $101;
  7791. $103 = $66 * $81;
  7792. $104 = $102 + $103;
  7793. $105 = ((($2)) + 8|0);
  7794. $106 = +HEAPF32[$105>>2];
  7795. $107 = $4 * $106;
  7796. $108 = ((($2)) + 24|0);
  7797. $109 = +HEAPF32[$108>>2];
  7798. $110 = $9 * $109;
  7799. $111 = $107 + $110;
  7800. $112 = ((($2)) + 40|0);
  7801. $113 = +HEAPF32[$112>>2];
  7802. $114 = $15 * $113;
  7803. $115 = $111 + $114;
  7804. $116 = ((($2)) + 56|0);
  7805. $117 = +HEAPF32[$116>>2];
  7806. $118 = $21 * $117;
  7807. $119 = $115 + $118;
  7808. $120 = $25 * $106;
  7809. $121 = $28 * $109;
  7810. $122 = $120 + $121;
  7811. $123 = $32 * $113;
  7812. $124 = $122 + $123;
  7813. $125 = $36 * $117;
  7814. $126 = $124 + $125;
  7815. $127 = $40 * $106;
  7816. $128 = $43 * $109;
  7817. $129 = $127 + $128;
  7818. $130 = $47 * $113;
  7819. $131 = $129 + $130;
  7820. $132 = $51 * $117;
  7821. $133 = $131 + $132;
  7822. $134 = $55 * $106;
  7823. $135 = $58 * $109;
  7824. $136 = $134 + $135;
  7825. $137 = $62 * $113;
  7826. $138 = $136 + $137;
  7827. $139 = $66 * $117;
  7828. $140 = $138 + $139;
  7829. $141 = ((($2)) + 12|0);
  7830. $142 = +HEAPF32[$141>>2];
  7831. $143 = $4 * $142;
  7832. $144 = ((($2)) + 28|0);
  7833. $145 = +HEAPF32[$144>>2];
  7834. $146 = $9 * $145;
  7835. $147 = $143 + $146;
  7836. $148 = ((($2)) + 44|0);
  7837. $149 = +HEAPF32[$148>>2];
  7838. $150 = $15 * $149;
  7839. $151 = $147 + $150;
  7840. $152 = ((($2)) + 60|0);
  7841. $153 = +HEAPF32[$152>>2];
  7842. $154 = $21 * $153;
  7843. $155 = $151 + $154;
  7844. $156 = $25 * $142;
  7845. $157 = $28 * $145;
  7846. $158 = $156 + $157;
  7847. $159 = $32 * $149;
  7848. $160 = $158 + $159;
  7849. $161 = $36 * $153;
  7850. $162 = $160 + $161;
  7851. $163 = $40 * $142;
  7852. $164 = $43 * $145;
  7853. $165 = $163 + $164;
  7854. $166 = $47 * $149;
  7855. $167 = $165 + $166;
  7856. $168 = $51 * $153;
  7857. $169 = $167 + $168;
  7858. $170 = $55 * $142;
  7859. $171 = $58 * $145;
  7860. $172 = $170 + $171;
  7861. $173 = $62 * $149;
  7862. $174 = $172 + $173;
  7863. $175 = $66 * $153;
  7864. $176 = $174 + $175;
  7865. HEAPF32[$0>>2] = $23;
  7866. $$sroa$4$0$$sroa_idx2 = ((($0)) + 4|0);
  7867. HEAPF32[$$sroa$4$0$$sroa_idx2>>2] = $83;
  7868. $$sroa$5$0$$sroa_idx4 = ((($0)) + 8|0);
  7869. HEAPF32[$$sroa$5$0$$sroa_idx4>>2] = $119;
  7870. $$sroa$6$0$$sroa_idx6 = ((($0)) + 12|0);
  7871. HEAPF32[$$sroa$6$0$$sroa_idx6>>2] = $155;
  7872. $$sroa$7$0$$sroa_idx8 = ((($0)) + 16|0);
  7873. HEAPF32[$$sroa$7$0$$sroa_idx8>>2] = $38;
  7874. $$sroa$8$0$$sroa_idx10 = ((($0)) + 20|0);
  7875. HEAPF32[$$sroa$8$0$$sroa_idx10>>2] = $90;
  7876. $$sroa$9$0$$sroa_idx12 = ((($0)) + 24|0);
  7877. HEAPF32[$$sroa$9$0$$sroa_idx12>>2] = $126;
  7878. $$sroa$10$0$$sroa_idx14 = ((($0)) + 28|0);
  7879. HEAPF32[$$sroa$10$0$$sroa_idx14>>2] = $162;
  7880. $$sroa$11$0$$sroa_idx16 = ((($0)) + 32|0);
  7881. HEAPF32[$$sroa$11$0$$sroa_idx16>>2] = $53;
  7882. $$sroa$12$0$$sroa_idx18 = ((($0)) + 36|0);
  7883. HEAPF32[$$sroa$12$0$$sroa_idx18>>2] = $97;
  7884. $$sroa$13$0$$sroa_idx20 = ((($0)) + 40|0);
  7885. HEAPF32[$$sroa$13$0$$sroa_idx20>>2] = $133;
  7886. $$sroa$14$0$$sroa_idx22 = ((($0)) + 44|0);
  7887. HEAPF32[$$sroa$14$0$$sroa_idx22>>2] = $169;
  7888. $$sroa$15$0$$sroa_idx24 = ((($0)) + 48|0);
  7889. HEAPF32[$$sroa$15$0$$sroa_idx24>>2] = $68;
  7890. $$sroa$16$0$$sroa_idx26 = ((($0)) + 52|0);
  7891. HEAPF32[$$sroa$16$0$$sroa_idx26>>2] = $104;
  7892. $$sroa$17$0$$sroa_idx28 = ((($0)) + 56|0);
  7893. HEAPF32[$$sroa$17$0$$sroa_idx28>>2] = $140;
  7894. $$sroa$18$0$$sroa_idx30 = ((($0)) + 60|0);
  7895. HEAPF32[$$sroa$18$0$$sroa_idx30>>2] = $176;
  7896. return;
  7897. }
  7898. function _MatrixOrtho($0,$1,$2,$3,$4,$5,$6) {
  7899. $0 = $0|0;
  7900. $1 = +$1;
  7901. $2 = +$2;
  7902. $3 = +$3;
  7903. $4 = +$4;
  7904. $5 = +$5;
  7905. $6 = +$6;
  7906. var $$sroa$10$0$$sroa_idx24 = 0, $$sroa$11$0$$sroa_idx26 = 0, $$sroa$12$0$$sroa_idx28 = 0, $$sroa$13$0$$sroa_idx30 = 0, $$sroa$14$0$$sroa_idx32 = 0, $$sroa$15$0$$sroa_idx34 = 0, $$sroa$16$0$$sroa_idx36 = 0, $$sroa$17$0$$sroa_idx38 = 0, $$sroa$18$0$$sroa_idx40 = 0, $$sroa$4$0$$sroa_idx12 = 0, $$sroa$5$0$$sroa_idx14 = 0, $$sroa$6$0$$sroa_idx16 = 0, $$sroa$7$0$$sroa_idx18 = 0, $$sroa$8$0$$sroa_idx20 = 0, $$sroa$9$0$$sroa_idx22 = 0, $10 = 0.0, $11 = 0.0, $12 = 0.0, $13 = 0.0, $14 = 0.0;
  7907. var $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0.0, $19 = 0.0, $20 = 0.0, $21 = 0.0, $22 = 0.0, $23 = 0.0, $24 = 0.0, $25 = 0.0, $26 = 0.0, $27 = 0.0, $28 = 0.0, $29 = 0.0, $30 = 0.0, $7 = 0.0, $8 = 0.0, $9 = 0.0, label = 0;
  7908. var sp = 0;
  7909. sp = STACKTOP;
  7910. $7 = $2 - $1;
  7911. $8 = $7;
  7912. $9 = $4 - $3;
  7913. $10 = $9;
  7914. $11 = $6 - $5;
  7915. $12 = $11;
  7916. $13 = 2.0 / $8;
  7917. $14 = 2.0 / $10;
  7918. $15 = -2.0 / $12;
  7919. $16 = $1 + $2;
  7920. $17 = -$16;
  7921. $18 = $8;
  7922. $19 = $17 / $18;
  7923. $20 = $19;
  7924. $21 = $3 + $4;
  7925. $22 = -$21;
  7926. $23 = $10;
  7927. $24 = $22 / $23;
  7928. $25 = $24;
  7929. $26 = $5 + $6;
  7930. $27 = -$26;
  7931. $28 = $12;
  7932. $29 = $27 / $28;
  7933. $30 = $29;
  7934. HEAPF32[$0>>2] = $13;
  7935. $$sroa$4$0$$sroa_idx12 = ((($0)) + 4|0);
  7936. HEAPF32[$$sroa$4$0$$sroa_idx12>>2] = 0.0;
  7937. $$sroa$5$0$$sroa_idx14 = ((($0)) + 8|0);
  7938. HEAPF32[$$sroa$5$0$$sroa_idx14>>2] = 0.0;
  7939. $$sroa$6$0$$sroa_idx16 = ((($0)) + 12|0);
  7940. HEAPF32[$$sroa$6$0$$sroa_idx16>>2] = $20;
  7941. $$sroa$7$0$$sroa_idx18 = ((($0)) + 16|0);
  7942. HEAPF32[$$sroa$7$0$$sroa_idx18>>2] = 0.0;
  7943. $$sroa$8$0$$sroa_idx20 = ((($0)) + 20|0);
  7944. HEAPF32[$$sroa$8$0$$sroa_idx20>>2] = $14;
  7945. $$sroa$9$0$$sroa_idx22 = ((($0)) + 24|0);
  7946. HEAPF32[$$sroa$9$0$$sroa_idx22>>2] = 0.0;
  7947. $$sroa$10$0$$sroa_idx24 = ((($0)) + 28|0);
  7948. HEAPF32[$$sroa$10$0$$sroa_idx24>>2] = $25;
  7949. $$sroa$11$0$$sroa_idx26 = ((($0)) + 32|0);
  7950. HEAPF32[$$sroa$11$0$$sroa_idx26>>2] = 0.0;
  7951. $$sroa$12$0$$sroa_idx28 = ((($0)) + 36|0);
  7952. HEAPF32[$$sroa$12$0$$sroa_idx28>>2] = 0.0;
  7953. $$sroa$13$0$$sroa_idx30 = ((($0)) + 40|0);
  7954. HEAPF32[$$sroa$13$0$$sroa_idx30>>2] = $15;
  7955. $$sroa$14$0$$sroa_idx32 = ((($0)) + 44|0);
  7956. HEAPF32[$$sroa$14$0$$sroa_idx32>>2] = $30;
  7957. $$sroa$15$0$$sroa_idx34 = ((($0)) + 48|0);
  7958. HEAPF32[$$sroa$15$0$$sroa_idx34>>2] = 0.0;
  7959. $$sroa$16$0$$sroa_idx36 = ((($0)) + 52|0);
  7960. HEAPF32[$$sroa$16$0$$sroa_idx36>>2] = 0.0;
  7961. $$sroa$17$0$$sroa_idx38 = ((($0)) + 56|0);
  7962. HEAPF32[$$sroa$17$0$$sroa_idx38>>2] = 0.0;
  7963. $$sroa$18$0$$sroa_idx40 = ((($0)) + 60|0);
  7964. HEAPF32[$$sroa$18$0$$sroa_idx40>>2] = 1.0;
  7965. return;
  7966. }
  7967. function _ProcessGestureEvent($0) {
  7968. $0 = $0|0;
  7969. var $$$sink = 0, $$sink = 0, $$sink10 = 0, $$sink11 = 0, $$sink16 = 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.0, $111 = 0.0;
  7970. var $112 = 0.0, $113 = 0.0, $114 = 0.0, $115 = 0.0, $116 = 0.0, $117 = 0, $118 = 0, $119 = 0, $12 = 0.0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0;
  7971. var $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, $145 = 0, $146 = 0, $147 = 0, $148 = 0;
  7972. var $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0.0, $16 = 0, $160 = 0.0, $161 = 0.0, $162 = 0.0, $163 = 0.0, $164 = 0.0, $165 = 0.0, $166 = 0;
  7973. var $167 = 0.0, $168 = 0, $169 = 0.0, $17 = 0, $170 = 0.0, $171 = 0.0, $172 = 0, $173 = 0.0, $174 = 0.0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0;
  7974. var $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, $45 = 0;
  7975. var $46 = 0, $47 = 0, $48 = 0.0, $49 = 0.0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0.0, $56 = 0.0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0;
  7976. 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.0, $81 = 0;
  7977. var $82 = 0.0, $83 = 0.0, $84 = 0.0, $85 = 0.0, $86 = 0.0, $87 = 0.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, $moveDownPosition$byval_copy11 = 0;
  7978. var $moveDownPosition2$byval_copy12 = 0, $or$cond = 0, $or$cond3 = 0, $or$cond5 = 0, $or$cond7 = 0, $or$cond9 = 0, label = 0, sp = 0;
  7979. sp = STACKTOP;
  7980. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  7981. $moveDownPosition2$byval_copy12 = sp + 8|0;
  7982. $moveDownPosition$byval_copy11 = sp;
  7983. $1 = ((($0)) + 4|0);
  7984. $2 = HEAP32[$1>>2]|0;
  7985. HEAP32[3597] = $2;
  7986. $3 = ($2|0)<(2);
  7987. $4 = HEAP32[$0>>2]|0;
  7988. $5 = ($4|0)==(1);
  7989. if (!($3)) {
  7990. if ($5) {
  7991. $88 = ((($0)) + 24|0);
  7992. $89 = $88;
  7993. $90 = $89;
  7994. $91 = HEAP32[$90>>2]|0;
  7995. $92 = (($89) + 4)|0;
  7996. $93 = $92;
  7997. $94 = HEAP32[$93>>2]|0;
  7998. $95 = 14072;
  7999. $96 = $95;
  8000. HEAP32[$96>>2] = $91;
  8001. $97 = (($95) + 4)|0;
  8002. $98 = $97;
  8003. HEAP32[$98>>2] = $94;
  8004. $99 = ((($0)) + 32|0);
  8005. $100 = $99;
  8006. $101 = $100;
  8007. $102 = HEAP32[$101>>2]|0;
  8008. $103 = (($100) + 4)|0;
  8009. $104 = $103;
  8010. $105 = HEAP32[$104>>2]|0;
  8011. $106 = 14112;
  8012. $107 = $106;
  8013. HEAP32[$107>>2] = $102;
  8014. $108 = (($106) + 4)|0;
  8015. $109 = $108;
  8016. HEAP32[$109>>2] = $105;
  8017. $110 = +HEAPF32[3528];
  8018. $111 = +HEAPF32[3518];
  8019. $112 = $110 - $111;
  8020. HEAPF32[3530] = $112;
  8021. $113 = +HEAPF32[(14116)>>2];
  8022. $114 = +HEAPF32[(14076)>>2];
  8023. $115 = $113 - $114;
  8024. HEAPF32[(14124)>>2] = $115;
  8025. HEAP32[3596] = 4;
  8026. STACKTOP = sp;return;
  8027. }
  8028. switch ($4|0) {
  8029. case 2: {
  8030. ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14104>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14104+4>>2]|0;
  8031. ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14128>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14128+4>>2]|0;
  8032. $116 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
  8033. HEAPF32[3602] = $116;
  8034. $117 = 14104;
  8035. $118 = $117;
  8036. $119 = HEAP32[$118>>2]|0;
  8037. $120 = (($117) + 4)|0;
  8038. $121 = $120;
  8039. $122 = HEAP32[$121>>2]|0;
  8040. $123 = 14072;
  8041. $124 = $123;
  8042. HEAP32[$124>>2] = $119;
  8043. $125 = (($123) + 4)|0;
  8044. $126 = $125;
  8045. HEAP32[$126>>2] = $122;
  8046. $127 = 14128;
  8047. $128 = $127;
  8048. $129 = HEAP32[$128>>2]|0;
  8049. $130 = (($127) + 4)|0;
  8050. $131 = $130;
  8051. $132 = HEAP32[$131>>2]|0;
  8052. $133 = 14112;
  8053. $134 = $133;
  8054. HEAP32[$134>>2] = $129;
  8055. $135 = (($133) + 4)|0;
  8056. $136 = $135;
  8057. HEAP32[$136>>2] = $132;
  8058. $137 = ((($0)) + 24|0);
  8059. $138 = $137;
  8060. $139 = $138;
  8061. $140 = HEAP32[$139>>2]|0;
  8062. $141 = (($138) + 4)|0;
  8063. $142 = $141;
  8064. $143 = HEAP32[$142>>2]|0;
  8065. $144 = 14104;
  8066. $145 = $144;
  8067. HEAP32[$145>>2] = $140;
  8068. $146 = (($144) + 4)|0;
  8069. $147 = $146;
  8070. HEAP32[$147>>2] = $143;
  8071. $148 = ((($0)) + 32|0);
  8072. $149 = $148;
  8073. $150 = $149;
  8074. $151 = HEAP32[$150>>2]|0;
  8075. $152 = (($149) + 4)|0;
  8076. $153 = $152;
  8077. $154 = HEAP32[$153>>2]|0;
  8078. $155 = 14128;
  8079. $156 = $155;
  8080. HEAP32[$156>>2] = $151;
  8081. $157 = (($155) + 4)|0;
  8082. $158 = $157;
  8083. HEAP32[$158>>2] = $154;
  8084. $159 = +HEAPF32[3532];
  8085. $160 = +HEAPF32[3526];
  8086. $161 = $159 - $160;
  8087. HEAPF32[3530] = $161;
  8088. $162 = +HEAPF32[(14132)>>2];
  8089. $163 = +HEAPF32[(14108)>>2];
  8090. $164 = $162 - $163;
  8091. HEAPF32[(14124)>>2] = $164;
  8092. ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14072>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14072+4>>2]|0;
  8093. ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14104>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14104+4>>2]|0;
  8094. $165 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
  8095. $166 = !($165 >= 0.004999999888241291);
  8096. if ($166) {
  8097. ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14112>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14112+4>>2]|0;
  8098. ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14128>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14128+4>>2]|0;
  8099. $167 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
  8100. $168 = !($167 >= 0.004999999888241291);
  8101. if ($168) {
  8102. $$sink16 = 4;
  8103. } else {
  8104. label = 29;
  8105. }
  8106. } else {
  8107. label = 29;
  8108. }
  8109. if ((label|0) == 29) {
  8110. ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14104>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14104+4>>2]|0;
  8111. ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14128>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14128+4>>2]|0;
  8112. $169 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
  8113. $170 = +HEAPF32[3602];
  8114. $171 = $169 - $170;
  8115. $172 = $171 < 0.0;
  8116. $$sink11 = $172 ? 256 : 512;
  8117. $$sink16 = $$sink11;
  8118. }
  8119. HEAP32[3596] = $$sink16;
  8120. ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14104>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14104+4>>2]|0;
  8121. ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14128>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14128+4>>2]|0;
  8122. $173 = (+_Vector2Angle($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
  8123. $174 = 360.0 - $173;
  8124. HEAPF32[3603] = $174;
  8125. STACKTOP = sp;return;
  8126. break;
  8127. }
  8128. case 0: {
  8129. HEAPF32[3602] = 0.0;
  8130. HEAPF32[3603] = 0.0;
  8131. HEAPF32[3530] = 0.0;
  8132. HEAPF32[(14124)>>2] = 0.0;
  8133. HEAP32[3597] = 0;
  8134. HEAP32[3596] = 0;
  8135. STACKTOP = sp;return;
  8136. break;
  8137. }
  8138. default: {
  8139. STACKTOP = sp;return;
  8140. }
  8141. }
  8142. }
  8143. if ($5) {
  8144. $6 = HEAP32[3598]|0;
  8145. $7 = (($6) + 1)|0;
  8146. HEAP32[3598] = $7;
  8147. $8 = HEAP32[3596]|0;
  8148. $9 = ($8|0)==(0);
  8149. $10 = ($6|0)>(0);
  8150. $or$cond = $10 & $9;
  8151. if ($or$cond) {
  8152. $11 = ((($0)) + 24|0);
  8153. ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14072>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14072+4>>2]|0;
  8154. ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[$11>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[$11+4>>2]|0;
  8155. $12 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
  8156. $13 = $12 < 0.029999999329447746;
  8157. if ($13) {
  8158. HEAP32[3596] = 2;
  8159. HEAP32[3598] = 0;
  8160. } else {
  8161. label = 6;
  8162. }
  8163. } else {
  8164. label = 6;
  8165. }
  8166. if ((label|0) == 6) {
  8167. HEAP32[3598] = 1;
  8168. HEAP32[3596] = 1;
  8169. }
  8170. $14 = ((($0)) + 24|0);
  8171. $15 = $14;
  8172. $16 = $15;
  8173. $17 = HEAP32[$16>>2]|0;
  8174. $18 = (($15) + 4)|0;
  8175. $19 = $18;
  8176. $20 = HEAP32[$19>>2]|0;
  8177. $21 = 14072;
  8178. $22 = $21;
  8179. HEAP32[$22>>2] = $17;
  8180. $23 = (($21) + 4)|0;
  8181. $24 = $23;
  8182. HEAP32[$24>>2] = $20;
  8183. $25 = 14080;
  8184. $26 = $25;
  8185. HEAP32[$26>>2] = $17;
  8186. $27 = (($25) + 4)|0;
  8187. $28 = $27;
  8188. HEAP32[$28>>2] = $20;
  8189. $29 = 14088;
  8190. $30 = $29;
  8191. HEAP32[$30>>2] = $17;
  8192. $31 = (($29) + 4)|0;
  8193. $32 = $31;
  8194. HEAP32[$32>>2] = $20;
  8195. $33 = ((($0)) + 8|0);
  8196. $34 = HEAP32[$33>>2]|0;
  8197. HEAP32[4] = $34;
  8198. HEAPF32[3524] = 0.0;
  8199. HEAPF32[(14100)>>2] = 0.0;
  8200. STACKTOP = sp;return;
  8201. }
  8202. switch ($4|0) {
  8203. case 0: {
  8204. $35 = HEAP32[3596]|0;
  8205. $36 = ($35|0)==(8);
  8206. if ($36) {
  8207. $37 = ((($0)) + 24|0);
  8208. $38 = $37;
  8209. $39 = $38;
  8210. $40 = HEAP32[$39>>2]|0;
  8211. $41 = (($38) + 4)|0;
  8212. $42 = $41;
  8213. $43 = HEAP32[$42>>2]|0;
  8214. $44 = 14088;
  8215. $45 = $44;
  8216. HEAP32[$45>>2] = $40;
  8217. $46 = (($44) + 4)|0;
  8218. $47 = $46;
  8219. HEAP32[$47>>2] = $43;
  8220. }
  8221. ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14072>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14072+4>>2]|0;
  8222. ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14088>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14088+4>>2]|0;
  8223. $48 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
  8224. $49 = $48 / 0.0;
  8225. HEAPF32[3599] = $49;
  8226. HEAP32[3600] = 0;
  8227. $50 = $49 > 5.0000002374872565E-4;
  8228. if ($50) {
  8229. $51 = HEAP32[4]|0;
  8230. $52 = ((($0)) + 8|0);
  8231. $53 = HEAP32[$52>>2]|0;
  8232. $54 = ($51|0)==($53|0);
  8233. if ($54) {
  8234. ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14072>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14072+4>>2]|0;
  8235. ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14088>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14088+4>>2]|0;
  8236. $55 = (+_Vector2Angle($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
  8237. $56 = 360.0 - $55;
  8238. HEAPF32[3601] = $56;
  8239. $57 = $56 < 30.0;
  8240. $58 = $56 > 330.0;
  8241. $or$cond3 = $57 | $58;
  8242. if ($or$cond3) {
  8243. $$sink10 = 16;
  8244. } else {
  8245. $59 = $56 > 30.0;
  8246. $60 = $56 < 120.0;
  8247. $or$cond5 = $59 & $60;
  8248. if ($or$cond5) {
  8249. $$sink10 = 64;
  8250. } else {
  8251. $61 = $56 > 120.0;
  8252. $62 = $56 < 210.0;
  8253. $or$cond7 = $61 & $62;
  8254. $63 = $56 > 210.0;
  8255. $64 = $56 < 300.0;
  8256. $or$cond9 = $63 & $64;
  8257. $$sink = $or$cond9 ? 128 : 0;
  8258. $$$sink = $or$cond7 ? 32 : $$sink;
  8259. $$sink10 = $$$sink;
  8260. }
  8261. }
  8262. } else {
  8263. label = 16;
  8264. }
  8265. } else {
  8266. label = 16;
  8267. }
  8268. if ((label|0) == 16) {
  8269. HEAPF32[3599] = 0.0;
  8270. HEAPF32[3601] = 0.0;
  8271. $$sink10 = 0;
  8272. }
  8273. HEAP32[3596] = $$sink10;
  8274. HEAPF32[3520] = 0.0;
  8275. HEAPF32[(14084)>>2] = 0.0;
  8276. HEAP32[3597] = 0;
  8277. STACKTOP = sp;return;
  8278. break;
  8279. }
  8280. case 2: {
  8281. $65 = HEAP32[3600]|0;
  8282. $66 = ($65|0)==(0);
  8283. if ($66) {
  8284. HEAP32[3600] = 1;
  8285. }
  8286. $67 = ((($0)) + 24|0);
  8287. $68 = $67;
  8288. $69 = $68;
  8289. $70 = HEAP32[$69>>2]|0;
  8290. $71 = (($68) + 4)|0;
  8291. $72 = $71;
  8292. $73 = HEAP32[$72>>2]|0;
  8293. $74 = 14104;
  8294. $75 = $74;
  8295. HEAP32[$75>>2] = $70;
  8296. $76 = (($74) + 4)|0;
  8297. $77 = $76;
  8298. HEAP32[$77>>2] = $73;
  8299. $78 = HEAP32[3596]|0;
  8300. $79 = ($78|0)==(4);
  8301. if ($79) {
  8302. ;HEAP32[$moveDownPosition$byval_copy11>>2]=HEAP32[14072>>2]|0;HEAP32[$moveDownPosition$byval_copy11+4>>2]=HEAP32[14072+4>>2]|0;
  8303. ;HEAP32[$moveDownPosition2$byval_copy12>>2]=HEAP32[14104>>2]|0;HEAP32[$moveDownPosition2$byval_copy12+4>>2]=HEAP32[14104+4>>2]|0;
  8304. $80 = (+_Vector2Distance($moveDownPosition$byval_copy11,$moveDownPosition2$byval_copy12));
  8305. $81 = !($80 >= 0.014999999664723873);
  8306. if (!($81)) {
  8307. HEAP32[3596] = 8;
  8308. }
  8309. }
  8310. $82 = +HEAPF32[3526];
  8311. $83 = +HEAPF32[3520];
  8312. $84 = $82 - $83;
  8313. HEAPF32[3524] = $84;
  8314. $85 = +HEAPF32[(14108)>>2];
  8315. $86 = +HEAPF32[(14084)>>2];
  8316. $87 = $85 - $86;
  8317. HEAPF32[(14100)>>2] = $87;
  8318. STACKTOP = sp;return;
  8319. break;
  8320. }
  8321. default: {
  8322. STACKTOP = sp;return;
  8323. }
  8324. }
  8325. }
  8326. function _UpdateGestures() {
  8327. var $$off = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $or$cond3 = 0, label = 0, sp = 0;
  8328. sp = STACKTOP;
  8329. $0 = HEAP32[3596]|0;
  8330. $$off = (($0) + -1)|0;
  8331. $1 = ($$off>>>0)<(2);
  8332. $2 = HEAP32[3597]|0;
  8333. $3 = ($2|0)<(2);
  8334. $or$cond3 = $1 & $3;
  8335. if ($or$cond3) {
  8336. HEAP32[3596] = 4;
  8337. }
  8338. $4 = HEAP32[3596]|0;
  8339. $5 = (($4) + -16)|0;
  8340. $6 = $5 >>> 4;
  8341. $7 = $5 << 28;
  8342. $8 = $6 | $7;
  8343. switch ($8|0) {
  8344. case 0: case 1: case 3: case 7: {
  8345. break;
  8346. }
  8347. default: {
  8348. return;
  8349. }
  8350. }
  8351. HEAP32[3596] = 0;
  8352. return;
  8353. }
  8354. function _GetMousePosition($0) {
  8355. $0 = $0|0;
  8356. var $1 = 0, $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  8357. sp = STACKTOP;
  8358. $1 = 14136;
  8359. $2 = $1;
  8360. $3 = HEAP32[$2>>2]|0;
  8361. $4 = (($1) + 4)|0;
  8362. $5 = $4;
  8363. $6 = HEAP32[$5>>2]|0;
  8364. $7 = $0;
  8365. $8 = $7;
  8366. HEAP32[$8>>2] = $3;
  8367. $9 = (($7) + 4)|0;
  8368. $10 = $9;
  8369. HEAP32[$10>>2] = $6;
  8370. return;
  8371. }
  8372. function _GetScreenWidth() {
  8373. var $0 = 0, label = 0, sp = 0;
  8374. sp = STACKTOP;
  8375. $0 = HEAP32[3606]|0;
  8376. return ($0|0);
  8377. }
  8378. function _GetScreenHeight() {
  8379. var $0 = 0, label = 0, sp = 0;
  8380. sp = STACKTOP;
  8381. $0 = HEAP32[3605]|0;
  8382. return ($0|0);
  8383. }
  8384. function _InitWindow($0,$1,$2) {
  8385. $0 = $0|0;
  8386. $1 = $1|0;
  8387. $2 = $2|0;
  8388. var $10 = 0, $3 = 0, $4 = 0.0, $5 = 0.0, $6 = 0, $7 = 0.0, $8 = 0.0, $9 = 0, $vararg_buffer = 0, label = 0, sp = 0;
  8389. sp = STACKTOP;
  8390. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  8391. $vararg_buffer = sp;
  8392. _TraceLog(0,3430,$vararg_buffer);
  8393. HEAP32[3608] = $2;
  8394. _InitGraphicsDevice($0,$1);
  8395. _LoadDefaultFont();
  8396. _InitTimer();
  8397. (_emscripten_set_fullscreenchange_callback((0|0),(0|0),1,(3|0))|0);
  8398. (_emscripten_set_keypress_callback((3459|0),(0|0),1,(4|0))|0);
  8399. (_emscripten_set_click_callback((3459|0),(0|0),1,(5|0))|0);
  8400. (_emscripten_set_touchstart_callback((3459|0),(0|0),1,(6|0))|0);
  8401. (_emscripten_set_touchend_callback((3459|0),(0|0),1,(6|0))|0);
  8402. (_emscripten_set_touchmove_callback((3459|0),(0|0),1,(6|0))|0);
  8403. (_emscripten_set_touchcancel_callback((3459|0),(0|0),1,(6|0))|0);
  8404. (_emscripten_set_gamepadconnected_callback((0|0),1,(7|0))|0);
  8405. (_emscripten_set_gamepaddisconnected_callback((0|0),1,(7|0))|0);
  8406. $3 = HEAP32[3606]|0;
  8407. $4 = (+($3|0));
  8408. $5 = $4 * 0.5;
  8409. HEAPF32[3534] = $5;
  8410. $6 = HEAP32[3605]|0;
  8411. $7 = (+($6|0));
  8412. $8 = $7 * 0.5;
  8413. HEAPF32[(14140)>>2] = $8;
  8414. $9 = HEAP32[3609]|0;
  8415. $10 = ($9|0)==(0);
  8416. if ($10) {
  8417. STACKTOP = sp;return;
  8418. }
  8419. _SetTargetFPS(60);
  8420. _LogoAnimation();
  8421. STACKTOP = sp;return;
  8422. }
  8423. function _TraceLog($0,$1,$varargs) {
  8424. $0 = $0|0;
  8425. $1 = $1|0;
  8426. $varargs = $varargs|0;
  8427. var $10 = 0, $11 = 0, $12 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $endptr = 0, $strlen = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  8428. sp = STACKTOP;
  8429. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  8430. $2 = sp;
  8431. switch ($0|0) {
  8432. case 0: {
  8433. ;HEAP8[14176>>0]=HEAP8[7988>>0]|0;HEAP8[14176+1>>0]=HEAP8[7988+1>>0]|0;HEAP8[14176+2>>0]=HEAP8[7988+2>>0]|0;HEAP8[14176+3>>0]=HEAP8[7988+3>>0]|0;HEAP8[14176+4>>0]=HEAP8[7988+4>>0]|0;HEAP8[14176+5>>0]=HEAP8[7988+5>>0]|0;HEAP8[14176+6>>0]=HEAP8[7988+6>>0]|0;
  8434. break;
  8435. }
  8436. case 1: {
  8437. $3 = 14176;
  8438. $4 = $3;
  8439. HEAP32[$4>>2] = 1330795077;
  8440. $5 = (($3) + 4)|0;
  8441. $6 = $5;
  8442. HEAP32[$6>>2] = 2112082;
  8443. break;
  8444. }
  8445. case 2: {
  8446. dest=14176; src=7995; stop=dest+10|0; do { HEAP8[dest>>0]=HEAP8[src>>0]|0; dest=dest+1|0; src=src+1|0; } while ((dest|0) < (stop|0));
  8447. break;
  8448. }
  8449. case 3: {
  8450. $7 = 14176;
  8451. $8 = $7;
  8452. HEAP32[$8>>2] = 1430406468;
  8453. $9 = (($7) + 4)|0;
  8454. $10 = $9;
  8455. HEAP32[$10>>2] = 2112071;
  8456. break;
  8457. }
  8458. default: {
  8459. }
  8460. }
  8461. (_strcat(14176,$1)|0);
  8462. $strlen = (_strlen(14176)|0);
  8463. $endptr = (14176 + ($strlen)|0);
  8464. HEAP8[$endptr>>0]=10&255;HEAP8[$endptr+1>>0]=10>>8;
  8465. HEAP32[$2>>2] = $varargs;
  8466. $11 = ($0|0)==(3);
  8467. if ($11) {
  8468. STACKTOP = sp;return;
  8469. }
  8470. (_vprintf(14176,$2)|0);
  8471. $12 = ($0|0)==(1);
  8472. if ($12) {
  8473. _exit(1);
  8474. // unreachable;
  8475. } else {
  8476. STACKTOP = sp;return;
  8477. }
  8478. }
  8479. function _InitGraphicsDevice($0,$1) {
  8480. $0 = $0|0;
  8481. $1 = $1|0;
  8482. var $$015 = 0, $$byval_copy = 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;
  8483. 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;
  8484. 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;
  8485. var $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, $76 = 0, $77 = 0, $78 = 0.0, $79 = 0, $8 = 0, $80 = 0;
  8486. var $81 = 0, $82 = 0.0, $83 = 0, $84 = 0, $85 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer10 = 0, $vararg_buffer14 = 0, $vararg_buffer18 = 0, $vararg_buffer22 = 0, $vararg_buffer3 = 0, $vararg_buffer6 = 0, $vararg_buffer8 = 0, $vararg_ptr13 = 0, $vararg_ptr17 = 0, $vararg_ptr21 = 0, $vararg_ptr5 = 0, dest = 0;
  8487. var label = 0, sp = 0, src = 0, stop = 0;
  8488. sp = STACKTOP;
  8489. STACKTOP = STACKTOP + 144|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(144|0);
  8490. $$byval_copy = sp + 136|0;
  8491. $vararg_buffer22 = sp + 64|0;
  8492. $vararg_buffer18 = sp + 56|0;
  8493. $vararg_buffer14 = sp + 48|0;
  8494. $vararg_buffer10 = sp + 40|0;
  8495. $vararg_buffer8 = sp + 32|0;
  8496. $vararg_buffer6 = sp + 24|0;
  8497. $vararg_buffer3 = sp + 16|0;
  8498. $vararg_buffer1 = sp + 8|0;
  8499. $vararg_buffer = sp;
  8500. $2 = sp + 72|0;
  8501. $3 = sp + 140|0;
  8502. HEAP32[3606] = $0;
  8503. HEAP32[3605] = $1;
  8504. _MatrixIdentity($2);
  8505. dest=14512; src=$2; 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));
  8506. (_glfwSetErrorCallback((1|0))|0);
  8507. $4 = (_glfwInit()|0);
  8508. $5 = ($4|0)==(0);
  8509. if ($5) {
  8510. _TraceLog(1,4130,$vararg_buffer);
  8511. }
  8512. $6 = HEAP32[3606]|0;
  8513. HEAP32[3644] = $6;
  8514. $7 = HEAP32[3605]|0;
  8515. HEAP32[3645] = $7;
  8516. _glfwDefaultWindowHints();
  8517. $8 = HEAP8[17228]|0;
  8518. $9 = $8 & 4;
  8519. $10 = ($9<<24>>24)==(0);
  8520. if ($10) {
  8521. _glfwWindowHint(131075,0);
  8522. } else {
  8523. _glfwWindowHint(131075,1);
  8524. }
  8525. $11 = HEAP8[17228]|0;
  8526. $12 = $11 & 8;
  8527. $13 = ($12<<24>>24)==(0);
  8528. if (!($13)) {
  8529. _glfwWindowHint(131077,1);
  8530. }
  8531. $14 = HEAP8[17228]|0;
  8532. $15 = $14 & 32;
  8533. $16 = ($15<<24>>24)==(0);
  8534. if (!($16)) {
  8535. _glfwWindowHint(135181,4);
  8536. _TraceLog(0,4156,$vararg_buffer1);
  8537. }
  8538. $17 = (_rlGetVersion()|0);
  8539. $18 = ($17|0)==(2);
  8540. if ($18) {
  8541. _glfwWindowHint(139266,2);
  8542. _glfwWindowHint(139267,1);
  8543. } else {
  8544. $19 = (_rlGetVersion()|0);
  8545. $20 = ($19|0)==(3);
  8546. if ($20) {
  8547. _glfwWindowHint(139266,3);
  8548. _glfwWindowHint(139267,3);
  8549. _glfwWindowHint(139272,204801);
  8550. _glfwWindowHint(139270,0);
  8551. }
  8552. }
  8553. $21 = HEAP32[3646]|0;
  8554. $22 = ($21|0)==(0);
  8555. if ($22) {
  8556. $47 = HEAP32[3606]|0;
  8557. $48 = HEAP32[3605]|0;
  8558. $49 = HEAP32[3608]|0;
  8559. $50 = (_glfwCreateWindow(($47|0),($48|0),($49|0),(0|0),(0|0))|0);
  8560. HEAP32[3604] = $50;
  8561. $51 = HEAP32[3606]|0;
  8562. HEAP32[3647] = $51;
  8563. $52 = HEAP32[3605]|0;
  8564. HEAP32[3648] = $52;
  8565. $54 = $50;
  8566. } else {
  8567. $23 = (_glfwGetPrimaryMonitor()|0);
  8568. $24 = (_glfwGetVideoModes(($23|0),($$byval_copy|0))|0);
  8569. $25 = HEAP32[$$byval_copy>>2]|0;
  8570. $26 = ($25|0)>(0);
  8571. L22: do {
  8572. if ($26) {
  8573. $27 = HEAP32[3606]|0;
  8574. $28 = HEAP32[$$byval_copy>>2]|0;
  8575. $29 = HEAP32[3605]|0;
  8576. $$015 = 0;
  8577. while(1) {
  8578. $30 = (($24) + (($$015*24)|0)|0);
  8579. $31 = HEAP32[$30>>2]|0;
  8580. $32 = ($31|0)<($27|0);
  8581. if (!($32)) {
  8582. $33 = (((($24) + (($$015*24)|0)|0)) + 4|0);
  8583. $34 = HEAP32[$33>>2]|0;
  8584. $35 = ($34|0)<($29|0);
  8585. if (!($35)) {
  8586. break;
  8587. }
  8588. }
  8589. $36 = (($$015) + 1)|0;
  8590. $37 = ($36|0)<($28|0);
  8591. if ($37) {
  8592. $$015 = $36;
  8593. } else {
  8594. break L22;
  8595. }
  8596. }
  8597. HEAP32[3644] = $31;
  8598. HEAP32[3645] = $34;
  8599. }
  8600. } while(0);
  8601. $38 = HEAP32[3644]|0;
  8602. $39 = HEAP32[3645]|0;
  8603. HEAP32[$vararg_buffer3>>2] = $38;
  8604. $vararg_ptr5 = ((($vararg_buffer3)) + 4|0);
  8605. HEAP32[$vararg_ptr5>>2] = $39;
  8606. _TraceLog(2,4181,$vararg_buffer3);
  8607. $40 = HEAP32[3644]|0;
  8608. $41 = HEAP32[3645]|0;
  8609. _SetupFramebufferSize($40,$41);
  8610. $42 = HEAP32[3644]|0;
  8611. $43 = HEAP32[3645]|0;
  8612. $44 = HEAP32[3608]|0;
  8613. $45 = (_glfwGetPrimaryMonitor()|0);
  8614. $46 = (_glfwCreateWindow(($42|0),($43|0),($44|0),($45|0),(0|0))|0);
  8615. HEAP32[3604] = $46;
  8616. $54 = $46;
  8617. }
  8618. $53 = ($54|0)==(0|0);
  8619. if ($53) {
  8620. _glfwTerminate();
  8621. _TraceLog(1,4219,$vararg_buffer6);
  8622. } else {
  8623. _TraceLog(0,4252,$vararg_buffer8);
  8624. $55 = HEAP32[3647]|0;
  8625. $56 = HEAP32[3648]|0;
  8626. HEAP32[$vararg_buffer10>>2] = $55;
  8627. $vararg_ptr13 = ((($vararg_buffer10)) + 4|0);
  8628. HEAP32[$vararg_ptr13>>2] = $56;
  8629. _TraceLog(0,4292,$vararg_buffer10);
  8630. $57 = HEAP32[3606]|0;
  8631. $58 = HEAP32[3605]|0;
  8632. HEAP32[$vararg_buffer14>>2] = $57;
  8633. $vararg_ptr17 = ((($vararg_buffer14)) + 4|0);
  8634. HEAP32[$vararg_ptr17>>2] = $58;
  8635. _TraceLog(0,4313,$vararg_buffer14);
  8636. $59 = HEAP32[3649]|0;
  8637. $60 = HEAP32[3650]|0;
  8638. HEAP32[$vararg_buffer18>>2] = $59;
  8639. $vararg_ptr21 = ((($vararg_buffer18)) + 4|0);
  8640. HEAP32[$vararg_ptr21>>2] = $60;
  8641. _TraceLog(0,4334,$vararg_buffer18);
  8642. }
  8643. $61 = HEAP32[3604]|0;
  8644. (_glfwSetWindowSizeCallback(($61|0),(1|0))|0);
  8645. $62 = HEAP32[3604]|0;
  8646. (_glfwSetCursorEnterCallback(($62|0),(2|0))|0);
  8647. $63 = HEAP32[3604]|0;
  8648. (_glfwSetKeyCallback(($63|0),(1|0))|0);
  8649. $64 = HEAP32[3604]|0;
  8650. (_glfwSetMouseButtonCallback(($64|0),(1|0))|0);
  8651. $65 = HEAP32[3604]|0;
  8652. (_glfwSetCursorPosCallback(($65|0),(1|0))|0);
  8653. $66 = HEAP32[3604]|0;
  8654. (_glfwSetCharCallback(($66|0),(3|0))|0);
  8655. $67 = HEAP32[3604]|0;
  8656. (_glfwSetScrollCallback(($67|0),(2|0))|0);
  8657. $68 = HEAP32[3604]|0;
  8658. (_glfwSetWindowIconifyCallback(($68|0),(4|0))|0);
  8659. $69 = HEAP32[3604]|0;
  8660. _glfwMakeContextCurrent(($69|0));
  8661. _glfwSwapInterval(0);
  8662. $70 = HEAP8[17228]|0;
  8663. $71 = $70 & 64;
  8664. $72 = ($71<<24>>24)==(0);
  8665. if ($72) {
  8666. $73 = HEAP32[3606]|0;
  8667. $74 = HEAP32[3605]|0;
  8668. _rlglInit($73,$74);
  8669. _SetupViewport();
  8670. _rlMatrixMode(5889);
  8671. _rlLoadIdentity();
  8672. $75 = HEAP32[3647]|0;
  8673. $76 = HEAP32[3649]|0;
  8674. $77 = (($75) - ($76))|0;
  8675. $78 = (+($77|0));
  8676. $79 = HEAP32[3648]|0;
  8677. $80 = HEAP32[3650]|0;
  8678. $81 = (($79) - ($80))|0;
  8679. $82 = (+($81|0));
  8680. _rlOrtho(0.0,$78,$82,0.0,0.0,1.0);
  8681. _rlMatrixMode(5888);
  8682. _rlLoadIdentity();
  8683. HEAP8[$3>>0] = -11;
  8684. $83 = ((($3)) + 1|0);
  8685. HEAP8[$83>>0] = -11;
  8686. $84 = ((($3)) + 2|0);
  8687. HEAP8[$84>>0] = -11;
  8688. $85 = ((($3)) + 3|0);
  8689. HEAP8[$85>>0] = -1;
  8690. ;HEAP8[$$byval_copy>>0]=HEAP8[$3>>0]|0;HEAP8[$$byval_copy+1>>0]=HEAP8[$3+1>>0]|0;HEAP8[$$byval_copy+2>>0]=HEAP8[$3+2>>0]|0;HEAP8[$$byval_copy+3>>0]=HEAP8[$3+3>>0]|0;
  8691. _ClearBackground($$byval_copy);
  8692. STACKTOP = sp;return;
  8693. }
  8694. _glfwSwapInterval(1);
  8695. _TraceLog(0,4359,$vararg_buffer22);
  8696. $73 = HEAP32[3606]|0;
  8697. $74 = HEAP32[3605]|0;
  8698. _rlglInit($73,$74);
  8699. _SetupViewport();
  8700. _rlMatrixMode(5889);
  8701. _rlLoadIdentity();
  8702. $75 = HEAP32[3647]|0;
  8703. $76 = HEAP32[3649]|0;
  8704. $77 = (($75) - ($76))|0;
  8705. $78 = (+($77|0));
  8706. $79 = HEAP32[3648]|0;
  8707. $80 = HEAP32[3650]|0;
  8708. $81 = (($79) - ($80))|0;
  8709. $82 = (+($81|0));
  8710. _rlOrtho(0.0,$78,$82,0.0,0.0,1.0);
  8711. _rlMatrixMode(5888);
  8712. _rlLoadIdentity();
  8713. HEAP8[$3>>0] = -11;
  8714. $83 = ((($3)) + 1|0);
  8715. HEAP8[$83>>0] = -11;
  8716. $84 = ((($3)) + 2|0);
  8717. HEAP8[$84>>0] = -11;
  8718. $85 = ((($3)) + 3|0);
  8719. HEAP8[$85>>0] = -1;
  8720. ;HEAP8[$$byval_copy>>0]=HEAP8[$3>>0]|0;HEAP8[$$byval_copy+1>>0]=HEAP8[$3+1>>0]|0;HEAP8[$$byval_copy+2>>0]=HEAP8[$3+2>>0]|0;HEAP8[$$byval_copy+3>>0]=HEAP8[$3+3>>0]|0;
  8721. _ClearBackground($$byval_copy);
  8722. STACKTOP = sp;return;
  8723. }
  8724. function _LoadDefaultFont() {
  8725. var $$ = 0, $$0101 = 0, $$090100 = 0, $$09299 = 0, $$095104 = 0, $$096103 = 0, $$097102 = 0, $$191 = 0, $$193 = 0, $$byval_copy1 = 0, $$lcssa = 0, $$sroa$0$0$$sroa_idx = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0;
  8726. var $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, $30 = 0, $31 = 0, $32 = 0, $33 = 0;
  8727. var $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, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0;
  8728. var $vararg_buffer = 0, label = 0, sp = 0;
  8729. sp = STACKTOP;
  8730. STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
  8731. $$byval_copy1 = sp + 44|0;
  8732. $vararg_buffer = sp;
  8733. $0 = sp + 4|0;
  8734. $1 = sp + 24|0;
  8735. HEAP32[(14480)>>2] = 224;
  8736. $2 = (_malloc(65536)|0);
  8737. _memset(($2|0),0,65536)|0;
  8738. $$095104 = 0;$$096103 = 0;
  8739. while(1) {
  8740. $3 = (20 + ($$095104<<2)|0);
  8741. $4 = HEAP32[$3>>2]|0;
  8742. $$097102 = 31;
  8743. while(1) {
  8744. $16 = 1 << $$097102;
  8745. $17 = $4 & $16;
  8746. $18 = ($17|0)==(0);
  8747. if (!($18)) {
  8748. $19 = (($$097102) + ($$096103))|0;
  8749. $$sroa$0$0$$sroa_idx = (($2) + ($19<<2)|0);
  8750. HEAP8[$$sroa$0$0$$sroa_idx>>0]=-1&255;HEAP8[$$sroa$0$0$$sroa_idx+1>>0]=(-1>>8)&255;HEAP8[$$sroa$0$0$$sroa_idx+2>>0]=(-1>>16)&255;HEAP8[$$sroa$0$0$$sroa_idx+3>>0]=-1>>24;
  8751. }
  8752. $20 = (($$097102) + -1)|0;
  8753. $21 = ($$097102|0)>(0);
  8754. if ($21) {
  8755. $$097102 = $20;
  8756. } else {
  8757. break;
  8758. }
  8759. }
  8760. $12 = (($$095104) + 1)|0;
  8761. $13 = ($$095104|0)>(511);
  8762. $$ = $13 ? 0 : $12;
  8763. $14 = (($$096103) + 32)|0;
  8764. $15 = ($14|0)<(16384);
  8765. if ($15) {
  8766. $$095104 = $$;$$096103 = $14;
  8767. } else {
  8768. break;
  8769. }
  8770. }
  8771. _LoadImageEx($0,$2,128,128);
  8772. _ImageFormat($0,2);
  8773. _free($2);
  8774. ;HEAP32[$$byval_copy1>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy1+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy1+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy1+16>>2]=HEAP32[$0+16>>2]|0;
  8775. _LoadTextureFromImage($1,$$byval_copy1);
  8776. ;HEAP32[14456>>2]=HEAP32[$1>>2]|0;HEAP32[14456+4>>2]=HEAP32[$1+4>>2]|0;HEAP32[14456+8>>2]=HEAP32[$1+8>>2]|0;HEAP32[14456+12>>2]=HEAP32[$1+12>>2]|0;HEAP32[14456+16>>2]=HEAP32[$1+16>>2]|0;
  8777. ;HEAP32[$$byval_copy1>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy1+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy1+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy1+16>>2]=HEAP32[$0+16>>2]|0;
  8778. _UnloadImage($$byval_copy1);
  8779. $5 = HEAP32[(14480)>>2]|0;
  8780. $6 = $5 << 5;
  8781. $7 = (_malloc($6)|0);
  8782. HEAP32[(14484)>>2] = $7;
  8783. $8 = ($5|0)>(0);
  8784. if (!($8)) {
  8785. $$lcssa = $7;
  8786. $22 = ((($$lcssa)) + 16|0);
  8787. $23 = HEAP32[$22>>2]|0;
  8788. HEAP32[(14476)>>2] = $23;
  8789. $24 = HEAP32[3614]|0;
  8790. HEAP32[$vararg_buffer>>2] = $24;
  8791. _TraceLog(0,3654,$vararg_buffer);
  8792. STACKTOP = sp;return;
  8793. }
  8794. $9 = HEAP32[(14460)>>2]|0;
  8795. $10 = HEAP32[(14480)>>2]|0;
  8796. $11 = HEAP32[(14484)>>2]|0;
  8797. $$0101 = 0;$$090100 = 1;$$09299 = 0;$27 = $7;
  8798. while(1) {
  8799. $25 = (($$0101) + 32)|0;
  8800. $26 = (($27) + ($$0101<<5)|0);
  8801. HEAP32[$26>>2] = $25;
  8802. $28 = (((($27) + ($$0101<<5)|0)) + 4|0);
  8803. HEAP32[$28>>2] = $$090100;
  8804. $29 = ($$09299*11)|0;
  8805. $30 = (($29) + 1)|0;
  8806. $31 = (((($27) + ($$0101<<5)|0)) + 8|0);
  8807. HEAP32[$31>>2] = $30;
  8808. $32 = (2068 + ($$0101<<2)|0);
  8809. $33 = HEAP32[$32>>2]|0;
  8810. $34 = (((($27) + ($$0101<<5)|0)) + 12|0);
  8811. HEAP32[$34>>2] = $33;
  8812. $35 = (((($27) + ($$0101<<5)|0)) + 16|0);
  8813. HEAP32[$35>>2] = 10;
  8814. $36 = (($$090100) + 1)|0;
  8815. $37 = (($36) + ($33))|0;
  8816. $38 = ($37|0)<($9|0);
  8817. $39 = (($$09299) + 1)|0;
  8818. if ($38) {
  8819. $$191 = $37;$$193 = $$09299;
  8820. } else {
  8821. $40 = ($39*11)|0;
  8822. $41 = (($40) + 1)|0;
  8823. $42 = (($33) + 2)|0;
  8824. HEAP32[$28>>2] = 1;
  8825. HEAP32[$31>>2] = $41;
  8826. $$191 = $42;$$193 = $39;
  8827. }
  8828. $43 = (((($27) + ($$0101<<5)|0)) + 20|0);
  8829. HEAP32[$43>>2] = 0;
  8830. $44 = (((($27) + ($$0101<<5)|0)) + 24|0);
  8831. HEAP32[$44>>2] = 0;
  8832. $45 = (((($27) + ($$0101<<5)|0)) + 28|0);
  8833. HEAP32[$45>>2] = 0;
  8834. $46 = (($$0101) + 1)|0;
  8835. $47 = ($46|0)<($10|0);
  8836. if ($47) {
  8837. $$0101 = $46;$$090100 = $$191;$$09299 = $$193;$27 = $11;
  8838. } else {
  8839. $$lcssa = $11;
  8840. break;
  8841. }
  8842. }
  8843. $22 = ((($$lcssa)) + 16|0);
  8844. $23 = HEAP32[$22>>2]|0;
  8845. HEAP32[(14476)>>2] = $23;
  8846. $24 = HEAP32[3614]|0;
  8847. HEAP32[$vararg_buffer>>2] = $24;
  8848. _TraceLog(0,3654,$vararg_buffer);
  8849. STACKTOP = sp;return;
  8850. }
  8851. function _InitTimer() {
  8852. var $0 = 0, $1 = 0.0, label = 0, sp = 0;
  8853. sp = STACKTOP;
  8854. $0 = (_time((0|0))|0);
  8855. _srand($0);
  8856. $1 = (+_GetTime());
  8857. HEAPF64[1771] = $1;
  8858. return;
  8859. }
  8860. function _EmscriptenFullscreenChangeCallback($0,$1,$2) {
  8861. $0 = $0|0;
  8862. $1 = $1|0;
  8863. $2 = $2|0;
  8864. var $10 = 0, $11 = 0, $12 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer4 = 0, $vararg_ptr1 = 0, $vararg_ptr2 = 0, $vararg_ptr3 = 0, $vararg_ptr7 = 0, $vararg_ptr8 = 0, $vararg_ptr9 = 0, label = 0, sp = 0;
  8865. sp = STACKTOP;
  8866. STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
  8867. $vararg_buffer4 = sp + 16|0;
  8868. $vararg_buffer = sp;
  8869. $3 = HEAP32[$1>>2]|0;
  8870. $4 = ($3|0)==(0);
  8871. $5 = ((($1)) + 264|0);
  8872. $6 = HEAP32[$5>>2]|0;
  8873. $7 = ((($1)) + 268|0);
  8874. $8 = HEAP32[$7>>2]|0;
  8875. $9 = ((($1)) + 272|0);
  8876. $10 = HEAP32[$9>>2]|0;
  8877. $11 = ((($1)) + 276|0);
  8878. $12 = HEAP32[$11>>2]|0;
  8879. if ($4) {
  8880. HEAP32[$vararg_buffer4>>2] = $6;
  8881. $vararg_ptr7 = ((($vararg_buffer4)) + 4|0);
  8882. HEAP32[$vararg_ptr7>>2] = $8;
  8883. $vararg_ptr8 = ((($vararg_buffer4)) + 8|0);
  8884. HEAP32[$vararg_ptr8>>2] = $10;
  8885. $vararg_ptr9 = ((($vararg_buffer4)) + 12|0);
  8886. HEAP32[$vararg_ptr9>>2] = $12;
  8887. _TraceLog(0,3587,$vararg_buffer4);
  8888. STACKTOP = sp;return 0;
  8889. } else {
  8890. HEAP32[$vararg_buffer>>2] = $6;
  8891. $vararg_ptr1 = ((($vararg_buffer)) + 4|0);
  8892. HEAP32[$vararg_ptr1>>2] = $8;
  8893. $vararg_ptr2 = ((($vararg_buffer)) + 8|0);
  8894. HEAP32[$vararg_ptr2>>2] = $10;
  8895. $vararg_ptr3 = ((($vararg_buffer)) + 12|0);
  8896. HEAP32[$vararg_ptr3>>2] = $12;
  8897. _TraceLog(0,3518,$vararg_buffer);
  8898. STACKTOP = sp;return 0;
  8899. }
  8900. return (0)|0;
  8901. }
  8902. function _EmscriptenKeyboardCallback($0,$1,$2) {
  8903. $0 = $0|0;
  8904. $1 = $1|0;
  8905. $2 = $2|0;
  8906. var $3 = 0, $4 = 0, $5 = 0, $6 = 0, label = 0, sp = 0;
  8907. sp = STACKTOP;
  8908. $3 = ($0|0)==(1);
  8909. if (!($3)) {
  8910. return 0;
  8911. }
  8912. $4 = ((($1)) + 32|0);
  8913. $5 = (_strcmp($4,3511)|0);
  8914. $6 = ($5|0)==(0);
  8915. if (!($6)) {
  8916. return 0;
  8917. }
  8918. (_emscripten_exit_pointerlock()|0);
  8919. return 0;
  8920. }
  8921. function _EmscriptenMouseCallback($0,$1,$2) {
  8922. $0 = $0|0;
  8923. $1 = $1|0;
  8924. $2 = $2|0;
  8925. var $3 = 0, $4 = 0, $5 = 0, $6 = 0, label = 0, sp = 0;
  8926. sp = STACKTOP;
  8927. STACKTOP = STACKTOP + 272|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(272|0);
  8928. $3 = sp;
  8929. $4 = ($0|0)==(4);
  8930. if (!($4)) {
  8931. STACKTOP = sp;return 0;
  8932. }
  8933. (_emscripten_get_pointerlock_status(($3|0))|0);
  8934. $5 = HEAP32[$3>>2]|0;
  8935. $6 = ($5|0)==(0);
  8936. if ($6) {
  8937. (_emscripten_request_pointerlock((0|0),1)|0);
  8938. } else {
  8939. (_emscripten_exit_pointerlock()|0);
  8940. (_emscripten_get_pointerlock_status(($3|0))|0);
  8941. }
  8942. STACKTOP = sp;return 0;
  8943. }
  8944. function _EmscriptenTouchCallback($0,$1,$2) {
  8945. $0 = $0|0;
  8946. $1 = $1|0;
  8947. $2 = $2|0;
  8948. var $$byval_copy = 0, $$sink = 0, $$sroa$0$0$$sroa_idx = 0, $$sroa$03$0$$sroa_idx = 0, $$sroa$2$0$$sroa_idx2 = 0, $$sroa$24$0$$sroa_idx5 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0.0, $15 = 0, $16 = 0, $17 = 0.0, $18 = 0, $19 = 0, $20 = 0.0, $21 = 0, $22 = 0, $23 = 0.0;
  8949. var $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, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0;
  8950. var $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0.0, $48 = 0.0, $49 = 0.0, $5 = 0, $50 = 0, $51 = 0.0, $52 = 0.0, $53 = 0.0, $54 = 0, $55 = 0.0, $56 = 0.0, $57 = 0.0, $58 = 0, $59 = 0.0, $6 = 0;
  8951. var $60 = 0.0, $61 = 0.0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  8952. sp = STACKTOP;
  8953. STACKTOP = STACKTOP + 112|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(112|0);
  8954. $$byval_copy = sp + 56|0;
  8955. $3 = sp;
  8956. switch ($0|0) {
  8957. case 22: {
  8958. $$sink = 1;
  8959. label = 4;
  8960. break;
  8961. }
  8962. case 23: {
  8963. $$sink = 0;
  8964. label = 4;
  8965. break;
  8966. }
  8967. case 24: {
  8968. $$sink = 2;
  8969. label = 4;
  8970. break;
  8971. }
  8972. default: {
  8973. }
  8974. }
  8975. if ((label|0) == 4) {
  8976. HEAP32[$3>>2] = $$sink;
  8977. }
  8978. $4 = HEAP32[$1>>2]|0;
  8979. $5 = ((($3)) + 4|0);
  8980. HEAP32[$5>>2] = $4;
  8981. $6 = ((($1)) + 20|0);
  8982. $7 = HEAP32[$6>>2]|0;
  8983. $8 = ((($3)) + 8|0);
  8984. HEAP32[$8>>2] = $7;
  8985. $9 = ((($1)) + 72|0);
  8986. $10 = HEAP32[$9>>2]|0;
  8987. $11 = ((($3)) + 12|0);
  8988. HEAP32[$11>>2] = $10;
  8989. $12 = ((($1)) + 56|0);
  8990. $13 = HEAP32[$12>>2]|0;
  8991. $14 = (+($13|0));
  8992. $15 = ((($1)) + 60|0);
  8993. $16 = HEAP32[$15>>2]|0;
  8994. $17 = (+($16|0));
  8995. $$sroa$03$0$$sroa_idx = ((($3)) + 24|0);
  8996. HEAPF32[$$sroa$03$0$$sroa_idx>>2] = $14;
  8997. $$sroa$24$0$$sroa_idx5 = ((($3)) + 28|0);
  8998. HEAPF32[$$sroa$24$0$$sroa_idx5>>2] = $17;
  8999. $18 = ((($1)) + 108|0);
  9000. $19 = HEAP32[$18>>2]|0;
  9001. $20 = (+($19|0));
  9002. $21 = ((($1)) + 112|0);
  9003. $22 = HEAP32[$21>>2]|0;
  9004. $23 = (+($22|0));
  9005. $$sroa$0$0$$sroa_idx = ((($3)) + 32|0);
  9006. HEAPF32[$$sroa$0$0$$sroa_idx>>2] = $20;
  9007. $$sroa$2$0$$sroa_idx2 = ((($3)) + 36|0);
  9008. HEAPF32[$$sroa$2$0$$sroa_idx2>>2] = $23;
  9009. $24 = ((($3)) + 24|0);
  9010. $25 = $24;
  9011. $26 = $25;
  9012. $27 = HEAP32[$26>>2]|0;
  9013. $28 = (($25) + 4)|0;
  9014. $29 = $28;
  9015. $30 = HEAP32[$29>>2]|0;
  9016. $31 = 14152;
  9017. $32 = $31;
  9018. HEAP32[$32>>2] = $27;
  9019. $33 = (($31) + 4)|0;
  9020. $34 = $33;
  9021. HEAP32[$34>>2] = $30;
  9022. $35 = ((($3)) + 32|0);
  9023. $36 = $35;
  9024. $37 = $36;
  9025. $38 = HEAP32[$37>>2]|0;
  9026. $39 = (($36) + 4)|0;
  9027. $40 = $39;
  9028. $41 = HEAP32[$40>>2]|0;
  9029. $42 = (14160);
  9030. $43 = $42;
  9031. HEAP32[$43>>2] = $38;
  9032. $44 = (($42) + 4)|0;
  9033. $45 = $44;
  9034. HEAP32[$45>>2] = $41;
  9035. $46 = (_GetScreenWidth()|0);
  9036. $47 = (+($46|0));
  9037. $48 = +HEAPF32[$24>>2];
  9038. $49 = $48 / $47;
  9039. HEAPF32[$24>>2] = $49;
  9040. $50 = (_GetScreenHeight()|0);
  9041. $51 = (+($50|0));
  9042. $52 = +HEAPF32[$$sroa$24$0$$sroa_idx5>>2];
  9043. $53 = $52 / $51;
  9044. HEAPF32[$$sroa$24$0$$sroa_idx5>>2] = $53;
  9045. $54 = (_GetScreenWidth()|0);
  9046. $55 = (+($54|0));
  9047. $56 = +HEAPF32[$35>>2];
  9048. $57 = $56 / $55;
  9049. HEAPF32[$35>>2] = $57;
  9050. $58 = (_GetScreenHeight()|0);
  9051. $59 = (+($58|0));
  9052. $60 = +HEAPF32[$$sroa$2$0$$sroa_idx2>>2];
  9053. $61 = $60 / $59;
  9054. HEAPF32[$$sroa$2$0$$sroa_idx2>>2] = $61;
  9055. dest=$$byval_copy; src=$3; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  9056. _ProcessGestureEvent($$byval_copy);
  9057. STACKTOP = sp;return 1;
  9058. }
  9059. function _EmscriptenGamepadCallback($0,$1,$2) {
  9060. $0 = $0|0;
  9061. $1 = $1|0;
  9062. $2 = $2|0;
  9063. var $$sink = 0, $10 = 0, $11 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  9064. sp = STACKTOP;
  9065. $3 = ((($1)) + 1296|0);
  9066. $4 = HEAP32[$3>>2]|0;
  9067. $5 = ($4|0)==(0);
  9068. if ($5) {
  9069. label = 3;
  9070. } else {
  9071. $6 = ((($1)) + 1300|0);
  9072. $7 = HEAP32[$6>>2]|0;
  9073. $8 = ($7|0)<(4);
  9074. if ($8) {
  9075. $$sink = 1;
  9076. } else {
  9077. label = 3;
  9078. }
  9079. }
  9080. if ((label|0) == 3) {
  9081. $$sink = 0;
  9082. }
  9083. $9 = ((($1)) + 1300|0);
  9084. $10 = HEAP32[$9>>2]|0;
  9085. $11 = (14440 + ($10<<2)|0);
  9086. HEAP32[$11>>2] = $$sink;
  9087. return 0;
  9088. }
  9089. function _SetTargetFPS($0) {
  9090. $0 = $0|0;
  9091. var $$ = 0.0, $$op = 0.0, $1 = 0, $2 = 0.0, $3 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $vararg_buffer = 0, label = 0, sp = 0;
  9092. sp = STACKTOP;
  9093. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  9094. $vararg_buffer = sp;
  9095. $1 = ($0|0)<(1);
  9096. $2 = (+($0|0));
  9097. $3 = 1.0 / $2;
  9098. $$ = $1 ? 0.0 : $3;
  9099. HEAPF64[1768] = $$;
  9100. $4 = $3;
  9101. $$op = $4 * 1000.0;
  9102. $5 = $$op;
  9103. $6 = $1 ? 0.0 : $5;
  9104. HEAPF64[$vararg_buffer>>3] = $6;
  9105. _TraceLog(0,3467,$vararg_buffer);
  9106. STACKTOP = sp;return;
  9107. }
  9108. function _LogoAnimation() {
  9109. var label = 0, sp = 0;
  9110. sp = STACKTOP;
  9111. HEAP32[3609] = 0;
  9112. return;
  9113. }
  9114. function _GetTime() {
  9115. var $0 = 0.0, label = 0, sp = 0;
  9116. sp = STACKTOP;
  9117. $0 = (+_glfwGetTime());
  9118. return (+$0);
  9119. }
  9120. function _LoadImageEx($0,$1,$2,$3) {
  9121. $0 = $0|0;
  9122. $1 = $1|0;
  9123. $2 = $2|0;
  9124. $3 = $3|0;
  9125. var $$03334 = 0, $$035 = 0, $$sroa$12$0$$sroa_idx21 = 0, $$sroa$15$0$$sroa_idx24 = 0, $$sroa$16$0$$sroa_idx26 = 0, $$sroa$9$0$$sroa_idx18 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0;
  9126. var $24 = 0, $25 = 0, $26 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, label = 0, sp = 0;
  9127. sp = STACKTOP;
  9128. $4 = $2 << 2;
  9129. $5 = Math_imul($4, $3)|0;
  9130. $6 = (_malloc($5)|0);
  9131. $7 = ($5|0)>(0);
  9132. if ($7) {
  9133. $8 = (($5) + -1)|0;
  9134. $9 = $8 >>> 2;
  9135. $$03334 = 0;$$035 = 0;
  9136. while(1) {
  9137. $10 = (($1) + ($$03334<<2)|0);
  9138. $11 = HEAP8[$10>>0]|0;
  9139. $12 = (($6) + ($$035)|0);
  9140. HEAP8[$12>>0] = $11;
  9141. $13 = (((($1) + ($$03334<<2)|0)) + 1|0);
  9142. $14 = HEAP8[$13>>0]|0;
  9143. $15 = $$035 | 1;
  9144. $16 = (($6) + ($15)|0);
  9145. HEAP8[$16>>0] = $14;
  9146. $17 = (((($1) + ($$03334<<2)|0)) + 2|0);
  9147. $18 = HEAP8[$17>>0]|0;
  9148. $19 = $$035 | 2;
  9149. $20 = (($6) + ($19)|0);
  9150. HEAP8[$20>>0] = $18;
  9151. $21 = (((($1) + ($$03334<<2)|0)) + 3|0);
  9152. $22 = HEAP8[$21>>0]|0;
  9153. $23 = $$035 | 3;
  9154. $24 = (($6) + ($23)|0);
  9155. HEAP8[$24>>0] = $22;
  9156. $25 = (($$03334) + 1)|0;
  9157. $26 = (($$035) + 4)|0;
  9158. $exitcond = ($$03334|0)==($9|0);
  9159. if ($exitcond) {
  9160. break;
  9161. } else {
  9162. $$03334 = $25;$$035 = $26;
  9163. }
  9164. }
  9165. }
  9166. HEAP32[$0>>2] = $6;
  9167. $$sroa$9$0$$sroa_idx18 = ((($0)) + 4|0);
  9168. HEAP32[$$sroa$9$0$$sroa_idx18>>2] = $2;
  9169. $$sroa$12$0$$sroa_idx21 = ((($0)) + 8|0);
  9170. HEAP32[$$sroa$12$0$$sroa_idx21>>2] = $3;
  9171. $$sroa$15$0$$sroa_idx24 = ((($0)) + 12|0);
  9172. HEAP32[$$sroa$15$0$$sroa_idx24>>2] = 1;
  9173. $$sroa$16$0$$sroa_idx26 = ((($0)) + 16|0);
  9174. HEAP32[$$sroa$16$0$$sroa_idx26>>2] = 7;
  9175. return;
  9176. }
  9177. function _ImageFormat($0,$1) {
  9178. $0 = $0|0;
  9179. $1 = $1|0;
  9180. var $$0166199 = 0, $$0167197 = 0, $$0168195 = 0, $$0169192 = 0, $$0170190 = 0, $$0171188 = 0, $$0172189 = 0, $$0202 = 0, $$1194 = 0, $$2201 = 0, $$byval_copy = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0.0, $103 = 0.0, $104 = 0.0, $105 = 0, $106 = 0, $107 = 0;
  9181. var $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, $124 = 0, $125 = 0;
  9182. var $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, $142 = 0, $143 = 0;
  9183. var $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, $160 = 0, $161 = 0;
  9184. var $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0.0, $17 = 0, $170 = 0.0, $171 = 0.0, $172 = 0, $173 = 0, $174 = 0, $175 = 0.0, $176 = 0.0, $177 = 0.0, $178 = 0, $179 = 0, $18 = 0;
  9185. var $180 = 0, $181 = 0.0, $182 = 0.0, $183 = 0.0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0.0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0;
  9186. var $199 = 0, $2 = 0, $20 = 0.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;
  9187. var $216 = 0, $217 = 0, $218 = 0.0, $219 = 0.0, $22 = 0, $220 = 0.0, $221 = 0, $222 = 0, $223 = 0, $224 = 0.0, $225 = 0.0, $226 = 0.0, $227 = 0, $228 = 0, $229 = 0, $23 = 0.0, $230 = 0.0, $231 = 0.0, $232 = 0.0, $233 = 0;
  9188. var $234 = 0, $235 = 0, $236 = 0.0, $237 = 0.0, $238 = 0.0, $239 = 0, $24 = 0.0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0.0, $250 = 0, $251 = 0;
  9189. var $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, $269 = 0, $27 = 0;
  9190. var $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0.0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0;
  9191. var $289 = 0, $29 = 0.0, $290 = 0, $3 = 0, $30 = 0.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;
  9192. var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0.0, $53 = 0.0, $54 = 0, $55 = 0, $56 = 0.0, $57 = 0.0, $58 = 0.0, $59 = 0, $6 = 0, $60 = 0, $61 = 0.0, $62 = 0.0;
  9193. var $63 = 0.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, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0;
  9194. var $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0.0, $91 = 0.0, $92 = 0.0, $93 = 0, $94 = 0, $95 = 0, $96 = 0.0, $97 = 0.0, $98 = 0.0, $99 = 0;
  9195. var $or$cond = 0, $roundf = 0.0, $roundf173 = 0.0, $roundf174 = 0.0, $roundf175 = 0.0, $roundf176 = 0.0, $roundf177 = 0.0, $roundf178 = 0.0, $roundf179 = 0.0, $roundf180 = 0.0, $roundf181 = 0.0, $vararg_buffer = 0, label = 0, sp = 0;
  9196. sp = STACKTOP;
  9197. STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
  9198. $$byval_copy = sp + 4|0;
  9199. $vararg_buffer = sp;
  9200. $2 = ((($0)) + 16|0);
  9201. $3 = HEAP32[$2>>2]|0;
  9202. $4 = ($3|0)==($1|0);
  9203. if ($4) {
  9204. STACKTOP = sp;return;
  9205. }
  9206. $5 = ($3|0)<(8);
  9207. $6 = ($1|0)<(8);
  9208. $or$cond = $6 & $5;
  9209. if (!($or$cond)) {
  9210. _TraceLog(2,4030,$vararg_buffer);
  9211. STACKTOP = sp;return;
  9212. }
  9213. ;HEAP32[$$byval_copy>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[$0+16>>2]|0;
  9214. $7 = (_GetImageData($$byval_copy)|0);
  9215. $8 = HEAP32[$0>>2]|0;
  9216. _free($8);
  9217. HEAP32[$2>>2] = $1;
  9218. switch ($1|0) {
  9219. case 1: {
  9220. $9 = ((($0)) + 4|0);
  9221. $10 = HEAP32[$9>>2]|0;
  9222. $11 = ((($0)) + 8|0);
  9223. $12 = HEAP32[$11>>2]|0;
  9224. $13 = Math_imul($12, $10)|0;
  9225. $14 = (_malloc($13)|0);
  9226. HEAP32[$0>>2] = $14;
  9227. $15 = Math_imul($12, $10)|0;
  9228. $16 = ($15|0)>(0);
  9229. if ($16) {
  9230. $$0171188 = 0;
  9231. while(1) {
  9232. $17 = (($7) + ($$0171188<<2)|0);
  9233. $18 = HEAP8[$17>>0]|0;
  9234. $19 = (+($18&255));
  9235. $20 = $19 * 0.29899999499320984;
  9236. $21 = (((($7) + ($$0171188<<2)|0)) + 1|0);
  9237. $22 = HEAP8[$21>>0]|0;
  9238. $23 = (+($22&255));
  9239. $24 = $23 * 0.58700001239776611;
  9240. $25 = $20 + $24;
  9241. $26 = (((($7) + ($$0171188<<2)|0)) + 2|0);
  9242. $27 = HEAP8[$26>>0]|0;
  9243. $28 = (+($27&255));
  9244. $29 = $28 * 0.11400000005960464;
  9245. $30 = $25 + $29;
  9246. $31 = (~~(($30))&255);
  9247. $32 = HEAP32[$0>>2]|0;
  9248. $33 = (($32) + ($$0171188)|0);
  9249. HEAP8[$33>>0] = $31;
  9250. $34 = (($$0171188) + 1)|0;
  9251. $35 = HEAP32[$9>>2]|0;
  9252. $36 = HEAP32[$11>>2]|0;
  9253. $37 = Math_imul($36, $35)|0;
  9254. $38 = ($34|0)<($37|0);
  9255. if ($38) {
  9256. $$0171188 = $34;
  9257. } else {
  9258. break;
  9259. }
  9260. }
  9261. }
  9262. break;
  9263. }
  9264. case 2: {
  9265. $39 = ((($0)) + 4|0);
  9266. $40 = HEAP32[$39>>2]|0;
  9267. $41 = ((($0)) + 8|0);
  9268. $42 = HEAP32[$41>>2]|0;
  9269. $43 = $40 << 1;
  9270. $44 = Math_imul($43, $42)|0;
  9271. $45 = (_malloc($44)|0);
  9272. HEAP32[$0>>2] = $45;
  9273. $46 = HEAP32[$39>>2]|0;
  9274. $47 = $46 << 1;
  9275. $48 = Math_imul($47, $42)|0;
  9276. $49 = ($48|0)>(0);
  9277. if ($49) {
  9278. $$0170190 = 0;$$0172189 = 0;
  9279. while(1) {
  9280. $50 = (($7) + ($$0172189<<2)|0);
  9281. $51 = HEAP8[$50>>0]|0;
  9282. $52 = (+($51&255));
  9283. $53 = $52 * 0.29899999499320984;
  9284. $54 = (((($7) + ($$0172189<<2)|0)) + 1|0);
  9285. $55 = HEAP8[$54>>0]|0;
  9286. $56 = (+($55&255));
  9287. $57 = $56 * 0.58700001239776611;
  9288. $58 = $53 + $57;
  9289. $59 = (((($7) + ($$0172189<<2)|0)) + 2|0);
  9290. $60 = HEAP8[$59>>0]|0;
  9291. $61 = (+($60&255));
  9292. $62 = $61 * 0.11400000005960464;
  9293. $63 = $58 + $62;
  9294. $64 = (~~(($63))&255);
  9295. $65 = HEAP32[$0>>2]|0;
  9296. $66 = (($65) + ($$0170190)|0);
  9297. HEAP8[$66>>0] = $64;
  9298. $67 = (((($7) + ($$0172189<<2)|0)) + 3|0);
  9299. $68 = HEAP8[$67>>0]|0;
  9300. $69 = HEAP32[$0>>2]|0;
  9301. $70 = $$0170190 | 1;
  9302. $71 = (($69) + ($70)|0);
  9303. HEAP8[$71>>0] = $68;
  9304. $72 = (($$0172189) + 1)|0;
  9305. $73 = (($$0170190) + 2)|0;
  9306. $74 = HEAP32[$39>>2]|0;
  9307. $75 = HEAP32[$41>>2]|0;
  9308. $76 = $74 << 1;
  9309. $77 = Math_imul($76, $75)|0;
  9310. $78 = ($73|0)<($77|0);
  9311. if ($78) {
  9312. $$0170190 = $73;$$0172189 = $72;
  9313. } else {
  9314. break;
  9315. }
  9316. }
  9317. }
  9318. break;
  9319. }
  9320. case 3: {
  9321. $79 = ((($0)) + 4|0);
  9322. $80 = HEAP32[$79>>2]|0;
  9323. $81 = ((($0)) + 8|0);
  9324. $82 = HEAP32[$81>>2]|0;
  9325. $83 = $80 << 1;
  9326. $84 = Math_imul($83, $82)|0;
  9327. $85 = (_malloc($84)|0);
  9328. HEAP32[$0>>2] = $85;
  9329. $86 = HEAP32[$79>>2]|0;
  9330. $87 = Math_imul($82, $86)|0;
  9331. $88 = ($87|0)>(0);
  9332. if ($88) {
  9333. $89 = HEAP8[$7>>0]|0;
  9334. $90 = (+($89&255));
  9335. $91 = $90 * 31.0;
  9336. $92 = $91 / 255.0;
  9337. $roundf179 = (+_roundf((+$92)));
  9338. $93 = (~~(($roundf179))&255);
  9339. $94 = ((($7)) + 1|0);
  9340. $95 = HEAP8[$94>>0]|0;
  9341. $96 = (+($95&255));
  9342. $97 = $96 * 63.0;
  9343. $98 = $97 / 255.0;
  9344. $roundf180 = (+_roundf((+$98)));
  9345. $99 = (~~(($roundf180))&255);
  9346. $100 = ((($7)) + 2|0);
  9347. $101 = HEAP8[$100>>0]|0;
  9348. $102 = (+($101&255));
  9349. $103 = $102 * 31.0;
  9350. $104 = $103 / 255.0;
  9351. $roundf181 = (+_roundf((+$104)));
  9352. $105 = (~~(($roundf181))&255);
  9353. $106 = $93&255;
  9354. $107 = $106 << 11;
  9355. $108 = $99&255;
  9356. $109 = $108 << 5;
  9357. $110 = $109 | $107;
  9358. $111 = $105&255;
  9359. $112 = $110 | $111;
  9360. $113 = $112&65535;
  9361. $114 = HEAP32[$0>>2]|0;
  9362. $115 = HEAP32[$79>>2]|0;
  9363. $116 = HEAP32[$81>>2]|0;
  9364. $117 = Math_imul($116, $115)|0;
  9365. $$0169192 = 0;
  9366. while(1) {
  9367. $118 = (($114) + ($$0169192<<1)|0);
  9368. HEAP16[$118>>1] = $113;
  9369. $119 = (($$0169192) + 1)|0;
  9370. $120 = ($119|0)<($117|0);
  9371. if ($120) {
  9372. $$0169192 = $119;
  9373. } else {
  9374. break;
  9375. }
  9376. }
  9377. }
  9378. break;
  9379. }
  9380. case 4: {
  9381. $121 = ((($0)) + 4|0);
  9382. $122 = HEAP32[$121>>2]|0;
  9383. $123 = ((($0)) + 8|0);
  9384. $124 = HEAP32[$123>>2]|0;
  9385. $125 = ($122*3)|0;
  9386. $126 = Math_imul($125, $124)|0;
  9387. $127 = (_malloc($126)|0);
  9388. HEAP32[$0>>2] = $127;
  9389. $128 = HEAP32[$121>>2]|0;
  9390. $129 = ($128*3)|0;
  9391. $130 = Math_imul($129, $124)|0;
  9392. $131 = ($130|0)>(0);
  9393. if ($131) {
  9394. $$0168195 = 0;$$1194 = 0;
  9395. while(1) {
  9396. $132 = (($7) + ($$1194<<2)|0);
  9397. $133 = HEAP8[$132>>0]|0;
  9398. $134 = HEAP32[$0>>2]|0;
  9399. $135 = (($134) + ($$0168195)|0);
  9400. HEAP8[$135>>0] = $133;
  9401. $136 = (((($7) + ($$1194<<2)|0)) + 1|0);
  9402. $137 = HEAP8[$136>>0]|0;
  9403. $138 = HEAP32[$0>>2]|0;
  9404. $139 = (($$0168195) + 1)|0;
  9405. $140 = (($138) + ($139)|0);
  9406. HEAP8[$140>>0] = $137;
  9407. $141 = (((($7) + ($$1194<<2)|0)) + 2|0);
  9408. $142 = HEAP8[$141>>0]|0;
  9409. $143 = HEAP32[$0>>2]|0;
  9410. $144 = (($$0168195) + 2)|0;
  9411. $145 = (($143) + ($144)|0);
  9412. HEAP8[$145>>0] = $142;
  9413. $146 = (($$1194) + 1)|0;
  9414. $147 = (($$0168195) + 3)|0;
  9415. $148 = HEAP32[$121>>2]|0;
  9416. $149 = HEAP32[$123>>2]|0;
  9417. $150 = ($148*3)|0;
  9418. $151 = Math_imul($150, $149)|0;
  9419. $152 = ($147|0)<($151|0);
  9420. if ($152) {
  9421. $$0168195 = $147;$$1194 = $146;
  9422. } else {
  9423. break;
  9424. }
  9425. }
  9426. }
  9427. break;
  9428. }
  9429. case 5: {
  9430. $153 = ((($0)) + 4|0);
  9431. $154 = HEAP32[$153>>2]|0;
  9432. $155 = ((($0)) + 8|0);
  9433. $156 = HEAP32[$155>>2]|0;
  9434. $157 = $154 << 1;
  9435. $158 = Math_imul($157, $156)|0;
  9436. $159 = (_malloc($158)|0);
  9437. HEAP32[$0>>2] = $159;
  9438. $160 = HEAP32[$153>>2]|0;
  9439. $161 = Math_imul($156, $160)|0;
  9440. $162 = ($161|0)>(0);
  9441. if ($162) {
  9442. $163 = HEAP32[$0>>2]|0;
  9443. $164 = HEAP32[$153>>2]|0;
  9444. $165 = HEAP32[$155>>2]|0;
  9445. $166 = Math_imul($165, $164)|0;
  9446. $$0167197 = 0;
  9447. while(1) {
  9448. $167 = (($7) + ($$0167197<<2)|0);
  9449. $168 = HEAP8[$167>>0]|0;
  9450. $169 = (+($168&255));
  9451. $170 = $169 * 31.0;
  9452. $171 = $170 / 255.0;
  9453. $roundf176 = (+_roundf((+$171)));
  9454. $172 = (~~(($roundf176))&255);
  9455. $173 = (((($7) + ($$0167197<<2)|0)) + 1|0);
  9456. $174 = HEAP8[$173>>0]|0;
  9457. $175 = (+($174&255));
  9458. $176 = $175 * 31.0;
  9459. $177 = $176 / 255.0;
  9460. $roundf177 = (+_roundf((+$177)));
  9461. $178 = (~~(($roundf177))&255);
  9462. $179 = (((($7) + ($$0167197<<2)|0)) + 2|0);
  9463. $180 = HEAP8[$179>>0]|0;
  9464. $181 = (+($180&255));
  9465. $182 = $181 * 31.0;
  9466. $183 = $182 / 255.0;
  9467. $roundf178 = (+_roundf((+$183)));
  9468. $184 = (~~(($roundf178))&255);
  9469. $185 = (((($7) + ($$0167197<<2)|0)) + 3|0);
  9470. $186 = HEAP8[$185>>0]|0;
  9471. $187 = ($186&255)>(50);
  9472. $188 = $172&255;
  9473. $189 = $188 << 11;
  9474. $190 = $178&255;
  9475. $191 = $190 << 6;
  9476. $192 = $191 | $189;
  9477. $193 = $184&255;
  9478. $194 = $193 << 1;
  9479. $195 = $192 | $194;
  9480. $196 = $187&1;
  9481. $197 = $195 | $196;
  9482. $198 = $197&65535;
  9483. $199 = (($163) + ($$0167197<<1)|0);
  9484. HEAP16[$199>>1] = $198;
  9485. $200 = (($$0167197) + 1)|0;
  9486. $201 = ($200|0)<($166|0);
  9487. if ($201) {
  9488. $$0167197 = $200;
  9489. } else {
  9490. break;
  9491. }
  9492. }
  9493. }
  9494. break;
  9495. }
  9496. case 6: {
  9497. $202 = ((($0)) + 4|0);
  9498. $203 = HEAP32[$202>>2]|0;
  9499. $204 = ((($0)) + 8|0);
  9500. $205 = HEAP32[$204>>2]|0;
  9501. $206 = $203 << 1;
  9502. $207 = Math_imul($206, $205)|0;
  9503. $208 = (_malloc($207)|0);
  9504. HEAP32[$0>>2] = $208;
  9505. $209 = HEAP32[$202>>2]|0;
  9506. $210 = Math_imul($205, $209)|0;
  9507. $211 = ($210|0)>(0);
  9508. if ($211) {
  9509. $212 = HEAP32[$0>>2]|0;
  9510. $213 = HEAP32[$202>>2]|0;
  9511. $214 = HEAP32[$204>>2]|0;
  9512. $215 = Math_imul($214, $213)|0;
  9513. $$0166199 = 0;
  9514. while(1) {
  9515. $216 = (($7) + ($$0166199<<2)|0);
  9516. $217 = HEAP8[$216>>0]|0;
  9517. $218 = (+($217&255));
  9518. $219 = $218 * 15.0;
  9519. $220 = $219 / 255.0;
  9520. $roundf = (+_roundf((+$220)));
  9521. $221 = (~~(($roundf))&255);
  9522. $222 = (((($7) + ($$0166199<<2)|0)) + 1|0);
  9523. $223 = HEAP8[$222>>0]|0;
  9524. $224 = (+($223&255));
  9525. $225 = $224 * 15.0;
  9526. $226 = $225 / 255.0;
  9527. $roundf173 = (+_roundf((+$226)));
  9528. $227 = (~~(($roundf173))&255);
  9529. $228 = (((($7) + ($$0166199<<2)|0)) + 2|0);
  9530. $229 = HEAP8[$228>>0]|0;
  9531. $230 = (+($229&255));
  9532. $231 = $230 * 15.0;
  9533. $232 = $231 / 255.0;
  9534. $roundf174 = (+_roundf((+$232)));
  9535. $233 = (~~(($roundf174))&255);
  9536. $234 = (((($7) + ($$0166199<<2)|0)) + 3|0);
  9537. $235 = HEAP8[$234>>0]|0;
  9538. $236 = (+($235&255));
  9539. $237 = $236 * 15.0;
  9540. $238 = $237 / 255.0;
  9541. $roundf175 = (+_roundf((+$238)));
  9542. $239 = (~~(($roundf175))&255);
  9543. $240 = $221&255;
  9544. $241 = $240 << 12;
  9545. $242 = $227&255;
  9546. $243 = $242 << 8;
  9547. $244 = $243 | $241;
  9548. $245 = $233&255;
  9549. $246 = $245 << 4;
  9550. $247 = $244 | $246;
  9551. $248 = $239&255;
  9552. $249 = $247 | $248;
  9553. $250 = $249&65535;
  9554. $251 = (($212) + ($$0166199<<1)|0);
  9555. HEAP16[$251>>1] = $250;
  9556. $252 = (($$0166199) + 1)|0;
  9557. $253 = ($252|0)<($215|0);
  9558. if ($253) {
  9559. $$0166199 = $252;
  9560. } else {
  9561. break;
  9562. }
  9563. }
  9564. }
  9565. break;
  9566. }
  9567. case 7: {
  9568. $254 = ((($0)) + 4|0);
  9569. $255 = HEAP32[$254>>2]|0;
  9570. $256 = ((($0)) + 8|0);
  9571. $257 = HEAP32[$256>>2]|0;
  9572. $258 = $255 << 2;
  9573. $259 = Math_imul($258, $257)|0;
  9574. $260 = (_malloc($259)|0);
  9575. HEAP32[$0>>2] = $260;
  9576. $261 = HEAP32[$254>>2]|0;
  9577. $262 = $261 << 2;
  9578. $263 = Math_imul($262, $257)|0;
  9579. $264 = ($263|0)>(0);
  9580. if ($264) {
  9581. $$0202 = 0;$$2201 = 0;
  9582. while(1) {
  9583. $265 = (($7) + ($$2201<<2)|0);
  9584. $266 = HEAP8[$265>>0]|0;
  9585. $267 = HEAP32[$0>>2]|0;
  9586. $268 = (($267) + ($$0202)|0);
  9587. HEAP8[$268>>0] = $266;
  9588. $269 = (((($7) + ($$2201<<2)|0)) + 1|0);
  9589. $270 = HEAP8[$269>>0]|0;
  9590. $271 = HEAP32[$0>>2]|0;
  9591. $272 = $$0202 | 1;
  9592. $273 = (($271) + ($272)|0);
  9593. HEAP8[$273>>0] = $270;
  9594. $274 = (((($7) + ($$2201<<2)|0)) + 2|0);
  9595. $275 = HEAP8[$274>>0]|0;
  9596. $276 = HEAP32[$0>>2]|0;
  9597. $277 = $$0202 | 2;
  9598. $278 = (($276) + ($277)|0);
  9599. HEAP8[$278>>0] = $275;
  9600. $279 = (((($7) + ($$2201<<2)|0)) + 3|0);
  9601. $280 = HEAP8[$279>>0]|0;
  9602. $281 = HEAP32[$0>>2]|0;
  9603. $282 = $$0202 | 3;
  9604. $283 = (($281) + ($282)|0);
  9605. HEAP8[$283>>0] = $280;
  9606. $284 = (($$2201) + 1)|0;
  9607. $285 = (($$0202) + 4)|0;
  9608. $286 = HEAP32[$254>>2]|0;
  9609. $287 = HEAP32[$256>>2]|0;
  9610. $288 = $286 << 2;
  9611. $289 = Math_imul($288, $287)|0;
  9612. $290 = ($285|0)<($289|0);
  9613. if ($290) {
  9614. $$0202 = $285;$$2201 = $284;
  9615. } else {
  9616. break;
  9617. }
  9618. }
  9619. }
  9620. break;
  9621. }
  9622. default: {
  9623. }
  9624. }
  9625. _free($7);
  9626. STACKTOP = sp;return;
  9627. }
  9628. function _LoadTextureFromImage($0,$1) {
  9629. $0 = $0|0;
  9630. $1 = $1|0;
  9631. var $$sroa$11$0$$sroa_idx8 = 0, $$sroa$5$0$$sroa_idx2 = 0, $$sroa$7$0$$sroa_idx4 = 0, $$sroa$9$0$$sroa_idx6 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  9632. sp = STACKTOP;
  9633. $2 = HEAP32[$1>>2]|0;
  9634. $3 = ((($1)) + 4|0);
  9635. $4 = HEAP32[$3>>2]|0;
  9636. $5 = ((($1)) + 8|0);
  9637. $6 = HEAP32[$5>>2]|0;
  9638. $7 = ((($1)) + 16|0);
  9639. $8 = HEAP32[$7>>2]|0;
  9640. $9 = ((($1)) + 12|0);
  9641. $10 = HEAP32[$9>>2]|0;
  9642. $11 = (_rlglLoadTexture($2,$4,$6,$8,$10)|0);
  9643. $12 = HEAP32[$3>>2]|0;
  9644. $13 = HEAP32[$5>>2]|0;
  9645. HEAP32[$0>>2] = $11;
  9646. $$sroa$5$0$$sroa_idx2 = ((($0)) + 4|0);
  9647. HEAP32[$$sroa$5$0$$sroa_idx2>>2] = $12;
  9648. $$sroa$7$0$$sroa_idx4 = ((($0)) + 8|0);
  9649. HEAP32[$$sroa$7$0$$sroa_idx4>>2] = $13;
  9650. $$sroa$9$0$$sroa_idx6 = ((($0)) + 12|0);
  9651. HEAP32[$$sroa$9$0$$sroa_idx6>>2] = $10;
  9652. $$sroa$11$0$$sroa_idx8 = ((($0)) + 16|0);
  9653. HEAP32[$$sroa$11$0$$sroa_idx8>>2] = $8;
  9654. return;
  9655. }
  9656. function _UnloadImage($0) {
  9657. $0 = $0|0;
  9658. var $1 = 0, label = 0, sp = 0;
  9659. sp = STACKTOP;
  9660. $1 = HEAP32[$0>>2]|0;
  9661. _free($1);
  9662. return;
  9663. }
  9664. function _rlglLoadTexture($0,$1,$2,$3,$4) {
  9665. $0 = $0|0;
  9666. $1 = $1|0;
  9667. $2 = $2|0;
  9668. $3 = $3|0;
  9669. $4 = $4|0;
  9670. var $$0 = 0, $$off = 0, $$off92 = 0, $$off93 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0;
  9671. var $26 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0;
  9672. var $46 = 0, $47 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond100 = 0, $or$cond7 = 0, $or$cond96 = 0, $or$cond98 = 0, $switch = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer11 = 0, $vararg_buffer15 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, $vararg_buffer7 = 0;
  9673. var $vararg_buffer9 = 0, $vararg_ptr13 = 0, $vararg_ptr14 = 0, label = 0, sp = 0;
  9674. sp = STACKTOP;
  9675. STACKTOP = STACKTOP + 80|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(80|0);
  9676. $vararg_buffer15 = sp + 64|0;
  9677. $vararg_buffer11 = sp + 48|0;
  9678. $vararg_buffer9 = sp + 40|0;
  9679. $vararg_buffer7 = sp + 32|0;
  9680. $vararg_buffer5 = sp + 24|0;
  9681. $vararg_buffer3 = sp + 16|0;
  9682. $vararg_buffer1 = sp + 8|0;
  9683. $vararg_buffer = sp;
  9684. $5 = sp + 68|0;
  9685. _glBindTexture(3553,0);
  9686. HEAP32[$5>>2] = 0;
  9687. $6 = HEAP32[3622]|0;
  9688. $7 = ($6|0)==(0);
  9689. $8 = $3 & -4;
  9690. $switch = ($8|0)==(8);
  9691. $or$cond100 = $switch & $7;
  9692. if ($or$cond100) {
  9693. _TraceLog(2,3699,$vararg_buffer);
  9694. $$0 = HEAP32[$5>>2]|0;
  9695. STACKTOP = sp;return ($$0|0);
  9696. }
  9697. $9 = HEAP32[3623]|0;
  9698. $10 = ($9|0)==(0);
  9699. $11 = ($3|0)==(12);
  9700. $or$cond7 = $11 & $10;
  9701. if ($or$cond7) {
  9702. _TraceLog(2,3743,$vararg_buffer1);
  9703. $$0 = HEAP32[$5>>2]|0;
  9704. STACKTOP = sp;return ($$0|0);
  9705. }
  9706. $12 = HEAP32[3624]|0;
  9707. $13 = ($12|0)==(0);
  9708. $$off = (($3) + -13)|0;
  9709. $14 = ($$off>>>0)<(2);
  9710. $or$cond = $14 & $13;
  9711. if ($or$cond) {
  9712. _TraceLog(2,3788,$vararg_buffer3);
  9713. $$0 = HEAP32[$5>>2]|0;
  9714. STACKTOP = sp;return ($$0|0);
  9715. }
  9716. $15 = HEAP32[3625]|0;
  9717. $16 = ($15|0)==(0);
  9718. $$off92 = (($3) + -15)|0;
  9719. $17 = ($$off92>>>0)<(2);
  9720. $or$cond96 = $17 & $16;
  9721. if ($or$cond96) {
  9722. _TraceLog(2,3833,$vararg_buffer5);
  9723. $$0 = HEAP32[$5>>2]|0;
  9724. STACKTOP = sp;return ($$0|0);
  9725. }
  9726. $18 = HEAP32[3626]|0;
  9727. $19 = ($18|0)==(0);
  9728. $$off93 = (($3) + -17)|0;
  9729. $20 = ($$off93>>>0)<(2);
  9730. $or$cond98 = $20 & $19;
  9731. if ($or$cond98) {
  9732. _TraceLog(2,3878,$vararg_buffer7);
  9733. $$0 = HEAP32[$5>>2]|0;
  9734. STACKTOP = sp;return ($$0|0);
  9735. }
  9736. _glGenTextures(1,($5|0));
  9737. $21 = HEAP32[$5>>2]|0;
  9738. _glBindTexture(3553,($21|0));
  9739. do {
  9740. switch ($3|0) {
  9741. case 1: {
  9742. _glTexImage2D(3553,0,6409,($1|0),($2|0),0,6409,5121,($0|0));
  9743. break;
  9744. }
  9745. case 2: {
  9746. _glTexImage2D(3553,0,6410,($1|0),($2|0),0,6410,5121,($0|0));
  9747. break;
  9748. }
  9749. case 3: {
  9750. _glTexImage2D(3553,0,6407,($1|0),($2|0),0,6407,33635,($0|0));
  9751. break;
  9752. }
  9753. case 4: {
  9754. _glTexImage2D(3553,0,6407,($1|0),($2|0),0,6407,5121,($0|0));
  9755. break;
  9756. }
  9757. case 5: {
  9758. _glTexImage2D(3553,0,6408,($1|0),($2|0),0,6408,32820,($0|0));
  9759. break;
  9760. }
  9761. case 6: {
  9762. _glTexImage2D(3553,0,6408,($1|0),($2|0),0,6408,32819,($0|0));
  9763. break;
  9764. }
  9765. case 7: {
  9766. _glTexImage2D(3553,0,6408,($1|0),($2|0),0,6408,5121,($0|0));
  9767. break;
  9768. }
  9769. case 8: {
  9770. $22 = HEAP32[3622]|0;
  9771. $23 = ($22|0)==(0);
  9772. if (!($23)) {
  9773. _LoadCompressedTexture($0,$1,$2,$4,33776);
  9774. }
  9775. break;
  9776. }
  9777. case 9: {
  9778. $24 = HEAP32[3622]|0;
  9779. $25 = ($24|0)==(0);
  9780. if (!($25)) {
  9781. _LoadCompressedTexture($0,$1,$2,$4,33777);
  9782. }
  9783. break;
  9784. }
  9785. case 10: {
  9786. $26 = HEAP32[3622]|0;
  9787. $27 = ($26|0)==(0);
  9788. if (!($27)) {
  9789. _LoadCompressedTexture($0,$1,$2,$4,33778);
  9790. }
  9791. break;
  9792. }
  9793. case 11: {
  9794. $28 = HEAP32[3622]|0;
  9795. $29 = ($28|0)==(0);
  9796. if (!($29)) {
  9797. _LoadCompressedTexture($0,$1,$2,$4,33779);
  9798. }
  9799. break;
  9800. }
  9801. case 12: {
  9802. $30 = HEAP32[3623]|0;
  9803. $31 = ($30|0)==(0);
  9804. if (!($31)) {
  9805. _LoadCompressedTexture($0,$1,$2,$4,36196);
  9806. }
  9807. break;
  9808. }
  9809. case 13: {
  9810. $32 = HEAP32[3624]|0;
  9811. $33 = ($32|0)==(0);
  9812. if (!($33)) {
  9813. _LoadCompressedTexture($0,$1,$2,$4,37492);
  9814. }
  9815. break;
  9816. }
  9817. case 14: {
  9818. $34 = HEAP32[3624]|0;
  9819. $35 = ($34|0)==(0);
  9820. if (!($35)) {
  9821. _LoadCompressedTexture($0,$1,$2,$4,37496);
  9822. }
  9823. break;
  9824. }
  9825. case 15: {
  9826. $36 = HEAP32[3625]|0;
  9827. $37 = ($36|0)==(0);
  9828. if (!($37)) {
  9829. _LoadCompressedTexture($0,$1,$2,$4,35840);
  9830. }
  9831. break;
  9832. }
  9833. case 16: {
  9834. $38 = HEAP32[3625]|0;
  9835. $39 = ($38|0)==(0);
  9836. if (!($39)) {
  9837. _LoadCompressedTexture($0,$1,$2,$4,35842);
  9838. }
  9839. break;
  9840. }
  9841. case 17: {
  9842. $40 = HEAP32[3626]|0;
  9843. $41 = ($40|0)==(0);
  9844. if (!($41)) {
  9845. _LoadCompressedTexture($0,$1,$2,$4,37808);
  9846. }
  9847. break;
  9848. }
  9849. case 18: {
  9850. $42 = HEAP32[3626]|0;
  9851. $43 = ($42|0)==(0);
  9852. if (!($43)) {
  9853. _LoadCompressedTexture($0,$1,$2,$4,37815);
  9854. }
  9855. break;
  9856. }
  9857. default: {
  9858. _TraceLog(2,3923,$vararg_buffer9);
  9859. }
  9860. }
  9861. } while(0);
  9862. $44 = HEAP32[3627]|0;
  9863. $45 = ($44|0)==(0);
  9864. if ($45) {
  9865. _glTexParameteri(3553,10242,33071);
  9866. _glTexParameteri(3553,10243,33071);
  9867. } else {
  9868. _glTexParameteri(3553,10242,10497);
  9869. _glTexParameteri(3553,10243,10497);
  9870. }
  9871. _glTexParameteri(3553,10240,9728);
  9872. _glTexParameteri(3553,10241,9728);
  9873. _glBindTexture(3553,0);
  9874. $46 = HEAP32[$5>>2]|0;
  9875. $47 = ($46|0)==(0);
  9876. if ($47) {
  9877. _TraceLog(2,4001,$vararg_buffer15);
  9878. $$0 = HEAP32[$5>>2]|0;
  9879. STACKTOP = sp;return ($$0|0);
  9880. } else {
  9881. HEAP32[$vararg_buffer11>>2] = $46;
  9882. $vararg_ptr13 = ((($vararg_buffer11)) + 4|0);
  9883. HEAP32[$vararg_ptr13>>2] = $1;
  9884. $vararg_ptr14 = ((($vararg_buffer11)) + 8|0);
  9885. HEAP32[$vararg_ptr14>>2] = $2;
  9886. _TraceLog(0,3952,$vararg_buffer11);
  9887. $$0 = HEAP32[$5>>2]|0;
  9888. STACKTOP = sp;return ($$0|0);
  9889. }
  9890. return (0)|0;
  9891. }
  9892. function _LoadCompressedTexture($0,$1,$2,$3,$4) {
  9893. $0 = $0|0;
  9894. $1 = $1|0;
  9895. $2 = $2|0;
  9896. $3 = $3|0;
  9897. $4 = $4|0;
  9898. var $$ = 0, $$03645 = 0, $$03744 = 0, $$038 = 0, $$03943 = 0, $$046 = 0, $$140 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0;
  9899. var $23 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond42 = 0, label = 0, sp = 0;
  9900. sp = STACKTOP;
  9901. _glPixelStorei(3317,1);
  9902. switch ($4|0) {
  9903. case 33776: case 33777: case 36196: case 37492: {
  9904. $$038 = 8;
  9905. break;
  9906. }
  9907. default: {
  9908. $$038 = 16;
  9909. }
  9910. }
  9911. $5 = ($3|0)<(1);
  9912. $6 = $1 | $2;
  9913. $7 = ($6|0)==(0);
  9914. $or$cond42 = $5 | $7;
  9915. if ($or$cond42) {
  9916. return;
  9917. } else {
  9918. $$03645 = 0;$$03744 = 0;$$03943 = $2;$$046 = $1;
  9919. }
  9920. while(1) {
  9921. $8 = (($$046) + 3)|0;
  9922. $9 = (($8|0) / 4)&-1;
  9923. $10 = (($$03943) + 3)|0;
  9924. $11 = (($10|0) / 4)&-1;
  9925. $12 = Math_imul($11, $$038)|0;
  9926. $13 = Math_imul($12, $9)|0;
  9927. $14 = (($0) + ($$03744)|0);
  9928. _glCompressedTexImage2D(3553,($$03645|0),($4|0),($$046|0),($$03943|0),0,($13|0),($14|0));
  9929. $15 = (($13) + ($$03744))|0;
  9930. $16 = (($$046|0) / 2)&-1;
  9931. $17 = (($$03943|0) / 2)&-1;
  9932. $18 = ($$046|0)<(2);
  9933. $$ = $18 ? 1 : $16;
  9934. $19 = ($$03943|0)<(2);
  9935. $$140 = $19 ? 1 : $17;
  9936. $20 = (($$03645) + 1)|0;
  9937. $21 = ($20|0)>=($3|0);
  9938. $22 = $$ | $$140;
  9939. $23 = ($22|0)==(0);
  9940. $or$cond = $21 | $23;
  9941. if ($or$cond) {
  9942. break;
  9943. } else {
  9944. $$03645 = $20;$$03744 = $15;$$03943 = $$140;$$046 = $$;
  9945. }
  9946. }
  9947. return;
  9948. }
  9949. function _GetImageData($0) {
  9950. $0 = $0|0;
  9951. var $$0104105 = 0, $$0106 = 0, $$1 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0.0, $103 = 0.0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0;
  9952. var $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, $131 = 0;
  9953. var $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0;
  9954. var $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, $36 = 0, $37 = 0, $38 = 0, $39 = 0.0, $4 = 0, $40 = 0.0, $41 = 0;
  9955. var $42 = 0, $43 = 0, $44 = 0, $45 = 0.0, $46 = 0.0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0.0, $52 = 0.0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0;
  9956. var $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0.0, $65 = 0.0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0.0, $71 = 0.0, $72 = 0, $73 = 0, $74 = 0, $75 = 0.0, $76 = 0.0, $77 = 0, $78 = 0;
  9957. var $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0.0, $86 = 0.0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0.0, $92 = 0.0, $93 = 0, $94 = 0, $95 = 0, $96 = 0;
  9958. var $97 = 0.0, $98 = 0.0, $99 = 0, $vararg_buffer = 0, label = 0, sp = 0;
  9959. sp = STACKTOP;
  9960. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  9961. $vararg_buffer = sp;
  9962. $1 = ((($0)) + 4|0);
  9963. $2 = HEAP32[$1>>2]|0;
  9964. $3 = ((($0)) + 8|0);
  9965. $4 = HEAP32[$3>>2]|0;
  9966. $5 = $2 << 2;
  9967. $6 = Math_imul($5, $4)|0;
  9968. $7 = (_malloc($6)|0);
  9969. $8 = HEAP32[$1>>2]|0;
  9970. $9 = Math_imul($4, $8)|0;
  9971. $10 = ($9|0)>(0);
  9972. if (!($10)) {
  9973. STACKTOP = sp;return ($7|0);
  9974. }
  9975. $11 = ((($0)) + 16|0);
  9976. $12 = HEAP32[$11>>2]|0;
  9977. $13 = HEAP32[$0>>2]|0;
  9978. $$0104105 = 0;$$0106 = 0;
  9979. while(1) {
  9980. switch ($12|0) {
  9981. case 1: {
  9982. $14 = (($13) + ($$0106)|0);
  9983. $15 = HEAP8[$14>>0]|0;
  9984. $16 = (($7) + ($$0104105<<2)|0);
  9985. HEAP8[$16>>0] = $15;
  9986. $17 = HEAP8[$14>>0]|0;
  9987. $18 = (((($7) + ($$0104105<<2)|0)) + 1|0);
  9988. HEAP8[$18>>0] = $17;
  9989. $19 = HEAP8[$14>>0]|0;
  9990. $20 = (((($7) + ($$0104105<<2)|0)) + 2|0);
  9991. HEAP8[$20>>0] = $19;
  9992. $21 = (((($7) + ($$0104105<<2)|0)) + 3|0);
  9993. HEAP8[$21>>0] = -1;
  9994. $22 = (($$0106) + 1)|0;
  9995. $$1 = $22;
  9996. break;
  9997. }
  9998. case 2: {
  9999. $23 = (($13) + ($$0106)|0);
  10000. $24 = HEAP8[$23>>0]|0;
  10001. $25 = (($7) + ($$0104105<<2)|0);
  10002. HEAP8[$25>>0] = $24;
  10003. $26 = HEAP8[$23>>0]|0;
  10004. $27 = (((($7) + ($$0104105<<2)|0)) + 1|0);
  10005. HEAP8[$27>>0] = $26;
  10006. $28 = HEAP8[$23>>0]|0;
  10007. $29 = (((($7) + ($$0104105<<2)|0)) + 2|0);
  10008. HEAP8[$29>>0] = $28;
  10009. $30 = (($$0106) + 1)|0;
  10010. $31 = (($13) + ($30)|0);
  10011. $32 = HEAP8[$31>>0]|0;
  10012. $33 = (((($7) + ($$0104105<<2)|0)) + 3|0);
  10013. HEAP8[$33>>0] = $32;
  10014. $34 = (($$0106) + 2)|0;
  10015. $$1 = $34;
  10016. break;
  10017. }
  10018. case 5: {
  10019. $35 = (($13) + ($$0106<<1)|0);
  10020. $36 = HEAP16[$35>>1]|0;
  10021. $37 = $36&65535;
  10022. $38 = $37 >>> 11;
  10023. $39 = (+($38|0));
  10024. $40 = $39 * 8.0;
  10025. $41 = (~~(($40))&255);
  10026. $42 = (($7) + ($$0104105<<2)|0);
  10027. HEAP8[$42>>0] = $41;
  10028. $43 = $37 >>> 6;
  10029. $44 = $43 & 31;
  10030. $45 = (+($44|0));
  10031. $46 = $45 * 8.0;
  10032. $47 = (~~(($46))&255);
  10033. $48 = (((($7) + ($$0104105<<2)|0)) + 1|0);
  10034. HEAP8[$48>>0] = $47;
  10035. $49 = $37 >>> 1;
  10036. $50 = $49 & 31;
  10037. $51 = (+($50|0));
  10038. $52 = $51 * 8.0;
  10039. $53 = (~~(($52))&255);
  10040. $54 = (((($7) + ($$0104105<<2)|0)) + 2|0);
  10041. HEAP8[$54>>0] = $53;
  10042. $55 = $37 & 1;
  10043. $56 = (0 - ($55))|0;
  10044. $57 = $56&255;
  10045. $58 = (((($7) + ($$0104105<<2)|0)) + 3|0);
  10046. HEAP8[$58>>0] = $57;
  10047. $59 = (($$0106) + 1)|0;
  10048. $$1 = $59;
  10049. break;
  10050. }
  10051. case 3: {
  10052. $60 = (($13) + ($$0106<<1)|0);
  10053. $61 = HEAP16[$60>>1]|0;
  10054. $62 = $61&65535;
  10055. $63 = $62 >>> 11;
  10056. $64 = (+($63|0));
  10057. $65 = $64 * 8.0;
  10058. $66 = (~~(($65))&255);
  10059. $67 = (($7) + ($$0104105<<2)|0);
  10060. HEAP8[$67>>0] = $66;
  10061. $68 = $62 >>> 5;
  10062. $69 = $68 & 63;
  10063. $70 = (+($69|0));
  10064. $71 = $70 * 4.0;
  10065. $72 = (~~(($71))&255);
  10066. $73 = (((($7) + ($$0104105<<2)|0)) + 1|0);
  10067. HEAP8[$73>>0] = $72;
  10068. $74 = $62 & 31;
  10069. $75 = (+($74|0));
  10070. $76 = $75 * 8.0;
  10071. $77 = (~~(($76))&255);
  10072. $78 = (((($7) + ($$0104105<<2)|0)) + 2|0);
  10073. HEAP8[$78>>0] = $77;
  10074. $79 = (((($7) + ($$0104105<<2)|0)) + 3|0);
  10075. HEAP8[$79>>0] = -1;
  10076. $80 = (($$0106) + 1)|0;
  10077. $$1 = $80;
  10078. break;
  10079. }
  10080. case 6: {
  10081. $81 = (($13) + ($$0106<<1)|0);
  10082. $82 = HEAP16[$81>>1]|0;
  10083. $83 = $82&65535;
  10084. $84 = $83 >>> 12;
  10085. $85 = (+($84|0));
  10086. $86 = $85 * 17.0;
  10087. $87 = (~~(($86))&255);
  10088. $88 = (($7) + ($$0104105<<2)|0);
  10089. HEAP8[$88>>0] = $87;
  10090. $89 = $83 >>> 8;
  10091. $90 = $89 & 15;
  10092. $91 = (+($90|0));
  10093. $92 = $91 * 17.0;
  10094. $93 = (~~(($92))&255);
  10095. $94 = (((($7) + ($$0104105<<2)|0)) + 1|0);
  10096. HEAP8[$94>>0] = $93;
  10097. $95 = $83 >>> 4;
  10098. $96 = $95 & 15;
  10099. $97 = (+($96|0));
  10100. $98 = $97 * 17.0;
  10101. $99 = (~~(($98))&255);
  10102. $100 = (((($7) + ($$0104105<<2)|0)) + 2|0);
  10103. HEAP8[$100>>0] = $99;
  10104. $101 = $83 & 15;
  10105. $102 = (+($101|0));
  10106. $103 = $102 * 17.0;
  10107. $104 = (~~(($103))&255);
  10108. $105 = (((($7) + ($$0104105<<2)|0)) + 3|0);
  10109. HEAP8[$105>>0] = $104;
  10110. $106 = (($$0106) + 1)|0;
  10111. $$1 = $106;
  10112. break;
  10113. }
  10114. case 7: {
  10115. $107 = (($13) + ($$0106)|0);
  10116. $108 = HEAP8[$107>>0]|0;
  10117. $109 = (($7) + ($$0104105<<2)|0);
  10118. HEAP8[$109>>0] = $108;
  10119. $110 = (($$0106) + 1)|0;
  10120. $111 = (($13) + ($110)|0);
  10121. $112 = HEAP8[$111>>0]|0;
  10122. $113 = (((($7) + ($$0104105<<2)|0)) + 1|0);
  10123. HEAP8[$113>>0] = $112;
  10124. $114 = (($$0106) + 2)|0;
  10125. $115 = (($13) + ($114)|0);
  10126. $116 = HEAP8[$115>>0]|0;
  10127. $117 = (((($7) + ($$0104105<<2)|0)) + 2|0);
  10128. HEAP8[$117>>0] = $116;
  10129. $118 = (($$0106) + 3)|0;
  10130. $119 = (($13) + ($118)|0);
  10131. $120 = HEAP8[$119>>0]|0;
  10132. $121 = (((($7) + ($$0104105<<2)|0)) + 3|0);
  10133. HEAP8[$121>>0] = $120;
  10134. $122 = (($$0106) + 4)|0;
  10135. $$1 = $122;
  10136. break;
  10137. }
  10138. case 4: {
  10139. $123 = (($13) + ($$0106)|0);
  10140. $124 = HEAP8[$123>>0]|0;
  10141. $125 = (($7) + ($$0104105<<2)|0);
  10142. HEAP8[$125>>0] = $124;
  10143. $126 = (($$0106) + 1)|0;
  10144. $127 = (($13) + ($126)|0);
  10145. $128 = HEAP8[$127>>0]|0;
  10146. $129 = (((($7) + ($$0104105<<2)|0)) + 1|0);
  10147. HEAP8[$129>>0] = $128;
  10148. $130 = (($$0106) + 2)|0;
  10149. $131 = (($13) + ($130)|0);
  10150. $132 = HEAP8[$131>>0]|0;
  10151. $133 = (((($7) + ($$0104105<<2)|0)) + 2|0);
  10152. HEAP8[$133>>0] = $132;
  10153. $134 = (((($7) + ($$0104105<<2)|0)) + 3|0);
  10154. HEAP8[$134>>0] = -1;
  10155. $135 = (($$0106) + 3)|0;
  10156. $$1 = $135;
  10157. break;
  10158. }
  10159. default: {
  10160. _TraceLog(2,4084,$vararg_buffer);
  10161. $$1 = $$0106;
  10162. }
  10163. }
  10164. $136 = (($$0104105) + 1)|0;
  10165. $137 = HEAP32[$1>>2]|0;
  10166. $138 = HEAP32[$3>>2]|0;
  10167. $139 = Math_imul($138, $137)|0;
  10168. $140 = ($136|0)<($139|0);
  10169. if ($140) {
  10170. $$0104105 = $136;$$0106 = $$1;
  10171. } else {
  10172. break;
  10173. }
  10174. }
  10175. STACKTOP = sp;return ($7|0);
  10176. }
  10177. function _ErrorCallback($0,$1) {
  10178. $0 = $0|0;
  10179. $1 = $1|0;
  10180. var $vararg_buffer = 0, $vararg_ptr1 = 0, label = 0, sp = 0;
  10181. sp = STACKTOP;
  10182. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  10183. $vararg_buffer = sp;
  10184. HEAP32[$vararg_buffer>>2] = $0;
  10185. $vararg_ptr1 = ((($vararg_buffer)) + 4|0);
  10186. HEAP32[$vararg_ptr1>>2] = $1;
  10187. _TraceLog(2,7950,$vararg_buffer);
  10188. STACKTOP = sp;return;
  10189. }
  10190. function _rlGetVersion() {
  10191. var label = 0, sp = 0;
  10192. sp = STACKTOP;
  10193. return 4;
  10194. }
  10195. function _SetupFramebufferSize($0,$1) {
  10196. $0 = $0|0;
  10197. $1 = $1|0;
  10198. var $$sink = 0, $$sink1 = 0, $10 = 0.0, $11 = 0.0, $12 = 0.0, $13 = 0, $14 = 0.0, $15 = 0.0, $16 = 0, $17 = 0, $18 = 0.0, $19 = 0.0, $2 = 0, $20 = 0, $21 = 0, $22 = 0.0, $23 = 0, $24 = 0, $25 = 0, $26 = 0.0;
  10199. var $27 = 0, $28 = 0.0, $29 = 0.0, $3 = 0, $30 = 0, $31 = 0, $32 = 0.0, $33 = 0.0, $34 = 0.0, $35 = 0, $36 = 0.0, $37 = 0, $38 = 0.0, $39 = 0.0, $4 = 0, $40 = 0, $41 = 0.0, $42 = 0, $43 = 0, $44 = 0.0;
  10200. var $45 = 0, $46 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0.0, $9 = 0, $or$cond = 0, $roundf = 0.0, $roundf38 = 0.0, $roundf39 = 0.0, $roundf40 = 0.0, $vararg_buffer = 0, $vararg_buffer4 = 0, $vararg_buffer8 = 0, $vararg_ptr1 = 0, $vararg_ptr11 = 0, $vararg_ptr12 = 0, $vararg_ptr13 = 0, $vararg_ptr2 = 0;
  10201. var $vararg_ptr3 = 0, $vararg_ptr7 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  10202. sp = STACKTOP;
  10203. STACKTOP = STACKTOP + 112|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(112|0);
  10204. $vararg_buffer8 = sp + 24|0;
  10205. $vararg_buffer4 = sp + 16|0;
  10206. $vararg_buffer = sp;
  10207. $2 = sp + 40|0;
  10208. $3 = HEAP32[3606]|0;
  10209. $4 = ($3|0)>($0|0);
  10210. if (!($4)) {
  10211. $5 = HEAP32[3605]|0;
  10212. $6 = ($5|0)>($1|0);
  10213. if (!($6)) {
  10214. $30 = ($3|0)<($0|0);
  10215. $31 = ($5|0)<($1|0);
  10216. $or$cond = $30 | $31;
  10217. if (!($or$cond)) {
  10218. HEAP32[3647] = $3;
  10219. HEAP32[3648] = $5;
  10220. HEAP32[3649] = 0;
  10221. HEAP32[3650] = 0;
  10222. STACKTOP = sp;return;
  10223. }
  10224. HEAP32[$vararg_buffer8>>2] = $3;
  10225. $vararg_ptr11 = ((($vararg_buffer8)) + 4|0);
  10226. HEAP32[$vararg_ptr11>>2] = $5;
  10227. $vararg_ptr12 = ((($vararg_buffer8)) + 8|0);
  10228. HEAP32[$vararg_ptr12>>2] = $0;
  10229. $vararg_ptr13 = ((($vararg_buffer8)) + 12|0);
  10230. HEAP32[$vararg_ptr13>>2] = $1;
  10231. _TraceLog(0,7884,$vararg_buffer8);
  10232. $32 = (+($0|0));
  10233. $33 = (+($1|0));
  10234. $34 = $32 / $33;
  10235. $35 = HEAP32[3606]|0;
  10236. $36 = (+($35|0));
  10237. $37 = HEAP32[3605]|0;
  10238. $38 = (+($37|0));
  10239. $39 = $36 / $38;
  10240. $40 = !($34 <= $39);
  10241. if ($40) {
  10242. $44 = $34 * $38;
  10243. $roundf = (+_roundf((+$44)));
  10244. $45 = (~~(($roundf)));
  10245. HEAP32[3647] = $45;
  10246. HEAP32[3648] = $37;
  10247. $46 = (($45) - ($35))|0;
  10248. HEAP32[3649] = $46;
  10249. $$sink1 = 0;
  10250. } else {
  10251. HEAP32[3647] = $35;
  10252. $41 = $36 / $34;
  10253. $roundf38 = (+_roundf((+$41)));
  10254. $42 = (~~(($roundf38)));
  10255. HEAP32[3648] = $42;
  10256. HEAP32[3649] = 0;
  10257. $43 = (($42) - ($37))|0;
  10258. $$sink1 = $43;
  10259. }
  10260. HEAP32[3650] = $$sink1;
  10261. STACKTOP = sp;return;
  10262. }
  10263. }
  10264. $7 = HEAP32[3605]|0;
  10265. HEAP32[$vararg_buffer>>2] = $3;
  10266. $vararg_ptr1 = ((($vararg_buffer)) + 4|0);
  10267. HEAP32[$vararg_ptr1>>2] = $7;
  10268. $vararg_ptr2 = ((($vararg_buffer)) + 8|0);
  10269. HEAP32[$vararg_ptr2>>2] = $0;
  10270. $vararg_ptr3 = ((($vararg_buffer)) + 12|0);
  10271. HEAP32[$vararg_ptr3>>2] = $1;
  10272. _TraceLog(2,7741,$vararg_buffer);
  10273. $8 = (+($0|0));
  10274. $9 = HEAP32[3606]|0;
  10275. $10 = (+($9|0));
  10276. $11 = $8 / $10;
  10277. $12 = (+($1|0));
  10278. $13 = HEAP32[3605]|0;
  10279. $14 = (+($13|0));
  10280. $15 = $12 / $14;
  10281. $16 = !($11 <= $15);
  10282. if ($16) {
  10283. $22 = $10 * $15;
  10284. $roundf39 = (+_roundf((+$22)));
  10285. $23 = (~~(($roundf39)));
  10286. HEAP32[3647] = $23;
  10287. HEAP32[3648] = $1;
  10288. $24 = (($0) - ($23))|0;
  10289. HEAP32[3649] = $24;
  10290. $$sink = 0;
  10291. } else {
  10292. HEAP32[3647] = $0;
  10293. $17 = HEAP32[3605]|0;
  10294. $18 = (+($17|0));
  10295. $19 = $11 * $18;
  10296. $roundf40 = (+_roundf((+$19)));
  10297. $20 = (~~(($roundf40)));
  10298. HEAP32[3648] = $20;
  10299. HEAP32[3649] = 0;
  10300. $21 = (($1) - ($20))|0;
  10301. $$sink = $21;
  10302. }
  10303. HEAP32[3650] = $$sink;
  10304. $25 = HEAP32[3647]|0;
  10305. $26 = (+($25|0));
  10306. $27 = HEAP32[3606]|0;
  10307. $28 = (+($27|0));
  10308. $29 = $26 / $28;
  10309. _MatrixScale($2,$29,$29,$29);
  10310. dest=14512; src=$2; 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));
  10311. HEAP32[3647] = $0;
  10312. HEAP32[3648] = $1;
  10313. HEAP32[$vararg_buffer4>>2] = $0;
  10314. $vararg_ptr7 = ((($vararg_buffer4)) + 4|0);
  10315. HEAP32[$vararg_ptr7>>2] = $1;
  10316. _TraceLog(2,7819,$vararg_buffer4);
  10317. STACKTOP = sp;return;
  10318. }
  10319. function _WindowSizeCallback($0,$1,$2) {
  10320. $0 = $0|0;
  10321. $1 = $1|0;
  10322. $2 = $2|0;
  10323. var $3 = 0.0, $4 = 0.0, label = 0, sp = 0;
  10324. sp = STACKTOP;
  10325. _rlViewport(0,0,$1,$2);
  10326. _rlMatrixMode(5889);
  10327. _rlLoadIdentity();
  10328. $3 = (+($1|0));
  10329. $4 = (+($2|0));
  10330. _rlOrtho(0.0,$3,$4,0.0,0.0,1.0);
  10331. _rlMatrixMode(5888);
  10332. _rlLoadIdentity();
  10333. _rlClearScreenBuffers();
  10334. HEAP32[3606] = $1;
  10335. HEAP32[3605] = $2;
  10336. HEAP32[3647] = $1;
  10337. HEAP32[3648] = $2;
  10338. return;
  10339. }
  10340. function _CursorEnterCallback($0,$1) {
  10341. $0 = $0|0;
  10342. $1 = $1|0;
  10343. var label = 0, sp = 0;
  10344. sp = STACKTOP;
  10345. return;
  10346. }
  10347. function _KeyCallback($0,$1,$2,$3,$4) {
  10348. $0 = $0|0;
  10349. $1 = $1|0;
  10350. $2 = $2|0;
  10351. $3 = $3|0;
  10352. $4 = $4|0;
  10353. var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
  10354. sp = STACKTOP;
  10355. $5 = HEAP32[742]|0;
  10356. $6 = ($5|0)==($1|0);
  10357. $7 = ($3|0)==(1);
  10358. $or$cond = $7 & $6;
  10359. if ($or$cond) {
  10360. _glfwSetWindowShouldClose(($0|0),1);
  10361. return;
  10362. }
  10363. $8 = $3&255;
  10364. $9 = (17235 + ($1)|0);
  10365. HEAP8[$9>>0] = $8;
  10366. if (!($7)) {
  10367. return;
  10368. }
  10369. HEAP32[741] = $1;
  10370. return;
  10371. }
  10372. function _MouseButtonCallback($0,$1,$2,$3) {
  10373. $0 = $0|0;
  10374. $1 = $1|0;
  10375. $2 = $2|0;
  10376. $3 = $3|0;
  10377. var $$byval_copy = 0, $$sink = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0.0, $27 = 0.0;
  10378. var $28 = 0.0, $29 = 0, $30 = 0.0, $31 = 0, $32 = 0.0, $33 = 0.0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  10379. sp = STACKTOP;
  10380. STACKTOP = STACKTOP + 128|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(128|0);
  10381. $$byval_copy = sp + 64|0;
  10382. $4 = sp + 8|0;
  10383. $5 = sp;
  10384. $6 = $2&255;
  10385. $7 = (17229 + ($1)|0);
  10386. HEAP8[$7>>0] = $6;
  10387. $8 = (_IsMouseButtonPressed(0)|0);
  10388. $9 = ($8|0)==(0);
  10389. if ($9) {
  10390. $10 = (_IsMouseButtonReleased(0)|0);
  10391. $11 = ($10|0)==(0);
  10392. if (!($11)) {
  10393. $$sink = 0;
  10394. label = 3;
  10395. }
  10396. } else {
  10397. $$sink = 1;
  10398. label = 3;
  10399. }
  10400. if ((label|0) == 3) {
  10401. HEAP32[$4>>2] = $$sink;
  10402. }
  10403. $12 = ((($4)) + 8|0);
  10404. HEAP32[$12>>2] = 0;
  10405. $13 = ((($4)) + 4|0);
  10406. HEAP32[$13>>2] = 1;
  10407. $14 = ((($4)) + 24|0);
  10408. _GetMousePosition($5);
  10409. $15 = $5;
  10410. $16 = $15;
  10411. $17 = HEAP32[$16>>2]|0;
  10412. $18 = (($15) + 4)|0;
  10413. $19 = $18;
  10414. $20 = HEAP32[$19>>2]|0;
  10415. $21 = $14;
  10416. $22 = $21;
  10417. HEAP32[$22>>2] = $17;
  10418. $23 = (($21) + 4)|0;
  10419. $24 = $23;
  10420. HEAP32[$24>>2] = $20;
  10421. $25 = (_GetScreenWidth()|0);
  10422. $26 = (+($25|0));
  10423. $27 = +HEAPF32[$14>>2];
  10424. $28 = $27 / $26;
  10425. HEAPF32[$14>>2] = $28;
  10426. $29 = (_GetScreenHeight()|0);
  10427. $30 = (+($29|0));
  10428. $31 = ((($4)) + 28|0);
  10429. $32 = +HEAPF32[$31>>2];
  10430. $33 = $32 / $30;
  10431. HEAPF32[$31>>2] = $33;
  10432. dest=$$byval_copy; src=$4; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  10433. _ProcessGestureEvent($$byval_copy);
  10434. STACKTOP = sp;return;
  10435. }
  10436. function _MouseCursorPosCallback($0,$1,$2) {
  10437. $0 = $0|0;
  10438. $1 = +$1;
  10439. $2 = +$2;
  10440. var $$byval_copy = 0, $$sroa$0$0$$sroa_idx = 0, $$sroa$2$0$$sroa_idx1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0.0, $21 = 0.0, $22 = 0.0, $23 = 0, $24 = 0.0, $25 = 0.0, $26 = 0.0;
  10441. var $3 = 0, $4 = 0, $5 = 0, $6 = 0.0, $7 = 0.0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  10442. sp = STACKTOP;
  10443. STACKTOP = STACKTOP + 112|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(112|0);
  10444. $$byval_copy = sp + 56|0;
  10445. $3 = sp;
  10446. HEAP32[$3>>2] = 2;
  10447. $4 = ((($3)) + 8|0);
  10448. HEAP32[$4>>2] = 0;
  10449. $5 = ((($3)) + 4|0);
  10450. HEAP32[$5>>2] = 1;
  10451. $6 = $1;
  10452. $7 = $2;
  10453. $$sroa$0$0$$sroa_idx = ((($3)) + 24|0);
  10454. HEAPF32[$$sroa$0$0$$sroa_idx>>2] = $6;
  10455. $$sroa$2$0$$sroa_idx1 = ((($3)) + 28|0);
  10456. HEAPF32[$$sroa$2$0$$sroa_idx1>>2] = $7;
  10457. $8 = ((($3)) + 24|0);
  10458. $9 = $8;
  10459. $10 = $9;
  10460. $11 = HEAP32[$10>>2]|0;
  10461. $12 = (($9) + 4)|0;
  10462. $13 = $12;
  10463. $14 = HEAP32[$13>>2]|0;
  10464. $15 = 14152;
  10465. $16 = $15;
  10466. HEAP32[$16>>2] = $11;
  10467. $17 = (($15) + 4)|0;
  10468. $18 = $17;
  10469. HEAP32[$18>>2] = $14;
  10470. $19 = (_GetScreenWidth()|0);
  10471. $20 = (+($19|0));
  10472. $21 = +HEAPF32[$8>>2];
  10473. $22 = $21 / $20;
  10474. HEAPF32[$8>>2] = $22;
  10475. $23 = (_GetScreenHeight()|0);
  10476. $24 = (+($23|0));
  10477. $25 = +HEAPF32[$$sroa$2$0$$sroa_idx1>>2];
  10478. $26 = $25 / $24;
  10479. HEAPF32[$$sroa$2$0$$sroa_idx1>>2] = $26;
  10480. dest=$$byval_copy; src=$3; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  10481. _ProcessGestureEvent($$byval_copy);
  10482. STACKTOP = sp;return;
  10483. }
  10484. function _CharCallback($0,$1) {
  10485. $0 = $0|0;
  10486. $1 = $1|0;
  10487. var label = 0, sp = 0;
  10488. sp = STACKTOP;
  10489. HEAP32[741] = $1;
  10490. return;
  10491. }
  10492. function _ScrollCallback($0,$1,$2) {
  10493. $0 = $0|0;
  10494. $1 = +$1;
  10495. $2 = +$2;
  10496. var $3 = 0, label = 0, sp = 0;
  10497. sp = STACKTOP;
  10498. $3 = (~~(($2)));
  10499. HEAP32[4020] = $3;
  10500. return;
  10501. }
  10502. function _WindowIconifyCallback($0,$1) {
  10503. $0 = $0|0;
  10504. $1 = $1|0;
  10505. var $$sink = 0, $2 = 0, label = 0, sp = 0;
  10506. sp = STACKTOP;
  10507. $2 = ($1|0)!=(0);
  10508. $$sink = $2&1;
  10509. HEAP32[4019] = $$sink;
  10510. return;
  10511. }
  10512. function _rlglInit($0,$1) {
  10513. $0 = $0|0;
  10514. $1 = $1|0;
  10515. var $$05965 = 0, $$06066 = 0, $$06167 = 0, $$062 = 0, $$sink63 = 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;
  10516. var $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, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0;
  10517. var $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, $58 = 0, $59 = 0, $6 = 0;
  10518. var $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.0, $72 = 0.0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0;
  10519. var $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $9 = 0, $exitcond = 0, $exitcond69 = 0, $exitcond70 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer10 = 0, $vararg_buffer13 = 0, $vararg_buffer15 = 0, $vararg_buffer17 = 0, $vararg_buffer19 = 0;
  10520. var $vararg_buffer21 = 0, $vararg_buffer23 = 0, $vararg_buffer25 = 0, $vararg_buffer27 = 0, $vararg_buffer29 = 0, $vararg_buffer31 = 0, $vararg_buffer34 = 0, $vararg_buffer36 = 0, $vararg_buffer39 = 0, $vararg_buffer4 = 0, $vararg_buffer41 = 0, $vararg_buffer7 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  10521. sp = STACKTOP;
  10522. STACKTOP = STACKTOP + 2464|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(2464|0);
  10523. $vararg_buffer41 = sp + 2184|0;
  10524. $vararg_buffer39 = sp + 2176|0;
  10525. $vararg_buffer36 = sp + 2168|0;
  10526. $vararg_buffer34 = sp + 2160|0;
  10527. $vararg_buffer31 = sp + 2152|0;
  10528. $vararg_buffer29 = sp + 2144|0;
  10529. $vararg_buffer27 = sp + 2136|0;
  10530. $vararg_buffer25 = sp + 2128|0;
  10531. $vararg_buffer23 = sp + 2120|0;
  10532. $vararg_buffer21 = sp + 2112|0;
  10533. $vararg_buffer19 = sp + 2104|0;
  10534. $vararg_buffer17 = sp + 2096|0;
  10535. $vararg_buffer15 = sp + 2088|0;
  10536. $vararg_buffer13 = sp + 2080|0;
  10537. $vararg_buffer10 = sp + 2072|0;
  10538. $vararg_buffer7 = sp + 24|0;
  10539. $vararg_buffer4 = sp + 16|0;
  10540. $vararg_buffer1 = sp + 8|0;
  10541. $vararg_buffer = sp;
  10542. $2 = sp + 2400|0;
  10543. $3 = sp + 2384|0;
  10544. $4 = sp + 2320|0;
  10545. $5 = sp + 2256|0;
  10546. $6 = sp + 2192|0;
  10547. $7 = (_glGetString(7936)|0);
  10548. HEAP32[$vararg_buffer>>2] = $7;
  10549. _TraceLog(0,4382,$vararg_buffer);
  10550. $8 = (_glGetString(7937)|0);
  10551. HEAP32[$vararg_buffer1>>2] = $8;
  10552. _TraceLog(0,4400,$vararg_buffer1);
  10553. $9 = (_glGetString(7938)|0);
  10554. HEAP32[$vararg_buffer4>>2] = $9;
  10555. _TraceLog(0,4418,$vararg_buffer4);
  10556. $10 = (_glGetString(35724)|0);
  10557. HEAP32[$vararg_buffer7>>2] = $10;
  10558. _TraceLog(0,4436,$vararg_buffer7);
  10559. $11 = (_glGetString(7939)|0);
  10560. $12 = (_strlen($11)|0);
  10561. $13 = (($12) + 1)|0;
  10562. $14 = (_malloc($13)|0);
  10563. _memcpy(($14|0),($11|0),($13|0))|0;
  10564. $$062 = 0;$$sink63 = $14;
  10565. while(1) {
  10566. $15 = (_strtok($$sink63,4454)|0);
  10567. $16 = (($vararg_buffer7) + ($$062<<2)|0);
  10568. HEAP32[$16>>2] = $15;
  10569. $17 = ($15|0)==(0|0);
  10570. $18 = (($$062) + 1)|0;
  10571. if ($17) {
  10572. break;
  10573. } else {
  10574. $$062 = $18;$$sink63 = 0;
  10575. }
  10576. }
  10577. _free($14);
  10578. $19 = (($$062) + -1)|0;
  10579. HEAP32[$vararg_buffer10>>2] = $19;
  10580. _TraceLog(0,4456,$vararg_buffer10);
  10581. $20 = ($$062|0)>(1);
  10582. if ($20) {
  10583. $$06167 = 0;
  10584. while(1) {
  10585. $23 = (($vararg_buffer7) + ($$06167<<2)|0);
  10586. $24 = HEAP32[$23>>2]|0;
  10587. $25 = (_strcmp($24,4491)|0);
  10588. $26 = ($25|0)==(0);
  10589. if ($26) {
  10590. HEAP32[3685] = 1;
  10591. $27 = (_eglGetProcAddress((4518|0))|0);
  10592. HEAP32[3686] = $27;
  10593. $28 = (_eglGetProcAddress((4539|0))|0);
  10594. HEAP32[3687] = $28;
  10595. $29 = (_eglGetProcAddress((4560|0))|0);
  10596. HEAP32[3688] = $29;
  10597. }
  10598. $30 = (_strcmp($24,4584)|0);
  10599. $31 = ($30|0)==(0);
  10600. if ($31) {
  10601. HEAP32[3627] = 1;
  10602. }
  10603. $32 = (_strcmp($24,4604)|0);
  10604. $33 = ($32|0)==(0);
  10605. if ($33) {
  10606. label = 12;
  10607. } else {
  10608. $34 = HEAP32[$23>>2]|0;
  10609. $35 = (_strcmp($34,4636)|0);
  10610. $36 = ($35|0)==(0);
  10611. if ($36) {
  10612. label = 12;
  10613. } else {
  10614. $37 = (_strcmp($34,4669)|0);
  10615. $38 = ($37|0)==(0);
  10616. if ($38) {
  10617. label = 12;
  10618. }
  10619. }
  10620. }
  10621. if ((label|0) == 12) {
  10622. label = 0;
  10623. HEAP32[3622] = 1;
  10624. }
  10625. $39 = (_strcmp($24,4709)|0);
  10626. $40 = ($39|0)==(0);
  10627. if ($40) {
  10628. label = 15;
  10629. } else {
  10630. $41 = HEAP32[$23>>2]|0;
  10631. $42 = (_strcmp($41,4745)|0);
  10632. $43 = ($42|0)==(0);
  10633. if ($43) {
  10634. label = 15;
  10635. }
  10636. }
  10637. if ((label|0) == 15) {
  10638. label = 0;
  10639. HEAP32[3623] = 1;
  10640. }
  10641. $44 = HEAP32[$23>>2]|0;
  10642. $45 = (_strcmp($44,4778)|0);
  10643. $46 = ($45|0)==(0);
  10644. if ($46) {
  10645. HEAP32[3624] = 1;
  10646. }
  10647. $47 = (_strcmp($44,4803)|0);
  10648. $48 = ($47|0)==(0);
  10649. if ($48) {
  10650. HEAP32[3625] = 1;
  10651. }
  10652. $49 = (_strcmp($44,4836)|0);
  10653. $50 = ($49|0)==(0);
  10654. if ($50) {
  10655. HEAP32[3626] = 1;
  10656. }
  10657. $51 = (_strcmp($44,4872)|0);
  10658. $52 = ($51|0)==(0);
  10659. if ($52) {
  10660. HEAP32[3689] = 1;
  10661. _glGetFloatv(34047,(14760|0));
  10662. }
  10663. $53 = HEAP32[$23>>2]|0;
  10664. $54 = (_strcmp($53,4906)|0);
  10665. $55 = ($54|0)==(0);
  10666. if ($55) {
  10667. HEAP32[3691] = 1;
  10668. }
  10669. $56 = (($$06167) + 1)|0;
  10670. $exitcond70 = ($56|0)==($19|0);
  10671. if ($exitcond70) {
  10672. break;
  10673. } else {
  10674. $$06167 = $56;
  10675. }
  10676. }
  10677. }
  10678. $21 = HEAP32[3685]|0;
  10679. $22 = ($21|0)==(0);
  10680. if ($22) {
  10681. _TraceLog(2,5009,$vararg_buffer15);
  10682. } else {
  10683. _TraceLog(0,4934,$vararg_buffer13);
  10684. }
  10685. $57 = HEAP32[3627]|0;
  10686. $58 = ($57|0)==(0);
  10687. if ($58) {
  10688. _TraceLog(2,5145,$vararg_buffer19);
  10689. } else {
  10690. _TraceLog(0,5070,$vararg_buffer17);
  10691. }
  10692. $59 = HEAP32[3622]|0;
  10693. $60 = ($59|0)==(0);
  10694. if (!($60)) {
  10695. _TraceLog(0,5237,$vararg_buffer21);
  10696. }
  10697. $61 = HEAP32[3623]|0;
  10698. $62 = ($61|0)==(0);
  10699. if (!($62)) {
  10700. _TraceLog(0,5283,$vararg_buffer23);
  10701. }
  10702. $63 = HEAP32[3624]|0;
  10703. $64 = ($63|0)==(0);
  10704. if (!($64)) {
  10705. _TraceLog(0,5330,$vararg_buffer25);
  10706. }
  10707. $65 = HEAP32[3625]|0;
  10708. $66 = ($65|0)==(0);
  10709. if (!($66)) {
  10710. _TraceLog(0,5381,$vararg_buffer27);
  10711. }
  10712. $67 = HEAP32[3626]|0;
  10713. $68 = ($67|0)==(0);
  10714. if (!($68)) {
  10715. _TraceLog(0,5428,$vararg_buffer29);
  10716. }
  10717. $69 = HEAP32[3689]|0;
  10718. $70 = ($69|0)==(0);
  10719. if (!($70)) {
  10720. $71 = +HEAPF32[3690];
  10721. $72 = $71;
  10722. HEAPF64[$vararg_buffer31>>3] = $72;
  10723. _TraceLog(0,5475,$vararg_buffer31);
  10724. }
  10725. $73 = HEAP32[3691]|0;
  10726. $74 = ($73|0)==(0);
  10727. if (!($74)) {
  10728. _TraceLog(0,5541,$vararg_buffer34);
  10729. }
  10730. HEAP32[$vararg_buffer10>>2] = -1;
  10731. $75 = (_rlglLoadTexture($vararg_buffer10,1,1,7,1)|0);
  10732. HEAP32[3692] = $75;
  10733. $76 = ($75|0)==(0);
  10734. if ($76) {
  10735. _TraceLog(2,5645,$vararg_buffer39);
  10736. } else {
  10737. HEAP32[$vararg_buffer36>>2] = $75;
  10738. _TraceLog(0,5594,$vararg_buffer36);
  10739. }
  10740. _LoadDefaultShader($2);
  10741. dest=14772; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  10742. dest=14828; src=$2; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  10743. _LoadDefaultBuffers();
  10744. $77 = (_malloc(49152)|0);
  10745. HEAP32[3721] = $77;
  10746. $$06066 = 0;
  10747. while(1) {
  10748. $79 = HEAP32[3721]|0;
  10749. $80 = (($79) + (($$06066*12)|0)|0);
  10750. _VectorZero($3);
  10751. ;HEAP32[$80>>2]=HEAP32[$3>>2]|0;HEAP32[$80+4>>2]=HEAP32[$3+4>>2]|0;HEAP32[$80+8>>2]=HEAP32[$3+8>>2]|0;
  10752. $81 = (($$06066) + 1)|0;
  10753. $exitcond69 = ($81|0)==(4096);
  10754. if ($exitcond69) {
  10755. break;
  10756. } else {
  10757. $$06066 = $81;
  10758. }
  10759. }
  10760. $78 = (_malloc(36864)|0);
  10761. HEAP32[3722] = $78;
  10762. $$05965 = 0;
  10763. while(1) {
  10764. $82 = (((($78) + (($$05965*144)|0)|0)) + 8|0);
  10765. HEAP32[$82>>2] = 0;
  10766. $83 = (($78) + (($$05965*144)|0)|0);
  10767. HEAP32[$83>>2] = 0;
  10768. $84 = (($$05965) + 1)|0;
  10769. $exitcond = ($84|0)==(256);
  10770. if ($exitcond) {
  10771. break;
  10772. } else {
  10773. $$05965 = $84;
  10774. }
  10775. }
  10776. HEAP32[3723] = 1;
  10777. $85 = HEAP32[3692]|0;
  10778. $86 = ((($78)) + 8|0);
  10779. HEAP32[$86>>2] = $85;
  10780. HEAP32[3724] = 4;
  10781. _MatrixIdentity($4);
  10782. dest=14900; src=$4; 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));
  10783. _MatrixIdentity($4);
  10784. dest=(14964); src=$4; 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));
  10785. _MatrixIdentity($4);
  10786. dest=(15028); src=$4; 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));
  10787. _MatrixIdentity($4);
  10788. dest=(15092); src=$4; 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));
  10789. _MatrixIdentity($4);
  10790. dest=(15156); src=$4; 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));
  10791. _MatrixIdentity($4);
  10792. dest=(15220); src=$4; 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));
  10793. _MatrixIdentity($4);
  10794. dest=(15284); src=$4; 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));
  10795. _MatrixIdentity($4);
  10796. dest=(15348); src=$4; 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));
  10797. _MatrixIdentity($4);
  10798. dest=(15412); src=$4; 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));
  10799. _MatrixIdentity($4);
  10800. dest=(15476); src=$4; 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));
  10801. _MatrixIdentity($4);
  10802. dest=(15540); src=$4; 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));
  10803. _MatrixIdentity($4);
  10804. dest=(15604); src=$4; 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));
  10805. _MatrixIdentity($4);
  10806. dest=(15668); src=$4; 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));
  10807. _MatrixIdentity($4);
  10808. dest=(15732); src=$4; 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));
  10809. _MatrixIdentity($4);
  10810. dest=(15796); src=$4; 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));
  10811. _MatrixIdentity($4);
  10812. dest=(15860); src=$4; 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));
  10813. _MatrixIdentity($5);
  10814. dest=14608; src=$5; 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));
  10815. _MatrixIdentity($6);
  10816. dest=14672; src=$6; 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));
  10817. HEAP32[3651] = 14672;
  10818. _glDepthFunc(515);
  10819. _glDisable(2929);
  10820. _glBlendFunc(770,771);
  10821. _glEnable(3042);
  10822. _glCullFace(1029);
  10823. _glFrontFace(2305);
  10824. _glEnable(2884);
  10825. _glClearColor(0.0,0.0,0.0,1.0);
  10826. _glClearDepthf(1.0);
  10827. _glClear(16640);
  10828. HEAP32[3981] = $0;
  10829. HEAP32[3982] = $1;
  10830. _TraceLog(0,5684,$vararg_buffer41);
  10831. STACKTOP = sp;return;
  10832. }
  10833. function _SetupViewport() {
  10834. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
  10835. sp = STACKTOP;
  10836. $0 = HEAP32[3649]|0;
  10837. $1 = (($0|0) / 2)&-1;
  10838. $2 = HEAP32[3650]|0;
  10839. $3 = (($2|0) / 2)&-1;
  10840. $4 = HEAP32[3647]|0;
  10841. $5 = (($4) - ($0))|0;
  10842. $6 = HEAP32[3648]|0;
  10843. $7 = (($6) - ($2))|0;
  10844. _rlViewport($1,$3,$5,$7);
  10845. return;
  10846. }
  10847. function _rlMatrixMode($0) {
  10848. $0 = $0|0;
  10849. var $modelview$sink = 0, label = 0, sp = 0;
  10850. sp = STACKTOP;
  10851. switch ($0|0) {
  10852. case 5889: {
  10853. $modelview$sink = 14608;
  10854. label = 3;
  10855. break;
  10856. }
  10857. case 5888: {
  10858. $modelview$sink = 14672;
  10859. label = 3;
  10860. break;
  10861. }
  10862. default: {
  10863. }
  10864. }
  10865. if ((label|0) == 3) {
  10866. HEAP32[3651] = $modelview$sink;
  10867. }
  10868. HEAP32[3684] = $0;
  10869. return;
  10870. }
  10871. function _rlLoadIdentity() {
  10872. var $0 = 0, $1 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  10873. sp = STACKTOP;
  10874. STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
  10875. $0 = sp;
  10876. $1 = HEAP32[3651]|0;
  10877. _MatrixIdentity($0);
  10878. dest=$1; src=$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));
  10879. STACKTOP = sp;return;
  10880. }
  10881. function _rlOrtho($0,$1,$2,$3,$4,$5) {
  10882. $0 = +$0;
  10883. $1 = +$1;
  10884. $2 = +$2;
  10885. $3 = +$3;
  10886. $4 = +$4;
  10887. $5 = +$5;
  10888. var $$byval_copy = 0, $$byval_copy1 = 0, $6 = 0, $7 = 0, $8 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  10889. sp = STACKTOP;
  10890. STACKTOP = STACKTOP + 256|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(256|0);
  10891. $$byval_copy1 = sp + 192|0;
  10892. $$byval_copy = sp + 128|0;
  10893. $6 = sp + 64|0;
  10894. $7 = sp;
  10895. _MatrixOrtho($6,$0,$1,$2,$3,$4,$5);
  10896. _MatrixTranspose($6);
  10897. $8 = HEAP32[3651]|0;
  10898. dest=$$byval_copy; src=$8; 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));
  10899. dest=$$byval_copy1; src=$6; 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));
  10900. _MatrixMultiply($7,$$byval_copy,$$byval_copy1);
  10901. dest=$8; src=$7; 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));
  10902. STACKTOP = sp;return;
  10903. }
  10904. function _ClearBackground($0) {
  10905. $0 = $0|0;
  10906. var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0;
  10907. sp = STACKTOP;
  10908. $1 = HEAP8[$0>>0]|0;
  10909. $2 = ((($0)) + 1|0);
  10910. $3 = HEAP8[$2>>0]|0;
  10911. $4 = ((($0)) + 2|0);
  10912. $5 = HEAP8[$4>>0]|0;
  10913. $6 = ((($0)) + 3|0);
  10914. $7 = HEAP8[$6>>0]|0;
  10915. _rlClearColor($1,$3,$5,$7);
  10916. return;
  10917. }
  10918. function _rlClearColor($0,$1,$2,$3) {
  10919. $0 = $0|0;
  10920. $1 = $1|0;
  10921. $2 = $2|0;
  10922. $3 = $3|0;
  10923. var $10 = 0.0, $11 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0.0, $9 = 0.0, label = 0, sp = 0;
  10924. sp = STACKTOP;
  10925. $4 = (+($0&255));
  10926. $5 = $4 / 255.0;
  10927. $6 = (+($1&255));
  10928. $7 = $6 / 255.0;
  10929. $8 = (+($2&255));
  10930. $9 = $8 / 255.0;
  10931. $10 = (+($3&255));
  10932. $11 = $10 / 255.0;
  10933. _glClearColor((+$5),(+$7),(+$9),(+$11));
  10934. return;
  10935. }
  10936. function _rlViewport($0,$1,$2,$3) {
  10937. $0 = $0|0;
  10938. $1 = $1|0;
  10939. $2 = $2|0;
  10940. $3 = $3|0;
  10941. var label = 0, sp = 0;
  10942. sp = STACKTOP;
  10943. _glViewport(($0|0),($1|0),($2|0),($3|0));
  10944. return;
  10945. }
  10946. function _LoadDefaultShader($0) {
  10947. $0 = $0|0;
  10948. var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  10949. sp = STACKTOP;
  10950. STACKTOP = STACKTOP + 1008|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(1008|0);
  10951. $vararg_buffer1 = sp + 8|0;
  10952. $vararg_buffer = sp;
  10953. $1 = sp + 16|0;
  10954. $2 = sp + 513|0;
  10955. $3 = sp + 72|0;
  10956. _memcpy(($2|0),(6260|0),489)|0;
  10957. _memcpy(($3|0),(6749|0),441)|0;
  10958. $4 = (_LoadShaderProgram($2,$3)|0);
  10959. HEAP32[$1>>2] = $4;
  10960. $5 = ($4|0)==(0);
  10961. if ($5) {
  10962. HEAP32[$vararg_buffer1>>2] = $4;
  10963. _TraceLog(2,7238,$vararg_buffer1);
  10964. } else {
  10965. HEAP32[$vararg_buffer>>2] = $4;
  10966. _TraceLog(0,7190,$vararg_buffer);
  10967. }
  10968. $6 = HEAP32[$1>>2]|0;
  10969. $7 = ($6|0)==(0);
  10970. if (!($7)) {
  10971. _LoadDefaultShaderLocations($1);
  10972. }
  10973. dest=$0; src=$1; stop=dest+56|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0));
  10974. STACKTOP = sp;return;
  10975. }
  10976. function _LoadDefaultBuffers() {
  10977. var $$05365 = 0, $$05467 = 0, $$05770 = 0, $$05972 = 0, $$066 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0;
  10978. var $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, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0;
  10979. var $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, $51 = 0, $52 = 0;
  10980. var $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, $7 = 0, $70 = 0;
  10981. 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;
  10982. var $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $exitcond = 0, $exitcond75 = 0, $exitcond78 = 0, $exitcond80 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer10 = 0, $vararg_buffer14 = 0, $vararg_buffer17 = 0;
  10983. var $vararg_buffer3 = 0, $vararg_buffer7 = 0, $vararg_ptr13 = 0, $vararg_ptr20 = 0, $vararg_ptr21 = 0, $vararg_ptr22 = 0, $vararg_ptr6 = 0, label = 0, sp = 0;
  10984. sp = STACKTOP;
  10985. STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
  10986. $vararg_buffer17 = sp + 48|0;
  10987. $vararg_buffer14 = sp + 40|0;
  10988. $vararg_buffer10 = sp + 32|0;
  10989. $vararg_buffer7 = sp + 24|0;
  10990. $vararg_buffer3 = sp + 16|0;
  10991. $vararg_buffer1 = sp + 8|0;
  10992. $vararg_buffer = sp;
  10993. $0 = (_malloc(24576)|0);
  10994. HEAP32[(15944)>>2] = $0;
  10995. $1 = (_malloc(8192)|0);
  10996. HEAP32[(15952)>>2] = $1;
  10997. HEAP32[(15948)>>2] = 0;
  10998. HEAP32[(15956)>>2] = 0;
  10999. _memset(($0|0),0,24576)|0;
  11000. $$05972 = 0;
  11001. while(1) {
  11002. $2 = HEAP32[(15952)>>2]|0;
  11003. $3 = (($2) + ($$05972)|0);
  11004. HEAP8[$3>>0] = 0;
  11005. $4 = (($$05972) + 1)|0;
  11006. $exitcond80 = ($4|0)==(8192);
  11007. if ($exitcond80) {
  11008. break;
  11009. } else {
  11010. $$05972 = $4;
  11011. }
  11012. }
  11013. HEAP32[3983] = 0;
  11014. HEAP32[(15940)>>2] = 0;
  11015. HEAP32[(15936)>>2] = 0;
  11016. $5 = (_malloc(73728)|0);
  11017. HEAP32[(15992)>>2] = $5;
  11018. $6 = (_malloc(24576)|0);
  11019. HEAP32[(16000)>>2] = $6;
  11020. HEAP32[(15996)>>2] = 0;
  11021. HEAP32[(16004)>>2] = 0;
  11022. _memset(($5|0),0,73728)|0;
  11023. $$05770 = 0;
  11024. while(1) {
  11025. $7 = HEAP32[(16000)>>2]|0;
  11026. $8 = (($7) + ($$05770)|0);
  11027. HEAP8[$8>>0] = 0;
  11028. $9 = (($$05770) + 1)|0;
  11029. $exitcond78 = ($9|0)==(24576);
  11030. if ($exitcond78) {
  11031. break;
  11032. } else {
  11033. $$05770 = $9;
  11034. }
  11035. }
  11036. HEAP32[3995] = 0;
  11037. HEAP32[(15988)>>2] = 0;
  11038. HEAP32[(15984)>>2] = 0;
  11039. $10 = (_malloc(49152)|0);
  11040. HEAP32[(16040)>>2] = $10;
  11041. $11 = (_malloc(32768)|0);
  11042. HEAP32[(16044)>>2] = $11;
  11043. $12 = (_malloc(16384)|0);
  11044. HEAP32[(16048)>>2] = $12;
  11045. $13 = (_malloc(12288)|0);
  11046. HEAP32[(16052)>>2] = $13;
  11047. $14 = HEAP32[(16040)>>2]|0;
  11048. _memset(($14|0),0,49152)|0;
  11049. $15 = HEAP32[(16044)>>2]|0;
  11050. _memset(($15|0),0,32768)|0;
  11051. $$05467 = 0;
  11052. while(1) {
  11053. $17 = HEAP32[(16048)>>2]|0;
  11054. $18 = (($17) + ($$05467)|0);
  11055. HEAP8[$18>>0] = 0;
  11056. $19 = (($$05467) + 1)|0;
  11057. $exitcond75 = ($19|0)==(16384);
  11058. if ($exitcond75) {
  11059. break;
  11060. } else {
  11061. $$05467 = $19;
  11062. }
  11063. }
  11064. $16 = HEAP32[(16052)>>2]|0;
  11065. $$05365 = 0;$$066 = 0;
  11066. while(1) {
  11067. $22 = $$05365 << 2;
  11068. $23 = $22&65535;
  11069. $24 = (($16) + ($$066<<1)|0);
  11070. HEAP16[$24>>1] = $23;
  11071. $25 = $22 | 1;
  11072. $26 = $25&65535;
  11073. $27 = $$066 | 1;
  11074. $28 = (($16) + ($27<<1)|0);
  11075. HEAP16[$28>>1] = $26;
  11076. $29 = $22 | 2;
  11077. $30 = $29&65535;
  11078. $31 = (($$066) + 2)|0;
  11079. $32 = (($16) + ($31<<1)|0);
  11080. HEAP16[$32>>1] = $30;
  11081. $33 = (($$066) + 3)|0;
  11082. $34 = (($16) + ($33<<1)|0);
  11083. HEAP16[$34>>1] = $23;
  11084. $35 = (($$066) + 4)|0;
  11085. $36 = (($16) + ($35<<1)|0);
  11086. HEAP16[$36>>1] = $30;
  11087. $37 = $22 | 3;
  11088. $38 = $37&65535;
  11089. $39 = (($$066) + 5)|0;
  11090. $40 = (($16) + ($39<<1)|0);
  11091. HEAP16[$40>>1] = $38;
  11092. $41 = (($$05365) + 1)|0;
  11093. $42 = (($$066) + 6)|0;
  11094. $exitcond = ($41|0)==(1024);
  11095. if ($exitcond) {
  11096. break;
  11097. } else {
  11098. $$05365 = $41;$$066 = $42;
  11099. }
  11100. }
  11101. HEAP32[4007] = 0;
  11102. HEAP32[(16032)>>2] = 0;
  11103. HEAP32[(16036)>>2] = 0;
  11104. _TraceLog(0,5731,$vararg_buffer);
  11105. $20 = HEAP32[3685]|0;
  11106. $21 = ($20|0)==(0);
  11107. if (!($21)) {
  11108. $43 = HEAP32[3686]|0;
  11109. FUNCTION_TABLE_vii[$43 & 63](1,(15960));
  11110. $44 = HEAP32[3687]|0;
  11111. $45 = HEAP32[(15960)>>2]|0;
  11112. FUNCTION_TABLE_vi[$44 & 31]($45);
  11113. }
  11114. _glGenBuffers(2,((15964)|0));
  11115. $46 = HEAP32[(15964)>>2]|0;
  11116. _glBindBuffer(34962,($46|0));
  11117. $47 = HEAP32[(15944)>>2]|0;
  11118. _glBufferData(34962,24576,($47|0),35048);
  11119. $48 = HEAP32[(14832)>>2]|0;
  11120. _glEnableVertexAttribArray(($48|0));
  11121. $49 = HEAP32[(14832)>>2]|0;
  11122. _glVertexAttribPointer(($49|0),3,5126,0,0,(0|0));
  11123. _glGenBuffers(2,((15968)|0));
  11124. $50 = HEAP32[(15968)>>2]|0;
  11125. _glBindBuffer(34962,($50|0));
  11126. $51 = HEAP32[(15952)>>2]|0;
  11127. _glBufferData(34962,8192,($51|0),35048);
  11128. $52 = HEAP32[(14852)>>2]|0;
  11129. _glEnableVertexAttribArray(($52|0));
  11130. $53 = HEAP32[(14852)>>2]|0;
  11131. _glVertexAttribPointer(($53|0),4,5121,1,0,(0|0));
  11132. $54 = HEAP32[3685]|0;
  11133. $55 = ($54|0)==(0);
  11134. if ($55) {
  11135. $57 = HEAP32[(15964)>>2]|0;
  11136. $58 = HEAP32[(15968)>>2]|0;
  11137. HEAP32[$vararg_buffer3>>2] = $57;
  11138. $vararg_ptr6 = ((($vararg_buffer3)) + 4|0);
  11139. HEAP32[$vararg_ptr6>>2] = $58;
  11140. _TraceLog(0,5869,$vararg_buffer3);
  11141. } else {
  11142. $56 = HEAP32[(15960)>>2]|0;
  11143. HEAP32[$vararg_buffer1>>2] = $56;
  11144. _TraceLog(0,5804,$vararg_buffer1);
  11145. }
  11146. $59 = HEAP32[3685]|0;
  11147. $60 = ($59|0)==(0);
  11148. if (!($60)) {
  11149. $61 = HEAP32[3686]|0;
  11150. FUNCTION_TABLE_vii[$61 & 63](1,(16008));
  11151. $62 = HEAP32[3687]|0;
  11152. $63 = HEAP32[(16008)>>2]|0;
  11153. FUNCTION_TABLE_vi[$62 & 31]($63);
  11154. }
  11155. _glGenBuffers(1,((16012)|0));
  11156. $64 = HEAP32[(16012)>>2]|0;
  11157. _glBindBuffer(34962,($64|0));
  11158. $65 = HEAP32[(15992)>>2]|0;
  11159. _glBufferData(34962,73728,($65|0),35048);
  11160. $66 = HEAP32[(14832)>>2]|0;
  11161. _glEnableVertexAttribArray(($66|0));
  11162. $67 = HEAP32[(14832)>>2]|0;
  11163. _glVertexAttribPointer(($67|0),3,5126,0,0,(0|0));
  11164. _glGenBuffers(1,((16016)|0));
  11165. $68 = HEAP32[(16016)>>2]|0;
  11166. _glBindBuffer(34962,($68|0));
  11167. $69 = HEAP32[(16000)>>2]|0;
  11168. _glBufferData(34962,24576,($69|0),35048);
  11169. $70 = HEAP32[(14852)>>2]|0;
  11170. _glEnableVertexAttribArray(($70|0));
  11171. $71 = HEAP32[(14852)>>2]|0;
  11172. _glVertexAttribPointer(($71|0),4,5121,1,0,(0|0));
  11173. $72 = HEAP32[3685]|0;
  11174. $73 = ($72|0)==(0);
  11175. if ($73) {
  11176. $75 = HEAP32[(16012)>>2]|0;
  11177. $76 = HEAP32[(16016)>>2]|0;
  11178. HEAP32[$vararg_buffer10>>2] = $75;
  11179. $vararg_ptr13 = ((($vararg_buffer10)) + 4|0);
  11180. HEAP32[$vararg_ptr13>>2] = $76;
  11181. _TraceLog(0,6015,$vararg_buffer10);
  11182. } else {
  11183. $74 = HEAP32[(16008)>>2]|0;
  11184. HEAP32[$vararg_buffer7>>2] = $74;
  11185. _TraceLog(0,5946,$vararg_buffer7);
  11186. }
  11187. $77 = HEAP32[3685]|0;
  11188. $78 = ($77|0)==(0);
  11189. if (!($78)) {
  11190. $79 = HEAP32[3686]|0;
  11191. FUNCTION_TABLE_vii[$79 & 63](1,(16056));
  11192. $80 = HEAP32[3687]|0;
  11193. $81 = HEAP32[(16056)>>2]|0;
  11194. FUNCTION_TABLE_vi[$80 & 31]($81);
  11195. }
  11196. _glGenBuffers(1,((16060)|0));
  11197. $82 = HEAP32[(16060)>>2]|0;
  11198. _glBindBuffer(34962,($82|0));
  11199. $83 = HEAP32[(16040)>>2]|0;
  11200. _glBufferData(34962,49152,($83|0),35048);
  11201. $84 = HEAP32[(14832)>>2]|0;
  11202. _glEnableVertexAttribArray(($84|0));
  11203. $85 = HEAP32[(14832)>>2]|0;
  11204. _glVertexAttribPointer(($85|0),3,5126,0,0,(0|0));
  11205. _glGenBuffers(1,((16064)|0));
  11206. $86 = HEAP32[(16064)>>2]|0;
  11207. _glBindBuffer(34962,($86|0));
  11208. $87 = HEAP32[(16044)>>2]|0;
  11209. _glBufferData(34962,32768,($87|0),35048);
  11210. $88 = HEAP32[(14836)>>2]|0;
  11211. _glEnableVertexAttribArray(($88|0));
  11212. $89 = HEAP32[(14836)>>2]|0;
  11213. _glVertexAttribPointer(($89|0),2,5126,0,0,(0|0));
  11214. _glGenBuffers(1,((16068)|0));
  11215. $90 = HEAP32[(16068)>>2]|0;
  11216. _glBindBuffer(34962,($90|0));
  11217. $91 = HEAP32[(16048)>>2]|0;
  11218. _glBufferData(34962,16384,($91|0),35048);
  11219. $92 = HEAP32[(14852)>>2]|0;
  11220. _glEnableVertexAttribArray(($92|0));
  11221. $93 = HEAP32[(14852)>>2]|0;
  11222. _glVertexAttribPointer(($93|0),4,5121,1,0,(0|0));
  11223. _glGenBuffers(1,((16072)|0));
  11224. $94 = HEAP32[(16072)>>2]|0;
  11225. _glBindBuffer(34963,($94|0));
  11226. $95 = HEAP32[(16052)>>2]|0;
  11227. _glBufferData(34963,12288,($95|0),35044);
  11228. $96 = HEAP32[3685]|0;
  11229. $97 = ($96|0)==(0);
  11230. if ($97) {
  11231. $99 = HEAP32[(16060)>>2]|0;
  11232. $100 = HEAP32[(16064)>>2]|0;
  11233. $101 = HEAP32[(16068)>>2]|0;
  11234. $102 = HEAP32[(16072)>>2]|0;
  11235. HEAP32[$vararg_buffer17>>2] = $99;
  11236. $vararg_ptr20 = ((($vararg_buffer17)) + 4|0);
  11237. HEAP32[$vararg_ptr20>>2] = $100;
  11238. $vararg_ptr21 = ((($vararg_buffer17)) + 8|0);
  11239. HEAP32[$vararg_ptr21>>2] = $101;
  11240. $vararg_ptr22 = ((($vararg_buffer17)) + 12|0);
  11241. HEAP32[$vararg_ptr22>>2] = $102;
  11242. _TraceLog(0,6161,$vararg_buffer17);
  11243. } else {
  11244. $98 = HEAP32[(16056)>>2]|0;
  11245. HEAP32[$vararg_buffer14>>2] = $98;
  11246. _TraceLog(0,6096,$vararg_buffer14);
  11247. }
  11248. $103 = HEAP32[3685]|0;
  11249. $104 = ($103|0)==(0);
  11250. if ($104) {
  11251. STACKTOP = sp;return;
  11252. }
  11253. $105 = HEAP32[3687]|0;
  11254. FUNCTION_TABLE_vi[$105 & 31](0);
  11255. STACKTOP = sp;return;
  11256. }
  11257. function _LoadShaderProgram($0,$1) {
  11258. $0 = $0|0;
  11259. $1 = $1|0;
  11260. var $$0 = 0, $$alloca_mul = 0, $$alloca_mul34 = 0, $$alloca_mul36 = 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;
  11261. var $25 = 0, $26 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer10 = 0, $vararg_buffer13 = 0, $vararg_buffer16 = 0, $vararg_buffer19 = 0, $vararg_buffer22 = 0, $vararg_buffer4 = 0, $vararg_buffer7 = 0, label = 0, sp = 0;
  11262. sp = STACKTOP;
  11263. STACKTOP = STACKTOP + 96|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(96|0);
  11264. $vararg_buffer22 = sp + 64|0;
  11265. $vararg_buffer19 = sp + 56|0;
  11266. $vararg_buffer16 = sp + 48|0;
  11267. $vararg_buffer13 = sp + 40|0;
  11268. $vararg_buffer10 = sp + 32|0;
  11269. $vararg_buffer7 = sp + 24|0;
  11270. $vararg_buffer4 = sp + 16|0;
  11271. $vararg_buffer1 = sp + 8|0;
  11272. $vararg_buffer = sp;
  11273. $2 = sp + 80|0;
  11274. $3 = sp + 76|0;
  11275. $4 = sp + 72|0;
  11276. $5 = sp + 68|0;
  11277. $6 = (_glCreateShader(35633)|0);
  11278. $7 = (_glCreateShader(35632)|0);
  11279. HEAP32[$2>>2] = $0;
  11280. HEAP32[$3>>2] = $1;
  11281. _glShaderSource(($6|0),1,($2|0),(0|0));
  11282. _glShaderSource(($7|0),1,($3|0),(0|0));
  11283. HEAP32[$4>>2] = 0;
  11284. _glCompileShader(($6|0));
  11285. _glGetShaderiv(($6|0),35713,($4|0));
  11286. $8 = HEAP32[$4>>2]|0;
  11287. $9 = ($8|0)==(1);
  11288. if ($9) {
  11289. HEAP32[$vararg_buffer4>>2] = $6;
  11290. _TraceLog(0,7494,$vararg_buffer4);
  11291. } else {
  11292. HEAP32[$vararg_buffer>>2] = $6;
  11293. _TraceLog(2,7442,$vararg_buffer);
  11294. HEAP32[$vararg_buffer>>2] = 0;
  11295. _glGetShaderiv(($6|0),35716,($vararg_buffer|0));
  11296. $10 = HEAP32[$vararg_buffer>>2]|0;
  11297. $11 = (_llvm_stacksave()|0);
  11298. $$alloca_mul = $10;
  11299. $12 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(((((1*$$alloca_mul)|0)+15)&-16)|0);;
  11300. $13 = HEAP32[$vararg_buffer>>2]|0;
  11301. _glGetShaderInfoLog(($6|0),($13|0),($5|0),($12|0));
  11302. HEAP32[$vararg_buffer1>>2] = $12;
  11303. _TraceLog(0,7491,$vararg_buffer1);
  11304. _llvm_stackrestore(($11|0));
  11305. }
  11306. _glCompileShader(($7|0));
  11307. _glGetShaderiv(($7|0),35713,($4|0));
  11308. $14 = HEAP32[$4>>2]|0;
  11309. $15 = ($14|0)==(1);
  11310. if ($15) {
  11311. HEAP32[$vararg_buffer13>>2] = $7;
  11312. _TraceLog(0,7595,$vararg_buffer13);
  11313. } else {
  11314. HEAP32[$vararg_buffer7>>2] = $7;
  11315. _TraceLog(2,7544,$vararg_buffer7);
  11316. HEAP32[$vararg_buffer7>>2] = 0;
  11317. _glGetShaderiv(($7|0),35716,($vararg_buffer7|0));
  11318. $16 = HEAP32[$vararg_buffer7>>2]|0;
  11319. $17 = (_llvm_stacksave()|0);
  11320. $$alloca_mul34 = $16;
  11321. $18 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul34)|0)+15)&-16)|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(((((1*$$alloca_mul34)|0)+15)&-16)|0);;
  11322. $19 = HEAP32[$vararg_buffer7>>2]|0;
  11323. _glGetShaderInfoLog(($7|0),($19|0),($5|0),($18|0));
  11324. HEAP32[$vararg_buffer10>>2] = $18;
  11325. _TraceLog(0,7491,$vararg_buffer10);
  11326. _llvm_stackrestore(($17|0));
  11327. }
  11328. $20 = (_glCreateProgram()|0);
  11329. _glAttachShader(($20|0),($6|0));
  11330. _glAttachShader(($20|0),($7|0));
  11331. _glBindAttribLocation(($20|0),0,(7286|0));
  11332. _glBindAttribLocation(($20|0),1,(7301|0));
  11333. _glBindAttribLocation(($20|0),2,(7332|0));
  11334. _glBindAttribLocation(($20|0),3,(7359|0));
  11335. _glBindAttribLocation(($20|0),4,(7345|0));
  11336. _glBindAttribLocation(($20|0),5,(7316|0));
  11337. _glLinkProgram(($20|0));
  11338. _glGetProgramiv(($20|0),35714,($4|0));
  11339. $21 = HEAP32[$4>>2]|0;
  11340. $22 = ($21|0)==(0);
  11341. if ($22) {
  11342. HEAP32[$vararg_buffer16>>2] = $20;
  11343. _TraceLog(2,7647,$vararg_buffer16);
  11344. HEAP32[$vararg_buffer16>>2] = 0;
  11345. _glGetProgramiv(($20|0),35716,($vararg_buffer16|0));
  11346. $23 = HEAP32[$vararg_buffer16>>2]|0;
  11347. $24 = (_llvm_stacksave()|0);
  11348. $$alloca_mul36 = $23;
  11349. $25 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul36)|0)+15)&-16)|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(((((1*$$alloca_mul36)|0)+15)&-16)|0);;
  11350. $26 = HEAP32[$vararg_buffer16>>2]|0;
  11351. _glGetProgramInfoLog(($20|0),($26|0),($5|0),($25|0));
  11352. HEAP32[$vararg_buffer19>>2] = $25;
  11353. _TraceLog(0,7491,$vararg_buffer19);
  11354. _glDeleteProgram(($20|0));
  11355. _llvm_stackrestore(($24|0));
  11356. $$0 = 0;
  11357. _glDeleteShader(($6|0));
  11358. _glDeleteShader(($7|0));
  11359. STACKTOP = sp;return ($$0|0);
  11360. } else {
  11361. HEAP32[$vararg_buffer22>>2] = $20;
  11362. _TraceLog(0,7693,$vararg_buffer22);
  11363. $$0 = $20;
  11364. _glDeleteShader(($6|0));
  11365. _glDeleteShader(($7|0));
  11366. STACKTOP = sp;return ($$0|0);
  11367. }
  11368. return (0)|0;
  11369. }
  11370. function _LoadDefaultShaderLocations($0) {
  11371. $0 = $0|0;
  11372. var $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, $27 = 0;
  11373. var $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, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0;
  11374. var sp = 0;
  11375. sp = STACKTOP;
  11376. $1 = HEAP32[$0>>2]|0;
  11377. $2 = (_glGetAttribLocation(($1|0),(7286|0))|0);
  11378. $3 = ((($0)) + 4|0);
  11379. HEAP32[$3>>2] = $2;
  11380. $4 = HEAP32[$0>>2]|0;
  11381. $5 = (_glGetAttribLocation(($4|0),(7301|0))|0);
  11382. $6 = ((($0)) + 8|0);
  11383. HEAP32[$6>>2] = $5;
  11384. $7 = HEAP32[$0>>2]|0;
  11385. $8 = (_glGetAttribLocation(($7|0),(7316|0))|0);
  11386. $9 = ((($0)) + 12|0);
  11387. HEAP32[$9>>2] = $8;
  11388. $10 = HEAP32[$0>>2]|0;
  11389. $11 = (_glGetAttribLocation(($10|0),(7332|0))|0);
  11390. $12 = ((($0)) + 16|0);
  11391. HEAP32[$12>>2] = $11;
  11392. $13 = HEAP32[$0>>2]|0;
  11393. $14 = (_glGetAttribLocation(($13|0),(7345|0))|0);
  11394. $15 = ((($0)) + 20|0);
  11395. HEAP32[$15>>2] = $14;
  11396. $16 = HEAP32[$0>>2]|0;
  11397. $17 = (_glGetAttribLocation(($16|0),(7359|0))|0);
  11398. $18 = ((($0)) + 24|0);
  11399. HEAP32[$18>>2] = $17;
  11400. $19 = HEAP32[$0>>2]|0;
  11401. $20 = (_glGetUniformLocation(($19|0),(7371|0))|0);
  11402. $21 = ((($0)) + 28|0);
  11403. HEAP32[$21>>2] = $20;
  11404. $22 = HEAP32[$0>>2]|0;
  11405. $23 = (_glGetUniformLocation(($22|0),(7381|0))|0);
  11406. $24 = ((($0)) + 32|0);
  11407. HEAP32[$24>>2] = $23;
  11408. $25 = HEAP32[$0>>2]|0;
  11409. $26 = (_glGetUniformLocation(($25|0),(7392|0))|0);
  11410. $27 = ((($0)) + 36|0);
  11411. HEAP32[$27>>2] = $26;
  11412. $28 = HEAP32[$0>>2]|0;
  11413. $29 = (_glGetUniformLocation(($28|0),(7403|0))|0);
  11414. $30 = ((($0)) + 40|0);
  11415. HEAP32[$30>>2] = $29;
  11416. $31 = HEAP32[$0>>2]|0;
  11417. $32 = (_glGetUniformLocation(($31|0),(7415|0))|0);
  11418. $33 = ((($0)) + 44|0);
  11419. HEAP32[$33>>2] = $32;
  11420. $34 = HEAP32[$0>>2]|0;
  11421. $35 = (_glGetUniformLocation(($34|0),(7424|0))|0);
  11422. $36 = ((($0)) + 48|0);
  11423. HEAP32[$36>>2] = $35;
  11424. $37 = HEAP32[$0>>2]|0;
  11425. $38 = (_glGetUniformLocation(($37|0),(7433|0))|0);
  11426. $39 = ((($0)) + 52|0);
  11427. HEAP32[$39>>2] = $38;
  11428. return;
  11429. }
  11430. function _IsMouseButtonPressed($0) {
  11431. $0 = $0|0;
  11432. var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
  11433. sp = STACKTOP;
  11434. $1 = (17229 + ($0)|0);
  11435. $2 = HEAP8[$1>>0]|0;
  11436. $3 = (17232 + ($0)|0);
  11437. $4 = HEAP8[$3>>0]|0;
  11438. $5 = ($2<<24>>24)!=($4<<24>>24);
  11439. $6 = ($2<<24>>24)==(1);
  11440. $or$cond = $6 & $5;
  11441. $$0 = $or$cond&1;
  11442. return ($$0|0);
  11443. }
  11444. function _IsMouseButtonReleased($0) {
  11445. $0 = $0|0;
  11446. var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $or$cond = 0, label = 0, sp = 0;
  11447. sp = STACKTOP;
  11448. $1 = (17229 + ($0)|0);
  11449. $2 = HEAP8[$1>>0]|0;
  11450. $3 = (17232 + ($0)|0);
  11451. $4 = HEAP8[$3>>0]|0;
  11452. $5 = ($2<<24>>24)!=($4<<24>>24);
  11453. $6 = ($2<<24>>24)==(0);
  11454. $or$cond = $6 & $5;
  11455. $$0 = $or$cond&1;
  11456. return ($$0|0);
  11457. }
  11458. function _rlClearScreenBuffers() {
  11459. var label = 0, sp = 0;
  11460. sp = STACKTOP;
  11461. _glClear(16640);
  11462. return;
  11463. }
  11464. function _CloseWindow() {
  11465. var $0 = 0, $vararg_buffer = 0, label = 0, sp = 0;
  11466. sp = STACKTOP;
  11467. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  11468. $vararg_buffer = sp;
  11469. _UnloadDefaultFont();
  11470. _rlglClose();
  11471. $0 = HEAP32[3604]|0;
  11472. _glfwDestroyWindow(($0|0));
  11473. _glfwTerminate();
  11474. _TraceLog(0,8005,$vararg_buffer);
  11475. STACKTOP = sp;return;
  11476. }
  11477. function _UnloadDefaultFont() {
  11478. var $$byval_copy = 0, $0 = 0, label = 0, sp = 0;
  11479. sp = STACKTOP;
  11480. STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
  11481. $$byval_copy = sp;
  11482. ;HEAP32[$$byval_copy>>2]=HEAP32[14456>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[14456+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[14456+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[14456+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[14456+16>>2]|0;
  11483. _UnloadTexture($$byval_copy);
  11484. $0 = HEAP32[(14484)>>2]|0;
  11485. _free($0);
  11486. STACKTOP = sp;return;
  11487. }
  11488. function _rlglClose() {
  11489. var $0 = 0, $1 = 0, $vararg_buffer = 0, label = 0, sp = 0;
  11490. sp = STACKTOP;
  11491. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  11492. $vararg_buffer = sp;
  11493. _UnloadDefaultShader();
  11494. _UnloadDefaultBuffers();
  11495. _glDeleteTextures(1,(14768|0));
  11496. $0 = HEAP32[3692]|0;
  11497. HEAP32[$vararg_buffer>>2] = $0;
  11498. _TraceLog(0,8032,$vararg_buffer);
  11499. $1 = HEAP32[3722]|0;
  11500. _free($1);
  11501. STACKTOP = sp;return;
  11502. }
  11503. function _UnloadDefaultShader() {
  11504. var $0 = 0, label = 0, sp = 0;
  11505. sp = STACKTOP;
  11506. _glUseProgram(0);
  11507. $0 = HEAP32[3693]|0;
  11508. _glDeleteProgram(($0|0));
  11509. return;
  11510. }
  11511. function _UnloadDefaultBuffers() {
  11512. 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, label = 0, sp = 0;
  11513. sp = STACKTOP;
  11514. $0 = HEAP32[3685]|0;
  11515. $1 = ($0|0)==(0);
  11516. if (!($1)) {
  11517. $2 = HEAP32[3687]|0;
  11518. FUNCTION_TABLE_vi[$2 & 31](0);
  11519. }
  11520. _glDisableVertexAttribArray(0);
  11521. _glDisableVertexAttribArray(1);
  11522. _glDisableVertexAttribArray(2);
  11523. _glDisableVertexAttribArray(3);
  11524. _glBindBuffer(34962,0);
  11525. _glBindBuffer(34963,0);
  11526. _glDeleteBuffers(1,((15964)|0));
  11527. _glDeleteBuffers(1,((15968)|0));
  11528. _glDeleteBuffers(1,((16012)|0));
  11529. _glDeleteBuffers(1,((16016)|0));
  11530. _glDeleteBuffers(1,((16060)|0));
  11531. _glDeleteBuffers(1,((16064)|0));
  11532. _glDeleteBuffers(1,((16068)|0));
  11533. _glDeleteBuffers(1,((16072)|0));
  11534. $3 = HEAP32[3685]|0;
  11535. $4 = ($3|0)==(0);
  11536. if (!($4)) {
  11537. $5 = HEAP32[3688]|0;
  11538. FUNCTION_TABLE_vii[$5 & 63](1,(15960));
  11539. $6 = HEAP32[3688]|0;
  11540. FUNCTION_TABLE_vii[$6 & 63](1,(16008));
  11541. $7 = HEAP32[3688]|0;
  11542. FUNCTION_TABLE_vii[$7 & 63](1,(16056));
  11543. }
  11544. $8 = HEAP32[(15944)>>2]|0;
  11545. _free($8);
  11546. $9 = HEAP32[(15952)>>2]|0;
  11547. _free($9);
  11548. $10 = HEAP32[(15992)>>2]|0;
  11549. _free($10);
  11550. $11 = HEAP32[(16000)>>2]|0;
  11551. _free($11);
  11552. $12 = HEAP32[(16040)>>2]|0;
  11553. _free($12);
  11554. $13 = HEAP32[(16044)>>2]|0;
  11555. _free($13);
  11556. $14 = HEAP32[(16048)>>2]|0;
  11557. _free($14);
  11558. $15 = HEAP32[(16052)>>2]|0;
  11559. _free($15);
  11560. return;
  11561. }
  11562. function _UnloadTexture($0) {
  11563. $0 = $0|0;
  11564. var $1 = 0, $2 = 0, $3 = 0, $vararg_buffer = 0, label = 0, sp = 0;
  11565. sp = STACKTOP;
  11566. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  11567. $vararg_buffer = sp;
  11568. $1 = HEAP32[$0>>2]|0;
  11569. $2 = ($1|0)==(0);
  11570. if ($2) {
  11571. STACKTOP = sp;return;
  11572. }
  11573. _rlDeleteTextures($1);
  11574. $3 = HEAP32[$0>>2]|0;
  11575. HEAP32[$vararg_buffer>>2] = $3;
  11576. _TraceLog(0,8097,$vararg_buffer);
  11577. STACKTOP = sp;return;
  11578. }
  11579. function _rlDeleteTextures($0) {
  11580. $0 = $0|0;
  11581. var $1 = 0, $2 = 0, label = 0, sp = 0;
  11582. sp = STACKTOP;
  11583. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  11584. $1 = sp;
  11585. HEAP32[$1>>2] = $0;
  11586. $2 = ($0|0)==(0);
  11587. if (!($2)) {
  11588. _glDeleteTextures(1,($1|0));
  11589. }
  11590. STACKTOP = sp;return;
  11591. }
  11592. function _BeginDrawing() {
  11593. var $0 = 0.0, $1 = 0.0, $2 = 0.0, $downscaleView$byval_copy = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  11594. sp = STACKTOP;
  11595. STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
  11596. $downscaleView$byval_copy = sp;
  11597. $0 = (+_GetTime());
  11598. HEAPF64[1788] = $0;
  11599. $1 = +HEAPF64[1771];
  11600. $2 = $0 - $1;
  11601. HEAPF64[1789] = $2;
  11602. HEAPF64[1771] = $0;
  11603. _rlClearScreenBuffers();
  11604. _rlLoadIdentity();
  11605. dest=$downscaleView$byval_copy; src=14512; 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));
  11606. (_MatrixToFloat($downscaleView$byval_copy)|0);
  11607. _rlMultMatrixf(16084);
  11608. STACKTOP = sp;return;
  11609. }
  11610. function _MatrixToFloat($0) {
  11611. $0 = $0|0;
  11612. var $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, $27 = 0;
  11613. var $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  11614. sp = STACKTOP;
  11615. $1 = HEAP32[$0>>2]|0;
  11616. HEAP32[4021] = $1;
  11617. $2 = ((($0)) + 4|0);
  11618. $3 = HEAP32[$2>>2]|0;
  11619. HEAP32[(16088)>>2] = $3;
  11620. $4 = ((($0)) + 8|0);
  11621. $5 = HEAP32[$4>>2]|0;
  11622. HEAP32[(16092)>>2] = $5;
  11623. $6 = ((($0)) + 12|0);
  11624. $7 = HEAP32[$6>>2]|0;
  11625. HEAP32[(16096)>>2] = $7;
  11626. $8 = ((($0)) + 16|0);
  11627. $9 = HEAP32[$8>>2]|0;
  11628. HEAP32[(16100)>>2] = $9;
  11629. $10 = ((($0)) + 20|0);
  11630. $11 = HEAP32[$10>>2]|0;
  11631. HEAP32[(16104)>>2] = $11;
  11632. $12 = ((($0)) + 24|0);
  11633. $13 = HEAP32[$12>>2]|0;
  11634. HEAP32[(16108)>>2] = $13;
  11635. $14 = ((($0)) + 28|0);
  11636. $15 = HEAP32[$14>>2]|0;
  11637. HEAP32[(16112)>>2] = $15;
  11638. $16 = ((($0)) + 32|0);
  11639. $17 = HEAP32[$16>>2]|0;
  11640. HEAP32[(16116)>>2] = $17;
  11641. $18 = ((($0)) + 36|0);
  11642. $19 = HEAP32[$18>>2]|0;
  11643. HEAP32[(16120)>>2] = $19;
  11644. $20 = ((($0)) + 40|0);
  11645. $21 = HEAP32[$20>>2]|0;
  11646. HEAP32[(16124)>>2] = $21;
  11647. $22 = ((($0)) + 44|0);
  11648. $23 = HEAP32[$22>>2]|0;
  11649. HEAP32[(16128)>>2] = $23;
  11650. $24 = ((($0)) + 48|0);
  11651. $25 = HEAP32[$24>>2]|0;
  11652. HEAP32[(16132)>>2] = $25;
  11653. $26 = ((($0)) + 52|0);
  11654. $27 = HEAP32[$26>>2]|0;
  11655. HEAP32[(16136)>>2] = $27;
  11656. $28 = ((($0)) + 56|0);
  11657. $29 = HEAP32[$28>>2]|0;
  11658. HEAP32[(16140)>>2] = $29;
  11659. $30 = ((($0)) + 60|0);
  11660. $31 = HEAP32[$30>>2]|0;
  11661. HEAP32[(16144)>>2] = $31;
  11662. return (16084|0);
  11663. }
  11664. function _rlMultMatrixf($0) {
  11665. $0 = $0|0;
  11666. var $$byval_copy = 0, $$byval_copy1 = 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;
  11667. var $26 = 0, $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;
  11668. var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  11669. sp = STACKTOP;
  11670. STACKTOP = STACKTOP + 256|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(256|0);
  11671. $$byval_copy1 = sp + 192|0;
  11672. $$byval_copy = sp + 128|0;
  11673. $1 = sp + 64|0;
  11674. $2 = sp;
  11675. $3 = HEAP32[$0>>2]|0;
  11676. HEAP32[$1>>2] = $3;
  11677. $4 = ((($1)) + 4|0);
  11678. $5 = ((($0)) + 4|0);
  11679. $6 = HEAP32[$5>>2]|0;
  11680. HEAP32[$4>>2] = $6;
  11681. $7 = ((($1)) + 8|0);
  11682. $8 = ((($0)) + 8|0);
  11683. $9 = HEAP32[$8>>2]|0;
  11684. HEAP32[$7>>2] = $9;
  11685. $10 = ((($1)) + 12|0);
  11686. $11 = ((($0)) + 12|0);
  11687. $12 = HEAP32[$11>>2]|0;
  11688. HEAP32[$10>>2] = $12;
  11689. $13 = ((($1)) + 16|0);
  11690. $14 = ((($0)) + 16|0);
  11691. $15 = HEAP32[$14>>2]|0;
  11692. HEAP32[$13>>2] = $15;
  11693. $16 = ((($1)) + 20|0);
  11694. $17 = ((($0)) + 20|0);
  11695. $18 = HEAP32[$17>>2]|0;
  11696. HEAP32[$16>>2] = $18;
  11697. $19 = ((($1)) + 24|0);
  11698. $20 = ((($0)) + 24|0);
  11699. $21 = HEAP32[$20>>2]|0;
  11700. HEAP32[$19>>2] = $21;
  11701. $22 = ((($1)) + 28|0);
  11702. $23 = ((($0)) + 28|0);
  11703. $24 = HEAP32[$23>>2]|0;
  11704. HEAP32[$22>>2] = $24;
  11705. $25 = ((($1)) + 32|0);
  11706. $26 = ((($0)) + 32|0);
  11707. $27 = HEAP32[$26>>2]|0;
  11708. HEAP32[$25>>2] = $27;
  11709. $28 = ((($1)) + 36|0);
  11710. $29 = ((($0)) + 36|0);
  11711. $30 = HEAP32[$29>>2]|0;
  11712. HEAP32[$28>>2] = $30;
  11713. $31 = ((($1)) + 40|0);
  11714. $32 = ((($0)) + 40|0);
  11715. $33 = HEAP32[$32>>2]|0;
  11716. HEAP32[$31>>2] = $33;
  11717. $34 = ((($1)) + 44|0);
  11718. $35 = ((($0)) + 44|0);
  11719. $36 = HEAP32[$35>>2]|0;
  11720. HEAP32[$34>>2] = $36;
  11721. $37 = ((($1)) + 48|0);
  11722. $38 = ((($0)) + 48|0);
  11723. $39 = HEAP32[$38>>2]|0;
  11724. HEAP32[$37>>2] = $39;
  11725. $40 = ((($1)) + 52|0);
  11726. $41 = ((($0)) + 52|0);
  11727. $42 = HEAP32[$41>>2]|0;
  11728. HEAP32[$40>>2] = $42;
  11729. $43 = ((($1)) + 56|0);
  11730. $44 = ((($0)) + 56|0);
  11731. $45 = HEAP32[$44>>2]|0;
  11732. HEAP32[$43>>2] = $45;
  11733. $46 = ((($1)) + 60|0);
  11734. $47 = ((($0)) + 60|0);
  11735. $48 = HEAP32[$47>>2]|0;
  11736. HEAP32[$46>>2] = $48;
  11737. $49 = HEAP32[3651]|0;
  11738. dest=$$byval_copy; src=$49; 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));
  11739. dest=$$byval_copy1; src=$1; 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));
  11740. _MatrixMultiply($2,$$byval_copy,$$byval_copy1);
  11741. dest=$49; src=$2; 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));
  11742. STACKTOP = sp;return;
  11743. }
  11744. function _EndDrawing() {
  11745. var $0 = 0.0, $1 = 0.0, $10 = 0.0, $11 = 0.0, $12 = 0.0, $13 = 0.0, $14 = 0.0, $2 = 0.0, $3 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0, $7 = 0.0, $8 = 0.0, $9 = 0.0, label = 0, sp = 0;
  11746. sp = STACKTOP;
  11747. _rlglDraw();
  11748. _SwapBuffers();
  11749. _PollInputEvents();
  11750. $0 = (+_GetTime());
  11751. HEAPF64[1788] = $0;
  11752. $1 = +HEAPF64[1771];
  11753. $2 = $0 - $1;
  11754. HEAPF64[1790] = $2;
  11755. HEAPF64[1771] = $0;
  11756. $3 = +HEAPF64[1789];
  11757. $4 = $2 + $3;
  11758. HEAPF64[1791] = $4;
  11759. $5 = +HEAPF64[1768];
  11760. $6 = $4 < $5;
  11761. if (!($6)) {
  11762. return;
  11763. }
  11764. $7 = $5 - $4;
  11765. $8 = $7 * 1000.0;
  11766. $9 = $8;
  11767. _Wait($9);
  11768. $10 = (+_GetTime());
  11769. HEAPF64[1788] = $10;
  11770. $11 = +HEAPF64[1771];
  11771. $12 = $10 - $11;
  11772. HEAPF64[1771] = $10;
  11773. $13 = +HEAPF64[1791];
  11774. $14 = $12 + $13;
  11775. HEAPF64[1791] = $14;
  11776. return;
  11777. }
  11778. function _rlglDraw() {
  11779. var label = 0, sp = 0;
  11780. sp = STACKTOP;
  11781. _UpdateDefaultBuffers();
  11782. _DrawDefaultBuffers();
  11783. return;
  11784. }
  11785. function _SwapBuffers() {
  11786. var $0 = 0, label = 0, sp = 0;
  11787. sp = STACKTOP;
  11788. $0 = HEAP32[3604]|0;
  11789. _glfwSwapBuffers(($0|0));
  11790. return;
  11791. }
  11792. function _PollInputEvents() {
  11793. var $$04857 = 0, $$05160 = 0, $$058 = 0, $$lcssa = 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;
  11794. var $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0.0, $31 = 0.0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0.0, $40 = 0;
  11795. var $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0, $9 = 0, $scevgep = 0, $scevgep67 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  11796. sp = STACKTOP;
  11797. STACKTOP = STACKTOP + 1456|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(1456|0);
  11798. $0 = sp + 1440|0;
  11799. $1 = sp + 1432|0;
  11800. $2 = sp;
  11801. _UpdateGestures();
  11802. HEAP32[741] = -1;
  11803. HEAP32[743] = -1;
  11804. HEAP32[4037] = 0;
  11805. $3 = HEAP32[3604]|0;
  11806. _glfwGetCursorPos(($3|0),($0|0),($1|0));
  11807. $4 = +HEAPF64[$0>>3];
  11808. $5 = $4;
  11809. HEAPF32[3534] = $5;
  11810. $6 = +HEAPF64[$1>>3];
  11811. $7 = $6;
  11812. HEAPF32[(14140)>>2] = $7;
  11813. _memcpy((17747|0),(17235|0),512)|0;
  11814. ;HEAP8[17232>>0]=HEAP8[17229>>0]|0;HEAP8[17232+1>>0]=HEAP8[17229+1>>0]|0;HEAP8[17232+2>>0]=HEAP8[17229+2>>0]|0;
  11815. $8 = HEAP32[4020]|0;
  11816. HEAP32[3607] = $8;
  11817. HEAP32[4020] = 0;
  11818. $9 = (_emscripten_get_num_gamepads()|0);
  11819. $10 = ($9|0)>(0);
  11820. if (!($10)) {
  11821. STACKTOP = sp;return;
  11822. }
  11823. $11 = ((($2)) + 12|0);
  11824. $12 = ((($2)) + 8|0);
  11825. $$05160 = 0;
  11826. while(1) {
  11827. $scevgep = (18259 + ($$05160<<5)|0);
  11828. $scevgep67 = (18387 + ($$05160<<5)|0);
  11829. dest=$scevgep; src=$scevgep67; 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));
  11830. $13 = (_emscripten_get_gamepad_status(($$05160|0),($2|0))|0);
  11831. $14 = ($13|0)==(0);
  11832. if ($14) {
  11833. $15 = HEAP32[$11>>2]|0;
  11834. $16 = ($15|0)>(0);
  11835. if ($16) {
  11836. $17 = HEAP32[$11>>2]|0;
  11837. $$04857 = 0;
  11838. while(1) {
  11839. $21 = (((($2)) + 1040|0) + ($$04857<<2)|0);
  11840. $22 = HEAP32[$21>>2]|0;
  11841. $23 = ($22|0)==(1);
  11842. $24 = ((18387 + ($$05160<<5)|0) + ($$04857)|0);
  11843. if ($23) {
  11844. HEAP8[$24>>0] = 1;
  11845. HEAP32[743] = $$04857;
  11846. } else {
  11847. HEAP8[$24>>0] = 0;
  11848. }
  11849. $25 = (($$04857) + 1)|0;
  11850. $26 = ($25|0)<($17|0);
  11851. $27 = ($25|0)<(32);
  11852. $28 = $27 & $26;
  11853. if ($28) {
  11854. $$04857 = $25;
  11855. } else {
  11856. break;
  11857. }
  11858. }
  11859. }
  11860. $18 = HEAP32[$12>>2]|0;
  11861. $19 = ($18|0)>(0);
  11862. if ($19) {
  11863. $20 = HEAP32[$12>>2]|0;
  11864. $$058 = 0;
  11865. while(1) {
  11866. $29 = (((($2)) + 16|0) + ($$058<<3)|0);
  11867. $30 = +HEAPF64[$29>>3];
  11868. $31 = $30;
  11869. $32 = ((16152 + ($$05160<<5)|0) + ($$058<<2)|0);
  11870. HEAPF32[$32>>2] = $31;
  11871. $33 = (($$058) + 1)|0;
  11872. $34 = ($33|0)<($20|0);
  11873. $35 = ($33|0)<(8);
  11874. $36 = $35 & $34;
  11875. if ($36) {
  11876. $$058 = $33;
  11877. } else {
  11878. $$lcssa = $20;
  11879. break;
  11880. }
  11881. }
  11882. } else {
  11883. $$lcssa = $18;
  11884. }
  11885. HEAP32[4037] = $$lcssa;
  11886. }
  11887. $37 = (($$05160) + 1)|0;
  11888. $38 = ($37|0)<($9|0);
  11889. $39 = ($37|0)<(4);
  11890. $40 = $38 & $39;
  11891. if ($40) {
  11892. $$05160 = $37;
  11893. } else {
  11894. break;
  11895. }
  11896. }
  11897. STACKTOP = sp;return;
  11898. }
  11899. function _Wait($0) {
  11900. $0 = +$0;
  11901. var $1 = 0.0, $2 = 0.0, $3 = 0.0, $4 = 0.0, $5 = 0, $6 = 0.0, $7 = 0.0, $8 = 0, label = 0, sp = 0;
  11902. sp = STACKTOP;
  11903. $1 = (+_GetTime());
  11904. $2 = 0.0 - $1;
  11905. $3 = $0 / 1000.0;
  11906. $4 = $3;
  11907. $5 = $2 < $4;
  11908. if (!($5)) {
  11909. return;
  11910. }
  11911. while(1) {
  11912. $6 = (+_GetTime());
  11913. $7 = $6 - $1;
  11914. $8 = $7 < $4;
  11915. if (!($8)) {
  11916. break;
  11917. }
  11918. }
  11919. return;
  11920. }
  11921. function _UpdateDefaultBuffers() {
  11922. 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;
  11923. 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;
  11924. var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  11925. sp = STACKTOP;
  11926. $0 = HEAP32[3983]|0;
  11927. $1 = ($0|0)>(0);
  11928. if ($1) {
  11929. $2 = HEAP32[3685]|0;
  11930. $3 = ($2|0)==(0);
  11931. if (!($3)) {
  11932. $4 = HEAP32[3687]|0;
  11933. $5 = HEAP32[(15960)>>2]|0;
  11934. FUNCTION_TABLE_vi[$4 & 31]($5);
  11935. }
  11936. $6 = HEAP32[(15964)>>2]|0;
  11937. _glBindBuffer(34962,($6|0));
  11938. $7 = HEAP32[3983]|0;
  11939. $8 = ($7*12)|0;
  11940. $9 = HEAP32[(15944)>>2]|0;
  11941. _glBufferSubData(34962,0,($8|0),($9|0));
  11942. $10 = HEAP32[(15968)>>2]|0;
  11943. _glBindBuffer(34962,($10|0));
  11944. $11 = HEAP32[(15940)>>2]|0;
  11945. $12 = $11 << 2;
  11946. $13 = HEAP32[(15952)>>2]|0;
  11947. _glBufferSubData(34962,0,($12|0),($13|0));
  11948. }
  11949. $14 = HEAP32[3995]|0;
  11950. $15 = ($14|0)>(0);
  11951. if ($15) {
  11952. $16 = HEAP32[3685]|0;
  11953. $17 = ($16|0)==(0);
  11954. if (!($17)) {
  11955. $18 = HEAP32[3687]|0;
  11956. $19 = HEAP32[(16008)>>2]|0;
  11957. FUNCTION_TABLE_vi[$18 & 31]($19);
  11958. }
  11959. $20 = HEAP32[(16012)>>2]|0;
  11960. _glBindBuffer(34962,($20|0));
  11961. $21 = HEAP32[3995]|0;
  11962. $22 = ($21*12)|0;
  11963. $23 = HEAP32[(15992)>>2]|0;
  11964. _glBufferSubData(34962,0,($22|0),($23|0));
  11965. $24 = HEAP32[(16016)>>2]|0;
  11966. _glBindBuffer(34962,($24|0));
  11967. $25 = HEAP32[(15988)>>2]|0;
  11968. $26 = $25 << 2;
  11969. $27 = HEAP32[(16000)>>2]|0;
  11970. _glBufferSubData(34962,0,($26|0),($27|0));
  11971. }
  11972. $28 = HEAP32[4007]|0;
  11973. $29 = ($28|0)>(0);
  11974. if ($29) {
  11975. $30 = HEAP32[3685]|0;
  11976. $31 = ($30|0)==(0);
  11977. if (!($31)) {
  11978. $32 = HEAP32[3687]|0;
  11979. $33 = HEAP32[(16056)>>2]|0;
  11980. FUNCTION_TABLE_vi[$32 & 31]($33);
  11981. }
  11982. $34 = HEAP32[(16060)>>2]|0;
  11983. _glBindBuffer(34962,($34|0));
  11984. $35 = HEAP32[4007]|0;
  11985. $36 = ($35*12)|0;
  11986. $37 = HEAP32[(16040)>>2]|0;
  11987. _glBufferSubData(34962,0,($36|0),($37|0));
  11988. $38 = HEAP32[(16064)>>2]|0;
  11989. _glBindBuffer(34962,($38|0));
  11990. $39 = HEAP32[4007]|0;
  11991. $40 = $39 << 3;
  11992. $41 = HEAP32[(16044)>>2]|0;
  11993. _glBufferSubData(34962,0,($40|0),($41|0));
  11994. $42 = HEAP32[(16068)>>2]|0;
  11995. _glBindBuffer(34962,($42|0));
  11996. $43 = HEAP32[4007]|0;
  11997. $44 = $43 << 2;
  11998. $45 = HEAP32[(16048)>>2]|0;
  11999. _glBufferSubData(34962,0,($44|0),($45|0));
  12000. }
  12001. $46 = HEAP32[3685]|0;
  12002. $47 = ($46|0)==(0);
  12003. if ($47) {
  12004. return;
  12005. }
  12006. $48 = HEAP32[3687]|0;
  12007. FUNCTION_TABLE_vi[$48 & 31](0);
  12008. return;
  12009. }
  12010. function _DrawDefaultBuffers() {
  12011. var $$ = 0, $$02830 = 0, $$02932 = 0, $$031 = 0, $$byval_copy2 = 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;
  12012. var $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, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0;
  12013. var $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, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0;
  12014. var $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, $76 = 0;
  12015. var $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, $modelview$byval_copy = 0;
  12016. var $or$cond = 0, $or$cond3 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  12017. sp = STACKTOP;
  12018. STACKTOP = STACKTOP + 320|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(320|0);
  12019. $$byval_copy2 = sp + 256|0;
  12020. $modelview$byval_copy = sp + 192|0;
  12021. $0 = sp + 128|0;
  12022. $1 = sp + 64|0;
  12023. $2 = sp;
  12024. dest=$0; src=14608; 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));
  12025. dest=$1; src=14672; 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));
  12026. $3 = HEAP32[4070]|0;
  12027. $4 = ($3|0)!=(0);
  12028. $$ = $4 ? 2 : 1;
  12029. $$02932 = 0;
  12030. while(1) {
  12031. if ($4) {
  12032. dest=$modelview$byval_copy; src=$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));
  12033. dest=$$byval_copy2; src=$1; 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));
  12034. _SetStereoView($$02932,$modelview$byval_copy,$$byval_copy2);
  12035. }
  12036. $8 = HEAP32[3983]|0;
  12037. $9 = ($8|0)>(0);
  12038. $10 = HEAP32[3995]|0;
  12039. $11 = ($10|0)>(0);
  12040. $or$cond = $9 | $11;
  12041. $12 = HEAP32[4007]|0;
  12042. $13 = ($12|0)>(0);
  12043. $or$cond3 = $or$cond | $13;
  12044. if ($or$cond3) {
  12045. $14 = HEAP32[3707]|0;
  12046. _glUseProgram(($14|0));
  12047. dest=$modelview$byval_copy; src=14672; 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));
  12048. dest=$$byval_copy2; src=14608; 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));
  12049. _MatrixMultiply($2,$modelview$byval_copy,$$byval_copy2);
  12050. $15 = HEAP32[(14856)>>2]|0;
  12051. dest=$$byval_copy2; src=$2; 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));
  12052. $16 = (_MatrixToFloat($$byval_copy2)|0);
  12053. _glUniformMatrix4fv(($15|0),1,0,($16|0));
  12054. $17 = HEAP32[(14860)>>2]|0;
  12055. _glUniform4f(($17|0),1.0,1.0,1.0,1.0);
  12056. $18 = HEAP32[(14872)>>2]|0;
  12057. _glUniform1i(($18|0),0);
  12058. }
  12059. $19 = HEAP32[3983]|0;
  12060. $20 = ($19|0)>(0);
  12061. if ($20) {
  12062. $21 = HEAP32[3692]|0;
  12063. _glBindTexture(3553,($21|0));
  12064. $22 = HEAP32[3685]|0;
  12065. $23 = ($22|0)==(0);
  12066. if ($23) {
  12067. $26 = HEAP32[(15964)>>2]|0;
  12068. _glBindBuffer(34962,($26|0));
  12069. $27 = HEAP32[(14832)>>2]|0;
  12070. _glVertexAttribPointer(($27|0),3,5126,0,0,(0|0));
  12071. $28 = HEAP32[(14832)>>2]|0;
  12072. _glEnableVertexAttribArray(($28|0));
  12073. $29 = HEAP32[(15968)>>2]|0;
  12074. _glBindBuffer(34962,($29|0));
  12075. $30 = HEAP32[(14852)>>2]|0;
  12076. _glVertexAttribPointer(($30|0),4,5121,1,0,(0|0));
  12077. $31 = HEAP32[(14852)>>2]|0;
  12078. _glEnableVertexAttribArray(($31|0));
  12079. } else {
  12080. $24 = HEAP32[3687]|0;
  12081. $25 = HEAP32[(15960)>>2]|0;
  12082. FUNCTION_TABLE_vi[$24 & 31]($25);
  12083. }
  12084. $32 = HEAP32[3983]|0;
  12085. _glDrawArrays(1,0,($32|0));
  12086. $33 = HEAP32[3685]|0;
  12087. $34 = ($33|0)==(0);
  12088. if ($34) {
  12089. _glBindBuffer(34962,0);
  12090. }
  12091. _glBindTexture(3553,0);
  12092. }
  12093. $35 = HEAP32[3995]|0;
  12094. $36 = ($35|0)>(0);
  12095. if ($36) {
  12096. $37 = HEAP32[3692]|0;
  12097. _glBindTexture(3553,($37|0));
  12098. $38 = HEAP32[3685]|0;
  12099. $39 = ($38|0)==(0);
  12100. if ($39) {
  12101. $42 = HEAP32[(16012)>>2]|0;
  12102. _glBindBuffer(34962,($42|0));
  12103. $43 = HEAP32[(14832)>>2]|0;
  12104. _glVertexAttribPointer(($43|0),3,5126,0,0,(0|0));
  12105. $44 = HEAP32[(14832)>>2]|0;
  12106. _glEnableVertexAttribArray(($44|0));
  12107. $45 = HEAP32[(16016)>>2]|0;
  12108. _glBindBuffer(34962,($45|0));
  12109. $46 = HEAP32[(14852)>>2]|0;
  12110. _glVertexAttribPointer(($46|0),4,5121,1,0,(0|0));
  12111. $47 = HEAP32[(14852)>>2]|0;
  12112. _glEnableVertexAttribArray(($47|0));
  12113. } else {
  12114. $40 = HEAP32[3687]|0;
  12115. $41 = HEAP32[(16008)>>2]|0;
  12116. FUNCTION_TABLE_vi[$40 & 31]($41);
  12117. }
  12118. $48 = HEAP32[3995]|0;
  12119. _glDrawArrays(4,0,($48|0));
  12120. $49 = HEAP32[3685]|0;
  12121. $50 = ($49|0)==(0);
  12122. if ($50) {
  12123. _glBindBuffer(34962,0);
  12124. }
  12125. _glBindTexture(3553,0);
  12126. }
  12127. $51 = HEAP32[4007]|0;
  12128. $52 = ($51|0)>(0);
  12129. if ($52) {
  12130. $53 = HEAP32[3685]|0;
  12131. $54 = ($53|0)==(0);
  12132. if ($54) {
  12133. $57 = HEAP32[(16060)>>2]|0;
  12134. _glBindBuffer(34962,($57|0));
  12135. $58 = HEAP32[(14832)>>2]|0;
  12136. _glVertexAttribPointer(($58|0),3,5126,0,0,(0|0));
  12137. $59 = HEAP32[(14832)>>2]|0;
  12138. _glEnableVertexAttribArray(($59|0));
  12139. $60 = HEAP32[(16064)>>2]|0;
  12140. _glBindBuffer(34962,($60|0));
  12141. $61 = HEAP32[(14836)>>2]|0;
  12142. _glVertexAttribPointer(($61|0),2,5126,0,0,(0|0));
  12143. $62 = HEAP32[(14836)>>2]|0;
  12144. _glEnableVertexAttribArray(($62|0));
  12145. $63 = HEAP32[(16068)>>2]|0;
  12146. _glBindBuffer(34962,($63|0));
  12147. $64 = HEAP32[(14852)>>2]|0;
  12148. _glVertexAttribPointer(($64|0),4,5121,1,0,(0|0));
  12149. $65 = HEAP32[(14852)>>2]|0;
  12150. _glEnableVertexAttribArray(($65|0));
  12151. $66 = HEAP32[(16072)>>2]|0;
  12152. _glBindBuffer(34963,($66|0));
  12153. } else {
  12154. $55 = HEAP32[3687]|0;
  12155. $56 = HEAP32[(16056)>>2]|0;
  12156. FUNCTION_TABLE_vi[$55 & 31]($56);
  12157. }
  12158. $67 = HEAP32[3723]|0;
  12159. $68 = ($67|0)>(0);
  12160. if ($68) {
  12161. $$02830 = 0;$$031 = 0;
  12162. while(1) {
  12163. $71 = HEAP32[3722]|0;
  12164. $72 = (($71) + (($$031*144)|0)|0);
  12165. $73 = HEAP32[$72>>2]|0;
  12166. $74 = (($73|0) / 4)&-1;
  12167. $75 = ($74*6)|0;
  12168. $76 = (((($71) + (($$031*144)|0)|0)) + 8|0);
  12169. $77 = HEAP32[$76>>2]|0;
  12170. _glBindTexture(3553,($77|0));
  12171. $78 = $$02830 << 1;
  12172. $79 = $78;
  12173. _glDrawElements(4,($75|0),5123,($79|0));
  12174. $80 = HEAP32[3722]|0;
  12175. $81 = (($80) + (($$031*144)|0)|0);
  12176. $82 = HEAP32[$81>>2]|0;
  12177. $83 = (($82|0) / 4)&-1;
  12178. $84 = ($83*6)|0;
  12179. $85 = (($84) + ($$02830))|0;
  12180. $86 = (($$031) + 1)|0;
  12181. $87 = HEAP32[3723]|0;
  12182. $88 = ($86|0)<($87|0);
  12183. if ($88) {
  12184. $$02830 = $85;$$031 = $86;
  12185. } else {
  12186. break;
  12187. }
  12188. }
  12189. }
  12190. $69 = HEAP32[3685]|0;
  12191. $70 = ($69|0)==(0);
  12192. if ($70) {
  12193. _glBindBuffer(34962,0);
  12194. _glBindBuffer(34963,0);
  12195. }
  12196. _glBindTexture(3553,0);
  12197. }
  12198. $89 = HEAP32[3685]|0;
  12199. $90 = ($89|0)==(0);
  12200. if (!($90)) {
  12201. $91 = HEAP32[3687]|0;
  12202. FUNCTION_TABLE_vi[$91 & 31](0);
  12203. }
  12204. _glUseProgram(0);
  12205. $92 = (($$02932) + 1)|0;
  12206. $93 = ($92|0)<($$|0);
  12207. if ($93) {
  12208. $$02932 = $92;
  12209. } else {
  12210. break;
  12211. }
  12212. }
  12213. HEAP32[3723] = 1;
  12214. $5 = HEAP32[3692]|0;
  12215. $6 = HEAP32[3722]|0;
  12216. $7 = ((($6)) + 8|0);
  12217. HEAP32[$7>>2] = $5;
  12218. HEAP32[$6>>2] = 0;
  12219. HEAP32[3983] = 0;
  12220. HEAP32[(15940)>>2] = 0;
  12221. HEAP32[3995] = 0;
  12222. HEAP32[(15988)>>2] = 0;
  12223. HEAP32[4007] = 0;
  12224. HEAP32[(16032)>>2] = 0;
  12225. HEAP32[(16036)>>2] = 0;
  12226. HEAPF32[744] = -1.0;
  12227. dest=14608; src=$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));
  12228. dest=14672; src=$1; 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));
  12229. STACKTOP = sp;return;
  12230. }
  12231. function _SetStereoView($0,$1,$2) {
  12232. $0 = $0|0;
  12233. $1 = $1|0;
  12234. $2 = $2|0;
  12235. var $$byval_copy = 0, $$byval_copy3 = 0, $10 = 0, $11 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  12236. sp = STACKTOP;
  12237. STACKTOP = STACKTOP + 256|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(256|0);
  12238. $$byval_copy3 = sp + 192|0;
  12239. $$byval_copy = sp + 64|0;
  12240. $3 = sp;
  12241. $4 = sp + 128|0;
  12242. dest=$3; src=$1; 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));
  12243. $5 = HEAP32[3981]|0;
  12244. $6 = Math_imul($5, $0)|0;
  12245. $7 = (($6|0) / 2)&-1;
  12246. $8 = (($5|0) / 2)&-1;
  12247. $9 = HEAP32[3982]|0;
  12248. _rlViewport($7,0,$8,$9);
  12249. $10 = (16512 + ($0<<6)|0);
  12250. dest=$$byval_copy; src=$2; 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));
  12251. dest=$$byval_copy3; src=$10; 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));
  12252. _MatrixMultiply($4,$$byval_copy,$$byval_copy3);
  12253. $11 = (16384 + ($0<<6)|0);
  12254. dest=$3; src=$11; 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));
  12255. dest=$$byval_copy3; src=$4; 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));
  12256. _SetMatrixModelview($$byval_copy3);
  12257. dest=$$byval_copy3; src=$3; 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));
  12258. _SetMatrixProjection($$byval_copy3);
  12259. STACKTOP = sp;return;
  12260. }
  12261. function _SetMatrixModelview($0) {
  12262. $0 = $0|0;
  12263. var dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  12264. sp = STACKTOP;
  12265. dest=14672; src=$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));
  12266. return;
  12267. }
  12268. function _SetMatrixProjection($0) {
  12269. $0 = $0|0;
  12270. var dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  12271. sp = STACKTOP;
  12272. dest=14608; src=$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));
  12273. return;
  12274. }
  12275. function _rlPushMatrix() {
  12276. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $vararg_buffer = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  12277. sp = STACKTOP;
  12278. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  12279. $vararg_buffer = sp;
  12280. $0 = HEAP32[4160]|0;
  12281. $1 = ($0|0)==(15);
  12282. if ($1) {
  12283. HEAP32[$vararg_buffer>>2] = 16;
  12284. _TraceLog(1,8147,$vararg_buffer);
  12285. }
  12286. $2 = HEAP32[4160]|0;
  12287. $3 = (14900 + ($2<<6)|0);
  12288. $4 = HEAP32[3651]|0;
  12289. dest=$3; src=$4; 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));
  12290. _rlLoadIdentity();
  12291. $5 = HEAP32[4160]|0;
  12292. $6 = (($5) + 1)|0;
  12293. HEAP32[4160] = $6;
  12294. $7 = HEAP32[3684]|0;
  12295. $8 = ($7|0)==(5888);
  12296. if (!($8)) {
  12297. STACKTOP = sp;return;
  12298. }
  12299. HEAP32[4161] = 1;
  12300. STACKTOP = sp;return;
  12301. }
  12302. function _rlPopMatrix() {
  12303. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, label = 0, sp = 0;
  12304. sp = STACKTOP;
  12305. $0 = HEAP32[4160]|0;
  12306. $1 = ($0|0)>(0);
  12307. if (!($1)) {
  12308. return;
  12309. }
  12310. $2 = HEAP32[4160]|0;
  12311. $3 = (($2) + -1)|0;
  12312. $4 = (14900 + ($3<<6)|0);
  12313. $5 = HEAP32[3651]|0;
  12314. _memmove(($5|0),($4|0),64)|0;
  12315. $6 = (($2) + -1)|0;
  12316. HEAP32[4160] = $6;
  12317. return;
  12318. }
  12319. function _rlTranslatef($0,$1,$2) {
  12320. $0 = +$0;
  12321. $1 = +$1;
  12322. $2 = +$2;
  12323. var $$byval_copy = 0, $$byval_copy1 = 0, $3 = 0, $4 = 0, $5 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  12324. sp = STACKTOP;
  12325. STACKTOP = STACKTOP + 256|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(256|0);
  12326. $$byval_copy1 = sp + 192|0;
  12327. $$byval_copy = sp + 128|0;
  12328. $3 = sp + 64|0;
  12329. $4 = sp;
  12330. _MatrixTranslate($3,$0,$1,$2);
  12331. _MatrixTranspose($3);
  12332. $5 = HEAP32[3651]|0;
  12333. dest=$$byval_copy; src=$5; 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));
  12334. dest=$$byval_copy1; src=$3; 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));
  12335. _MatrixMultiply($4,$$byval_copy,$$byval_copy1);
  12336. dest=$5; src=$4; 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));
  12337. STACKTOP = sp;return;
  12338. }
  12339. function _rlRotatef($0,$1,$2,$3) {
  12340. $0 = +$0;
  12341. $1 = +$1;
  12342. $2 = +$2;
  12343. $3 = +$3;
  12344. var $$byval_copy1 = 0, $$byval_copy2 = 0, $10 = 0.0, $11 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  12345. sp = STACKTOP;
  12346. STACKTOP = STACKTOP + 336|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(336|0);
  12347. $$byval_copy2 = sp + 272|0;
  12348. $$byval_copy1 = sp + 208|0;
  12349. $4 = sp + 144|0;
  12350. $5 = sp + 64|0;
  12351. $6 = sp + 80|0;
  12352. $7 = sp;
  12353. _MatrixIdentity($4);
  12354. HEAPF32[$5>>2] = $1;
  12355. $8 = ((($5)) + 4|0);
  12356. HEAPF32[$8>>2] = $2;
  12357. $9 = ((($5)) + 8|0);
  12358. HEAPF32[$9>>2] = $3;
  12359. _VectorNormalize($5);
  12360. $10 = $0 * 0.01745329238474369;
  12361. ;HEAP32[$$byval_copy2>>2]=HEAP32[$5>>2]|0;HEAP32[$$byval_copy2+4>>2]=HEAP32[$5+4>>2]|0;HEAP32[$$byval_copy2+8>>2]=HEAP32[$5+8>>2]|0;
  12362. _MatrixRotate($6,$$byval_copy2,$10);
  12363. dest=$4; src=$6; 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));
  12364. _MatrixTranspose($4);
  12365. $11 = HEAP32[3651]|0;
  12366. dest=$$byval_copy1; src=$11; 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));
  12367. dest=$$byval_copy2; src=$4; 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));
  12368. _MatrixMultiply($7,$$byval_copy1,$$byval_copy2);
  12369. dest=$11; src=$7; 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));
  12370. STACKTOP = sp;return;
  12371. }
  12372. function _rlBegin($0) {
  12373. $0 = $0|0;
  12374. var label = 0, sp = 0;
  12375. sp = STACKTOP;
  12376. HEAP32[3724] = $0;
  12377. return;
  12378. }
  12379. function _rlEnd() {
  12380. var $$03956 = 0, $$04052 = 0, $$04154 = 0, $$04248 = 0, $$04347 = 0, $$byval_copy = 0, $$promoted = 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;
  12381. var $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, $127 = 0;
  12382. var $128 = 0, $129 = 0, $13 = 0.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, $145 = 0;
  12383. var $146 = 0, $147 = 0, $148 = 0.0, $149 = 0.0, $15 = 0.0, $16 = 0, $17 = 0.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;
  12384. 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;
  12385. 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;
  12386. 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;
  12387. 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, $exitcond = 0, $exitcond60 = 0, $exitcond63 = 0;
  12388. var $scevgep = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
  12389. sp = STACKTOP;
  12390. STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
  12391. $$byval_copy = sp;
  12392. $0 = HEAP32[4161]|0;
  12393. $1 = ($0|0)==(0);
  12394. if (!($1)) {
  12395. $2 = HEAP32[4162]|0;
  12396. $3 = ($2|0)>(0);
  12397. if ($3) {
  12398. $$03956 = 0;
  12399. while(1) {
  12400. $6 = HEAP32[3721]|0;
  12401. $7 = (($6) + (($$03956*12)|0)|0);
  12402. $8 = HEAP32[3651]|0;
  12403. dest=$$byval_copy; src=$8; 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));
  12404. _VectorTransform($7,$$byval_copy);
  12405. $9 = (($$03956) + 1)|0;
  12406. $5 = HEAP32[4162]|0;
  12407. $10 = ($9|0)<($5|0);
  12408. if ($10) {
  12409. $$03956 = $9;
  12410. } else {
  12411. break;
  12412. }
  12413. }
  12414. HEAP32[4161] = 0;
  12415. $4 = ($5|0)>(0);
  12416. if ($4) {
  12417. $$04154 = 0;
  12418. while(1) {
  12419. $11 = HEAP32[3721]|0;
  12420. $12 = (($11) + (($$04154*12)|0)|0);
  12421. $13 = +HEAPF32[$12>>2];
  12422. $14 = (((($11) + (($$04154*12)|0)|0)) + 4|0);
  12423. $15 = +HEAPF32[$14>>2];
  12424. $16 = (((($11) + (($$04154*12)|0)|0)) + 8|0);
  12425. $17 = +HEAPF32[$16>>2];
  12426. _rlVertex3f($13,$15,$17);
  12427. $18 = (($$04154) + 1)|0;
  12428. $19 = HEAP32[4162]|0;
  12429. $20 = ($18|0)<($19|0);
  12430. if ($20) {
  12431. $$04154 = $18;
  12432. } else {
  12433. break;
  12434. }
  12435. }
  12436. }
  12437. } else {
  12438. HEAP32[4161] = 0;
  12439. }
  12440. HEAP32[4162] = 0;
  12441. }
  12442. $21 = HEAP32[3724]|0;
  12443. switch ($21|0) {
  12444. case 1: {
  12445. $22 = HEAP32[3983]|0;
  12446. $23 = HEAP32[(15940)>>2]|0;
  12447. $24 = ($22|0)==($23|0);
  12448. if ($24) {
  12449. $148 = +HEAPF32[744];
  12450. $149 = $148 + 4.9999998736893758E-5;
  12451. HEAPF32[744] = $149;
  12452. STACKTOP = sp;return;
  12453. }
  12454. $25 = (($22) - ($23))|0;
  12455. $26 = ($25|0)>(0);
  12456. if ($26) {
  12457. $$04347 = 0;
  12458. } else {
  12459. $148 = +HEAPF32[744];
  12460. $149 = $148 + 4.9999998736893758E-5;
  12461. HEAPF32[744] = $149;
  12462. STACKTOP = sp;return;
  12463. }
  12464. while(1) {
  12465. $27 = HEAP32[(15952)>>2]|0;
  12466. $28 = HEAP32[(15940)>>2]|0;
  12467. $29 = $28 << 2;
  12468. $30 = (($29) + -4)|0;
  12469. $31 = (($27) + ($30)|0);
  12470. $32 = HEAP8[$31>>0]|0;
  12471. $33 = (($27) + ($29)|0);
  12472. HEAP8[$33>>0] = $32;
  12473. $34 = HEAP32[(15952)>>2]|0;
  12474. $35 = HEAP32[(15940)>>2]|0;
  12475. $36 = $35 << 2;
  12476. $37 = (($36) + -3)|0;
  12477. $38 = (($34) + ($37)|0);
  12478. $39 = HEAP8[$38>>0]|0;
  12479. $40 = $36 | 1;
  12480. $41 = (($34) + ($40)|0);
  12481. HEAP8[$41>>0] = $39;
  12482. $42 = HEAP32[(15952)>>2]|0;
  12483. $43 = HEAP32[(15940)>>2]|0;
  12484. $44 = $43 << 2;
  12485. $45 = (($44) + -2)|0;
  12486. $46 = (($42) + ($45)|0);
  12487. $47 = HEAP8[$46>>0]|0;
  12488. $48 = $44 | 2;
  12489. $49 = (($42) + ($48)|0);
  12490. HEAP8[$49>>0] = $47;
  12491. $50 = HEAP32[(15952)>>2]|0;
  12492. $51 = HEAP32[(15940)>>2]|0;
  12493. $52 = $51 << 2;
  12494. $53 = (($52) + -1)|0;
  12495. $54 = (($50) + ($53)|0);
  12496. $55 = HEAP8[$54>>0]|0;
  12497. $56 = $52 | 3;
  12498. $57 = (($50) + ($56)|0);
  12499. HEAP8[$57>>0] = $55;
  12500. $58 = HEAP32[(15940)>>2]|0;
  12501. $59 = (($58) + 1)|0;
  12502. HEAP32[(15940)>>2] = $59;
  12503. $60 = (($$04347) + 1)|0;
  12504. $exitcond = ($60|0)==($25|0);
  12505. if ($exitcond) {
  12506. break;
  12507. } else {
  12508. $$04347 = $60;
  12509. }
  12510. }
  12511. $148 = +HEAPF32[744];
  12512. $149 = $148 + 4.9999998736893758E-5;
  12513. HEAPF32[744] = $149;
  12514. STACKTOP = sp;return;
  12515. break;
  12516. }
  12517. case 4: {
  12518. $61 = HEAP32[3995]|0;
  12519. $62 = HEAP32[(15988)>>2]|0;
  12520. $63 = ($61|0)==($62|0);
  12521. if ($63) {
  12522. $148 = +HEAPF32[744];
  12523. $149 = $148 + 4.9999998736893758E-5;
  12524. HEAPF32[744] = $149;
  12525. STACKTOP = sp;return;
  12526. }
  12527. $64 = (($61) - ($62))|0;
  12528. $65 = ($64|0)>(0);
  12529. if ($65) {
  12530. $$04248 = 0;
  12531. } else {
  12532. $148 = +HEAPF32[744];
  12533. $149 = $148 + 4.9999998736893758E-5;
  12534. HEAPF32[744] = $149;
  12535. STACKTOP = sp;return;
  12536. }
  12537. while(1) {
  12538. $66 = HEAP32[(16000)>>2]|0;
  12539. $67 = HEAP32[(15988)>>2]|0;
  12540. $68 = $67 << 2;
  12541. $69 = (($68) + -4)|0;
  12542. $70 = (($66) + ($69)|0);
  12543. $71 = HEAP8[$70>>0]|0;
  12544. $72 = (($66) + ($68)|0);
  12545. HEAP8[$72>>0] = $71;
  12546. $73 = HEAP32[(16000)>>2]|0;
  12547. $74 = HEAP32[(15988)>>2]|0;
  12548. $75 = $74 << 2;
  12549. $76 = (($75) + -3)|0;
  12550. $77 = (($73) + ($76)|0);
  12551. $78 = HEAP8[$77>>0]|0;
  12552. $79 = $75 | 1;
  12553. $80 = (($73) + ($79)|0);
  12554. HEAP8[$80>>0] = $78;
  12555. $81 = HEAP32[(16000)>>2]|0;
  12556. $82 = HEAP32[(15988)>>2]|0;
  12557. $83 = $82 << 2;
  12558. $84 = (($83) + -2)|0;
  12559. $85 = (($81) + ($84)|0);
  12560. $86 = HEAP8[$85>>0]|0;
  12561. $87 = $83 | 2;
  12562. $88 = (($81) + ($87)|0);
  12563. HEAP8[$88>>0] = $86;
  12564. $89 = HEAP32[(16000)>>2]|0;
  12565. $90 = HEAP32[(15988)>>2]|0;
  12566. $91 = $90 << 2;
  12567. $92 = (($91) + -1)|0;
  12568. $93 = (($89) + ($92)|0);
  12569. $94 = HEAP8[$93>>0]|0;
  12570. $95 = $91 | 3;
  12571. $96 = (($89) + ($95)|0);
  12572. HEAP8[$96>>0] = $94;
  12573. $97 = HEAP32[(15988)>>2]|0;
  12574. $98 = (($97) + 1)|0;
  12575. HEAP32[(15988)>>2] = $98;
  12576. $99 = (($$04248) + 1)|0;
  12577. $exitcond60 = ($99|0)==($64|0);
  12578. if ($exitcond60) {
  12579. break;
  12580. } else {
  12581. $$04248 = $99;
  12582. }
  12583. }
  12584. $148 = +HEAPF32[744];
  12585. $149 = $148 + 4.9999998736893758E-5;
  12586. HEAPF32[744] = $149;
  12587. STACKTOP = sp;return;
  12588. break;
  12589. }
  12590. case 7: {
  12591. $100 = HEAP32[4007]|0;
  12592. $101 = HEAP32[(16036)>>2]|0;
  12593. $102 = ($100|0)==($101|0);
  12594. if (!($102)) {
  12595. $103 = (($100) - ($101))|0;
  12596. $104 = ($103|0)>(0);
  12597. if ($104) {
  12598. $$04052 = 0;
  12599. while(1) {
  12600. $105 = HEAP32[(16048)>>2]|0;
  12601. $106 = HEAP32[(16036)>>2]|0;
  12602. $107 = $106 << 2;
  12603. $108 = (($107) + -4)|0;
  12604. $109 = (($105) + ($108)|0);
  12605. $110 = HEAP8[$109>>0]|0;
  12606. $111 = (($105) + ($107)|0);
  12607. HEAP8[$111>>0] = $110;
  12608. $112 = HEAP32[(16048)>>2]|0;
  12609. $113 = HEAP32[(16036)>>2]|0;
  12610. $114 = $113 << 2;
  12611. $115 = (($114) + -3)|0;
  12612. $116 = (($112) + ($115)|0);
  12613. $117 = HEAP8[$116>>0]|0;
  12614. $118 = $114 | 1;
  12615. $119 = (($112) + ($118)|0);
  12616. HEAP8[$119>>0] = $117;
  12617. $120 = HEAP32[(16048)>>2]|0;
  12618. $121 = HEAP32[(16036)>>2]|0;
  12619. $122 = $121 << 2;
  12620. $123 = (($122) + -2)|0;
  12621. $124 = (($120) + ($123)|0);
  12622. $125 = HEAP8[$124>>0]|0;
  12623. $126 = $122 | 2;
  12624. $127 = (($120) + ($126)|0);
  12625. HEAP8[$127>>0] = $125;
  12626. $128 = HEAP32[(16048)>>2]|0;
  12627. $129 = HEAP32[(16036)>>2]|0;
  12628. $130 = $129 << 2;
  12629. $131 = (($130) + -1)|0;
  12630. $132 = (($128) + ($131)|0);
  12631. $133 = HEAP8[$132>>0]|0;
  12632. $134 = $130 | 3;
  12633. $135 = (($128) + ($134)|0);
  12634. HEAP8[$135>>0] = $133;
  12635. $136 = HEAP32[(16036)>>2]|0;
  12636. $137 = (($136) + 1)|0;
  12637. HEAP32[(16036)>>2] = $137;
  12638. $138 = (($$04052) + 1)|0;
  12639. $exitcond63 = ($138|0)==($103|0);
  12640. if ($exitcond63) {
  12641. break;
  12642. } else {
  12643. $$04052 = $138;
  12644. }
  12645. }
  12646. }
  12647. }
  12648. $139 = HEAP32[4007]|0;
  12649. $140 = HEAP32[(16032)>>2]|0;
  12650. $141 = ($139|0)>($140|0);
  12651. if (!($141)) {
  12652. $148 = +HEAPF32[744];
  12653. $149 = $148 + 4.9999998736893758E-5;
  12654. HEAPF32[744] = $149;
  12655. STACKTOP = sp;return;
  12656. }
  12657. $142 = HEAP32[(16044)>>2]|0;
  12658. $$promoted = HEAP32[(16032)>>2]|0;
  12659. $143 = $$promoted << 1;
  12660. $scevgep = (($142) + ($143<<2)|0);
  12661. $144 = (($139) - ($140))|0;
  12662. $145 = $144 << 3;
  12663. _memset(($scevgep|0),0,($145|0))|0;
  12664. $146 = (($139) + ($$promoted))|0;
  12665. $147 = (($146) - ($140))|0;
  12666. HEAP32[(16032)>>2] = $147;
  12667. $148 = +HEAPF32[744];
  12668. $149 = $148 + 4.9999998736893758E-5;
  12669. HEAPF32[744] = $149;
  12670. STACKTOP = sp;return;
  12671. break;
  12672. }
  12673. default: {
  12674. $148 = +HEAPF32[744];
  12675. $149 = $148 + 4.9999998736893758E-5;
  12676. HEAPF32[744] = $149;
  12677. STACKTOP = sp;return;
  12678. }
  12679. }
  12680. }
  12681. function _rlVertex3f($0,$1,$2) {
  12682. $0 = +$0;
  12683. $1 = +$1;
  12684. $2 = +$2;
  12685. var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0;
  12686. 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;
  12687. var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, label = 0, sp = 0;
  12688. sp = STACKTOP;
  12689. STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
  12690. $vararg_buffer3 = sp + 16|0;
  12691. $vararg_buffer1 = sp + 8|0;
  12692. $vararg_buffer = sp;
  12693. $3 = HEAP32[4161]|0;
  12694. $4 = ($3|0)==(0);
  12695. if (!($4)) {
  12696. $5 = HEAP32[3721]|0;
  12697. $6 = HEAP32[4162]|0;
  12698. $7 = (($5) + (($6*12)|0)|0);
  12699. HEAPF32[$7>>2] = $0;
  12700. $8 = (((($5) + (($6*12)|0)|0)) + 4|0);
  12701. HEAPF32[$8>>2] = $1;
  12702. $9 = (((($5) + (($6*12)|0)|0)) + 8|0);
  12703. HEAPF32[$9>>2] = $2;
  12704. $10 = (($6) + 1)|0;
  12705. HEAP32[4162] = $10;
  12706. STACKTOP = sp;return;
  12707. }
  12708. $11 = HEAP32[3724]|0;
  12709. switch ($11|0) {
  12710. case 1: {
  12711. $12 = HEAP32[3983]|0;
  12712. $13 = ($12|0)<(2048);
  12713. if ($13) {
  12714. $14 = HEAP32[(15944)>>2]|0;
  12715. $15 = ($12*3)|0;
  12716. $16 = (($14) + ($15<<2)|0);
  12717. HEAPF32[$16>>2] = $0;
  12718. $17 = (($15) + 1)|0;
  12719. $18 = (($14) + ($17<<2)|0);
  12720. HEAPF32[$18>>2] = $1;
  12721. $19 = (($15) + 2)|0;
  12722. $20 = (($14) + ($19<<2)|0);
  12723. HEAPF32[$20>>2] = $2;
  12724. $21 = (($12) + 1)|0;
  12725. HEAP32[3983] = $21;
  12726. STACKTOP = sp;return;
  12727. } else {
  12728. _TraceLog(1,8185,$vararg_buffer);
  12729. STACKTOP = sp;return;
  12730. }
  12731. break;
  12732. }
  12733. case 4: {
  12734. $22 = HEAP32[3995]|0;
  12735. $23 = ($22|0)<(6144);
  12736. if ($23) {
  12737. $24 = HEAP32[(15992)>>2]|0;
  12738. $25 = ($22*3)|0;
  12739. $26 = (($24) + ($25<<2)|0);
  12740. HEAPF32[$26>>2] = $0;
  12741. $27 = (($25) + 1)|0;
  12742. $28 = (($24) + ($27<<2)|0);
  12743. HEAPF32[$28>>2] = $1;
  12744. $29 = (($25) + 2)|0;
  12745. $30 = (($24) + ($29<<2)|0);
  12746. HEAPF32[$30>>2] = $2;
  12747. $31 = (($22) + 1)|0;
  12748. HEAP32[3995] = $31;
  12749. STACKTOP = sp;return;
  12750. } else {
  12751. _TraceLog(1,8210,$vararg_buffer1);
  12752. STACKTOP = sp;return;
  12753. }
  12754. break;
  12755. }
  12756. case 7: {
  12757. $32 = HEAP32[4007]|0;
  12758. $33 = ($32|0)<(4096);
  12759. if ($33) {
  12760. $34 = HEAP32[(16040)>>2]|0;
  12761. $35 = ($32*3)|0;
  12762. $36 = (($34) + ($35<<2)|0);
  12763. HEAPF32[$36>>2] = $0;
  12764. $37 = (($35) + 1)|0;
  12765. $38 = (($34) + ($37<<2)|0);
  12766. HEAPF32[$38>>2] = $1;
  12767. $39 = (($35) + 2)|0;
  12768. $40 = (($34) + ($39<<2)|0);
  12769. HEAPF32[$40>>2] = $2;
  12770. $41 = (($32) + 1)|0;
  12771. HEAP32[4007] = $41;
  12772. $42 = HEAP32[3722]|0;
  12773. $43 = HEAP32[3723]|0;
  12774. $44 = (($43) + -1)|0;
  12775. $45 = (($42) + (($44*144)|0)|0);
  12776. $46 = HEAP32[$45>>2]|0;
  12777. $47 = (($46) + 1)|0;
  12778. HEAP32[$45>>2] = $47;
  12779. STACKTOP = sp;return;
  12780. } else {
  12781. _TraceLog(1,8239,$vararg_buffer3);
  12782. STACKTOP = sp;return;
  12783. }
  12784. break;
  12785. }
  12786. default: {
  12787. STACKTOP = sp;return;
  12788. }
  12789. }
  12790. }
  12791. function _rlVertex2f($0,$1) {
  12792. $0 = +$0;
  12793. $1 = +$1;
  12794. var $2 = 0.0, label = 0, sp = 0;
  12795. sp = STACKTOP;
  12796. $2 = +HEAPF32[744];
  12797. _rlVertex3f($0,$1,$2);
  12798. return;
  12799. }
  12800. function _rlTexCoord2f($0,$1) {
  12801. $0 = +$0;
  12802. $1 = +$1;
  12803. var $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  12804. sp = STACKTOP;
  12805. $2 = HEAP32[3724]|0;
  12806. $3 = ($2|0)==(7);
  12807. if (!($3)) {
  12808. return;
  12809. }
  12810. $4 = HEAP32[(16044)>>2]|0;
  12811. $5 = HEAP32[(16032)>>2]|0;
  12812. $6 = $5 << 1;
  12813. $7 = (($4) + ($6<<2)|0);
  12814. HEAPF32[$7>>2] = $0;
  12815. $8 = $6 | 1;
  12816. $9 = (($4) + ($8<<2)|0);
  12817. HEAPF32[$9>>2] = $1;
  12818. $10 = (($5) + 1)|0;
  12819. HEAP32[(16032)>>2] = $10;
  12820. return;
  12821. }
  12822. function _rlNormal3f($0,$1,$2) {
  12823. $0 = +$0;
  12824. $1 = +$1;
  12825. $2 = +$2;
  12826. var label = 0, sp = 0;
  12827. sp = STACKTOP;
  12828. return;
  12829. }
  12830. function _rlColor4ub($0,$1,$2,$3) {
  12831. $0 = $0|0;
  12832. $1 = $1|0;
  12833. $2 = $2|0;
  12834. $3 = $3|0;
  12835. var $$sink37 = 0, $$sink38 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $4 = 0, $5 = 0;
  12836. var $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  12837. sp = STACKTOP;
  12838. $4 = HEAP32[3724]|0;
  12839. switch ($4|0) {
  12840. case 1: {
  12841. $$sink37 = (15940);$$sink38 = (15952);
  12842. break;
  12843. }
  12844. case 4: {
  12845. $$sink37 = (15988);$$sink38 = (16000);
  12846. break;
  12847. }
  12848. case 7: {
  12849. $$sink37 = (16036);$$sink38 = (16048);
  12850. break;
  12851. }
  12852. default: {
  12853. return;
  12854. }
  12855. }
  12856. $5 = HEAP32[$$sink38>>2]|0;
  12857. $6 = HEAP32[$$sink37>>2]|0;
  12858. $7 = $6 << 2;
  12859. $8 = (($5) + ($7)|0);
  12860. HEAP8[$8>>0] = $0;
  12861. $9 = HEAP32[$$sink38>>2]|0;
  12862. $10 = HEAP32[$$sink37>>2]|0;
  12863. $11 = $10 << 2;
  12864. $12 = $11 | 1;
  12865. $13 = (($9) + ($12)|0);
  12866. HEAP8[$13>>0] = $1;
  12867. $14 = HEAP32[$$sink38>>2]|0;
  12868. $15 = HEAP32[$$sink37>>2]|0;
  12869. $16 = $15 << 2;
  12870. $17 = $16 | 2;
  12871. $18 = (($14) + ($17)|0);
  12872. HEAP8[$18>>0] = $2;
  12873. $19 = HEAP32[$$sink38>>2]|0;
  12874. $20 = HEAP32[$$sink37>>2]|0;
  12875. $21 = $20 << 2;
  12876. $22 = $21 | 3;
  12877. $23 = (($19) + ($22)|0);
  12878. HEAP8[$23>>0] = $3;
  12879. $24 = HEAP32[$$sink37>>2]|0;
  12880. $25 = (($24) + 1)|0;
  12881. HEAP32[$$sink37>>2] = $25;
  12882. return;
  12883. }
  12884. function _rlEnableTexture($0) {
  12885. $0 = $0|0;
  12886. var $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;
  12887. sp = STACKTOP;
  12888. $1 = HEAP32[3722]|0;
  12889. $2 = HEAP32[3723]|0;
  12890. $3 = (($2) + -1)|0;
  12891. $4 = (((($1) + (($3*144)|0)|0)) + 8|0);
  12892. $5 = HEAP32[$4>>2]|0;
  12893. $6 = ($5|0)==($0|0);
  12894. if ($6) {
  12895. return;
  12896. }
  12897. $7 = (($1) + (($3*144)|0)|0);
  12898. $8 = HEAP32[$7>>2]|0;
  12899. $9 = ($8|0)>(0);
  12900. if ($9) {
  12901. $10 = (($2) + 1)|0;
  12902. HEAP32[3723] = $10;
  12903. }
  12904. $11 = HEAP32[3723]|0;
  12905. $12 = (($11) + -1)|0;
  12906. $13 = (((($1) + (($12*144)|0)|0)) + 8|0);
  12907. HEAP32[$13>>2] = $0;
  12908. $14 = (($1) + (($12*144)|0)|0);
  12909. HEAP32[$14>>2] = 0;
  12910. return;
  12911. }
  12912. function _rlDisableTexture() {
  12913. var $0 = 0, $1 = 0, label = 0, sp = 0;
  12914. sp = STACKTOP;
  12915. $0 = HEAP32[4007]|0;
  12916. $1 = ($0|0)>(4095);
  12917. if (!($1)) {
  12918. return;
  12919. }
  12920. _rlglDraw();
  12921. return;
  12922. }
  12923. function _DrawPixelV($0,$1) {
  12924. $0 = $0|0;
  12925. $1 = $1|0;
  12926. var $10 = 0, $11 = 0.0, $12 = 0.0, $13 = 0.0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0.0, label = 0, sp = 0;
  12927. sp = STACKTOP;
  12928. _rlBegin(1);
  12929. $2 = HEAP8[$1>>0]|0;
  12930. $3 = ((($1)) + 1|0);
  12931. $4 = HEAP8[$3>>0]|0;
  12932. $5 = ((($1)) + 2|0);
  12933. $6 = HEAP8[$5>>0]|0;
  12934. $7 = ((($1)) + 3|0);
  12935. $8 = HEAP8[$7>>0]|0;
  12936. _rlColor4ub($2,$4,$6,$8);
  12937. $9 = +HEAPF32[$0>>2];
  12938. $10 = ((($0)) + 4|0);
  12939. $11 = +HEAPF32[$10>>2];
  12940. _rlVertex2f($9,$11);
  12941. $12 = $9 + 1.0;
  12942. $13 = $11 + 1.0;
  12943. _rlVertex2f($12,$13);
  12944. _rlEnd();
  12945. return;
  12946. }
  12947. function _GetDefaultFont($0) {
  12948. $0 = $0|0;
  12949. var label = 0, sp = 0;
  12950. sp = STACKTOP;
  12951. ;HEAP32[$0>>2]=HEAP32[14456>>2]|0;HEAP32[$0+4>>2]=HEAP32[14456+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[14456+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[14456+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[14456+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[14456+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[14456+24>>2]|0;HEAP32[$0+28>>2]=HEAP32[14456+28>>2]|0;
  12952. return;
  12953. }
  12954. function _GetCharIndex($0,$1) {
  12955. $0 = $0|0;
  12956. $1 = $1|0;
  12957. var $$08 = 0, $$09 = 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;
  12958. sp = STACKTOP;
  12959. $2 = ((($0)) + 24|0);
  12960. $3 = HEAP32[$2>>2]|0;
  12961. $4 = ($3|0)>(0);
  12962. if (!($4)) {
  12963. $$08 = 0;
  12964. return ($$08|0);
  12965. }
  12966. $5 = ((($0)) + 28|0);
  12967. $6 = HEAP32[$5>>2]|0;
  12968. $$09 = 0;
  12969. while(1) {
  12970. $7 = (($6) + ($$09<<5)|0);
  12971. $8 = HEAP32[$7>>2]|0;
  12972. $9 = ($8|0)==($1|0);
  12973. if ($9) {
  12974. $$08 = $$09;
  12975. label = 5;
  12976. break;
  12977. }
  12978. $10 = (($$09) + 1)|0;
  12979. $11 = HEAP32[$2>>2]|0;
  12980. $12 = ($10|0)<($11|0);
  12981. if ($12) {
  12982. $$09 = $10;
  12983. } else {
  12984. $$08 = 0;
  12985. label = 5;
  12986. break;
  12987. }
  12988. }
  12989. if ((label|0) == 5) {
  12990. return ($$08|0);
  12991. }
  12992. return (0)|0;
  12993. }
  12994. function _DrawTexturePro($0,$1,$2,$3,$4,$5) {
  12995. $0 = $0|0;
  12996. $1 = $1|0;
  12997. $2 = $2|0;
  12998. $3 = $3|0;
  12999. $4 = +$4;
  13000. $5 = $5|0;
  13001. var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0.0, $22 = 0, $23 = 0, $24 = 0.0, $25 = 0.0, $26 = 0.0, $27 = 0, $28 = 0.0, $29 = 0.0;
  13002. var $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0.0, $39 = 0, $40 = 0, $41 = 0.0, $42 = 0.0, $43 = 0, $44 = 0, $45 = 0.0, $46 = 0, $47 = 0, $48 = 0.0, $49 = 0.0;
  13003. var $50 = 0, $51 = 0.0, $52 = 0, $53 = 0.0, $54 = 0.0, $55 = 0, $56 = 0, $57 = 0, $58 = 0.0, $59 = 0, $6 = 0, $60 = 0.0, $61 = 0.0, $62 = 0, $63 = 0, $64 = 0.0, $65 = 0, $66 = 0, $67 = 0, $68 = 0.0;
  13004. var $69 = 0, $7 = 0, $70 = 0.0, $71 = 0.0, $72 = 0, $73 = 0, $74 = 0, $75 = 0.0, $76 = 0, $77 = 0.0, $78 = 0.0, $79 = 0, $8 = 0, $80 = 0, $81 = 0.0, $82 = 0, $83 = 0.0, $84 = 0, $85 = 0, $86 = 0;
  13005. var $87 = 0.0, $88 = 0, $89 = 0.0, $9 = 0, $90 = 0.0, $91 = 0, $92 = 0.0, $93 = 0, $94 = 0.0, $95 = 0.0, $96 = 0, $97 = 0.0, label = 0, sp = 0;
  13006. sp = STACKTOP;
  13007. $6 = HEAP32[$0>>2]|0;
  13008. $7 = ($6|0)==(0);
  13009. if ($7) {
  13010. return;
  13011. }
  13012. $8 = ((($1)) + 8|0);
  13013. $9 = HEAP32[$8>>2]|0;
  13014. $10 = ($9|0)<(0);
  13015. if ($10) {
  13016. $11 = HEAP32[$1>>2]|0;
  13017. $12 = (($11) - ($9))|0;
  13018. HEAP32[$1>>2] = $12;
  13019. }
  13020. $13 = ((($1)) + 12|0);
  13021. $14 = HEAP32[$13>>2]|0;
  13022. $15 = ($14|0)<(0);
  13023. if ($15) {
  13024. $16 = ((($1)) + 4|0);
  13025. $17 = HEAP32[$16>>2]|0;
  13026. $18 = (($17) - ($14))|0;
  13027. HEAP32[$16>>2] = $18;
  13028. }
  13029. $19 = HEAP32[$0>>2]|0;
  13030. _rlEnableTexture($19);
  13031. _rlPushMatrix();
  13032. $20 = HEAP32[$2>>2]|0;
  13033. $21 = (+($20|0));
  13034. $22 = ((($2)) + 4|0);
  13035. $23 = HEAP32[$22>>2]|0;
  13036. $24 = (+($23|0));
  13037. _rlTranslatef($21,$24,0.0);
  13038. _rlRotatef($4,0.0,0.0,1.0);
  13039. $25 = +HEAPF32[$3>>2];
  13040. $26 = -$25;
  13041. $27 = ((($3)) + 4|0);
  13042. $28 = +HEAPF32[$27>>2];
  13043. $29 = -$28;
  13044. _rlTranslatef($26,$29,0.0);
  13045. _rlBegin(7);
  13046. $30 = HEAP8[$5>>0]|0;
  13047. $31 = ((($5)) + 1|0);
  13048. $32 = HEAP8[$31>>0]|0;
  13049. $33 = ((($5)) + 2|0);
  13050. $34 = HEAP8[$33>>0]|0;
  13051. $35 = ((($5)) + 3|0);
  13052. $36 = HEAP8[$35>>0]|0;
  13053. _rlColor4ub($30,$32,$34,$36);
  13054. $37 = HEAP32[$1>>2]|0;
  13055. $38 = (+($37|0));
  13056. $39 = ((($0)) + 4|0);
  13057. $40 = HEAP32[$39>>2]|0;
  13058. $41 = (+($40|0));
  13059. $42 = $38 / $41;
  13060. $43 = ((($1)) + 4|0);
  13061. $44 = HEAP32[$43>>2]|0;
  13062. $45 = (+($44|0));
  13063. $46 = ((($0)) + 8|0);
  13064. $47 = HEAP32[$46>>2]|0;
  13065. $48 = (+($47|0));
  13066. $49 = $45 / $48;
  13067. _rlTexCoord2f($42,$49);
  13068. _rlVertex2f(0.0,0.0);
  13069. $50 = HEAP32[$1>>2]|0;
  13070. $51 = (+($50|0));
  13071. $52 = HEAP32[$39>>2]|0;
  13072. $53 = (+($52|0));
  13073. $54 = $51 / $53;
  13074. $55 = HEAP32[$43>>2]|0;
  13075. $56 = HEAP32[$13>>2]|0;
  13076. $57 = (($56) + ($55))|0;
  13077. $58 = (+($57|0));
  13078. $59 = HEAP32[$46>>2]|0;
  13079. $60 = (+($59|0));
  13080. $61 = $58 / $60;
  13081. _rlTexCoord2f($54,$61);
  13082. $62 = ((($2)) + 12|0);
  13083. $63 = HEAP32[$62>>2]|0;
  13084. $64 = (+($63|0));
  13085. _rlVertex2f(0.0,$64);
  13086. $65 = HEAP32[$1>>2]|0;
  13087. $66 = HEAP32[$8>>2]|0;
  13088. $67 = (($66) + ($65))|0;
  13089. $68 = (+($67|0));
  13090. $69 = HEAP32[$39>>2]|0;
  13091. $70 = (+($69|0));
  13092. $71 = $68 / $70;
  13093. $72 = HEAP32[$43>>2]|0;
  13094. $73 = HEAP32[$13>>2]|0;
  13095. $74 = (($73) + ($72))|0;
  13096. $75 = (+($74|0));
  13097. $76 = HEAP32[$46>>2]|0;
  13098. $77 = (+($76|0));
  13099. $78 = $75 / $77;
  13100. _rlTexCoord2f($71,$78);
  13101. $79 = ((($2)) + 8|0);
  13102. $80 = HEAP32[$79>>2]|0;
  13103. $81 = (+($80|0));
  13104. $82 = HEAP32[$62>>2]|0;
  13105. $83 = (+($82|0));
  13106. _rlVertex2f($81,$83);
  13107. $84 = HEAP32[$1>>2]|0;
  13108. $85 = HEAP32[$8>>2]|0;
  13109. $86 = (($85) + ($84))|0;
  13110. $87 = (+($86|0));
  13111. $88 = HEAP32[$39>>2]|0;
  13112. $89 = (+($88|0));
  13113. $90 = $87 / $89;
  13114. $91 = HEAP32[$43>>2]|0;
  13115. $92 = (+($91|0));
  13116. $93 = HEAP32[$46>>2]|0;
  13117. $94 = (+($93|0));
  13118. $95 = $92 / $94;
  13119. _rlTexCoord2f($90,$95);
  13120. $96 = HEAP32[$79>>2]|0;
  13121. $97 = (+($96|0));
  13122. _rlVertex2f($97,0.0);
  13123. _rlEnd();
  13124. _rlPopMatrix();
  13125. _rlDisableTexture();
  13126. return;
  13127. }
  13128. function _DrawText($0,$1,$2,$3,$4) {
  13129. $0 = $0|0;
  13130. $1 = $1|0;
  13131. $2 = $2|0;
  13132. $3 = $3|0;
  13133. $4 = $4|0;
  13134. var $$ = 0, $$byval_copy = 0, $$byval_copy1 = 0, $$byval_copy2 = 0, $10 = 0.0, $11 = 0, $12 = 0.0, $13 = 0, $14 = 0, $15 = 0.0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  13135. sp = STACKTOP;
  13136. STACKTOP = STACKTOP + 128|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(128|0);
  13137. $$byval_copy2 = sp + 112|0;
  13138. $$byval_copy1 = sp + 104|0;
  13139. $$byval_copy = sp + 72|0;
  13140. $5 = sp + 32|0;
  13141. $6 = sp + 64|0;
  13142. $7 = sp;
  13143. _GetDefaultFont($5);
  13144. $8 = HEAP32[$5>>2]|0;
  13145. $9 = ($8|0)==(0);
  13146. if ($9) {
  13147. STACKTOP = sp;return;
  13148. }
  13149. $10 = (+($1|0));
  13150. HEAPF32[$6>>2] = $10;
  13151. $11 = ((($6)) + 4|0);
  13152. $12 = (+($2|0));
  13153. HEAPF32[$11>>2] = $12;
  13154. $13 = ($3|0)>(10);
  13155. $$ = $13 ? $3 : 10;
  13156. $14 = (($$>>>0) / 10)&-1;
  13157. _GetDefaultFont($7);
  13158. $15 = (+($$|0));
  13159. ;HEAP32[$$byval_copy>>2]=HEAP32[$7>>2]|0;HEAP32[$$byval_copy+4>>2]=HEAP32[$7+4>>2]|0;HEAP32[$$byval_copy+8>>2]=HEAP32[$7+8>>2]|0;HEAP32[$$byval_copy+12>>2]=HEAP32[$7+12>>2]|0;HEAP32[$$byval_copy+16>>2]=HEAP32[$7+16>>2]|0;HEAP32[$$byval_copy+20>>2]=HEAP32[$7+20>>2]|0;HEAP32[$$byval_copy+24>>2]=HEAP32[$7+24>>2]|0;HEAP32[$$byval_copy+28>>2]=HEAP32[$7+28>>2]|0;
  13160. ;HEAP32[$$byval_copy1>>2]=HEAP32[$6>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$6+4>>2]|0;
  13161. ;HEAP8[$$byval_copy2>>0]=HEAP8[$4>>0]|0;HEAP8[$$byval_copy2+1>>0]=HEAP8[$4+1>>0]|0;HEAP8[$$byval_copy2+2>>0]=HEAP8[$4+2>>0]|0;HEAP8[$$byval_copy2+3>>0]=HEAP8[$4+3>>0]|0;
  13162. _DrawTextEx($$byval_copy,$0,$$byval_copy1,$15,$14,$$byval_copy2);
  13163. STACKTOP = sp;return;
  13164. }
  13165. function _DrawTextEx($0,$1,$2,$3,$4,$5) {
  13166. $0 = $0|0;
  13167. $1 = $1|0;
  13168. $2 = $2|0;
  13169. $3 = +$3;
  13170. $4 = $4|0;
  13171. $5 = $5|0;
  13172. var $$04954 = 0, $$05153 = 0, $$055 = 0, $$1 = 0, $$150 = 0, $$152 = 0, $$2 = 0, $$byval_copy1 = 0, $$byval_copy2 = 0, $$byval_copy3 = 0, $$byval_copy4 = 0, $$byval_copy5 = 0, $$sink = 0, $10 = 0, $11 = 0.0, $12 = 0.0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0;
  13173. var $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0.0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0.0, $28 = 0.0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0;
  13174. var $37 = 0, $38 = 0, $39 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0.0, $45 = 0.0, $46 = 0, $47 = 0, $48 = 0.0, $49 = 0.0, $50 = 0.0, $51 = 0, $52 = 0.0, $53 = 0.0, $54 = 0.0, $55 = 0, $56 = 0;
  13175. var $57 = 0.0, $58 = 0.0, $59 = 0.0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0.0, $64 = 0.0, $65 = 0, $66 = 0, $67 = 0, $68 = 0.0, $69 = 0.0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0;
  13176. var $75 = 0, $76 = 0, $77 = 0.0, $78 = 0.0, $79 = 0.0, $8 = 0, $80 = 0, $81 = 0, $82 = 0.0, $83 = 0.0, $84 = 0.0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $9 = 0, label = 0, sp = 0;
  13177. sp = STACKTOP;
  13178. STACKTOP = STACKTOP + 128|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(128|0);
  13179. $$byval_copy5 = sp + 88|0;
  13180. $$byval_copy4 = sp + 80|0;
  13181. $$byval_copy3 = sp + 64|0;
  13182. $$byval_copy2 = sp + 48|0;
  13183. $$byval_copy1 = sp + 24|0;
  13184. $6 = sp + 8|0;
  13185. $7 = sp;
  13186. $8 = (_strlen($1)|0);
  13187. $9 = ((($0)) + 20|0);
  13188. $10 = HEAP32[$9>>2]|0;
  13189. $11 = (+($10|0));
  13190. $12 = $3 / $11;
  13191. $13 = ($8|0)>(0);
  13192. if (!($13)) {
  13193. STACKTOP = sp;return;
  13194. }
  13195. $14 = ((($0)) + 28|0);
  13196. $15 = +HEAPF32[$2>>2];
  13197. $16 = ((($6)) + 4|0);
  13198. $17 = ((($2)) + 4|0);
  13199. $18 = ((($6)) + 8|0);
  13200. $19 = ((($6)) + 12|0);
  13201. $20 = ((($7)) + 4|0);
  13202. $21 = (+($4|0));
  13203. $$04954 = 0;$$05153 = 0;$$055 = 0;
  13204. while(1) {
  13205. $22 = (($1) + ($$055)|0);
  13206. $23 = HEAP8[$22>>0]|0;
  13207. switch ($23<<24>>24) {
  13208. case 10: {
  13209. $24 = HEAP32[$9>>2]|0;
  13210. $25 = (($24|0) / 2)&-1;
  13211. $26 = (($25) + ($24))|0;
  13212. $27 = (+($26|0));
  13213. $28 = $12 * $27;
  13214. $29 = (~~(($28)));
  13215. $30 = (($29) + ($$05153))|0;
  13216. $$150 = 0;$$152 = $30;$$2 = $$055;
  13217. break;
  13218. }
  13219. case -62: {
  13220. $31 = (($$055) + 1)|0;
  13221. $32 = (($1) + ($31)|0);
  13222. $33 = HEAP8[$32>>0]|0;
  13223. $34 = $33&255;
  13224. $$1 = $31;$$sink = $34;
  13225. label = 9;
  13226. break;
  13227. }
  13228. case -61: {
  13229. $35 = (($$055) + 1)|0;
  13230. $36 = (($1) + ($35)|0);
  13231. $37 = HEAP8[$36>>0]|0;
  13232. $38 = $37&255;
  13233. $39 = (($38) + 64)|0;
  13234. $$1 = $35;$$sink = $39;
  13235. label = 9;
  13236. break;
  13237. }
  13238. default: {
  13239. $40 = $23 << 24 >> 24;
  13240. $$1 = $$055;$$sink = $40;
  13241. label = 9;
  13242. }
  13243. }
  13244. do {
  13245. if ((label|0) == 9) {
  13246. label = 0;
  13247. ;HEAP32[$$byval_copy5>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy5+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy5+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy5+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy5+16>>2]=HEAP32[$0+16>>2]|0;HEAP32[$$byval_copy5+20>>2]=HEAP32[$0+20>>2]|0;HEAP32[$$byval_copy5+24>>2]=HEAP32[$0+24>>2]|0;HEAP32[$$byval_copy5+28>>2]=HEAP32[$0+28>>2]|0;
  13248. $41 = (_GetCharIndex($$byval_copy5,$$sink)|0);
  13249. $42 = HEAP32[$14>>2]|0;
  13250. $43 = (((($42) + ($41<<5)|0)) + 4|0);
  13251. $44 = (+($$04954|0));
  13252. $45 = $44 + $15;
  13253. $46 = (((($42) + ($41<<5)|0)) + 20|0);
  13254. $47 = HEAP32[$46>>2]|0;
  13255. $48 = (+($47|0));
  13256. $49 = $12 * $48;
  13257. $50 = $45 + $49;
  13258. $51 = (~~(($50)));
  13259. HEAP32[$6>>2] = $51;
  13260. $52 = +HEAPF32[$17>>2];
  13261. $53 = (+($$05153|0));
  13262. $54 = $53 + $52;
  13263. $55 = (((($42) + ($41<<5)|0)) + 24|0);
  13264. $56 = HEAP32[$55>>2]|0;
  13265. $57 = (+($56|0));
  13266. $58 = $12 * $57;
  13267. $59 = $54 + $58;
  13268. $60 = (~~(($59)));
  13269. HEAP32[$16>>2] = $60;
  13270. $61 = (((($42) + ($41<<5)|0)) + 12|0);
  13271. $62 = HEAP32[$61>>2]|0;
  13272. $63 = (+($62|0));
  13273. $64 = $12 * $63;
  13274. $65 = (~~(($64)));
  13275. HEAP32[$18>>2] = $65;
  13276. $66 = (((($42) + ($41<<5)|0)) + 16|0);
  13277. $67 = HEAP32[$66>>2]|0;
  13278. $68 = (+($67|0));
  13279. $69 = $12 * $68;
  13280. $70 = (~~(($69)));
  13281. HEAP32[$19>>2] = $70;
  13282. HEAPF32[$7>>2] = 0.0;
  13283. HEAPF32[$20>>2] = 0.0;
  13284. ;HEAP32[$$byval_copy1>>2]=HEAP32[$0>>2]|0;HEAP32[$$byval_copy1+4>>2]=HEAP32[$0+4>>2]|0;HEAP32[$$byval_copy1+8>>2]=HEAP32[$0+8>>2]|0;HEAP32[$$byval_copy1+12>>2]=HEAP32[$0+12>>2]|0;HEAP32[$$byval_copy1+16>>2]=HEAP32[$0+16>>2]|0;
  13285. ;HEAP32[$$byval_copy2>>2]=HEAP32[$43>>2]|0;HEAP32[$$byval_copy2+4>>2]=HEAP32[$43+4>>2]|0;HEAP32[$$byval_copy2+8>>2]=HEAP32[$43+8>>2]|0;HEAP32[$$byval_copy2+12>>2]=HEAP32[$43+12>>2]|0;
  13286. ;HEAP32[$$byval_copy3>>2]=HEAP32[$6>>2]|0;HEAP32[$$byval_copy3+4>>2]=HEAP32[$6+4>>2]|0;HEAP32[$$byval_copy3+8>>2]=HEAP32[$6+8>>2]|0;HEAP32[$$byval_copy3+12>>2]=HEAP32[$6+12>>2]|0;
  13287. ;HEAP32[$$byval_copy4>>2]=HEAP32[$7>>2]|0;HEAP32[$$byval_copy4+4>>2]=HEAP32[$7+4>>2]|0;
  13288. ;HEAP8[$$byval_copy5>>0]=HEAP8[$5>>0]|0;HEAP8[$$byval_copy5+1>>0]=HEAP8[$5+1>>0]|0;HEAP8[$$byval_copy5+2>>0]=HEAP8[$5+2>>0]|0;HEAP8[$$byval_copy5+3>>0]=HEAP8[$5+3>>0]|0;
  13289. _DrawTexturePro($$byval_copy1,$$byval_copy2,$$byval_copy3,$$byval_copy4,0.0,$$byval_copy5);
  13290. $71 = HEAP32[$14>>2]|0;
  13291. $72 = (((($71) + ($41<<5)|0)) + 28|0);
  13292. $73 = HEAP32[$72>>2]|0;
  13293. $74 = ($73|0)==(0);
  13294. if ($74) {
  13295. $75 = (((($71) + ($41<<5)|0)) + 12|0);
  13296. $76 = HEAP32[$75>>2]|0;
  13297. $77 = (+($76|0));
  13298. $78 = $12 * $77;
  13299. $79 = $21 + $78;
  13300. $80 = (~~(($79)));
  13301. $81 = (($80) + ($$04954))|0;
  13302. $$150 = $81;$$152 = $$05153;$$2 = $$1;
  13303. break;
  13304. } else {
  13305. $82 = (+($73|0));
  13306. $83 = $12 * $82;
  13307. $84 = $21 + $83;
  13308. $85 = (~~(($84)));
  13309. $86 = (($85) + ($$04954))|0;
  13310. $$150 = $86;$$152 = $$05153;$$2 = $$1;
  13311. break;
  13312. }
  13313. }
  13314. } while(0);
  13315. $87 = (($$2) + 1)|0;
  13316. $88 = ($87|0)<($8|0);
  13317. if ($88) {
  13318. $$04954 = $$150;$$05153 = $$152;$$055 = $87;
  13319. } else {
  13320. break;
  13321. }
  13322. }
  13323. STACKTOP = sp;return;
  13324. }
  13325. function _InitAudioDevice() {
  13326. var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $cond = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, label = 0, sp = 0;
  13327. sp = STACKTOP;
  13328. STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
  13329. $vararg_buffer3 = sp + 16|0;
  13330. $vararg_buffer1 = sp + 8|0;
  13331. $vararg_buffer = sp;
  13332. $0 = (_alcOpenDevice((0|0))|0);
  13333. $1 = ($0|0)==(0|0);
  13334. if ($1) {
  13335. _TraceLog(1,8264,$vararg_buffer);
  13336. STACKTOP = sp;return;
  13337. }
  13338. $2 = (_alcCreateContext(($0|0),(0|0))|0);
  13339. $cond = ($2|0)==(0|0);
  13340. do {
  13341. if (!($cond)) {
  13342. $3 = (_alcMakeContextCurrent(($2|0))|0);
  13343. $4 = ($3<<24>>24)==(0);
  13344. if ($4) {
  13345. _alcDestroyContext(($2|0));
  13346. break;
  13347. }
  13348. $5 = (_alcGetString(($0|0),4101)|0);
  13349. HEAP32[$vararg_buffer3>>2] = $5;
  13350. _TraceLog(0,8332,$vararg_buffer3);
  13351. _alListener3f(4100,0.0,0.0,0.0);
  13352. _alListener3f(4102,0.0,0.0,0.0);
  13353. _alListener3f(4111,0.0,0.0,-1.0);
  13354. _alListenerf(4106,1.0);
  13355. STACKTOP = sp;return;
  13356. }
  13357. } while(0);
  13358. (_alcCloseDevice(($0|0))|0);
  13359. _TraceLog(1,8297,$vararg_buffer1);
  13360. STACKTOP = sp;return;
  13361. }
  13362. function _CloseAudioDevice() {
  13363. var $0 = 0, $1 = 0, $2 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, label = 0, sp = 0;
  13364. sp = STACKTOP;
  13365. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  13366. $vararg_buffer1 = sp + 8|0;
  13367. $vararg_buffer = sp;
  13368. $0 = (_alcGetCurrentContext()|0);
  13369. $1 = ($0|0)==(0|0);
  13370. if ($1) {
  13371. _TraceLog(2,8386,$vararg_buffer);
  13372. }
  13373. $2 = (_alcGetContextsDevice(($0|0))|0);
  13374. (_alcMakeContextCurrent((0|0))|0);
  13375. _alcDestroyContext(($0|0));
  13376. (_alcCloseDevice(($2|0))|0);
  13377. _TraceLog(0,8434,$vararg_buffer1);
  13378. STACKTOP = sp;return;
  13379. }
  13380. function _InitAudioStream($0,$1,$2,$3) {
  13381. $0 = $0|0;
  13382. $1 = $1|0;
  13383. $2 = $2|0;
  13384. $3 = $3|0;
  13385. var $$off = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0;
  13386. var $29 = 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;
  13387. var $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer4 = 0, $vararg_buffer7 = 0, $vararg_ptr10 = 0, $vararg_ptr11 = 0, $vararg_ptr12 = 0;
  13388. var label = 0, sp = 0;
  13389. sp = STACKTOP;
  13390. STACKTOP = STACKTOP + 80|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(80|0);
  13391. $vararg_buffer7 = sp + 24|0;
  13392. $vararg_buffer4 = sp + 16|0;
  13393. $vararg_buffer1 = sp + 8|0;
  13394. $vararg_buffer = sp;
  13395. $4 = sp + 40|0;
  13396. $5 = ((($4)) + 8|0);
  13397. ;HEAP32[$5>>2]=0|0;HEAP32[$5+4>>2]=0|0;HEAP32[$5+8>>2]=0|0;HEAP32[$5+12>>2]=0|0;HEAP32[$5+16>>2]=0|0;
  13398. HEAP32[$4>>2] = $1;
  13399. $6 = ((($4)) + 4|0);
  13400. HEAP32[$6>>2] = $2;
  13401. $$off = (($3) + -1)|0;
  13402. $7 = ($$off>>>0)<(2);
  13403. L1: do {
  13404. if ($7) {
  13405. $9 = ((($4)) + 8|0);
  13406. HEAP32[$9>>2] = $3;
  13407. switch ($3|0) {
  13408. case 1: {
  13409. $55 = $9;
  13410. label = 4;
  13411. break L1;
  13412. break;
  13413. }
  13414. case 2: {
  13415. break;
  13416. }
  13417. default: {
  13418. $26 = $9;
  13419. break L1;
  13420. }
  13421. }
  13422. switch ($2|0) {
  13423. case 8: {
  13424. $13 = ((($4)) + 12|0);
  13425. HEAP32[$13>>2] = 4354;
  13426. $26 = $9;
  13427. break L1;
  13428. break;
  13429. }
  13430. case 16: {
  13431. $14 = ((($4)) + 12|0);
  13432. HEAP32[$14>>2] = 4355;
  13433. $26 = $9;
  13434. break L1;
  13435. break;
  13436. }
  13437. case 32: {
  13438. $15 = ((($4)) + 12|0);
  13439. HEAP32[$15>>2] = 65553;
  13440. $26 = $9;
  13441. break L1;
  13442. break;
  13443. }
  13444. default: {
  13445. HEAP32[$vararg_buffer4>>2] = $2;
  13446. _TraceLog(2,8535,$vararg_buffer4);
  13447. $26 = $9;
  13448. break L1;
  13449. }
  13450. }
  13451. } else {
  13452. HEAP32[$vararg_buffer>>2] = $3;
  13453. _TraceLog(2,8479,$vararg_buffer);
  13454. $8 = ((($4)) + 8|0);
  13455. HEAP32[$8>>2] = 1;
  13456. $55 = $8;
  13457. label = 4;
  13458. }
  13459. } while(0);
  13460. L10: do {
  13461. if ((label|0) == 4) {
  13462. switch ($2|0) {
  13463. case 8: {
  13464. $10 = ((($4)) + 12|0);
  13465. HEAP32[$10>>2] = 4352;
  13466. $26 = $55;
  13467. break L10;
  13468. break;
  13469. }
  13470. case 16: {
  13471. $11 = ((($4)) + 12|0);
  13472. HEAP32[$11>>2] = 4353;
  13473. $26 = $55;
  13474. break L10;
  13475. break;
  13476. }
  13477. case 32: {
  13478. $12 = ((($4)) + 12|0);
  13479. HEAP32[$12>>2] = 65552;
  13480. $26 = $55;
  13481. break L10;
  13482. break;
  13483. }
  13484. default: {
  13485. HEAP32[$vararg_buffer1>>2] = $2;
  13486. _TraceLog(2,8535,$vararg_buffer1);
  13487. $26 = $55;
  13488. break L10;
  13489. }
  13490. }
  13491. }
  13492. } while(0);
  13493. $16 = ((($4)) + 16|0);
  13494. _alGenSources(1,($16|0));
  13495. $17 = HEAP32[$16>>2]|0;
  13496. _alSourcef(($17|0),4099,1.0);
  13497. $18 = HEAP32[$16>>2]|0;
  13498. _alSourcef(($18|0),4106,1.0);
  13499. $19 = HEAP32[$16>>2]|0;
  13500. _alSource3f(($19|0),4100,0.0,0.0,0.0);
  13501. $20 = HEAP32[$16>>2]|0;
  13502. _alSource3f(($20|0),4102,0.0,0.0,0.0);
  13503. $21 = ((($4)) + 20|0);
  13504. _alGenBuffers(2,($21|0));
  13505. $22 = HEAP32[$6>>2]|0;
  13506. $23 = $22 << 9;
  13507. $24 = $23 & 536870400;
  13508. $25 = HEAP32[$26>>2]|0;
  13509. $27 = Math_imul($24, $25)|0;
  13510. $28 = (_calloc($27,1)|0);
  13511. $29 = ((($4)) + 12|0);
  13512. $30 = ((($4)) + 20|0);
  13513. $31 = HEAP32[$30>>2]|0;
  13514. $32 = HEAP32[$29>>2]|0;
  13515. $33 = HEAP32[$6>>2]|0;
  13516. $34 = $33 << 9;
  13517. $35 = $34 & 536870400;
  13518. $36 = HEAP32[$26>>2]|0;
  13519. $37 = Math_imul($35, $36)|0;
  13520. $38 = HEAP32[$4>>2]|0;
  13521. _alBufferData(($31|0),($32|0),($28|0),($37|0),($38|0));
  13522. $39 = ((($4)) + 24|0);
  13523. $40 = HEAP32[$39>>2]|0;
  13524. $41 = HEAP32[$29>>2]|0;
  13525. $42 = HEAP32[$6>>2]|0;
  13526. $43 = $42 << 9;
  13527. $44 = $43 & 536870400;
  13528. $45 = HEAP32[$26>>2]|0;
  13529. $46 = Math_imul($44, $45)|0;
  13530. $47 = HEAP32[$4>>2]|0;
  13531. _alBufferData(($40|0),($41|0),($28|0),($46|0),($47|0));
  13532. _free($28);
  13533. $48 = HEAP32[$16>>2]|0;
  13534. _alSourceQueueBuffers(($48|0),2,($21|0));
  13535. $49 = HEAP32[$16>>2]|0;
  13536. $50 = HEAP32[$4>>2]|0;
  13537. $51 = HEAP32[$6>>2]|0;
  13538. $52 = HEAP32[$26>>2]|0;
  13539. $53 = ($52|0)==(1);
  13540. $54 = $53 ? 8467 : 8472;
  13541. HEAP32[$vararg_buffer7>>2] = $49;
  13542. $vararg_ptr10 = ((($vararg_buffer7)) + 4|0);
  13543. HEAP32[$vararg_ptr10>>2] = $50;
  13544. $vararg_ptr11 = ((($vararg_buffer7)) + 8|0);
  13545. HEAP32[$vararg_ptr11>>2] = $51;
  13546. $vararg_ptr12 = ((($vararg_buffer7)) + 12|0);
  13547. HEAP32[$vararg_ptr12>>2] = $54;
  13548. _TraceLog(0,8584,$vararg_buffer7);
  13549. ;HEAP32[$0>>2]=HEAP32[$4>>2]|0;HEAP32[$0+4>>2]=HEAP32[$4+4>>2]|0;HEAP32[$0+8>>2]=HEAP32[$4+8>>2]|0;HEAP32[$0+12>>2]=HEAP32[$4+12>>2]|0;HEAP32[$0+16>>2]=HEAP32[$4+16>>2]|0;HEAP32[$0+20>>2]=HEAP32[$4+20>>2]|0;HEAP32[$0+24>>2]=HEAP32[$4+24>>2]|0;
  13550. STACKTOP = sp;return;
  13551. }
  13552. function _CloseAudioStream($0) {
  13553. $0 = $0|0;
  13554. var $$pr = 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, $vararg_buffer = 0, label = 0, sp = 0;
  13555. sp = STACKTOP;
  13556. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  13557. $vararg_buffer = sp;
  13558. $1 = sp + 8|0;
  13559. $2 = sp + 4|0;
  13560. $3 = ((($0)) + 16|0);
  13561. $4 = HEAP32[$3>>2]|0;
  13562. _alSourceStop(($4|0));
  13563. HEAP32[$1>>2] = 0;
  13564. $5 = HEAP32[$3>>2]|0;
  13565. _alGetSourcei(($5|0),4117,($1|0));
  13566. HEAP32[$2>>2] = 0;
  13567. $$pr = HEAP32[$1>>2]|0;
  13568. $6 = ($$pr|0)>(0);
  13569. if ($6) {
  13570. while(1) {
  13571. $7 = HEAP32[$3>>2]|0;
  13572. _alSourceUnqueueBuffers(($7|0),1,($2|0));
  13573. $8 = HEAP32[$1>>2]|0;
  13574. $9 = (($8) + -1)|0;
  13575. HEAP32[$1>>2] = $9;
  13576. $10 = ($8|0)>(1);
  13577. if (!($10)) {
  13578. break;
  13579. }
  13580. }
  13581. }
  13582. _alDeleteSources(1,($3|0));
  13583. $11 = ((($0)) + 20|0);
  13584. _alDeleteBuffers(2,($11|0));
  13585. $12 = HEAP32[$3>>2]|0;
  13586. HEAP32[$vararg_buffer>>2] = $12;
  13587. _TraceLog(0,8649,$vararg_buffer);
  13588. STACKTOP = sp;return;
  13589. }
  13590. function _UpdateAudioStream($0,$1,$2) {
  13591. $0 = $0|0;
  13592. $1 = $1|0;
  13593. $2 = $2|0;
  13594. var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  13595. sp = STACKTOP;
  13596. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  13597. $3 = sp;
  13598. HEAP32[$3>>2] = 0;
  13599. $4 = ((($0)) + 16|0);
  13600. $5 = HEAP32[$4>>2]|0;
  13601. _alSourceUnqueueBuffers(($5|0),1,($3|0));
  13602. $6 = (_alGetError()|0);
  13603. $7 = ($6|0)==(40963);
  13604. if ($7) {
  13605. STACKTOP = sp;return;
  13606. }
  13607. $8 = HEAP32[$3>>2]|0;
  13608. $9 = ((($0)) + 12|0);
  13609. $10 = HEAP32[$9>>2]|0;
  13610. $11 = ((($0)) + 8|0);
  13611. $12 = HEAP32[$11>>2]|0;
  13612. $13 = Math_imul($12, $2)|0;
  13613. $14 = ((($0)) + 4|0);
  13614. $15 = HEAP32[$14>>2]|0;
  13615. $16 = Math_imul($13, $15)|0;
  13616. $17 = $16 >>> 3;
  13617. $18 = HEAP32[$0>>2]|0;
  13618. _alBufferData(($8|0),($10|0),($1|0),($17|0),($18|0));
  13619. $19 = HEAP32[$4>>2]|0;
  13620. _alSourceQueueBuffers(($19|0),1,($3|0));
  13621. STACKTOP = sp;return;
  13622. }
  13623. function _IsAudioBufferProcessed($0) {
  13624. $0 = $0|0;
  13625. var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, label = 0, sp = 0;
  13626. sp = STACKTOP;
  13627. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  13628. $1 = sp;
  13629. HEAP32[$1>>2] = 0;
  13630. $2 = ((($0)) + 16|0);
  13631. $3 = HEAP32[$2>>2]|0;
  13632. _alGetSourcei(($3|0),4118,($1|0));
  13633. $4 = HEAP32[$1>>2]|0;
  13634. $5 = ($4|0)>(0);
  13635. $6 = $5&1;
  13636. STACKTOP = sp;return ($6|0);
  13637. }
  13638. function _PlayAudioStream($0) {
  13639. $0 = $0|0;
  13640. var $1 = 0, $2 = 0, label = 0, sp = 0;
  13641. sp = STACKTOP;
  13642. $1 = ((($0)) + 16|0);
  13643. $2 = HEAP32[$1>>2]|0;
  13644. _alSourcePlay(($2|0));
  13645. return;
  13646. }
  13647. function _emscripten_GetProcAddress($0) {
  13648. $0 = $0|0;
  13649. var $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, $116 = 0;
  13650. 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;
  13651. 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;
  13652. 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;
  13653. 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;
  13654. 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;
  13655. 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;
  13656. 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;
  13657. 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;
  13658. 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;
  13659. 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;
  13660. 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;
  13661. 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;
  13662. 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;
  13663. 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;
  13664. 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;
  13665. 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;
  13666. 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;
  13667. 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;
  13668. 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;
  13669. 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;
  13670. 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;
  13671. 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;
  13672. 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;
  13673. 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;
  13674. var $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 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;
  13675. 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;
  13676. 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, label = 0, sp = 0;
  13677. sp = STACKTOP;
  13678. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  13679. $1 = sp + 12|0;
  13680. $2 = sp + 8|0;
  13681. $3 = sp + 4|0;
  13682. $4 = sp;
  13683. HEAP32[$2>>2] = $0;
  13684. $5 = HEAP32[$2>>2]|0;
  13685. $6 = (_strlen($5)|0);
  13686. $7 = (($6) + 1)|0;
  13687. $8 = (_malloc($7)|0);
  13688. HEAP32[$3>>2] = $8;
  13689. $9 = HEAP32[$3>>2]|0;
  13690. $10 = HEAP32[$2>>2]|0;
  13691. (_strcpy($9,$10)|0);
  13692. $11 = HEAP32[$3>>2]|0;
  13693. $12 = (_strstr($11,8688)|0);
  13694. HEAP32[$4>>2] = $12;
  13695. $13 = HEAP32[$4>>2]|0;
  13696. $14 = ($13|0)!=(0|0);
  13697. if ($14) {
  13698. $15 = HEAP32[$4>>2]|0;
  13699. HEAP8[$15>>0] = 0;
  13700. }
  13701. $16 = HEAP32[$3>>2]|0;
  13702. $17 = (_strstr($16,8692)|0);
  13703. HEAP32[$4>>2] = $17;
  13704. $18 = HEAP32[$4>>2]|0;
  13705. $19 = ($18|0)!=(0|0);
  13706. if ($19) {
  13707. $20 = HEAP32[$4>>2]|0;
  13708. HEAP8[$20>>0] = 0;
  13709. }
  13710. $21 = HEAP32[$3>>2]|0;
  13711. $22 = (_strstr($21,8696)|0);
  13712. HEAP32[$4>>2] = $22;
  13713. $23 = HEAP32[$4>>2]|0;
  13714. $24 = ($23|0)!=(0|0);
  13715. if ($24) {
  13716. $25 = HEAP32[$4>>2]|0;
  13717. HEAP8[$25>>0] = 0;
  13718. }
  13719. $26 = HEAP32[$3>>2]|0;
  13720. $27 = (_strstr($26,8700)|0);
  13721. HEAP32[$4>>2] = $27;
  13722. $28 = HEAP32[$4>>2]|0;
  13723. $29 = ($28|0)!=(0|0);
  13724. if ($29) {
  13725. $30 = HEAP32[$4>>2]|0;
  13726. HEAP8[$30>>0] = 0;
  13727. }
  13728. $31 = HEAP32[$3>>2]|0;
  13729. $32 = (_strcmp($31,8706)|0);
  13730. $33 = ($32|0)!=(0);
  13731. do {
  13732. if ($33) {
  13733. $34 = HEAP32[$3>>2]|0;
  13734. $35 = (_strcmp($34,8744)|0);
  13735. $36 = ($35|0)!=(0);
  13736. if (!($36)) {
  13737. HEAP32[$3>>2] = 8763;
  13738. break;
  13739. }
  13740. $37 = HEAP32[$3>>2]|0;
  13741. $38 = (_strcmp($37,8776)|0);
  13742. $39 = ($38|0)!=(0);
  13743. if (!($39)) {
  13744. HEAP32[$3>>2] = 8797;
  13745. break;
  13746. }
  13747. $40 = HEAP32[$3>>2]|0;
  13748. $41 = (_strcmp($40,8812)|0);
  13749. $42 = ($41|0)!=(0);
  13750. if (!($42)) {
  13751. HEAP32[$3>>2] = 8827;
  13752. break;
  13753. }
  13754. $43 = HEAP32[$3>>2]|0;
  13755. $44 = (_strcmp($43,8842)|0);
  13756. $45 = ($44|0)!=(0);
  13757. if (!($45)) {
  13758. HEAP32[$3>>2] = 8857;
  13759. }
  13760. } else {
  13761. HEAP32[$3>>2] = 8728;
  13762. }
  13763. } while(0);
  13764. $46 = HEAP32[$3>>2]|0;
  13765. $47 = (_strcmp($46,8872)|0);
  13766. $48 = ($47|0)!=(0);
  13767. do {
  13768. if ($48) {
  13769. $49 = HEAP32[$3>>2]|0;
  13770. $50 = (_strcmp($49,8886)|0);
  13771. $51 = ($50|0)!=(0);
  13772. if (!($51)) {
  13773. HEAP32[$1>>2] = 2;
  13774. break;
  13775. }
  13776. $52 = HEAP32[$3>>2]|0;
  13777. $53 = (_strcmp($52,8898)|0);
  13778. $54 = ($53|0)!=(0);
  13779. if (!($54)) {
  13780. HEAP32[$1>>2] = 6;
  13781. break;
  13782. }
  13783. $55 = HEAP32[$3>>2]|0;
  13784. $56 = (_strcmp($55,8912)|0);
  13785. $57 = ($56|0)!=(0);
  13786. if (!($57)) {
  13787. HEAP32[$1>>2] = 7;
  13788. break;
  13789. }
  13790. $58 = HEAP32[$3>>2]|0;
  13791. $59 = (_strcmp($58,8924)|0);
  13792. $60 = ($59|0)!=(0);
  13793. if (!($60)) {
  13794. HEAP32[$1>>2] = 8;
  13795. break;
  13796. }
  13797. $61 = HEAP32[$3>>2]|0;
  13798. $62 = (_strcmp($61,8938)|0);
  13799. $63 = ($62|0)!=(0);
  13800. if (!($63)) {
  13801. HEAP32[$1>>2] = 9;
  13802. break;
  13803. }
  13804. $64 = HEAP32[$3>>2]|0;
  13805. $65 = (_strcmp($64,8952)|0);
  13806. $66 = ($65|0)!=(0);
  13807. if (!($66)) {
  13808. HEAP32[$1>>2] = 10;
  13809. break;
  13810. }
  13811. $67 = HEAP32[$3>>2]|0;
  13812. $68 = (_strcmp($67,8969)|0);
  13813. $69 = ($68|0)!=(0);
  13814. if (!($69)) {
  13815. HEAP32[$1>>2] = 1;
  13816. break;
  13817. }
  13818. $70 = HEAP32[$3>>2]|0;
  13819. $71 = (_strcmp($70,8992)|0);
  13820. $72 = ($71|0)!=(0);
  13821. if (!($72)) {
  13822. HEAP32[$1>>2] = 1;
  13823. break;
  13824. }
  13825. $73 = HEAP32[$3>>2]|0;
  13826. $74 = (_strcmp($73,9018)|0);
  13827. $75 = ($74|0)!=(0);
  13828. if (!($75)) {
  13829. HEAP32[$1>>2] = 2;
  13830. break;
  13831. }
  13832. $76 = HEAP32[$3>>2]|0;
  13833. $77 = (_strcmp($76,9031)|0);
  13834. $78 = ($77|0)!=(0);
  13835. if (!($78)) {
  13836. HEAP32[$1>>2] = 3;
  13837. break;
  13838. }
  13839. $79 = HEAP32[$3>>2]|0;
  13840. $80 = (_strcmp($79,9047)|0);
  13841. $81 = ($80|0)!=(0);
  13842. if (!($81)) {
  13843. HEAP32[$1>>2] = 1;
  13844. break;
  13845. }
  13846. $82 = HEAP32[$3>>2]|0;
  13847. $83 = (_strcmp($82,9060)|0);
  13848. $84 = ($83|0)!=(0);
  13849. if (!($84)) {
  13850. HEAP32[$1>>2] = 11;
  13851. break;
  13852. }
  13853. $85 = HEAP32[$3>>2]|0;
  13854. $86 = (_strcmp($85,9074)|0);
  13855. $87 = ($86|0)!=(0);
  13856. if (!($87)) {
  13857. HEAP32[$1>>2] = 2;
  13858. break;
  13859. }
  13860. $88 = HEAP32[$3>>2]|0;
  13861. $89 = (_strcmp($88,9094)|0);
  13862. $90 = ($89|0)!=(0);
  13863. if (!($90)) {
  13864. HEAP32[$1>>2] = 3;
  13865. break;
  13866. }
  13867. $91 = HEAP32[$3>>2]|0;
  13868. $92 = (_strcmp($91,9114)|0);
  13869. $93 = ($92|0)!=(0);
  13870. if (!($93)) {
  13871. HEAP32[$1>>2] = 4;
  13872. break;
  13873. }
  13874. $94 = HEAP32[$3>>2]|0;
  13875. $95 = (_strcmp($94,9131)|0);
  13876. $96 = ($95|0)!=(0);
  13877. if (!($96)) {
  13878. HEAP32[$1>>2] = 5;
  13879. break;
  13880. }
  13881. $97 = HEAP32[$3>>2]|0;
  13882. $98 = (_strcmp($97,9148)|0);
  13883. $99 = ($98|0)!=(0);
  13884. if (!($99)) {
  13885. HEAP32[$1>>2] = 3;
  13886. break;
  13887. }
  13888. $100 = HEAP32[$3>>2]|0;
  13889. $101 = (_strcmp($100,9160)|0);
  13890. $102 = ($101|0)!=(0);
  13891. if (!($102)) {
  13892. HEAP32[$1>>2] = 12;
  13893. break;
  13894. }
  13895. $103 = HEAP32[$3>>2]|0;
  13896. $104 = (_strcmp($103,9173)|0);
  13897. $105 = ($104|0)!=(0);
  13898. if (!($105)) {
  13899. HEAP32[$1>>2] = 13;
  13900. break;
  13901. }
  13902. $106 = HEAP32[$3>>2]|0;
  13903. $107 = (_strcmp($106,9189)|0);
  13904. $108 = ($107|0)!=(0);
  13905. if (!($108)) {
  13906. HEAP32[$1>>2] = 6;
  13907. break;
  13908. }
  13909. $109 = HEAP32[$3>>2]|0;
  13910. $110 = (_strcmp($109,9212)|0);
  13911. $111 = ($110|0)!=(0);
  13912. if (!($111)) {
  13913. HEAP32[$1>>2] = 2;
  13914. break;
  13915. }
  13916. $112 = HEAP32[$3>>2]|0;
  13917. $113 = (_strcmp($112,9225)|0);
  13918. $114 = ($113|0)!=(0);
  13919. if (!($114)) {
  13920. HEAP32[$1>>2] = 3;
  13921. break;
  13922. }
  13923. $115 = HEAP32[$3>>2]|0;
  13924. $116 = (_strcmp($115,9241)|0);
  13925. $117 = ($116|0)!=(0);
  13926. if (!($117)) {
  13927. HEAP32[$1>>2] = 4;
  13928. break;
  13929. }
  13930. $118 = HEAP32[$3>>2]|0;
  13931. $119 = (_strcmp($118,9252)|0);
  13932. $120 = ($119|0)!=(0);
  13933. if (!($120)) {
  13934. HEAP32[$1>>2] = 14;
  13935. break;
  13936. }
  13937. $121 = HEAP32[$3>>2]|0;
  13938. $122 = (_strcmp($121,9271)|0);
  13939. $123 = ($122|0)!=(0);
  13940. if (!($123)) {
  13941. HEAP32[$1>>2] = 15;
  13942. break;
  13943. }
  13944. $124 = HEAP32[$3>>2]|0;
  13945. $125 = (_strcmp($124,9293)|0);
  13946. $126 = ($125|0)!=(0);
  13947. if (!($126)) {
  13948. HEAP32[$1>>2] = 16;
  13949. break;
  13950. }
  13951. $127 = HEAP32[$3>>2]|0;
  13952. $128 = (_strcmp($127,9312)|0);
  13953. $129 = ($128|0)!=(0);
  13954. if (!($129)) {
  13955. HEAP32[$1>>2] = 7;
  13956. break;
  13957. }
  13958. $130 = HEAP32[$3>>2]|0;
  13959. $131 = (_strcmp($130,9341)|0);
  13960. $132 = ($131|0)!=(0);
  13961. if (!($132)) {
  13962. HEAP32[$1>>2] = 5;
  13963. break;
  13964. }
  13965. $133 = HEAP32[$3>>2]|0;
  13966. $134 = (_strcmp($133,9358)|0);
  13967. $135 = ($134|0)!=(0);
  13968. if (!($135)) {
  13969. HEAP32[$1>>2] = 8;
  13970. break;
  13971. }
  13972. $136 = HEAP32[$3>>2]|0;
  13973. $137 = (_strcmp($136,9373)|0);
  13974. $138 = ($137|0)!=(0);
  13975. if (!($138)) {
  13976. HEAP32[$1>>2] = 9;
  13977. break;
  13978. }
  13979. $139 = HEAP32[$3>>2]|0;
  13980. $140 = (_strcmp($139,9388)|0);
  13981. $141 = ($140|0)!=(0);
  13982. if (!($141)) {
  13983. HEAP32[$1>>2] = 1;
  13984. break;
  13985. }
  13986. $142 = HEAP32[$3>>2]|0;
  13987. $143 = (_strcmp($142,9409)|0);
  13988. $144 = ($143|0)!=(0);
  13989. if (!($144)) {
  13990. HEAP32[$1>>2] = 10;
  13991. break;
  13992. }
  13993. $145 = HEAP32[$3>>2]|0;
  13994. $146 = (_strcmp($145,9429)|0);
  13995. $147 = ($146|0)!=(0);
  13996. if (!($147)) {
  13997. HEAP32[$1>>2] = 11;
  13998. break;
  13999. }
  14000. $148 = HEAP32[$3>>2]|0;
  14001. $149 = (_strcmp($148,9449)|0);
  14002. $150 = ($149|0)!=(0);
  14003. if (!($150)) {
  14004. HEAP32[$1>>2] = 12;
  14005. break;
  14006. }
  14007. $151 = HEAP32[$3>>2]|0;
  14008. $152 = (_strcmp($151,9475)|0);
  14009. $153 = ($152|0)!=(0);
  14010. if (!($153)) {
  14011. HEAP32[$1>>2] = 2;
  14012. break;
  14013. }
  14014. $154 = HEAP32[$3>>2]|0;
  14015. $155 = (_strcmp($154,9494)|0);
  14016. $156 = ($155|0)!=(0);
  14017. if (!($156)) {
  14018. HEAP32[$1>>2] = 1;
  14019. break;
  14020. }
  14021. $157 = HEAP32[$3>>2]|0;
  14022. $158 = (_strcmp($157,9506)|0);
  14023. $159 = ($158|0)!=(0);
  14024. if (!($159)) {
  14025. HEAP32[$1>>2] = 3;
  14026. break;
  14027. }
  14028. $160 = HEAP32[$3>>2]|0;
  14029. $161 = (_strcmp($160,9518)|0);
  14030. $162 = ($161|0)!=(0);
  14031. if (!($162)) {
  14032. HEAP32[$1>>2] = 1;
  14033. break;
  14034. }
  14035. $163 = HEAP32[$3>>2]|0;
  14036. $164 = (_strcmp($163,9530)|0);
  14037. $165 = ($164|0)!=(0);
  14038. if (!($165)) {
  14039. HEAP32[$1>>2] = 1;
  14040. break;
  14041. }
  14042. $166 = HEAP32[$3>>2]|0;
  14043. $167 = (_strcmp($166,9542)|0);
  14044. $168 = ($167|0)!=(0);
  14045. if (!($168)) {
  14046. HEAP32[$1>>2] = 17;
  14047. break;
  14048. }
  14049. $169 = HEAP32[$3>>2]|0;
  14050. $170 = (_strcmp($169,9554)|0);
  14051. $171 = ($170|0)!=(0);
  14052. if (!($171)) {
  14053. HEAP32[$1>>2] = 13;
  14054. break;
  14055. }
  14056. $172 = HEAP32[$3>>2]|0;
  14057. $173 = (_strcmp($172,9566)|0);
  14058. $174 = ($173|0)!=(0);
  14059. if (!($174)) {
  14060. HEAP32[$1>>2] = 4;
  14061. break;
  14062. }
  14063. $175 = HEAP32[$3>>2]|0;
  14064. $176 = (_strcmp($175,9578)|0);
  14065. $177 = ($176|0)!=(0);
  14066. if (!($177)) {
  14067. HEAP32[$1>>2] = 2;
  14068. break;
  14069. }
  14070. $178 = HEAP32[$3>>2]|0;
  14071. $179 = (_strcmp($178,9590)|0);
  14072. $180 = ($179|0)!=(0);
  14073. if (!($180)) {
  14074. HEAP32[$1>>2] = 14;
  14075. break;
  14076. }
  14077. $181 = HEAP32[$3>>2]|0;
  14078. $182 = (_strcmp($181,9603)|0);
  14079. $183 = ($182|0)!=(0);
  14080. if (!($183)) {
  14081. HEAP32[$1>>2] = 15;
  14082. break;
  14083. }
  14084. $184 = HEAP32[$3>>2]|0;
  14085. $185 = (_strcmp($184,9616)|0);
  14086. $186 = ($185|0)!=(0);
  14087. if (!($186)) {
  14088. HEAP32[$1>>2] = 16;
  14089. break;
  14090. }
  14091. $187 = HEAP32[$3>>2]|0;
  14092. $188 = (_strcmp($187,9629)|0);
  14093. $189 = ($188|0)!=(0);
  14094. if (!($189)) {
  14095. HEAP32[$1>>2] = 17;
  14096. break;
  14097. }
  14098. $190 = HEAP32[$3>>2]|0;
  14099. $191 = (_strcmp($190,9642)|0);
  14100. $192 = ($191|0)!=(0);
  14101. if (!($192)) {
  14102. HEAP32[$1>>2] = 18;
  14103. break;
  14104. }
  14105. $193 = HEAP32[$3>>2]|0;
  14106. $194 = (_strcmp($193,9655)|0);
  14107. $195 = ($194|0)!=(0);
  14108. if (!($195)) {
  14109. HEAP32[$1>>2] = 19;
  14110. break;
  14111. }
  14112. $196 = HEAP32[$3>>2]|0;
  14113. $197 = (_strcmp($196,9668)|0);
  14114. $198 = ($197|0)!=(0);
  14115. if (!($198)) {
  14116. HEAP32[$1>>2] = 20;
  14117. break;
  14118. }
  14119. $199 = HEAP32[$3>>2]|0;
  14120. $200 = (_strcmp($199,9681)|0);
  14121. $201 = ($200|0)!=(0);
  14122. if (!($201)) {
  14123. HEAP32[$1>>2] = 21;
  14124. break;
  14125. }
  14126. $202 = HEAP32[$3>>2]|0;
  14127. $203 = (_strcmp($202,9694)|0);
  14128. $204 = ($203|0)!=(0);
  14129. if (!($204)) {
  14130. HEAP32[$1>>2] = 5;
  14131. break;
  14132. }
  14133. $205 = HEAP32[$3>>2]|0;
  14134. $206 = (_strcmp($205,9713)|0);
  14135. $207 = ($206|0)!=(0);
  14136. if (!($207)) {
  14137. HEAP32[$1>>2] = 6;
  14138. break;
  14139. }
  14140. $208 = HEAP32[$3>>2]|0;
  14141. $209 = (_strcmp($208,9732)|0);
  14142. $210 = ($209|0)!=(0);
  14143. if (!($210)) {
  14144. HEAP32[$1>>2] = 7;
  14145. break;
  14146. }
  14147. $211 = HEAP32[$3>>2]|0;
  14148. $212 = (_strcmp($211,9751)|0);
  14149. $213 = ($212|0)!=(0);
  14150. if (!($213)) {
  14151. HEAP32[$1>>2] = 18;
  14152. break;
  14153. }
  14154. $214 = HEAP32[$3>>2]|0;
  14155. $215 = (_strcmp($214,9764)|0);
  14156. $216 = ($215|0)!=(0);
  14157. if (!($216)) {
  14158. HEAP32[$1>>2] = 19;
  14159. break;
  14160. }
  14161. $217 = HEAP32[$3>>2]|0;
  14162. $218 = (_strcmp($217,9782)|0);
  14163. $219 = ($218|0)!=(0);
  14164. if (!($219)) {
  14165. HEAP32[$1>>2] = 20;
  14166. break;
  14167. }
  14168. $220 = HEAP32[$3>>2]|0;
  14169. $221 = (_strcmp($220,9800)|0);
  14170. $222 = ($221|0)!=(0);
  14171. if (!($222)) {
  14172. HEAP32[$1>>2] = 21;
  14173. break;
  14174. }
  14175. $223 = HEAP32[$3>>2]|0;
  14176. $224 = (_strcmp($223,9818)|0);
  14177. $225 = ($224|0)!=(0);
  14178. if (!($225)) {
  14179. HEAP32[$1>>2] = 22;
  14180. break;
  14181. }
  14182. $226 = HEAP32[$3>>2]|0;
  14183. $227 = (_strcmp($226,9836)|0);
  14184. $228 = ($227|0)!=(0);
  14185. if (!($228)) {
  14186. HEAP32[$1>>2] = 2;
  14187. break;
  14188. }
  14189. $229 = HEAP32[$3>>2]|0;
  14190. $230 = (_strcmp($229,9856)|0);
  14191. $231 = ($230|0)!=(0);
  14192. if (!($231)) {
  14193. HEAP32[$1>>2] = 3;
  14194. break;
  14195. }
  14196. $232 = HEAP32[$3>>2]|0;
  14197. $233 = (_strcmp($232,8797)|0);
  14198. $234 = ($233|0)!=(0);
  14199. if (!($234)) {
  14200. HEAP32[$1>>2] = 6;
  14201. break;
  14202. }
  14203. $235 = HEAP32[$3>>2]|0;
  14204. $236 = (_strcmp($235,9874)|0);
  14205. $237 = ($236|0)!=(0);
  14206. if (!($237)) {
  14207. HEAP32[$1>>2] = 1;
  14208. break;
  14209. }
  14210. $238 = HEAP32[$3>>2]|0;
  14211. $239 = (_strcmp($238,9889)|0);
  14212. $240 = ($239|0)!=(0);
  14213. if (!($240)) {
  14214. HEAP32[$1>>2] = 8;
  14215. break;
  14216. }
  14217. $241 = HEAP32[$3>>2]|0;
  14218. $242 = (_strcmp($241,9910)|0);
  14219. $243 = ($242|0)!=(0);
  14220. if (!($243)) {
  14221. HEAP32[$1>>2] = 9;
  14222. break;
  14223. }
  14224. $244 = HEAP32[$3>>2]|0;
  14225. $245 = (_strcmp($244,9925)|0);
  14226. $246 = ($245|0)!=(0);
  14227. if (!($246)) {
  14228. HEAP32[$1>>2] = 10;
  14229. break;
  14230. }
  14231. $247 = HEAP32[$3>>2]|0;
  14232. $248 = (_strcmp($247,9943)|0);
  14233. $249 = ($248|0)!=(0);
  14234. if (!($249)) {
  14235. HEAP32[$1>>2] = 2;
  14236. break;
  14237. }
  14238. $250 = HEAP32[$3>>2]|0;
  14239. $251 = (_strcmp($250,9959)|0);
  14240. $252 = ($251|0)!=(0);
  14241. if (!($252)) {
  14242. HEAP32[$1>>2] = 11;
  14243. break;
  14244. }
  14245. $253 = HEAP32[$3>>2]|0;
  14246. $254 = (_strcmp($253,9978)|0);
  14247. $255 = ($254|0)!=(0);
  14248. if (!($255)) {
  14249. HEAP32[$1>>2] = 22;
  14250. break;
  14251. }
  14252. $256 = HEAP32[$3>>2]|0;
  14253. $257 = (_strcmp($256,9992)|0);
  14254. $258 = ($257|0)!=(0);
  14255. if (!($258)) {
  14256. HEAP32[$1>>2] = 23;
  14257. break;
  14258. }
  14259. $259 = HEAP32[$3>>2]|0;
  14260. $260 = (_strcmp($259,10007)|0);
  14261. $261 = ($260|0)!=(0);
  14262. if (!($261)) {
  14263. HEAP32[$1>>2] = 7;
  14264. break;
  14265. }
  14266. $262 = HEAP32[$3>>2]|0;
  14267. $263 = (_strcmp($262,8728)|0);
  14268. $264 = ($263|0)!=(0);
  14269. if (!($264)) {
  14270. HEAP32[$1>>2] = 1;
  14271. break;
  14272. }
  14273. $265 = HEAP32[$3>>2]|0;
  14274. $266 = (_strcmp($265,10018)|0);
  14275. $267 = ($266|0)!=(0);
  14276. if (!($267)) {
  14277. HEAP32[$1>>2] = 3;
  14278. break;
  14279. }
  14280. $268 = HEAP32[$3>>2]|0;
  14281. $269 = (_strcmp($268,8827)|0);
  14282. $270 = ($269|0)!=(0);
  14283. if (!($270)) {
  14284. HEAP32[$1>>2] = 23;
  14285. break;
  14286. }
  14287. $271 = HEAP32[$3>>2]|0;
  14288. $272 = (_strcmp($271,8857)|0);
  14289. $273 = ($272|0)!=(0);
  14290. if (!($273)) {
  14291. HEAP32[$1>>2] = 24;
  14292. break;
  14293. }
  14294. $274 = HEAP32[$3>>2]|0;
  14295. $275 = (_strcmp($274,10034)|0);
  14296. $276 = ($275|0)!=(0);
  14297. if (!($276)) {
  14298. HEAP32[$1>>2] = 12;
  14299. break;
  14300. }
  14301. $277 = HEAP32[$3>>2]|0;
  14302. $278 = (_strcmp($277,10061)|0);
  14303. $279 = ($278|0)!=(0);
  14304. if (!($279)) {
  14305. HEAP32[$1>>2] = 4;
  14306. break;
  14307. }
  14308. $280 = HEAP32[$3>>2]|0;
  14309. $281 = (_strcmp($280,10075)|0);
  14310. $282 = ($281|0)!=(0);
  14311. if (!($282)) {
  14312. HEAP32[$1>>2] = 13;
  14313. break;
  14314. }
  14315. $283 = HEAP32[$3>>2]|0;
  14316. $284 = (_strcmp($283,8763)|0);
  14317. $285 = ($284|0)!=(0);
  14318. if (!($285)) {
  14319. HEAP32[$1>>2] = 5;
  14320. break;
  14321. }
  14322. $286 = HEAP32[$3>>2]|0;
  14323. $287 = (_strcmp($286,10095)|0);
  14324. $288 = ($287|0)!=(0);
  14325. if (!($288)) {
  14326. HEAP32[$1>>2] = 6;
  14327. break;
  14328. }
  14329. $289 = HEAP32[$3>>2]|0;
  14330. $290 = (_strcmp($289,10113)|0);
  14331. $291 = ($290|0)!=(0);
  14332. if (!($291)) {
  14333. HEAP32[$1>>2] = 8;
  14334. break;
  14335. }
  14336. $292 = HEAP32[$3>>2]|0;
  14337. $293 = (_strcmp($292,10125)|0);
  14338. $294 = ($293|0)!=(0);
  14339. if (!($294)) {
  14340. HEAP32[$1>>2] = 24;
  14341. break;
  14342. }
  14343. $295 = HEAP32[$3>>2]|0;
  14344. $296 = (_strcmp($295,10146)|0);
  14345. $297 = ($296|0)!=(0);
  14346. if (!($297)) {
  14347. HEAP32[$1>>2] = 25;
  14348. break;
  14349. }
  14350. $298 = HEAP32[$3>>2]|0;
  14351. $299 = (_strcmp($298,10164)|0);
  14352. $300 = ($299|0)!=(0);
  14353. if (!($300)) {
  14354. HEAP32[$1>>2] = 26;
  14355. break;
  14356. }
  14357. $301 = HEAP32[$3>>2]|0;
  14358. $302 = (_strcmp($301,10182)|0);
  14359. $303 = ($302|0)!=(0);
  14360. if (!($303)) {
  14361. HEAP32[$1>>2] = 27;
  14362. break;
  14363. }
  14364. $304 = HEAP32[$3>>2]|0;
  14365. $305 = (_strcmp($304,10203)|0);
  14366. $306 = ($305|0)!=(0);
  14367. if (!($306)) {
  14368. HEAP32[$1>>2] = 14;
  14369. break;
  14370. }
  14371. $307 = HEAP32[$3>>2]|0;
  14372. $308 = (_strcmp($307,10229)|0);
  14373. $309 = ($308|0)!=(0);
  14374. if (!($309)) {
  14375. HEAP32[$1>>2] = 3;
  14376. break;
  14377. }
  14378. $310 = HEAP32[$3>>2]|0;
  14379. $311 = (_strcmp($310,10252)|0);
  14380. $312 = ($311|0)!=(0);
  14381. if (!($312)) {
  14382. HEAP32[$1>>2] = 15;
  14383. break;
  14384. }
  14385. $313 = HEAP32[$3>>2]|0;
  14386. $314 = (_strcmp($313,10290)|0);
  14387. $315 = ($314|0)!=(0);
  14388. if (!($315)) {
  14389. HEAP32[$1>>2] = 9;
  14390. break;
  14391. }
  14392. $316 = HEAP32[$3>>2]|0;
  14393. $317 = (_strcmp($316,10306)|0);
  14394. $318 = ($317|0)!=(0);
  14395. if (!($318)) {
  14396. HEAP32[$1>>2] = 7;
  14397. break;
  14398. }
  14399. $319 = HEAP32[$3>>2]|0;
  14400. $320 = (_strcmp($319,10321)|0);
  14401. $321 = ($320|0)!=(0);
  14402. if (!($321)) {
  14403. HEAP32[$1>>2] = 25;
  14404. break;
  14405. }
  14406. $322 = HEAP32[$3>>2]|0;
  14407. $323 = (_strcmp($322,10344)|0);
  14408. $324 = ($323|0)!=(0);
  14409. if (!($324)) {
  14410. HEAP32[$1>>2] = 16;
  14411. break;
  14412. }
  14413. $325 = HEAP32[$3>>2]|0;
  14414. $326 = (_strcmp($325,10357)|0);
  14415. $327 = ($326|0)!=(0);
  14416. if (!($327)) {
  14417. HEAP32[$1>>2] = 28;
  14418. break;
  14419. }
  14420. $328 = HEAP32[$3>>2]|0;
  14421. $329 = (_strcmp($328,10371)|0);
  14422. $330 = ($329|0)!=(0);
  14423. if (!($330)) {
  14424. HEAP32[$1>>2] = 29;
  14425. break;
  14426. }
  14427. $331 = HEAP32[$3>>2]|0;
  14428. $332 = (_strcmp($331,10385)|0);
  14429. $333 = ($332|0)!=(0);
  14430. if (!($333)) {
  14431. HEAP32[$1>>2] = 1;
  14432. break;
  14433. }
  14434. $334 = HEAP32[$3>>2]|0;
  14435. $335 = (_strcmp($334,10405)|0);
  14436. $336 = ($335|0)!=(0);
  14437. if (!($336)) {
  14438. HEAP32[$1>>2] = 8;
  14439. break;
  14440. }
  14441. $337 = HEAP32[$3>>2]|0;
  14442. $338 = (_strcmp($337,10425)|0);
  14443. $339 = ($338|0)!=(0);
  14444. if (!($339)) {
  14445. HEAP32[$1>>2] = 17;
  14446. break;
  14447. }
  14448. $340 = HEAP32[$3>>2]|0;
  14449. $341 = (_strcmp($340,10441)|0);
  14450. $342 = ($341|0)!=(0);
  14451. if (!($342)) {
  14452. HEAP32[$1>>2] = 18;
  14453. break;
  14454. }
  14455. $343 = HEAP32[$3>>2]|0;
  14456. $344 = (_strcmp($343,10459)|0);
  14457. $345 = ($344|0)!=(0);
  14458. if (!($345)) {
  14459. HEAP32[$1>>2] = 26;
  14460. break;
  14461. }
  14462. $346 = HEAP32[$3>>2]|0;
  14463. $347 = (_strcmp($346,10475)|0);
  14464. $348 = ($347|0)!=(0);
  14465. if (!($348)) {
  14466. HEAP32[$1>>2] = 19;
  14467. break;
  14468. }
  14469. $349 = HEAP32[$3>>2]|0;
  14470. $350 = (_strcmp($349,10490)|0);
  14471. $351 = ($350|0)!=(0);
  14472. if (!($351)) {
  14473. HEAP32[$1>>2] = 9;
  14474. break;
  14475. }
  14476. $352 = HEAP32[$3>>2]|0;
  14477. $353 = (_strcmp($352,10512)|0);
  14478. $354 = ($353|0)!=(0);
  14479. if (!($354)) {
  14480. HEAP32[$1>>2] = 30;
  14481. break;
  14482. }
  14483. $355 = HEAP32[$3>>2]|0;
  14484. $356 = (_strcmp($355,10530)|0);
  14485. $357 = ($356|0)!=(0);
  14486. if (!($357)) {
  14487. HEAP32[$1>>2] = 31;
  14488. break;
  14489. }
  14490. $358 = HEAP32[$3>>2]|0;
  14491. $359 = (_strcmp($358,10551)|0);
  14492. $360 = ($359|0)!=(0);
  14493. if (!($360)) {
  14494. HEAP32[$1>>2] = 10;
  14495. break;
  14496. }
  14497. $361 = HEAP32[$3>>2]|0;
  14498. $362 = (_strcmp($361,10569)|0);
  14499. $363 = ($362|0)!=(0);
  14500. if (!($363)) {
  14501. HEAP32[$1>>2] = 11;
  14502. break;
  14503. }
  14504. $364 = HEAP32[$3>>2]|0;
  14505. $365 = (_strcmp($364,10582)|0);
  14506. $366 = ($365|0)!=(0);
  14507. if (!($366)) {
  14508. HEAP32[$1>>2] = 2;
  14509. break;
  14510. }
  14511. $367 = HEAP32[$3>>2]|0;
  14512. $368 = (_strcmp($367,10597)|0);
  14513. $369 = ($368|0)!=(0);
  14514. if (!($369)) {
  14515. HEAP32[$1>>2] = 12;
  14516. break;
  14517. }
  14518. $370 = HEAP32[$3>>2]|0;
  14519. $371 = (_strcmp($370,10611)|0);
  14520. $372 = ($371|0)!=(0);
  14521. if (!($372)) {
  14522. HEAP32[$1>>2] = 1;
  14523. break;
  14524. }
  14525. $373 = HEAP32[$3>>2]|0;
  14526. $374 = (_strcmp($373,10621)|0);
  14527. $375 = ($374|0)!=(0);
  14528. if (!($375)) {
  14529. HEAP32[$1>>2] = 1;
  14530. break;
  14531. }
  14532. $376 = HEAP32[$3>>2]|0;
  14533. $377 = (_strcmp($376,10631)|0);
  14534. $378 = ($377|0)!=(0);
  14535. if (!($378)) {
  14536. HEAP32[$1>>2] = 2;
  14537. break;
  14538. }
  14539. $379 = HEAP32[$3>>2]|0;
  14540. $380 = (_strcmp($379,10653)|0);
  14541. $381 = ($380|0)!=(0);
  14542. if (!($381)) {
  14543. HEAP32[$1>>2] = 13;
  14544. break;
  14545. }
  14546. $382 = HEAP32[$3>>2]|0;
  14547. $383 = (_strcmp($382,10679)|0);
  14548. $384 = ($383|0)!=(0);
  14549. if (!($384)) {
  14550. HEAP32[$1>>2] = 14;
  14551. break;
  14552. }
  14553. $385 = HEAP32[$3>>2]|0;
  14554. $386 = (_strcmp($385,10706)|0);
  14555. $387 = ($386|0)!=(0);
  14556. if (!($387)) {
  14557. HEAP32[$1>>2] = 27;
  14558. break;
  14559. }
  14560. $388 = HEAP32[$3>>2]|0;
  14561. $389 = (_strcmp($388,10719)|0);
  14562. $390 = ($389|0)!=(0);
  14563. if (!($390)) {
  14564. HEAP32[$1>>2] = 20;
  14565. break;
  14566. }
  14567. $391 = HEAP32[$3>>2]|0;
  14568. $392 = (_strcmp($391,10734)|0);
  14569. $393 = ($392|0)!=(0);
  14570. if (!($393)) {
  14571. HEAP32[$1>>2] = 4;
  14572. break;
  14573. }
  14574. $394 = HEAP32[$3>>2]|0;
  14575. $395 = (_strcmp($394,10749)|0);
  14576. $396 = ($395|0)!=(0);
  14577. if (!($396)) {
  14578. HEAP32[$1>>2] = 3;
  14579. break;
  14580. }
  14581. $397 = HEAP32[$3>>2]|0;
  14582. $398 = (_strcmp($397,10773)|0);
  14583. $399 = ($398|0)!=(0);
  14584. if (!($399)) {
  14585. HEAP32[$1>>2] = 2;
  14586. break;
  14587. }
  14588. $400 = HEAP32[$3>>2]|0;
  14589. $401 = (_strcmp($400,10784)|0);
  14590. $402 = ($401|0)!=(0);
  14591. if (!($402)) {
  14592. HEAP32[$1>>2] = 32;
  14593. break;
  14594. }
  14595. $403 = HEAP32[$3>>2]|0;
  14596. $404 = (_strcmp($403,10806)|0);
  14597. $405 = ($404|0)!=(0);
  14598. if (!($405)) {
  14599. HEAP32[$1>>2] = 21;
  14600. break;
  14601. }
  14602. $406 = HEAP32[$3>>2]|0;
  14603. $407 = (_strcmp($406,10828)|0);
  14604. $408 = ($407|0)!=(0);
  14605. if (!($408)) {
  14606. HEAP32[$1>>2] = 5;
  14607. break;
  14608. }
  14609. $409 = HEAP32[$3>>2]|0;
  14610. $410 = (_strcmp($409,10852)|0);
  14611. $411 = ($410|0)!=(0);
  14612. if (!($411)) {
  14613. HEAP32[$1>>2] = 4;
  14614. break;
  14615. }
  14616. $412 = HEAP32[$3>>2]|0;
  14617. $413 = (_strcmp($412,10861)|0);
  14618. $414 = ($413|0)!=(0);
  14619. if (!($414)) {
  14620. HEAP32[$1>>2] = 5;
  14621. break;
  14622. }
  14623. $415 = HEAP32[$3>>2]|0;
  14624. $416 = (_strcmp($415,10869)|0);
  14625. $417 = ($416|0)!=(0);
  14626. if (!($417)) {
  14627. HEAP32[$1>>2] = 1;
  14628. break;
  14629. }
  14630. $418 = HEAP32[$3>>2]|0;
  14631. $419 = (_strcmp($418,10882)|0);
  14632. $420 = ($419|0)!=(0);
  14633. if (!($420)) {
  14634. HEAP32[$1>>2] = 2;
  14635. break;
  14636. }
  14637. $421 = HEAP32[$3>>2]|0;
  14638. $422 = (_strcmp($421,10896)|0);
  14639. $423 = ($422|0)!=(0);
  14640. if (!($423)) {
  14641. HEAP32[$1>>2] = 15;
  14642. break;
  14643. }
  14644. $424 = HEAP32[$3>>2]|0;
  14645. $425 = (_strcmp($424,10908)|0);
  14646. $426 = ($425|0)!=(0);
  14647. if (!($426)) {
  14648. HEAP32[$1>>2] = 16;
  14649. break;
  14650. }
  14651. $427 = HEAP32[$3>>2]|0;
  14652. $428 = (_strcmp($427,10917)|0);
  14653. $429 = ($428|0)!=(0);
  14654. if (!($429)) {
  14655. HEAP32[$1>>2] = 17;
  14656. break;
  14657. }
  14658. $430 = HEAP32[$3>>2]|0;
  14659. $431 = (_strcmp($430,10927)|0);
  14660. $432 = ($431|0)!=(0);
  14661. if (!($432)) {
  14662. HEAP32[$1>>2] = 18;
  14663. break;
  14664. }
  14665. $433 = HEAP32[$3>>2]|0;
  14666. $434 = (_strcmp($433,10939)|0);
  14667. $435 = ($434|0)!=(0);
  14668. if (!($435)) {
  14669. HEAP32[$1>>2] = 19;
  14670. break;
  14671. }
  14672. $436 = HEAP32[$3>>2]|0;
  14673. $437 = (_strcmp($436,10950)|0);
  14674. $438 = ($437|0)!=(0);
  14675. if (!($438)) {
  14676. HEAP32[$1>>2] = 20;
  14677. break;
  14678. }
  14679. $439 = HEAP32[$3>>2]|0;
  14680. $440 = (_strcmp($439,10958)|0);
  14681. $441 = ($440|0)!=(0);
  14682. if (!($441)) {
  14683. HEAP32[$1>>2] = 3;
  14684. break;
  14685. }
  14686. $442 = HEAP32[$3>>2]|0;
  14687. $443 = (_strcmp($442,10970)|0);
  14688. $444 = ($443|0)!=(0);
  14689. if (!($444)) {
  14690. HEAP32[$1>>2] = 21;
  14691. break;
  14692. }
  14693. $445 = HEAP32[$3>>2]|0;
  14694. $446 = (_strcmp($445,10985)|0);
  14695. $447 = ($446|0)!=(0);
  14696. if (!($447)) {
  14697. HEAP32[$1>>2] = 22;
  14698. break;
  14699. }
  14700. $448 = HEAP32[$3>>2]|0;
  14701. $449 = (_strcmp($448,10997)|0);
  14702. $450 = ($449|0)!=(0);
  14703. if (!($450)) {
  14704. HEAP32[$1>>2] = 23;
  14705. break;
  14706. }
  14707. $451 = HEAP32[$3>>2]|0;
  14708. $452 = (_strcmp($451,11011)|0);
  14709. $453 = ($452|0)!=(0);
  14710. if (!($453)) {
  14711. HEAP32[$1>>2] = 10;
  14712. break;
  14713. }
  14714. $454 = HEAP32[$3>>2]|0;
  14715. $455 = (_strcmp($454,11036)|0);
  14716. $456 = ($455|0)!=(0);
  14717. if (!($456)) {
  14718. HEAP32[$1>>2] = 24;
  14719. break;
  14720. }
  14721. $457 = HEAP32[$3>>2]|0;
  14722. $458 = (_strcmp($457,11053)|0);
  14723. $459 = ($458|0)!=(0);
  14724. if (!($459)) {
  14725. HEAP32[$1>>2] = 25;
  14726. break;
  14727. }
  14728. $460 = HEAP32[$3>>2]|0;
  14729. $461 = (_strcmp($460,11069)|0);
  14730. $462 = ($461|0)!=(0);
  14731. if (!($462)) {
  14732. HEAP32[$1>>2] = 26;
  14733. break;
  14734. }
  14735. $463 = HEAP32[$3>>2]|0;
  14736. $464 = (_strcmp($463,11085)|0);
  14737. $465 = ($464|0)!=(0);
  14738. if (!($465)) {
  14739. HEAP32[$1>>2] = 11;
  14740. break;
  14741. }
  14742. $466 = HEAP32[$3>>2]|0;
  14743. $467 = (_strcmp($466,11097)|0);
  14744. $468 = ($467|0)!=(0);
  14745. if (!($468)) {
  14746. HEAP32[$1>>2] = 33;
  14747. break;
  14748. }
  14749. $469 = HEAP32[$3>>2]|0;
  14750. $470 = (_strcmp($469,11109)|0);
  14751. $471 = ($470|0)!=(0);
  14752. if (!($471)) {
  14753. HEAP32[$1>>2] = 34;
  14754. break;
  14755. }
  14756. $472 = HEAP32[$3>>2]|0;
  14757. $473 = (_strcmp($472,11133)|0);
  14758. $474 = ($473|0)!=(0);
  14759. if (!($474)) {
  14760. HEAP32[$1>>2] = 1;
  14761. break;
  14762. }
  14763. $475 = HEAP32[$3>>2]|0;
  14764. $476 = (_strcmp($475,11146)|0);
  14765. $477 = ($476|0)!=(0);
  14766. if (!($477)) {
  14767. HEAP32[$1>>2] = 2;
  14768. break;
  14769. }
  14770. $478 = HEAP32[$3>>2]|0;
  14771. $479 = (_strcmp($478,11160)|0);
  14772. $480 = ($479|0)!=(0);
  14773. if (!($480)) {
  14774. HEAP32[$1>>2] = 35;
  14775. break;
  14776. }
  14777. $481 = HEAP32[$3>>2]|0;
  14778. $482 = (_strcmp($481,11182)|0);
  14779. $483 = ($482|0)!=(0);
  14780. if (!($483)) {
  14781. HEAP32[$1>>2] = 36;
  14782. break;
  14783. }
  14784. $484 = HEAP32[$3>>2]|0;
  14785. $485 = (_strcmp($484,11189)|0);
  14786. $486 = ($485|0)!=(0);
  14787. if (!($486)) {
  14788. HEAP32[$1>>2] = 3;
  14789. break;
  14790. }
  14791. $487 = HEAP32[$3>>2]|0;
  14792. $488 = (_strcmp($487,11205)|0);
  14793. $489 = ($488|0)!=(0);
  14794. if (!($489)) {
  14795. HEAP32[$1>>2] = 2;
  14796. break;
  14797. }
  14798. $490 = HEAP32[$3>>2]|0;
  14799. $491 = (_strcmp($490,11222)|0);
  14800. $492 = ($491|0)!=(0);
  14801. if (!($492)) {
  14802. HEAP32[$1>>2] = 1;
  14803. break;
  14804. }
  14805. $493 = HEAP32[$3>>2]|0;
  14806. $494 = (_strcmp($493,11239)|0);
  14807. $495 = ($494|0)!=(0);
  14808. if (!($495)) {
  14809. HEAP32[$1>>2] = 28;
  14810. break;
  14811. }
  14812. $496 = HEAP32[$3>>2]|0;
  14813. $497 = (_strcmp($496,11255)|0);
  14814. $498 = ($497|0)!=(0);
  14815. if (!($498)) {
  14816. HEAP32[$1>>2] = 1;
  14817. break;
  14818. }
  14819. $499 = HEAP32[$3>>2]|0;
  14820. $500 = (_strcmp($499,11271)|0);
  14821. $501 = ($500|0)!=(0);
  14822. if (!($501)) {
  14823. HEAP32[$1>>2] = 4;
  14824. break;
  14825. }
  14826. $502 = HEAP32[$3>>2]|0;
  14827. $503 = (_strcmp($502,11288)|0);
  14828. $504 = ($503|0)!=(0);
  14829. if (!($504)) {
  14830. HEAP32[$1>>2] = 29;
  14831. break;
  14832. }
  14833. $505 = HEAP32[$3>>2]|0;
  14834. $506 = (_strcmp($505,11302)|0);
  14835. $507 = ($506|0)!=(0);
  14836. if (!($507)) {
  14837. HEAP32[$1>>2] = 30;
  14838. break;
  14839. }
  14840. $508 = HEAP32[$3>>2]|0;
  14841. $509 = (_strcmp($508,11314)|0);
  14842. $510 = ($509|0)!=(0);
  14843. if (!($510)) {
  14844. HEAP32[$1>>2] = 22;
  14845. break;
  14846. }
  14847. $511 = HEAP32[$3>>2]|0;
  14848. $512 = (_strcmp($511,11325)|0);
  14849. $513 = ($512|0)!=(0);
  14850. if (!($513)) {
  14851. HEAP32[$1>>2] = 2;
  14852. break;
  14853. }
  14854. $514 = HEAP32[$3>>2]|0;
  14855. $515 = (_strcmp($514,11338)|0);
  14856. $516 = ($515|0)!=(0);
  14857. if (!($516)) {
  14858. HEAP32[$1>>2] = 23;
  14859. break;
  14860. }
  14861. $517 = HEAP32[$3>>2]|0;
  14862. $518 = (_strcmp($517,11348)|0);
  14863. $519 = ($518|0)!=(0);
  14864. if (!($519)) {
  14865. HEAP32[$1>>2] = 2;
  14866. break;
  14867. }
  14868. $520 = HEAP32[$3>>2]|0;
  14869. $521 = (_strcmp($520,11365)|0);
  14870. $522 = ($521|0)!=(0);
  14871. if (!($522)) {
  14872. HEAP32[$1>>2] = 24;
  14873. break;
  14874. }
  14875. $523 = HEAP32[$3>>2]|0;
  14876. $524 = (_strcmp($523,11377)|0);
  14877. $525 = ($524|0)!=(0);
  14878. if (!($525)) {
  14879. HEAP32[$1>>2] = 25;
  14880. break;
  14881. }
  14882. $526 = HEAP32[$3>>2]|0;
  14883. $527 = (_strcmp($526,11399)|0);
  14884. $528 = ($527|0)!=(0);
  14885. if (!($528)) {
  14886. HEAP32[$1>>2] = 26;
  14887. break;
  14888. }
  14889. $529 = HEAP32[$3>>2]|0;
  14890. $530 = (_strcmp($529,11419)|0);
  14891. $531 = ($530|0)!=(0);
  14892. if (!($531)) {
  14893. HEAP32[$1>>2] = 3;
  14894. break;
  14895. }
  14896. $532 = HEAP32[$3>>2]|0;
  14897. $533 = (_strcmp($532,11432)|0);
  14898. $534 = ($533|0)!=(0);
  14899. if (!($534)) {
  14900. HEAP32[$1>>2] = 27;
  14901. break;
  14902. }
  14903. $535 = HEAP32[$3>>2]|0;
  14904. $536 = (_strcmp($535,11454)|0);
  14905. $537 = ($536|0)!=(0);
  14906. if (!($537)) {
  14907. HEAP32[$1>>2] = 28;
  14908. break;
  14909. }
  14910. $538 = HEAP32[$3>>2]|0;
  14911. $539 = (_strcmp($538,11474)|0);
  14912. $540 = ($539|0)!=(0);
  14913. if (!($540)) {
  14914. HEAP32[$1>>2] = 2;
  14915. break;
  14916. }
  14917. $541 = HEAP32[$3>>2]|0;
  14918. $542 = (_strcmp($541,11491)|0);
  14919. $543 = ($542|0)!=(0);
  14920. if (!($543)) {
  14921. HEAP32[$1>>2] = 2;
  14922. break;
  14923. }
  14924. $544 = HEAP32[$3>>2]|0;
  14925. $545 = (_strcmp($544,11508)|0);
  14926. $546 = ($545|0)!=(0);
  14927. if (!($546)) {
  14928. HEAP32[$1>>2] = 3;
  14929. break;
  14930. }
  14931. $547 = HEAP32[$3>>2]|0;
  14932. $548 = (_strcmp($547,11528)|0);
  14933. $549 = ($548|0)!=(0);
  14934. if ($549) {
  14935. $550 = HEAP32[$2>>2]|0;
  14936. $551 = HEAP32[$3>>2]|0;
  14937. $552 = _emscripten_asm_const_iii(0, ($550|0), ($551|0))|0;
  14938. HEAP32[$1>>2] = 0;
  14939. break;
  14940. } else {
  14941. HEAP32[$1>>2] = 37;
  14942. break;
  14943. }
  14944. } else {
  14945. HEAP32[$1>>2] = 5;
  14946. }
  14947. } while(0);
  14948. $553 = HEAP32[$1>>2]|0;
  14949. STACKTOP = sp;return ($553|0);
  14950. }
  14951. function _emscripten_get_global_libc() {
  14952. var label = 0, sp = 0;
  14953. sp = STACKTOP;
  14954. return (16652|0);
  14955. }
  14956. function ___stdio_close($0) {
  14957. $0 = $0|0;
  14958. var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $vararg_buffer = 0, label = 0, sp = 0;
  14959. sp = STACKTOP;
  14960. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  14961. $vararg_buffer = sp;
  14962. $1 = ((($0)) + 60|0);
  14963. $2 = HEAP32[$1>>2]|0;
  14964. $3 = (_dummy_738($2)|0);
  14965. HEAP32[$vararg_buffer>>2] = $3;
  14966. $4 = (___syscall6(6,($vararg_buffer|0))|0);
  14967. $5 = (___syscall_ret($4)|0);
  14968. STACKTOP = sp;return ($5|0);
  14969. }
  14970. function ___stdio_write($0,$1,$2) {
  14971. $0 = $0|0;
  14972. $1 = $1|0;
  14973. $2 = $2|0;
  14974. var $$0 = 0, $$04756 = 0, $$04855 = 0, $$04954 = 0, $$051 = 0, $$1 = 0, $$150 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0;
  14975. var $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, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0;
  14976. var $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer3 = 0, $vararg_ptr1 = 0, $vararg_ptr2 = 0, $vararg_ptr6 = 0;
  14977. var $vararg_ptr7 = 0, label = 0, sp = 0;
  14978. sp = STACKTOP;
  14979. STACKTOP = STACKTOP + 48|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(48|0);
  14980. $vararg_buffer3 = sp + 16|0;
  14981. $vararg_buffer = sp;
  14982. $3 = sp + 32|0;
  14983. $4 = ((($0)) + 28|0);
  14984. $5 = HEAP32[$4>>2]|0;
  14985. HEAP32[$3>>2] = $5;
  14986. $6 = ((($3)) + 4|0);
  14987. $7 = ((($0)) + 20|0);
  14988. $8 = HEAP32[$7>>2]|0;
  14989. $9 = (($8) - ($5))|0;
  14990. HEAP32[$6>>2] = $9;
  14991. $10 = ((($3)) + 8|0);
  14992. HEAP32[$10>>2] = $1;
  14993. $11 = ((($3)) + 12|0);
  14994. HEAP32[$11>>2] = $2;
  14995. $12 = (($9) + ($2))|0;
  14996. $13 = ((($0)) + 60|0);
  14997. $14 = HEAP32[$13>>2]|0;
  14998. $15 = $3;
  14999. HEAP32[$vararg_buffer>>2] = $14;
  15000. $vararg_ptr1 = ((($vararg_buffer)) + 4|0);
  15001. HEAP32[$vararg_ptr1>>2] = $15;
  15002. $vararg_ptr2 = ((($vararg_buffer)) + 8|0);
  15003. HEAP32[$vararg_ptr2>>2] = 2;
  15004. $16 = (___syscall146(146,($vararg_buffer|0))|0);
  15005. $17 = (___syscall_ret($16)|0);
  15006. $18 = ($12|0)==($17|0);
  15007. L1: do {
  15008. if ($18) {
  15009. label = 3;
  15010. } else {
  15011. $$04756 = 2;$$04855 = $12;$$04954 = $3;$26 = $17;
  15012. while(1) {
  15013. $25 = ($26|0)<(0);
  15014. if ($25) {
  15015. break;
  15016. }
  15017. $34 = (($$04855) - ($26))|0;
  15018. $35 = ((($$04954)) + 4|0);
  15019. $36 = HEAP32[$35>>2]|0;
  15020. $37 = ($26>>>0)>($36>>>0);
  15021. $38 = ((($$04954)) + 8|0);
  15022. $$150 = $37 ? $38 : $$04954;
  15023. $39 = $37 << 31 >> 31;
  15024. $$1 = (($39) + ($$04756))|0;
  15025. $40 = $37 ? $36 : 0;
  15026. $$0 = (($26) - ($40))|0;
  15027. $41 = HEAP32[$$150>>2]|0;
  15028. $42 = (($41) + ($$0)|0);
  15029. HEAP32[$$150>>2] = $42;
  15030. $43 = ((($$150)) + 4|0);
  15031. $44 = HEAP32[$43>>2]|0;
  15032. $45 = (($44) - ($$0))|0;
  15033. HEAP32[$43>>2] = $45;
  15034. $46 = HEAP32[$13>>2]|0;
  15035. $47 = $$150;
  15036. HEAP32[$vararg_buffer3>>2] = $46;
  15037. $vararg_ptr6 = ((($vararg_buffer3)) + 4|0);
  15038. HEAP32[$vararg_ptr6>>2] = $47;
  15039. $vararg_ptr7 = ((($vararg_buffer3)) + 8|0);
  15040. HEAP32[$vararg_ptr7>>2] = $$1;
  15041. $48 = (___syscall146(146,($vararg_buffer3|0))|0);
  15042. $49 = (___syscall_ret($48)|0);
  15043. $50 = ($34|0)==($49|0);
  15044. if ($50) {
  15045. label = 3;
  15046. break L1;
  15047. } else {
  15048. $$04756 = $$1;$$04855 = $34;$$04954 = $$150;$26 = $49;
  15049. }
  15050. }
  15051. $27 = ((($0)) + 16|0);
  15052. HEAP32[$27>>2] = 0;
  15053. HEAP32[$4>>2] = 0;
  15054. HEAP32[$7>>2] = 0;
  15055. $28 = HEAP32[$0>>2]|0;
  15056. $29 = $28 | 32;
  15057. HEAP32[$0>>2] = $29;
  15058. $30 = ($$04756|0)==(2);
  15059. if ($30) {
  15060. $$051 = 0;
  15061. } else {
  15062. $31 = ((($$04954)) + 4|0);
  15063. $32 = HEAP32[$31>>2]|0;
  15064. $33 = (($2) - ($32))|0;
  15065. $$051 = $33;
  15066. }
  15067. }
  15068. } while(0);
  15069. if ((label|0) == 3) {
  15070. $19 = ((($0)) + 44|0);
  15071. $20 = HEAP32[$19>>2]|0;
  15072. $21 = ((($0)) + 48|0);
  15073. $22 = HEAP32[$21>>2]|0;
  15074. $23 = (($20) + ($22)|0);
  15075. $24 = ((($0)) + 16|0);
  15076. HEAP32[$24>>2] = $23;
  15077. HEAP32[$4>>2] = $20;
  15078. HEAP32[$7>>2] = $20;
  15079. $$051 = $2;
  15080. }
  15081. STACKTOP = sp;return ($$051|0);
  15082. }
  15083. function ___stdio_seek($0,$1,$2) {
  15084. $0 = $0|0;
  15085. $1 = $1|0;
  15086. $2 = $2|0;
  15087. var $$pre = 0, $10 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $vararg_buffer = 0, $vararg_ptr1 = 0, $vararg_ptr2 = 0, $vararg_ptr3 = 0, $vararg_ptr4 = 0, label = 0, sp = 0;
  15088. sp = STACKTOP;
  15089. STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
  15090. $vararg_buffer = sp;
  15091. $3 = sp + 20|0;
  15092. $4 = ((($0)) + 60|0);
  15093. $5 = HEAP32[$4>>2]|0;
  15094. $6 = $3;
  15095. HEAP32[$vararg_buffer>>2] = $5;
  15096. $vararg_ptr1 = ((($vararg_buffer)) + 4|0);
  15097. HEAP32[$vararg_ptr1>>2] = 0;
  15098. $vararg_ptr2 = ((($vararg_buffer)) + 8|0);
  15099. HEAP32[$vararg_ptr2>>2] = $1;
  15100. $vararg_ptr3 = ((($vararg_buffer)) + 12|0);
  15101. HEAP32[$vararg_ptr3>>2] = $6;
  15102. $vararg_ptr4 = ((($vararg_buffer)) + 16|0);
  15103. HEAP32[$vararg_ptr4>>2] = $2;
  15104. $7 = (___syscall140(140,($vararg_buffer|0))|0);
  15105. $8 = (___syscall_ret($7)|0);
  15106. $9 = ($8|0)<(0);
  15107. if ($9) {
  15108. HEAP32[$3>>2] = -1;
  15109. $10 = -1;
  15110. } else {
  15111. $$pre = HEAP32[$3>>2]|0;
  15112. $10 = $$pre;
  15113. }
  15114. STACKTOP = sp;return ($10|0);
  15115. }
  15116. function ___syscall_ret($0) {
  15117. $0 = $0|0;
  15118. var $$0 = 0, $1 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
  15119. sp = STACKTOP;
  15120. $1 = ($0>>>0)>(4294963200);
  15121. if ($1) {
  15122. $2 = (0 - ($0))|0;
  15123. $3 = (___errno_location()|0);
  15124. HEAP32[$3>>2] = $2;
  15125. $$0 = -1;
  15126. } else {
  15127. $$0 = $0;
  15128. }
  15129. return ($$0|0);
  15130. }
  15131. function ___errno_location() {
  15132. var $0 = 0, $1 = 0, label = 0, sp = 0;
  15133. sp = STACKTOP;
  15134. $0 = (___pthread_self_108()|0);
  15135. $1 = ((($0)) + 64|0);
  15136. return ($1|0);
  15137. }
  15138. function ___pthread_self_108() {
  15139. var $0 = 0, label = 0, sp = 0;
  15140. sp = STACKTOP;
  15141. $0 = (_pthread_self()|0);
  15142. return ($0|0);
  15143. }
  15144. function _pthread_self() {
  15145. var label = 0, sp = 0;
  15146. sp = STACKTOP;
  15147. return (2980|0);
  15148. }
  15149. function _dummy_738($0) {
  15150. $0 = $0|0;
  15151. var label = 0, sp = 0;
  15152. sp = STACKTOP;
  15153. return ($0|0);
  15154. }
  15155. function ___stdout_write($0,$1,$2) {
  15156. $0 = $0|0;
  15157. $1 = $1|0;
  15158. $2 = $2|0;
  15159. var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $vararg_buffer = 0, $vararg_ptr1 = 0, $vararg_ptr2 = 0, label = 0, sp = 0;
  15160. sp = STACKTOP;
  15161. STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
  15162. $vararg_buffer = sp;
  15163. $3 = sp + 16|0;
  15164. $4 = ((($0)) + 36|0);
  15165. HEAP32[$4>>2] = 8;
  15166. $5 = HEAP32[$0>>2]|0;
  15167. $6 = $5 & 64;
  15168. $7 = ($6|0)==(0);
  15169. if ($7) {
  15170. $8 = ((($0)) + 60|0);
  15171. $9 = HEAP32[$8>>2]|0;
  15172. $10 = $3;
  15173. HEAP32[$vararg_buffer>>2] = $9;
  15174. $vararg_ptr1 = ((($vararg_buffer)) + 4|0);
  15175. HEAP32[$vararg_ptr1>>2] = 21523;
  15176. $vararg_ptr2 = ((($vararg_buffer)) + 8|0);
  15177. HEAP32[$vararg_ptr2>>2] = $10;
  15178. $11 = (___syscall54(54,($vararg_buffer|0))|0);
  15179. $12 = ($11|0)==(0);
  15180. if (!($12)) {
  15181. $13 = ((($0)) + 75|0);
  15182. HEAP8[$13>>0] = -1;
  15183. }
  15184. }
  15185. $14 = (___stdio_write($0,$1,$2)|0);
  15186. STACKTOP = sp;return ($14|0);
  15187. }
  15188. function _strcmp($0,$1) {
  15189. $0 = $0|0;
  15190. $1 = $1|0;
  15191. var $$011 = 0, $$0710 = 0, $$lcssa = 0, $$lcssa8 = 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, $or$cond = 0, $or$cond9 = 0, label = 0;
  15192. var sp = 0;
  15193. sp = STACKTOP;
  15194. $2 = HEAP8[$0>>0]|0;
  15195. $3 = HEAP8[$1>>0]|0;
  15196. $4 = ($2<<24>>24)!=($3<<24>>24);
  15197. $5 = ($2<<24>>24)==(0);
  15198. $or$cond9 = $5 | $4;
  15199. if ($or$cond9) {
  15200. $$lcssa = $3;$$lcssa8 = $2;
  15201. } else {
  15202. $$011 = $1;$$0710 = $0;
  15203. while(1) {
  15204. $6 = ((($$0710)) + 1|0);
  15205. $7 = ((($$011)) + 1|0);
  15206. $8 = HEAP8[$6>>0]|0;
  15207. $9 = HEAP8[$7>>0]|0;
  15208. $10 = ($8<<24>>24)!=($9<<24>>24);
  15209. $11 = ($8<<24>>24)==(0);
  15210. $or$cond = $11 | $10;
  15211. if ($or$cond) {
  15212. $$lcssa = $9;$$lcssa8 = $8;
  15213. break;
  15214. } else {
  15215. $$011 = $7;$$0710 = $6;
  15216. }
  15217. }
  15218. }
  15219. $12 = $$lcssa8&255;
  15220. $13 = $$lcssa&255;
  15221. $14 = (($12) - ($13))|0;
  15222. return ($14|0);
  15223. }
  15224. function _memcmp($0,$1,$2) {
  15225. $0 = $0|0;
  15226. $1 = $1|0;
  15227. $2 = $2|0;
  15228. var $$01318 = 0, $$01417 = 0, $$019 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  15229. sp = STACKTOP;
  15230. $3 = ($2|0)==(0);
  15231. L1: do {
  15232. if ($3) {
  15233. $14 = 0;
  15234. } else {
  15235. $$01318 = $0;$$01417 = $2;$$019 = $1;
  15236. while(1) {
  15237. $4 = HEAP8[$$01318>>0]|0;
  15238. $5 = HEAP8[$$019>>0]|0;
  15239. $6 = ($4<<24>>24)==($5<<24>>24);
  15240. if (!($6)) {
  15241. break;
  15242. }
  15243. $7 = (($$01417) + -1)|0;
  15244. $8 = ((($$01318)) + 1|0);
  15245. $9 = ((($$019)) + 1|0);
  15246. $10 = ($7|0)==(0);
  15247. if ($10) {
  15248. $14 = 0;
  15249. break L1;
  15250. } else {
  15251. $$01318 = $8;$$01417 = $7;$$019 = $9;
  15252. }
  15253. }
  15254. $11 = $4&255;
  15255. $12 = $5&255;
  15256. $13 = (($11) - ($12))|0;
  15257. $14 = $13;
  15258. }
  15259. } while(0);
  15260. return ($14|0);
  15261. }
  15262. function _vfprintf($0,$1,$2) {
  15263. $0 = $0|0;
  15264. $1 = $1|0;
  15265. $2 = $2|0;
  15266. var $$ = 0, $$0 = 0, $$1 = 0, $$1$ = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0;
  15267. var $26 = 0, $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, $5 = 0, $6 = 0, $7 = 0;
  15268. var $8 = 0, $9 = 0, $vacopy_currentptr = 0, dest = 0, label = 0, sp = 0, stop = 0;
  15269. sp = STACKTOP;
  15270. STACKTOP = STACKTOP + 224|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(224|0);
  15271. $3 = sp + 120|0;
  15272. $4 = sp + 80|0;
  15273. $5 = sp;
  15274. $6 = sp + 136|0;
  15275. dest=$4; stop=dest+40|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0));
  15276. $vacopy_currentptr = HEAP32[$2>>2]|0;
  15277. HEAP32[$3>>2] = $vacopy_currentptr;
  15278. $7 = (_printf_core(0,$1,$3,$5,$4)|0);
  15279. $8 = ($7|0)<(0);
  15280. if ($8) {
  15281. $$0 = -1;
  15282. } else {
  15283. $9 = ((($0)) + 76|0);
  15284. $10 = HEAP32[$9>>2]|0;
  15285. $11 = ($10|0)>(-1);
  15286. if ($11) {
  15287. $12 = (___lockfile($0)|0);
  15288. $40 = $12;
  15289. } else {
  15290. $40 = 0;
  15291. }
  15292. $13 = HEAP32[$0>>2]|0;
  15293. $14 = $13 & 32;
  15294. $15 = ((($0)) + 74|0);
  15295. $16 = HEAP8[$15>>0]|0;
  15296. $17 = ($16<<24>>24)<(1);
  15297. if ($17) {
  15298. $18 = $13 & -33;
  15299. HEAP32[$0>>2] = $18;
  15300. }
  15301. $19 = ((($0)) + 48|0);
  15302. $20 = HEAP32[$19>>2]|0;
  15303. $21 = ($20|0)==(0);
  15304. if ($21) {
  15305. $23 = ((($0)) + 44|0);
  15306. $24 = HEAP32[$23>>2]|0;
  15307. HEAP32[$23>>2] = $6;
  15308. $25 = ((($0)) + 28|0);
  15309. HEAP32[$25>>2] = $6;
  15310. $26 = ((($0)) + 20|0);
  15311. HEAP32[$26>>2] = $6;
  15312. HEAP32[$19>>2] = 80;
  15313. $27 = ((($6)) + 80|0);
  15314. $28 = ((($0)) + 16|0);
  15315. HEAP32[$28>>2] = $27;
  15316. $29 = (_printf_core($0,$1,$3,$5,$4)|0);
  15317. $30 = ($24|0)==(0|0);
  15318. if ($30) {
  15319. $$1 = $29;
  15320. } else {
  15321. $31 = ((($0)) + 36|0);
  15322. $32 = HEAP32[$31>>2]|0;
  15323. (FUNCTION_TABLE_iiii[$32 & 15]($0,0,0)|0);
  15324. $33 = HEAP32[$26>>2]|0;
  15325. $34 = ($33|0)==(0|0);
  15326. $$ = $34 ? -1 : $29;
  15327. HEAP32[$23>>2] = $24;
  15328. HEAP32[$19>>2] = 0;
  15329. HEAP32[$28>>2] = 0;
  15330. HEAP32[$25>>2] = 0;
  15331. HEAP32[$26>>2] = 0;
  15332. $$1 = $$;
  15333. }
  15334. } else {
  15335. $22 = (_printf_core($0,$1,$3,$5,$4)|0);
  15336. $$1 = $22;
  15337. }
  15338. $35 = HEAP32[$0>>2]|0;
  15339. $36 = $35 & 32;
  15340. $37 = ($36|0)==(0);
  15341. $$1$ = $37 ? $$1 : -1;
  15342. $38 = $35 | $14;
  15343. HEAP32[$0>>2] = $38;
  15344. $39 = ($40|0)==(0);
  15345. if (!($39)) {
  15346. ___unlockfile($0);
  15347. }
  15348. $$0 = $$1$;
  15349. }
  15350. STACKTOP = sp;return ($$0|0);
  15351. }
  15352. function _printf_core($0,$1,$2,$3,$4) {
  15353. $0 = $0|0;
  15354. $1 = $1|0;
  15355. $2 = $2|0;
  15356. $3 = $3|0;
  15357. $4 = $4|0;
  15358. var $$ = 0, $$$ = 0, $$$0259 = 0, $$$0262 = 0, $$$0269 = 0, $$$4266 = 0, $$$5 = 0, $$0 = 0, $$0228 = 0, $$0228$ = 0, $$0229322 = 0, $$0232 = 0, $$0235 = 0, $$0237 = 0, $$0240$lcssa = 0, $$0240$lcssa357 = 0, $$0240321 = 0, $$0243 = 0, $$0247 = 0, $$0249$lcssa = 0;
  15359. var $$0249306 = 0, $$0252 = 0, $$0253 = 0, $$0254 = 0, $$0254$$0254$ = 0, $$0259 = 0, $$0262$lcssa = 0, $$0262311 = 0, $$0269 = 0, $$0269$phi = 0, $$1 = 0, $$1230333 = 0, $$1233 = 0, $$1236 = 0, $$1238 = 0, $$1241332 = 0, $$1244320 = 0, $$1248 = 0, $$1250 = 0, $$1255 = 0;
  15360. var $$1260 = 0, $$1263 = 0, $$1263$ = 0, $$1270 = 0, $$2 = 0, $$2234 = 0, $$2239 = 0, $$2242305 = 0, $$2245 = 0, $$2251 = 0, $$2256 = 0, $$2256$ = 0, $$2256$$$2256 = 0, $$2261 = 0, $$2271 = 0, $$284$ = 0, $$289 = 0, $$290 = 0, $$3257 = 0, $$3265 = 0;
  15361. var $$3272 = 0, $$3303 = 0, $$377 = 0, $$4258355 = 0, $$4266 = 0, $$5 = 0, $$6268 = 0, $$lcssa295 = 0, $$pre = 0, $$pre346 = 0, $$pre347 = 0, $$pre347$pre = 0, $$pre349 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0;
  15362. 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;
  15363. 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;
  15364. 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;
  15365. 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;
  15366. 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;
  15367. var $197 = 0, $198 = 0, $199 = 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;
  15368. var $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, $232 = 0;
  15369. var $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, $250 = 0;
  15370. var $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, $269 = 0;
  15371. var $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, $287 = 0;
  15372. var $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, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0;
  15373. var $306 = 0.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, $322 = 0, $323 = 0;
  15374. var $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0;
  15375. 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;
  15376. var $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, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0;
  15377. var $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, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0;
  15378. var $arglist_current = 0, $arglist_current2 = 0, $arglist_next = 0, $arglist_next3 = 0, $expanded = 0, $expanded10 = 0, $expanded11 = 0, $expanded13 = 0, $expanded14 = 0, $expanded15 = 0, $expanded4 = 0, $expanded6 = 0, $expanded7 = 0, $expanded8 = 0, $isdigit = 0, $isdigit275 = 0, $isdigit277 = 0, $isdigittmp = 0, $isdigittmp$ = 0, $isdigittmp274 = 0;
  15379. var $isdigittmp276 = 0, $narrow = 0, $or$cond = 0, $or$cond281 = 0, $or$cond283 = 0, $or$cond286 = 0, $storemerge = 0, $storemerge273310 = 0, $storemerge278 = 0, $trunc = 0, label = 0, sp = 0;
  15380. sp = STACKTOP;
  15381. STACKTOP = STACKTOP + 64|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(64|0);
  15382. $5 = sp + 16|0;
  15383. $6 = sp;
  15384. $7 = sp + 24|0;
  15385. $8 = sp + 8|0;
  15386. $9 = sp + 20|0;
  15387. HEAP32[$5>>2] = $1;
  15388. $10 = ($0|0)!=(0|0);
  15389. $11 = ((($7)) + 40|0);
  15390. $12 = $11;
  15391. $13 = ((($7)) + 39|0);
  15392. $14 = ((($8)) + 4|0);
  15393. $$0243 = 0;$$0247 = 0;$$0269 = 0;$21 = $1;
  15394. L1: while(1) {
  15395. $15 = ($$0247|0)>(-1);
  15396. do {
  15397. if ($15) {
  15398. $16 = (2147483647 - ($$0247))|0;
  15399. $17 = ($$0243|0)>($16|0);
  15400. if ($17) {
  15401. $18 = (___errno_location()|0);
  15402. HEAP32[$18>>2] = 75;
  15403. $$1248 = -1;
  15404. break;
  15405. } else {
  15406. $19 = (($$0243) + ($$0247))|0;
  15407. $$1248 = $19;
  15408. break;
  15409. }
  15410. } else {
  15411. $$1248 = $$0247;
  15412. }
  15413. } while(0);
  15414. $20 = HEAP8[$21>>0]|0;
  15415. $22 = ($20<<24>>24)==(0);
  15416. if ($22) {
  15417. label = 87;
  15418. break;
  15419. } else {
  15420. $23 = $20;$25 = $21;
  15421. }
  15422. L9: while(1) {
  15423. switch ($23<<24>>24) {
  15424. case 37: {
  15425. $$0249306 = $25;$27 = $25;
  15426. label = 9;
  15427. break L9;
  15428. break;
  15429. }
  15430. case 0: {
  15431. $$0249$lcssa = $25;$39 = $25;
  15432. break L9;
  15433. break;
  15434. }
  15435. default: {
  15436. }
  15437. }
  15438. $24 = ((($25)) + 1|0);
  15439. HEAP32[$5>>2] = $24;
  15440. $$pre = HEAP8[$24>>0]|0;
  15441. $23 = $$pre;$25 = $24;
  15442. }
  15443. L12: do {
  15444. if ((label|0) == 9) {
  15445. while(1) {
  15446. label = 0;
  15447. $26 = ((($27)) + 1|0);
  15448. $28 = HEAP8[$26>>0]|0;
  15449. $29 = ($28<<24>>24)==(37);
  15450. if (!($29)) {
  15451. $$0249$lcssa = $$0249306;$39 = $27;
  15452. break L12;
  15453. }
  15454. $30 = ((($$0249306)) + 1|0);
  15455. $31 = ((($27)) + 2|0);
  15456. HEAP32[$5>>2] = $31;
  15457. $32 = HEAP8[$31>>0]|0;
  15458. $33 = ($32<<24>>24)==(37);
  15459. if ($33) {
  15460. $$0249306 = $30;$27 = $31;
  15461. label = 9;
  15462. } else {
  15463. $$0249$lcssa = $30;$39 = $31;
  15464. break;
  15465. }
  15466. }
  15467. }
  15468. } while(0);
  15469. $34 = $$0249$lcssa;
  15470. $35 = $21;
  15471. $36 = (($34) - ($35))|0;
  15472. if ($10) {
  15473. _out($0,$21,$36);
  15474. }
  15475. $37 = ($36|0)==(0);
  15476. if (!($37)) {
  15477. $$0269$phi = $$0269;$$0243 = $36;$$0247 = $$1248;$21 = $39;$$0269 = $$0269$phi;
  15478. continue;
  15479. }
  15480. $38 = ((($39)) + 1|0);
  15481. $40 = HEAP8[$38>>0]|0;
  15482. $41 = $40 << 24 >> 24;
  15483. $isdigittmp = (($41) + -48)|0;
  15484. $isdigit = ($isdigittmp>>>0)<(10);
  15485. if ($isdigit) {
  15486. $42 = ((($39)) + 2|0);
  15487. $43 = HEAP8[$42>>0]|0;
  15488. $44 = ($43<<24>>24)==(36);
  15489. $45 = ((($39)) + 3|0);
  15490. $$377 = $44 ? $45 : $38;
  15491. $$$0269 = $44 ? 1 : $$0269;
  15492. $isdigittmp$ = $44 ? $isdigittmp : -1;
  15493. $$0253 = $isdigittmp$;$$1270 = $$$0269;$storemerge = $$377;
  15494. } else {
  15495. $$0253 = -1;$$1270 = $$0269;$storemerge = $38;
  15496. }
  15497. HEAP32[$5>>2] = $storemerge;
  15498. $46 = HEAP8[$storemerge>>0]|0;
  15499. $47 = $46 << 24 >> 24;
  15500. $48 = (($47) + -32)|0;
  15501. $49 = ($48>>>0)<(32);
  15502. L24: do {
  15503. if ($49) {
  15504. $$0262311 = 0;$329 = $46;$51 = $48;$storemerge273310 = $storemerge;
  15505. while(1) {
  15506. $50 = 1 << $51;
  15507. $52 = $50 & 75913;
  15508. $53 = ($52|0)==(0);
  15509. if ($53) {
  15510. $$0262$lcssa = $$0262311;$$lcssa295 = $329;$62 = $storemerge273310;
  15511. break L24;
  15512. }
  15513. $54 = $50 | $$0262311;
  15514. $55 = ((($storemerge273310)) + 1|0);
  15515. HEAP32[$5>>2] = $55;
  15516. $56 = HEAP8[$55>>0]|0;
  15517. $57 = $56 << 24 >> 24;
  15518. $58 = (($57) + -32)|0;
  15519. $59 = ($58>>>0)<(32);
  15520. if ($59) {
  15521. $$0262311 = $54;$329 = $56;$51 = $58;$storemerge273310 = $55;
  15522. } else {
  15523. $$0262$lcssa = $54;$$lcssa295 = $56;$62 = $55;
  15524. break;
  15525. }
  15526. }
  15527. } else {
  15528. $$0262$lcssa = 0;$$lcssa295 = $46;$62 = $storemerge;
  15529. }
  15530. } while(0);
  15531. $60 = ($$lcssa295<<24>>24)==(42);
  15532. if ($60) {
  15533. $61 = ((($62)) + 1|0);
  15534. $63 = HEAP8[$61>>0]|0;
  15535. $64 = $63 << 24 >> 24;
  15536. $isdigittmp276 = (($64) + -48)|0;
  15537. $isdigit277 = ($isdigittmp276>>>0)<(10);
  15538. if ($isdigit277) {
  15539. $65 = ((($62)) + 2|0);
  15540. $66 = HEAP8[$65>>0]|0;
  15541. $67 = ($66<<24>>24)==(36);
  15542. if ($67) {
  15543. $68 = (($4) + ($isdigittmp276<<2)|0);
  15544. HEAP32[$68>>2] = 10;
  15545. $69 = HEAP8[$61>>0]|0;
  15546. $70 = $69 << 24 >> 24;
  15547. $71 = (($70) + -48)|0;
  15548. $72 = (($3) + ($71<<3)|0);
  15549. $73 = $72;
  15550. $74 = $73;
  15551. $75 = HEAP32[$74>>2]|0;
  15552. $76 = (($73) + 4)|0;
  15553. $77 = $76;
  15554. $78 = HEAP32[$77>>2]|0;
  15555. $79 = ((($62)) + 3|0);
  15556. $$0259 = $75;$$2271 = 1;$storemerge278 = $79;
  15557. } else {
  15558. label = 23;
  15559. }
  15560. } else {
  15561. label = 23;
  15562. }
  15563. if ((label|0) == 23) {
  15564. label = 0;
  15565. $80 = ($$1270|0)==(0);
  15566. if (!($80)) {
  15567. $$0 = -1;
  15568. break;
  15569. }
  15570. if ($10) {
  15571. $arglist_current = HEAP32[$2>>2]|0;
  15572. $81 = $arglist_current;
  15573. $82 = ((0) + 4|0);
  15574. $expanded4 = $82;
  15575. $expanded = (($expanded4) - 1)|0;
  15576. $83 = (($81) + ($expanded))|0;
  15577. $84 = ((0) + 4|0);
  15578. $expanded8 = $84;
  15579. $expanded7 = (($expanded8) - 1)|0;
  15580. $expanded6 = $expanded7 ^ -1;
  15581. $85 = $83 & $expanded6;
  15582. $86 = $85;
  15583. $87 = HEAP32[$86>>2]|0;
  15584. $arglist_next = ((($86)) + 4|0);
  15585. HEAP32[$2>>2] = $arglist_next;
  15586. $$0259 = $87;$$2271 = 0;$storemerge278 = $61;
  15587. } else {
  15588. $$0259 = 0;$$2271 = 0;$storemerge278 = $61;
  15589. }
  15590. }
  15591. HEAP32[$5>>2] = $storemerge278;
  15592. $88 = ($$0259|0)<(0);
  15593. $89 = $$0262$lcssa | 8192;
  15594. $90 = (0 - ($$0259))|0;
  15595. $$$0262 = $88 ? $89 : $$0262$lcssa;
  15596. $$$0259 = $88 ? $90 : $$0259;
  15597. $$1260 = $$$0259;$$1263 = $$$0262;$$3272 = $$2271;$94 = $storemerge278;
  15598. } else {
  15599. $91 = (_getint($5)|0);
  15600. $92 = ($91|0)<(0);
  15601. if ($92) {
  15602. $$0 = -1;
  15603. break;
  15604. }
  15605. $$pre346 = HEAP32[$5>>2]|0;
  15606. $$1260 = $91;$$1263 = $$0262$lcssa;$$3272 = $$1270;$94 = $$pre346;
  15607. }
  15608. $93 = HEAP8[$94>>0]|0;
  15609. $95 = ($93<<24>>24)==(46);
  15610. do {
  15611. if ($95) {
  15612. $96 = ((($94)) + 1|0);
  15613. $97 = HEAP8[$96>>0]|0;
  15614. $98 = ($97<<24>>24)==(42);
  15615. if (!($98)) {
  15616. $125 = ((($94)) + 1|0);
  15617. HEAP32[$5>>2] = $125;
  15618. $126 = (_getint($5)|0);
  15619. $$pre347$pre = HEAP32[$5>>2]|0;
  15620. $$0254 = $126;$$pre347 = $$pre347$pre;
  15621. break;
  15622. }
  15623. $99 = ((($94)) + 2|0);
  15624. $100 = HEAP8[$99>>0]|0;
  15625. $101 = $100 << 24 >> 24;
  15626. $isdigittmp274 = (($101) + -48)|0;
  15627. $isdigit275 = ($isdigittmp274>>>0)<(10);
  15628. if ($isdigit275) {
  15629. $102 = ((($94)) + 3|0);
  15630. $103 = HEAP8[$102>>0]|0;
  15631. $104 = ($103<<24>>24)==(36);
  15632. if ($104) {
  15633. $105 = (($4) + ($isdigittmp274<<2)|0);
  15634. HEAP32[$105>>2] = 10;
  15635. $106 = HEAP8[$99>>0]|0;
  15636. $107 = $106 << 24 >> 24;
  15637. $108 = (($107) + -48)|0;
  15638. $109 = (($3) + ($108<<3)|0);
  15639. $110 = $109;
  15640. $111 = $110;
  15641. $112 = HEAP32[$111>>2]|0;
  15642. $113 = (($110) + 4)|0;
  15643. $114 = $113;
  15644. $115 = HEAP32[$114>>2]|0;
  15645. $116 = ((($94)) + 4|0);
  15646. HEAP32[$5>>2] = $116;
  15647. $$0254 = $112;$$pre347 = $116;
  15648. break;
  15649. }
  15650. }
  15651. $117 = ($$3272|0)==(0);
  15652. if (!($117)) {
  15653. $$0 = -1;
  15654. break L1;
  15655. }
  15656. if ($10) {
  15657. $arglist_current2 = HEAP32[$2>>2]|0;
  15658. $118 = $arglist_current2;
  15659. $119 = ((0) + 4|0);
  15660. $expanded11 = $119;
  15661. $expanded10 = (($expanded11) - 1)|0;
  15662. $120 = (($118) + ($expanded10))|0;
  15663. $121 = ((0) + 4|0);
  15664. $expanded15 = $121;
  15665. $expanded14 = (($expanded15) - 1)|0;
  15666. $expanded13 = $expanded14 ^ -1;
  15667. $122 = $120 & $expanded13;
  15668. $123 = $122;
  15669. $124 = HEAP32[$123>>2]|0;
  15670. $arglist_next3 = ((($123)) + 4|0);
  15671. HEAP32[$2>>2] = $arglist_next3;
  15672. $330 = $124;
  15673. } else {
  15674. $330 = 0;
  15675. }
  15676. HEAP32[$5>>2] = $99;
  15677. $$0254 = $330;$$pre347 = $99;
  15678. } else {
  15679. $$0254 = -1;$$pre347 = $94;
  15680. }
  15681. } while(0);
  15682. $$0252 = 0;$128 = $$pre347;
  15683. while(1) {
  15684. $127 = HEAP8[$128>>0]|0;
  15685. $129 = $127 << 24 >> 24;
  15686. $130 = (($129) + -65)|0;
  15687. $131 = ($130>>>0)>(57);
  15688. if ($131) {
  15689. $$0 = -1;
  15690. break L1;
  15691. }
  15692. $132 = ((($128)) + 1|0);
  15693. HEAP32[$5>>2] = $132;
  15694. $133 = HEAP8[$128>>0]|0;
  15695. $134 = $133 << 24 >> 24;
  15696. $135 = (($134) + -65)|0;
  15697. $136 = ((11644 + (($$0252*58)|0)|0) + ($135)|0);
  15698. $137 = HEAP8[$136>>0]|0;
  15699. $138 = $137&255;
  15700. $139 = (($138) + -1)|0;
  15701. $140 = ($139>>>0)<(8);
  15702. if ($140) {
  15703. $$0252 = $138;$128 = $132;
  15704. } else {
  15705. break;
  15706. }
  15707. }
  15708. $141 = ($137<<24>>24)==(0);
  15709. if ($141) {
  15710. $$0 = -1;
  15711. break;
  15712. }
  15713. $142 = ($137<<24>>24)==(19);
  15714. $143 = ($$0253|0)>(-1);
  15715. do {
  15716. if ($142) {
  15717. if ($143) {
  15718. $$0 = -1;
  15719. break L1;
  15720. } else {
  15721. label = 49;
  15722. }
  15723. } else {
  15724. if ($143) {
  15725. $144 = (($4) + ($$0253<<2)|0);
  15726. HEAP32[$144>>2] = $138;
  15727. $145 = (($3) + ($$0253<<3)|0);
  15728. $146 = $145;
  15729. $147 = $146;
  15730. $148 = HEAP32[$147>>2]|0;
  15731. $149 = (($146) + 4)|0;
  15732. $150 = $149;
  15733. $151 = HEAP32[$150>>2]|0;
  15734. $152 = $6;
  15735. $153 = $152;
  15736. HEAP32[$153>>2] = $148;
  15737. $154 = (($152) + 4)|0;
  15738. $155 = $154;
  15739. HEAP32[$155>>2] = $151;
  15740. label = 49;
  15741. break;
  15742. }
  15743. if (!($10)) {
  15744. $$0 = 0;
  15745. break L1;
  15746. }
  15747. _pop_arg($6,$138,$2);
  15748. }
  15749. } while(0);
  15750. if ((label|0) == 49) {
  15751. label = 0;
  15752. if (!($10)) {
  15753. $$0243 = 0;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
  15754. continue;
  15755. }
  15756. }
  15757. $156 = HEAP8[$128>>0]|0;
  15758. $157 = $156 << 24 >> 24;
  15759. $158 = ($$0252|0)!=(0);
  15760. $159 = $157 & 15;
  15761. $160 = ($159|0)==(3);
  15762. $or$cond281 = $158 & $160;
  15763. $161 = $157 & -33;
  15764. $$0235 = $or$cond281 ? $161 : $157;
  15765. $162 = $$1263 & 8192;
  15766. $163 = ($162|0)==(0);
  15767. $164 = $$1263 & -65537;
  15768. $$1263$ = $163 ? $$1263 : $164;
  15769. L71: do {
  15770. switch ($$0235|0) {
  15771. case 110: {
  15772. $trunc = $$0252&255;
  15773. switch ($trunc<<24>>24) {
  15774. case 0: {
  15775. $171 = HEAP32[$6>>2]|0;
  15776. HEAP32[$171>>2] = $$1248;
  15777. $$0243 = 0;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
  15778. continue L1;
  15779. break;
  15780. }
  15781. case 1: {
  15782. $172 = HEAP32[$6>>2]|0;
  15783. HEAP32[$172>>2] = $$1248;
  15784. $$0243 = 0;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
  15785. continue L1;
  15786. break;
  15787. }
  15788. case 2: {
  15789. $173 = ($$1248|0)<(0);
  15790. $174 = $173 << 31 >> 31;
  15791. $175 = HEAP32[$6>>2]|0;
  15792. $176 = $175;
  15793. $177 = $176;
  15794. HEAP32[$177>>2] = $$1248;
  15795. $178 = (($176) + 4)|0;
  15796. $179 = $178;
  15797. HEAP32[$179>>2] = $174;
  15798. $$0243 = 0;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
  15799. continue L1;
  15800. break;
  15801. }
  15802. case 3: {
  15803. $180 = $$1248&65535;
  15804. $181 = HEAP32[$6>>2]|0;
  15805. HEAP16[$181>>1] = $180;
  15806. $$0243 = 0;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
  15807. continue L1;
  15808. break;
  15809. }
  15810. case 4: {
  15811. $182 = $$1248&255;
  15812. $183 = HEAP32[$6>>2]|0;
  15813. HEAP8[$183>>0] = $182;
  15814. $$0243 = 0;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
  15815. continue L1;
  15816. break;
  15817. }
  15818. case 6: {
  15819. $184 = HEAP32[$6>>2]|0;
  15820. HEAP32[$184>>2] = $$1248;
  15821. $$0243 = 0;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
  15822. continue L1;
  15823. break;
  15824. }
  15825. case 7: {
  15826. $185 = ($$1248|0)<(0);
  15827. $186 = $185 << 31 >> 31;
  15828. $187 = HEAP32[$6>>2]|0;
  15829. $188 = $187;
  15830. $189 = $188;
  15831. HEAP32[$189>>2] = $$1248;
  15832. $190 = (($188) + 4)|0;
  15833. $191 = $190;
  15834. HEAP32[$191>>2] = $186;
  15835. $$0243 = 0;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
  15836. continue L1;
  15837. break;
  15838. }
  15839. default: {
  15840. $$0243 = 0;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
  15841. continue L1;
  15842. }
  15843. }
  15844. break;
  15845. }
  15846. case 112: {
  15847. $192 = ($$0254>>>0)>(8);
  15848. $193 = $192 ? $$0254 : 8;
  15849. $194 = $$1263$ | 8;
  15850. $$1236 = 120;$$1255 = $193;$$3265 = $194;
  15851. label = 61;
  15852. break;
  15853. }
  15854. case 88: case 120: {
  15855. $$1236 = $$0235;$$1255 = $$0254;$$3265 = $$1263$;
  15856. label = 61;
  15857. break;
  15858. }
  15859. case 111: {
  15860. $210 = $6;
  15861. $211 = $210;
  15862. $212 = HEAP32[$211>>2]|0;
  15863. $213 = (($210) + 4)|0;
  15864. $214 = $213;
  15865. $215 = HEAP32[$214>>2]|0;
  15866. $216 = (_fmt_o($212,$215,$11)|0);
  15867. $217 = $$1263$ & 8;
  15868. $218 = ($217|0)==(0);
  15869. $219 = $216;
  15870. $220 = (($12) - ($219))|0;
  15871. $221 = ($$0254|0)>($220|0);
  15872. $222 = (($220) + 1)|0;
  15873. $223 = $218 | $221;
  15874. $$0254$$0254$ = $223 ? $$0254 : $222;
  15875. $$0228 = $216;$$1233 = 0;$$1238 = 12108;$$2256 = $$0254$$0254$;$$4266 = $$1263$;$248 = $212;$250 = $215;
  15876. label = 67;
  15877. break;
  15878. }
  15879. case 105: case 100: {
  15880. $224 = $6;
  15881. $225 = $224;
  15882. $226 = HEAP32[$225>>2]|0;
  15883. $227 = (($224) + 4)|0;
  15884. $228 = $227;
  15885. $229 = HEAP32[$228>>2]|0;
  15886. $230 = ($229|0)<(0);
  15887. if ($230) {
  15888. $231 = (_i64Subtract(0,0,($226|0),($229|0))|0);
  15889. $232 = tempRet0;
  15890. $233 = $6;
  15891. $234 = $233;
  15892. HEAP32[$234>>2] = $231;
  15893. $235 = (($233) + 4)|0;
  15894. $236 = $235;
  15895. HEAP32[$236>>2] = $232;
  15896. $$0232 = 1;$$0237 = 12108;$242 = $231;$243 = $232;
  15897. label = 66;
  15898. break L71;
  15899. } else {
  15900. $237 = $$1263$ & 2048;
  15901. $238 = ($237|0)==(0);
  15902. $239 = $$1263$ & 1;
  15903. $240 = ($239|0)==(0);
  15904. $$ = $240 ? 12108 : (12110);
  15905. $$$ = $238 ? $$ : (12109);
  15906. $241 = $$1263$ & 2049;
  15907. $narrow = ($241|0)!=(0);
  15908. $$284$ = $narrow&1;
  15909. $$0232 = $$284$;$$0237 = $$$;$242 = $226;$243 = $229;
  15910. label = 66;
  15911. break L71;
  15912. }
  15913. break;
  15914. }
  15915. case 117: {
  15916. $165 = $6;
  15917. $166 = $165;
  15918. $167 = HEAP32[$166>>2]|0;
  15919. $168 = (($165) + 4)|0;
  15920. $169 = $168;
  15921. $170 = HEAP32[$169>>2]|0;
  15922. $$0232 = 0;$$0237 = 12108;$242 = $167;$243 = $170;
  15923. label = 66;
  15924. break;
  15925. }
  15926. case 99: {
  15927. $259 = $6;
  15928. $260 = $259;
  15929. $261 = HEAP32[$260>>2]|0;
  15930. $262 = (($259) + 4)|0;
  15931. $263 = $262;
  15932. $264 = HEAP32[$263>>2]|0;
  15933. $265 = $261&255;
  15934. HEAP8[$13>>0] = $265;
  15935. $$2 = $13;$$2234 = 0;$$2239 = 12108;$$2251 = $11;$$5 = 1;$$6268 = $164;
  15936. break;
  15937. }
  15938. case 109: {
  15939. $266 = (___errno_location()|0);
  15940. $267 = HEAP32[$266>>2]|0;
  15941. $268 = (_strerror($267)|0);
  15942. $$1 = $268;
  15943. label = 71;
  15944. break;
  15945. }
  15946. case 115: {
  15947. $269 = HEAP32[$6>>2]|0;
  15948. $270 = ($269|0)!=(0|0);
  15949. $271 = $270 ? $269 : 12118;
  15950. $$1 = $271;
  15951. label = 71;
  15952. break;
  15953. }
  15954. case 67: {
  15955. $278 = $6;
  15956. $279 = $278;
  15957. $280 = HEAP32[$279>>2]|0;
  15958. $281 = (($278) + 4)|0;
  15959. $282 = $281;
  15960. $283 = HEAP32[$282>>2]|0;
  15961. HEAP32[$8>>2] = $280;
  15962. HEAP32[$14>>2] = 0;
  15963. HEAP32[$6>>2] = $8;
  15964. $$4258355 = -1;$331 = $8;
  15965. label = 75;
  15966. break;
  15967. }
  15968. case 83: {
  15969. $$pre349 = HEAP32[$6>>2]|0;
  15970. $284 = ($$0254|0)==(0);
  15971. if ($284) {
  15972. _pad_674($0,32,$$1260,0,$$1263$);
  15973. $$0240$lcssa357 = 0;
  15974. label = 84;
  15975. } else {
  15976. $$4258355 = $$0254;$331 = $$pre349;
  15977. label = 75;
  15978. }
  15979. break;
  15980. }
  15981. case 65: case 71: case 70: case 69: case 97: case 103: case 102: case 101: {
  15982. $306 = +HEAPF64[$6>>3];
  15983. $307 = (_fmt_fp($0,$306,$$1260,$$0254,$$1263$,$$0235)|0);
  15984. $$0243 = $307;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
  15985. continue L1;
  15986. break;
  15987. }
  15988. default: {
  15989. $$2 = $21;$$2234 = 0;$$2239 = 12108;$$2251 = $11;$$5 = $$0254;$$6268 = $$1263$;
  15990. }
  15991. }
  15992. } while(0);
  15993. L95: do {
  15994. if ((label|0) == 61) {
  15995. label = 0;
  15996. $195 = $6;
  15997. $196 = $195;
  15998. $197 = HEAP32[$196>>2]|0;
  15999. $198 = (($195) + 4)|0;
  16000. $199 = $198;
  16001. $200 = HEAP32[$199>>2]|0;
  16002. $201 = $$1236 & 32;
  16003. $202 = (_fmt_x($197,$200,$11,$201)|0);
  16004. $203 = ($197|0)==(0);
  16005. $204 = ($200|0)==(0);
  16006. $205 = $203 & $204;
  16007. $206 = $$3265 & 8;
  16008. $207 = ($206|0)==(0);
  16009. $or$cond283 = $207 | $205;
  16010. $208 = $$1236 >> 4;
  16011. $209 = (12108 + ($208)|0);
  16012. $$289 = $or$cond283 ? 12108 : $209;
  16013. $$290 = $or$cond283 ? 0 : 2;
  16014. $$0228 = $202;$$1233 = $$290;$$1238 = $$289;$$2256 = $$1255;$$4266 = $$3265;$248 = $197;$250 = $200;
  16015. label = 67;
  16016. }
  16017. else if ((label|0) == 66) {
  16018. label = 0;
  16019. $244 = (_fmt_u($242,$243,$11)|0);
  16020. $$0228 = $244;$$1233 = $$0232;$$1238 = $$0237;$$2256 = $$0254;$$4266 = $$1263$;$248 = $242;$250 = $243;
  16021. label = 67;
  16022. }
  16023. else if ((label|0) == 71) {
  16024. label = 0;
  16025. $272 = (_memchr($$1,0,$$0254)|0);
  16026. $273 = ($272|0)==(0|0);
  16027. $274 = $272;
  16028. $275 = $$1;
  16029. $276 = (($274) - ($275))|0;
  16030. $277 = (($$1) + ($$0254)|0);
  16031. $$3257 = $273 ? $$0254 : $276;
  16032. $$1250 = $273 ? $277 : $272;
  16033. $$2 = $$1;$$2234 = 0;$$2239 = 12108;$$2251 = $$1250;$$5 = $$3257;$$6268 = $164;
  16034. }
  16035. else if ((label|0) == 75) {
  16036. label = 0;
  16037. $$0229322 = $331;$$0240321 = 0;$$1244320 = 0;
  16038. while(1) {
  16039. $285 = HEAP32[$$0229322>>2]|0;
  16040. $286 = ($285|0)==(0);
  16041. if ($286) {
  16042. $$0240$lcssa = $$0240321;$$2245 = $$1244320;
  16043. break;
  16044. }
  16045. $287 = (_wctomb($9,$285)|0);
  16046. $288 = ($287|0)<(0);
  16047. $289 = (($$4258355) - ($$0240321))|0;
  16048. $290 = ($287>>>0)>($289>>>0);
  16049. $or$cond286 = $288 | $290;
  16050. if ($or$cond286) {
  16051. $$0240$lcssa = $$0240321;$$2245 = $287;
  16052. break;
  16053. }
  16054. $291 = ((($$0229322)) + 4|0);
  16055. $292 = (($287) + ($$0240321))|0;
  16056. $293 = ($$4258355>>>0)>($292>>>0);
  16057. if ($293) {
  16058. $$0229322 = $291;$$0240321 = $292;$$1244320 = $287;
  16059. } else {
  16060. $$0240$lcssa = $292;$$2245 = $287;
  16061. break;
  16062. }
  16063. }
  16064. $294 = ($$2245|0)<(0);
  16065. if ($294) {
  16066. $$0 = -1;
  16067. break L1;
  16068. }
  16069. _pad_674($0,32,$$1260,$$0240$lcssa,$$1263$);
  16070. $295 = ($$0240$lcssa|0)==(0);
  16071. if ($295) {
  16072. $$0240$lcssa357 = 0;
  16073. label = 84;
  16074. } else {
  16075. $$1230333 = $331;$$1241332 = 0;
  16076. while(1) {
  16077. $296 = HEAP32[$$1230333>>2]|0;
  16078. $297 = ($296|0)==(0);
  16079. if ($297) {
  16080. $$0240$lcssa357 = $$0240$lcssa;
  16081. label = 84;
  16082. break L95;
  16083. }
  16084. $298 = (_wctomb($9,$296)|0);
  16085. $299 = (($298) + ($$1241332))|0;
  16086. $300 = ($299|0)>($$0240$lcssa|0);
  16087. if ($300) {
  16088. $$0240$lcssa357 = $$0240$lcssa;
  16089. label = 84;
  16090. break L95;
  16091. }
  16092. $301 = ((($$1230333)) + 4|0);
  16093. _out($0,$9,$298);
  16094. $302 = ($299>>>0)<($$0240$lcssa>>>0);
  16095. if ($302) {
  16096. $$1230333 = $301;$$1241332 = $299;
  16097. } else {
  16098. $$0240$lcssa357 = $$0240$lcssa;
  16099. label = 84;
  16100. break;
  16101. }
  16102. }
  16103. }
  16104. }
  16105. } while(0);
  16106. if ((label|0) == 67) {
  16107. label = 0;
  16108. $245 = ($$2256|0)>(-1);
  16109. $246 = $$4266 & -65537;
  16110. $$$4266 = $245 ? $246 : $$4266;
  16111. $247 = ($248|0)!=(0);
  16112. $249 = ($250|0)!=(0);
  16113. $251 = $247 | $249;
  16114. $252 = ($$2256|0)!=(0);
  16115. $or$cond = $252 | $251;
  16116. $253 = $$0228;
  16117. $254 = (($12) - ($253))|0;
  16118. $255 = $251 ^ 1;
  16119. $256 = $255&1;
  16120. $257 = (($256) + ($254))|0;
  16121. $258 = ($$2256|0)>($257|0);
  16122. $$2256$ = $258 ? $$2256 : $257;
  16123. $$2256$$$2256 = $or$cond ? $$2256$ : $$2256;
  16124. $$0228$ = $or$cond ? $$0228 : $11;
  16125. $$2 = $$0228$;$$2234 = $$1233;$$2239 = $$1238;$$2251 = $11;$$5 = $$2256$$$2256;$$6268 = $$$4266;
  16126. }
  16127. else if ((label|0) == 84) {
  16128. label = 0;
  16129. $303 = $$1263$ ^ 8192;
  16130. _pad_674($0,32,$$1260,$$0240$lcssa357,$303);
  16131. $304 = ($$1260|0)>($$0240$lcssa357|0);
  16132. $305 = $304 ? $$1260 : $$0240$lcssa357;
  16133. $$0243 = $305;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
  16134. continue;
  16135. }
  16136. $308 = $$2251;
  16137. $309 = $$2;
  16138. $310 = (($308) - ($309))|0;
  16139. $311 = ($$5|0)<($310|0);
  16140. $$$5 = $311 ? $310 : $$5;
  16141. $312 = (($$$5) + ($$2234))|0;
  16142. $313 = ($$1260|0)<($312|0);
  16143. $$2261 = $313 ? $312 : $$1260;
  16144. _pad_674($0,32,$$2261,$312,$$6268);
  16145. _out($0,$$2239,$$2234);
  16146. $314 = $$6268 ^ 65536;
  16147. _pad_674($0,48,$$2261,$312,$314);
  16148. _pad_674($0,48,$$$5,$310,0);
  16149. _out($0,$$2,$310);
  16150. $315 = $$6268 ^ 8192;
  16151. _pad_674($0,32,$$2261,$312,$315);
  16152. $$0243 = $$2261;$$0247 = $$1248;$$0269 = $$3272;$21 = $132;
  16153. }
  16154. L114: do {
  16155. if ((label|0) == 87) {
  16156. $316 = ($0|0)==(0|0);
  16157. if ($316) {
  16158. $317 = ($$0269|0)==(0);
  16159. if ($317) {
  16160. $$0 = 0;
  16161. } else {
  16162. $$2242305 = 1;
  16163. while(1) {
  16164. $318 = (($4) + ($$2242305<<2)|0);
  16165. $319 = HEAP32[$318>>2]|0;
  16166. $320 = ($319|0)==(0);
  16167. if ($320) {
  16168. $$3303 = $$2242305;
  16169. break;
  16170. }
  16171. $321 = (($3) + ($$2242305<<3)|0);
  16172. _pop_arg($321,$319,$2);
  16173. $322 = (($$2242305) + 1)|0;
  16174. $323 = ($322|0)<(10);
  16175. if ($323) {
  16176. $$2242305 = $322;
  16177. } else {
  16178. $$0 = 1;
  16179. break L114;
  16180. }
  16181. }
  16182. while(1) {
  16183. $326 = (($4) + ($$3303<<2)|0);
  16184. $327 = HEAP32[$326>>2]|0;
  16185. $328 = ($327|0)==(0);
  16186. $325 = (($$3303) + 1)|0;
  16187. if (!($328)) {
  16188. $$0 = -1;
  16189. break L114;
  16190. }
  16191. $324 = ($325|0)<(10);
  16192. if ($324) {
  16193. $$3303 = $325;
  16194. } else {
  16195. $$0 = 1;
  16196. break;
  16197. }
  16198. }
  16199. }
  16200. } else {
  16201. $$0 = $$1248;
  16202. }
  16203. }
  16204. } while(0);
  16205. STACKTOP = sp;return ($$0|0);
  16206. }
  16207. function ___lockfile($0) {
  16208. $0 = $0|0;
  16209. var label = 0, sp = 0;
  16210. sp = STACKTOP;
  16211. return 0;
  16212. }
  16213. function ___unlockfile($0) {
  16214. $0 = $0|0;
  16215. var label = 0, sp = 0;
  16216. sp = STACKTOP;
  16217. return;
  16218. }
  16219. function _out($0,$1,$2) {
  16220. $0 = $0|0;
  16221. $1 = $1|0;
  16222. $2 = $2|0;
  16223. var $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
  16224. sp = STACKTOP;
  16225. $3 = HEAP32[$0>>2]|0;
  16226. $4 = $3 & 32;
  16227. $5 = ($4|0)==(0);
  16228. if ($5) {
  16229. (___fwritex($1,$2,$0)|0);
  16230. }
  16231. return;
  16232. }
  16233. function _getint($0) {
  16234. $0 = $0|0;
  16235. var $$0$lcssa = 0, $$06 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $isdigit = 0, $isdigit5 = 0, $isdigittmp = 0, $isdigittmp4 = 0, $isdigittmp7 = 0, label = 0, sp = 0;
  16236. sp = STACKTOP;
  16237. $1 = HEAP32[$0>>2]|0;
  16238. $2 = HEAP8[$1>>0]|0;
  16239. $3 = $2 << 24 >> 24;
  16240. $isdigittmp4 = (($3) + -48)|0;
  16241. $isdigit5 = ($isdigittmp4>>>0)<(10);
  16242. if ($isdigit5) {
  16243. $$06 = 0;$7 = $1;$isdigittmp7 = $isdigittmp4;
  16244. while(1) {
  16245. $4 = ($$06*10)|0;
  16246. $5 = (($isdigittmp7) + ($4))|0;
  16247. $6 = ((($7)) + 1|0);
  16248. HEAP32[$0>>2] = $6;
  16249. $8 = HEAP8[$6>>0]|0;
  16250. $9 = $8 << 24 >> 24;
  16251. $isdigittmp = (($9) + -48)|0;
  16252. $isdigit = ($isdigittmp>>>0)<(10);
  16253. if ($isdigit) {
  16254. $$06 = $5;$7 = $6;$isdigittmp7 = $isdigittmp;
  16255. } else {
  16256. $$0$lcssa = $5;
  16257. break;
  16258. }
  16259. }
  16260. } else {
  16261. $$0$lcssa = 0;
  16262. }
  16263. return ($$0$lcssa|0);
  16264. }
  16265. function _pop_arg($0,$1,$2) {
  16266. $0 = $0|0;
  16267. $1 = $1|0;
  16268. $2 = $2|0;
  16269. var $$mask = 0, $$mask31 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0.0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0;
  16270. var $116 = 0.0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0;
  16271. 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;
  16272. 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;
  16273. 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;
  16274. 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, $arglist_current = 0, $arglist_current11 = 0, $arglist_current14 = 0, $arglist_current17 = 0;
  16275. var $arglist_current2 = 0, $arglist_current20 = 0, $arglist_current23 = 0, $arglist_current26 = 0, $arglist_current5 = 0, $arglist_current8 = 0, $arglist_next = 0, $arglist_next12 = 0, $arglist_next15 = 0, $arglist_next18 = 0, $arglist_next21 = 0, $arglist_next24 = 0, $arglist_next27 = 0, $arglist_next3 = 0, $arglist_next6 = 0, $arglist_next9 = 0, $expanded = 0, $expanded28 = 0, $expanded30 = 0, $expanded31 = 0;
  16276. var $expanded32 = 0, $expanded34 = 0, $expanded35 = 0, $expanded37 = 0, $expanded38 = 0, $expanded39 = 0, $expanded41 = 0, $expanded42 = 0, $expanded44 = 0, $expanded45 = 0, $expanded46 = 0, $expanded48 = 0, $expanded49 = 0, $expanded51 = 0, $expanded52 = 0, $expanded53 = 0, $expanded55 = 0, $expanded56 = 0, $expanded58 = 0, $expanded59 = 0;
  16277. var $expanded60 = 0, $expanded62 = 0, $expanded63 = 0, $expanded65 = 0, $expanded66 = 0, $expanded67 = 0, $expanded69 = 0, $expanded70 = 0, $expanded72 = 0, $expanded73 = 0, $expanded74 = 0, $expanded76 = 0, $expanded77 = 0, $expanded79 = 0, $expanded80 = 0, $expanded81 = 0, $expanded83 = 0, $expanded84 = 0, $expanded86 = 0, $expanded87 = 0;
  16278. var $expanded88 = 0, $expanded90 = 0, $expanded91 = 0, $expanded93 = 0, $expanded94 = 0, $expanded95 = 0, label = 0, sp = 0;
  16279. sp = STACKTOP;
  16280. $3 = ($1>>>0)>(20);
  16281. L1: do {
  16282. if (!($3)) {
  16283. do {
  16284. switch ($1|0) {
  16285. case 9: {
  16286. $arglist_current = HEAP32[$2>>2]|0;
  16287. $4 = $arglist_current;
  16288. $5 = ((0) + 4|0);
  16289. $expanded28 = $5;
  16290. $expanded = (($expanded28) - 1)|0;
  16291. $6 = (($4) + ($expanded))|0;
  16292. $7 = ((0) + 4|0);
  16293. $expanded32 = $7;
  16294. $expanded31 = (($expanded32) - 1)|0;
  16295. $expanded30 = $expanded31 ^ -1;
  16296. $8 = $6 & $expanded30;
  16297. $9 = $8;
  16298. $10 = HEAP32[$9>>2]|0;
  16299. $arglist_next = ((($9)) + 4|0);
  16300. HEAP32[$2>>2] = $arglist_next;
  16301. HEAP32[$0>>2] = $10;
  16302. break L1;
  16303. break;
  16304. }
  16305. case 10: {
  16306. $arglist_current2 = HEAP32[$2>>2]|0;
  16307. $11 = $arglist_current2;
  16308. $12 = ((0) + 4|0);
  16309. $expanded35 = $12;
  16310. $expanded34 = (($expanded35) - 1)|0;
  16311. $13 = (($11) + ($expanded34))|0;
  16312. $14 = ((0) + 4|0);
  16313. $expanded39 = $14;
  16314. $expanded38 = (($expanded39) - 1)|0;
  16315. $expanded37 = $expanded38 ^ -1;
  16316. $15 = $13 & $expanded37;
  16317. $16 = $15;
  16318. $17 = HEAP32[$16>>2]|0;
  16319. $arglist_next3 = ((($16)) + 4|0);
  16320. HEAP32[$2>>2] = $arglist_next3;
  16321. $18 = ($17|0)<(0);
  16322. $19 = $18 << 31 >> 31;
  16323. $20 = $0;
  16324. $21 = $20;
  16325. HEAP32[$21>>2] = $17;
  16326. $22 = (($20) + 4)|0;
  16327. $23 = $22;
  16328. HEAP32[$23>>2] = $19;
  16329. break L1;
  16330. break;
  16331. }
  16332. case 11: {
  16333. $arglist_current5 = HEAP32[$2>>2]|0;
  16334. $24 = $arglist_current5;
  16335. $25 = ((0) + 4|0);
  16336. $expanded42 = $25;
  16337. $expanded41 = (($expanded42) - 1)|0;
  16338. $26 = (($24) + ($expanded41))|0;
  16339. $27 = ((0) + 4|0);
  16340. $expanded46 = $27;
  16341. $expanded45 = (($expanded46) - 1)|0;
  16342. $expanded44 = $expanded45 ^ -1;
  16343. $28 = $26 & $expanded44;
  16344. $29 = $28;
  16345. $30 = HEAP32[$29>>2]|0;
  16346. $arglist_next6 = ((($29)) + 4|0);
  16347. HEAP32[$2>>2] = $arglist_next6;
  16348. $31 = $0;
  16349. $32 = $31;
  16350. HEAP32[$32>>2] = $30;
  16351. $33 = (($31) + 4)|0;
  16352. $34 = $33;
  16353. HEAP32[$34>>2] = 0;
  16354. break L1;
  16355. break;
  16356. }
  16357. case 12: {
  16358. $arglist_current8 = HEAP32[$2>>2]|0;
  16359. $35 = $arglist_current8;
  16360. $36 = ((0) + 8|0);
  16361. $expanded49 = $36;
  16362. $expanded48 = (($expanded49) - 1)|0;
  16363. $37 = (($35) + ($expanded48))|0;
  16364. $38 = ((0) + 8|0);
  16365. $expanded53 = $38;
  16366. $expanded52 = (($expanded53) - 1)|0;
  16367. $expanded51 = $expanded52 ^ -1;
  16368. $39 = $37 & $expanded51;
  16369. $40 = $39;
  16370. $41 = $40;
  16371. $42 = $41;
  16372. $43 = HEAP32[$42>>2]|0;
  16373. $44 = (($41) + 4)|0;
  16374. $45 = $44;
  16375. $46 = HEAP32[$45>>2]|0;
  16376. $arglist_next9 = ((($40)) + 8|0);
  16377. HEAP32[$2>>2] = $arglist_next9;
  16378. $47 = $0;
  16379. $48 = $47;
  16380. HEAP32[$48>>2] = $43;
  16381. $49 = (($47) + 4)|0;
  16382. $50 = $49;
  16383. HEAP32[$50>>2] = $46;
  16384. break L1;
  16385. break;
  16386. }
  16387. case 13: {
  16388. $arglist_current11 = HEAP32[$2>>2]|0;
  16389. $51 = $arglist_current11;
  16390. $52 = ((0) + 4|0);
  16391. $expanded56 = $52;
  16392. $expanded55 = (($expanded56) - 1)|0;
  16393. $53 = (($51) + ($expanded55))|0;
  16394. $54 = ((0) + 4|0);
  16395. $expanded60 = $54;
  16396. $expanded59 = (($expanded60) - 1)|0;
  16397. $expanded58 = $expanded59 ^ -1;
  16398. $55 = $53 & $expanded58;
  16399. $56 = $55;
  16400. $57 = HEAP32[$56>>2]|0;
  16401. $arglist_next12 = ((($56)) + 4|0);
  16402. HEAP32[$2>>2] = $arglist_next12;
  16403. $58 = $57&65535;
  16404. $59 = $58 << 16 >> 16;
  16405. $60 = ($59|0)<(0);
  16406. $61 = $60 << 31 >> 31;
  16407. $62 = $0;
  16408. $63 = $62;
  16409. HEAP32[$63>>2] = $59;
  16410. $64 = (($62) + 4)|0;
  16411. $65 = $64;
  16412. HEAP32[$65>>2] = $61;
  16413. break L1;
  16414. break;
  16415. }
  16416. case 14: {
  16417. $arglist_current14 = HEAP32[$2>>2]|0;
  16418. $66 = $arglist_current14;
  16419. $67 = ((0) + 4|0);
  16420. $expanded63 = $67;
  16421. $expanded62 = (($expanded63) - 1)|0;
  16422. $68 = (($66) + ($expanded62))|0;
  16423. $69 = ((0) + 4|0);
  16424. $expanded67 = $69;
  16425. $expanded66 = (($expanded67) - 1)|0;
  16426. $expanded65 = $expanded66 ^ -1;
  16427. $70 = $68 & $expanded65;
  16428. $71 = $70;
  16429. $72 = HEAP32[$71>>2]|0;
  16430. $arglist_next15 = ((($71)) + 4|0);
  16431. HEAP32[$2>>2] = $arglist_next15;
  16432. $$mask31 = $72 & 65535;
  16433. $73 = $0;
  16434. $74 = $73;
  16435. HEAP32[$74>>2] = $$mask31;
  16436. $75 = (($73) + 4)|0;
  16437. $76 = $75;
  16438. HEAP32[$76>>2] = 0;
  16439. break L1;
  16440. break;
  16441. }
  16442. case 15: {
  16443. $arglist_current17 = HEAP32[$2>>2]|0;
  16444. $77 = $arglist_current17;
  16445. $78 = ((0) + 4|0);
  16446. $expanded70 = $78;
  16447. $expanded69 = (($expanded70) - 1)|0;
  16448. $79 = (($77) + ($expanded69))|0;
  16449. $80 = ((0) + 4|0);
  16450. $expanded74 = $80;
  16451. $expanded73 = (($expanded74) - 1)|0;
  16452. $expanded72 = $expanded73 ^ -1;
  16453. $81 = $79 & $expanded72;
  16454. $82 = $81;
  16455. $83 = HEAP32[$82>>2]|0;
  16456. $arglist_next18 = ((($82)) + 4|0);
  16457. HEAP32[$2>>2] = $arglist_next18;
  16458. $84 = $83&255;
  16459. $85 = $84 << 24 >> 24;
  16460. $86 = ($85|0)<(0);
  16461. $87 = $86 << 31 >> 31;
  16462. $88 = $0;
  16463. $89 = $88;
  16464. HEAP32[$89>>2] = $85;
  16465. $90 = (($88) + 4)|0;
  16466. $91 = $90;
  16467. HEAP32[$91>>2] = $87;
  16468. break L1;
  16469. break;
  16470. }
  16471. case 16: {
  16472. $arglist_current20 = HEAP32[$2>>2]|0;
  16473. $92 = $arglist_current20;
  16474. $93 = ((0) + 4|0);
  16475. $expanded77 = $93;
  16476. $expanded76 = (($expanded77) - 1)|0;
  16477. $94 = (($92) + ($expanded76))|0;
  16478. $95 = ((0) + 4|0);
  16479. $expanded81 = $95;
  16480. $expanded80 = (($expanded81) - 1)|0;
  16481. $expanded79 = $expanded80 ^ -1;
  16482. $96 = $94 & $expanded79;
  16483. $97 = $96;
  16484. $98 = HEAP32[$97>>2]|0;
  16485. $arglist_next21 = ((($97)) + 4|0);
  16486. HEAP32[$2>>2] = $arglist_next21;
  16487. $$mask = $98 & 255;
  16488. $99 = $0;
  16489. $100 = $99;
  16490. HEAP32[$100>>2] = $$mask;
  16491. $101 = (($99) + 4)|0;
  16492. $102 = $101;
  16493. HEAP32[$102>>2] = 0;
  16494. break L1;
  16495. break;
  16496. }
  16497. case 17: {
  16498. $arglist_current23 = HEAP32[$2>>2]|0;
  16499. $103 = $arglist_current23;
  16500. $104 = ((0) + 8|0);
  16501. $expanded84 = $104;
  16502. $expanded83 = (($expanded84) - 1)|0;
  16503. $105 = (($103) + ($expanded83))|0;
  16504. $106 = ((0) + 8|0);
  16505. $expanded88 = $106;
  16506. $expanded87 = (($expanded88) - 1)|0;
  16507. $expanded86 = $expanded87 ^ -1;
  16508. $107 = $105 & $expanded86;
  16509. $108 = $107;
  16510. $109 = +HEAPF64[$108>>3];
  16511. $arglist_next24 = ((($108)) + 8|0);
  16512. HEAP32[$2>>2] = $arglist_next24;
  16513. HEAPF64[$0>>3] = $109;
  16514. break L1;
  16515. break;
  16516. }
  16517. case 18: {
  16518. $arglist_current26 = HEAP32[$2>>2]|0;
  16519. $110 = $arglist_current26;
  16520. $111 = ((0) + 8|0);
  16521. $expanded91 = $111;
  16522. $expanded90 = (($expanded91) - 1)|0;
  16523. $112 = (($110) + ($expanded90))|0;
  16524. $113 = ((0) + 8|0);
  16525. $expanded95 = $113;
  16526. $expanded94 = (($expanded95) - 1)|0;
  16527. $expanded93 = $expanded94 ^ -1;
  16528. $114 = $112 & $expanded93;
  16529. $115 = $114;
  16530. $116 = +HEAPF64[$115>>3];
  16531. $arglist_next27 = ((($115)) + 8|0);
  16532. HEAP32[$2>>2] = $arglist_next27;
  16533. HEAPF64[$0>>3] = $116;
  16534. break L1;
  16535. break;
  16536. }
  16537. default: {
  16538. break L1;
  16539. }
  16540. }
  16541. } while(0);
  16542. }
  16543. } while(0);
  16544. return;
  16545. }
  16546. function _fmt_x($0,$1,$2,$3) {
  16547. $0 = $0|0;
  16548. $1 = $1|0;
  16549. $2 = $2|0;
  16550. $3 = $3|0;
  16551. var $$05$lcssa = 0, $$056 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0;
  16552. var sp = 0;
  16553. sp = STACKTOP;
  16554. $4 = ($0|0)==(0);
  16555. $5 = ($1|0)==(0);
  16556. $6 = $4 & $5;
  16557. if ($6) {
  16558. $$05$lcssa = $2;
  16559. } else {
  16560. $$056 = $2;$15 = $1;$8 = $0;
  16561. while(1) {
  16562. $7 = $8 & 15;
  16563. $9 = (12160 + ($7)|0);
  16564. $10 = HEAP8[$9>>0]|0;
  16565. $11 = $10&255;
  16566. $12 = $11 | $3;
  16567. $13 = $12&255;
  16568. $14 = ((($$056)) + -1|0);
  16569. HEAP8[$14>>0] = $13;
  16570. $16 = (_bitshift64Lshr(($8|0),($15|0),4)|0);
  16571. $17 = tempRet0;
  16572. $18 = ($16|0)==(0);
  16573. $19 = ($17|0)==(0);
  16574. $20 = $18 & $19;
  16575. if ($20) {
  16576. $$05$lcssa = $14;
  16577. break;
  16578. } else {
  16579. $$056 = $14;$15 = $17;$8 = $16;
  16580. }
  16581. }
  16582. }
  16583. return ($$05$lcssa|0);
  16584. }
  16585. function _fmt_o($0,$1,$2) {
  16586. $0 = $0|0;
  16587. $1 = $1|0;
  16588. $2 = $2|0;
  16589. var $$0$lcssa = 0, $$06 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  16590. sp = STACKTOP;
  16591. $3 = ($0|0)==(0);
  16592. $4 = ($1|0)==(0);
  16593. $5 = $3 & $4;
  16594. if ($5) {
  16595. $$0$lcssa = $2;
  16596. } else {
  16597. $$06 = $2;$11 = $1;$7 = $0;
  16598. while(1) {
  16599. $6 = $7&255;
  16600. $8 = $6 & 7;
  16601. $9 = $8 | 48;
  16602. $10 = ((($$06)) + -1|0);
  16603. HEAP8[$10>>0] = $9;
  16604. $12 = (_bitshift64Lshr(($7|0),($11|0),3)|0);
  16605. $13 = tempRet0;
  16606. $14 = ($12|0)==(0);
  16607. $15 = ($13|0)==(0);
  16608. $16 = $14 & $15;
  16609. if ($16) {
  16610. $$0$lcssa = $10;
  16611. break;
  16612. } else {
  16613. $$06 = $10;$11 = $13;$7 = $12;
  16614. }
  16615. }
  16616. }
  16617. return ($$0$lcssa|0);
  16618. }
  16619. function _fmt_u($0,$1,$2) {
  16620. $0 = $0|0;
  16621. $1 = $1|0;
  16622. $2 = $2|0;
  16623. var $$010$lcssa$off0 = 0, $$012 = 0, $$09$lcssa = 0, $$0914 = 0, $$1$lcssa = 0, $$111 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0;
  16624. var $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  16625. sp = STACKTOP;
  16626. $3 = ($1>>>0)>(0);
  16627. $4 = ($0>>>0)>(4294967295);
  16628. $5 = ($1|0)==(0);
  16629. $6 = $5 & $4;
  16630. $7 = $3 | $6;
  16631. if ($7) {
  16632. $$0914 = $2;$8 = $0;$9 = $1;
  16633. while(1) {
  16634. $10 = (___uremdi3(($8|0),($9|0),10,0)|0);
  16635. $11 = tempRet0;
  16636. $12 = $10&255;
  16637. $13 = $12 | 48;
  16638. $14 = ((($$0914)) + -1|0);
  16639. HEAP8[$14>>0] = $13;
  16640. $15 = (___udivdi3(($8|0),($9|0),10,0)|0);
  16641. $16 = tempRet0;
  16642. $17 = ($9>>>0)>(9);
  16643. $18 = ($8>>>0)>(4294967295);
  16644. $19 = ($9|0)==(9);
  16645. $20 = $19 & $18;
  16646. $21 = $17 | $20;
  16647. if ($21) {
  16648. $$0914 = $14;$8 = $15;$9 = $16;
  16649. } else {
  16650. break;
  16651. }
  16652. }
  16653. $$010$lcssa$off0 = $15;$$09$lcssa = $14;
  16654. } else {
  16655. $$010$lcssa$off0 = $0;$$09$lcssa = $2;
  16656. }
  16657. $22 = ($$010$lcssa$off0|0)==(0);
  16658. if ($22) {
  16659. $$1$lcssa = $$09$lcssa;
  16660. } else {
  16661. $$012 = $$010$lcssa$off0;$$111 = $$09$lcssa;
  16662. while(1) {
  16663. $23 = (($$012>>>0) % 10)&-1;
  16664. $24 = $23 | 48;
  16665. $25 = $24&255;
  16666. $26 = ((($$111)) + -1|0);
  16667. HEAP8[$26>>0] = $25;
  16668. $27 = (($$012>>>0) / 10)&-1;
  16669. $28 = ($$012>>>0)<(10);
  16670. if ($28) {
  16671. $$1$lcssa = $26;
  16672. break;
  16673. } else {
  16674. $$012 = $27;$$111 = $26;
  16675. }
  16676. }
  16677. }
  16678. return ($$1$lcssa|0);
  16679. }
  16680. function _strerror($0) {
  16681. $0 = $0|0;
  16682. var $1 = 0, $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0;
  16683. sp = STACKTOP;
  16684. $1 = (___pthread_self_105()|0);
  16685. $2 = ((($1)) + 188|0);
  16686. $3 = HEAP32[$2>>2]|0;
  16687. $4 = (___strerror_l($0,$3)|0);
  16688. return ($4|0);
  16689. }
  16690. function _memchr($0,$1,$2) {
  16691. $0 = $0|0;
  16692. $1 = $1|0;
  16693. $2 = $2|0;
  16694. var $$0$lcssa = 0, $$035$lcssa = 0, $$035$lcssa65 = 0, $$03555 = 0, $$036$lcssa = 0, $$036$lcssa64 = 0, $$03654 = 0, $$046 = 0, $$137$lcssa = 0, $$13745 = 0, $$140 = 0, $$2 = 0, $$23839 = 0, $$3 = 0, $$lcssa = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0;
  16695. var $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 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;
  16696. var $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond53 = 0, label = 0, sp = 0;
  16697. sp = STACKTOP;
  16698. $3 = $1 & 255;
  16699. $4 = $0;
  16700. $5 = $4 & 3;
  16701. $6 = ($5|0)!=(0);
  16702. $7 = ($2|0)!=(0);
  16703. $or$cond53 = $7 & $6;
  16704. L1: do {
  16705. if ($or$cond53) {
  16706. $8 = $1&255;
  16707. $$03555 = $0;$$03654 = $2;
  16708. while(1) {
  16709. $9 = HEAP8[$$03555>>0]|0;
  16710. $10 = ($9<<24>>24)==($8<<24>>24);
  16711. if ($10) {
  16712. $$035$lcssa65 = $$03555;$$036$lcssa64 = $$03654;
  16713. label = 6;
  16714. break L1;
  16715. }
  16716. $11 = ((($$03555)) + 1|0);
  16717. $12 = (($$03654) + -1)|0;
  16718. $13 = $11;
  16719. $14 = $13 & 3;
  16720. $15 = ($14|0)!=(0);
  16721. $16 = ($12|0)!=(0);
  16722. $or$cond = $16 & $15;
  16723. if ($or$cond) {
  16724. $$03555 = $11;$$03654 = $12;
  16725. } else {
  16726. $$035$lcssa = $11;$$036$lcssa = $12;$$lcssa = $16;
  16727. label = 5;
  16728. break;
  16729. }
  16730. }
  16731. } else {
  16732. $$035$lcssa = $0;$$036$lcssa = $2;$$lcssa = $7;
  16733. label = 5;
  16734. }
  16735. } while(0);
  16736. if ((label|0) == 5) {
  16737. if ($$lcssa) {
  16738. $$035$lcssa65 = $$035$lcssa;$$036$lcssa64 = $$036$lcssa;
  16739. label = 6;
  16740. } else {
  16741. $$2 = $$035$lcssa;$$3 = 0;
  16742. }
  16743. }
  16744. L8: do {
  16745. if ((label|0) == 6) {
  16746. $17 = HEAP8[$$035$lcssa65>>0]|0;
  16747. $18 = $1&255;
  16748. $19 = ($17<<24>>24)==($18<<24>>24);
  16749. if ($19) {
  16750. $$2 = $$035$lcssa65;$$3 = $$036$lcssa64;
  16751. } else {
  16752. $20 = Math_imul($3, 16843009)|0;
  16753. $21 = ($$036$lcssa64>>>0)>(3);
  16754. L11: do {
  16755. if ($21) {
  16756. $$046 = $$035$lcssa65;$$13745 = $$036$lcssa64;
  16757. while(1) {
  16758. $22 = HEAP32[$$046>>2]|0;
  16759. $23 = $22 ^ $20;
  16760. $24 = (($23) + -16843009)|0;
  16761. $25 = $23 & -2139062144;
  16762. $26 = $25 ^ -2139062144;
  16763. $27 = $26 & $24;
  16764. $28 = ($27|0)==(0);
  16765. if (!($28)) {
  16766. break;
  16767. }
  16768. $29 = ((($$046)) + 4|0);
  16769. $30 = (($$13745) + -4)|0;
  16770. $31 = ($30>>>0)>(3);
  16771. if ($31) {
  16772. $$046 = $29;$$13745 = $30;
  16773. } else {
  16774. $$0$lcssa = $29;$$137$lcssa = $30;
  16775. label = 11;
  16776. break L11;
  16777. }
  16778. }
  16779. $$140 = $$046;$$23839 = $$13745;
  16780. } else {
  16781. $$0$lcssa = $$035$lcssa65;$$137$lcssa = $$036$lcssa64;
  16782. label = 11;
  16783. }
  16784. } while(0);
  16785. if ((label|0) == 11) {
  16786. $32 = ($$137$lcssa|0)==(0);
  16787. if ($32) {
  16788. $$2 = $$0$lcssa;$$3 = 0;
  16789. break;
  16790. } else {
  16791. $$140 = $$0$lcssa;$$23839 = $$137$lcssa;
  16792. }
  16793. }
  16794. while(1) {
  16795. $33 = HEAP8[$$140>>0]|0;
  16796. $34 = ($33<<24>>24)==($18<<24>>24);
  16797. if ($34) {
  16798. $$2 = $$140;$$3 = $$23839;
  16799. break L8;
  16800. }
  16801. $35 = ((($$140)) + 1|0);
  16802. $36 = (($$23839) + -1)|0;
  16803. $37 = ($36|0)==(0);
  16804. if ($37) {
  16805. $$2 = $35;$$3 = 0;
  16806. break;
  16807. } else {
  16808. $$140 = $35;$$23839 = $36;
  16809. }
  16810. }
  16811. }
  16812. }
  16813. } while(0);
  16814. $38 = ($$3|0)!=(0);
  16815. $39 = $38 ? $$2 : 0;
  16816. return ($39|0);
  16817. }
  16818. function _pad_674($0,$1,$2,$3,$4) {
  16819. $0 = $0|0;
  16820. $1 = $1|0;
  16821. $2 = $2|0;
  16822. $3 = $3|0;
  16823. $4 = $4|0;
  16824. var $$0$lcssa = 0, $$011 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, label = 0, sp = 0;
  16825. sp = STACKTOP;
  16826. STACKTOP = STACKTOP + 256|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(256|0);
  16827. $5 = sp;
  16828. $6 = $4 & 73728;
  16829. $7 = ($6|0)==(0);
  16830. $8 = ($2|0)>($3|0);
  16831. $or$cond = $8 & $7;
  16832. if ($or$cond) {
  16833. $9 = (($2) - ($3))|0;
  16834. $10 = ($9>>>0)<(256);
  16835. $11 = $10 ? $9 : 256;
  16836. _memset(($5|0),($1|0),($11|0))|0;
  16837. $12 = ($9>>>0)>(255);
  16838. if ($12) {
  16839. $13 = (($2) - ($3))|0;
  16840. $$011 = $9;
  16841. while(1) {
  16842. _out($0,$5,256);
  16843. $14 = (($$011) + -256)|0;
  16844. $15 = ($14>>>0)>(255);
  16845. if ($15) {
  16846. $$011 = $14;
  16847. } else {
  16848. break;
  16849. }
  16850. }
  16851. $16 = $13 & 255;
  16852. $$0$lcssa = $16;
  16853. } else {
  16854. $$0$lcssa = $9;
  16855. }
  16856. _out($0,$5,$$0$lcssa);
  16857. }
  16858. STACKTOP = sp;return;
  16859. }
  16860. function _wctomb($0,$1) {
  16861. $0 = $0|0;
  16862. $1 = $1|0;
  16863. var $$0 = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
  16864. sp = STACKTOP;
  16865. $2 = ($0|0)==(0|0);
  16866. if ($2) {
  16867. $$0 = 0;
  16868. } else {
  16869. $3 = (_wcrtomb($0,$1,0)|0);
  16870. $$0 = $3;
  16871. }
  16872. return ($$0|0);
  16873. }
  16874. function _fmt_fp($0,$1,$2,$3,$4,$5) {
  16875. $0 = $0|0;
  16876. $1 = +$1;
  16877. $2 = $2|0;
  16878. $3 = $3|0;
  16879. $4 = $4|0;
  16880. $5 = $5|0;
  16881. var $$ = 0, $$$ = 0, $$$$559 = 0.0, $$$3484 = 0, $$$3484691 = 0, $$$3484692 = 0, $$$3501 = 0, $$$4502 = 0, $$$542 = 0.0, $$$559 = 0.0, $$0 = 0, $$0463$lcssa = 0, $$0463584 = 0, $$0464594 = 0, $$0471 = 0.0, $$0479 = 0, $$0487642 = 0, $$0488 = 0, $$0488653 = 0, $$0488655 = 0;
  16882. var $$0496$$9 = 0, $$0497654 = 0, $$0498 = 0, $$0509582 = 0.0, $$0510 = 0, $$0511 = 0, $$0514637 = 0, $$0520 = 0, $$0521 = 0, $$0521$ = 0, $$0523 = 0, $$0525 = 0, $$0527 = 0, $$0527629 = 0, $$0527631 = 0, $$0530636 = 0, $$1465 = 0, $$1467 = 0.0, $$1469 = 0.0, $$1472 = 0.0;
  16883. var $$1480 = 0, $$1482$lcssa = 0, $$1482661 = 0, $$1489641 = 0, $$1499$lcssa = 0, $$1499660 = 0, $$1508583 = 0, $$1512$lcssa = 0, $$1512607 = 0, $$1515 = 0, $$1524 = 0, $$1526 = 0, $$1528614 = 0, $$1531$lcssa = 0, $$1531630 = 0, $$1598 = 0, $$2 = 0, $$2473 = 0.0, $$2476 = 0, $$2476$$547 = 0;
  16884. var $$2476$$549 = 0, $$2483$ph = 0, $$2500 = 0, $$2513 = 0, $$2516618 = 0, $$2529 = 0, $$2532617 = 0, $$3 = 0.0, $$3477 = 0, $$3484$lcssa = 0, $$3484648 = 0, $$3501$lcssa = 0, $$3501647 = 0, $$3533613 = 0, $$4 = 0.0, $$4478$lcssa = 0, $$4478590 = 0, $$4492 = 0, $$4502 = 0, $$4518 = 0;
  16885. var $$5$lcssa = 0, $$534$ = 0, $$539 = 0, $$539$ = 0, $$542 = 0.0, $$546 = 0, $$548 = 0, $$5486$lcssa = 0, $$5486623 = 0, $$5493597 = 0, $$5519$ph = 0, $$555 = 0, $$556 = 0, $$559 = 0.0, $$5602 = 0, $$6 = 0, $$6494589 = 0, $$7495601 = 0, $$7505 = 0, $$7505$ = 0;
  16886. var $$7505$ph = 0, $$8 = 0, $$9$ph = 0, $$lcssa673 = 0, $$neg = 0, $$neg567 = 0, $$pn = 0, $$pn566 = 0, $$pr = 0, $$pr564 = 0, $$pre = 0, $$pre$phi690Z2D = 0, $$pre689 = 0, $$sink545$lcssa = 0, $$sink545622 = 0, $$sink562 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0;
  16887. var $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0.0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0.0, $117 = 0.0, $118 = 0.0, $119 = 0, $12 = 0, $120 = 0;
  16888. var $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, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0;
  16889. var $14 = 0.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, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0;
  16890. var $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, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0;
  16891. var $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, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0;
  16892. var $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 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;
  16893. var $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, $225 = 0, $226 = 0, $227 = 0, $228 = 0.0, $229 = 0.0, $23 = 0;
  16894. var $230 = 0, $231 = 0.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, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0;
  16895. var $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, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0;
  16896. var $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, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0;
  16897. var $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, $298 = 0, $299 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0;
  16898. var $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, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0;
  16899. var $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, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0;
  16900. var $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0.0, $350 = 0, $351 = 0, $352 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $357 = 0;
  16901. var $358 = 0, $359 = 0, $36 = 0.0, $360 = 0, $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;
  16902. var $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, $388 = 0, $39 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0;
  16903. var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $50 = 0, $51 = 0.0, $52 = 0, $53 = 0, $54 = 0, $55 = 0.0, $56 = 0.0, $57 = 0.0, $58 = 0.0, $59 = 0.0, $6 = 0, $60 = 0.0, $61 = 0, $62 = 0, $63 = 0;
  16904. 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;
  16905. var $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0.0, $88 = 0.0, $89 = 0.0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $exitcond = 0;
  16906. var $narrow = 0, $not$ = 0, $notlhs = 0, $notrhs = 0, $or$cond = 0, $or$cond3$not = 0, $or$cond537 = 0, $or$cond541 = 0, $or$cond544 = 0, $or$cond554 = 0, $or$cond6 = 0, $scevgep684 = 0, $scevgep684685 = 0, label = 0, sp = 0;
  16907. sp = STACKTOP;
  16908. STACKTOP = STACKTOP + 560|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(560|0);
  16909. $6 = sp + 8|0;
  16910. $7 = sp;
  16911. $8 = sp + 524|0;
  16912. $9 = $8;
  16913. $10 = sp + 512|0;
  16914. HEAP32[$7>>2] = 0;
  16915. $11 = ((($10)) + 12|0);
  16916. (___DOUBLE_BITS_675($1)|0);
  16917. $12 = tempRet0;
  16918. $13 = ($12|0)<(0);
  16919. if ($13) {
  16920. $14 = -$1;
  16921. $$0471 = $14;$$0520 = 1;$$0521 = 12125;
  16922. } else {
  16923. $15 = $4 & 2048;
  16924. $16 = ($15|0)==(0);
  16925. $17 = $4 & 1;
  16926. $18 = ($17|0)==(0);
  16927. $$ = $18 ? (12126) : (12131);
  16928. $$$ = $16 ? $$ : (12128);
  16929. $19 = $4 & 2049;
  16930. $narrow = ($19|0)!=(0);
  16931. $$534$ = $narrow&1;
  16932. $$0471 = $1;$$0520 = $$534$;$$0521 = $$$;
  16933. }
  16934. (___DOUBLE_BITS_675($$0471)|0);
  16935. $20 = tempRet0;
  16936. $21 = $20 & 2146435072;
  16937. $22 = ($21>>>0)<(2146435072);
  16938. $23 = (0)<(0);
  16939. $24 = ($21|0)==(2146435072);
  16940. $25 = $24 & $23;
  16941. $26 = $22 | $25;
  16942. do {
  16943. if ($26) {
  16944. $35 = (+_frexpl($$0471,$7));
  16945. $36 = $35 * 2.0;
  16946. $37 = $36 != 0.0;
  16947. if ($37) {
  16948. $38 = HEAP32[$7>>2]|0;
  16949. $39 = (($38) + -1)|0;
  16950. HEAP32[$7>>2] = $39;
  16951. }
  16952. $40 = $5 | 32;
  16953. $41 = ($40|0)==(97);
  16954. if ($41) {
  16955. $42 = $5 & 32;
  16956. $43 = ($42|0)==(0);
  16957. $44 = ((($$0521)) + 9|0);
  16958. $$0521$ = $43 ? $$0521 : $44;
  16959. $45 = $$0520 | 2;
  16960. $46 = ($3>>>0)>(11);
  16961. $47 = (12 - ($3))|0;
  16962. $48 = ($47|0)==(0);
  16963. $49 = $46 | $48;
  16964. do {
  16965. if ($49) {
  16966. $$1472 = $36;
  16967. } else {
  16968. $$0509582 = 8.0;$$1508583 = $47;
  16969. while(1) {
  16970. $50 = (($$1508583) + -1)|0;
  16971. $51 = $$0509582 * 16.0;
  16972. $52 = ($50|0)==(0);
  16973. if ($52) {
  16974. break;
  16975. } else {
  16976. $$0509582 = $51;$$1508583 = $50;
  16977. }
  16978. }
  16979. $53 = HEAP8[$$0521$>>0]|0;
  16980. $54 = ($53<<24>>24)==(45);
  16981. if ($54) {
  16982. $55 = -$36;
  16983. $56 = $55 - $51;
  16984. $57 = $51 + $56;
  16985. $58 = -$57;
  16986. $$1472 = $58;
  16987. break;
  16988. } else {
  16989. $59 = $36 + $51;
  16990. $60 = $59 - $51;
  16991. $$1472 = $60;
  16992. break;
  16993. }
  16994. }
  16995. } while(0);
  16996. $61 = HEAP32[$7>>2]|0;
  16997. $62 = ($61|0)<(0);
  16998. $63 = (0 - ($61))|0;
  16999. $64 = $62 ? $63 : $61;
  17000. $65 = ($64|0)<(0);
  17001. $66 = $65 << 31 >> 31;
  17002. $67 = (_fmt_u($64,$66,$11)|0);
  17003. $68 = ($67|0)==($11|0);
  17004. if ($68) {
  17005. $69 = ((($10)) + 11|0);
  17006. HEAP8[$69>>0] = 48;
  17007. $$0511 = $69;
  17008. } else {
  17009. $$0511 = $67;
  17010. }
  17011. $70 = $61 >> 31;
  17012. $71 = $70 & 2;
  17013. $72 = (($71) + 43)|0;
  17014. $73 = $72&255;
  17015. $74 = ((($$0511)) + -1|0);
  17016. HEAP8[$74>>0] = $73;
  17017. $75 = (($5) + 15)|0;
  17018. $76 = $75&255;
  17019. $77 = ((($$0511)) + -2|0);
  17020. HEAP8[$77>>0] = $76;
  17021. $notrhs = ($3|0)<(1);
  17022. $78 = $4 & 8;
  17023. $79 = ($78|0)==(0);
  17024. $$0523 = $8;$$2473 = $$1472;
  17025. while(1) {
  17026. $80 = (~~(($$2473)));
  17027. $81 = (12160 + ($80)|0);
  17028. $82 = HEAP8[$81>>0]|0;
  17029. $83 = $82&255;
  17030. $84 = $83 | $42;
  17031. $85 = $84&255;
  17032. $86 = ((($$0523)) + 1|0);
  17033. HEAP8[$$0523>>0] = $85;
  17034. $87 = (+($80|0));
  17035. $88 = $$2473 - $87;
  17036. $89 = $88 * 16.0;
  17037. $90 = $86;
  17038. $91 = (($90) - ($9))|0;
  17039. $92 = ($91|0)==(1);
  17040. if ($92) {
  17041. $notlhs = $89 == 0.0;
  17042. $or$cond3$not = $notrhs & $notlhs;
  17043. $or$cond = $79 & $or$cond3$not;
  17044. if ($or$cond) {
  17045. $$1524 = $86;
  17046. } else {
  17047. $93 = ((($$0523)) + 2|0);
  17048. HEAP8[$86>>0] = 46;
  17049. $$1524 = $93;
  17050. }
  17051. } else {
  17052. $$1524 = $86;
  17053. }
  17054. $94 = $89 != 0.0;
  17055. if ($94) {
  17056. $$0523 = $$1524;$$2473 = $89;
  17057. } else {
  17058. break;
  17059. }
  17060. }
  17061. $95 = ($3|0)!=(0);
  17062. $96 = $77;
  17063. $97 = $11;
  17064. $98 = $$1524;
  17065. $99 = (($98) - ($9))|0;
  17066. $100 = (($97) - ($96))|0;
  17067. $101 = (($99) + -2)|0;
  17068. $102 = ($101|0)<($3|0);
  17069. $or$cond537 = $95 & $102;
  17070. $103 = (($3) + 2)|0;
  17071. $$pn = $or$cond537 ? $103 : $99;
  17072. $$0525 = (($100) + ($45))|0;
  17073. $104 = (($$0525) + ($$pn))|0;
  17074. _pad_674($0,32,$2,$104,$4);
  17075. _out($0,$$0521$,$45);
  17076. $105 = $4 ^ 65536;
  17077. _pad_674($0,48,$2,$104,$105);
  17078. _out($0,$8,$99);
  17079. $106 = (($$pn) - ($99))|0;
  17080. _pad_674($0,48,$106,0,0);
  17081. _out($0,$77,$100);
  17082. $107 = $4 ^ 8192;
  17083. _pad_674($0,32,$2,$104,$107);
  17084. $$sink562 = $104;
  17085. break;
  17086. }
  17087. $108 = ($3|0)<(0);
  17088. $$539 = $108 ? 6 : $3;
  17089. if ($37) {
  17090. $109 = $36 * 268435456.0;
  17091. $110 = HEAP32[$7>>2]|0;
  17092. $111 = (($110) + -28)|0;
  17093. HEAP32[$7>>2] = $111;
  17094. $$3 = $109;$$pr = $111;
  17095. } else {
  17096. $$pre = HEAP32[$7>>2]|0;
  17097. $$3 = $36;$$pr = $$pre;
  17098. }
  17099. $112 = ($$pr|0)<(0);
  17100. $113 = ((($6)) + 288|0);
  17101. $$556 = $112 ? $6 : $113;
  17102. $$0498 = $$556;$$4 = $$3;
  17103. while(1) {
  17104. $114 = (~~(($$4))>>>0);
  17105. HEAP32[$$0498>>2] = $114;
  17106. $115 = ((($$0498)) + 4|0);
  17107. $116 = (+($114>>>0));
  17108. $117 = $$4 - $116;
  17109. $118 = $117 * 1.0E+9;
  17110. $119 = $118 != 0.0;
  17111. if ($119) {
  17112. $$0498 = $115;$$4 = $118;
  17113. } else {
  17114. break;
  17115. }
  17116. }
  17117. $120 = ($$pr|0)>(0);
  17118. if ($120) {
  17119. $$1482661 = $$556;$$1499660 = $115;$122 = $$pr;
  17120. while(1) {
  17121. $121 = ($122|0)<(29);
  17122. $123 = $121 ? $122 : 29;
  17123. $$0488653 = ((($$1499660)) + -4|0);
  17124. $124 = ($$0488653>>>0)<($$1482661>>>0);
  17125. if ($124) {
  17126. $$2483$ph = $$1482661;
  17127. } else {
  17128. $$0488655 = $$0488653;$$0497654 = 0;
  17129. while(1) {
  17130. $125 = HEAP32[$$0488655>>2]|0;
  17131. $126 = (_bitshift64Shl(($125|0),0,($123|0))|0);
  17132. $127 = tempRet0;
  17133. $128 = (_i64Add(($126|0),($127|0),($$0497654|0),0)|0);
  17134. $129 = tempRet0;
  17135. $130 = (___uremdi3(($128|0),($129|0),1000000000,0)|0);
  17136. $131 = tempRet0;
  17137. HEAP32[$$0488655>>2] = $130;
  17138. $132 = (___udivdi3(($128|0),($129|0),1000000000,0)|0);
  17139. $133 = tempRet0;
  17140. $$0488 = ((($$0488655)) + -4|0);
  17141. $134 = ($$0488>>>0)<($$1482661>>>0);
  17142. if ($134) {
  17143. break;
  17144. } else {
  17145. $$0488655 = $$0488;$$0497654 = $132;
  17146. }
  17147. }
  17148. $135 = ($132|0)==(0);
  17149. if ($135) {
  17150. $$2483$ph = $$1482661;
  17151. } else {
  17152. $136 = ((($$1482661)) + -4|0);
  17153. HEAP32[$136>>2] = $132;
  17154. $$2483$ph = $136;
  17155. }
  17156. }
  17157. $$2500 = $$1499660;
  17158. while(1) {
  17159. $137 = ($$2500>>>0)>($$2483$ph>>>0);
  17160. if (!($137)) {
  17161. break;
  17162. }
  17163. $138 = ((($$2500)) + -4|0);
  17164. $139 = HEAP32[$138>>2]|0;
  17165. $140 = ($139|0)==(0);
  17166. if ($140) {
  17167. $$2500 = $138;
  17168. } else {
  17169. break;
  17170. }
  17171. }
  17172. $141 = HEAP32[$7>>2]|0;
  17173. $142 = (($141) - ($123))|0;
  17174. HEAP32[$7>>2] = $142;
  17175. $143 = ($142|0)>(0);
  17176. if ($143) {
  17177. $$1482661 = $$2483$ph;$$1499660 = $$2500;$122 = $142;
  17178. } else {
  17179. $$1482$lcssa = $$2483$ph;$$1499$lcssa = $$2500;$$pr564 = $142;
  17180. break;
  17181. }
  17182. }
  17183. } else {
  17184. $$1482$lcssa = $$556;$$1499$lcssa = $115;$$pr564 = $$pr;
  17185. }
  17186. $144 = ($$pr564|0)<(0);
  17187. if ($144) {
  17188. $145 = (($$539) + 25)|0;
  17189. $146 = (($145|0) / 9)&-1;
  17190. $147 = (($146) + 1)|0;
  17191. $148 = ($40|0)==(102);
  17192. $$3484648 = $$1482$lcssa;$$3501647 = $$1499$lcssa;$150 = $$pr564;
  17193. while(1) {
  17194. $149 = (0 - ($150))|0;
  17195. $151 = ($149|0)<(9);
  17196. $152 = $151 ? $149 : 9;
  17197. $153 = ($$3484648>>>0)<($$3501647>>>0);
  17198. if ($153) {
  17199. $157 = 1 << $152;
  17200. $158 = (($157) + -1)|0;
  17201. $159 = 1000000000 >>> $152;
  17202. $$0487642 = 0;$$1489641 = $$3484648;
  17203. while(1) {
  17204. $160 = HEAP32[$$1489641>>2]|0;
  17205. $161 = $160 & $158;
  17206. $162 = $160 >>> $152;
  17207. $163 = (($162) + ($$0487642))|0;
  17208. HEAP32[$$1489641>>2] = $163;
  17209. $164 = Math_imul($161, $159)|0;
  17210. $165 = ((($$1489641)) + 4|0);
  17211. $166 = ($165>>>0)<($$3501647>>>0);
  17212. if ($166) {
  17213. $$0487642 = $164;$$1489641 = $165;
  17214. } else {
  17215. break;
  17216. }
  17217. }
  17218. $167 = HEAP32[$$3484648>>2]|0;
  17219. $168 = ($167|0)==(0);
  17220. $169 = ((($$3484648)) + 4|0);
  17221. $$$3484 = $168 ? $169 : $$3484648;
  17222. $170 = ($164|0)==(0);
  17223. if ($170) {
  17224. $$$3484692 = $$$3484;$$4502 = $$3501647;
  17225. } else {
  17226. $171 = ((($$3501647)) + 4|0);
  17227. HEAP32[$$3501647>>2] = $164;
  17228. $$$3484692 = $$$3484;$$4502 = $171;
  17229. }
  17230. } else {
  17231. $154 = HEAP32[$$3484648>>2]|0;
  17232. $155 = ($154|0)==(0);
  17233. $156 = ((($$3484648)) + 4|0);
  17234. $$$3484691 = $155 ? $156 : $$3484648;
  17235. $$$3484692 = $$$3484691;$$4502 = $$3501647;
  17236. }
  17237. $172 = $148 ? $$556 : $$$3484692;
  17238. $173 = $$4502;
  17239. $174 = $172;
  17240. $175 = (($173) - ($174))|0;
  17241. $176 = $175 >> 2;
  17242. $177 = ($176|0)>($147|0);
  17243. $178 = (($172) + ($147<<2)|0);
  17244. $$$4502 = $177 ? $178 : $$4502;
  17245. $179 = HEAP32[$7>>2]|0;
  17246. $180 = (($179) + ($152))|0;
  17247. HEAP32[$7>>2] = $180;
  17248. $181 = ($180|0)<(0);
  17249. if ($181) {
  17250. $$3484648 = $$$3484692;$$3501647 = $$$4502;$150 = $180;
  17251. } else {
  17252. $$3484$lcssa = $$$3484692;$$3501$lcssa = $$$4502;
  17253. break;
  17254. }
  17255. }
  17256. } else {
  17257. $$3484$lcssa = $$1482$lcssa;$$3501$lcssa = $$1499$lcssa;
  17258. }
  17259. $182 = ($$3484$lcssa>>>0)<($$3501$lcssa>>>0);
  17260. $183 = $$556;
  17261. if ($182) {
  17262. $184 = $$3484$lcssa;
  17263. $185 = (($183) - ($184))|0;
  17264. $186 = $185 >> 2;
  17265. $187 = ($186*9)|0;
  17266. $188 = HEAP32[$$3484$lcssa>>2]|0;
  17267. $189 = ($188>>>0)<(10);
  17268. if ($189) {
  17269. $$1515 = $187;
  17270. } else {
  17271. $$0514637 = $187;$$0530636 = 10;
  17272. while(1) {
  17273. $190 = ($$0530636*10)|0;
  17274. $191 = (($$0514637) + 1)|0;
  17275. $192 = ($188>>>0)<($190>>>0);
  17276. if ($192) {
  17277. $$1515 = $191;
  17278. break;
  17279. } else {
  17280. $$0514637 = $191;$$0530636 = $190;
  17281. }
  17282. }
  17283. }
  17284. } else {
  17285. $$1515 = 0;
  17286. }
  17287. $193 = ($40|0)!=(102);
  17288. $194 = $193 ? $$1515 : 0;
  17289. $195 = (($$539) - ($194))|0;
  17290. $196 = ($40|0)==(103);
  17291. $197 = ($$539|0)!=(0);
  17292. $198 = $197 & $196;
  17293. $$neg = $198 << 31 >> 31;
  17294. $199 = (($195) + ($$neg))|0;
  17295. $200 = $$3501$lcssa;
  17296. $201 = (($200) - ($183))|0;
  17297. $202 = $201 >> 2;
  17298. $203 = ($202*9)|0;
  17299. $204 = (($203) + -9)|0;
  17300. $205 = ($199|0)<($204|0);
  17301. if ($205) {
  17302. $206 = ((($$556)) + 4|0);
  17303. $207 = (($199) + 9216)|0;
  17304. $208 = (($207|0) / 9)&-1;
  17305. $209 = (($208) + -1024)|0;
  17306. $210 = (($206) + ($209<<2)|0);
  17307. $211 = (($207|0) % 9)&-1;
  17308. $$0527629 = (($211) + 1)|0;
  17309. $212 = ($$0527629|0)<(9);
  17310. if ($212) {
  17311. $$0527631 = $$0527629;$$1531630 = 10;
  17312. while(1) {
  17313. $213 = ($$1531630*10)|0;
  17314. $$0527 = (($$0527631) + 1)|0;
  17315. $exitcond = ($$0527|0)==(9);
  17316. if ($exitcond) {
  17317. $$1531$lcssa = $213;
  17318. break;
  17319. } else {
  17320. $$0527631 = $$0527;$$1531630 = $213;
  17321. }
  17322. }
  17323. } else {
  17324. $$1531$lcssa = 10;
  17325. }
  17326. $214 = HEAP32[$210>>2]|0;
  17327. $215 = (($214>>>0) % ($$1531$lcssa>>>0))&-1;
  17328. $216 = ($215|0)==(0);
  17329. $217 = ((($210)) + 4|0);
  17330. $218 = ($217|0)==($$3501$lcssa|0);
  17331. $or$cond541 = $218 & $216;
  17332. if ($or$cond541) {
  17333. $$4492 = $210;$$4518 = $$1515;$$8 = $$3484$lcssa;
  17334. } else {
  17335. $219 = (($214>>>0) / ($$1531$lcssa>>>0))&-1;
  17336. $220 = $219 & 1;
  17337. $221 = ($220|0)==(0);
  17338. $$542 = $221 ? 9007199254740992.0 : 9007199254740994.0;
  17339. $222 = (($$1531$lcssa|0) / 2)&-1;
  17340. $223 = ($215>>>0)<($222>>>0);
  17341. $224 = ($215|0)==($222|0);
  17342. $or$cond544 = $218 & $224;
  17343. $$559 = $or$cond544 ? 1.0 : 1.5;
  17344. $$$559 = $223 ? 0.5 : $$559;
  17345. $225 = ($$0520|0)==(0);
  17346. if ($225) {
  17347. $$1467 = $$$559;$$1469 = $$542;
  17348. } else {
  17349. $226 = HEAP8[$$0521>>0]|0;
  17350. $227 = ($226<<24>>24)==(45);
  17351. $228 = -$$542;
  17352. $229 = -$$$559;
  17353. $$$542 = $227 ? $228 : $$542;
  17354. $$$$559 = $227 ? $229 : $$$559;
  17355. $$1467 = $$$$559;$$1469 = $$$542;
  17356. }
  17357. $230 = (($214) - ($215))|0;
  17358. HEAP32[$210>>2] = $230;
  17359. $231 = $$1469 + $$1467;
  17360. $232 = $231 != $$1469;
  17361. if ($232) {
  17362. $233 = (($230) + ($$1531$lcssa))|0;
  17363. HEAP32[$210>>2] = $233;
  17364. $234 = ($233>>>0)>(999999999);
  17365. if ($234) {
  17366. $$5486623 = $$3484$lcssa;$$sink545622 = $210;
  17367. while(1) {
  17368. $235 = ((($$sink545622)) + -4|0);
  17369. HEAP32[$$sink545622>>2] = 0;
  17370. $236 = ($235>>>0)<($$5486623>>>0);
  17371. if ($236) {
  17372. $237 = ((($$5486623)) + -4|0);
  17373. HEAP32[$237>>2] = 0;
  17374. $$6 = $237;
  17375. } else {
  17376. $$6 = $$5486623;
  17377. }
  17378. $238 = HEAP32[$235>>2]|0;
  17379. $239 = (($238) + 1)|0;
  17380. HEAP32[$235>>2] = $239;
  17381. $240 = ($239>>>0)>(999999999);
  17382. if ($240) {
  17383. $$5486623 = $$6;$$sink545622 = $235;
  17384. } else {
  17385. $$5486$lcssa = $$6;$$sink545$lcssa = $235;
  17386. break;
  17387. }
  17388. }
  17389. } else {
  17390. $$5486$lcssa = $$3484$lcssa;$$sink545$lcssa = $210;
  17391. }
  17392. $241 = $$5486$lcssa;
  17393. $242 = (($183) - ($241))|0;
  17394. $243 = $242 >> 2;
  17395. $244 = ($243*9)|0;
  17396. $245 = HEAP32[$$5486$lcssa>>2]|0;
  17397. $246 = ($245>>>0)<(10);
  17398. if ($246) {
  17399. $$4492 = $$sink545$lcssa;$$4518 = $244;$$8 = $$5486$lcssa;
  17400. } else {
  17401. $$2516618 = $244;$$2532617 = 10;
  17402. while(1) {
  17403. $247 = ($$2532617*10)|0;
  17404. $248 = (($$2516618) + 1)|0;
  17405. $249 = ($245>>>0)<($247>>>0);
  17406. if ($249) {
  17407. $$4492 = $$sink545$lcssa;$$4518 = $248;$$8 = $$5486$lcssa;
  17408. break;
  17409. } else {
  17410. $$2516618 = $248;$$2532617 = $247;
  17411. }
  17412. }
  17413. }
  17414. } else {
  17415. $$4492 = $210;$$4518 = $$1515;$$8 = $$3484$lcssa;
  17416. }
  17417. }
  17418. $250 = ((($$4492)) + 4|0);
  17419. $251 = ($$3501$lcssa>>>0)>($250>>>0);
  17420. $$$3501 = $251 ? $250 : $$3501$lcssa;
  17421. $$5519$ph = $$4518;$$7505$ph = $$$3501;$$9$ph = $$8;
  17422. } else {
  17423. $$5519$ph = $$1515;$$7505$ph = $$3501$lcssa;$$9$ph = $$3484$lcssa;
  17424. }
  17425. $$7505 = $$7505$ph;
  17426. while(1) {
  17427. $252 = ($$7505>>>0)>($$9$ph>>>0);
  17428. if (!($252)) {
  17429. $$lcssa673 = 0;
  17430. break;
  17431. }
  17432. $253 = ((($$7505)) + -4|0);
  17433. $254 = HEAP32[$253>>2]|0;
  17434. $255 = ($254|0)==(0);
  17435. if ($255) {
  17436. $$7505 = $253;
  17437. } else {
  17438. $$lcssa673 = 1;
  17439. break;
  17440. }
  17441. }
  17442. $256 = (0 - ($$5519$ph))|0;
  17443. do {
  17444. if ($196) {
  17445. $not$ = $197 ^ 1;
  17446. $257 = $not$&1;
  17447. $$539$ = (($257) + ($$539))|0;
  17448. $258 = ($$539$|0)>($$5519$ph|0);
  17449. $259 = ($$5519$ph|0)>(-5);
  17450. $or$cond6 = $258 & $259;
  17451. if ($or$cond6) {
  17452. $260 = (($5) + -1)|0;
  17453. $$neg567 = (($$539$) + -1)|0;
  17454. $261 = (($$neg567) - ($$5519$ph))|0;
  17455. $$0479 = $260;$$2476 = $261;
  17456. } else {
  17457. $262 = (($5) + -2)|0;
  17458. $263 = (($$539$) + -1)|0;
  17459. $$0479 = $262;$$2476 = $263;
  17460. }
  17461. $264 = $4 & 8;
  17462. $265 = ($264|0)==(0);
  17463. if ($265) {
  17464. if ($$lcssa673) {
  17465. $266 = ((($$7505)) + -4|0);
  17466. $267 = HEAP32[$266>>2]|0;
  17467. $268 = ($267|0)==(0);
  17468. if ($268) {
  17469. $$2529 = 9;
  17470. } else {
  17471. $269 = (($267>>>0) % 10)&-1;
  17472. $270 = ($269|0)==(0);
  17473. if ($270) {
  17474. $$1528614 = 0;$$3533613 = 10;
  17475. while(1) {
  17476. $271 = ($$3533613*10)|0;
  17477. $272 = (($$1528614) + 1)|0;
  17478. $273 = (($267>>>0) % ($271>>>0))&-1;
  17479. $274 = ($273|0)==(0);
  17480. if ($274) {
  17481. $$1528614 = $272;$$3533613 = $271;
  17482. } else {
  17483. $$2529 = $272;
  17484. break;
  17485. }
  17486. }
  17487. } else {
  17488. $$2529 = 0;
  17489. }
  17490. }
  17491. } else {
  17492. $$2529 = 9;
  17493. }
  17494. $275 = $$0479 | 32;
  17495. $276 = ($275|0)==(102);
  17496. $277 = $$7505;
  17497. $278 = (($277) - ($183))|0;
  17498. $279 = $278 >> 2;
  17499. $280 = ($279*9)|0;
  17500. $281 = (($280) + -9)|0;
  17501. if ($276) {
  17502. $282 = (($281) - ($$2529))|0;
  17503. $283 = ($282|0)>(0);
  17504. $$546 = $283 ? $282 : 0;
  17505. $284 = ($$2476|0)<($$546|0);
  17506. $$2476$$547 = $284 ? $$2476 : $$546;
  17507. $$1480 = $$0479;$$3477 = $$2476$$547;$$pre$phi690Z2D = 0;
  17508. break;
  17509. } else {
  17510. $285 = (($281) + ($$5519$ph))|0;
  17511. $286 = (($285) - ($$2529))|0;
  17512. $287 = ($286|0)>(0);
  17513. $$548 = $287 ? $286 : 0;
  17514. $288 = ($$2476|0)<($$548|0);
  17515. $$2476$$549 = $288 ? $$2476 : $$548;
  17516. $$1480 = $$0479;$$3477 = $$2476$$549;$$pre$phi690Z2D = 0;
  17517. break;
  17518. }
  17519. } else {
  17520. $$1480 = $$0479;$$3477 = $$2476;$$pre$phi690Z2D = $264;
  17521. }
  17522. } else {
  17523. $$pre689 = $4 & 8;
  17524. $$1480 = $5;$$3477 = $$539;$$pre$phi690Z2D = $$pre689;
  17525. }
  17526. } while(0);
  17527. $289 = $$3477 | $$pre$phi690Z2D;
  17528. $290 = ($289|0)!=(0);
  17529. $291 = $290&1;
  17530. $292 = $$1480 | 32;
  17531. $293 = ($292|0)==(102);
  17532. if ($293) {
  17533. $294 = ($$5519$ph|0)>(0);
  17534. $295 = $294 ? $$5519$ph : 0;
  17535. $$2513 = 0;$$pn566 = $295;
  17536. } else {
  17537. $296 = ($$5519$ph|0)<(0);
  17538. $297 = $296 ? $256 : $$5519$ph;
  17539. $298 = ($297|0)<(0);
  17540. $299 = $298 << 31 >> 31;
  17541. $300 = (_fmt_u($297,$299,$11)|0);
  17542. $301 = $11;
  17543. $302 = $300;
  17544. $303 = (($301) - ($302))|0;
  17545. $304 = ($303|0)<(2);
  17546. if ($304) {
  17547. $$1512607 = $300;
  17548. while(1) {
  17549. $305 = ((($$1512607)) + -1|0);
  17550. HEAP8[$305>>0] = 48;
  17551. $306 = $305;
  17552. $307 = (($301) - ($306))|0;
  17553. $308 = ($307|0)<(2);
  17554. if ($308) {
  17555. $$1512607 = $305;
  17556. } else {
  17557. $$1512$lcssa = $305;
  17558. break;
  17559. }
  17560. }
  17561. } else {
  17562. $$1512$lcssa = $300;
  17563. }
  17564. $309 = $$5519$ph >> 31;
  17565. $310 = $309 & 2;
  17566. $311 = (($310) + 43)|0;
  17567. $312 = $311&255;
  17568. $313 = ((($$1512$lcssa)) + -1|0);
  17569. HEAP8[$313>>0] = $312;
  17570. $314 = $$1480&255;
  17571. $315 = ((($$1512$lcssa)) + -2|0);
  17572. HEAP8[$315>>0] = $314;
  17573. $316 = $315;
  17574. $317 = (($301) - ($316))|0;
  17575. $$2513 = $315;$$pn566 = $317;
  17576. }
  17577. $318 = (($$0520) + 1)|0;
  17578. $319 = (($318) + ($$3477))|0;
  17579. $$1526 = (($319) + ($291))|0;
  17580. $320 = (($$1526) + ($$pn566))|0;
  17581. _pad_674($0,32,$2,$320,$4);
  17582. _out($0,$$0521,$$0520);
  17583. $321 = $4 ^ 65536;
  17584. _pad_674($0,48,$2,$320,$321);
  17585. if ($293) {
  17586. $322 = ($$9$ph>>>0)>($$556>>>0);
  17587. $$0496$$9 = $322 ? $$556 : $$9$ph;
  17588. $323 = ((($8)) + 9|0);
  17589. $324 = $323;
  17590. $325 = ((($8)) + 8|0);
  17591. $$5493597 = $$0496$$9;
  17592. while(1) {
  17593. $326 = HEAP32[$$5493597>>2]|0;
  17594. $327 = (_fmt_u($326,0,$323)|0);
  17595. $328 = ($$5493597|0)==($$0496$$9|0);
  17596. if ($328) {
  17597. $334 = ($327|0)==($323|0);
  17598. if ($334) {
  17599. HEAP8[$325>>0] = 48;
  17600. $$1465 = $325;
  17601. } else {
  17602. $$1465 = $327;
  17603. }
  17604. } else {
  17605. $329 = ($327>>>0)>($8>>>0);
  17606. if ($329) {
  17607. $330 = $327;
  17608. $331 = (($330) - ($9))|0;
  17609. _memset(($8|0),48,($331|0))|0;
  17610. $$0464594 = $327;
  17611. while(1) {
  17612. $332 = ((($$0464594)) + -1|0);
  17613. $333 = ($332>>>0)>($8>>>0);
  17614. if ($333) {
  17615. $$0464594 = $332;
  17616. } else {
  17617. $$1465 = $332;
  17618. break;
  17619. }
  17620. }
  17621. } else {
  17622. $$1465 = $327;
  17623. }
  17624. }
  17625. $335 = $$1465;
  17626. $336 = (($324) - ($335))|0;
  17627. _out($0,$$1465,$336);
  17628. $337 = ((($$5493597)) + 4|0);
  17629. $338 = ($337>>>0)>($$556>>>0);
  17630. if ($338) {
  17631. break;
  17632. } else {
  17633. $$5493597 = $337;
  17634. }
  17635. }
  17636. $339 = ($289|0)==(0);
  17637. if (!($339)) {
  17638. _out($0,12176,1);
  17639. }
  17640. $340 = ($337>>>0)<($$7505>>>0);
  17641. $341 = ($$3477|0)>(0);
  17642. $342 = $340 & $341;
  17643. if ($342) {
  17644. $$4478590 = $$3477;$$6494589 = $337;
  17645. while(1) {
  17646. $343 = HEAP32[$$6494589>>2]|0;
  17647. $344 = (_fmt_u($343,0,$323)|0);
  17648. $345 = ($344>>>0)>($8>>>0);
  17649. if ($345) {
  17650. $346 = $344;
  17651. $347 = (($346) - ($9))|0;
  17652. _memset(($8|0),48,($347|0))|0;
  17653. $$0463584 = $344;
  17654. while(1) {
  17655. $348 = ((($$0463584)) + -1|0);
  17656. $349 = ($348>>>0)>($8>>>0);
  17657. if ($349) {
  17658. $$0463584 = $348;
  17659. } else {
  17660. $$0463$lcssa = $348;
  17661. break;
  17662. }
  17663. }
  17664. } else {
  17665. $$0463$lcssa = $344;
  17666. }
  17667. $350 = ($$4478590|0)<(9);
  17668. $351 = $350 ? $$4478590 : 9;
  17669. _out($0,$$0463$lcssa,$351);
  17670. $352 = ((($$6494589)) + 4|0);
  17671. $353 = (($$4478590) + -9)|0;
  17672. $354 = ($352>>>0)<($$7505>>>0);
  17673. $355 = ($$4478590|0)>(9);
  17674. $356 = $354 & $355;
  17675. if ($356) {
  17676. $$4478590 = $353;$$6494589 = $352;
  17677. } else {
  17678. $$4478$lcssa = $353;
  17679. break;
  17680. }
  17681. }
  17682. } else {
  17683. $$4478$lcssa = $$3477;
  17684. }
  17685. $357 = (($$4478$lcssa) + 9)|0;
  17686. _pad_674($0,48,$357,9,0);
  17687. } else {
  17688. $358 = ((($$9$ph)) + 4|0);
  17689. $$7505$ = $$lcssa673 ? $$7505 : $358;
  17690. $359 = ($$3477|0)>(-1);
  17691. if ($359) {
  17692. $360 = ((($8)) + 9|0);
  17693. $361 = ($$pre$phi690Z2D|0)==(0);
  17694. $362 = $360;
  17695. $363 = (0 - ($9))|0;
  17696. $364 = ((($8)) + 8|0);
  17697. $$5602 = $$3477;$$7495601 = $$9$ph;
  17698. while(1) {
  17699. $365 = HEAP32[$$7495601>>2]|0;
  17700. $366 = (_fmt_u($365,0,$360)|0);
  17701. $367 = ($366|0)==($360|0);
  17702. if ($367) {
  17703. HEAP8[$364>>0] = 48;
  17704. $$0 = $364;
  17705. } else {
  17706. $$0 = $366;
  17707. }
  17708. $368 = ($$7495601|0)==($$9$ph|0);
  17709. do {
  17710. if ($368) {
  17711. $372 = ((($$0)) + 1|0);
  17712. _out($0,$$0,1);
  17713. $373 = ($$5602|0)<(1);
  17714. $or$cond554 = $361 & $373;
  17715. if ($or$cond554) {
  17716. $$2 = $372;
  17717. break;
  17718. }
  17719. _out($0,12176,1);
  17720. $$2 = $372;
  17721. } else {
  17722. $369 = ($$0>>>0)>($8>>>0);
  17723. if (!($369)) {
  17724. $$2 = $$0;
  17725. break;
  17726. }
  17727. $scevgep684 = (($$0) + ($363)|0);
  17728. $scevgep684685 = $scevgep684;
  17729. _memset(($8|0),48,($scevgep684685|0))|0;
  17730. $$1598 = $$0;
  17731. while(1) {
  17732. $370 = ((($$1598)) + -1|0);
  17733. $371 = ($370>>>0)>($8>>>0);
  17734. if ($371) {
  17735. $$1598 = $370;
  17736. } else {
  17737. $$2 = $370;
  17738. break;
  17739. }
  17740. }
  17741. }
  17742. } while(0);
  17743. $374 = $$2;
  17744. $375 = (($362) - ($374))|0;
  17745. $376 = ($$5602|0)>($375|0);
  17746. $377 = $376 ? $375 : $$5602;
  17747. _out($0,$$2,$377);
  17748. $378 = (($$5602) - ($375))|0;
  17749. $379 = ((($$7495601)) + 4|0);
  17750. $380 = ($379>>>0)<($$7505$>>>0);
  17751. $381 = ($378|0)>(-1);
  17752. $382 = $380 & $381;
  17753. if ($382) {
  17754. $$5602 = $378;$$7495601 = $379;
  17755. } else {
  17756. $$5$lcssa = $378;
  17757. break;
  17758. }
  17759. }
  17760. } else {
  17761. $$5$lcssa = $$3477;
  17762. }
  17763. $383 = (($$5$lcssa) + 18)|0;
  17764. _pad_674($0,48,$383,18,0);
  17765. $384 = $11;
  17766. $385 = $$2513;
  17767. $386 = (($384) - ($385))|0;
  17768. _out($0,$$2513,$386);
  17769. }
  17770. $387 = $4 ^ 8192;
  17771. _pad_674($0,32,$2,$320,$387);
  17772. $$sink562 = $320;
  17773. } else {
  17774. $27 = $5 & 32;
  17775. $28 = ($27|0)!=(0);
  17776. $29 = $28 ? 12144 : 12148;
  17777. $30 = ($$0471 != $$0471) | (0.0 != 0.0);
  17778. $31 = $28 ? 12152 : 12156;
  17779. $$0510 = $30 ? $31 : $29;
  17780. $32 = (($$0520) + 3)|0;
  17781. $33 = $4 & -65537;
  17782. _pad_674($0,32,$2,$32,$33);
  17783. _out($0,$$0521,$$0520);
  17784. _out($0,$$0510,3);
  17785. $34 = $4 ^ 8192;
  17786. _pad_674($0,32,$2,$32,$34);
  17787. $$sink562 = $32;
  17788. }
  17789. } while(0);
  17790. $388 = ($$sink562|0)<($2|0);
  17791. $$555 = $388 ? $2 : $$sink562;
  17792. STACKTOP = sp;return ($$555|0);
  17793. }
  17794. function ___DOUBLE_BITS_675($0) {
  17795. $0 = +$0;
  17796. var $1 = 0, $2 = 0, label = 0, sp = 0;
  17797. sp = STACKTOP;
  17798. HEAPF64[tempDoublePtr>>3] = $0;$1 = HEAP32[tempDoublePtr>>2]|0;
  17799. $2 = HEAP32[tempDoublePtr+4>>2]|0;
  17800. tempRet0 = ($2);
  17801. return ($1|0);
  17802. }
  17803. function _frexpl($0,$1) {
  17804. $0 = +$0;
  17805. $1 = $1|0;
  17806. var $2 = 0.0, label = 0, sp = 0;
  17807. sp = STACKTOP;
  17808. $2 = (+_frexp($0,$1));
  17809. return (+$2);
  17810. }
  17811. function _frexp($0,$1) {
  17812. $0 = +$0;
  17813. $1 = $1|0;
  17814. var $$0 = 0.0, $$016 = 0.0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0.0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0.0, $9 = 0.0, $storemerge = 0, $trunc$clear = 0, label = 0;
  17815. var sp = 0;
  17816. sp = STACKTOP;
  17817. HEAPF64[tempDoublePtr>>3] = $0;$2 = HEAP32[tempDoublePtr>>2]|0;
  17818. $3 = HEAP32[tempDoublePtr+4>>2]|0;
  17819. $4 = (_bitshift64Lshr(($2|0),($3|0),52)|0);
  17820. $5 = tempRet0;
  17821. $6 = $4&65535;
  17822. $trunc$clear = $6 & 2047;
  17823. switch ($trunc$clear<<16>>16) {
  17824. case 0: {
  17825. $7 = $0 != 0.0;
  17826. if ($7) {
  17827. $8 = $0 * 1.8446744073709552E+19;
  17828. $9 = (+_frexp($8,$1));
  17829. $10 = HEAP32[$1>>2]|0;
  17830. $11 = (($10) + -64)|0;
  17831. $$016 = $9;$storemerge = $11;
  17832. } else {
  17833. $$016 = $0;$storemerge = 0;
  17834. }
  17835. HEAP32[$1>>2] = $storemerge;
  17836. $$0 = $$016;
  17837. break;
  17838. }
  17839. case 2047: {
  17840. $$0 = $0;
  17841. break;
  17842. }
  17843. default: {
  17844. $12 = $4 & 2047;
  17845. $13 = (($12) + -1022)|0;
  17846. HEAP32[$1>>2] = $13;
  17847. $14 = $3 & -2146435073;
  17848. $15 = $14 | 1071644672;
  17849. HEAP32[tempDoublePtr>>2] = $2;HEAP32[tempDoublePtr+4>>2] = $15;$16 = +HEAPF64[tempDoublePtr>>3];
  17850. $$0 = $16;
  17851. }
  17852. }
  17853. return (+$$0);
  17854. }
  17855. function _wcrtomb($0,$1,$2) {
  17856. $0 = $0|0;
  17857. $1 = $1|0;
  17858. $2 = $2|0;
  17859. var $$0 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0;
  17860. 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;
  17861. var $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, $not$ = 0, $or$cond = 0, label = 0, sp = 0;
  17862. sp = STACKTOP;
  17863. $3 = ($0|0)==(0|0);
  17864. do {
  17865. if ($3) {
  17866. $$0 = 1;
  17867. } else {
  17868. $4 = ($1>>>0)<(128);
  17869. if ($4) {
  17870. $5 = $1&255;
  17871. HEAP8[$0>>0] = $5;
  17872. $$0 = 1;
  17873. break;
  17874. }
  17875. $6 = (___pthread_self_448()|0);
  17876. $7 = ((($6)) + 188|0);
  17877. $8 = HEAP32[$7>>2]|0;
  17878. $9 = HEAP32[$8>>2]|0;
  17879. $not$ = ($9|0)==(0|0);
  17880. if ($not$) {
  17881. $10 = $1 & -128;
  17882. $11 = ($10|0)==(57216);
  17883. if ($11) {
  17884. $13 = $1&255;
  17885. HEAP8[$0>>0] = $13;
  17886. $$0 = 1;
  17887. break;
  17888. } else {
  17889. $12 = (___errno_location()|0);
  17890. HEAP32[$12>>2] = 84;
  17891. $$0 = -1;
  17892. break;
  17893. }
  17894. }
  17895. $14 = ($1>>>0)<(2048);
  17896. if ($14) {
  17897. $15 = $1 >>> 6;
  17898. $16 = $15 | 192;
  17899. $17 = $16&255;
  17900. $18 = ((($0)) + 1|0);
  17901. HEAP8[$0>>0] = $17;
  17902. $19 = $1 & 63;
  17903. $20 = $19 | 128;
  17904. $21 = $20&255;
  17905. HEAP8[$18>>0] = $21;
  17906. $$0 = 2;
  17907. break;
  17908. }
  17909. $22 = ($1>>>0)<(55296);
  17910. $23 = $1 & -8192;
  17911. $24 = ($23|0)==(57344);
  17912. $or$cond = $22 | $24;
  17913. if ($or$cond) {
  17914. $25 = $1 >>> 12;
  17915. $26 = $25 | 224;
  17916. $27 = $26&255;
  17917. $28 = ((($0)) + 1|0);
  17918. HEAP8[$0>>0] = $27;
  17919. $29 = $1 >>> 6;
  17920. $30 = $29 & 63;
  17921. $31 = $30 | 128;
  17922. $32 = $31&255;
  17923. $33 = ((($0)) + 2|0);
  17924. HEAP8[$28>>0] = $32;
  17925. $34 = $1 & 63;
  17926. $35 = $34 | 128;
  17927. $36 = $35&255;
  17928. HEAP8[$33>>0] = $36;
  17929. $$0 = 3;
  17930. break;
  17931. }
  17932. $37 = (($1) + -65536)|0;
  17933. $38 = ($37>>>0)<(1048576);
  17934. if ($38) {
  17935. $39 = $1 >>> 18;
  17936. $40 = $39 | 240;
  17937. $41 = $40&255;
  17938. $42 = ((($0)) + 1|0);
  17939. HEAP8[$0>>0] = $41;
  17940. $43 = $1 >>> 12;
  17941. $44 = $43 & 63;
  17942. $45 = $44 | 128;
  17943. $46 = $45&255;
  17944. $47 = ((($0)) + 2|0);
  17945. HEAP8[$42>>0] = $46;
  17946. $48 = $1 >>> 6;
  17947. $49 = $48 & 63;
  17948. $50 = $49 | 128;
  17949. $51 = $50&255;
  17950. $52 = ((($0)) + 3|0);
  17951. HEAP8[$47>>0] = $51;
  17952. $53 = $1 & 63;
  17953. $54 = $53 | 128;
  17954. $55 = $54&255;
  17955. HEAP8[$52>>0] = $55;
  17956. $$0 = 4;
  17957. break;
  17958. } else {
  17959. $56 = (___errno_location()|0);
  17960. HEAP32[$56>>2] = 84;
  17961. $$0 = -1;
  17962. break;
  17963. }
  17964. }
  17965. } while(0);
  17966. return ($$0|0);
  17967. }
  17968. function ___pthread_self_448() {
  17969. var $0 = 0, label = 0, sp = 0;
  17970. sp = STACKTOP;
  17971. $0 = (_pthread_self()|0);
  17972. return ($0|0);
  17973. }
  17974. function ___pthread_self_105() {
  17975. var $0 = 0, label = 0, sp = 0;
  17976. sp = STACKTOP;
  17977. $0 = (_pthread_self()|0);
  17978. return ($0|0);
  17979. }
  17980. function ___strerror_l($0,$1) {
  17981. $0 = $0|0;
  17982. $1 = $1|0;
  17983. var $$012$lcssa = 0, $$01214 = 0, $$016 = 0, $$113 = 0, $$115 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0;
  17984. var label = 0, sp = 0;
  17985. sp = STACKTOP;
  17986. $$016 = 0;
  17987. while(1) {
  17988. $3 = (12178 + ($$016)|0);
  17989. $4 = HEAP8[$3>>0]|0;
  17990. $5 = $4&255;
  17991. $6 = ($5|0)==($0|0);
  17992. if ($6) {
  17993. label = 2;
  17994. break;
  17995. }
  17996. $7 = (($$016) + 1)|0;
  17997. $8 = ($7|0)==(87);
  17998. if ($8) {
  17999. $$01214 = 12266;$$115 = 87;
  18000. label = 5;
  18001. break;
  18002. } else {
  18003. $$016 = $7;
  18004. }
  18005. }
  18006. if ((label|0) == 2) {
  18007. $2 = ($$016|0)==(0);
  18008. if ($2) {
  18009. $$012$lcssa = 12266;
  18010. } else {
  18011. $$01214 = 12266;$$115 = $$016;
  18012. label = 5;
  18013. }
  18014. }
  18015. if ((label|0) == 5) {
  18016. while(1) {
  18017. label = 0;
  18018. $$113 = $$01214;
  18019. while(1) {
  18020. $9 = HEAP8[$$113>>0]|0;
  18021. $10 = ($9<<24>>24)==(0);
  18022. $11 = ((($$113)) + 1|0);
  18023. if ($10) {
  18024. break;
  18025. } else {
  18026. $$113 = $11;
  18027. }
  18028. }
  18029. $12 = (($$115) + -1)|0;
  18030. $13 = ($12|0)==(0);
  18031. if ($13) {
  18032. $$012$lcssa = $11;
  18033. break;
  18034. } else {
  18035. $$01214 = $11;$$115 = $12;
  18036. label = 5;
  18037. }
  18038. }
  18039. }
  18040. $14 = ((($1)) + 20|0);
  18041. $15 = HEAP32[$14>>2]|0;
  18042. $16 = (___lctrans($$012$lcssa,$15)|0);
  18043. return ($16|0);
  18044. }
  18045. function ___lctrans($0,$1) {
  18046. $0 = $0|0;
  18047. $1 = $1|0;
  18048. var $2 = 0, label = 0, sp = 0;
  18049. sp = STACKTOP;
  18050. $2 = (___lctrans_impl($0,$1)|0);
  18051. return ($2|0);
  18052. }
  18053. function ___lctrans_impl($0,$1) {
  18054. $0 = $0|0;
  18055. $1 = $1|0;
  18056. var $$0 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, label = 0, sp = 0;
  18057. sp = STACKTOP;
  18058. $2 = ($1|0)==(0|0);
  18059. if ($2) {
  18060. $$0 = 0;
  18061. } else {
  18062. $3 = HEAP32[$1>>2]|0;
  18063. $4 = ((($1)) + 4|0);
  18064. $5 = HEAP32[$4>>2]|0;
  18065. $6 = (___mo_lookup($3,$5,$0)|0);
  18066. $$0 = $6;
  18067. }
  18068. $7 = ($$0|0)!=(0|0);
  18069. $8 = $7 ? $$0 : $0;
  18070. return ($8|0);
  18071. }
  18072. function ___mo_lookup($0,$1,$2) {
  18073. $0 = $0|0;
  18074. $1 = $1|0;
  18075. $2 = $2|0;
  18076. var $$ = 0, $$090 = 0, $$094 = 0, $$191 = 0, $$195 = 0, $$4 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0;
  18077. var $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, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0;
  18078. var $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, $58 = 0, $59 = 0, $6 = 0;
  18079. var $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond102 = 0, $or$cond104 = 0, label = 0, sp = 0;
  18080. sp = STACKTOP;
  18081. $3 = HEAP32[$0>>2]|0;
  18082. $4 = (($3) + 1794895138)|0;
  18083. $5 = ((($0)) + 8|0);
  18084. $6 = HEAP32[$5>>2]|0;
  18085. $7 = (_swapc($6,$4)|0);
  18086. $8 = ((($0)) + 12|0);
  18087. $9 = HEAP32[$8>>2]|0;
  18088. $10 = (_swapc($9,$4)|0);
  18089. $11 = ((($0)) + 16|0);
  18090. $12 = HEAP32[$11>>2]|0;
  18091. $13 = (_swapc($12,$4)|0);
  18092. $14 = $1 >>> 2;
  18093. $15 = ($7>>>0)<($14>>>0);
  18094. L1: do {
  18095. if ($15) {
  18096. $16 = $7 << 2;
  18097. $17 = (($1) - ($16))|0;
  18098. $18 = ($10>>>0)<($17>>>0);
  18099. $19 = ($13>>>0)<($17>>>0);
  18100. $or$cond = $18 & $19;
  18101. if ($or$cond) {
  18102. $20 = $13 | $10;
  18103. $21 = $20 & 3;
  18104. $22 = ($21|0)==(0);
  18105. if ($22) {
  18106. $23 = $10 >>> 2;
  18107. $24 = $13 >>> 2;
  18108. $$090 = 0;$$094 = $7;
  18109. while(1) {
  18110. $25 = $$094 >>> 1;
  18111. $26 = (($$090) + ($25))|0;
  18112. $27 = $26 << 1;
  18113. $28 = (($27) + ($23))|0;
  18114. $29 = (($0) + ($28<<2)|0);
  18115. $30 = HEAP32[$29>>2]|0;
  18116. $31 = (_swapc($30,$4)|0);
  18117. $32 = (($28) + 1)|0;
  18118. $33 = (($0) + ($32<<2)|0);
  18119. $34 = HEAP32[$33>>2]|0;
  18120. $35 = (_swapc($34,$4)|0);
  18121. $36 = ($35>>>0)<($1>>>0);
  18122. $37 = (($1) - ($35))|0;
  18123. $38 = ($31>>>0)<($37>>>0);
  18124. $or$cond102 = $36 & $38;
  18125. if (!($or$cond102)) {
  18126. $$4 = 0;
  18127. break L1;
  18128. }
  18129. $39 = (($35) + ($31))|0;
  18130. $40 = (($0) + ($39)|0);
  18131. $41 = HEAP8[$40>>0]|0;
  18132. $42 = ($41<<24>>24)==(0);
  18133. if (!($42)) {
  18134. $$4 = 0;
  18135. break L1;
  18136. }
  18137. $43 = (($0) + ($35)|0);
  18138. $44 = (_strcmp($2,$43)|0);
  18139. $45 = ($44|0)==(0);
  18140. if ($45) {
  18141. break;
  18142. }
  18143. $62 = ($$094|0)==(1);
  18144. $63 = ($44|0)<(0);
  18145. $64 = (($$094) - ($25))|0;
  18146. $$195 = $63 ? $25 : $64;
  18147. $$191 = $63 ? $$090 : $26;
  18148. if ($62) {
  18149. $$4 = 0;
  18150. break L1;
  18151. } else {
  18152. $$090 = $$191;$$094 = $$195;
  18153. }
  18154. }
  18155. $46 = (($27) + ($24))|0;
  18156. $47 = (($0) + ($46<<2)|0);
  18157. $48 = HEAP32[$47>>2]|0;
  18158. $49 = (_swapc($48,$4)|0);
  18159. $50 = (($46) + 1)|0;
  18160. $51 = (($0) + ($50<<2)|0);
  18161. $52 = HEAP32[$51>>2]|0;
  18162. $53 = (_swapc($52,$4)|0);
  18163. $54 = ($53>>>0)<($1>>>0);
  18164. $55 = (($1) - ($53))|0;
  18165. $56 = ($49>>>0)<($55>>>0);
  18166. $or$cond104 = $54 & $56;
  18167. if ($or$cond104) {
  18168. $57 = (($0) + ($53)|0);
  18169. $58 = (($53) + ($49))|0;
  18170. $59 = (($0) + ($58)|0);
  18171. $60 = HEAP8[$59>>0]|0;
  18172. $61 = ($60<<24>>24)==(0);
  18173. $$ = $61 ? $57 : 0;
  18174. $$4 = $$;
  18175. } else {
  18176. $$4 = 0;
  18177. }
  18178. } else {
  18179. $$4 = 0;
  18180. }
  18181. } else {
  18182. $$4 = 0;
  18183. }
  18184. } else {
  18185. $$4 = 0;
  18186. }
  18187. } while(0);
  18188. return ($$4|0);
  18189. }
  18190. function _swapc($0,$1) {
  18191. $0 = $0|0;
  18192. $1 = $1|0;
  18193. var $$ = 0, $2 = 0, $3 = 0, label = 0, sp = 0;
  18194. sp = STACKTOP;
  18195. $2 = ($1|0)==(0);
  18196. $3 = (_llvm_bswap_i32(($0|0))|0);
  18197. $$ = $2 ? $0 : $3;
  18198. return ($$|0);
  18199. }
  18200. function ___fwritex($0,$1,$2) {
  18201. $0 = $0|0;
  18202. $1 = $1|0;
  18203. $2 = $2|0;
  18204. var $$038 = 0, $$042 = 0, $$1 = 0, $$139 = 0, $$141 = 0, $$143 = 0, $$pre = 0, $$pre47 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $20 = 0, $21 = 0;
  18205. var $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, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0;
  18206. var label = 0, sp = 0;
  18207. sp = STACKTOP;
  18208. $3 = ((($2)) + 16|0);
  18209. $4 = HEAP32[$3>>2]|0;
  18210. $5 = ($4|0)==(0|0);
  18211. if ($5) {
  18212. $7 = (___towrite($2)|0);
  18213. $8 = ($7|0)==(0);
  18214. if ($8) {
  18215. $$pre = HEAP32[$3>>2]|0;
  18216. $12 = $$pre;
  18217. label = 5;
  18218. } else {
  18219. $$1 = 0;
  18220. }
  18221. } else {
  18222. $6 = $4;
  18223. $12 = $6;
  18224. label = 5;
  18225. }
  18226. L5: do {
  18227. if ((label|0) == 5) {
  18228. $9 = ((($2)) + 20|0);
  18229. $10 = HEAP32[$9>>2]|0;
  18230. $11 = (($12) - ($10))|0;
  18231. $13 = ($11>>>0)<($1>>>0);
  18232. $14 = $10;
  18233. if ($13) {
  18234. $15 = ((($2)) + 36|0);
  18235. $16 = HEAP32[$15>>2]|0;
  18236. $17 = (FUNCTION_TABLE_iiii[$16 & 15]($2,$0,$1)|0);
  18237. $$1 = $17;
  18238. break;
  18239. }
  18240. $18 = ((($2)) + 75|0);
  18241. $19 = HEAP8[$18>>0]|0;
  18242. $20 = ($19<<24>>24)>(-1);
  18243. L10: do {
  18244. if ($20) {
  18245. $$038 = $1;
  18246. while(1) {
  18247. $21 = ($$038|0)==(0);
  18248. if ($21) {
  18249. $$139 = 0;$$141 = $0;$$143 = $1;$31 = $14;
  18250. break L10;
  18251. }
  18252. $22 = (($$038) + -1)|0;
  18253. $23 = (($0) + ($22)|0);
  18254. $24 = HEAP8[$23>>0]|0;
  18255. $25 = ($24<<24>>24)==(10);
  18256. if ($25) {
  18257. break;
  18258. } else {
  18259. $$038 = $22;
  18260. }
  18261. }
  18262. $26 = ((($2)) + 36|0);
  18263. $27 = HEAP32[$26>>2]|0;
  18264. $28 = (FUNCTION_TABLE_iiii[$27 & 15]($2,$0,$$038)|0);
  18265. $29 = ($28>>>0)<($$038>>>0);
  18266. if ($29) {
  18267. $$1 = $28;
  18268. break L5;
  18269. }
  18270. $30 = (($0) + ($$038)|0);
  18271. $$042 = (($1) - ($$038))|0;
  18272. $$pre47 = HEAP32[$9>>2]|0;
  18273. $$139 = $$038;$$141 = $30;$$143 = $$042;$31 = $$pre47;
  18274. } else {
  18275. $$139 = 0;$$141 = $0;$$143 = $1;$31 = $14;
  18276. }
  18277. } while(0);
  18278. _memcpy(($31|0),($$141|0),($$143|0))|0;
  18279. $32 = HEAP32[$9>>2]|0;
  18280. $33 = (($32) + ($$143)|0);
  18281. HEAP32[$9>>2] = $33;
  18282. $34 = (($$139) + ($$143))|0;
  18283. $$1 = $34;
  18284. }
  18285. } while(0);
  18286. return ($$1|0);
  18287. }
  18288. function ___towrite($0) {
  18289. $0 = $0|0;
  18290. 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, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
  18291. var $9 = 0, label = 0, sp = 0;
  18292. sp = STACKTOP;
  18293. $1 = ((($0)) + 74|0);
  18294. $2 = HEAP8[$1>>0]|0;
  18295. $3 = $2 << 24 >> 24;
  18296. $4 = (($3) + 255)|0;
  18297. $5 = $4 | $3;
  18298. $6 = $5&255;
  18299. HEAP8[$1>>0] = $6;
  18300. $7 = HEAP32[$0>>2]|0;
  18301. $8 = $7 & 8;
  18302. $9 = ($8|0)==(0);
  18303. if ($9) {
  18304. $11 = ((($0)) + 8|0);
  18305. HEAP32[$11>>2] = 0;
  18306. $12 = ((($0)) + 4|0);
  18307. HEAP32[$12>>2] = 0;
  18308. $13 = ((($0)) + 44|0);
  18309. $14 = HEAP32[$13>>2]|0;
  18310. $15 = ((($0)) + 28|0);
  18311. HEAP32[$15>>2] = $14;
  18312. $16 = ((($0)) + 20|0);
  18313. HEAP32[$16>>2] = $14;
  18314. $17 = ((($0)) + 48|0);
  18315. $18 = HEAP32[$17>>2]|0;
  18316. $19 = (($14) + ($18)|0);
  18317. $20 = ((($0)) + 16|0);
  18318. HEAP32[$20>>2] = $19;
  18319. $$0 = 0;
  18320. } else {
  18321. $10 = $7 | 32;
  18322. HEAP32[$0>>2] = $10;
  18323. $$0 = -1;
  18324. }
  18325. return ($$0|0);
  18326. }
  18327. function _strlen($0) {
  18328. $0 = $0|0;
  18329. var $$0 = 0, $$015$lcssa = 0, $$01519 = 0, $$1$lcssa = 0, $$pn = 0, $$pre = 0, $$sink = 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;
  18330. var $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  18331. sp = STACKTOP;
  18332. $1 = $0;
  18333. $2 = $1 & 3;
  18334. $3 = ($2|0)==(0);
  18335. L1: do {
  18336. if ($3) {
  18337. $$015$lcssa = $0;
  18338. label = 4;
  18339. } else {
  18340. $$01519 = $0;$23 = $1;
  18341. while(1) {
  18342. $4 = HEAP8[$$01519>>0]|0;
  18343. $5 = ($4<<24>>24)==(0);
  18344. if ($5) {
  18345. $$sink = $23;
  18346. break L1;
  18347. }
  18348. $6 = ((($$01519)) + 1|0);
  18349. $7 = $6;
  18350. $8 = $7 & 3;
  18351. $9 = ($8|0)==(0);
  18352. if ($9) {
  18353. $$015$lcssa = $6;
  18354. label = 4;
  18355. break;
  18356. } else {
  18357. $$01519 = $6;$23 = $7;
  18358. }
  18359. }
  18360. }
  18361. } while(0);
  18362. if ((label|0) == 4) {
  18363. $$0 = $$015$lcssa;
  18364. while(1) {
  18365. $10 = HEAP32[$$0>>2]|0;
  18366. $11 = (($10) + -16843009)|0;
  18367. $12 = $10 & -2139062144;
  18368. $13 = $12 ^ -2139062144;
  18369. $14 = $13 & $11;
  18370. $15 = ($14|0)==(0);
  18371. $16 = ((($$0)) + 4|0);
  18372. if ($15) {
  18373. $$0 = $16;
  18374. } else {
  18375. break;
  18376. }
  18377. }
  18378. $17 = $10&255;
  18379. $18 = ($17<<24>>24)==(0);
  18380. if ($18) {
  18381. $$1$lcssa = $$0;
  18382. } else {
  18383. $$pn = $$0;
  18384. while(1) {
  18385. $19 = ((($$pn)) + 1|0);
  18386. $$pre = HEAP8[$19>>0]|0;
  18387. $20 = ($$pre<<24>>24)==(0);
  18388. if ($20) {
  18389. $$1$lcssa = $19;
  18390. break;
  18391. } else {
  18392. $$pn = $19;
  18393. }
  18394. }
  18395. }
  18396. $21 = $$1$lcssa;
  18397. $$sink = $21;
  18398. }
  18399. $22 = (($$sink) - ($1))|0;
  18400. return ($22|0);
  18401. }
  18402. function _strchr($0,$1) {
  18403. $0 = $0|0;
  18404. $1 = $1|0;
  18405. var $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, label = 0, sp = 0;
  18406. sp = STACKTOP;
  18407. $2 = (___strchrnul($0,$1)|0);
  18408. $3 = HEAP8[$2>>0]|0;
  18409. $4 = $1&255;
  18410. $5 = ($3<<24>>24)==($4<<24>>24);
  18411. $6 = $5 ? $2 : 0;
  18412. return ($6|0);
  18413. }
  18414. function ___strchrnul($0,$1) {
  18415. $0 = $0|0;
  18416. $1 = $1|0;
  18417. var $$0 = 0, $$029$lcssa = 0, $$02936 = 0, $$030$lcssa = 0, $$03039 = 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;
  18418. var $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, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0;
  18419. var $41 = 0, $42 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond33 = 0, label = 0, sp = 0;
  18420. sp = STACKTOP;
  18421. $2 = $1 & 255;
  18422. $3 = ($2|0)==(0);
  18423. L1: do {
  18424. if ($3) {
  18425. $8 = (_strlen($0)|0);
  18426. $9 = (($0) + ($8)|0);
  18427. $$0 = $9;
  18428. } else {
  18429. $4 = $0;
  18430. $5 = $4 & 3;
  18431. $6 = ($5|0)==(0);
  18432. if ($6) {
  18433. $$030$lcssa = $0;
  18434. } else {
  18435. $7 = $1&255;
  18436. $$03039 = $0;
  18437. while(1) {
  18438. $10 = HEAP8[$$03039>>0]|0;
  18439. $11 = ($10<<24>>24)==(0);
  18440. $12 = ($10<<24>>24)==($7<<24>>24);
  18441. $or$cond = $11 | $12;
  18442. if ($or$cond) {
  18443. $$0 = $$03039;
  18444. break L1;
  18445. }
  18446. $13 = ((($$03039)) + 1|0);
  18447. $14 = $13;
  18448. $15 = $14 & 3;
  18449. $16 = ($15|0)==(0);
  18450. if ($16) {
  18451. $$030$lcssa = $13;
  18452. break;
  18453. } else {
  18454. $$03039 = $13;
  18455. }
  18456. }
  18457. }
  18458. $17 = Math_imul($2, 16843009)|0;
  18459. $18 = HEAP32[$$030$lcssa>>2]|0;
  18460. $19 = (($18) + -16843009)|0;
  18461. $20 = $18 & -2139062144;
  18462. $21 = $20 ^ -2139062144;
  18463. $22 = $21 & $19;
  18464. $23 = ($22|0)==(0);
  18465. L10: do {
  18466. if ($23) {
  18467. $$02936 = $$030$lcssa;$25 = $18;
  18468. while(1) {
  18469. $24 = $25 ^ $17;
  18470. $26 = (($24) + -16843009)|0;
  18471. $27 = $24 & -2139062144;
  18472. $28 = $27 ^ -2139062144;
  18473. $29 = $28 & $26;
  18474. $30 = ($29|0)==(0);
  18475. if (!($30)) {
  18476. $$029$lcssa = $$02936;
  18477. break L10;
  18478. }
  18479. $31 = ((($$02936)) + 4|0);
  18480. $32 = HEAP32[$31>>2]|0;
  18481. $33 = (($32) + -16843009)|0;
  18482. $34 = $32 & -2139062144;
  18483. $35 = $34 ^ -2139062144;
  18484. $36 = $35 & $33;
  18485. $37 = ($36|0)==(0);
  18486. if ($37) {
  18487. $$02936 = $31;$25 = $32;
  18488. } else {
  18489. $$029$lcssa = $31;
  18490. break;
  18491. }
  18492. }
  18493. } else {
  18494. $$029$lcssa = $$030$lcssa;
  18495. }
  18496. } while(0);
  18497. $38 = $1&255;
  18498. $$1 = $$029$lcssa;
  18499. while(1) {
  18500. $39 = HEAP8[$$1>>0]|0;
  18501. $40 = ($39<<24>>24)==(0);
  18502. $41 = ($39<<24>>24)==($38<<24>>24);
  18503. $or$cond33 = $40 | $41;
  18504. $42 = ((($$1)) + 1|0);
  18505. if ($or$cond33) {
  18506. $$0 = $$1;
  18507. break;
  18508. } else {
  18509. $$1 = $42;
  18510. }
  18511. }
  18512. }
  18513. } while(0);
  18514. return ($$0|0);
  18515. }
  18516. function _strcpy($0,$1) {
  18517. $0 = $0|0;
  18518. $1 = $1|0;
  18519. var label = 0, sp = 0;
  18520. sp = STACKTOP;
  18521. (___stpcpy($0,$1)|0);
  18522. return ($0|0);
  18523. }
  18524. function ___stpcpy($0,$1) {
  18525. $0 = $0|0;
  18526. $1 = $1|0;
  18527. var $$0$lcssa = 0, $$025$lcssa = 0, $$02536 = 0, $$026$lcssa = 0, $$02642 = 0, $$027$lcssa = 0, $$02741 = 0, $$029 = 0, $$037 = 0, $$1$ph = 0, $$128$ph = 0, $$12834 = 0, $$135 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0;
  18528. var $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, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0;
  18529. var $35 = 0, $36 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  18530. sp = STACKTOP;
  18531. $2 = $1;
  18532. $3 = $0;
  18533. $4 = $2 ^ $3;
  18534. $5 = $4 & 3;
  18535. $6 = ($5|0)==(0);
  18536. L1: do {
  18537. if ($6) {
  18538. $7 = $2 & 3;
  18539. $8 = ($7|0)==(0);
  18540. if ($8) {
  18541. $$026$lcssa = $1;$$027$lcssa = $0;
  18542. } else {
  18543. $$02642 = $1;$$02741 = $0;
  18544. while(1) {
  18545. $9 = HEAP8[$$02642>>0]|0;
  18546. HEAP8[$$02741>>0] = $9;
  18547. $10 = ($9<<24>>24)==(0);
  18548. if ($10) {
  18549. $$029 = $$02741;
  18550. break L1;
  18551. }
  18552. $11 = ((($$02642)) + 1|0);
  18553. $12 = ((($$02741)) + 1|0);
  18554. $13 = $11;
  18555. $14 = $13 & 3;
  18556. $15 = ($14|0)==(0);
  18557. if ($15) {
  18558. $$026$lcssa = $11;$$027$lcssa = $12;
  18559. break;
  18560. } else {
  18561. $$02642 = $11;$$02741 = $12;
  18562. }
  18563. }
  18564. }
  18565. $16 = HEAP32[$$026$lcssa>>2]|0;
  18566. $17 = (($16) + -16843009)|0;
  18567. $18 = $16 & -2139062144;
  18568. $19 = $18 ^ -2139062144;
  18569. $20 = $19 & $17;
  18570. $21 = ($20|0)==(0);
  18571. if ($21) {
  18572. $$02536 = $$027$lcssa;$$037 = $$026$lcssa;$24 = $16;
  18573. while(1) {
  18574. $22 = ((($$037)) + 4|0);
  18575. $23 = ((($$02536)) + 4|0);
  18576. HEAP32[$$02536>>2] = $24;
  18577. $25 = HEAP32[$22>>2]|0;
  18578. $26 = (($25) + -16843009)|0;
  18579. $27 = $25 & -2139062144;
  18580. $28 = $27 ^ -2139062144;
  18581. $29 = $28 & $26;
  18582. $30 = ($29|0)==(0);
  18583. if ($30) {
  18584. $$02536 = $23;$$037 = $22;$24 = $25;
  18585. } else {
  18586. $$0$lcssa = $22;$$025$lcssa = $23;
  18587. break;
  18588. }
  18589. }
  18590. } else {
  18591. $$0$lcssa = $$026$lcssa;$$025$lcssa = $$027$lcssa;
  18592. }
  18593. $$1$ph = $$0$lcssa;$$128$ph = $$025$lcssa;
  18594. label = 8;
  18595. } else {
  18596. $$1$ph = $1;$$128$ph = $0;
  18597. label = 8;
  18598. }
  18599. } while(0);
  18600. if ((label|0) == 8) {
  18601. $31 = HEAP8[$$1$ph>>0]|0;
  18602. HEAP8[$$128$ph>>0] = $31;
  18603. $32 = ($31<<24>>24)==(0);
  18604. if ($32) {
  18605. $$029 = $$128$ph;
  18606. } else {
  18607. $$12834 = $$128$ph;$$135 = $$1$ph;
  18608. while(1) {
  18609. $33 = ((($$135)) + 1|0);
  18610. $34 = ((($$12834)) + 1|0);
  18611. $35 = HEAP8[$33>>0]|0;
  18612. HEAP8[$34>>0] = $35;
  18613. $36 = ($35<<24>>24)==(0);
  18614. if ($36) {
  18615. $$029 = $34;
  18616. break;
  18617. } else {
  18618. $$12834 = $34;$$135 = $33;
  18619. }
  18620. }
  18621. }
  18622. }
  18623. return ($$029|0);
  18624. }
  18625. function ___ofl_lock() {
  18626. var label = 0, sp = 0;
  18627. sp = STACKTOP;
  18628. ___lock((16716|0));
  18629. return (16724|0);
  18630. }
  18631. function ___ofl_unlock() {
  18632. var label = 0, sp = 0;
  18633. sp = STACKTOP;
  18634. ___unlock((16716|0));
  18635. return;
  18636. }
  18637. function _fflush($0) {
  18638. $0 = $0|0;
  18639. var $$0 = 0, $$023 = 0, $$02325 = 0, $$02327 = 0, $$024$lcssa = 0, $$02426 = 0, $$1 = 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;
  18640. var $21 = 0, $22 = 0, $23 = 0, $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, $phitmp = 0, label = 0, sp = 0;
  18641. sp = STACKTOP;
  18642. $1 = ($0|0)==(0|0);
  18643. do {
  18644. if ($1) {
  18645. $8 = HEAP32[838]|0;
  18646. $9 = ($8|0)==(0|0);
  18647. if ($9) {
  18648. $29 = 0;
  18649. } else {
  18650. $10 = HEAP32[838]|0;
  18651. $11 = (_fflush($10)|0);
  18652. $29 = $11;
  18653. }
  18654. $12 = (___ofl_lock()|0);
  18655. $$02325 = HEAP32[$12>>2]|0;
  18656. $13 = ($$02325|0)==(0|0);
  18657. if ($13) {
  18658. $$024$lcssa = $29;
  18659. } else {
  18660. $$02327 = $$02325;$$02426 = $29;
  18661. while(1) {
  18662. $14 = ((($$02327)) + 76|0);
  18663. $15 = HEAP32[$14>>2]|0;
  18664. $16 = ($15|0)>(-1);
  18665. if ($16) {
  18666. $17 = (___lockfile($$02327)|0);
  18667. $26 = $17;
  18668. } else {
  18669. $26 = 0;
  18670. }
  18671. $18 = ((($$02327)) + 20|0);
  18672. $19 = HEAP32[$18>>2]|0;
  18673. $20 = ((($$02327)) + 28|0);
  18674. $21 = HEAP32[$20>>2]|0;
  18675. $22 = ($19>>>0)>($21>>>0);
  18676. if ($22) {
  18677. $23 = (___fflush_unlocked($$02327)|0);
  18678. $24 = $23 | $$02426;
  18679. $$1 = $24;
  18680. } else {
  18681. $$1 = $$02426;
  18682. }
  18683. $25 = ($26|0)==(0);
  18684. if (!($25)) {
  18685. ___unlockfile($$02327);
  18686. }
  18687. $27 = ((($$02327)) + 56|0);
  18688. $$023 = HEAP32[$27>>2]|0;
  18689. $28 = ($$023|0)==(0|0);
  18690. if ($28) {
  18691. $$024$lcssa = $$1;
  18692. break;
  18693. } else {
  18694. $$02327 = $$023;$$02426 = $$1;
  18695. }
  18696. }
  18697. }
  18698. ___ofl_unlock();
  18699. $$0 = $$024$lcssa;
  18700. } else {
  18701. $2 = ((($0)) + 76|0);
  18702. $3 = HEAP32[$2>>2]|0;
  18703. $4 = ($3|0)>(-1);
  18704. if (!($4)) {
  18705. $5 = (___fflush_unlocked($0)|0);
  18706. $$0 = $5;
  18707. break;
  18708. }
  18709. $6 = (___lockfile($0)|0);
  18710. $phitmp = ($6|0)==(0);
  18711. $7 = (___fflush_unlocked($0)|0);
  18712. if ($phitmp) {
  18713. $$0 = $7;
  18714. } else {
  18715. ___unlockfile($0);
  18716. $$0 = $7;
  18717. }
  18718. }
  18719. } while(0);
  18720. return ($$0|0);
  18721. }
  18722. function ___fflush_unlocked($0) {
  18723. $0 = $0|0;
  18724. 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, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
  18725. var $9 = 0, label = 0, sp = 0;
  18726. sp = STACKTOP;
  18727. $1 = ((($0)) + 20|0);
  18728. $2 = HEAP32[$1>>2]|0;
  18729. $3 = ((($0)) + 28|0);
  18730. $4 = HEAP32[$3>>2]|0;
  18731. $5 = ($2>>>0)>($4>>>0);
  18732. if ($5) {
  18733. $6 = ((($0)) + 36|0);
  18734. $7 = HEAP32[$6>>2]|0;
  18735. (FUNCTION_TABLE_iiii[$7 & 15]($0,0,0)|0);
  18736. $8 = HEAP32[$1>>2]|0;
  18737. $9 = ($8|0)==(0|0);
  18738. if ($9) {
  18739. $$0 = -1;
  18740. } else {
  18741. label = 3;
  18742. }
  18743. } else {
  18744. label = 3;
  18745. }
  18746. if ((label|0) == 3) {
  18747. $10 = ((($0)) + 4|0);
  18748. $11 = HEAP32[$10>>2]|0;
  18749. $12 = ((($0)) + 8|0);
  18750. $13 = HEAP32[$12>>2]|0;
  18751. $14 = ($11>>>0)<($13>>>0);
  18752. if ($14) {
  18753. $15 = $11;
  18754. $16 = $13;
  18755. $17 = (($15) - ($16))|0;
  18756. $18 = ((($0)) + 40|0);
  18757. $19 = HEAP32[$18>>2]|0;
  18758. (FUNCTION_TABLE_iiii[$19 & 15]($0,$17,1)|0);
  18759. }
  18760. $20 = ((($0)) + 16|0);
  18761. HEAP32[$20>>2] = 0;
  18762. HEAP32[$3>>2] = 0;
  18763. HEAP32[$1>>2] = 0;
  18764. HEAP32[$12>>2] = 0;
  18765. HEAP32[$10>>2] = 0;
  18766. $$0 = 0;
  18767. }
  18768. return ($$0|0);
  18769. }
  18770. function _strstr($0,$1) {
  18771. $0 = $0|0;
  18772. $1 = $1|0;
  18773. var $$0 = 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, $27 = 0;
  18774. var $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  18775. sp = STACKTOP;
  18776. $2 = HEAP8[$1>>0]|0;
  18777. $3 = ($2<<24>>24)==(0);
  18778. do {
  18779. if ($3) {
  18780. $$0 = $0;
  18781. } else {
  18782. $4 = $2 << 24 >> 24;
  18783. $5 = (_strchr($0,$4)|0);
  18784. $6 = ($5|0)==(0|0);
  18785. if ($6) {
  18786. $$0 = 0;
  18787. } else {
  18788. $7 = ((($1)) + 1|0);
  18789. $8 = HEAP8[$7>>0]|0;
  18790. $9 = ($8<<24>>24)==(0);
  18791. if ($9) {
  18792. $$0 = $5;
  18793. } else {
  18794. $10 = ((($5)) + 1|0);
  18795. $11 = HEAP8[$10>>0]|0;
  18796. $12 = ($11<<24>>24)==(0);
  18797. if ($12) {
  18798. $$0 = 0;
  18799. } else {
  18800. $13 = ((($1)) + 2|0);
  18801. $14 = HEAP8[$13>>0]|0;
  18802. $15 = ($14<<24>>24)==(0);
  18803. if ($15) {
  18804. $16 = (_twobyte_strstr($5,$1)|0);
  18805. $$0 = $16;
  18806. break;
  18807. }
  18808. $17 = ((($5)) + 2|0);
  18809. $18 = HEAP8[$17>>0]|0;
  18810. $19 = ($18<<24>>24)==(0);
  18811. if ($19) {
  18812. $$0 = 0;
  18813. } else {
  18814. $20 = ((($1)) + 3|0);
  18815. $21 = HEAP8[$20>>0]|0;
  18816. $22 = ($21<<24>>24)==(0);
  18817. if ($22) {
  18818. $23 = (_threebyte_strstr($5,$1)|0);
  18819. $$0 = $23;
  18820. break;
  18821. }
  18822. $24 = ((($5)) + 3|0);
  18823. $25 = HEAP8[$24>>0]|0;
  18824. $26 = ($25<<24>>24)==(0);
  18825. if ($26) {
  18826. $$0 = 0;
  18827. } else {
  18828. $27 = ((($1)) + 4|0);
  18829. $28 = HEAP8[$27>>0]|0;
  18830. $29 = ($28<<24>>24)==(0);
  18831. if ($29) {
  18832. $30 = (_fourbyte_strstr($5,$1)|0);
  18833. $$0 = $30;
  18834. break;
  18835. } else {
  18836. $31 = (_twoway_strstr($5,$1)|0);
  18837. $$0 = $31;
  18838. break;
  18839. }
  18840. }
  18841. }
  18842. }
  18843. }
  18844. }
  18845. }
  18846. } while(0);
  18847. return ($$0|0);
  18848. }
  18849. function _twobyte_strstr($0,$1) {
  18850. $0 = $0|0;
  18851. $1 = $1|0;
  18852. var $$lcssa = 0, $$sink = 0, $$sink$in = 0, $$sink$masked = 0, $$sink17$sink = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0;
  18853. var label = 0, sp = 0;
  18854. sp = STACKTOP;
  18855. $2 = HEAP8[$1>>0]|0;
  18856. $3 = $2&255;
  18857. $4 = $3 << 8;
  18858. $5 = ((($1)) + 1|0);
  18859. $6 = HEAP8[$5>>0]|0;
  18860. $7 = $6&255;
  18861. $8 = $4 | $7;
  18862. $9 = HEAP8[$0>>0]|0;
  18863. $10 = $9&255;
  18864. $$sink$in = $10;$$sink17$sink = $0;
  18865. while(1) {
  18866. $11 = ((($$sink17$sink)) + 1|0);
  18867. $12 = HEAP8[$11>>0]|0;
  18868. $13 = ($12<<24>>24)==(0);
  18869. if ($13) {
  18870. $$lcssa = 0;
  18871. break;
  18872. }
  18873. $$sink = $$sink$in << 8;
  18874. $14 = $12&255;
  18875. $$sink$masked = $$sink & 65280;
  18876. $15 = $14 | $$sink$masked;
  18877. $16 = ($15|0)==($8|0);
  18878. if ($16) {
  18879. $$lcssa = $$sink17$sink;
  18880. break;
  18881. } else {
  18882. $$sink$in = $15;$$sink17$sink = $11;
  18883. }
  18884. }
  18885. return ($$lcssa|0);
  18886. }
  18887. function _threebyte_strstr($0,$1) {
  18888. $0 = $0|0;
  18889. $1 = $1|0;
  18890. var $$016$lcssa = 0, $$01619 = 0, $$020 = 0, $$lcssa = 0, $$not = 0, $$not17 = 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;
  18891. var $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, $36 = 0, $37 = 0, $38 = 0, $4 = 0, $5 = 0, $6 = 0;
  18892. var $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond18 = 0, label = 0, sp = 0;
  18893. sp = STACKTOP;
  18894. $2 = HEAP8[$1>>0]|0;
  18895. $3 = $2&255;
  18896. $4 = $3 << 24;
  18897. $5 = ((($1)) + 1|0);
  18898. $6 = HEAP8[$5>>0]|0;
  18899. $7 = $6&255;
  18900. $8 = $7 << 16;
  18901. $9 = $8 | $4;
  18902. $10 = ((($1)) + 2|0);
  18903. $11 = HEAP8[$10>>0]|0;
  18904. $12 = $11&255;
  18905. $13 = $12 << 8;
  18906. $14 = $9 | $13;
  18907. $15 = HEAP8[$0>>0]|0;
  18908. $16 = $15&255;
  18909. $17 = $16 << 24;
  18910. $18 = ((($0)) + 1|0);
  18911. $19 = HEAP8[$18>>0]|0;
  18912. $20 = $19&255;
  18913. $21 = $20 << 16;
  18914. $22 = $21 | $17;
  18915. $23 = ((($0)) + 2|0);
  18916. $24 = HEAP8[$23>>0]|0;
  18917. $25 = $24&255;
  18918. $26 = $25 << 8;
  18919. $27 = $22 | $26;
  18920. $28 = ($24<<24>>24)!=(0);
  18921. $$not17 = $28 ^ 1;
  18922. $29 = ($27|0)==($14|0);
  18923. $or$cond18 = $29 | $$not17;
  18924. if ($or$cond18) {
  18925. $$016$lcssa = $23;$$lcssa = $28;
  18926. } else {
  18927. $$01619 = $23;$$020 = $27;
  18928. while(1) {
  18929. $30 = ((($$01619)) + 1|0);
  18930. $31 = HEAP8[$30>>0]|0;
  18931. $32 = $31&255;
  18932. $33 = $32 | $$020;
  18933. $34 = $33 << 8;
  18934. $35 = ($31<<24>>24)!=(0);
  18935. $$not = $35 ^ 1;
  18936. $36 = ($34|0)==($14|0);
  18937. $or$cond = $36 | $$not;
  18938. if ($or$cond) {
  18939. $$016$lcssa = $30;$$lcssa = $35;
  18940. break;
  18941. } else {
  18942. $$01619 = $30;$$020 = $34;
  18943. }
  18944. }
  18945. }
  18946. $37 = ((($$016$lcssa)) + -2|0);
  18947. $38 = $$lcssa ? $37 : 0;
  18948. return ($38|0);
  18949. }
  18950. function _fourbyte_strstr($0,$1) {
  18951. $0 = $0|0;
  18952. $1 = $1|0;
  18953. var $$lcssa = 0, $$not = 0, $$not22 = 0, $$sink21$lcssa = 0, $$sink2124 = 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;
  18954. var $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, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0;
  18955. var $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $or$cond23 = 0, label = 0, sp = 0;
  18956. sp = STACKTOP;
  18957. $2 = HEAP8[$1>>0]|0;
  18958. $3 = $2&255;
  18959. $4 = $3 << 24;
  18960. $5 = ((($1)) + 1|0);
  18961. $6 = HEAP8[$5>>0]|0;
  18962. $7 = $6&255;
  18963. $8 = $7 << 16;
  18964. $9 = $8 | $4;
  18965. $10 = ((($1)) + 2|0);
  18966. $11 = HEAP8[$10>>0]|0;
  18967. $12 = $11&255;
  18968. $13 = $12 << 8;
  18969. $14 = $9 | $13;
  18970. $15 = ((($1)) + 3|0);
  18971. $16 = HEAP8[$15>>0]|0;
  18972. $17 = $16&255;
  18973. $18 = $14 | $17;
  18974. $19 = HEAP8[$0>>0]|0;
  18975. $20 = $19&255;
  18976. $21 = $20 << 24;
  18977. $22 = ((($0)) + 1|0);
  18978. $23 = HEAP8[$22>>0]|0;
  18979. $24 = $23&255;
  18980. $25 = $24 << 16;
  18981. $26 = $25 | $21;
  18982. $27 = ((($0)) + 2|0);
  18983. $28 = HEAP8[$27>>0]|0;
  18984. $29 = $28&255;
  18985. $30 = $29 << 8;
  18986. $31 = $26 | $30;
  18987. $32 = ((($0)) + 3|0);
  18988. $33 = HEAP8[$32>>0]|0;
  18989. $34 = $33&255;
  18990. $35 = $34 | $31;
  18991. $36 = ($33<<24>>24)!=(0);
  18992. $$not22 = $36 ^ 1;
  18993. $37 = ($35|0)==($18|0);
  18994. $or$cond23 = $37 | $$not22;
  18995. if ($or$cond23) {
  18996. $$lcssa = $36;$$sink21$lcssa = $32;
  18997. } else {
  18998. $$sink2124 = $32;$39 = $35;
  18999. while(1) {
  19000. $38 = $39 << 8;
  19001. $40 = ((($$sink2124)) + 1|0);
  19002. $41 = HEAP8[$40>>0]|0;
  19003. $42 = $41&255;
  19004. $43 = $42 | $38;
  19005. $44 = ($41<<24>>24)!=(0);
  19006. $$not = $44 ^ 1;
  19007. $45 = ($43|0)==($18|0);
  19008. $or$cond = $45 | $$not;
  19009. if ($or$cond) {
  19010. $$lcssa = $44;$$sink21$lcssa = $40;
  19011. break;
  19012. } else {
  19013. $$sink2124 = $40;$39 = $43;
  19014. }
  19015. }
  19016. }
  19017. $46 = ((($$sink21$lcssa)) + -3|0);
  19018. $47 = $$lcssa ? $46 : 0;
  19019. return ($47|0);
  19020. }
  19021. function _twoway_strstr($0,$1) {
  19022. $0 = $0|0;
  19023. $1 = $1|0;
  19024. var $$0166 = 0, $$0168 = 0, $$0169 = 0, $$0169$be = 0, $$0170 = 0, $$0175$ph$ph$lcssa220 = 0, $$0175$ph$ph$lcssa220323 = 0, $$0175$ph$ph256 = 0, $$0179244 = 0, $$0183$ph200$ph255 = 0, $$0183$ph200250 = 0, $$0183$ph262 = 0, $$0185$ph$lcssa = 0, $$0185$ph$lcssa322 = 0, $$0185$ph261 = 0, $$0187$lcssa320321 = 0, $$0187266 = 0, $$1176$$0175 = 0, $$1176$ph$ph$lcssa211 = 0, $$1176$ph$ph235 = 0;
  19025. var $$1180224 = 0, $$1184$ph196$ph234 = 0, $$1184$ph196229 = 0, $$1184$ph241 = 0, $$1186$$0185 = 0, $$1186$$0185$ = 0, $$1186$ph$lcssa = 0, $$1186$ph240 = 0, $$2181 = 0, $$2181$sink = 0, $$3 = 0, $$3173 = 0, $$3178 = 0, $$3182223 = 0, $$4 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0;
  19026. var $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, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0;
  19027. var $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, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0;
  19028. var $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, $36 = 0, $37 = 0;
  19029. var $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, $54 = 0, $55 = 0;
  19030. var $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, $73 = 0;
  19031. var $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, $91 = 0;
  19032. var $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $cond = 0, $cond191 = 0, $cond191222 = 0, $cond265 = 0, $div = 0, $div188 = 0, $or$cond = 0, $or$cond190 = 0, label = 0, sp = 0;
  19033. sp = STACKTOP;
  19034. STACKTOP = STACKTOP + 1056|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(1056|0);
  19035. $2 = sp + 1024|0;
  19036. $3 = sp;
  19037. ;HEAP32[$2>>2]=0|0;HEAP32[$2+4>>2]=0|0;HEAP32[$2+8>>2]=0|0;HEAP32[$2+12>>2]=0|0;HEAP32[$2+16>>2]=0|0;HEAP32[$2+20>>2]=0|0;HEAP32[$2+24>>2]=0|0;HEAP32[$2+28>>2]=0|0;
  19038. $4 = HEAP8[$1>>0]|0;
  19039. $cond265 = ($4<<24>>24)==(0);
  19040. L1: do {
  19041. if ($cond265) {
  19042. $$0175$ph$ph$lcssa220323 = 1;$$0185$ph$lcssa322 = -1;$$0187$lcssa320321 = 0;$$1176$ph$ph$lcssa211 = 1;$$1186$ph$lcssa = -1;
  19043. label = 27;
  19044. } else {
  19045. $5 = $4&255;
  19046. $$0187266 = 0;$12 = $4;$20 = $5;
  19047. while(1) {
  19048. $8 = (($0) + ($$0187266)|0);
  19049. $9 = HEAP8[$8>>0]|0;
  19050. $10 = ($9<<24>>24)==(0);
  19051. if ($10) {
  19052. $$3 = 0;
  19053. break L1;
  19054. }
  19055. $11 = $12 & 31;
  19056. $13 = $11&255;
  19057. $14 = 1 << $13;
  19058. $div188 = ($12&255) >>> 5;
  19059. $15 = $div188&255;
  19060. $16 = (($2) + ($15<<2)|0);
  19061. $17 = HEAP32[$16>>2]|0;
  19062. $18 = $17 | $14;
  19063. HEAP32[$16>>2] = $18;
  19064. $7 = (($$0187266) + 1)|0;
  19065. $19 = (($3) + ($20<<2)|0);
  19066. HEAP32[$19>>2] = $7;
  19067. $21 = (($1) + ($7)|0);
  19068. $22 = HEAP8[$21>>0]|0;
  19069. $23 = $22&255;
  19070. $cond = ($22<<24>>24)==(0);
  19071. if ($cond) {
  19072. break;
  19073. } else {
  19074. $$0187266 = $7;$12 = $22;$20 = $23;
  19075. }
  19076. }
  19077. $6 = ($7>>>0)>(1);
  19078. if ($6) {
  19079. $$0183$ph262 = 0;$$0185$ph261 = -1;$129 = 1;
  19080. L7: while(1) {
  19081. $$0175$ph$ph256 = 1;$$0183$ph200$ph255 = $$0183$ph262;$132 = $129;
  19082. while(1) {
  19083. $$0183$ph200250 = $$0183$ph200$ph255;$131 = $132;
  19084. L11: while(1) {
  19085. $$0179244 = 1;$31 = $131;
  19086. while(1) {
  19087. $27 = (($$0179244) + ($$0185$ph261))|0;
  19088. $28 = (($1) + ($27)|0);
  19089. $29 = HEAP8[$28>>0]|0;
  19090. $30 = (($1) + ($31)|0);
  19091. $32 = HEAP8[$30>>0]|0;
  19092. $33 = ($29<<24>>24)==($32<<24>>24);
  19093. if (!($33)) {
  19094. break L11;
  19095. }
  19096. $34 = ($$0179244|0)==($$0175$ph$ph256|0);
  19097. $25 = (($$0179244) + 1)|0;
  19098. if ($34) {
  19099. break;
  19100. }
  19101. $24 = (($25) + ($$0183$ph200250))|0;
  19102. $26 = ($24>>>0)<($7>>>0);
  19103. if ($26) {
  19104. $$0179244 = $25;$31 = $24;
  19105. } else {
  19106. $$0175$ph$ph$lcssa220 = $$0175$ph$ph256;$$0185$ph$lcssa = $$0185$ph261;
  19107. break L7;
  19108. }
  19109. }
  19110. $35 = (($$0175$ph$ph256) + ($$0183$ph200250))|0;
  19111. $36 = (($35) + 1)|0;
  19112. $37 = ($36>>>0)<($7>>>0);
  19113. if ($37) {
  19114. $$0183$ph200250 = $35;$131 = $36;
  19115. } else {
  19116. $$0175$ph$ph$lcssa220 = $$0175$ph$ph256;$$0185$ph$lcssa = $$0185$ph261;
  19117. break L7;
  19118. }
  19119. }
  19120. $38 = ($29&255)>($32&255);
  19121. $39 = (($31) - ($$0185$ph261))|0;
  19122. if (!($38)) {
  19123. break;
  19124. }
  19125. $43 = (($31) + 1)|0;
  19126. $44 = ($43>>>0)<($7>>>0);
  19127. if ($44) {
  19128. $$0175$ph$ph256 = $39;$$0183$ph200$ph255 = $31;$132 = $43;
  19129. } else {
  19130. $$0175$ph$ph$lcssa220 = $39;$$0185$ph$lcssa = $$0185$ph261;
  19131. break L7;
  19132. }
  19133. }
  19134. $40 = (($$0183$ph200250) + 1)|0;
  19135. $41 = (($$0183$ph200250) + 2)|0;
  19136. $42 = ($41>>>0)<($7>>>0);
  19137. if ($42) {
  19138. $$0183$ph262 = $40;$$0185$ph261 = $$0183$ph200250;$129 = $41;
  19139. } else {
  19140. $$0175$ph$ph$lcssa220 = 1;$$0185$ph$lcssa = $$0183$ph200250;
  19141. break;
  19142. }
  19143. }
  19144. if ($6) {
  19145. $$1184$ph241 = 0;$$1186$ph240 = -1;$130 = 1;
  19146. while(1) {
  19147. $$1176$ph$ph235 = 1;$$1184$ph196$ph234 = $$1184$ph241;$134 = $130;
  19148. while(1) {
  19149. $$1184$ph196229 = $$1184$ph196$ph234;$133 = $134;
  19150. L26: while(1) {
  19151. $$1180224 = 1;$52 = $133;
  19152. while(1) {
  19153. $48 = (($$1180224) + ($$1186$ph240))|0;
  19154. $49 = (($1) + ($48)|0);
  19155. $50 = HEAP8[$49>>0]|0;
  19156. $51 = (($1) + ($52)|0);
  19157. $53 = HEAP8[$51>>0]|0;
  19158. $54 = ($50<<24>>24)==($53<<24>>24);
  19159. if (!($54)) {
  19160. break L26;
  19161. }
  19162. $55 = ($$1180224|0)==($$1176$ph$ph235|0);
  19163. $46 = (($$1180224) + 1)|0;
  19164. if ($55) {
  19165. break;
  19166. }
  19167. $45 = (($46) + ($$1184$ph196229))|0;
  19168. $47 = ($45>>>0)<($7>>>0);
  19169. if ($47) {
  19170. $$1180224 = $46;$52 = $45;
  19171. } else {
  19172. $$0175$ph$ph$lcssa220323 = $$0175$ph$ph$lcssa220;$$0185$ph$lcssa322 = $$0185$ph$lcssa;$$0187$lcssa320321 = $7;$$1176$ph$ph$lcssa211 = $$1176$ph$ph235;$$1186$ph$lcssa = $$1186$ph240;
  19173. label = 27;
  19174. break L1;
  19175. }
  19176. }
  19177. $56 = (($$1176$ph$ph235) + ($$1184$ph196229))|0;
  19178. $57 = (($56) + 1)|0;
  19179. $58 = ($57>>>0)<($7>>>0);
  19180. if ($58) {
  19181. $$1184$ph196229 = $56;$133 = $57;
  19182. } else {
  19183. $$0175$ph$ph$lcssa220323 = $$0175$ph$ph$lcssa220;$$0185$ph$lcssa322 = $$0185$ph$lcssa;$$0187$lcssa320321 = $7;$$1176$ph$ph$lcssa211 = $$1176$ph$ph235;$$1186$ph$lcssa = $$1186$ph240;
  19184. label = 27;
  19185. break L1;
  19186. }
  19187. }
  19188. $59 = ($50&255)<($53&255);
  19189. $60 = (($52) - ($$1186$ph240))|0;
  19190. if (!($59)) {
  19191. break;
  19192. }
  19193. $64 = (($52) + 1)|0;
  19194. $65 = ($64>>>0)<($7>>>0);
  19195. if ($65) {
  19196. $$1176$ph$ph235 = $60;$$1184$ph196$ph234 = $52;$134 = $64;
  19197. } else {
  19198. $$0175$ph$ph$lcssa220323 = $$0175$ph$ph$lcssa220;$$0185$ph$lcssa322 = $$0185$ph$lcssa;$$0187$lcssa320321 = $7;$$1176$ph$ph$lcssa211 = $60;$$1186$ph$lcssa = $$1186$ph240;
  19199. label = 27;
  19200. break L1;
  19201. }
  19202. }
  19203. $61 = (($$1184$ph196229) + 1)|0;
  19204. $62 = (($$1184$ph196229) + 2)|0;
  19205. $63 = ($62>>>0)<($7>>>0);
  19206. if ($63) {
  19207. $$1184$ph241 = $61;$$1186$ph240 = $$1184$ph196229;$130 = $62;
  19208. } else {
  19209. $$0175$ph$ph$lcssa220323 = $$0175$ph$ph$lcssa220;$$0185$ph$lcssa322 = $$0185$ph$lcssa;$$0187$lcssa320321 = $7;$$1176$ph$ph$lcssa211 = 1;$$1186$ph$lcssa = $$1184$ph196229;
  19210. label = 27;
  19211. break;
  19212. }
  19213. }
  19214. } else {
  19215. $$0175$ph$ph$lcssa220323 = $$0175$ph$ph$lcssa220;$$0185$ph$lcssa322 = $$0185$ph$lcssa;$$0187$lcssa320321 = $7;$$1176$ph$ph$lcssa211 = 1;$$1186$ph$lcssa = -1;
  19216. label = 27;
  19217. }
  19218. } else {
  19219. $$0175$ph$ph$lcssa220323 = 1;$$0185$ph$lcssa322 = -1;$$0187$lcssa320321 = $7;$$1176$ph$ph$lcssa211 = 1;$$1186$ph$lcssa = -1;
  19220. label = 27;
  19221. }
  19222. }
  19223. } while(0);
  19224. L36: do {
  19225. if ((label|0) == 27) {
  19226. $66 = (($$1186$ph$lcssa) + 1)|0;
  19227. $67 = (($$0185$ph$lcssa322) + 1)|0;
  19228. $68 = ($66>>>0)>($67>>>0);
  19229. $$1176$$0175 = $68 ? $$1176$ph$ph$lcssa211 : $$0175$ph$ph$lcssa220323;
  19230. $$1186$$0185 = $68 ? $$1186$ph$lcssa : $$0185$ph$lcssa322;
  19231. $69 = (($1) + ($$1176$$0175)|0);
  19232. $70 = (($$1186$$0185) + 1)|0;
  19233. $71 = (_memcmp($1,$69,$70)|0);
  19234. $72 = ($71|0)==(0);
  19235. if ($72) {
  19236. $77 = (($$0187$lcssa320321) - ($$1176$$0175))|0;
  19237. $$0168 = $77;$$3178 = $$1176$$0175;
  19238. } else {
  19239. $73 = (($$0187$lcssa320321) - ($$1186$$0185))|0;
  19240. $74 = (($73) + -1)|0;
  19241. $75 = ($$1186$$0185>>>0)>($74>>>0);
  19242. $$1186$$0185$ = $75 ? $$1186$$0185 : $74;
  19243. $76 = (($$1186$$0185$) + 1)|0;
  19244. $$0168 = 0;$$3178 = $76;
  19245. }
  19246. $78 = $$0187$lcssa320321 | 63;
  19247. $79 = (($$0187$lcssa320321) + -1)|0;
  19248. $80 = ($$0168|0)!=(0);
  19249. $81 = (($$0187$lcssa320321) - ($$3178))|0;
  19250. $$0166 = $0;$$0169 = 0;$$0170 = $0;
  19251. while(1) {
  19252. $82 = $$0170;
  19253. $83 = $$0166;
  19254. $84 = (($82) - ($83))|0;
  19255. $85 = ($84>>>0)<($$0187$lcssa320321>>>0);
  19256. do {
  19257. if ($85) {
  19258. $86 = (_memchr($$0170,0,$78)|0);
  19259. $87 = ($86|0)==(0|0);
  19260. if ($87) {
  19261. $91 = (($$0170) + ($78)|0);
  19262. $$3173 = $91;
  19263. break;
  19264. } else {
  19265. $88 = $86;
  19266. $89 = (($88) - ($83))|0;
  19267. $90 = ($89>>>0)<($$0187$lcssa320321>>>0);
  19268. if ($90) {
  19269. $$3 = 0;
  19270. break L36;
  19271. } else {
  19272. $$3173 = $86;
  19273. break;
  19274. }
  19275. }
  19276. } else {
  19277. $$3173 = $$0170;
  19278. }
  19279. } while(0);
  19280. $92 = (($$0166) + ($79)|0);
  19281. $93 = HEAP8[$92>>0]|0;
  19282. $div = ($93&255) >>> 5;
  19283. $94 = $div&255;
  19284. $95 = (($2) + ($94<<2)|0);
  19285. $96 = HEAP32[$95>>2]|0;
  19286. $97 = $93 & 31;
  19287. $98 = $97&255;
  19288. $99 = 1 << $98;
  19289. $100 = $99 & $96;
  19290. $101 = ($100|0)==(0);
  19291. L50: do {
  19292. if ($101) {
  19293. $$0169$be = 0;$$2181$sink = $$0187$lcssa320321;
  19294. } else {
  19295. $102 = $93&255;
  19296. $103 = (($3) + ($102<<2)|0);
  19297. $104 = HEAP32[$103>>2]|0;
  19298. $105 = (($$0187$lcssa320321) - ($104))|0;
  19299. $106 = ($105|0)==(0);
  19300. if (!($106)) {
  19301. $107 = ($$0169|0)!=(0);
  19302. $or$cond = $80 & $107;
  19303. $108 = ($105>>>0)<($$3178>>>0);
  19304. $or$cond190 = $or$cond & $108;
  19305. $$2181 = $or$cond190 ? $81 : $105;
  19306. $$0169$be = 0;$$2181$sink = $$2181;
  19307. break;
  19308. }
  19309. $110 = ($70>>>0)>($$0169>>>0);
  19310. $111 = $110 ? $70 : $$0169;
  19311. $112 = (($1) + ($111)|0);
  19312. $113 = HEAP8[$112>>0]|0;
  19313. $cond191222 = ($113<<24>>24)==(0);
  19314. L55: do {
  19315. if ($cond191222) {
  19316. $$4 = $70;
  19317. } else {
  19318. $$3182223 = $111;$117 = $113;
  19319. while(1) {
  19320. $114 = (($$0166) + ($$3182223)|0);
  19321. $115 = HEAP8[$114>>0]|0;
  19322. $116 = ($117<<24>>24)==($115<<24>>24);
  19323. if (!($116)) {
  19324. break;
  19325. }
  19326. $118 = (($$3182223) + 1)|0;
  19327. $119 = (($1) + ($118)|0);
  19328. $120 = HEAP8[$119>>0]|0;
  19329. $cond191 = ($120<<24>>24)==(0);
  19330. if ($cond191) {
  19331. $$4 = $70;
  19332. break L55;
  19333. } else {
  19334. $$3182223 = $118;$117 = $120;
  19335. }
  19336. }
  19337. $121 = (($$3182223) - ($$1186$$0185))|0;
  19338. $$0169$be = 0;$$2181$sink = $121;
  19339. break L50;
  19340. }
  19341. } while(0);
  19342. while(1) {
  19343. $122 = ($$4>>>0)>($$0169>>>0);
  19344. if (!($122)) {
  19345. $$3 = $$0166;
  19346. break L36;
  19347. }
  19348. $123 = (($$4) + -1)|0;
  19349. $124 = (($1) + ($123)|0);
  19350. $125 = HEAP8[$124>>0]|0;
  19351. $126 = (($$0166) + ($123)|0);
  19352. $127 = HEAP8[$126>>0]|0;
  19353. $128 = ($125<<24>>24)==($127<<24>>24);
  19354. if ($128) {
  19355. $$4 = $123;
  19356. } else {
  19357. $$0169$be = $$0168;$$2181$sink = $$3178;
  19358. break;
  19359. }
  19360. }
  19361. }
  19362. } while(0);
  19363. $109 = (($$0166) + ($$2181$sink)|0);
  19364. $$0166 = $109;$$0169 = $$0169$be;$$0170 = $$3173;
  19365. }
  19366. }
  19367. } while(0);
  19368. STACKTOP = sp;return ($$3|0);
  19369. }
  19370. function _strspn($0,$1) {
  19371. $0 = $0|0;
  19372. $1 = $1|0;
  19373. var $$0 = 0, $$01925 = 0, $$020 = 0, $$1$lcssa = 0, $$123 = 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;
  19374. var $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, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0;
  19375. var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $div = 0, $div21 = 0, label = 0, sp = 0;
  19376. sp = STACKTOP;
  19377. STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
  19378. $2 = sp;
  19379. ;HEAP32[$2>>2]=0|0;HEAP32[$2+4>>2]=0|0;HEAP32[$2+8>>2]=0|0;HEAP32[$2+12>>2]=0|0;HEAP32[$2+16>>2]=0|0;HEAP32[$2+20>>2]=0|0;HEAP32[$2+24>>2]=0|0;HEAP32[$2+28>>2]=0|0;
  19380. $3 = HEAP8[$1>>0]|0;
  19381. $4 = ($3<<24>>24)==(0);
  19382. do {
  19383. if ($4) {
  19384. $$0 = 0;
  19385. } else {
  19386. $5 = ((($1)) + 1|0);
  19387. $6 = HEAP8[$5>>0]|0;
  19388. $7 = ($6<<24>>24)==(0);
  19389. if ($7) {
  19390. $$020 = $0;
  19391. while(1) {
  19392. $8 = HEAP8[$$020>>0]|0;
  19393. $9 = ($8<<24>>24)==($3<<24>>24);
  19394. $10 = ((($$020)) + 1|0);
  19395. if ($9) {
  19396. $$020 = $10;
  19397. } else {
  19398. break;
  19399. }
  19400. }
  19401. $11 = $$020;
  19402. $12 = $0;
  19403. $13 = (($11) - ($12))|0;
  19404. $$0 = $13;
  19405. break;
  19406. } else {
  19407. $$01925 = $1;$17 = $3;
  19408. }
  19409. while(1) {
  19410. $16 = $17 & 31;
  19411. $18 = $16&255;
  19412. $19 = 1 << $18;
  19413. $div21 = ($17&255) >>> 5;
  19414. $20 = $div21&255;
  19415. $21 = (($2) + ($20<<2)|0);
  19416. $22 = HEAP32[$21>>2]|0;
  19417. $23 = $22 | $19;
  19418. HEAP32[$21>>2] = $23;
  19419. $24 = ((($$01925)) + 1|0);
  19420. $25 = HEAP8[$24>>0]|0;
  19421. $26 = ($25<<24>>24)==(0);
  19422. if ($26) {
  19423. break;
  19424. } else {
  19425. $$01925 = $24;$17 = $25;
  19426. }
  19427. }
  19428. $14 = HEAP8[$0>>0]|0;
  19429. $15 = ($14<<24>>24)==(0);
  19430. L10: do {
  19431. if ($15) {
  19432. $$1$lcssa = $0;
  19433. } else {
  19434. $$123 = $0;$27 = $14;
  19435. while(1) {
  19436. $div = ($27&255) >>> 5;
  19437. $28 = $div&255;
  19438. $29 = (($2) + ($28<<2)|0);
  19439. $30 = HEAP32[$29>>2]|0;
  19440. $31 = $27 & 31;
  19441. $32 = $31&255;
  19442. $33 = 1 << $32;
  19443. $34 = $30 & $33;
  19444. $35 = ($34|0)==(0);
  19445. if ($35) {
  19446. $$1$lcssa = $$123;
  19447. break L10;
  19448. }
  19449. $36 = ((($$123)) + 1|0);
  19450. $37 = HEAP8[$36>>0]|0;
  19451. $38 = ($37<<24>>24)==(0);
  19452. if ($38) {
  19453. $$1$lcssa = $36;
  19454. break;
  19455. } else {
  19456. $$123 = $36;$27 = $37;
  19457. }
  19458. }
  19459. }
  19460. } while(0);
  19461. $39 = $$1$lcssa;
  19462. $40 = $0;
  19463. $41 = (($39) - ($40))|0;
  19464. $$0 = $41;
  19465. }
  19466. } while(0);
  19467. STACKTOP = sp;return ($$0|0);
  19468. }
  19469. function _srand($0) {
  19470. $0 = $0|0;
  19471. var $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0;
  19472. sp = STACKTOP;
  19473. $1 = (($0) + -1)|0;
  19474. $2 = 14336;
  19475. $3 = $2;
  19476. HEAP32[$3>>2] = $1;
  19477. $4 = (($2) + 4)|0;
  19478. $5 = $4;
  19479. HEAP32[$5>>2] = 0;
  19480. return;
  19481. }
  19482. function _vprintf($0,$1) {
  19483. $0 = $0|0;
  19484. $1 = $1|0;
  19485. var $2 = 0, $3 = 0, label = 0, sp = 0;
  19486. sp = STACKTOP;
  19487. $2 = HEAP32[806]|0;
  19488. $3 = (_vfprintf($2,$0,$1)|0);
  19489. return ($3|0);
  19490. }
  19491. function _strcspn($0,$1) {
  19492. $0 = $0|0;
  19493. $1 = $1|0;
  19494. var $$01824 = 0, $$019$sink = 0, $$01922 = 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;
  19495. var $26 = 0, $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, $div = 0;
  19496. var $div20 = 0, label = 0, sp = 0;
  19497. sp = STACKTOP;
  19498. STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(32|0);
  19499. $2 = sp;
  19500. $3 = HEAP8[$1>>0]|0;
  19501. $4 = ($3<<24>>24)==(0);
  19502. L1: do {
  19503. if ($4) {
  19504. label = 3;
  19505. } else {
  19506. $5 = ((($1)) + 1|0);
  19507. $6 = HEAP8[$5>>0]|0;
  19508. $7 = ($6<<24>>24)==(0);
  19509. if ($7) {
  19510. label = 3;
  19511. } else {
  19512. ;HEAP32[$2>>2]=0|0;HEAP32[$2+4>>2]=0|0;HEAP32[$2+8>>2]=0|0;HEAP32[$2+12>>2]=0|0;HEAP32[$2+16>>2]=0|0;HEAP32[$2+20>>2]=0|0;HEAP32[$2+24>>2]=0|0;HEAP32[$2+28>>2]=0|0;
  19513. $$01824 = $1;$13 = $3;
  19514. while(1) {
  19515. $12 = $13 & 31;
  19516. $14 = $12&255;
  19517. $15 = 1 << $14;
  19518. $div20 = ($13&255) >>> 5;
  19519. $16 = $div20&255;
  19520. $17 = (($2) + ($16<<2)|0);
  19521. $18 = HEAP32[$17>>2]|0;
  19522. $19 = $18 | $15;
  19523. HEAP32[$17>>2] = $19;
  19524. $20 = ((($$01824)) + 1|0);
  19525. $21 = HEAP8[$20>>0]|0;
  19526. $22 = ($21<<24>>24)==(0);
  19527. if ($22) {
  19528. break;
  19529. } else {
  19530. $$01824 = $20;$13 = $21;
  19531. }
  19532. }
  19533. $10 = HEAP8[$0>>0]|0;
  19534. $11 = ($10<<24>>24)==(0);
  19535. if ($11) {
  19536. $$019$sink = $0;
  19537. } else {
  19538. $$01922 = $0;$23 = $10;
  19539. while(1) {
  19540. $div = ($23&255) >>> 5;
  19541. $24 = $div&255;
  19542. $25 = (($2) + ($24<<2)|0);
  19543. $26 = HEAP32[$25>>2]|0;
  19544. $27 = $23 & 31;
  19545. $28 = $27&255;
  19546. $29 = 1 << $28;
  19547. $30 = $26 & $29;
  19548. $31 = ($30|0)==(0);
  19549. if (!($31)) {
  19550. $$019$sink = $$01922;
  19551. break L1;
  19552. }
  19553. $32 = ((($$01922)) + 1|0);
  19554. $33 = HEAP8[$32>>0]|0;
  19555. $34 = ($33<<24>>24)==(0);
  19556. if ($34) {
  19557. $$019$sink = $32;
  19558. break;
  19559. } else {
  19560. $$01922 = $32;$23 = $33;
  19561. }
  19562. }
  19563. }
  19564. }
  19565. }
  19566. } while(0);
  19567. if ((label|0) == 3) {
  19568. $8 = $3 << 24 >> 24;
  19569. $9 = (___strchrnul($0,$8)|0);
  19570. $$019$sink = $9;
  19571. }
  19572. $35 = $$019$sink;
  19573. $36 = $0;
  19574. $37 = (($35) - ($36))|0;
  19575. STACKTOP = sp;return ($37|0);
  19576. }
  19577. function _strcat($0,$1) {
  19578. $0 = $0|0;
  19579. $1 = $1|0;
  19580. var $2 = 0, $3 = 0, label = 0, sp = 0;
  19581. sp = STACKTOP;
  19582. $2 = (_strlen($0)|0);
  19583. $3 = (($0) + ($2)|0);
  19584. (_strcpy($3,$1)|0);
  19585. return ($0|0);
  19586. }
  19587. function _strtok($0,$1) {
  19588. $0 = $0|0;
  19589. $1 = $1|0;
  19590. var $$0 = 0, $$010 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  19591. sp = STACKTOP;
  19592. $2 = ($0|0)==(0|0);
  19593. if ($2) {
  19594. $3 = HEAP32[4182]|0;
  19595. $4 = ($3|0)==(0|0);
  19596. if ($4) {
  19597. $$0 = 0;
  19598. } else {
  19599. $$010 = $3;
  19600. label = 3;
  19601. }
  19602. } else {
  19603. $$010 = $0;
  19604. label = 3;
  19605. }
  19606. do {
  19607. if ((label|0) == 3) {
  19608. $5 = (_strspn($$010,$1)|0);
  19609. $6 = (($$010) + ($5)|0);
  19610. $7 = HEAP8[$6>>0]|0;
  19611. $8 = ($7<<24>>24)==(0);
  19612. if ($8) {
  19613. HEAP32[4182] = 0;
  19614. $$0 = 0;
  19615. break;
  19616. }
  19617. $9 = (_strcspn($6,$1)|0);
  19618. $10 = (($6) + ($9)|0);
  19619. HEAP32[4182] = $10;
  19620. $11 = HEAP8[$10>>0]|0;
  19621. $12 = ($11<<24>>24)==(0);
  19622. if ($12) {
  19623. HEAP32[4182] = 0;
  19624. $$0 = $6;
  19625. break;
  19626. } else {
  19627. $13 = ((($10)) + 1|0);
  19628. HEAP32[4182] = $13;
  19629. HEAP8[$10>>0] = 0;
  19630. $$0 = $6;
  19631. break;
  19632. }
  19633. }
  19634. } while(0);
  19635. return ($$0|0);
  19636. }
  19637. function _malloc($0) {
  19638. $0 = $0|0;
  19639. var $$$0192$i = 0, $$$0193$i = 0, $$$4236$i = 0, $$$4351$i = 0, $$$i = 0, $$0 = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i18$i = 0, $$01$i$i = 0, $$0189$i = 0, $$0192$lcssa$i = 0, $$01928$i = 0, $$0193$lcssa$i = 0, $$01937$i = 0, $$0197 = 0, $$0199 = 0, $$0206$i$i = 0, $$0207$i$i = 0, $$0211$i$i = 0;
  19640. var $$0212$i$i = 0, $$024371$i = 0, $$0287$i$i = 0, $$0288$i$i = 0, $$0289$i$i = 0, $$0295$i$i = 0, $$0296$i$i = 0, $$0342$i = 0, $$0344$i = 0, $$0345$i = 0, $$0347$i = 0, $$0353$i = 0, $$0358$i = 0, $$0359$$i = 0, $$0359$i = 0, $$0361$i = 0, $$0362$i = 0, $$0368$i = 0, $$1196$i = 0, $$1198$i = 0;
  19641. var $$124470$i = 0, $$1291$i$i = 0, $$1293$i$i = 0, $$1343$i = 0, $$1348$i = 0, $$1363$i = 0, $$1370$i = 0, $$1374$i = 0, $$2234253237$i = 0, $$2247$ph$i = 0, $$2253$ph$i = 0, $$2355$i = 0, $$3$i = 0, $$3$i$i = 0, $$3$i201 = 0, $$3350$i = 0, $$3372$i = 0, $$4$lcssa$i = 0, $$4$ph$i = 0, $$415$i = 0;
  19642. var $$4236$i = 0, $$4351$lcssa$i = 0, $$435114$i = 0, $$4357$$4$i = 0, $$4357$ph$i = 0, $$435713$i = 0, $$723948$i = 0, $$749$i = 0, $$pre = 0, $$pre$i = 0, $$pre$i$i = 0, $$pre$i19$i = 0, $$pre$i210 = 0, $$pre$i212 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i20$iZ2D = 0, $$pre$phi$i211Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi11$i$iZ2D = 0, $$pre$phiZ2D = 0;
  19643. var $$pre10$i$i = 0, $$sink1$i = 0, $$sink1$i$i = 0, $$sink16$i = 0, $$sink2$i = 0, $$sink2$i204 = 0, $$sink3$i = 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;
  19644. var $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, $1021 = 0, $1022 = 0, $1023 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0;
  19645. var $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, $104 = 0, $1040 = 0, $1041 = 0, $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0;
  19646. var $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, $1058 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0;
  19647. var $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, $127 = 0, $128 = 0, $129 = 0;
  19648. var $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, $145 = 0, $146 = 0, $147 = 0;
  19649. var $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, $163 = 0, $164 = 0, $165 = 0;
  19650. var $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, $181 = 0, $182 = 0, $183 = 0;
  19651. var $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, $2 = 0, $20 = 0, $200 = 0;
  19652. var $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, $217 = 0, $218 = 0, $219 = 0;
  19653. var $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, $235 = 0, $236 = 0, $237 = 0;
  19654. var $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, $253 = 0, $254 = 0, $255 = 0;
  19655. var $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, $271 = 0, $272 = 0, $273 = 0;
  19656. var $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, $29 = 0, $290 = 0, $291 = 0;
  19657. var $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, $307 = 0, $308 = 0, $309 = 0;
  19658. var $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, $325 = 0, $326 = 0, $327 = 0;
  19659. var $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, $343 = 0, $344 = 0, $345 = 0;
  19660. var $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, $361 = 0, $362 = 0, $363 = 0;
  19661. var $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, $38 = 0, $380 = 0, $381 = 0;
  19662. var $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, $398 = 0, $399 = 0, $4 = 0;
  19663. var $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, $415 = 0, $416 = 0, $417 = 0;
  19664. var $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, $433 = 0, $434 = 0, $435 = 0;
  19665. var $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, $451 = 0, $452 = 0, $453 = 0;
  19666. var $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, $47 = 0, $470 = 0, $471 = 0;
  19667. var $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, $488 = 0, $489 = 0, $49 = 0;
  19668. var $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, $505 = 0, $506 = 0, $507 = 0;
  19669. var $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, $523 = 0, $524 = 0, $525 = 0;
  19670. var $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, $541 = 0, $542 = 0, $543 = 0;
  19671. var $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, $56 = 0, $560 = 0, $561 = 0;
  19672. var $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, $578 = 0, $579 = 0, $58 = 0;
  19673. var $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, $596 = 0, $597 = 0, $598 = 0;
  19674. var $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, $613 = 0, $614 = 0, $615 = 0;
  19675. var $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, $631 = 0, $632 = 0, $633 = 0;
  19676. var $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, $65 = 0, $650 = 0, $651 = 0;
  19677. var $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, $668 = 0, $669 = 0, $67 = 0;
  19678. var $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, $686 = 0, $687 = 0, $688 = 0;
  19679. var $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, $703 = 0, $704 = 0, $705 = 0;
  19680. var $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, $721 = 0, $722 = 0, $723 = 0;
  19681. var $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, $74 = 0, $740 = 0, $741 = 0;
  19682. var $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, $758 = 0, $759 = 0, $76 = 0;
  19683. var $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, $776 = 0, $777 = 0, $778 = 0;
  19684. var $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, $794 = 0, $795 = 0, $796 = 0;
  19685. var $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, $811 = 0, $812 = 0, $813 = 0;
  19686. var $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, $83 = 0, $830 = 0, $831 = 0;
  19687. var $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, $848 = 0, $849 = 0, $85 = 0;
  19688. var $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, $866 = 0, $867 = 0, $868 = 0;
  19689. var $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, $884 = 0, $885 = 0, $886 = 0;
  19690. var $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, $901 = 0, $902 = 0, $903 = 0;
  19691. var $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, $92 = 0, $920 = 0, $921 = 0;
  19692. var $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, $938 = 0, $939 = 0, $94 = 0;
  19693. var $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, $956 = 0, $957 = 0, $958 = 0;
  19694. var $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, $974 = 0, $975 = 0, $976 = 0;
  19695. var $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, $992 = 0, $993 = 0, $994 = 0;
  19696. var $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, $cond$i = 0, $cond$i$i = 0, $cond$i208 = 0, $exitcond$i$i = 0, $not$$i = 0, $not$$i$i = 0, $not$$i17$i = 0, $not$$i209 = 0, $not$$i216 = 0, $not$1$i = 0, $not$1$i203 = 0, $not$5$i = 0, $not$7$i$i = 0, $not$8$i = 0, $not$9$i = 0;
  19697. var $or$cond$i = 0, $or$cond$i214 = 0, $or$cond1$i = 0, $or$cond10$i = 0, $or$cond11$i = 0, $or$cond11$not$i = 0, $or$cond12$i = 0, $or$cond2$i = 0, $or$cond2$i215 = 0, $or$cond5$i = 0, $or$cond50$i = 0, $or$cond51$i = 0, $or$cond7$i = 0, label = 0, sp = 0;
  19698. sp = STACKTOP;
  19699. STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0);
  19700. $1 = sp;
  19701. $2 = ($0>>>0)<(245);
  19702. do {
  19703. if ($2) {
  19704. $3 = ($0>>>0)<(11);
  19705. $4 = (($0) + 11)|0;
  19706. $5 = $4 & -8;
  19707. $6 = $3 ? 16 : $5;
  19708. $7 = $6 >>> 3;
  19709. $8 = HEAP32[4183]|0;
  19710. $9 = $8 >>> $7;
  19711. $10 = $9 & 3;
  19712. $11 = ($10|0)==(0);
  19713. if (!($11)) {
  19714. $12 = $9 & 1;
  19715. $13 = $12 ^ 1;
  19716. $14 = (($13) + ($7))|0;
  19717. $15 = $14 << 1;
  19718. $16 = (16772 + ($15<<2)|0);
  19719. $17 = ((($16)) + 8|0);
  19720. $18 = HEAP32[$17>>2]|0;
  19721. $19 = ((($18)) + 8|0);
  19722. $20 = HEAP32[$19>>2]|0;
  19723. $21 = ($16|0)==($20|0);
  19724. do {
  19725. if ($21) {
  19726. $22 = 1 << $14;
  19727. $23 = $22 ^ -1;
  19728. $24 = $8 & $23;
  19729. HEAP32[4183] = $24;
  19730. } else {
  19731. $25 = HEAP32[(16748)>>2]|0;
  19732. $26 = ($20>>>0)<($25>>>0);
  19733. if ($26) {
  19734. _abort();
  19735. // unreachable;
  19736. }
  19737. $27 = ((($20)) + 12|0);
  19738. $28 = HEAP32[$27>>2]|0;
  19739. $29 = ($28|0)==($18|0);
  19740. if ($29) {
  19741. HEAP32[$27>>2] = $16;
  19742. HEAP32[$17>>2] = $20;
  19743. break;
  19744. } else {
  19745. _abort();
  19746. // unreachable;
  19747. }
  19748. }
  19749. } while(0);
  19750. $30 = $14 << 3;
  19751. $31 = $30 | 3;
  19752. $32 = ((($18)) + 4|0);
  19753. HEAP32[$32>>2] = $31;
  19754. $33 = (($18) + ($30)|0);
  19755. $34 = ((($33)) + 4|0);
  19756. $35 = HEAP32[$34>>2]|0;
  19757. $36 = $35 | 1;
  19758. HEAP32[$34>>2] = $36;
  19759. $$0 = $19;
  19760. STACKTOP = sp;return ($$0|0);
  19761. }
  19762. $37 = HEAP32[(16740)>>2]|0;
  19763. $38 = ($6>>>0)>($37>>>0);
  19764. if ($38) {
  19765. $39 = ($9|0)==(0);
  19766. if (!($39)) {
  19767. $40 = $9 << $7;
  19768. $41 = 2 << $7;
  19769. $42 = (0 - ($41))|0;
  19770. $43 = $41 | $42;
  19771. $44 = $40 & $43;
  19772. $45 = (0 - ($44))|0;
  19773. $46 = $44 & $45;
  19774. $47 = (($46) + -1)|0;
  19775. $48 = $47 >>> 12;
  19776. $49 = $48 & 16;
  19777. $50 = $47 >>> $49;
  19778. $51 = $50 >>> 5;
  19779. $52 = $51 & 8;
  19780. $53 = $52 | $49;
  19781. $54 = $50 >>> $52;
  19782. $55 = $54 >>> 2;
  19783. $56 = $55 & 4;
  19784. $57 = $53 | $56;
  19785. $58 = $54 >>> $56;
  19786. $59 = $58 >>> 1;
  19787. $60 = $59 & 2;
  19788. $61 = $57 | $60;
  19789. $62 = $58 >>> $60;
  19790. $63 = $62 >>> 1;
  19791. $64 = $63 & 1;
  19792. $65 = $61 | $64;
  19793. $66 = $62 >>> $64;
  19794. $67 = (($65) + ($66))|0;
  19795. $68 = $67 << 1;
  19796. $69 = (16772 + ($68<<2)|0);
  19797. $70 = ((($69)) + 8|0);
  19798. $71 = HEAP32[$70>>2]|0;
  19799. $72 = ((($71)) + 8|0);
  19800. $73 = HEAP32[$72>>2]|0;
  19801. $74 = ($69|0)==($73|0);
  19802. do {
  19803. if ($74) {
  19804. $75 = 1 << $67;
  19805. $76 = $75 ^ -1;
  19806. $77 = $8 & $76;
  19807. HEAP32[4183] = $77;
  19808. $98 = $77;
  19809. } else {
  19810. $78 = HEAP32[(16748)>>2]|0;
  19811. $79 = ($73>>>0)<($78>>>0);
  19812. if ($79) {
  19813. _abort();
  19814. // unreachable;
  19815. }
  19816. $80 = ((($73)) + 12|0);
  19817. $81 = HEAP32[$80>>2]|0;
  19818. $82 = ($81|0)==($71|0);
  19819. if ($82) {
  19820. HEAP32[$80>>2] = $69;
  19821. HEAP32[$70>>2] = $73;
  19822. $98 = $8;
  19823. break;
  19824. } else {
  19825. _abort();
  19826. // unreachable;
  19827. }
  19828. }
  19829. } while(0);
  19830. $83 = $67 << 3;
  19831. $84 = (($83) - ($6))|0;
  19832. $85 = $6 | 3;
  19833. $86 = ((($71)) + 4|0);
  19834. HEAP32[$86>>2] = $85;
  19835. $87 = (($71) + ($6)|0);
  19836. $88 = $84 | 1;
  19837. $89 = ((($87)) + 4|0);
  19838. HEAP32[$89>>2] = $88;
  19839. $90 = (($87) + ($84)|0);
  19840. HEAP32[$90>>2] = $84;
  19841. $91 = ($37|0)==(0);
  19842. if (!($91)) {
  19843. $92 = HEAP32[(16752)>>2]|0;
  19844. $93 = $37 >>> 3;
  19845. $94 = $93 << 1;
  19846. $95 = (16772 + ($94<<2)|0);
  19847. $96 = 1 << $93;
  19848. $97 = $98 & $96;
  19849. $99 = ($97|0)==(0);
  19850. if ($99) {
  19851. $100 = $98 | $96;
  19852. HEAP32[4183] = $100;
  19853. $$pre = ((($95)) + 8|0);
  19854. $$0199 = $95;$$pre$phiZ2D = $$pre;
  19855. } else {
  19856. $101 = ((($95)) + 8|0);
  19857. $102 = HEAP32[$101>>2]|0;
  19858. $103 = HEAP32[(16748)>>2]|0;
  19859. $104 = ($102>>>0)<($103>>>0);
  19860. if ($104) {
  19861. _abort();
  19862. // unreachable;
  19863. } else {
  19864. $$0199 = $102;$$pre$phiZ2D = $101;
  19865. }
  19866. }
  19867. HEAP32[$$pre$phiZ2D>>2] = $92;
  19868. $105 = ((($$0199)) + 12|0);
  19869. HEAP32[$105>>2] = $92;
  19870. $106 = ((($92)) + 8|0);
  19871. HEAP32[$106>>2] = $$0199;
  19872. $107 = ((($92)) + 12|0);
  19873. HEAP32[$107>>2] = $95;
  19874. }
  19875. HEAP32[(16740)>>2] = $84;
  19876. HEAP32[(16752)>>2] = $87;
  19877. $$0 = $72;
  19878. STACKTOP = sp;return ($$0|0);
  19879. }
  19880. $108 = HEAP32[(16736)>>2]|0;
  19881. $109 = ($108|0)==(0);
  19882. if ($109) {
  19883. $$0197 = $6;
  19884. } else {
  19885. $110 = (0 - ($108))|0;
  19886. $111 = $108 & $110;
  19887. $112 = (($111) + -1)|0;
  19888. $113 = $112 >>> 12;
  19889. $114 = $113 & 16;
  19890. $115 = $112 >>> $114;
  19891. $116 = $115 >>> 5;
  19892. $117 = $116 & 8;
  19893. $118 = $117 | $114;
  19894. $119 = $115 >>> $117;
  19895. $120 = $119 >>> 2;
  19896. $121 = $120 & 4;
  19897. $122 = $118 | $121;
  19898. $123 = $119 >>> $121;
  19899. $124 = $123 >>> 1;
  19900. $125 = $124 & 2;
  19901. $126 = $122 | $125;
  19902. $127 = $123 >>> $125;
  19903. $128 = $127 >>> 1;
  19904. $129 = $128 & 1;
  19905. $130 = $126 | $129;
  19906. $131 = $127 >>> $129;
  19907. $132 = (($130) + ($131))|0;
  19908. $133 = (17036 + ($132<<2)|0);
  19909. $134 = HEAP32[$133>>2]|0;
  19910. $135 = ((($134)) + 4|0);
  19911. $136 = HEAP32[$135>>2]|0;
  19912. $137 = $136 & -8;
  19913. $138 = (($137) - ($6))|0;
  19914. $139 = ((($134)) + 16|0);
  19915. $140 = HEAP32[$139>>2]|0;
  19916. $not$5$i = ($140|0)==(0|0);
  19917. $$sink16$i = $not$5$i&1;
  19918. $141 = (((($134)) + 16|0) + ($$sink16$i<<2)|0);
  19919. $142 = HEAP32[$141>>2]|0;
  19920. $143 = ($142|0)==(0|0);
  19921. if ($143) {
  19922. $$0192$lcssa$i = $134;$$0193$lcssa$i = $138;
  19923. } else {
  19924. $$01928$i = $134;$$01937$i = $138;$145 = $142;
  19925. while(1) {
  19926. $144 = ((($145)) + 4|0);
  19927. $146 = HEAP32[$144>>2]|0;
  19928. $147 = $146 & -8;
  19929. $148 = (($147) - ($6))|0;
  19930. $149 = ($148>>>0)<($$01937$i>>>0);
  19931. $$$0193$i = $149 ? $148 : $$01937$i;
  19932. $$$0192$i = $149 ? $145 : $$01928$i;
  19933. $150 = ((($145)) + 16|0);
  19934. $151 = HEAP32[$150>>2]|0;
  19935. $not$$i = ($151|0)==(0|0);
  19936. $$sink1$i = $not$$i&1;
  19937. $152 = (((($145)) + 16|0) + ($$sink1$i<<2)|0);
  19938. $153 = HEAP32[$152>>2]|0;
  19939. $154 = ($153|0)==(0|0);
  19940. if ($154) {
  19941. $$0192$lcssa$i = $$$0192$i;$$0193$lcssa$i = $$$0193$i;
  19942. break;
  19943. } else {
  19944. $$01928$i = $$$0192$i;$$01937$i = $$$0193$i;$145 = $153;
  19945. }
  19946. }
  19947. }
  19948. $155 = HEAP32[(16748)>>2]|0;
  19949. $156 = ($$0192$lcssa$i>>>0)<($155>>>0);
  19950. if ($156) {
  19951. _abort();
  19952. // unreachable;
  19953. }
  19954. $157 = (($$0192$lcssa$i) + ($6)|0);
  19955. $158 = ($$0192$lcssa$i>>>0)<($157>>>0);
  19956. if (!($158)) {
  19957. _abort();
  19958. // unreachable;
  19959. }
  19960. $159 = ((($$0192$lcssa$i)) + 24|0);
  19961. $160 = HEAP32[$159>>2]|0;
  19962. $161 = ((($$0192$lcssa$i)) + 12|0);
  19963. $162 = HEAP32[$161>>2]|0;
  19964. $163 = ($162|0)==($$0192$lcssa$i|0);
  19965. do {
  19966. if ($163) {
  19967. $173 = ((($$0192$lcssa$i)) + 20|0);
  19968. $174 = HEAP32[$173>>2]|0;
  19969. $175 = ($174|0)==(0|0);
  19970. if ($175) {
  19971. $176 = ((($$0192$lcssa$i)) + 16|0);
  19972. $177 = HEAP32[$176>>2]|0;
  19973. $178 = ($177|0)==(0|0);
  19974. if ($178) {
  19975. $$3$i = 0;
  19976. break;
  19977. } else {
  19978. $$1196$i = $177;$$1198$i = $176;
  19979. }
  19980. } else {
  19981. $$1196$i = $174;$$1198$i = $173;
  19982. }
  19983. while(1) {
  19984. $179 = ((($$1196$i)) + 20|0);
  19985. $180 = HEAP32[$179>>2]|0;
  19986. $181 = ($180|0)==(0|0);
  19987. if (!($181)) {
  19988. $$1196$i = $180;$$1198$i = $179;
  19989. continue;
  19990. }
  19991. $182 = ((($$1196$i)) + 16|0);
  19992. $183 = HEAP32[$182>>2]|0;
  19993. $184 = ($183|0)==(0|0);
  19994. if ($184) {
  19995. break;
  19996. } else {
  19997. $$1196$i = $183;$$1198$i = $182;
  19998. }
  19999. }
  20000. $185 = ($$1198$i>>>0)<($155>>>0);
  20001. if ($185) {
  20002. _abort();
  20003. // unreachable;
  20004. } else {
  20005. HEAP32[$$1198$i>>2] = 0;
  20006. $$3$i = $$1196$i;
  20007. break;
  20008. }
  20009. } else {
  20010. $164 = ((($$0192$lcssa$i)) + 8|0);
  20011. $165 = HEAP32[$164>>2]|0;
  20012. $166 = ($165>>>0)<($155>>>0);
  20013. if ($166) {
  20014. _abort();
  20015. // unreachable;
  20016. }
  20017. $167 = ((($165)) + 12|0);
  20018. $168 = HEAP32[$167>>2]|0;
  20019. $169 = ($168|0)==($$0192$lcssa$i|0);
  20020. if (!($169)) {
  20021. _abort();
  20022. // unreachable;
  20023. }
  20024. $170 = ((($162)) + 8|0);
  20025. $171 = HEAP32[$170>>2]|0;
  20026. $172 = ($171|0)==($$0192$lcssa$i|0);
  20027. if ($172) {
  20028. HEAP32[$167>>2] = $162;
  20029. HEAP32[$170>>2] = $165;
  20030. $$3$i = $162;
  20031. break;
  20032. } else {
  20033. _abort();
  20034. // unreachable;
  20035. }
  20036. }
  20037. } while(0);
  20038. $186 = ($160|0)==(0|0);
  20039. L73: do {
  20040. if (!($186)) {
  20041. $187 = ((($$0192$lcssa$i)) + 28|0);
  20042. $188 = HEAP32[$187>>2]|0;
  20043. $189 = (17036 + ($188<<2)|0);
  20044. $190 = HEAP32[$189>>2]|0;
  20045. $191 = ($$0192$lcssa$i|0)==($190|0);
  20046. do {
  20047. if ($191) {
  20048. HEAP32[$189>>2] = $$3$i;
  20049. $cond$i = ($$3$i|0)==(0|0);
  20050. if ($cond$i) {
  20051. $192 = 1 << $188;
  20052. $193 = $192 ^ -1;
  20053. $194 = $108 & $193;
  20054. HEAP32[(16736)>>2] = $194;
  20055. break L73;
  20056. }
  20057. } else {
  20058. $195 = HEAP32[(16748)>>2]|0;
  20059. $196 = ($160>>>0)<($195>>>0);
  20060. if ($196) {
  20061. _abort();
  20062. // unreachable;
  20063. } else {
  20064. $197 = ((($160)) + 16|0);
  20065. $198 = HEAP32[$197>>2]|0;
  20066. $not$1$i = ($198|0)!=($$0192$lcssa$i|0);
  20067. $$sink2$i = $not$1$i&1;
  20068. $199 = (((($160)) + 16|0) + ($$sink2$i<<2)|0);
  20069. HEAP32[$199>>2] = $$3$i;
  20070. $200 = ($$3$i|0)==(0|0);
  20071. if ($200) {
  20072. break L73;
  20073. } else {
  20074. break;
  20075. }
  20076. }
  20077. }
  20078. } while(0);
  20079. $201 = HEAP32[(16748)>>2]|0;
  20080. $202 = ($$3$i>>>0)<($201>>>0);
  20081. if ($202) {
  20082. _abort();
  20083. // unreachable;
  20084. }
  20085. $203 = ((($$3$i)) + 24|0);
  20086. HEAP32[$203>>2] = $160;
  20087. $204 = ((($$0192$lcssa$i)) + 16|0);
  20088. $205 = HEAP32[$204>>2]|0;
  20089. $206 = ($205|0)==(0|0);
  20090. do {
  20091. if (!($206)) {
  20092. $207 = ($205>>>0)<($201>>>0);
  20093. if ($207) {
  20094. _abort();
  20095. // unreachable;
  20096. } else {
  20097. $208 = ((($$3$i)) + 16|0);
  20098. HEAP32[$208>>2] = $205;
  20099. $209 = ((($205)) + 24|0);
  20100. HEAP32[$209>>2] = $$3$i;
  20101. break;
  20102. }
  20103. }
  20104. } while(0);
  20105. $210 = ((($$0192$lcssa$i)) + 20|0);
  20106. $211 = HEAP32[$210>>2]|0;
  20107. $212 = ($211|0)==(0|0);
  20108. if (!($212)) {
  20109. $213 = HEAP32[(16748)>>2]|0;
  20110. $214 = ($211>>>0)<($213>>>0);
  20111. if ($214) {
  20112. _abort();
  20113. // unreachable;
  20114. } else {
  20115. $215 = ((($$3$i)) + 20|0);
  20116. HEAP32[$215>>2] = $211;
  20117. $216 = ((($211)) + 24|0);
  20118. HEAP32[$216>>2] = $$3$i;
  20119. break;
  20120. }
  20121. }
  20122. }
  20123. } while(0);
  20124. $217 = ($$0193$lcssa$i>>>0)<(16);
  20125. if ($217) {
  20126. $218 = (($$0193$lcssa$i) + ($6))|0;
  20127. $219 = $218 | 3;
  20128. $220 = ((($$0192$lcssa$i)) + 4|0);
  20129. HEAP32[$220>>2] = $219;
  20130. $221 = (($$0192$lcssa$i) + ($218)|0);
  20131. $222 = ((($221)) + 4|0);
  20132. $223 = HEAP32[$222>>2]|0;
  20133. $224 = $223 | 1;
  20134. HEAP32[$222>>2] = $224;
  20135. } else {
  20136. $225 = $6 | 3;
  20137. $226 = ((($$0192$lcssa$i)) + 4|0);
  20138. HEAP32[$226>>2] = $225;
  20139. $227 = $$0193$lcssa$i | 1;
  20140. $228 = ((($157)) + 4|0);
  20141. HEAP32[$228>>2] = $227;
  20142. $229 = (($157) + ($$0193$lcssa$i)|0);
  20143. HEAP32[$229>>2] = $$0193$lcssa$i;
  20144. $230 = ($37|0)==(0);
  20145. if (!($230)) {
  20146. $231 = HEAP32[(16752)>>2]|0;
  20147. $232 = $37 >>> 3;
  20148. $233 = $232 << 1;
  20149. $234 = (16772 + ($233<<2)|0);
  20150. $235 = 1 << $232;
  20151. $236 = $8 & $235;
  20152. $237 = ($236|0)==(0);
  20153. if ($237) {
  20154. $238 = $8 | $235;
  20155. HEAP32[4183] = $238;
  20156. $$pre$i = ((($234)) + 8|0);
  20157. $$0189$i = $234;$$pre$phi$iZ2D = $$pre$i;
  20158. } else {
  20159. $239 = ((($234)) + 8|0);
  20160. $240 = HEAP32[$239>>2]|0;
  20161. $241 = HEAP32[(16748)>>2]|0;
  20162. $242 = ($240>>>0)<($241>>>0);
  20163. if ($242) {
  20164. _abort();
  20165. // unreachable;
  20166. } else {
  20167. $$0189$i = $240;$$pre$phi$iZ2D = $239;
  20168. }
  20169. }
  20170. HEAP32[$$pre$phi$iZ2D>>2] = $231;
  20171. $243 = ((($$0189$i)) + 12|0);
  20172. HEAP32[$243>>2] = $231;
  20173. $244 = ((($231)) + 8|0);
  20174. HEAP32[$244>>2] = $$0189$i;
  20175. $245 = ((($231)) + 12|0);
  20176. HEAP32[$245>>2] = $234;
  20177. }
  20178. HEAP32[(16740)>>2] = $$0193$lcssa$i;
  20179. HEAP32[(16752)>>2] = $157;
  20180. }
  20181. $246 = ((($$0192$lcssa$i)) + 8|0);
  20182. $$0 = $246;
  20183. STACKTOP = sp;return ($$0|0);
  20184. }
  20185. } else {
  20186. $$0197 = $6;
  20187. }
  20188. } else {
  20189. $247 = ($0>>>0)>(4294967231);
  20190. if ($247) {
  20191. $$0197 = -1;
  20192. } else {
  20193. $248 = (($0) + 11)|0;
  20194. $249 = $248 & -8;
  20195. $250 = HEAP32[(16736)>>2]|0;
  20196. $251 = ($250|0)==(0);
  20197. if ($251) {
  20198. $$0197 = $249;
  20199. } else {
  20200. $252 = (0 - ($249))|0;
  20201. $253 = $248 >>> 8;
  20202. $254 = ($253|0)==(0);
  20203. if ($254) {
  20204. $$0358$i = 0;
  20205. } else {
  20206. $255 = ($249>>>0)>(16777215);
  20207. if ($255) {
  20208. $$0358$i = 31;
  20209. } else {
  20210. $256 = (($253) + 1048320)|0;
  20211. $257 = $256 >>> 16;
  20212. $258 = $257 & 8;
  20213. $259 = $253 << $258;
  20214. $260 = (($259) + 520192)|0;
  20215. $261 = $260 >>> 16;
  20216. $262 = $261 & 4;
  20217. $263 = $262 | $258;
  20218. $264 = $259 << $262;
  20219. $265 = (($264) + 245760)|0;
  20220. $266 = $265 >>> 16;
  20221. $267 = $266 & 2;
  20222. $268 = $263 | $267;
  20223. $269 = (14 - ($268))|0;
  20224. $270 = $264 << $267;
  20225. $271 = $270 >>> 15;
  20226. $272 = (($269) + ($271))|0;
  20227. $273 = $272 << 1;
  20228. $274 = (($272) + 7)|0;
  20229. $275 = $249 >>> $274;
  20230. $276 = $275 & 1;
  20231. $277 = $276 | $273;
  20232. $$0358$i = $277;
  20233. }
  20234. }
  20235. $278 = (17036 + ($$0358$i<<2)|0);
  20236. $279 = HEAP32[$278>>2]|0;
  20237. $280 = ($279|0)==(0|0);
  20238. L117: do {
  20239. if ($280) {
  20240. $$2355$i = 0;$$3$i201 = 0;$$3350$i = $252;
  20241. label = 81;
  20242. } else {
  20243. $281 = ($$0358$i|0)==(31);
  20244. $282 = $$0358$i >>> 1;
  20245. $283 = (25 - ($282))|0;
  20246. $284 = $281 ? 0 : $283;
  20247. $285 = $249 << $284;
  20248. $$0342$i = 0;$$0347$i = $252;$$0353$i = $279;$$0359$i = $285;$$0362$i = 0;
  20249. while(1) {
  20250. $286 = ((($$0353$i)) + 4|0);
  20251. $287 = HEAP32[$286>>2]|0;
  20252. $288 = $287 & -8;
  20253. $289 = (($288) - ($249))|0;
  20254. $290 = ($289>>>0)<($$0347$i>>>0);
  20255. if ($290) {
  20256. $291 = ($289|0)==(0);
  20257. if ($291) {
  20258. $$415$i = $$0353$i;$$435114$i = 0;$$435713$i = $$0353$i;
  20259. label = 85;
  20260. break L117;
  20261. } else {
  20262. $$1343$i = $$0353$i;$$1348$i = $289;
  20263. }
  20264. } else {
  20265. $$1343$i = $$0342$i;$$1348$i = $$0347$i;
  20266. }
  20267. $292 = ((($$0353$i)) + 20|0);
  20268. $293 = HEAP32[$292>>2]|0;
  20269. $294 = $$0359$i >>> 31;
  20270. $295 = (((($$0353$i)) + 16|0) + ($294<<2)|0);
  20271. $296 = HEAP32[$295>>2]|0;
  20272. $297 = ($293|0)==(0|0);
  20273. $298 = ($293|0)==($296|0);
  20274. $or$cond2$i = $297 | $298;
  20275. $$1363$i = $or$cond2$i ? $$0362$i : $293;
  20276. $299 = ($296|0)==(0|0);
  20277. $not$8$i = $299 ^ 1;
  20278. $300 = $not$8$i&1;
  20279. $$0359$$i = $$0359$i << $300;
  20280. if ($299) {
  20281. $$2355$i = $$1363$i;$$3$i201 = $$1343$i;$$3350$i = $$1348$i;
  20282. label = 81;
  20283. break;
  20284. } else {
  20285. $$0342$i = $$1343$i;$$0347$i = $$1348$i;$$0353$i = $296;$$0359$i = $$0359$$i;$$0362$i = $$1363$i;
  20286. }
  20287. }
  20288. }
  20289. } while(0);
  20290. if ((label|0) == 81) {
  20291. $301 = ($$2355$i|0)==(0|0);
  20292. $302 = ($$3$i201|0)==(0|0);
  20293. $or$cond$i = $301 & $302;
  20294. if ($or$cond$i) {
  20295. $303 = 2 << $$0358$i;
  20296. $304 = (0 - ($303))|0;
  20297. $305 = $303 | $304;
  20298. $306 = $250 & $305;
  20299. $307 = ($306|0)==(0);
  20300. if ($307) {
  20301. $$0197 = $249;
  20302. break;
  20303. }
  20304. $308 = (0 - ($306))|0;
  20305. $309 = $306 & $308;
  20306. $310 = (($309) + -1)|0;
  20307. $311 = $310 >>> 12;
  20308. $312 = $311 & 16;
  20309. $313 = $310 >>> $312;
  20310. $314 = $313 >>> 5;
  20311. $315 = $314 & 8;
  20312. $316 = $315 | $312;
  20313. $317 = $313 >>> $315;
  20314. $318 = $317 >>> 2;
  20315. $319 = $318 & 4;
  20316. $320 = $316 | $319;
  20317. $321 = $317 >>> $319;
  20318. $322 = $321 >>> 1;
  20319. $323 = $322 & 2;
  20320. $324 = $320 | $323;
  20321. $325 = $321 >>> $323;
  20322. $326 = $325 >>> 1;
  20323. $327 = $326 & 1;
  20324. $328 = $324 | $327;
  20325. $329 = $325 >>> $327;
  20326. $330 = (($328) + ($329))|0;
  20327. $331 = (17036 + ($330<<2)|0);
  20328. $332 = HEAP32[$331>>2]|0;
  20329. $$4$ph$i = 0;$$4357$ph$i = $332;
  20330. } else {
  20331. $$4$ph$i = $$3$i201;$$4357$ph$i = $$2355$i;
  20332. }
  20333. $333 = ($$4357$ph$i|0)==(0|0);
  20334. if ($333) {
  20335. $$4$lcssa$i = $$4$ph$i;$$4351$lcssa$i = $$3350$i;
  20336. } else {
  20337. $$415$i = $$4$ph$i;$$435114$i = $$3350$i;$$435713$i = $$4357$ph$i;
  20338. label = 85;
  20339. }
  20340. }
  20341. if ((label|0) == 85) {
  20342. while(1) {
  20343. label = 0;
  20344. $334 = ((($$435713$i)) + 4|0);
  20345. $335 = HEAP32[$334>>2]|0;
  20346. $336 = $335 & -8;
  20347. $337 = (($336) - ($249))|0;
  20348. $338 = ($337>>>0)<($$435114$i>>>0);
  20349. $$$4351$i = $338 ? $337 : $$435114$i;
  20350. $$4357$$4$i = $338 ? $$435713$i : $$415$i;
  20351. $339 = ((($$435713$i)) + 16|0);
  20352. $340 = HEAP32[$339>>2]|0;
  20353. $not$1$i203 = ($340|0)==(0|0);
  20354. $$sink2$i204 = $not$1$i203&1;
  20355. $341 = (((($$435713$i)) + 16|0) + ($$sink2$i204<<2)|0);
  20356. $342 = HEAP32[$341>>2]|0;
  20357. $343 = ($342|0)==(0|0);
  20358. if ($343) {
  20359. $$4$lcssa$i = $$4357$$4$i;$$4351$lcssa$i = $$$4351$i;
  20360. break;
  20361. } else {
  20362. $$415$i = $$4357$$4$i;$$435114$i = $$$4351$i;$$435713$i = $342;
  20363. label = 85;
  20364. }
  20365. }
  20366. }
  20367. $344 = ($$4$lcssa$i|0)==(0|0);
  20368. if ($344) {
  20369. $$0197 = $249;
  20370. } else {
  20371. $345 = HEAP32[(16740)>>2]|0;
  20372. $346 = (($345) - ($249))|0;
  20373. $347 = ($$4351$lcssa$i>>>0)<($346>>>0);
  20374. if ($347) {
  20375. $348 = HEAP32[(16748)>>2]|0;
  20376. $349 = ($$4$lcssa$i>>>0)<($348>>>0);
  20377. if ($349) {
  20378. _abort();
  20379. // unreachable;
  20380. }
  20381. $350 = (($$4$lcssa$i) + ($249)|0);
  20382. $351 = ($$4$lcssa$i>>>0)<($350>>>0);
  20383. if (!($351)) {
  20384. _abort();
  20385. // unreachable;
  20386. }
  20387. $352 = ((($$4$lcssa$i)) + 24|0);
  20388. $353 = HEAP32[$352>>2]|0;
  20389. $354 = ((($$4$lcssa$i)) + 12|0);
  20390. $355 = HEAP32[$354>>2]|0;
  20391. $356 = ($355|0)==($$4$lcssa$i|0);
  20392. do {
  20393. if ($356) {
  20394. $366 = ((($$4$lcssa$i)) + 20|0);
  20395. $367 = HEAP32[$366>>2]|0;
  20396. $368 = ($367|0)==(0|0);
  20397. if ($368) {
  20398. $369 = ((($$4$lcssa$i)) + 16|0);
  20399. $370 = HEAP32[$369>>2]|0;
  20400. $371 = ($370|0)==(0|0);
  20401. if ($371) {
  20402. $$3372$i = 0;
  20403. break;
  20404. } else {
  20405. $$1370$i = $370;$$1374$i = $369;
  20406. }
  20407. } else {
  20408. $$1370$i = $367;$$1374$i = $366;
  20409. }
  20410. while(1) {
  20411. $372 = ((($$1370$i)) + 20|0);
  20412. $373 = HEAP32[$372>>2]|0;
  20413. $374 = ($373|0)==(0|0);
  20414. if (!($374)) {
  20415. $$1370$i = $373;$$1374$i = $372;
  20416. continue;
  20417. }
  20418. $375 = ((($$1370$i)) + 16|0);
  20419. $376 = HEAP32[$375>>2]|0;
  20420. $377 = ($376|0)==(0|0);
  20421. if ($377) {
  20422. break;
  20423. } else {
  20424. $$1370$i = $376;$$1374$i = $375;
  20425. }
  20426. }
  20427. $378 = ($$1374$i>>>0)<($348>>>0);
  20428. if ($378) {
  20429. _abort();
  20430. // unreachable;
  20431. } else {
  20432. HEAP32[$$1374$i>>2] = 0;
  20433. $$3372$i = $$1370$i;
  20434. break;
  20435. }
  20436. } else {
  20437. $357 = ((($$4$lcssa$i)) + 8|0);
  20438. $358 = HEAP32[$357>>2]|0;
  20439. $359 = ($358>>>0)<($348>>>0);
  20440. if ($359) {
  20441. _abort();
  20442. // unreachable;
  20443. }
  20444. $360 = ((($358)) + 12|0);
  20445. $361 = HEAP32[$360>>2]|0;
  20446. $362 = ($361|0)==($$4$lcssa$i|0);
  20447. if (!($362)) {
  20448. _abort();
  20449. // unreachable;
  20450. }
  20451. $363 = ((($355)) + 8|0);
  20452. $364 = HEAP32[$363>>2]|0;
  20453. $365 = ($364|0)==($$4$lcssa$i|0);
  20454. if ($365) {
  20455. HEAP32[$360>>2] = $355;
  20456. HEAP32[$363>>2] = $358;
  20457. $$3372$i = $355;
  20458. break;
  20459. } else {
  20460. _abort();
  20461. // unreachable;
  20462. }
  20463. }
  20464. } while(0);
  20465. $379 = ($353|0)==(0|0);
  20466. L164: do {
  20467. if ($379) {
  20468. $470 = $250;
  20469. } else {
  20470. $380 = ((($$4$lcssa$i)) + 28|0);
  20471. $381 = HEAP32[$380>>2]|0;
  20472. $382 = (17036 + ($381<<2)|0);
  20473. $383 = HEAP32[$382>>2]|0;
  20474. $384 = ($$4$lcssa$i|0)==($383|0);
  20475. do {
  20476. if ($384) {
  20477. HEAP32[$382>>2] = $$3372$i;
  20478. $cond$i208 = ($$3372$i|0)==(0|0);
  20479. if ($cond$i208) {
  20480. $385 = 1 << $381;
  20481. $386 = $385 ^ -1;
  20482. $387 = $250 & $386;
  20483. HEAP32[(16736)>>2] = $387;
  20484. $470 = $387;
  20485. break L164;
  20486. }
  20487. } else {
  20488. $388 = HEAP32[(16748)>>2]|0;
  20489. $389 = ($353>>>0)<($388>>>0);
  20490. if ($389) {
  20491. _abort();
  20492. // unreachable;
  20493. } else {
  20494. $390 = ((($353)) + 16|0);
  20495. $391 = HEAP32[$390>>2]|0;
  20496. $not$$i209 = ($391|0)!=($$4$lcssa$i|0);
  20497. $$sink3$i = $not$$i209&1;
  20498. $392 = (((($353)) + 16|0) + ($$sink3$i<<2)|0);
  20499. HEAP32[$392>>2] = $$3372$i;
  20500. $393 = ($$3372$i|0)==(0|0);
  20501. if ($393) {
  20502. $470 = $250;
  20503. break L164;
  20504. } else {
  20505. break;
  20506. }
  20507. }
  20508. }
  20509. } while(0);
  20510. $394 = HEAP32[(16748)>>2]|0;
  20511. $395 = ($$3372$i>>>0)<($394>>>0);
  20512. if ($395) {
  20513. _abort();
  20514. // unreachable;
  20515. }
  20516. $396 = ((($$3372$i)) + 24|0);
  20517. HEAP32[$396>>2] = $353;
  20518. $397 = ((($$4$lcssa$i)) + 16|0);
  20519. $398 = HEAP32[$397>>2]|0;
  20520. $399 = ($398|0)==(0|0);
  20521. do {
  20522. if (!($399)) {
  20523. $400 = ($398>>>0)<($394>>>0);
  20524. if ($400) {
  20525. _abort();
  20526. // unreachable;
  20527. } else {
  20528. $401 = ((($$3372$i)) + 16|0);
  20529. HEAP32[$401>>2] = $398;
  20530. $402 = ((($398)) + 24|0);
  20531. HEAP32[$402>>2] = $$3372$i;
  20532. break;
  20533. }
  20534. }
  20535. } while(0);
  20536. $403 = ((($$4$lcssa$i)) + 20|0);
  20537. $404 = HEAP32[$403>>2]|0;
  20538. $405 = ($404|0)==(0|0);
  20539. if ($405) {
  20540. $470 = $250;
  20541. } else {
  20542. $406 = HEAP32[(16748)>>2]|0;
  20543. $407 = ($404>>>0)<($406>>>0);
  20544. if ($407) {
  20545. _abort();
  20546. // unreachable;
  20547. } else {
  20548. $408 = ((($$3372$i)) + 20|0);
  20549. HEAP32[$408>>2] = $404;
  20550. $409 = ((($404)) + 24|0);
  20551. HEAP32[$409>>2] = $$3372$i;
  20552. $470 = $250;
  20553. break;
  20554. }
  20555. }
  20556. }
  20557. } while(0);
  20558. $410 = ($$4351$lcssa$i>>>0)<(16);
  20559. do {
  20560. if ($410) {
  20561. $411 = (($$4351$lcssa$i) + ($249))|0;
  20562. $412 = $411 | 3;
  20563. $413 = ((($$4$lcssa$i)) + 4|0);
  20564. HEAP32[$413>>2] = $412;
  20565. $414 = (($$4$lcssa$i) + ($411)|0);
  20566. $415 = ((($414)) + 4|0);
  20567. $416 = HEAP32[$415>>2]|0;
  20568. $417 = $416 | 1;
  20569. HEAP32[$415>>2] = $417;
  20570. } else {
  20571. $418 = $249 | 3;
  20572. $419 = ((($$4$lcssa$i)) + 4|0);
  20573. HEAP32[$419>>2] = $418;
  20574. $420 = $$4351$lcssa$i | 1;
  20575. $421 = ((($350)) + 4|0);
  20576. HEAP32[$421>>2] = $420;
  20577. $422 = (($350) + ($$4351$lcssa$i)|0);
  20578. HEAP32[$422>>2] = $$4351$lcssa$i;
  20579. $423 = $$4351$lcssa$i >>> 3;
  20580. $424 = ($$4351$lcssa$i>>>0)<(256);
  20581. if ($424) {
  20582. $425 = $423 << 1;
  20583. $426 = (16772 + ($425<<2)|0);
  20584. $427 = HEAP32[4183]|0;
  20585. $428 = 1 << $423;
  20586. $429 = $427 & $428;
  20587. $430 = ($429|0)==(0);
  20588. if ($430) {
  20589. $431 = $427 | $428;
  20590. HEAP32[4183] = $431;
  20591. $$pre$i210 = ((($426)) + 8|0);
  20592. $$0368$i = $426;$$pre$phi$i211Z2D = $$pre$i210;
  20593. } else {
  20594. $432 = ((($426)) + 8|0);
  20595. $433 = HEAP32[$432>>2]|0;
  20596. $434 = HEAP32[(16748)>>2]|0;
  20597. $435 = ($433>>>0)<($434>>>0);
  20598. if ($435) {
  20599. _abort();
  20600. // unreachable;
  20601. } else {
  20602. $$0368$i = $433;$$pre$phi$i211Z2D = $432;
  20603. }
  20604. }
  20605. HEAP32[$$pre$phi$i211Z2D>>2] = $350;
  20606. $436 = ((($$0368$i)) + 12|0);
  20607. HEAP32[$436>>2] = $350;
  20608. $437 = ((($350)) + 8|0);
  20609. HEAP32[$437>>2] = $$0368$i;
  20610. $438 = ((($350)) + 12|0);
  20611. HEAP32[$438>>2] = $426;
  20612. break;
  20613. }
  20614. $439 = $$4351$lcssa$i >>> 8;
  20615. $440 = ($439|0)==(0);
  20616. if ($440) {
  20617. $$0361$i = 0;
  20618. } else {
  20619. $441 = ($$4351$lcssa$i>>>0)>(16777215);
  20620. if ($441) {
  20621. $$0361$i = 31;
  20622. } else {
  20623. $442 = (($439) + 1048320)|0;
  20624. $443 = $442 >>> 16;
  20625. $444 = $443 & 8;
  20626. $445 = $439 << $444;
  20627. $446 = (($445) + 520192)|0;
  20628. $447 = $446 >>> 16;
  20629. $448 = $447 & 4;
  20630. $449 = $448 | $444;
  20631. $450 = $445 << $448;
  20632. $451 = (($450) + 245760)|0;
  20633. $452 = $451 >>> 16;
  20634. $453 = $452 & 2;
  20635. $454 = $449 | $453;
  20636. $455 = (14 - ($454))|0;
  20637. $456 = $450 << $453;
  20638. $457 = $456 >>> 15;
  20639. $458 = (($455) + ($457))|0;
  20640. $459 = $458 << 1;
  20641. $460 = (($458) + 7)|0;
  20642. $461 = $$4351$lcssa$i >>> $460;
  20643. $462 = $461 & 1;
  20644. $463 = $462 | $459;
  20645. $$0361$i = $463;
  20646. }
  20647. }
  20648. $464 = (17036 + ($$0361$i<<2)|0);
  20649. $465 = ((($350)) + 28|0);
  20650. HEAP32[$465>>2] = $$0361$i;
  20651. $466 = ((($350)) + 16|0);
  20652. $467 = ((($466)) + 4|0);
  20653. HEAP32[$467>>2] = 0;
  20654. HEAP32[$466>>2] = 0;
  20655. $468 = 1 << $$0361$i;
  20656. $469 = $470 & $468;
  20657. $471 = ($469|0)==(0);
  20658. if ($471) {
  20659. $472 = $470 | $468;
  20660. HEAP32[(16736)>>2] = $472;
  20661. HEAP32[$464>>2] = $350;
  20662. $473 = ((($350)) + 24|0);
  20663. HEAP32[$473>>2] = $464;
  20664. $474 = ((($350)) + 12|0);
  20665. HEAP32[$474>>2] = $350;
  20666. $475 = ((($350)) + 8|0);
  20667. HEAP32[$475>>2] = $350;
  20668. break;
  20669. }
  20670. $476 = HEAP32[$464>>2]|0;
  20671. $477 = ($$0361$i|0)==(31);
  20672. $478 = $$0361$i >>> 1;
  20673. $479 = (25 - ($478))|0;
  20674. $480 = $477 ? 0 : $479;
  20675. $481 = $$4351$lcssa$i << $480;
  20676. $$0344$i = $481;$$0345$i = $476;
  20677. while(1) {
  20678. $482 = ((($$0345$i)) + 4|0);
  20679. $483 = HEAP32[$482>>2]|0;
  20680. $484 = $483 & -8;
  20681. $485 = ($484|0)==($$4351$lcssa$i|0);
  20682. if ($485) {
  20683. label = 139;
  20684. break;
  20685. }
  20686. $486 = $$0344$i >>> 31;
  20687. $487 = (((($$0345$i)) + 16|0) + ($486<<2)|0);
  20688. $488 = $$0344$i << 1;
  20689. $489 = HEAP32[$487>>2]|0;
  20690. $490 = ($489|0)==(0|0);
  20691. if ($490) {
  20692. label = 136;
  20693. break;
  20694. } else {
  20695. $$0344$i = $488;$$0345$i = $489;
  20696. }
  20697. }
  20698. if ((label|0) == 136) {
  20699. $491 = HEAP32[(16748)>>2]|0;
  20700. $492 = ($487>>>0)<($491>>>0);
  20701. if ($492) {
  20702. _abort();
  20703. // unreachable;
  20704. } else {
  20705. HEAP32[$487>>2] = $350;
  20706. $493 = ((($350)) + 24|0);
  20707. HEAP32[$493>>2] = $$0345$i;
  20708. $494 = ((($350)) + 12|0);
  20709. HEAP32[$494>>2] = $350;
  20710. $495 = ((($350)) + 8|0);
  20711. HEAP32[$495>>2] = $350;
  20712. break;
  20713. }
  20714. }
  20715. else if ((label|0) == 139) {
  20716. $496 = ((($$0345$i)) + 8|0);
  20717. $497 = HEAP32[$496>>2]|0;
  20718. $498 = HEAP32[(16748)>>2]|0;
  20719. $499 = ($497>>>0)>=($498>>>0);
  20720. $not$9$i = ($$0345$i>>>0)>=($498>>>0);
  20721. $500 = $499 & $not$9$i;
  20722. if ($500) {
  20723. $501 = ((($497)) + 12|0);
  20724. HEAP32[$501>>2] = $350;
  20725. HEAP32[$496>>2] = $350;
  20726. $502 = ((($350)) + 8|0);
  20727. HEAP32[$502>>2] = $497;
  20728. $503 = ((($350)) + 12|0);
  20729. HEAP32[$503>>2] = $$0345$i;
  20730. $504 = ((($350)) + 24|0);
  20731. HEAP32[$504>>2] = 0;
  20732. break;
  20733. } else {
  20734. _abort();
  20735. // unreachable;
  20736. }
  20737. }
  20738. }
  20739. } while(0);
  20740. $505 = ((($$4$lcssa$i)) + 8|0);
  20741. $$0 = $505;
  20742. STACKTOP = sp;return ($$0|0);
  20743. } else {
  20744. $$0197 = $249;
  20745. }
  20746. }
  20747. }
  20748. }
  20749. }
  20750. } while(0);
  20751. $506 = HEAP32[(16740)>>2]|0;
  20752. $507 = ($506>>>0)<($$0197>>>0);
  20753. if (!($507)) {
  20754. $508 = (($506) - ($$0197))|0;
  20755. $509 = HEAP32[(16752)>>2]|0;
  20756. $510 = ($508>>>0)>(15);
  20757. if ($510) {
  20758. $511 = (($509) + ($$0197)|0);
  20759. HEAP32[(16752)>>2] = $511;
  20760. HEAP32[(16740)>>2] = $508;
  20761. $512 = $508 | 1;
  20762. $513 = ((($511)) + 4|0);
  20763. HEAP32[$513>>2] = $512;
  20764. $514 = (($511) + ($508)|0);
  20765. HEAP32[$514>>2] = $508;
  20766. $515 = $$0197 | 3;
  20767. $516 = ((($509)) + 4|0);
  20768. HEAP32[$516>>2] = $515;
  20769. } else {
  20770. HEAP32[(16740)>>2] = 0;
  20771. HEAP32[(16752)>>2] = 0;
  20772. $517 = $506 | 3;
  20773. $518 = ((($509)) + 4|0);
  20774. HEAP32[$518>>2] = $517;
  20775. $519 = (($509) + ($506)|0);
  20776. $520 = ((($519)) + 4|0);
  20777. $521 = HEAP32[$520>>2]|0;
  20778. $522 = $521 | 1;
  20779. HEAP32[$520>>2] = $522;
  20780. }
  20781. $523 = ((($509)) + 8|0);
  20782. $$0 = $523;
  20783. STACKTOP = sp;return ($$0|0);
  20784. }
  20785. $524 = HEAP32[(16744)>>2]|0;
  20786. $525 = ($524>>>0)>($$0197>>>0);
  20787. if ($525) {
  20788. $526 = (($524) - ($$0197))|0;
  20789. HEAP32[(16744)>>2] = $526;
  20790. $527 = HEAP32[(16756)>>2]|0;
  20791. $528 = (($527) + ($$0197)|0);
  20792. HEAP32[(16756)>>2] = $528;
  20793. $529 = $526 | 1;
  20794. $530 = ((($528)) + 4|0);
  20795. HEAP32[$530>>2] = $529;
  20796. $531 = $$0197 | 3;
  20797. $532 = ((($527)) + 4|0);
  20798. HEAP32[$532>>2] = $531;
  20799. $533 = ((($527)) + 8|0);
  20800. $$0 = $533;
  20801. STACKTOP = sp;return ($$0|0);
  20802. }
  20803. $534 = HEAP32[4301]|0;
  20804. $535 = ($534|0)==(0);
  20805. if ($535) {
  20806. HEAP32[(17212)>>2] = 4096;
  20807. HEAP32[(17208)>>2] = 4096;
  20808. HEAP32[(17216)>>2] = -1;
  20809. HEAP32[(17220)>>2] = -1;
  20810. HEAP32[(17224)>>2] = 0;
  20811. HEAP32[(17176)>>2] = 0;
  20812. $536 = $1;
  20813. $537 = $536 & -16;
  20814. $538 = $537 ^ 1431655768;
  20815. HEAP32[$1>>2] = $538;
  20816. HEAP32[4301] = $538;
  20817. $542 = 4096;
  20818. } else {
  20819. $$pre$i212 = HEAP32[(17212)>>2]|0;
  20820. $542 = $$pre$i212;
  20821. }
  20822. $539 = (($$0197) + 48)|0;
  20823. $540 = (($$0197) + 47)|0;
  20824. $541 = (($542) + ($540))|0;
  20825. $543 = (0 - ($542))|0;
  20826. $544 = $541 & $543;
  20827. $545 = ($544>>>0)>($$0197>>>0);
  20828. if (!($545)) {
  20829. $$0 = 0;
  20830. STACKTOP = sp;return ($$0|0);
  20831. }
  20832. $546 = HEAP32[(17172)>>2]|0;
  20833. $547 = ($546|0)==(0);
  20834. if (!($547)) {
  20835. $548 = HEAP32[(17164)>>2]|0;
  20836. $549 = (($548) + ($544))|0;
  20837. $550 = ($549>>>0)<=($548>>>0);
  20838. $551 = ($549>>>0)>($546>>>0);
  20839. $or$cond1$i = $550 | $551;
  20840. if ($or$cond1$i) {
  20841. $$0 = 0;
  20842. STACKTOP = sp;return ($$0|0);
  20843. }
  20844. }
  20845. $552 = HEAP32[(17176)>>2]|0;
  20846. $553 = $552 & 4;
  20847. $554 = ($553|0)==(0);
  20848. L244: do {
  20849. if ($554) {
  20850. $555 = HEAP32[(16756)>>2]|0;
  20851. $556 = ($555|0)==(0|0);
  20852. L246: do {
  20853. if ($556) {
  20854. label = 163;
  20855. } else {
  20856. $$0$i$i = (17180);
  20857. while(1) {
  20858. $557 = HEAP32[$$0$i$i>>2]|0;
  20859. $558 = ($557>>>0)>($555>>>0);
  20860. if (!($558)) {
  20861. $559 = ((($$0$i$i)) + 4|0);
  20862. $560 = HEAP32[$559>>2]|0;
  20863. $561 = (($557) + ($560)|0);
  20864. $562 = ($561>>>0)>($555>>>0);
  20865. if ($562) {
  20866. break;
  20867. }
  20868. }
  20869. $563 = ((($$0$i$i)) + 8|0);
  20870. $564 = HEAP32[$563>>2]|0;
  20871. $565 = ($564|0)==(0|0);
  20872. if ($565) {
  20873. label = 163;
  20874. break L246;
  20875. } else {
  20876. $$0$i$i = $564;
  20877. }
  20878. }
  20879. $588 = (($541) - ($524))|0;
  20880. $589 = $588 & $543;
  20881. $590 = ($589>>>0)<(2147483647);
  20882. if ($590) {
  20883. $591 = (_sbrk(($589|0))|0);
  20884. $592 = HEAP32[$$0$i$i>>2]|0;
  20885. $593 = HEAP32[$559>>2]|0;
  20886. $594 = (($592) + ($593)|0);
  20887. $595 = ($591|0)==($594|0);
  20888. if ($595) {
  20889. $596 = ($591|0)==((-1)|0);
  20890. if ($596) {
  20891. $$2234253237$i = $589;
  20892. } else {
  20893. $$723948$i = $589;$$749$i = $591;
  20894. label = 180;
  20895. break L244;
  20896. }
  20897. } else {
  20898. $$2247$ph$i = $591;$$2253$ph$i = $589;
  20899. label = 171;
  20900. }
  20901. } else {
  20902. $$2234253237$i = 0;
  20903. }
  20904. }
  20905. } while(0);
  20906. do {
  20907. if ((label|0) == 163) {
  20908. $566 = (_sbrk(0)|0);
  20909. $567 = ($566|0)==((-1)|0);
  20910. if ($567) {
  20911. $$2234253237$i = 0;
  20912. } else {
  20913. $568 = $566;
  20914. $569 = HEAP32[(17208)>>2]|0;
  20915. $570 = (($569) + -1)|0;
  20916. $571 = $570 & $568;
  20917. $572 = ($571|0)==(0);
  20918. $573 = (($570) + ($568))|0;
  20919. $574 = (0 - ($569))|0;
  20920. $575 = $573 & $574;
  20921. $576 = (($575) - ($568))|0;
  20922. $577 = $572 ? 0 : $576;
  20923. $$$i = (($577) + ($544))|0;
  20924. $578 = HEAP32[(17164)>>2]|0;
  20925. $579 = (($$$i) + ($578))|0;
  20926. $580 = ($$$i>>>0)>($$0197>>>0);
  20927. $581 = ($$$i>>>0)<(2147483647);
  20928. $or$cond$i214 = $580 & $581;
  20929. if ($or$cond$i214) {
  20930. $582 = HEAP32[(17172)>>2]|0;
  20931. $583 = ($582|0)==(0);
  20932. if (!($583)) {
  20933. $584 = ($579>>>0)<=($578>>>0);
  20934. $585 = ($579>>>0)>($582>>>0);
  20935. $or$cond2$i215 = $584 | $585;
  20936. if ($or$cond2$i215) {
  20937. $$2234253237$i = 0;
  20938. break;
  20939. }
  20940. }
  20941. $586 = (_sbrk(($$$i|0))|0);
  20942. $587 = ($586|0)==($566|0);
  20943. if ($587) {
  20944. $$723948$i = $$$i;$$749$i = $566;
  20945. label = 180;
  20946. break L244;
  20947. } else {
  20948. $$2247$ph$i = $586;$$2253$ph$i = $$$i;
  20949. label = 171;
  20950. }
  20951. } else {
  20952. $$2234253237$i = 0;
  20953. }
  20954. }
  20955. }
  20956. } while(0);
  20957. do {
  20958. if ((label|0) == 171) {
  20959. $597 = (0 - ($$2253$ph$i))|0;
  20960. $598 = ($$2247$ph$i|0)!=((-1)|0);
  20961. $599 = ($$2253$ph$i>>>0)<(2147483647);
  20962. $or$cond7$i = $599 & $598;
  20963. $600 = ($539>>>0)>($$2253$ph$i>>>0);
  20964. $or$cond10$i = $600 & $or$cond7$i;
  20965. if (!($or$cond10$i)) {
  20966. $610 = ($$2247$ph$i|0)==((-1)|0);
  20967. if ($610) {
  20968. $$2234253237$i = 0;
  20969. break;
  20970. } else {
  20971. $$723948$i = $$2253$ph$i;$$749$i = $$2247$ph$i;
  20972. label = 180;
  20973. break L244;
  20974. }
  20975. }
  20976. $601 = HEAP32[(17212)>>2]|0;
  20977. $602 = (($540) - ($$2253$ph$i))|0;
  20978. $603 = (($602) + ($601))|0;
  20979. $604 = (0 - ($601))|0;
  20980. $605 = $603 & $604;
  20981. $606 = ($605>>>0)<(2147483647);
  20982. if (!($606)) {
  20983. $$723948$i = $$2253$ph$i;$$749$i = $$2247$ph$i;
  20984. label = 180;
  20985. break L244;
  20986. }
  20987. $607 = (_sbrk(($605|0))|0);
  20988. $608 = ($607|0)==((-1)|0);
  20989. if ($608) {
  20990. (_sbrk(($597|0))|0);
  20991. $$2234253237$i = 0;
  20992. break;
  20993. } else {
  20994. $609 = (($605) + ($$2253$ph$i))|0;
  20995. $$723948$i = $609;$$749$i = $$2247$ph$i;
  20996. label = 180;
  20997. break L244;
  20998. }
  20999. }
  21000. } while(0);
  21001. $611 = HEAP32[(17176)>>2]|0;
  21002. $612 = $611 | 4;
  21003. HEAP32[(17176)>>2] = $612;
  21004. $$4236$i = $$2234253237$i;
  21005. label = 178;
  21006. } else {
  21007. $$4236$i = 0;
  21008. label = 178;
  21009. }
  21010. } while(0);
  21011. if ((label|0) == 178) {
  21012. $613 = ($544>>>0)<(2147483647);
  21013. if ($613) {
  21014. $614 = (_sbrk(($544|0))|0);
  21015. $615 = (_sbrk(0)|0);
  21016. $616 = ($614|0)!=((-1)|0);
  21017. $617 = ($615|0)!=((-1)|0);
  21018. $or$cond5$i = $616 & $617;
  21019. $618 = ($614>>>0)<($615>>>0);
  21020. $or$cond11$i = $618 & $or$cond5$i;
  21021. $619 = $615;
  21022. $620 = $614;
  21023. $621 = (($619) - ($620))|0;
  21024. $622 = (($$0197) + 40)|0;
  21025. $623 = ($621>>>0)>($622>>>0);
  21026. $$$4236$i = $623 ? $621 : $$4236$i;
  21027. $or$cond11$not$i = $or$cond11$i ^ 1;
  21028. $624 = ($614|0)==((-1)|0);
  21029. $not$$i216 = $623 ^ 1;
  21030. $625 = $624 | $not$$i216;
  21031. $or$cond50$i = $625 | $or$cond11$not$i;
  21032. if (!($or$cond50$i)) {
  21033. $$723948$i = $$$4236$i;$$749$i = $614;
  21034. label = 180;
  21035. }
  21036. }
  21037. }
  21038. if ((label|0) == 180) {
  21039. $626 = HEAP32[(17164)>>2]|0;
  21040. $627 = (($626) + ($$723948$i))|0;
  21041. HEAP32[(17164)>>2] = $627;
  21042. $628 = HEAP32[(17168)>>2]|0;
  21043. $629 = ($627>>>0)>($628>>>0);
  21044. if ($629) {
  21045. HEAP32[(17168)>>2] = $627;
  21046. }
  21047. $630 = HEAP32[(16756)>>2]|0;
  21048. $631 = ($630|0)==(0|0);
  21049. do {
  21050. if ($631) {
  21051. $632 = HEAP32[(16748)>>2]|0;
  21052. $633 = ($632|0)==(0|0);
  21053. $634 = ($$749$i>>>0)<($632>>>0);
  21054. $or$cond12$i = $633 | $634;
  21055. if ($or$cond12$i) {
  21056. HEAP32[(16748)>>2] = $$749$i;
  21057. }
  21058. HEAP32[(17180)>>2] = $$749$i;
  21059. HEAP32[(17184)>>2] = $$723948$i;
  21060. HEAP32[(17192)>>2] = 0;
  21061. $635 = HEAP32[4301]|0;
  21062. HEAP32[(16768)>>2] = $635;
  21063. HEAP32[(16764)>>2] = -1;
  21064. $$01$i$i = 0;
  21065. while(1) {
  21066. $636 = $$01$i$i << 1;
  21067. $637 = (16772 + ($636<<2)|0);
  21068. $638 = ((($637)) + 12|0);
  21069. HEAP32[$638>>2] = $637;
  21070. $639 = ((($637)) + 8|0);
  21071. HEAP32[$639>>2] = $637;
  21072. $640 = (($$01$i$i) + 1)|0;
  21073. $exitcond$i$i = ($640|0)==(32);
  21074. if ($exitcond$i$i) {
  21075. break;
  21076. } else {
  21077. $$01$i$i = $640;
  21078. }
  21079. }
  21080. $641 = (($$723948$i) + -40)|0;
  21081. $642 = ((($$749$i)) + 8|0);
  21082. $643 = $642;
  21083. $644 = $643 & 7;
  21084. $645 = ($644|0)==(0);
  21085. $646 = (0 - ($643))|0;
  21086. $647 = $646 & 7;
  21087. $648 = $645 ? 0 : $647;
  21088. $649 = (($$749$i) + ($648)|0);
  21089. $650 = (($641) - ($648))|0;
  21090. HEAP32[(16756)>>2] = $649;
  21091. HEAP32[(16744)>>2] = $650;
  21092. $651 = $650 | 1;
  21093. $652 = ((($649)) + 4|0);
  21094. HEAP32[$652>>2] = $651;
  21095. $653 = (($649) + ($650)|0);
  21096. $654 = ((($653)) + 4|0);
  21097. HEAP32[$654>>2] = 40;
  21098. $655 = HEAP32[(17220)>>2]|0;
  21099. HEAP32[(16760)>>2] = $655;
  21100. } else {
  21101. $$024371$i = (17180);
  21102. while(1) {
  21103. $656 = HEAP32[$$024371$i>>2]|0;
  21104. $657 = ((($$024371$i)) + 4|0);
  21105. $658 = HEAP32[$657>>2]|0;
  21106. $659 = (($656) + ($658)|0);
  21107. $660 = ($$749$i|0)==($659|0);
  21108. if ($660) {
  21109. label = 190;
  21110. break;
  21111. }
  21112. $661 = ((($$024371$i)) + 8|0);
  21113. $662 = HEAP32[$661>>2]|0;
  21114. $663 = ($662|0)==(0|0);
  21115. if ($663) {
  21116. break;
  21117. } else {
  21118. $$024371$i = $662;
  21119. }
  21120. }
  21121. if ((label|0) == 190) {
  21122. $664 = ((($$024371$i)) + 12|0);
  21123. $665 = HEAP32[$664>>2]|0;
  21124. $666 = $665 & 8;
  21125. $667 = ($666|0)==(0);
  21126. if ($667) {
  21127. $668 = ($630>>>0)>=($656>>>0);
  21128. $669 = ($630>>>0)<($$749$i>>>0);
  21129. $or$cond51$i = $669 & $668;
  21130. if ($or$cond51$i) {
  21131. $670 = (($658) + ($$723948$i))|0;
  21132. HEAP32[$657>>2] = $670;
  21133. $671 = HEAP32[(16744)>>2]|0;
  21134. $672 = ((($630)) + 8|0);
  21135. $673 = $672;
  21136. $674 = $673 & 7;
  21137. $675 = ($674|0)==(0);
  21138. $676 = (0 - ($673))|0;
  21139. $677 = $676 & 7;
  21140. $678 = $675 ? 0 : $677;
  21141. $679 = (($630) + ($678)|0);
  21142. $680 = (($$723948$i) - ($678))|0;
  21143. $681 = (($671) + ($680))|0;
  21144. HEAP32[(16756)>>2] = $679;
  21145. HEAP32[(16744)>>2] = $681;
  21146. $682 = $681 | 1;
  21147. $683 = ((($679)) + 4|0);
  21148. HEAP32[$683>>2] = $682;
  21149. $684 = (($679) + ($681)|0);
  21150. $685 = ((($684)) + 4|0);
  21151. HEAP32[$685>>2] = 40;
  21152. $686 = HEAP32[(17220)>>2]|0;
  21153. HEAP32[(16760)>>2] = $686;
  21154. break;
  21155. }
  21156. }
  21157. }
  21158. $687 = HEAP32[(16748)>>2]|0;
  21159. $688 = ($$749$i>>>0)<($687>>>0);
  21160. if ($688) {
  21161. HEAP32[(16748)>>2] = $$749$i;
  21162. $752 = $$749$i;
  21163. } else {
  21164. $752 = $687;
  21165. }
  21166. $689 = (($$749$i) + ($$723948$i)|0);
  21167. $$124470$i = (17180);
  21168. while(1) {
  21169. $690 = HEAP32[$$124470$i>>2]|0;
  21170. $691 = ($690|0)==($689|0);
  21171. if ($691) {
  21172. label = 198;
  21173. break;
  21174. }
  21175. $692 = ((($$124470$i)) + 8|0);
  21176. $693 = HEAP32[$692>>2]|0;
  21177. $694 = ($693|0)==(0|0);
  21178. if ($694) {
  21179. break;
  21180. } else {
  21181. $$124470$i = $693;
  21182. }
  21183. }
  21184. if ((label|0) == 198) {
  21185. $695 = ((($$124470$i)) + 12|0);
  21186. $696 = HEAP32[$695>>2]|0;
  21187. $697 = $696 & 8;
  21188. $698 = ($697|0)==(0);
  21189. if ($698) {
  21190. HEAP32[$$124470$i>>2] = $$749$i;
  21191. $699 = ((($$124470$i)) + 4|0);
  21192. $700 = HEAP32[$699>>2]|0;
  21193. $701 = (($700) + ($$723948$i))|0;
  21194. HEAP32[$699>>2] = $701;
  21195. $702 = ((($$749$i)) + 8|0);
  21196. $703 = $702;
  21197. $704 = $703 & 7;
  21198. $705 = ($704|0)==(0);
  21199. $706 = (0 - ($703))|0;
  21200. $707 = $706 & 7;
  21201. $708 = $705 ? 0 : $707;
  21202. $709 = (($$749$i) + ($708)|0);
  21203. $710 = ((($689)) + 8|0);
  21204. $711 = $710;
  21205. $712 = $711 & 7;
  21206. $713 = ($712|0)==(0);
  21207. $714 = (0 - ($711))|0;
  21208. $715 = $714 & 7;
  21209. $716 = $713 ? 0 : $715;
  21210. $717 = (($689) + ($716)|0);
  21211. $718 = $717;
  21212. $719 = $709;
  21213. $720 = (($718) - ($719))|0;
  21214. $721 = (($709) + ($$0197)|0);
  21215. $722 = (($720) - ($$0197))|0;
  21216. $723 = $$0197 | 3;
  21217. $724 = ((($709)) + 4|0);
  21218. HEAP32[$724>>2] = $723;
  21219. $725 = ($717|0)==($630|0);
  21220. do {
  21221. if ($725) {
  21222. $726 = HEAP32[(16744)>>2]|0;
  21223. $727 = (($726) + ($722))|0;
  21224. HEAP32[(16744)>>2] = $727;
  21225. HEAP32[(16756)>>2] = $721;
  21226. $728 = $727 | 1;
  21227. $729 = ((($721)) + 4|0);
  21228. HEAP32[$729>>2] = $728;
  21229. } else {
  21230. $730 = HEAP32[(16752)>>2]|0;
  21231. $731 = ($717|0)==($730|0);
  21232. if ($731) {
  21233. $732 = HEAP32[(16740)>>2]|0;
  21234. $733 = (($732) + ($722))|0;
  21235. HEAP32[(16740)>>2] = $733;
  21236. HEAP32[(16752)>>2] = $721;
  21237. $734 = $733 | 1;
  21238. $735 = ((($721)) + 4|0);
  21239. HEAP32[$735>>2] = $734;
  21240. $736 = (($721) + ($733)|0);
  21241. HEAP32[$736>>2] = $733;
  21242. break;
  21243. }
  21244. $737 = ((($717)) + 4|0);
  21245. $738 = HEAP32[$737>>2]|0;
  21246. $739 = $738 & 3;
  21247. $740 = ($739|0)==(1);
  21248. if ($740) {
  21249. $741 = $738 & -8;
  21250. $742 = $738 >>> 3;
  21251. $743 = ($738>>>0)<(256);
  21252. L314: do {
  21253. if ($743) {
  21254. $744 = ((($717)) + 8|0);
  21255. $745 = HEAP32[$744>>2]|0;
  21256. $746 = ((($717)) + 12|0);
  21257. $747 = HEAP32[$746>>2]|0;
  21258. $748 = $742 << 1;
  21259. $749 = (16772 + ($748<<2)|0);
  21260. $750 = ($745|0)==($749|0);
  21261. do {
  21262. if (!($750)) {
  21263. $751 = ($745>>>0)<($752>>>0);
  21264. if ($751) {
  21265. _abort();
  21266. // unreachable;
  21267. }
  21268. $753 = ((($745)) + 12|0);
  21269. $754 = HEAP32[$753>>2]|0;
  21270. $755 = ($754|0)==($717|0);
  21271. if ($755) {
  21272. break;
  21273. }
  21274. _abort();
  21275. // unreachable;
  21276. }
  21277. } while(0);
  21278. $756 = ($747|0)==($745|0);
  21279. if ($756) {
  21280. $757 = 1 << $742;
  21281. $758 = $757 ^ -1;
  21282. $759 = HEAP32[4183]|0;
  21283. $760 = $759 & $758;
  21284. HEAP32[4183] = $760;
  21285. break;
  21286. }
  21287. $761 = ($747|0)==($749|0);
  21288. do {
  21289. if ($761) {
  21290. $$pre10$i$i = ((($747)) + 8|0);
  21291. $$pre$phi11$i$iZ2D = $$pre10$i$i;
  21292. } else {
  21293. $762 = ($747>>>0)<($752>>>0);
  21294. if ($762) {
  21295. _abort();
  21296. // unreachable;
  21297. }
  21298. $763 = ((($747)) + 8|0);
  21299. $764 = HEAP32[$763>>2]|0;
  21300. $765 = ($764|0)==($717|0);
  21301. if ($765) {
  21302. $$pre$phi11$i$iZ2D = $763;
  21303. break;
  21304. }
  21305. _abort();
  21306. // unreachable;
  21307. }
  21308. } while(0);
  21309. $766 = ((($745)) + 12|0);
  21310. HEAP32[$766>>2] = $747;
  21311. HEAP32[$$pre$phi11$i$iZ2D>>2] = $745;
  21312. } else {
  21313. $767 = ((($717)) + 24|0);
  21314. $768 = HEAP32[$767>>2]|0;
  21315. $769 = ((($717)) + 12|0);
  21316. $770 = HEAP32[$769>>2]|0;
  21317. $771 = ($770|0)==($717|0);
  21318. do {
  21319. if ($771) {
  21320. $781 = ((($717)) + 16|0);
  21321. $782 = ((($781)) + 4|0);
  21322. $783 = HEAP32[$782>>2]|0;
  21323. $784 = ($783|0)==(0|0);
  21324. if ($784) {
  21325. $785 = HEAP32[$781>>2]|0;
  21326. $786 = ($785|0)==(0|0);
  21327. if ($786) {
  21328. $$3$i$i = 0;
  21329. break;
  21330. } else {
  21331. $$1291$i$i = $785;$$1293$i$i = $781;
  21332. }
  21333. } else {
  21334. $$1291$i$i = $783;$$1293$i$i = $782;
  21335. }
  21336. while(1) {
  21337. $787 = ((($$1291$i$i)) + 20|0);
  21338. $788 = HEAP32[$787>>2]|0;
  21339. $789 = ($788|0)==(0|0);
  21340. if (!($789)) {
  21341. $$1291$i$i = $788;$$1293$i$i = $787;
  21342. continue;
  21343. }
  21344. $790 = ((($$1291$i$i)) + 16|0);
  21345. $791 = HEAP32[$790>>2]|0;
  21346. $792 = ($791|0)==(0|0);
  21347. if ($792) {
  21348. break;
  21349. } else {
  21350. $$1291$i$i = $791;$$1293$i$i = $790;
  21351. }
  21352. }
  21353. $793 = ($$1293$i$i>>>0)<($752>>>0);
  21354. if ($793) {
  21355. _abort();
  21356. // unreachable;
  21357. } else {
  21358. HEAP32[$$1293$i$i>>2] = 0;
  21359. $$3$i$i = $$1291$i$i;
  21360. break;
  21361. }
  21362. } else {
  21363. $772 = ((($717)) + 8|0);
  21364. $773 = HEAP32[$772>>2]|0;
  21365. $774 = ($773>>>0)<($752>>>0);
  21366. if ($774) {
  21367. _abort();
  21368. // unreachable;
  21369. }
  21370. $775 = ((($773)) + 12|0);
  21371. $776 = HEAP32[$775>>2]|0;
  21372. $777 = ($776|0)==($717|0);
  21373. if (!($777)) {
  21374. _abort();
  21375. // unreachable;
  21376. }
  21377. $778 = ((($770)) + 8|0);
  21378. $779 = HEAP32[$778>>2]|0;
  21379. $780 = ($779|0)==($717|0);
  21380. if ($780) {
  21381. HEAP32[$775>>2] = $770;
  21382. HEAP32[$778>>2] = $773;
  21383. $$3$i$i = $770;
  21384. break;
  21385. } else {
  21386. _abort();
  21387. // unreachable;
  21388. }
  21389. }
  21390. } while(0);
  21391. $794 = ($768|0)==(0|0);
  21392. if ($794) {
  21393. break;
  21394. }
  21395. $795 = ((($717)) + 28|0);
  21396. $796 = HEAP32[$795>>2]|0;
  21397. $797 = (17036 + ($796<<2)|0);
  21398. $798 = HEAP32[$797>>2]|0;
  21399. $799 = ($717|0)==($798|0);
  21400. do {
  21401. if ($799) {
  21402. HEAP32[$797>>2] = $$3$i$i;
  21403. $cond$i$i = ($$3$i$i|0)==(0|0);
  21404. if (!($cond$i$i)) {
  21405. break;
  21406. }
  21407. $800 = 1 << $796;
  21408. $801 = $800 ^ -1;
  21409. $802 = HEAP32[(16736)>>2]|0;
  21410. $803 = $802 & $801;
  21411. HEAP32[(16736)>>2] = $803;
  21412. break L314;
  21413. } else {
  21414. $804 = HEAP32[(16748)>>2]|0;
  21415. $805 = ($768>>>0)<($804>>>0);
  21416. if ($805) {
  21417. _abort();
  21418. // unreachable;
  21419. } else {
  21420. $806 = ((($768)) + 16|0);
  21421. $807 = HEAP32[$806>>2]|0;
  21422. $not$$i17$i = ($807|0)!=($717|0);
  21423. $$sink1$i$i = $not$$i17$i&1;
  21424. $808 = (((($768)) + 16|0) + ($$sink1$i$i<<2)|0);
  21425. HEAP32[$808>>2] = $$3$i$i;
  21426. $809 = ($$3$i$i|0)==(0|0);
  21427. if ($809) {
  21428. break L314;
  21429. } else {
  21430. break;
  21431. }
  21432. }
  21433. }
  21434. } while(0);
  21435. $810 = HEAP32[(16748)>>2]|0;
  21436. $811 = ($$3$i$i>>>0)<($810>>>0);
  21437. if ($811) {
  21438. _abort();
  21439. // unreachable;
  21440. }
  21441. $812 = ((($$3$i$i)) + 24|0);
  21442. HEAP32[$812>>2] = $768;
  21443. $813 = ((($717)) + 16|0);
  21444. $814 = HEAP32[$813>>2]|0;
  21445. $815 = ($814|0)==(0|0);
  21446. do {
  21447. if (!($815)) {
  21448. $816 = ($814>>>0)<($810>>>0);
  21449. if ($816) {
  21450. _abort();
  21451. // unreachable;
  21452. } else {
  21453. $817 = ((($$3$i$i)) + 16|0);
  21454. HEAP32[$817>>2] = $814;
  21455. $818 = ((($814)) + 24|0);
  21456. HEAP32[$818>>2] = $$3$i$i;
  21457. break;
  21458. }
  21459. }
  21460. } while(0);
  21461. $819 = ((($813)) + 4|0);
  21462. $820 = HEAP32[$819>>2]|0;
  21463. $821 = ($820|0)==(0|0);
  21464. if ($821) {
  21465. break;
  21466. }
  21467. $822 = HEAP32[(16748)>>2]|0;
  21468. $823 = ($820>>>0)<($822>>>0);
  21469. if ($823) {
  21470. _abort();
  21471. // unreachable;
  21472. } else {
  21473. $824 = ((($$3$i$i)) + 20|0);
  21474. HEAP32[$824>>2] = $820;
  21475. $825 = ((($820)) + 24|0);
  21476. HEAP32[$825>>2] = $$3$i$i;
  21477. break;
  21478. }
  21479. }
  21480. } while(0);
  21481. $826 = (($717) + ($741)|0);
  21482. $827 = (($741) + ($722))|0;
  21483. $$0$i18$i = $826;$$0287$i$i = $827;
  21484. } else {
  21485. $$0$i18$i = $717;$$0287$i$i = $722;
  21486. }
  21487. $828 = ((($$0$i18$i)) + 4|0);
  21488. $829 = HEAP32[$828>>2]|0;
  21489. $830 = $829 & -2;
  21490. HEAP32[$828>>2] = $830;
  21491. $831 = $$0287$i$i | 1;
  21492. $832 = ((($721)) + 4|0);
  21493. HEAP32[$832>>2] = $831;
  21494. $833 = (($721) + ($$0287$i$i)|0);
  21495. HEAP32[$833>>2] = $$0287$i$i;
  21496. $834 = $$0287$i$i >>> 3;
  21497. $835 = ($$0287$i$i>>>0)<(256);
  21498. if ($835) {
  21499. $836 = $834 << 1;
  21500. $837 = (16772 + ($836<<2)|0);
  21501. $838 = HEAP32[4183]|0;
  21502. $839 = 1 << $834;
  21503. $840 = $838 & $839;
  21504. $841 = ($840|0)==(0);
  21505. do {
  21506. if ($841) {
  21507. $842 = $838 | $839;
  21508. HEAP32[4183] = $842;
  21509. $$pre$i19$i = ((($837)) + 8|0);
  21510. $$0295$i$i = $837;$$pre$phi$i20$iZ2D = $$pre$i19$i;
  21511. } else {
  21512. $843 = ((($837)) + 8|0);
  21513. $844 = HEAP32[$843>>2]|0;
  21514. $845 = HEAP32[(16748)>>2]|0;
  21515. $846 = ($844>>>0)<($845>>>0);
  21516. if (!($846)) {
  21517. $$0295$i$i = $844;$$pre$phi$i20$iZ2D = $843;
  21518. break;
  21519. }
  21520. _abort();
  21521. // unreachable;
  21522. }
  21523. } while(0);
  21524. HEAP32[$$pre$phi$i20$iZ2D>>2] = $721;
  21525. $847 = ((($$0295$i$i)) + 12|0);
  21526. HEAP32[$847>>2] = $721;
  21527. $848 = ((($721)) + 8|0);
  21528. HEAP32[$848>>2] = $$0295$i$i;
  21529. $849 = ((($721)) + 12|0);
  21530. HEAP32[$849>>2] = $837;
  21531. break;
  21532. }
  21533. $850 = $$0287$i$i >>> 8;
  21534. $851 = ($850|0)==(0);
  21535. do {
  21536. if ($851) {
  21537. $$0296$i$i = 0;
  21538. } else {
  21539. $852 = ($$0287$i$i>>>0)>(16777215);
  21540. if ($852) {
  21541. $$0296$i$i = 31;
  21542. break;
  21543. }
  21544. $853 = (($850) + 1048320)|0;
  21545. $854 = $853 >>> 16;
  21546. $855 = $854 & 8;
  21547. $856 = $850 << $855;
  21548. $857 = (($856) + 520192)|0;
  21549. $858 = $857 >>> 16;
  21550. $859 = $858 & 4;
  21551. $860 = $859 | $855;
  21552. $861 = $856 << $859;
  21553. $862 = (($861) + 245760)|0;
  21554. $863 = $862 >>> 16;
  21555. $864 = $863 & 2;
  21556. $865 = $860 | $864;
  21557. $866 = (14 - ($865))|0;
  21558. $867 = $861 << $864;
  21559. $868 = $867 >>> 15;
  21560. $869 = (($866) + ($868))|0;
  21561. $870 = $869 << 1;
  21562. $871 = (($869) + 7)|0;
  21563. $872 = $$0287$i$i >>> $871;
  21564. $873 = $872 & 1;
  21565. $874 = $873 | $870;
  21566. $$0296$i$i = $874;
  21567. }
  21568. } while(0);
  21569. $875 = (17036 + ($$0296$i$i<<2)|0);
  21570. $876 = ((($721)) + 28|0);
  21571. HEAP32[$876>>2] = $$0296$i$i;
  21572. $877 = ((($721)) + 16|0);
  21573. $878 = ((($877)) + 4|0);
  21574. HEAP32[$878>>2] = 0;
  21575. HEAP32[$877>>2] = 0;
  21576. $879 = HEAP32[(16736)>>2]|0;
  21577. $880 = 1 << $$0296$i$i;
  21578. $881 = $879 & $880;
  21579. $882 = ($881|0)==(0);
  21580. if ($882) {
  21581. $883 = $879 | $880;
  21582. HEAP32[(16736)>>2] = $883;
  21583. HEAP32[$875>>2] = $721;
  21584. $884 = ((($721)) + 24|0);
  21585. HEAP32[$884>>2] = $875;
  21586. $885 = ((($721)) + 12|0);
  21587. HEAP32[$885>>2] = $721;
  21588. $886 = ((($721)) + 8|0);
  21589. HEAP32[$886>>2] = $721;
  21590. break;
  21591. }
  21592. $887 = HEAP32[$875>>2]|0;
  21593. $888 = ($$0296$i$i|0)==(31);
  21594. $889 = $$0296$i$i >>> 1;
  21595. $890 = (25 - ($889))|0;
  21596. $891 = $888 ? 0 : $890;
  21597. $892 = $$0287$i$i << $891;
  21598. $$0288$i$i = $892;$$0289$i$i = $887;
  21599. while(1) {
  21600. $893 = ((($$0289$i$i)) + 4|0);
  21601. $894 = HEAP32[$893>>2]|0;
  21602. $895 = $894 & -8;
  21603. $896 = ($895|0)==($$0287$i$i|0);
  21604. if ($896) {
  21605. label = 265;
  21606. break;
  21607. }
  21608. $897 = $$0288$i$i >>> 31;
  21609. $898 = (((($$0289$i$i)) + 16|0) + ($897<<2)|0);
  21610. $899 = $$0288$i$i << 1;
  21611. $900 = HEAP32[$898>>2]|0;
  21612. $901 = ($900|0)==(0|0);
  21613. if ($901) {
  21614. label = 262;
  21615. break;
  21616. } else {
  21617. $$0288$i$i = $899;$$0289$i$i = $900;
  21618. }
  21619. }
  21620. if ((label|0) == 262) {
  21621. $902 = HEAP32[(16748)>>2]|0;
  21622. $903 = ($898>>>0)<($902>>>0);
  21623. if ($903) {
  21624. _abort();
  21625. // unreachable;
  21626. } else {
  21627. HEAP32[$898>>2] = $721;
  21628. $904 = ((($721)) + 24|0);
  21629. HEAP32[$904>>2] = $$0289$i$i;
  21630. $905 = ((($721)) + 12|0);
  21631. HEAP32[$905>>2] = $721;
  21632. $906 = ((($721)) + 8|0);
  21633. HEAP32[$906>>2] = $721;
  21634. break;
  21635. }
  21636. }
  21637. else if ((label|0) == 265) {
  21638. $907 = ((($$0289$i$i)) + 8|0);
  21639. $908 = HEAP32[$907>>2]|0;
  21640. $909 = HEAP32[(16748)>>2]|0;
  21641. $910 = ($908>>>0)>=($909>>>0);
  21642. $not$7$i$i = ($$0289$i$i>>>0)>=($909>>>0);
  21643. $911 = $910 & $not$7$i$i;
  21644. if ($911) {
  21645. $912 = ((($908)) + 12|0);
  21646. HEAP32[$912>>2] = $721;
  21647. HEAP32[$907>>2] = $721;
  21648. $913 = ((($721)) + 8|0);
  21649. HEAP32[$913>>2] = $908;
  21650. $914 = ((($721)) + 12|0);
  21651. HEAP32[$914>>2] = $$0289$i$i;
  21652. $915 = ((($721)) + 24|0);
  21653. HEAP32[$915>>2] = 0;
  21654. break;
  21655. } else {
  21656. _abort();
  21657. // unreachable;
  21658. }
  21659. }
  21660. }
  21661. } while(0);
  21662. $1047 = ((($709)) + 8|0);
  21663. $$0 = $1047;
  21664. STACKTOP = sp;return ($$0|0);
  21665. }
  21666. }
  21667. $$0$i$i$i = (17180);
  21668. while(1) {
  21669. $916 = HEAP32[$$0$i$i$i>>2]|0;
  21670. $917 = ($916>>>0)>($630>>>0);
  21671. if (!($917)) {
  21672. $918 = ((($$0$i$i$i)) + 4|0);
  21673. $919 = HEAP32[$918>>2]|0;
  21674. $920 = (($916) + ($919)|0);
  21675. $921 = ($920>>>0)>($630>>>0);
  21676. if ($921) {
  21677. break;
  21678. }
  21679. }
  21680. $922 = ((($$0$i$i$i)) + 8|0);
  21681. $923 = HEAP32[$922>>2]|0;
  21682. $$0$i$i$i = $923;
  21683. }
  21684. $924 = ((($920)) + -47|0);
  21685. $925 = ((($924)) + 8|0);
  21686. $926 = $925;
  21687. $927 = $926 & 7;
  21688. $928 = ($927|0)==(0);
  21689. $929 = (0 - ($926))|0;
  21690. $930 = $929 & 7;
  21691. $931 = $928 ? 0 : $930;
  21692. $932 = (($924) + ($931)|0);
  21693. $933 = ((($630)) + 16|0);
  21694. $934 = ($932>>>0)<($933>>>0);
  21695. $935 = $934 ? $630 : $932;
  21696. $936 = ((($935)) + 8|0);
  21697. $937 = ((($935)) + 24|0);
  21698. $938 = (($$723948$i) + -40)|0;
  21699. $939 = ((($$749$i)) + 8|0);
  21700. $940 = $939;
  21701. $941 = $940 & 7;
  21702. $942 = ($941|0)==(0);
  21703. $943 = (0 - ($940))|0;
  21704. $944 = $943 & 7;
  21705. $945 = $942 ? 0 : $944;
  21706. $946 = (($$749$i) + ($945)|0);
  21707. $947 = (($938) - ($945))|0;
  21708. HEAP32[(16756)>>2] = $946;
  21709. HEAP32[(16744)>>2] = $947;
  21710. $948 = $947 | 1;
  21711. $949 = ((($946)) + 4|0);
  21712. HEAP32[$949>>2] = $948;
  21713. $950 = (($946) + ($947)|0);
  21714. $951 = ((($950)) + 4|0);
  21715. HEAP32[$951>>2] = 40;
  21716. $952 = HEAP32[(17220)>>2]|0;
  21717. HEAP32[(16760)>>2] = $952;
  21718. $953 = ((($935)) + 4|0);
  21719. HEAP32[$953>>2] = 27;
  21720. ;HEAP32[$936>>2]=HEAP32[(17180)>>2]|0;HEAP32[$936+4>>2]=HEAP32[(17180)+4>>2]|0;HEAP32[$936+8>>2]=HEAP32[(17180)+8>>2]|0;HEAP32[$936+12>>2]=HEAP32[(17180)+12>>2]|0;
  21721. HEAP32[(17180)>>2] = $$749$i;
  21722. HEAP32[(17184)>>2] = $$723948$i;
  21723. HEAP32[(17192)>>2] = 0;
  21724. HEAP32[(17188)>>2] = $936;
  21725. $955 = $937;
  21726. while(1) {
  21727. $954 = ((($955)) + 4|0);
  21728. HEAP32[$954>>2] = 7;
  21729. $956 = ((($955)) + 8|0);
  21730. $957 = ($956>>>0)<($920>>>0);
  21731. if ($957) {
  21732. $955 = $954;
  21733. } else {
  21734. break;
  21735. }
  21736. }
  21737. $958 = ($935|0)==($630|0);
  21738. if (!($958)) {
  21739. $959 = $935;
  21740. $960 = $630;
  21741. $961 = (($959) - ($960))|0;
  21742. $962 = HEAP32[$953>>2]|0;
  21743. $963 = $962 & -2;
  21744. HEAP32[$953>>2] = $963;
  21745. $964 = $961 | 1;
  21746. $965 = ((($630)) + 4|0);
  21747. HEAP32[$965>>2] = $964;
  21748. HEAP32[$935>>2] = $961;
  21749. $966 = $961 >>> 3;
  21750. $967 = ($961>>>0)<(256);
  21751. if ($967) {
  21752. $968 = $966 << 1;
  21753. $969 = (16772 + ($968<<2)|0);
  21754. $970 = HEAP32[4183]|0;
  21755. $971 = 1 << $966;
  21756. $972 = $970 & $971;
  21757. $973 = ($972|0)==(0);
  21758. if ($973) {
  21759. $974 = $970 | $971;
  21760. HEAP32[4183] = $974;
  21761. $$pre$i$i = ((($969)) + 8|0);
  21762. $$0211$i$i = $969;$$pre$phi$i$iZ2D = $$pre$i$i;
  21763. } else {
  21764. $975 = ((($969)) + 8|0);
  21765. $976 = HEAP32[$975>>2]|0;
  21766. $977 = HEAP32[(16748)>>2]|0;
  21767. $978 = ($976>>>0)<($977>>>0);
  21768. if ($978) {
  21769. _abort();
  21770. // unreachable;
  21771. } else {
  21772. $$0211$i$i = $976;$$pre$phi$i$iZ2D = $975;
  21773. }
  21774. }
  21775. HEAP32[$$pre$phi$i$iZ2D>>2] = $630;
  21776. $979 = ((($$0211$i$i)) + 12|0);
  21777. HEAP32[$979>>2] = $630;
  21778. $980 = ((($630)) + 8|0);
  21779. HEAP32[$980>>2] = $$0211$i$i;
  21780. $981 = ((($630)) + 12|0);
  21781. HEAP32[$981>>2] = $969;
  21782. break;
  21783. }
  21784. $982 = $961 >>> 8;
  21785. $983 = ($982|0)==(0);
  21786. if ($983) {
  21787. $$0212$i$i = 0;
  21788. } else {
  21789. $984 = ($961>>>0)>(16777215);
  21790. if ($984) {
  21791. $$0212$i$i = 31;
  21792. } else {
  21793. $985 = (($982) + 1048320)|0;
  21794. $986 = $985 >>> 16;
  21795. $987 = $986 & 8;
  21796. $988 = $982 << $987;
  21797. $989 = (($988) + 520192)|0;
  21798. $990 = $989 >>> 16;
  21799. $991 = $990 & 4;
  21800. $992 = $991 | $987;
  21801. $993 = $988 << $991;
  21802. $994 = (($993) + 245760)|0;
  21803. $995 = $994 >>> 16;
  21804. $996 = $995 & 2;
  21805. $997 = $992 | $996;
  21806. $998 = (14 - ($997))|0;
  21807. $999 = $993 << $996;
  21808. $1000 = $999 >>> 15;
  21809. $1001 = (($998) + ($1000))|0;
  21810. $1002 = $1001 << 1;
  21811. $1003 = (($1001) + 7)|0;
  21812. $1004 = $961 >>> $1003;
  21813. $1005 = $1004 & 1;
  21814. $1006 = $1005 | $1002;
  21815. $$0212$i$i = $1006;
  21816. }
  21817. }
  21818. $1007 = (17036 + ($$0212$i$i<<2)|0);
  21819. $1008 = ((($630)) + 28|0);
  21820. HEAP32[$1008>>2] = $$0212$i$i;
  21821. $1009 = ((($630)) + 20|0);
  21822. HEAP32[$1009>>2] = 0;
  21823. HEAP32[$933>>2] = 0;
  21824. $1010 = HEAP32[(16736)>>2]|0;
  21825. $1011 = 1 << $$0212$i$i;
  21826. $1012 = $1010 & $1011;
  21827. $1013 = ($1012|0)==(0);
  21828. if ($1013) {
  21829. $1014 = $1010 | $1011;
  21830. HEAP32[(16736)>>2] = $1014;
  21831. HEAP32[$1007>>2] = $630;
  21832. $1015 = ((($630)) + 24|0);
  21833. HEAP32[$1015>>2] = $1007;
  21834. $1016 = ((($630)) + 12|0);
  21835. HEAP32[$1016>>2] = $630;
  21836. $1017 = ((($630)) + 8|0);
  21837. HEAP32[$1017>>2] = $630;
  21838. break;
  21839. }
  21840. $1018 = HEAP32[$1007>>2]|0;
  21841. $1019 = ($$0212$i$i|0)==(31);
  21842. $1020 = $$0212$i$i >>> 1;
  21843. $1021 = (25 - ($1020))|0;
  21844. $1022 = $1019 ? 0 : $1021;
  21845. $1023 = $961 << $1022;
  21846. $$0206$i$i = $1023;$$0207$i$i = $1018;
  21847. while(1) {
  21848. $1024 = ((($$0207$i$i)) + 4|0);
  21849. $1025 = HEAP32[$1024>>2]|0;
  21850. $1026 = $1025 & -8;
  21851. $1027 = ($1026|0)==($961|0);
  21852. if ($1027) {
  21853. label = 292;
  21854. break;
  21855. }
  21856. $1028 = $$0206$i$i >>> 31;
  21857. $1029 = (((($$0207$i$i)) + 16|0) + ($1028<<2)|0);
  21858. $1030 = $$0206$i$i << 1;
  21859. $1031 = HEAP32[$1029>>2]|0;
  21860. $1032 = ($1031|0)==(0|0);
  21861. if ($1032) {
  21862. label = 289;
  21863. break;
  21864. } else {
  21865. $$0206$i$i = $1030;$$0207$i$i = $1031;
  21866. }
  21867. }
  21868. if ((label|0) == 289) {
  21869. $1033 = HEAP32[(16748)>>2]|0;
  21870. $1034 = ($1029>>>0)<($1033>>>0);
  21871. if ($1034) {
  21872. _abort();
  21873. // unreachable;
  21874. } else {
  21875. HEAP32[$1029>>2] = $630;
  21876. $1035 = ((($630)) + 24|0);
  21877. HEAP32[$1035>>2] = $$0207$i$i;
  21878. $1036 = ((($630)) + 12|0);
  21879. HEAP32[$1036>>2] = $630;
  21880. $1037 = ((($630)) + 8|0);
  21881. HEAP32[$1037>>2] = $630;
  21882. break;
  21883. }
  21884. }
  21885. else if ((label|0) == 292) {
  21886. $1038 = ((($$0207$i$i)) + 8|0);
  21887. $1039 = HEAP32[$1038>>2]|0;
  21888. $1040 = HEAP32[(16748)>>2]|0;
  21889. $1041 = ($1039>>>0)>=($1040>>>0);
  21890. $not$$i$i = ($$0207$i$i>>>0)>=($1040>>>0);
  21891. $1042 = $1041 & $not$$i$i;
  21892. if ($1042) {
  21893. $1043 = ((($1039)) + 12|0);
  21894. HEAP32[$1043>>2] = $630;
  21895. HEAP32[$1038>>2] = $630;
  21896. $1044 = ((($630)) + 8|0);
  21897. HEAP32[$1044>>2] = $1039;
  21898. $1045 = ((($630)) + 12|0);
  21899. HEAP32[$1045>>2] = $$0207$i$i;
  21900. $1046 = ((($630)) + 24|0);
  21901. HEAP32[$1046>>2] = 0;
  21902. break;
  21903. } else {
  21904. _abort();
  21905. // unreachable;
  21906. }
  21907. }
  21908. }
  21909. }
  21910. } while(0);
  21911. $1048 = HEAP32[(16744)>>2]|0;
  21912. $1049 = ($1048>>>0)>($$0197>>>0);
  21913. if ($1049) {
  21914. $1050 = (($1048) - ($$0197))|0;
  21915. HEAP32[(16744)>>2] = $1050;
  21916. $1051 = HEAP32[(16756)>>2]|0;
  21917. $1052 = (($1051) + ($$0197)|0);
  21918. HEAP32[(16756)>>2] = $1052;
  21919. $1053 = $1050 | 1;
  21920. $1054 = ((($1052)) + 4|0);
  21921. HEAP32[$1054>>2] = $1053;
  21922. $1055 = $$0197 | 3;
  21923. $1056 = ((($1051)) + 4|0);
  21924. HEAP32[$1056>>2] = $1055;
  21925. $1057 = ((($1051)) + 8|0);
  21926. $$0 = $1057;
  21927. STACKTOP = sp;return ($$0|0);
  21928. }
  21929. }
  21930. $1058 = (___errno_location()|0);
  21931. HEAP32[$1058>>2] = 12;
  21932. $$0 = 0;
  21933. STACKTOP = sp;return ($$0|0);
  21934. }
  21935. function _free($0) {
  21936. $0 = $0|0;
  21937. var $$0212$i = 0, $$0212$in$i = 0, $$0383 = 0, $$0384 = 0, $$0396 = 0, $$0403 = 0, $$1 = 0, $$1382 = 0, $$1387 = 0, $$1390 = 0, $$1398 = 0, $$1402 = 0, $$2 = 0, $$3 = 0, $$3400 = 0, $$pre = 0, $$pre$phi443Z2D = 0, $$pre$phi445Z2D = 0, $$pre$phiZ2D = 0, $$pre442 = 0;
  21938. var $$pre444 = 0, $$sink3 = 0, $$sink5 = 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;
  21939. var $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, $131 = 0;
  21940. var $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, $15 = 0;
  21941. var $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, $168 = 0;
  21942. var $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, $186 = 0;
  21943. var $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, $203 = 0;
  21944. var $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, $221 = 0;
  21945. var $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, $24 = 0;
  21946. var $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, $258 = 0;
  21947. var $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, $276 = 0;
  21948. var $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, $294 = 0;
  21949. var $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, $311 = 0;
  21950. var $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 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;
  21951. var $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, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0;
  21952. var $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, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0;
  21953. var $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, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0;
  21954. var $99 = 0, $cond421 = 0, $cond422 = 0, $not$ = 0, $not$405 = 0, $not$437 = 0, label = 0, sp = 0;
  21955. sp = STACKTOP;
  21956. $1 = ($0|0)==(0|0);
  21957. if ($1) {
  21958. return;
  21959. }
  21960. $2 = ((($0)) + -8|0);
  21961. $3 = HEAP32[(16748)>>2]|0;
  21962. $4 = ($2>>>0)<($3>>>0);
  21963. if ($4) {
  21964. _abort();
  21965. // unreachable;
  21966. }
  21967. $5 = ((($0)) + -4|0);
  21968. $6 = HEAP32[$5>>2]|0;
  21969. $7 = $6 & 3;
  21970. $8 = ($7|0)==(1);
  21971. if ($8) {
  21972. _abort();
  21973. // unreachable;
  21974. }
  21975. $9 = $6 & -8;
  21976. $10 = (($2) + ($9)|0);
  21977. $11 = $6 & 1;
  21978. $12 = ($11|0)==(0);
  21979. L10: do {
  21980. if ($12) {
  21981. $13 = HEAP32[$2>>2]|0;
  21982. $14 = ($7|0)==(0);
  21983. if ($14) {
  21984. return;
  21985. }
  21986. $15 = (0 - ($13))|0;
  21987. $16 = (($2) + ($15)|0);
  21988. $17 = (($13) + ($9))|0;
  21989. $18 = ($16>>>0)<($3>>>0);
  21990. if ($18) {
  21991. _abort();
  21992. // unreachable;
  21993. }
  21994. $19 = HEAP32[(16752)>>2]|0;
  21995. $20 = ($16|0)==($19|0);
  21996. if ($20) {
  21997. $104 = ((($10)) + 4|0);
  21998. $105 = HEAP32[$104>>2]|0;
  21999. $106 = $105 & 3;
  22000. $107 = ($106|0)==(3);
  22001. if (!($107)) {
  22002. $$1 = $16;$$1382 = $17;$113 = $16;
  22003. break;
  22004. }
  22005. $108 = (($16) + ($17)|0);
  22006. $109 = ((($16)) + 4|0);
  22007. $110 = $17 | 1;
  22008. $111 = $105 & -2;
  22009. HEAP32[(16740)>>2] = $17;
  22010. HEAP32[$104>>2] = $111;
  22011. HEAP32[$109>>2] = $110;
  22012. HEAP32[$108>>2] = $17;
  22013. return;
  22014. }
  22015. $21 = $13 >>> 3;
  22016. $22 = ($13>>>0)<(256);
  22017. if ($22) {
  22018. $23 = ((($16)) + 8|0);
  22019. $24 = HEAP32[$23>>2]|0;
  22020. $25 = ((($16)) + 12|0);
  22021. $26 = HEAP32[$25>>2]|0;
  22022. $27 = $21 << 1;
  22023. $28 = (16772 + ($27<<2)|0);
  22024. $29 = ($24|0)==($28|0);
  22025. if (!($29)) {
  22026. $30 = ($24>>>0)<($3>>>0);
  22027. if ($30) {
  22028. _abort();
  22029. // unreachable;
  22030. }
  22031. $31 = ((($24)) + 12|0);
  22032. $32 = HEAP32[$31>>2]|0;
  22033. $33 = ($32|0)==($16|0);
  22034. if (!($33)) {
  22035. _abort();
  22036. // unreachable;
  22037. }
  22038. }
  22039. $34 = ($26|0)==($24|0);
  22040. if ($34) {
  22041. $35 = 1 << $21;
  22042. $36 = $35 ^ -1;
  22043. $37 = HEAP32[4183]|0;
  22044. $38 = $37 & $36;
  22045. HEAP32[4183] = $38;
  22046. $$1 = $16;$$1382 = $17;$113 = $16;
  22047. break;
  22048. }
  22049. $39 = ($26|0)==($28|0);
  22050. if ($39) {
  22051. $$pre444 = ((($26)) + 8|0);
  22052. $$pre$phi445Z2D = $$pre444;
  22053. } else {
  22054. $40 = ($26>>>0)<($3>>>0);
  22055. if ($40) {
  22056. _abort();
  22057. // unreachable;
  22058. }
  22059. $41 = ((($26)) + 8|0);
  22060. $42 = HEAP32[$41>>2]|0;
  22061. $43 = ($42|0)==($16|0);
  22062. if ($43) {
  22063. $$pre$phi445Z2D = $41;
  22064. } else {
  22065. _abort();
  22066. // unreachable;
  22067. }
  22068. }
  22069. $44 = ((($24)) + 12|0);
  22070. HEAP32[$44>>2] = $26;
  22071. HEAP32[$$pre$phi445Z2D>>2] = $24;
  22072. $$1 = $16;$$1382 = $17;$113 = $16;
  22073. break;
  22074. }
  22075. $45 = ((($16)) + 24|0);
  22076. $46 = HEAP32[$45>>2]|0;
  22077. $47 = ((($16)) + 12|0);
  22078. $48 = HEAP32[$47>>2]|0;
  22079. $49 = ($48|0)==($16|0);
  22080. do {
  22081. if ($49) {
  22082. $59 = ((($16)) + 16|0);
  22083. $60 = ((($59)) + 4|0);
  22084. $61 = HEAP32[$60>>2]|0;
  22085. $62 = ($61|0)==(0|0);
  22086. if ($62) {
  22087. $63 = HEAP32[$59>>2]|0;
  22088. $64 = ($63|0)==(0|0);
  22089. if ($64) {
  22090. $$3 = 0;
  22091. break;
  22092. } else {
  22093. $$1387 = $63;$$1390 = $59;
  22094. }
  22095. } else {
  22096. $$1387 = $61;$$1390 = $60;
  22097. }
  22098. while(1) {
  22099. $65 = ((($$1387)) + 20|0);
  22100. $66 = HEAP32[$65>>2]|0;
  22101. $67 = ($66|0)==(0|0);
  22102. if (!($67)) {
  22103. $$1387 = $66;$$1390 = $65;
  22104. continue;
  22105. }
  22106. $68 = ((($$1387)) + 16|0);
  22107. $69 = HEAP32[$68>>2]|0;
  22108. $70 = ($69|0)==(0|0);
  22109. if ($70) {
  22110. break;
  22111. } else {
  22112. $$1387 = $69;$$1390 = $68;
  22113. }
  22114. }
  22115. $71 = ($$1390>>>0)<($3>>>0);
  22116. if ($71) {
  22117. _abort();
  22118. // unreachable;
  22119. } else {
  22120. HEAP32[$$1390>>2] = 0;
  22121. $$3 = $$1387;
  22122. break;
  22123. }
  22124. } else {
  22125. $50 = ((($16)) + 8|0);
  22126. $51 = HEAP32[$50>>2]|0;
  22127. $52 = ($51>>>0)<($3>>>0);
  22128. if ($52) {
  22129. _abort();
  22130. // unreachable;
  22131. }
  22132. $53 = ((($51)) + 12|0);
  22133. $54 = HEAP32[$53>>2]|0;
  22134. $55 = ($54|0)==($16|0);
  22135. if (!($55)) {
  22136. _abort();
  22137. // unreachable;
  22138. }
  22139. $56 = ((($48)) + 8|0);
  22140. $57 = HEAP32[$56>>2]|0;
  22141. $58 = ($57|0)==($16|0);
  22142. if ($58) {
  22143. HEAP32[$53>>2] = $48;
  22144. HEAP32[$56>>2] = $51;
  22145. $$3 = $48;
  22146. break;
  22147. } else {
  22148. _abort();
  22149. // unreachable;
  22150. }
  22151. }
  22152. } while(0);
  22153. $72 = ($46|0)==(0|0);
  22154. if ($72) {
  22155. $$1 = $16;$$1382 = $17;$113 = $16;
  22156. } else {
  22157. $73 = ((($16)) + 28|0);
  22158. $74 = HEAP32[$73>>2]|0;
  22159. $75 = (17036 + ($74<<2)|0);
  22160. $76 = HEAP32[$75>>2]|0;
  22161. $77 = ($16|0)==($76|0);
  22162. do {
  22163. if ($77) {
  22164. HEAP32[$75>>2] = $$3;
  22165. $cond421 = ($$3|0)==(0|0);
  22166. if ($cond421) {
  22167. $78 = 1 << $74;
  22168. $79 = $78 ^ -1;
  22169. $80 = HEAP32[(16736)>>2]|0;
  22170. $81 = $80 & $79;
  22171. HEAP32[(16736)>>2] = $81;
  22172. $$1 = $16;$$1382 = $17;$113 = $16;
  22173. break L10;
  22174. }
  22175. } else {
  22176. $82 = HEAP32[(16748)>>2]|0;
  22177. $83 = ($46>>>0)<($82>>>0);
  22178. if ($83) {
  22179. _abort();
  22180. // unreachable;
  22181. } else {
  22182. $84 = ((($46)) + 16|0);
  22183. $85 = HEAP32[$84>>2]|0;
  22184. $not$405 = ($85|0)!=($16|0);
  22185. $$sink3 = $not$405&1;
  22186. $86 = (((($46)) + 16|0) + ($$sink3<<2)|0);
  22187. HEAP32[$86>>2] = $$3;
  22188. $87 = ($$3|0)==(0|0);
  22189. if ($87) {
  22190. $$1 = $16;$$1382 = $17;$113 = $16;
  22191. break L10;
  22192. } else {
  22193. break;
  22194. }
  22195. }
  22196. }
  22197. } while(0);
  22198. $88 = HEAP32[(16748)>>2]|0;
  22199. $89 = ($$3>>>0)<($88>>>0);
  22200. if ($89) {
  22201. _abort();
  22202. // unreachable;
  22203. }
  22204. $90 = ((($$3)) + 24|0);
  22205. HEAP32[$90>>2] = $46;
  22206. $91 = ((($16)) + 16|0);
  22207. $92 = HEAP32[$91>>2]|0;
  22208. $93 = ($92|0)==(0|0);
  22209. do {
  22210. if (!($93)) {
  22211. $94 = ($92>>>0)<($88>>>0);
  22212. if ($94) {
  22213. _abort();
  22214. // unreachable;
  22215. } else {
  22216. $95 = ((($$3)) + 16|0);
  22217. HEAP32[$95>>2] = $92;
  22218. $96 = ((($92)) + 24|0);
  22219. HEAP32[$96>>2] = $$3;
  22220. break;
  22221. }
  22222. }
  22223. } while(0);
  22224. $97 = ((($91)) + 4|0);
  22225. $98 = HEAP32[$97>>2]|0;
  22226. $99 = ($98|0)==(0|0);
  22227. if ($99) {
  22228. $$1 = $16;$$1382 = $17;$113 = $16;
  22229. } else {
  22230. $100 = HEAP32[(16748)>>2]|0;
  22231. $101 = ($98>>>0)<($100>>>0);
  22232. if ($101) {
  22233. _abort();
  22234. // unreachable;
  22235. } else {
  22236. $102 = ((($$3)) + 20|0);
  22237. HEAP32[$102>>2] = $98;
  22238. $103 = ((($98)) + 24|0);
  22239. HEAP32[$103>>2] = $$3;
  22240. $$1 = $16;$$1382 = $17;$113 = $16;
  22241. break;
  22242. }
  22243. }
  22244. }
  22245. } else {
  22246. $$1 = $2;$$1382 = $9;$113 = $2;
  22247. }
  22248. } while(0);
  22249. $112 = ($113>>>0)<($10>>>0);
  22250. if (!($112)) {
  22251. _abort();
  22252. // unreachable;
  22253. }
  22254. $114 = ((($10)) + 4|0);
  22255. $115 = HEAP32[$114>>2]|0;
  22256. $116 = $115 & 1;
  22257. $117 = ($116|0)==(0);
  22258. if ($117) {
  22259. _abort();
  22260. // unreachable;
  22261. }
  22262. $118 = $115 & 2;
  22263. $119 = ($118|0)==(0);
  22264. if ($119) {
  22265. $120 = HEAP32[(16756)>>2]|0;
  22266. $121 = ($10|0)==($120|0);
  22267. $122 = HEAP32[(16752)>>2]|0;
  22268. if ($121) {
  22269. $123 = HEAP32[(16744)>>2]|0;
  22270. $124 = (($123) + ($$1382))|0;
  22271. HEAP32[(16744)>>2] = $124;
  22272. HEAP32[(16756)>>2] = $$1;
  22273. $125 = $124 | 1;
  22274. $126 = ((($$1)) + 4|0);
  22275. HEAP32[$126>>2] = $125;
  22276. $127 = ($$1|0)==($122|0);
  22277. if (!($127)) {
  22278. return;
  22279. }
  22280. HEAP32[(16752)>>2] = 0;
  22281. HEAP32[(16740)>>2] = 0;
  22282. return;
  22283. }
  22284. $128 = ($10|0)==($122|0);
  22285. if ($128) {
  22286. $129 = HEAP32[(16740)>>2]|0;
  22287. $130 = (($129) + ($$1382))|0;
  22288. HEAP32[(16740)>>2] = $130;
  22289. HEAP32[(16752)>>2] = $113;
  22290. $131 = $130 | 1;
  22291. $132 = ((($$1)) + 4|0);
  22292. HEAP32[$132>>2] = $131;
  22293. $133 = (($113) + ($130)|0);
  22294. HEAP32[$133>>2] = $130;
  22295. return;
  22296. }
  22297. $134 = $115 & -8;
  22298. $135 = (($134) + ($$1382))|0;
  22299. $136 = $115 >>> 3;
  22300. $137 = ($115>>>0)<(256);
  22301. L108: do {
  22302. if ($137) {
  22303. $138 = ((($10)) + 8|0);
  22304. $139 = HEAP32[$138>>2]|0;
  22305. $140 = ((($10)) + 12|0);
  22306. $141 = HEAP32[$140>>2]|0;
  22307. $142 = $136 << 1;
  22308. $143 = (16772 + ($142<<2)|0);
  22309. $144 = ($139|0)==($143|0);
  22310. if (!($144)) {
  22311. $145 = HEAP32[(16748)>>2]|0;
  22312. $146 = ($139>>>0)<($145>>>0);
  22313. if ($146) {
  22314. _abort();
  22315. // unreachable;
  22316. }
  22317. $147 = ((($139)) + 12|0);
  22318. $148 = HEAP32[$147>>2]|0;
  22319. $149 = ($148|0)==($10|0);
  22320. if (!($149)) {
  22321. _abort();
  22322. // unreachable;
  22323. }
  22324. }
  22325. $150 = ($141|0)==($139|0);
  22326. if ($150) {
  22327. $151 = 1 << $136;
  22328. $152 = $151 ^ -1;
  22329. $153 = HEAP32[4183]|0;
  22330. $154 = $153 & $152;
  22331. HEAP32[4183] = $154;
  22332. break;
  22333. }
  22334. $155 = ($141|0)==($143|0);
  22335. if ($155) {
  22336. $$pre442 = ((($141)) + 8|0);
  22337. $$pre$phi443Z2D = $$pre442;
  22338. } else {
  22339. $156 = HEAP32[(16748)>>2]|0;
  22340. $157 = ($141>>>0)<($156>>>0);
  22341. if ($157) {
  22342. _abort();
  22343. // unreachable;
  22344. }
  22345. $158 = ((($141)) + 8|0);
  22346. $159 = HEAP32[$158>>2]|0;
  22347. $160 = ($159|0)==($10|0);
  22348. if ($160) {
  22349. $$pre$phi443Z2D = $158;
  22350. } else {
  22351. _abort();
  22352. // unreachable;
  22353. }
  22354. }
  22355. $161 = ((($139)) + 12|0);
  22356. HEAP32[$161>>2] = $141;
  22357. HEAP32[$$pre$phi443Z2D>>2] = $139;
  22358. } else {
  22359. $162 = ((($10)) + 24|0);
  22360. $163 = HEAP32[$162>>2]|0;
  22361. $164 = ((($10)) + 12|0);
  22362. $165 = HEAP32[$164>>2]|0;
  22363. $166 = ($165|0)==($10|0);
  22364. do {
  22365. if ($166) {
  22366. $177 = ((($10)) + 16|0);
  22367. $178 = ((($177)) + 4|0);
  22368. $179 = HEAP32[$178>>2]|0;
  22369. $180 = ($179|0)==(0|0);
  22370. if ($180) {
  22371. $181 = HEAP32[$177>>2]|0;
  22372. $182 = ($181|0)==(0|0);
  22373. if ($182) {
  22374. $$3400 = 0;
  22375. break;
  22376. } else {
  22377. $$1398 = $181;$$1402 = $177;
  22378. }
  22379. } else {
  22380. $$1398 = $179;$$1402 = $178;
  22381. }
  22382. while(1) {
  22383. $183 = ((($$1398)) + 20|0);
  22384. $184 = HEAP32[$183>>2]|0;
  22385. $185 = ($184|0)==(0|0);
  22386. if (!($185)) {
  22387. $$1398 = $184;$$1402 = $183;
  22388. continue;
  22389. }
  22390. $186 = ((($$1398)) + 16|0);
  22391. $187 = HEAP32[$186>>2]|0;
  22392. $188 = ($187|0)==(0|0);
  22393. if ($188) {
  22394. break;
  22395. } else {
  22396. $$1398 = $187;$$1402 = $186;
  22397. }
  22398. }
  22399. $189 = HEAP32[(16748)>>2]|0;
  22400. $190 = ($$1402>>>0)<($189>>>0);
  22401. if ($190) {
  22402. _abort();
  22403. // unreachable;
  22404. } else {
  22405. HEAP32[$$1402>>2] = 0;
  22406. $$3400 = $$1398;
  22407. break;
  22408. }
  22409. } else {
  22410. $167 = ((($10)) + 8|0);
  22411. $168 = HEAP32[$167>>2]|0;
  22412. $169 = HEAP32[(16748)>>2]|0;
  22413. $170 = ($168>>>0)<($169>>>0);
  22414. if ($170) {
  22415. _abort();
  22416. // unreachable;
  22417. }
  22418. $171 = ((($168)) + 12|0);
  22419. $172 = HEAP32[$171>>2]|0;
  22420. $173 = ($172|0)==($10|0);
  22421. if (!($173)) {
  22422. _abort();
  22423. // unreachable;
  22424. }
  22425. $174 = ((($165)) + 8|0);
  22426. $175 = HEAP32[$174>>2]|0;
  22427. $176 = ($175|0)==($10|0);
  22428. if ($176) {
  22429. HEAP32[$171>>2] = $165;
  22430. HEAP32[$174>>2] = $168;
  22431. $$3400 = $165;
  22432. break;
  22433. } else {
  22434. _abort();
  22435. // unreachable;
  22436. }
  22437. }
  22438. } while(0);
  22439. $191 = ($163|0)==(0|0);
  22440. if (!($191)) {
  22441. $192 = ((($10)) + 28|0);
  22442. $193 = HEAP32[$192>>2]|0;
  22443. $194 = (17036 + ($193<<2)|0);
  22444. $195 = HEAP32[$194>>2]|0;
  22445. $196 = ($10|0)==($195|0);
  22446. do {
  22447. if ($196) {
  22448. HEAP32[$194>>2] = $$3400;
  22449. $cond422 = ($$3400|0)==(0|0);
  22450. if ($cond422) {
  22451. $197 = 1 << $193;
  22452. $198 = $197 ^ -1;
  22453. $199 = HEAP32[(16736)>>2]|0;
  22454. $200 = $199 & $198;
  22455. HEAP32[(16736)>>2] = $200;
  22456. break L108;
  22457. }
  22458. } else {
  22459. $201 = HEAP32[(16748)>>2]|0;
  22460. $202 = ($163>>>0)<($201>>>0);
  22461. if ($202) {
  22462. _abort();
  22463. // unreachable;
  22464. } else {
  22465. $203 = ((($163)) + 16|0);
  22466. $204 = HEAP32[$203>>2]|0;
  22467. $not$ = ($204|0)!=($10|0);
  22468. $$sink5 = $not$&1;
  22469. $205 = (((($163)) + 16|0) + ($$sink5<<2)|0);
  22470. HEAP32[$205>>2] = $$3400;
  22471. $206 = ($$3400|0)==(0|0);
  22472. if ($206) {
  22473. break L108;
  22474. } else {
  22475. break;
  22476. }
  22477. }
  22478. }
  22479. } while(0);
  22480. $207 = HEAP32[(16748)>>2]|0;
  22481. $208 = ($$3400>>>0)<($207>>>0);
  22482. if ($208) {
  22483. _abort();
  22484. // unreachable;
  22485. }
  22486. $209 = ((($$3400)) + 24|0);
  22487. HEAP32[$209>>2] = $163;
  22488. $210 = ((($10)) + 16|0);
  22489. $211 = HEAP32[$210>>2]|0;
  22490. $212 = ($211|0)==(0|0);
  22491. do {
  22492. if (!($212)) {
  22493. $213 = ($211>>>0)<($207>>>0);
  22494. if ($213) {
  22495. _abort();
  22496. // unreachable;
  22497. } else {
  22498. $214 = ((($$3400)) + 16|0);
  22499. HEAP32[$214>>2] = $211;
  22500. $215 = ((($211)) + 24|0);
  22501. HEAP32[$215>>2] = $$3400;
  22502. break;
  22503. }
  22504. }
  22505. } while(0);
  22506. $216 = ((($210)) + 4|0);
  22507. $217 = HEAP32[$216>>2]|0;
  22508. $218 = ($217|0)==(0|0);
  22509. if (!($218)) {
  22510. $219 = HEAP32[(16748)>>2]|0;
  22511. $220 = ($217>>>0)<($219>>>0);
  22512. if ($220) {
  22513. _abort();
  22514. // unreachable;
  22515. } else {
  22516. $221 = ((($$3400)) + 20|0);
  22517. HEAP32[$221>>2] = $217;
  22518. $222 = ((($217)) + 24|0);
  22519. HEAP32[$222>>2] = $$3400;
  22520. break;
  22521. }
  22522. }
  22523. }
  22524. }
  22525. } while(0);
  22526. $223 = $135 | 1;
  22527. $224 = ((($$1)) + 4|0);
  22528. HEAP32[$224>>2] = $223;
  22529. $225 = (($113) + ($135)|0);
  22530. HEAP32[$225>>2] = $135;
  22531. $226 = HEAP32[(16752)>>2]|0;
  22532. $227 = ($$1|0)==($226|0);
  22533. if ($227) {
  22534. HEAP32[(16740)>>2] = $135;
  22535. return;
  22536. } else {
  22537. $$2 = $135;
  22538. }
  22539. } else {
  22540. $228 = $115 & -2;
  22541. HEAP32[$114>>2] = $228;
  22542. $229 = $$1382 | 1;
  22543. $230 = ((($$1)) + 4|0);
  22544. HEAP32[$230>>2] = $229;
  22545. $231 = (($113) + ($$1382)|0);
  22546. HEAP32[$231>>2] = $$1382;
  22547. $$2 = $$1382;
  22548. }
  22549. $232 = $$2 >>> 3;
  22550. $233 = ($$2>>>0)<(256);
  22551. if ($233) {
  22552. $234 = $232 << 1;
  22553. $235 = (16772 + ($234<<2)|0);
  22554. $236 = HEAP32[4183]|0;
  22555. $237 = 1 << $232;
  22556. $238 = $236 & $237;
  22557. $239 = ($238|0)==(0);
  22558. if ($239) {
  22559. $240 = $236 | $237;
  22560. HEAP32[4183] = $240;
  22561. $$pre = ((($235)) + 8|0);
  22562. $$0403 = $235;$$pre$phiZ2D = $$pre;
  22563. } else {
  22564. $241 = ((($235)) + 8|0);
  22565. $242 = HEAP32[$241>>2]|0;
  22566. $243 = HEAP32[(16748)>>2]|0;
  22567. $244 = ($242>>>0)<($243>>>0);
  22568. if ($244) {
  22569. _abort();
  22570. // unreachable;
  22571. } else {
  22572. $$0403 = $242;$$pre$phiZ2D = $241;
  22573. }
  22574. }
  22575. HEAP32[$$pre$phiZ2D>>2] = $$1;
  22576. $245 = ((($$0403)) + 12|0);
  22577. HEAP32[$245>>2] = $$1;
  22578. $246 = ((($$1)) + 8|0);
  22579. HEAP32[$246>>2] = $$0403;
  22580. $247 = ((($$1)) + 12|0);
  22581. HEAP32[$247>>2] = $235;
  22582. return;
  22583. }
  22584. $248 = $$2 >>> 8;
  22585. $249 = ($248|0)==(0);
  22586. if ($249) {
  22587. $$0396 = 0;
  22588. } else {
  22589. $250 = ($$2>>>0)>(16777215);
  22590. if ($250) {
  22591. $$0396 = 31;
  22592. } else {
  22593. $251 = (($248) + 1048320)|0;
  22594. $252 = $251 >>> 16;
  22595. $253 = $252 & 8;
  22596. $254 = $248 << $253;
  22597. $255 = (($254) + 520192)|0;
  22598. $256 = $255 >>> 16;
  22599. $257 = $256 & 4;
  22600. $258 = $257 | $253;
  22601. $259 = $254 << $257;
  22602. $260 = (($259) + 245760)|0;
  22603. $261 = $260 >>> 16;
  22604. $262 = $261 & 2;
  22605. $263 = $258 | $262;
  22606. $264 = (14 - ($263))|0;
  22607. $265 = $259 << $262;
  22608. $266 = $265 >>> 15;
  22609. $267 = (($264) + ($266))|0;
  22610. $268 = $267 << 1;
  22611. $269 = (($267) + 7)|0;
  22612. $270 = $$2 >>> $269;
  22613. $271 = $270 & 1;
  22614. $272 = $271 | $268;
  22615. $$0396 = $272;
  22616. }
  22617. }
  22618. $273 = (17036 + ($$0396<<2)|0);
  22619. $274 = ((($$1)) + 28|0);
  22620. HEAP32[$274>>2] = $$0396;
  22621. $275 = ((($$1)) + 16|0);
  22622. $276 = ((($$1)) + 20|0);
  22623. HEAP32[$276>>2] = 0;
  22624. HEAP32[$275>>2] = 0;
  22625. $277 = HEAP32[(16736)>>2]|0;
  22626. $278 = 1 << $$0396;
  22627. $279 = $277 & $278;
  22628. $280 = ($279|0)==(0);
  22629. do {
  22630. if ($280) {
  22631. $281 = $277 | $278;
  22632. HEAP32[(16736)>>2] = $281;
  22633. HEAP32[$273>>2] = $$1;
  22634. $282 = ((($$1)) + 24|0);
  22635. HEAP32[$282>>2] = $273;
  22636. $283 = ((($$1)) + 12|0);
  22637. HEAP32[$283>>2] = $$1;
  22638. $284 = ((($$1)) + 8|0);
  22639. HEAP32[$284>>2] = $$1;
  22640. } else {
  22641. $285 = HEAP32[$273>>2]|0;
  22642. $286 = ($$0396|0)==(31);
  22643. $287 = $$0396 >>> 1;
  22644. $288 = (25 - ($287))|0;
  22645. $289 = $286 ? 0 : $288;
  22646. $290 = $$2 << $289;
  22647. $$0383 = $290;$$0384 = $285;
  22648. while(1) {
  22649. $291 = ((($$0384)) + 4|0);
  22650. $292 = HEAP32[$291>>2]|0;
  22651. $293 = $292 & -8;
  22652. $294 = ($293|0)==($$2|0);
  22653. if ($294) {
  22654. label = 124;
  22655. break;
  22656. }
  22657. $295 = $$0383 >>> 31;
  22658. $296 = (((($$0384)) + 16|0) + ($295<<2)|0);
  22659. $297 = $$0383 << 1;
  22660. $298 = HEAP32[$296>>2]|0;
  22661. $299 = ($298|0)==(0|0);
  22662. if ($299) {
  22663. label = 121;
  22664. break;
  22665. } else {
  22666. $$0383 = $297;$$0384 = $298;
  22667. }
  22668. }
  22669. if ((label|0) == 121) {
  22670. $300 = HEAP32[(16748)>>2]|0;
  22671. $301 = ($296>>>0)<($300>>>0);
  22672. if ($301) {
  22673. _abort();
  22674. // unreachable;
  22675. } else {
  22676. HEAP32[$296>>2] = $$1;
  22677. $302 = ((($$1)) + 24|0);
  22678. HEAP32[$302>>2] = $$0384;
  22679. $303 = ((($$1)) + 12|0);
  22680. HEAP32[$303>>2] = $$1;
  22681. $304 = ((($$1)) + 8|0);
  22682. HEAP32[$304>>2] = $$1;
  22683. break;
  22684. }
  22685. }
  22686. else if ((label|0) == 124) {
  22687. $305 = ((($$0384)) + 8|0);
  22688. $306 = HEAP32[$305>>2]|0;
  22689. $307 = HEAP32[(16748)>>2]|0;
  22690. $308 = ($306>>>0)>=($307>>>0);
  22691. $not$437 = ($$0384>>>0)>=($307>>>0);
  22692. $309 = $308 & $not$437;
  22693. if ($309) {
  22694. $310 = ((($306)) + 12|0);
  22695. HEAP32[$310>>2] = $$1;
  22696. HEAP32[$305>>2] = $$1;
  22697. $311 = ((($$1)) + 8|0);
  22698. HEAP32[$311>>2] = $306;
  22699. $312 = ((($$1)) + 12|0);
  22700. HEAP32[$312>>2] = $$0384;
  22701. $313 = ((($$1)) + 24|0);
  22702. HEAP32[$313>>2] = 0;
  22703. break;
  22704. } else {
  22705. _abort();
  22706. // unreachable;
  22707. }
  22708. }
  22709. }
  22710. } while(0);
  22711. $314 = HEAP32[(16764)>>2]|0;
  22712. $315 = (($314) + -1)|0;
  22713. HEAP32[(16764)>>2] = $315;
  22714. $316 = ($315|0)==(0);
  22715. if ($316) {
  22716. $$0212$in$i = (17188);
  22717. } else {
  22718. return;
  22719. }
  22720. while(1) {
  22721. $$0212$i = HEAP32[$$0212$in$i>>2]|0;
  22722. $317 = ($$0212$i|0)==(0|0);
  22723. $318 = ((($$0212$i)) + 8|0);
  22724. if ($317) {
  22725. break;
  22726. } else {
  22727. $$0212$in$i = $318;
  22728. }
  22729. }
  22730. HEAP32[(16764)>>2] = -1;
  22731. return;
  22732. }
  22733. function _calloc($0,$1) {
  22734. $0 = $0|0;
  22735. $1 = $1|0;
  22736. var $$ = 0, $$0 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0;
  22737. sp = STACKTOP;
  22738. $2 = ($0|0)==(0);
  22739. if ($2) {
  22740. $$0 = 0;
  22741. } else {
  22742. $3 = Math_imul($1, $0)|0;
  22743. $4 = $1 | $0;
  22744. $5 = ($4>>>0)>(65535);
  22745. if ($5) {
  22746. $6 = (($3>>>0) / ($0>>>0))&-1;
  22747. $7 = ($6|0)==($1|0);
  22748. $$ = $7 ? $3 : -1;
  22749. $$0 = $$;
  22750. } else {
  22751. $$0 = $3;
  22752. }
  22753. }
  22754. $8 = (_malloc($$0)|0);
  22755. $9 = ($8|0)==(0|0);
  22756. if ($9) {
  22757. return ($8|0);
  22758. }
  22759. $10 = ((($8)) + -4|0);
  22760. $11 = HEAP32[$10>>2]|0;
  22761. $12 = $11 & 3;
  22762. $13 = ($12|0)==(0);
  22763. if ($13) {
  22764. return ($8|0);
  22765. }
  22766. _memset(($8|0),0,($$0|0))|0;
  22767. return ($8|0);
  22768. }
  22769. function runPostSets() {
  22770. }
  22771. function _memset(ptr, value, num) {
  22772. ptr = ptr|0; value = value|0; num = num|0;
  22773. var end = 0, aligned_end = 0, block_aligned_end = 0, value4 = 0;
  22774. end = (ptr + num)|0;
  22775. value = value & 0xff;
  22776. if ((num|0) >= 67 /* 64 bytes for an unrolled loop + 3 bytes for unaligned head*/) {
  22777. while ((ptr&3) != 0) {
  22778. HEAP8[((ptr)>>0)]=value;
  22779. ptr = (ptr+1)|0;
  22780. }
  22781. aligned_end = (end & -4)|0;
  22782. block_aligned_end = (aligned_end - 64)|0;
  22783. value4 = value | (value << 8) | (value << 16) | (value << 24);
  22784. while((ptr|0) <= (block_aligned_end|0)) {
  22785. HEAP32[((ptr)>>2)]=value4;
  22786. HEAP32[(((ptr)+(4))>>2)]=value4;
  22787. HEAP32[(((ptr)+(8))>>2)]=value4;
  22788. HEAP32[(((ptr)+(12))>>2)]=value4;
  22789. HEAP32[(((ptr)+(16))>>2)]=value4;
  22790. HEAP32[(((ptr)+(20))>>2)]=value4;
  22791. HEAP32[(((ptr)+(24))>>2)]=value4;
  22792. HEAP32[(((ptr)+(28))>>2)]=value4;
  22793. HEAP32[(((ptr)+(32))>>2)]=value4;
  22794. HEAP32[(((ptr)+(36))>>2)]=value4;
  22795. HEAP32[(((ptr)+(40))>>2)]=value4;
  22796. HEAP32[(((ptr)+(44))>>2)]=value4;
  22797. HEAP32[(((ptr)+(48))>>2)]=value4;
  22798. HEAP32[(((ptr)+(52))>>2)]=value4;
  22799. HEAP32[(((ptr)+(56))>>2)]=value4;
  22800. HEAP32[(((ptr)+(60))>>2)]=value4;
  22801. ptr = (ptr + 64)|0;
  22802. }
  22803. while ((ptr|0) < (aligned_end|0) ) {
  22804. HEAP32[((ptr)>>2)]=value4;
  22805. ptr = (ptr+4)|0;
  22806. }
  22807. }
  22808. // The remaining bytes.
  22809. while ((ptr|0) < (end|0)) {
  22810. HEAP8[((ptr)>>0)]=value;
  22811. ptr = (ptr+1)|0;
  22812. }
  22813. return (end-num)|0;
  22814. }
  22815. function _i64Subtract(a, b, c, d) {
  22816. a = a|0; b = b|0; c = c|0; d = d|0;
  22817. var l = 0, h = 0;
  22818. l = (a - c)>>>0;
  22819. h = (b - d)>>>0;
  22820. h = (b - d - (((c>>>0) > (a>>>0))|0))>>>0; // Borrow one from high word to low word on underflow.
  22821. return ((tempRet0 = h,l|0)|0);
  22822. }
  22823. function _i64Add(a, b, c, d) {
  22824. /*
  22825. x = a + b*2^32
  22826. y = c + d*2^32
  22827. result = l + h*2^32
  22828. */
  22829. a = a|0; b = b|0; c = c|0; d = d|0;
  22830. var l = 0, h = 0;
  22831. l = (a + c)>>>0;
  22832. h = (b + d + (((l>>>0) < (a>>>0))|0))>>>0; // Add carry from low word to high word on overflow.
  22833. return ((tempRet0 = h,l|0)|0);
  22834. }
  22835. function _memcpy(dest, src, num) {
  22836. dest = dest|0; src = src|0; num = num|0;
  22837. var ret = 0;
  22838. var aligned_dest_end = 0;
  22839. var block_aligned_dest_end = 0;
  22840. var dest_end = 0;
  22841. // Test against a benchmarked cutoff limit for when HEAPU8.set() becomes faster to use.
  22842. if ((num|0) >=
  22843. 8192
  22844. ) {
  22845. return _emscripten_memcpy_big(dest|0, src|0, num|0)|0;
  22846. }
  22847. ret = dest|0;
  22848. dest_end = (dest + num)|0;
  22849. if ((dest&3) == (src&3)) {
  22850. // The initial unaligned < 4-byte front.
  22851. while (dest & 3) {
  22852. if ((num|0) == 0) return ret|0;
  22853. HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0);
  22854. dest = (dest+1)|0;
  22855. src = (src+1)|0;
  22856. num = (num-1)|0;
  22857. }
  22858. aligned_dest_end = (dest_end & -4)|0;
  22859. block_aligned_dest_end = (aligned_dest_end - 64)|0;
  22860. while ((dest|0) <= (block_aligned_dest_end|0) ) {
  22861. HEAP32[((dest)>>2)]=((HEAP32[((src)>>2)])|0);
  22862. HEAP32[(((dest)+(4))>>2)]=((HEAP32[(((src)+(4))>>2)])|0);
  22863. HEAP32[(((dest)+(8))>>2)]=((HEAP32[(((src)+(8))>>2)])|0);
  22864. HEAP32[(((dest)+(12))>>2)]=((HEAP32[(((src)+(12))>>2)])|0);
  22865. HEAP32[(((dest)+(16))>>2)]=((HEAP32[(((src)+(16))>>2)])|0);
  22866. HEAP32[(((dest)+(20))>>2)]=((HEAP32[(((src)+(20))>>2)])|0);
  22867. HEAP32[(((dest)+(24))>>2)]=((HEAP32[(((src)+(24))>>2)])|0);
  22868. HEAP32[(((dest)+(28))>>2)]=((HEAP32[(((src)+(28))>>2)])|0);
  22869. HEAP32[(((dest)+(32))>>2)]=((HEAP32[(((src)+(32))>>2)])|0);
  22870. HEAP32[(((dest)+(36))>>2)]=((HEAP32[(((src)+(36))>>2)])|0);
  22871. HEAP32[(((dest)+(40))>>2)]=((HEAP32[(((src)+(40))>>2)])|0);
  22872. HEAP32[(((dest)+(44))>>2)]=((HEAP32[(((src)+(44))>>2)])|0);
  22873. HEAP32[(((dest)+(48))>>2)]=((HEAP32[(((src)+(48))>>2)])|0);
  22874. HEAP32[(((dest)+(52))>>2)]=((HEAP32[(((src)+(52))>>2)])|0);
  22875. HEAP32[(((dest)+(56))>>2)]=((HEAP32[(((src)+(56))>>2)])|0);
  22876. HEAP32[(((dest)+(60))>>2)]=((HEAP32[(((src)+(60))>>2)])|0);
  22877. dest = (dest+64)|0;
  22878. src = (src+64)|0;
  22879. }
  22880. while ((dest|0) < (aligned_dest_end|0) ) {
  22881. HEAP32[((dest)>>2)]=((HEAP32[((src)>>2)])|0);
  22882. dest = (dest+4)|0;
  22883. src = (src+4)|0;
  22884. }
  22885. } else {
  22886. // In the unaligned copy case, unroll a bit as well.
  22887. aligned_dest_end = (dest_end - 4)|0;
  22888. while ((dest|0) < (aligned_dest_end|0) ) {
  22889. HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0);
  22890. HEAP8[(((dest)+(1))>>0)]=((HEAP8[(((src)+(1))>>0)])|0);
  22891. HEAP8[(((dest)+(2))>>0)]=((HEAP8[(((src)+(2))>>0)])|0);
  22892. HEAP8[(((dest)+(3))>>0)]=((HEAP8[(((src)+(3))>>0)])|0);
  22893. dest = (dest+4)|0;
  22894. src = (src+4)|0;
  22895. }
  22896. }
  22897. // The remaining unaligned < 4 byte tail.
  22898. while ((dest|0) < (dest_end|0)) {
  22899. HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0);
  22900. dest = (dest+1)|0;
  22901. src = (src+1)|0;
  22902. }
  22903. return ret|0;
  22904. }
  22905. function _memmove(dest, src, num) {
  22906. dest = dest|0; src = src|0; num = num|0;
  22907. var ret = 0;
  22908. if (((src|0) < (dest|0)) & ((dest|0) < ((src + num)|0))) {
  22909. // Unlikely case: Copy backwards in a safe manner
  22910. ret = dest;
  22911. src = (src + num)|0;
  22912. dest = (dest + num)|0;
  22913. while ((num|0) > 0) {
  22914. dest = (dest - 1)|0;
  22915. src = (src - 1)|0;
  22916. num = (num - 1)|0;
  22917. HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0);
  22918. }
  22919. dest = ret;
  22920. } else {
  22921. _memcpy(dest, src, num) | 0;
  22922. }
  22923. return dest | 0;
  22924. }
  22925. function _llvm_cttz_i32(x) {
  22926. x = x|0;
  22927. var ret = 0;
  22928. ret = ((HEAP8[(((cttz_i8)+(x & 0xff))>>0)])|0);
  22929. if ((ret|0) < 8) return ret|0;
  22930. ret = ((HEAP8[(((cttz_i8)+((x >> 8)&0xff))>>0)])|0);
  22931. if ((ret|0) < 8) return (ret + 8)|0;
  22932. ret = ((HEAP8[(((cttz_i8)+((x >> 16)&0xff))>>0)])|0);
  22933. if ((ret|0) < 8) return (ret + 16)|0;
  22934. return (((HEAP8[(((cttz_i8)+(x >>> 24))>>0)])|0) + 24)|0;
  22935. }
  22936. function ___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) {
  22937. $a$0 = $a$0 | 0;
  22938. $a$1 = $a$1 | 0;
  22939. $b$0 = $b$0 | 0;
  22940. $b$1 = $b$1 | 0;
  22941. $rem = $rem | 0;
  22942. 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;
  22943. $n_sroa_0_0_extract_trunc = $a$0;
  22944. $n_sroa_1_4_extract_shift$0 = $a$1;
  22945. $n_sroa_1_4_extract_trunc = $n_sroa_1_4_extract_shift$0;
  22946. $d_sroa_0_0_extract_trunc = $b$0;
  22947. $d_sroa_1_4_extract_shift$0 = $b$1;
  22948. $d_sroa_1_4_extract_trunc = $d_sroa_1_4_extract_shift$0;
  22949. if (($n_sroa_1_4_extract_trunc | 0) == 0) {
  22950. $4 = ($rem | 0) != 0;
  22951. if (($d_sroa_1_4_extract_trunc | 0) == 0) {
  22952. if ($4) {
  22953. HEAP32[$rem >> 2] = ($n_sroa_0_0_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0);
  22954. HEAP32[$rem + 4 >> 2] = 0;
  22955. }
  22956. $_0$1 = 0;
  22957. $_0$0 = ($n_sroa_0_0_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0) >>> 0;
  22958. return (tempRet0 = $_0$1, $_0$0) | 0;
  22959. } else {
  22960. if (!$4) {
  22961. $_0$1 = 0;
  22962. $_0$0 = 0;
  22963. return (tempRet0 = $_0$1, $_0$0) | 0;
  22964. }
  22965. HEAP32[$rem >> 2] = $a$0 & -1;
  22966. HEAP32[$rem + 4 >> 2] = $a$1 & 0;
  22967. $_0$1 = 0;
  22968. $_0$0 = 0;
  22969. return (tempRet0 = $_0$1, $_0$0) | 0;
  22970. }
  22971. }
  22972. $17 = ($d_sroa_1_4_extract_trunc | 0) == 0;
  22973. do {
  22974. if (($d_sroa_0_0_extract_trunc | 0) == 0) {
  22975. if ($17) {
  22976. if (($rem | 0) != 0) {
  22977. HEAP32[$rem >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0);
  22978. HEAP32[$rem + 4 >> 2] = 0;
  22979. }
  22980. $_0$1 = 0;
  22981. $_0$0 = ($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0) >>> 0;
  22982. return (tempRet0 = $_0$1, $_0$0) | 0;
  22983. }
  22984. if (($n_sroa_0_0_extract_trunc | 0) == 0) {
  22985. if (($rem | 0) != 0) {
  22986. HEAP32[$rem >> 2] = 0;
  22987. HEAP32[$rem + 4 >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_1_4_extract_trunc >>> 0);
  22988. }
  22989. $_0$1 = 0;
  22990. $_0$0 = ($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_1_4_extract_trunc >>> 0) >>> 0;
  22991. return (tempRet0 = $_0$1, $_0$0) | 0;
  22992. }
  22993. $37 = $d_sroa_1_4_extract_trunc - 1 | 0;
  22994. if (($37 & $d_sroa_1_4_extract_trunc | 0) == 0) {
  22995. if (($rem | 0) != 0) {
  22996. HEAP32[$rem >> 2] = 0 | $a$0 & -1;
  22997. HEAP32[$rem + 4 >> 2] = $37 & $n_sroa_1_4_extract_trunc | $a$1 & 0;
  22998. }
  22999. $_0$1 = 0;
  23000. $_0$0 = $n_sroa_1_4_extract_trunc >>> ((_llvm_cttz_i32($d_sroa_1_4_extract_trunc | 0) | 0) >>> 0);
  23001. return (tempRet0 = $_0$1, $_0$0) | 0;
  23002. }
  23003. $49 = Math_clz32($d_sroa_1_4_extract_trunc | 0) | 0;
  23004. $51 = $49 - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0;
  23005. if ($51 >>> 0 <= 30) {
  23006. $57 = $51 + 1 | 0;
  23007. $58 = 31 - $51 | 0;
  23008. $sr_1_ph = $57;
  23009. $r_sroa_0_1_ph = $n_sroa_1_4_extract_trunc << $58 | $n_sroa_0_0_extract_trunc >>> ($57 >>> 0);
  23010. $r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($57 >>> 0);
  23011. $q_sroa_0_1_ph = 0;
  23012. $q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $58;
  23013. break;
  23014. }
  23015. if (($rem | 0) == 0) {
  23016. $_0$1 = 0;
  23017. $_0$0 = 0;
  23018. return (tempRet0 = $_0$1, $_0$0) | 0;
  23019. }
  23020. HEAP32[$rem >> 2] = 0 | $a$0 & -1;
  23021. HEAP32[$rem + 4 >> 2] = $n_sroa_1_4_extract_shift$0 | $a$1 & 0;
  23022. $_0$1 = 0;
  23023. $_0$0 = 0;
  23024. return (tempRet0 = $_0$1, $_0$0) | 0;
  23025. } else {
  23026. if (!$17) {
  23027. $117 = Math_clz32($d_sroa_1_4_extract_trunc | 0) | 0;
  23028. $119 = $117 - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0;
  23029. if ($119 >>> 0 <= 31) {
  23030. $125 = $119 + 1 | 0;
  23031. $126 = 31 - $119 | 0;
  23032. $130 = $119 - 31 >> 31;
  23033. $sr_1_ph = $125;
  23034. $r_sroa_0_1_ph = $n_sroa_0_0_extract_trunc >>> ($125 >>> 0) & $130 | $n_sroa_1_4_extract_trunc << $126;
  23035. $r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($125 >>> 0) & $130;
  23036. $q_sroa_0_1_ph = 0;
  23037. $q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $126;
  23038. break;
  23039. }
  23040. if (($rem | 0) == 0) {
  23041. $_0$1 = 0;
  23042. $_0$0 = 0;
  23043. return (tempRet0 = $_0$1, $_0$0) | 0;
  23044. }
  23045. HEAP32[$rem >> 2] = 0 | $a$0 & -1;
  23046. HEAP32[$rem + 4 >> 2] = $n_sroa_1_4_extract_shift$0 | $a$1 & 0;
  23047. $_0$1 = 0;
  23048. $_0$0 = 0;
  23049. return (tempRet0 = $_0$1, $_0$0) | 0;
  23050. }
  23051. $66 = $d_sroa_0_0_extract_trunc - 1 | 0;
  23052. if (($66 & $d_sroa_0_0_extract_trunc | 0) != 0) {
  23053. $86 = (Math_clz32($d_sroa_0_0_extract_trunc | 0) | 0) + 33 | 0;
  23054. $88 = $86 - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0;
  23055. $89 = 64 - $88 | 0;
  23056. $91 = 32 - $88 | 0;
  23057. $92 = $91 >> 31;
  23058. $95 = $88 - 32 | 0;
  23059. $105 = $95 >> 31;
  23060. $sr_1_ph = $88;
  23061. $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;
  23062. $r_sroa_1_1_ph = $105 & $n_sroa_1_4_extract_trunc >>> ($88 >>> 0);
  23063. $q_sroa_0_1_ph = $n_sroa_0_0_extract_trunc << $89 & $92;
  23064. $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;
  23065. break;
  23066. }
  23067. if (($rem | 0) != 0) {
  23068. HEAP32[$rem >> 2] = $66 & $n_sroa_0_0_extract_trunc;
  23069. HEAP32[$rem + 4 >> 2] = 0;
  23070. }
  23071. if (($d_sroa_0_0_extract_trunc | 0) == 1) {
  23072. $_0$1 = $n_sroa_1_4_extract_shift$0 | $a$1 & 0;
  23073. $_0$0 = 0 | $a$0 & -1;
  23074. return (tempRet0 = $_0$1, $_0$0) | 0;
  23075. } else {
  23076. $78 = _llvm_cttz_i32($d_sroa_0_0_extract_trunc | 0) | 0;
  23077. $_0$1 = 0 | $n_sroa_1_4_extract_trunc >>> ($78 >>> 0);
  23078. $_0$0 = $n_sroa_1_4_extract_trunc << 32 - $78 | $n_sroa_0_0_extract_trunc >>> ($78 >>> 0) | 0;
  23079. return (tempRet0 = $_0$1, $_0$0) | 0;
  23080. }
  23081. }
  23082. } while (0);
  23083. if (($sr_1_ph | 0) == 0) {
  23084. $q_sroa_1_1_lcssa = $q_sroa_1_1_ph;
  23085. $q_sroa_0_1_lcssa = $q_sroa_0_1_ph;
  23086. $r_sroa_1_1_lcssa = $r_sroa_1_1_ph;
  23087. $r_sroa_0_1_lcssa = $r_sroa_0_1_ph;
  23088. $carry_0_lcssa$1 = 0;
  23089. $carry_0_lcssa$0 = 0;
  23090. } else {
  23091. $d_sroa_0_0_insert_insert99$0 = 0 | $b$0 & -1;
  23092. $d_sroa_0_0_insert_insert99$1 = $d_sroa_1_4_extract_shift$0 | $b$1 & 0;
  23093. $137$0 = _i64Add($d_sroa_0_0_insert_insert99$0 | 0, $d_sroa_0_0_insert_insert99$1 | 0, -1, -1) | 0;
  23094. $137$1 = tempRet0;
  23095. $q_sroa_1_1198 = $q_sroa_1_1_ph;
  23096. $q_sroa_0_1199 = $q_sroa_0_1_ph;
  23097. $r_sroa_1_1200 = $r_sroa_1_1_ph;
  23098. $r_sroa_0_1201 = $r_sroa_0_1_ph;
  23099. $sr_1202 = $sr_1_ph;
  23100. $carry_0203 = 0;
  23101. while (1) {
  23102. $147 = $q_sroa_0_1199 >>> 31 | $q_sroa_1_1198 << 1;
  23103. $149 = $carry_0203 | $q_sroa_0_1199 << 1;
  23104. $r_sroa_0_0_insert_insert42$0 = 0 | ($r_sroa_0_1201 << 1 | $q_sroa_1_1198 >>> 31);
  23105. $r_sroa_0_0_insert_insert42$1 = $r_sroa_0_1201 >>> 31 | $r_sroa_1_1200 << 1 | 0;
  23106. _i64Subtract($137$0 | 0, $137$1 | 0, $r_sroa_0_0_insert_insert42$0 | 0, $r_sroa_0_0_insert_insert42$1 | 0) | 0;
  23107. $150$1 = tempRet0;
  23108. $151$0 = $150$1 >> 31 | (($150$1 | 0) < 0 ? -1 : 0) << 1;
  23109. $152 = $151$0 & 1;
  23110. $154$0 = _i64Subtract($r_sroa_0_0_insert_insert42$0 | 0, $r_sroa_0_0_insert_insert42$1 | 0, $151$0 & $d_sroa_0_0_insert_insert99$0 | 0, ((($150$1 | 0) < 0 ? -1 : 0) >> 31 | (($150$1 | 0) < 0 ? -1 : 0) << 1) & $d_sroa_0_0_insert_insert99$1 | 0) | 0;
  23111. $r_sroa_0_0_extract_trunc = $154$0;
  23112. $r_sroa_1_4_extract_trunc = tempRet0;
  23113. $155 = $sr_1202 - 1 | 0;
  23114. if (($155 | 0) == 0) {
  23115. break;
  23116. } else {
  23117. $q_sroa_1_1198 = $147;
  23118. $q_sroa_0_1199 = $149;
  23119. $r_sroa_1_1200 = $r_sroa_1_4_extract_trunc;
  23120. $r_sroa_0_1201 = $r_sroa_0_0_extract_trunc;
  23121. $sr_1202 = $155;
  23122. $carry_0203 = $152;
  23123. }
  23124. }
  23125. $q_sroa_1_1_lcssa = $147;
  23126. $q_sroa_0_1_lcssa = $149;
  23127. $r_sroa_1_1_lcssa = $r_sroa_1_4_extract_trunc;
  23128. $r_sroa_0_1_lcssa = $r_sroa_0_0_extract_trunc;
  23129. $carry_0_lcssa$1 = 0;
  23130. $carry_0_lcssa$0 = $152;
  23131. }
  23132. $q_sroa_0_0_insert_ext75$0 = $q_sroa_0_1_lcssa;
  23133. $q_sroa_0_0_insert_ext75$1 = 0;
  23134. $q_sroa_0_0_insert_insert77$1 = $q_sroa_1_1_lcssa | $q_sroa_0_0_insert_ext75$1;
  23135. if (($rem | 0) != 0) {
  23136. HEAP32[$rem >> 2] = 0 | $r_sroa_0_1_lcssa;
  23137. HEAP32[$rem + 4 >> 2] = $r_sroa_1_1_lcssa | 0;
  23138. }
  23139. $_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;
  23140. $_0$0 = ($q_sroa_0_0_insert_ext75$0 << 1 | 0 >>> 31) & -2 | $carry_0_lcssa$0;
  23141. return (tempRet0 = $_0$1, $_0$0) | 0;
  23142. }
  23143. function ___uremdi3($a$0, $a$1, $b$0, $b$1) {
  23144. $a$0 = $a$0 | 0;
  23145. $a$1 = $a$1 | 0;
  23146. $b$0 = $b$0 | 0;
  23147. $b$1 = $b$1 | 0;
  23148. var $rem = 0, __stackBase__ = 0;
  23149. __stackBase__ = STACKTOP;
  23150. STACKTOP = STACKTOP + 16 | 0;
  23151. $rem = __stackBase__ | 0;
  23152. ___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) | 0;
  23153. STACKTOP = __stackBase__;
  23154. return (tempRet0 = HEAP32[$rem + 4 >> 2] | 0, HEAP32[$rem >> 2] | 0) | 0;
  23155. }
  23156. function _bitshift64Shl(low, high, bits) {
  23157. low = low|0; high = high|0; bits = bits|0;
  23158. var ander = 0;
  23159. if ((bits|0) < 32) {
  23160. ander = ((1 << bits) - 1)|0;
  23161. tempRet0 = (high << bits) | ((low&(ander << (32 - bits))) >>> (32 - bits));
  23162. return low << bits;
  23163. }
  23164. tempRet0 = low << (bits - 32);
  23165. return 0;
  23166. }
  23167. function ___udivdi3($a$0, $a$1, $b$0, $b$1) {
  23168. $a$0 = $a$0 | 0;
  23169. $a$1 = $a$1 | 0;
  23170. $b$0 = $b$0 | 0;
  23171. $b$1 = $b$1 | 0;
  23172. var $1$0 = 0;
  23173. $1$0 = ___udivmoddi4($a$0, $a$1, $b$0, $b$1, 0) | 0;
  23174. return $1$0 | 0;
  23175. }
  23176. function _roundf(f) {
  23177. f = +f;
  23178. return f >= +0 ? +Math_floor(f + +0.5) : +Math_ceil(f - +0.5); // TODO: use fround?
  23179. }
  23180. function _bitshift64Lshr(low, high, bits) {
  23181. low = low|0; high = high|0; bits = bits|0;
  23182. var ander = 0;
  23183. if ((bits|0) < 32) {
  23184. ander = ((1 << bits) - 1)|0;
  23185. tempRet0 = high >>> bits;
  23186. return (low >>> bits) | ((high&ander) << (32 - bits));
  23187. }
  23188. tempRet0 = 0;
  23189. return (high >>> (bits - 32))|0;
  23190. }
  23191. function _sbrk(increment) {
  23192. increment = increment|0;
  23193. var oldDynamicTop = 0;
  23194. var oldDynamicTopOnChange = 0;
  23195. var newDynamicTop = 0;
  23196. var totalMemory = 0;
  23197. increment = ((increment + 15) & -16)|0;
  23198. oldDynamicTop = HEAP32[DYNAMICTOP_PTR>>2]|0;
  23199. newDynamicTop = oldDynamicTop + increment | 0;
  23200. if (((increment|0) > 0 & (newDynamicTop|0) < (oldDynamicTop|0)) // Detect and fail if we would wrap around signed 32-bit int.
  23201. | (newDynamicTop|0) < 0) { // Also underflow, sbrk() should be able to be used to subtract.
  23202. abortOnCannotGrowMemory()|0;
  23203. ___setErrNo(12);
  23204. return -1;
  23205. }
  23206. HEAP32[DYNAMICTOP_PTR>>2] = newDynamicTop;
  23207. totalMemory = getTotalMemory()|0;
  23208. if ((newDynamicTop|0) > (totalMemory|0)) {
  23209. if ((enlargeMemory()|0) == 0) {
  23210. ___setErrNo(12);
  23211. HEAP32[DYNAMICTOP_PTR>>2] = oldDynamicTop;
  23212. return -1;
  23213. }
  23214. }
  23215. return oldDynamicTop|0;
  23216. }
  23217. function _llvm_bswap_i32(x) {
  23218. x = x|0;
  23219. return (((x&0xff)<<24) | (((x>>8)&0xff)<<16) | (((x>>16)&0xff)<<8) | (x>>>24))|0;
  23220. }
  23221. function dynCall_viiiii(index,a1,a2,a3,a4,a5) {
  23222. index = index|0;
  23223. a1=a1|0; a2=a2|0; a3=a3|0; a4=a4|0; a5=a5|0;
  23224. FUNCTION_TABLE_viiiii[index&7](a1|0,a2|0,a3|0,a4|0,a5|0);
  23225. }
  23226. function dynCall_vd(index,a1) {
  23227. index = index|0;
  23228. a1=+a1;
  23229. FUNCTION_TABLE_vd[index&3](+a1);
  23230. }
  23231. function dynCall_vid(index,a1,a2) {
  23232. index = index|0;
  23233. a1=a1|0; a2=+a2;
  23234. FUNCTION_TABLE_vid[index&3](a1|0,+a2);
  23235. }
  23236. function dynCall_vi(index,a1) {
  23237. index = index|0;
  23238. a1=a1|0;
  23239. FUNCTION_TABLE_vi[index&31](a1|0);
  23240. }
  23241. function dynCall_vii(index,a1,a2) {
  23242. index = index|0;
  23243. a1=a1|0; a2=a2|0;
  23244. FUNCTION_TABLE_vii[index&63](a1|0,a2|0);
  23245. }
  23246. function dynCall_ii(index,a1) {
  23247. index = index|0;
  23248. a1=a1|0;
  23249. return FUNCTION_TABLE_ii[index&15](a1|0)|0;
  23250. }
  23251. function dynCall_viddd(index,a1,a2,a3,a4) {
  23252. index = index|0;
  23253. a1=a1|0; a2=+a2; a3=+a3; a4=+a4;
  23254. FUNCTION_TABLE_viddd[index&3](a1|0,+a2,+a3,+a4);
  23255. }
  23256. function dynCall_vidd(index,a1,a2,a3) {
  23257. index = index|0;
  23258. a1=a1|0; a2=+a2; a3=+a3;
  23259. FUNCTION_TABLE_vidd[index&7](a1|0,+a2,+a3);
  23260. }
  23261. function dynCall_iiii(index,a1,a2,a3) {
  23262. index = index|0;
  23263. a1=a1|0; a2=a2|0; a3=a3|0;
  23264. return FUNCTION_TABLE_iiii[index&15](a1|0,a2|0,a3|0)|0;
  23265. }
  23266. function dynCall_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8) {
  23267. index = index|0;
  23268. a1=a1|0; a2=a2|0; a3=a3|0; a4=a4|0; a5=a5|0; a6=a6|0; a7=a7|0; a8=a8|0;
  23269. FUNCTION_TABLE_viiiiiiii[index&3](a1|0,a2|0,a3|0,a4|0,a5|0,a6|0,a7|0,a8|0);
  23270. }
  23271. function dynCall_viiiiii(index,a1,a2,a3,a4,a5,a6) {
  23272. index = index|0;
  23273. a1=a1|0; a2=a2|0; a3=a3|0; a4=a4|0; a5=a5|0; a6=a6|0;
  23274. FUNCTION_TABLE_viiiiii[index&3](a1|0,a2|0,a3|0,a4|0,a5|0,a6|0);
  23275. }
  23276. function dynCall_viii(index,a1,a2,a3) {
  23277. index = index|0;
  23278. a1=a1|0; a2=a2|0; a3=a3|0;
  23279. FUNCTION_TABLE_viii[index&31](a1|0,a2|0,a3|0);
  23280. }
  23281. function dynCall_vidddd(index,a1,a2,a3,a4,a5) {
  23282. index = index|0;
  23283. a1=a1|0; a2=+a2; a3=+a3; a4=+a4; a5=+a5;
  23284. FUNCTION_TABLE_vidddd[index&3](a1|0,+a2,+a3,+a4,+a5);
  23285. }
  23286. function dynCall_vdi(index,a1,a2) {
  23287. index = index|0;
  23288. a1=+a1; a2=a2|0;
  23289. FUNCTION_TABLE_vdi[index&1](+a1,a2|0);
  23290. }
  23291. function dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7) {
  23292. index = index|0;
  23293. a1=a1|0; a2=a2|0; a3=a3|0; a4=a4|0; a5=a5|0; a6=a6|0; a7=a7|0;
  23294. FUNCTION_TABLE_viiiiiii[index&3](a1|0,a2|0,a3|0,a4|0,a5|0,a6|0,a7|0);
  23295. }
  23296. function dynCall_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) {
  23297. index = index|0;
  23298. a1=a1|0; a2=a2|0; a3=a3|0; a4=a4|0; a5=a5|0; a6=a6|0; a7=a7|0; a8=a8|0; a9=a9|0;
  23299. FUNCTION_TABLE_viiiiiiiii[index&3](a1|0,a2|0,a3|0,a4|0,a5|0,a6|0,a7|0,a8|0,a9|0);
  23300. }
  23301. function dynCall_iii(index,a1,a2) {
  23302. index = index|0;
  23303. a1=a1|0; a2=a2|0;
  23304. return FUNCTION_TABLE_iii[index&3](a1|0,a2|0)|0;
  23305. }
  23306. function dynCall_i(index) {
  23307. index = index|0;
  23308. return FUNCTION_TABLE_i[index&3]()|0;
  23309. }
  23310. function dynCall_vdddddd(index,a1,a2,a3,a4,a5,a6) {
  23311. index = index|0;
  23312. a1=+a1; a2=+a2; a3=+a3; a4=+a4; a5=+a5; a6=+a6;
  23313. FUNCTION_TABLE_vdddddd[index&1](+a1,+a2,+a3,+a4,+a5,+a6);
  23314. }
  23315. function dynCall_vdddd(index,a1,a2,a3,a4) {
  23316. index = index|0;
  23317. a1=+a1; a2=+a2; a3=+a3; a4=+a4;
  23318. FUNCTION_TABLE_vdddd[index&3](+a1,+a2,+a3,+a4);
  23319. }
  23320. function dynCall_vdd(index,a1,a2) {
  23321. index = index|0;
  23322. a1=+a1; a2=+a2;
  23323. FUNCTION_TABLE_vdd[index&3](+a1,+a2);
  23324. }
  23325. function dynCall_v(index) {
  23326. index = index|0;
  23327. FUNCTION_TABLE_v[index&7]();
  23328. }
  23329. function dynCall_viid(index,a1,a2,a3) {
  23330. index = index|0;
  23331. a1=a1|0; a2=a2|0; a3=+a3;
  23332. FUNCTION_TABLE_viid[index&1](a1|0,a2|0,+a3);
  23333. }
  23334. function dynCall_viiii(index,a1,a2,a3,a4) {
  23335. index = index|0;
  23336. a1=a1|0; a2=a2|0; a3=a3|0; a4=a4|0;
  23337. FUNCTION_TABLE_viiii[index&31](a1|0,a2|0,a3|0,a4|0);
  23338. }
  23339. function b0(p0,p1,p2,p3,p4) {
  23340. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0; nullFunc_viiiii(0);
  23341. }
  23342. function _emscripten_glUniform4i__wrapper(p0,p1,p2,p3,p4) {
  23343. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0; _emscripten_glUniform4i(p0|0,p1|0,p2|0,p3|0,p4|0);
  23344. }
  23345. function _emscripten_glFramebufferTexture2D__wrapper(p0,p1,p2,p3,p4) {
  23346. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0; _emscripten_glFramebufferTexture2D(p0|0,p1|0,p2|0,p3|0,p4|0);
  23347. }
  23348. function _emscripten_glShaderBinary__wrapper(p0,p1,p2,p3,p4) {
  23349. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0; _emscripten_glShaderBinary(p0|0,p1|0,p2|0,p3|0,p4|0);
  23350. }
  23351. function _emscripten_glDrawElementsInstanced__wrapper(p0,p1,p2,p3,p4) {
  23352. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0; _emscripten_glDrawElementsInstanced(p0|0,p1|0,p2|0,p3|0,p4|0);
  23353. }
  23354. function b1(p0) {
  23355. p0 = +p0; nullFunc_vd(1);
  23356. }
  23357. function _emscripten_glClearDepth__wrapper(p0) {
  23358. p0 = +p0; _emscripten_glClearDepth(+p0);
  23359. }
  23360. function _emscripten_glClearDepthf__wrapper(p0) {
  23361. p0 = +p0; _emscripten_glClearDepthf(+p0);
  23362. }
  23363. function _emscripten_glLineWidth__wrapper(p0) {
  23364. p0 = +p0; _emscripten_glLineWidth(+p0);
  23365. }
  23366. function b2(p0,p1) {
  23367. p0 = p0|0;p1 = +p1; nullFunc_vid(2);
  23368. }
  23369. function _emscripten_glUniform1f__wrapper(p0,p1) {
  23370. p0 = p0|0;p1 = +p1; _emscripten_glUniform1f(p0|0,+p1);
  23371. }
  23372. function _emscripten_glVertexAttrib1f__wrapper(p0,p1) {
  23373. p0 = p0|0;p1 = +p1; _emscripten_glVertexAttrib1f(p0|0,+p1);
  23374. }
  23375. function b3(p0) {
  23376. p0 = p0|0; nullFunc_vi(3);
  23377. }
  23378. function _emscripten_glDeleteShader__wrapper(p0) {
  23379. p0 = p0|0; _emscripten_glDeleteShader(p0|0);
  23380. }
  23381. function _emscripten_glCompileShader__wrapper(p0) {
  23382. p0 = p0|0; _emscripten_glCompileShader(p0|0);
  23383. }
  23384. function _emscripten_glDeleteProgram__wrapper(p0) {
  23385. p0 = p0|0; _emscripten_glDeleteProgram(p0|0);
  23386. }
  23387. function _emscripten_glLinkProgram__wrapper(p0) {
  23388. p0 = p0|0; _emscripten_glLinkProgram(p0|0);
  23389. }
  23390. function _emscripten_glUseProgram__wrapper(p0) {
  23391. p0 = p0|0; _emscripten_glUseProgram(p0|0);
  23392. }
  23393. function _emscripten_glValidateProgram__wrapper(p0) {
  23394. p0 = p0|0; _emscripten_glValidateProgram(p0|0);
  23395. }
  23396. function _emscripten_glDeleteObjectARB__wrapper(p0) {
  23397. p0 = p0|0; _emscripten_glDeleteObjectARB(p0|0);
  23398. }
  23399. function _emscripten_glEnableClientState__wrapper(p0) {
  23400. p0 = p0|0; _emscripten_glEnableClientState(p0|0);
  23401. }
  23402. function _emscripten_glClientActiveTexture__wrapper(p0) {
  23403. p0 = p0|0; _emscripten_glClientActiveTexture(p0|0);
  23404. }
  23405. function _emscripten_glBindVertexArray__wrapper(p0) {
  23406. p0 = p0|0; _emscripten_glBindVertexArray(p0|0);
  23407. }
  23408. function _emscripten_glMatrixMode__wrapper(p0) {
  23409. p0 = p0|0; _emscripten_glMatrixMode(p0|0);
  23410. }
  23411. function _emscripten_glLoadMatrixf__wrapper(p0) {
  23412. p0 = p0|0; _emscripten_glLoadMatrixf(p0|0);
  23413. }
  23414. function _emscripten_glEnableVertexAttribArray__wrapper(p0) {
  23415. p0 = p0|0; _emscripten_glEnableVertexAttribArray(p0|0);
  23416. }
  23417. function _emscripten_glDisableVertexAttribArray__wrapper(p0) {
  23418. p0 = p0|0; _emscripten_glDisableVertexAttribArray(p0|0);
  23419. }
  23420. function _emscripten_glDepthFunc__wrapper(p0) {
  23421. p0 = p0|0; _emscripten_glDepthFunc(p0|0);
  23422. }
  23423. function _emscripten_glEnable__wrapper(p0) {
  23424. p0 = p0|0; _emscripten_glEnable(p0|0);
  23425. }
  23426. function _emscripten_glDisable__wrapper(p0) {
  23427. p0 = p0|0; _emscripten_glDisable(p0|0);
  23428. }
  23429. function _emscripten_glFrontFace__wrapper(p0) {
  23430. p0 = p0|0; _emscripten_glFrontFace(p0|0);
  23431. }
  23432. function _emscripten_glCullFace__wrapper(p0) {
  23433. p0 = p0|0; _emscripten_glCullFace(p0|0);
  23434. }
  23435. function _emscripten_glClear__wrapper(p0) {
  23436. p0 = p0|0; _emscripten_glClear(p0|0);
  23437. }
  23438. function _emscripten_glClearStencil__wrapper(p0) {
  23439. p0 = p0|0; _emscripten_glClearStencil(p0|0);
  23440. }
  23441. function _emscripten_glDepthMask__wrapper(p0) {
  23442. p0 = p0|0; _emscripten_glDepthMask(p0|0);
  23443. }
  23444. function _emscripten_glStencilMask__wrapper(p0) {
  23445. p0 = p0|0; _emscripten_glStencilMask(p0|0);
  23446. }
  23447. function _emscripten_glGenerateMipmap__wrapper(p0) {
  23448. p0 = p0|0; _emscripten_glGenerateMipmap(p0|0);
  23449. }
  23450. function _emscripten_glActiveTexture__wrapper(p0) {
  23451. p0 = p0|0; _emscripten_glActiveTexture(p0|0);
  23452. }
  23453. function _emscripten_glBlendEquation__wrapper(p0) {
  23454. p0 = p0|0; _emscripten_glBlendEquation(p0|0);
  23455. }
  23456. function b4(p0,p1) {
  23457. p0 = p0|0;p1 = p1|0; nullFunc_vii(4);
  23458. }
  23459. function _emscripten_glPixelStorei__wrapper(p0,p1) {
  23460. p0 = p0|0;p1 = p1|0; _emscripten_glPixelStorei(p0|0,p1|0);
  23461. }
  23462. function _emscripten_glGetIntegerv__wrapper(p0,p1) {
  23463. p0 = p0|0;p1 = p1|0; _emscripten_glGetIntegerv(p0|0,p1|0);
  23464. }
  23465. function _emscripten_glGetFloatv__wrapper(p0,p1) {
  23466. p0 = p0|0;p1 = p1|0; _emscripten_glGetFloatv(p0|0,p1|0);
  23467. }
  23468. function _emscripten_glGetBooleanv__wrapper(p0,p1) {
  23469. p0 = p0|0;p1 = p1|0; _emscripten_glGetBooleanv(p0|0,p1|0);
  23470. }
  23471. function _emscripten_glGenTextures__wrapper(p0,p1) {
  23472. p0 = p0|0;p1 = p1|0; _emscripten_glGenTextures(p0|0,p1|0);
  23473. }
  23474. function _emscripten_glDeleteTextures__wrapper(p0,p1) {
  23475. p0 = p0|0;p1 = p1|0; _emscripten_glDeleteTextures(p0|0,p1|0);
  23476. }
  23477. function _emscripten_glBindTexture__wrapper(p0,p1) {
  23478. p0 = p0|0;p1 = p1|0; _emscripten_glBindTexture(p0|0,p1|0);
  23479. }
  23480. function _emscripten_glGenBuffers__wrapper(p0,p1) {
  23481. p0 = p0|0;p1 = p1|0; _emscripten_glGenBuffers(p0|0,p1|0);
  23482. }
  23483. function _emscripten_glDeleteBuffers__wrapper(p0,p1) {
  23484. p0 = p0|0;p1 = p1|0; _emscripten_glDeleteBuffers(p0|0,p1|0);
  23485. }
  23486. function _emscripten_glGenRenderbuffers__wrapper(p0,p1) {
  23487. p0 = p0|0;p1 = p1|0; _emscripten_glGenRenderbuffers(p0|0,p1|0);
  23488. }
  23489. function _emscripten_glDeleteRenderbuffers__wrapper(p0,p1) {
  23490. p0 = p0|0;p1 = p1|0; _emscripten_glDeleteRenderbuffers(p0|0,p1|0);
  23491. }
  23492. function _emscripten_glBindRenderbuffer__wrapper(p0,p1) {
  23493. p0 = p0|0;p1 = p1|0; _emscripten_glBindRenderbuffer(p0|0,p1|0);
  23494. }
  23495. function _emscripten_glUniform1i__wrapper(p0,p1) {
  23496. p0 = p0|0;p1 = p1|0; _emscripten_glUniform1i(p0|0,p1|0);
  23497. }
  23498. function _emscripten_glBindBuffer__wrapper(p0,p1) {
  23499. p0 = p0|0;p1 = p1|0; _emscripten_glBindBuffer(p0|0,p1|0);
  23500. }
  23501. function _emscripten_glVertexAttrib1fv__wrapper(p0,p1) {
  23502. p0 = p0|0;p1 = p1|0; _emscripten_glVertexAttrib1fv(p0|0,p1|0);
  23503. }
  23504. function _emscripten_glVertexAttrib2fv__wrapper(p0,p1) {
  23505. p0 = p0|0;p1 = p1|0; _emscripten_glVertexAttrib2fv(p0|0,p1|0);
  23506. }
  23507. function _emscripten_glVertexAttrib3fv__wrapper(p0,p1) {
  23508. p0 = p0|0;p1 = p1|0; _emscripten_glVertexAttrib3fv(p0|0,p1|0);
  23509. }
  23510. function _emscripten_glVertexAttrib4fv__wrapper(p0,p1) {
  23511. p0 = p0|0;p1 = p1|0; _emscripten_glVertexAttrib4fv(p0|0,p1|0);
  23512. }
  23513. function _emscripten_glAttachShader__wrapper(p0,p1) {
  23514. p0 = p0|0;p1 = p1|0; _emscripten_glAttachShader(p0|0,p1|0);
  23515. }
  23516. function _emscripten_glDetachShader__wrapper(p0,p1) {
  23517. p0 = p0|0;p1 = p1|0; _emscripten_glDetachShader(p0|0,p1|0);
  23518. }
  23519. function _emscripten_glBindFramebuffer__wrapper(p0,p1) {
  23520. p0 = p0|0;p1 = p1|0; _emscripten_glBindFramebuffer(p0|0,p1|0);
  23521. }
  23522. function _emscripten_glGenFramebuffers__wrapper(p0,p1) {
  23523. p0 = p0|0;p1 = p1|0; _emscripten_glGenFramebuffers(p0|0,p1|0);
  23524. }
  23525. function _emscripten_glDeleteFramebuffers__wrapper(p0,p1) {
  23526. p0 = p0|0;p1 = p1|0; _emscripten_glDeleteFramebuffers(p0|0,p1|0);
  23527. }
  23528. function _emscripten_glBindProgramARB__wrapper(p0,p1) {
  23529. p0 = p0|0;p1 = p1|0; _emscripten_glBindProgramARB(p0|0,p1|0);
  23530. }
  23531. function _emscripten_glGetPointerv__wrapper(p0,p1) {
  23532. p0 = p0|0;p1 = p1|0; _emscripten_glGetPointerv(p0|0,p1|0);
  23533. }
  23534. function _emscripten_glGenVertexArrays__wrapper(p0,p1) {
  23535. p0 = p0|0;p1 = p1|0; _emscripten_glGenVertexArrays(p0|0,p1|0);
  23536. }
  23537. function _emscripten_glDeleteVertexArrays__wrapper(p0,p1) {
  23538. p0 = p0|0;p1 = p1|0; _emscripten_glDeleteVertexArrays(p0|0,p1|0);
  23539. }
  23540. function _emscripten_glVertexAttribDivisor__wrapper(p0,p1) {
  23541. p0 = p0|0;p1 = p1|0; _emscripten_glVertexAttribDivisor(p0|0,p1|0);
  23542. }
  23543. function _emscripten_glBlendFunc__wrapper(p0,p1) {
  23544. p0 = p0|0;p1 = p1|0; _emscripten_glBlendFunc(p0|0,p1|0);
  23545. }
  23546. function _emscripten_glBlendEquationSeparate__wrapper(p0,p1) {
  23547. p0 = p0|0;p1 = p1|0; _emscripten_glBlendEquationSeparate(p0|0,p1|0);
  23548. }
  23549. function _emscripten_glStencilMaskSeparate__wrapper(p0,p1) {
  23550. p0 = p0|0;p1 = p1|0; _emscripten_glStencilMaskSeparate(p0|0,p1|0);
  23551. }
  23552. function _emscripten_glHint__wrapper(p0,p1) {
  23553. p0 = p0|0;p1 = p1|0; _emscripten_glHint(p0|0,p1|0);
  23554. }
  23555. function _emscripten_glDrawBuffers__wrapper(p0,p1) {
  23556. p0 = p0|0;p1 = p1|0; _emscripten_glDrawBuffers(p0|0,p1|0);
  23557. }
  23558. function b5(p0) {
  23559. p0 = p0|0; nullFunc_ii(5);return 0;
  23560. }
  23561. function _emscripten_glGetString__wrapper(p0) {
  23562. p0 = p0|0; return _emscripten_glGetString(p0|0)|0;
  23563. }
  23564. function _emscripten_glIsTexture__wrapper(p0) {
  23565. p0 = p0|0; return _emscripten_glIsTexture(p0|0)|0;
  23566. }
  23567. function _emscripten_glIsBuffer__wrapper(p0) {
  23568. p0 = p0|0; return _emscripten_glIsBuffer(p0|0)|0;
  23569. }
  23570. function _emscripten_glIsRenderbuffer__wrapper(p0) {
  23571. p0 = p0|0; return _emscripten_glIsRenderbuffer(p0|0)|0;
  23572. }
  23573. function _emscripten_glCreateShader__wrapper(p0) {
  23574. p0 = p0|0; return _emscripten_glCreateShader(p0|0)|0;
  23575. }
  23576. function _emscripten_glIsShader__wrapper(p0) {
  23577. p0 = p0|0; return _emscripten_glIsShader(p0|0)|0;
  23578. }
  23579. function _emscripten_glIsProgram__wrapper(p0) {
  23580. p0 = p0|0; return _emscripten_glIsProgram(p0|0)|0;
  23581. }
  23582. function _emscripten_glIsFramebuffer__wrapper(p0) {
  23583. p0 = p0|0; return _emscripten_glIsFramebuffer(p0|0)|0;
  23584. }
  23585. function _emscripten_glCheckFramebufferStatus__wrapper(p0) {
  23586. p0 = p0|0; return _emscripten_glCheckFramebufferStatus(p0|0)|0;
  23587. }
  23588. function _emscripten_glIsEnabled__wrapper(p0) {
  23589. p0 = p0|0; return _emscripten_glIsEnabled(p0|0)|0;
  23590. }
  23591. function b6(p0,p1,p2,p3) {
  23592. p0 = p0|0;p1 = +p1;p2 = +p2;p3 = +p3; nullFunc_viddd(6);
  23593. }
  23594. function _emscripten_glUniform3f__wrapper(p0,p1,p2,p3) {
  23595. p0 = p0|0;p1 = +p1;p2 = +p2;p3 = +p3; _emscripten_glUniform3f(p0|0,+p1,+p2,+p3);
  23596. }
  23597. function _emscripten_glVertexAttrib3f__wrapper(p0,p1,p2,p3) {
  23598. p0 = p0|0;p1 = +p1;p2 = +p2;p3 = +p3; _emscripten_glVertexAttrib3f(p0|0,+p1,+p2,+p3);
  23599. }
  23600. function b7(p0,p1,p2) {
  23601. p0 = p0|0;p1 = +p1;p2 = +p2; nullFunc_vidd(7);
  23602. }
  23603. function _emscripten_glUniform2f__wrapper(p0,p1,p2) {
  23604. p0 = p0|0;p1 = +p1;p2 = +p2; _emscripten_glUniform2f(p0|0,+p1,+p2);
  23605. }
  23606. function _emscripten_glVertexAttrib2f__wrapper(p0,p1,p2) {
  23607. p0 = p0|0;p1 = +p1;p2 = +p2; _emscripten_glVertexAttrib2f(p0|0,+p1,+p2);
  23608. }
  23609. function b8(p0,p1,p2) {
  23610. p0 = p0|0;p1 = p1|0;p2 = p2|0; nullFunc_iiii(8);return 0;
  23611. }
  23612. function b9(p0,p1,p2,p3,p4,p5,p6,p7) {
  23613. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0;p6 = p6|0;p7 = p7|0; nullFunc_viiiiiiii(9);
  23614. }
  23615. function _emscripten_glCompressedTexImage2D__wrapper(p0,p1,p2,p3,p4,p5,p6,p7) {
  23616. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0;p6 = p6|0;p7 = p7|0; _emscripten_glCompressedTexImage2D(p0|0,p1|0,p2|0,p3|0,p4|0,p5|0,p6|0,p7|0);
  23617. }
  23618. function _emscripten_glCopyTexImage2D__wrapper(p0,p1,p2,p3,p4,p5,p6,p7) {
  23619. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0;p6 = p6|0;p7 = p7|0; _emscripten_glCopyTexImage2D(p0|0,p1|0,p2|0,p3|0,p4|0,p5|0,p6|0,p7|0);
  23620. }
  23621. function _emscripten_glCopyTexSubImage2D__wrapper(p0,p1,p2,p3,p4,p5,p6,p7) {
  23622. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0;p6 = p6|0;p7 = p7|0; _emscripten_glCopyTexSubImage2D(p0|0,p1|0,p2|0,p3|0,p4|0,p5|0,p6|0,p7|0);
  23623. }
  23624. function b10(p0,p1,p2,p3,p4,p5) {
  23625. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0; nullFunc_viiiiii(10);
  23626. }
  23627. function _emscripten_glDrawRangeElements__wrapper(p0,p1,p2,p3,p4,p5) {
  23628. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0; _emscripten_glDrawRangeElements(p0|0,p1|0,p2|0,p3|0,p4|0,p5|0);
  23629. }
  23630. function _emscripten_glVertexAttribPointer__wrapper(p0,p1,p2,p3,p4,p5) {
  23631. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0; _emscripten_glVertexAttribPointer(p0|0,p1|0,p2|0,p3|0,p4|0,p5|0);
  23632. }
  23633. function b11(p0,p1,p2) {
  23634. p0 = p0|0;p1 = p1|0;p2 = p2|0; nullFunc_viii(11);
  23635. }
  23636. function _emscripten_glGetTexParameterfv__wrapper(p0,p1,p2) {
  23637. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glGetTexParameterfv(p0|0,p1|0,p2|0);
  23638. }
  23639. function _emscripten_glGetTexParameteriv__wrapper(p0,p1,p2) {
  23640. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glGetTexParameteriv(p0|0,p1|0,p2|0);
  23641. }
  23642. function _emscripten_glTexParameterfv__wrapper(p0,p1,p2) {
  23643. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glTexParameterfv(p0|0,p1|0,p2|0);
  23644. }
  23645. function _emscripten_glTexParameteriv__wrapper(p0,p1,p2) {
  23646. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glTexParameteriv(p0|0,p1|0,p2|0);
  23647. }
  23648. function _emscripten_glGetBufferParameteriv__wrapper(p0,p1,p2) {
  23649. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glGetBufferParameteriv(p0|0,p1|0,p2|0);
  23650. }
  23651. function _emscripten_glGetRenderbufferParameteriv__wrapper(p0,p1,p2) {
  23652. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glGetRenderbufferParameteriv(p0|0,p1|0,p2|0);
  23653. }
  23654. function _emscripten_glGetUniformfv__wrapper(p0,p1,p2) {
  23655. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glGetUniformfv(p0|0,p1|0,p2|0);
  23656. }
  23657. function _emscripten_glGetUniformiv__wrapper(p0,p1,p2) {
  23658. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glGetUniformiv(p0|0,p1|0,p2|0);
  23659. }
  23660. function _emscripten_glGetVertexAttribfv__wrapper(p0,p1,p2) {
  23661. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glGetVertexAttribfv(p0|0,p1|0,p2|0);
  23662. }
  23663. function _emscripten_glGetVertexAttribiv__wrapper(p0,p1,p2) {
  23664. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glGetVertexAttribiv(p0|0,p1|0,p2|0);
  23665. }
  23666. function _emscripten_glGetVertexAttribPointerv__wrapper(p0,p1,p2) {
  23667. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glGetVertexAttribPointerv(p0|0,p1|0,p2|0);
  23668. }
  23669. function _emscripten_glUniform2i__wrapper(p0,p1,p2) {
  23670. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glUniform2i(p0|0,p1|0,p2|0);
  23671. }
  23672. function _emscripten_glUniform1iv__wrapper(p0,p1,p2) {
  23673. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glUniform1iv(p0|0,p1|0,p2|0);
  23674. }
  23675. function _emscripten_glUniform2iv__wrapper(p0,p1,p2) {
  23676. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glUniform2iv(p0|0,p1|0,p2|0);
  23677. }
  23678. function _emscripten_glUniform3iv__wrapper(p0,p1,p2) {
  23679. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glUniform3iv(p0|0,p1|0,p2|0);
  23680. }
  23681. function _emscripten_glUniform4iv__wrapper(p0,p1,p2) {
  23682. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glUniform4iv(p0|0,p1|0,p2|0);
  23683. }
  23684. function _emscripten_glUniform1fv__wrapper(p0,p1,p2) {
  23685. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glUniform1fv(p0|0,p1|0,p2|0);
  23686. }
  23687. function _emscripten_glUniform2fv__wrapper(p0,p1,p2) {
  23688. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glUniform2fv(p0|0,p1|0,p2|0);
  23689. }
  23690. function _emscripten_glUniform3fv__wrapper(p0,p1,p2) {
  23691. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glUniform3fv(p0|0,p1|0,p2|0);
  23692. }
  23693. function _emscripten_glUniform4fv__wrapper(p0,p1,p2) {
  23694. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glUniform4fv(p0|0,p1|0,p2|0);
  23695. }
  23696. function _emscripten_glGetShaderiv__wrapper(p0,p1,p2) {
  23697. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glGetShaderiv(p0|0,p1|0,p2|0);
  23698. }
  23699. function _emscripten_glGetProgramiv__wrapper(p0,p1,p2) {
  23700. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glGetProgramiv(p0|0,p1|0,p2|0);
  23701. }
  23702. function _emscripten_glBindAttribLocation__wrapper(p0,p1,p2) {
  23703. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glBindAttribLocation(p0|0,p1|0,p2|0);
  23704. }
  23705. function _emscripten_glGetObjectParameterivARB__wrapper(p0,p1,p2) {
  23706. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glGetObjectParameterivARB(p0|0,p1|0,p2|0);
  23707. }
  23708. function _emscripten_glNormalPointer__wrapper(p0,p1,p2) {
  23709. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glNormalPointer(p0|0,p1|0,p2|0);
  23710. }
  23711. function _emscripten_glDrawArrays__wrapper(p0,p1,p2) {
  23712. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glDrawArrays(p0|0,p1|0,p2|0);
  23713. }
  23714. function _emscripten_glTexParameteri__wrapper(p0,p1,p2) {
  23715. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glTexParameteri(p0|0,p1|0,p2|0);
  23716. }
  23717. function _emscripten_glStencilFunc__wrapper(p0,p1,p2) {
  23718. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glStencilFunc(p0|0,p1|0,p2|0);
  23719. }
  23720. function _emscripten_glStencilOp__wrapper(p0,p1,p2) {
  23721. p0 = p0|0;p1 = p1|0;p2 = p2|0; _emscripten_glStencilOp(p0|0,p1|0,p2|0);
  23722. }
  23723. function b12(p0,p1,p2,p3,p4) {
  23724. p0 = p0|0;p1 = +p1;p2 = +p2;p3 = +p3;p4 = +p4; nullFunc_vidddd(12);
  23725. }
  23726. function _emscripten_glUniform4f__wrapper(p0,p1,p2,p3,p4) {
  23727. p0 = p0|0;p1 = +p1;p2 = +p2;p3 = +p3;p4 = +p4; _emscripten_glUniform4f(p0|0,+p1,+p2,+p3,+p4);
  23728. }
  23729. function _emscripten_glVertexAttrib4f__wrapper(p0,p1,p2,p3,p4) {
  23730. p0 = p0|0;p1 = +p1;p2 = +p2;p3 = +p3;p4 = +p4; _emscripten_glVertexAttrib4f(p0|0,+p1,+p2,+p3,+p4);
  23731. }
  23732. function b13(p0,p1) {
  23733. p0 = +p0;p1 = p1|0; nullFunc_vdi(13);
  23734. }
  23735. function _emscripten_glSampleCoverage__wrapper(p0,p1) {
  23736. p0 = +p0;p1 = p1|0; _emscripten_glSampleCoverage(+p0,p1|0);
  23737. }
  23738. function b14(p0,p1,p2,p3,p4,p5,p6) {
  23739. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0;p6 = p6|0; nullFunc_viiiiiii(14);
  23740. }
  23741. function _emscripten_glReadPixels__wrapper(p0,p1,p2,p3,p4,p5,p6) {
  23742. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0;p6 = p6|0; _emscripten_glReadPixels(p0|0,p1|0,p2|0,p3|0,p4|0,p5|0,p6|0);
  23743. }
  23744. function _emscripten_glGetActiveUniform__wrapper(p0,p1,p2,p3,p4,p5,p6) {
  23745. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0;p6 = p6|0; _emscripten_glGetActiveUniform(p0|0,p1|0,p2|0,p3|0,p4|0,p5|0,p6|0);
  23746. }
  23747. function _emscripten_glGetActiveAttrib__wrapper(p0,p1,p2,p3,p4,p5,p6) {
  23748. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0;p6 = p6|0; _emscripten_glGetActiveAttrib(p0|0,p1|0,p2|0,p3|0,p4|0,p5|0,p6|0);
  23749. }
  23750. function b15(p0,p1,p2,p3,p4,p5,p6,p7,p8) {
  23751. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0;p6 = p6|0;p7 = p7|0;p8 = p8|0; nullFunc_viiiiiiiii(15);
  23752. }
  23753. function _emscripten_glCompressedTexSubImage2D__wrapper(p0,p1,p2,p3,p4,p5,p6,p7,p8) {
  23754. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0;p6 = p6|0;p7 = p7|0;p8 = p8|0; _emscripten_glCompressedTexSubImage2D(p0|0,p1|0,p2|0,p3|0,p4|0,p5|0,p6|0,p7|0,p8|0);
  23755. }
  23756. function _emscripten_glTexImage2D__wrapper(p0,p1,p2,p3,p4,p5,p6,p7,p8) {
  23757. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0;p6 = p6|0;p7 = p7|0;p8 = p8|0; _emscripten_glTexImage2D(p0|0,p1|0,p2|0,p3|0,p4|0,p5|0,p6|0,p7|0,p8|0);
  23758. }
  23759. function _emscripten_glTexSubImage2D__wrapper(p0,p1,p2,p3,p4,p5,p6,p7,p8) {
  23760. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0;p6 = p6|0;p7 = p7|0;p8 = p8|0; _emscripten_glTexSubImage2D(p0|0,p1|0,p2|0,p3|0,p4|0,p5|0,p6|0,p7|0,p8|0);
  23761. }
  23762. function b16(p0,p1) {
  23763. p0 = p0|0;p1 = p1|0; nullFunc_iii(16);return 0;
  23764. }
  23765. function _emscripten_glGetUniformLocation__wrapper(p0,p1) {
  23766. p0 = p0|0;p1 = p1|0; return _emscripten_glGetUniformLocation(p0|0,p1|0)|0;
  23767. }
  23768. function _emscripten_glGetAttribLocation__wrapper(p0,p1) {
  23769. p0 = p0|0;p1 = p1|0; return _emscripten_glGetAttribLocation(p0|0,p1|0)|0;
  23770. }
  23771. function b17() {
  23772. ; nullFunc_i(17);return 0;
  23773. }
  23774. function _emscripten_glCreateProgram__wrapper() {
  23775. ; return _emscripten_glCreateProgram()|0;
  23776. }
  23777. function _emscripten_glGetError__wrapper() {
  23778. ; return _emscripten_glGetError()|0;
  23779. }
  23780. function b18(p0,p1,p2,p3,p4,p5) {
  23781. p0 = +p0;p1 = +p1;p2 = +p2;p3 = +p3;p4 = +p4;p5 = +p5; nullFunc_vdddddd(18);
  23782. }
  23783. function _emscripten_glFrustum__wrapper(p0,p1,p2,p3,p4,p5) {
  23784. p0 = +p0;p1 = +p1;p2 = +p2;p3 = +p3;p4 = +p4;p5 = +p5; _emscripten_glFrustum(+p0,+p1,+p2,+p3,+p4,+p5);
  23785. }
  23786. function b19(p0,p1,p2,p3) {
  23787. p0 = +p0;p1 = +p1;p2 = +p2;p3 = +p3; nullFunc_vdddd(19);
  23788. }
  23789. function _emscripten_glRotatef__wrapper(p0,p1,p2,p3) {
  23790. p0 = +p0;p1 = +p1;p2 = +p2;p3 = +p3; _emscripten_glRotatef(+p0,+p1,+p2,+p3);
  23791. }
  23792. function _emscripten_glClearColor__wrapper(p0,p1,p2,p3) {
  23793. p0 = +p0;p1 = +p1;p2 = +p2;p3 = +p3; _emscripten_glClearColor(+p0,+p1,+p2,+p3);
  23794. }
  23795. function _emscripten_glBlendColor__wrapper(p0,p1,p2,p3) {
  23796. p0 = +p0;p1 = +p1;p2 = +p2;p3 = +p3; _emscripten_glBlendColor(+p0,+p1,+p2,+p3);
  23797. }
  23798. function b20(p0,p1) {
  23799. p0 = +p0;p1 = +p1; nullFunc_vdd(20);
  23800. }
  23801. function _emscripten_glDepthRange__wrapper(p0,p1) {
  23802. p0 = +p0;p1 = +p1; _emscripten_glDepthRange(+p0,+p1);
  23803. }
  23804. function _emscripten_glDepthRangef__wrapper(p0,p1) {
  23805. p0 = +p0;p1 = +p1; _emscripten_glDepthRangef(+p0,+p1);
  23806. }
  23807. function _emscripten_glPolygonOffset__wrapper(p0,p1) {
  23808. p0 = +p0;p1 = +p1; _emscripten_glPolygonOffset(+p0,+p1);
  23809. }
  23810. function b21() {
  23811. ; nullFunc_v(21);
  23812. }
  23813. function _emscripten_glLoadIdentity__wrapper() {
  23814. ; _emscripten_glLoadIdentity();
  23815. }
  23816. function _emscripten_glReleaseShaderCompiler__wrapper() {
  23817. ; _emscripten_glReleaseShaderCompiler();
  23818. }
  23819. function _emscripten_glFinish__wrapper() {
  23820. ; _emscripten_glFinish();
  23821. }
  23822. function _emscripten_glFlush__wrapper() {
  23823. ; _emscripten_glFlush();
  23824. }
  23825. function b22(p0,p1,p2) {
  23826. p0 = p0|0;p1 = p1|0;p2 = +p2; nullFunc_viid(22);
  23827. }
  23828. function _emscripten_glTexParameterf__wrapper(p0,p1,p2) {
  23829. p0 = p0|0;p1 = p1|0;p2 = +p2; _emscripten_glTexParameterf(p0|0,p1|0,+p2);
  23830. }
  23831. function b23(p0,p1,p2,p3) {
  23832. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; nullFunc_viiii(23);
  23833. }
  23834. function _emscripten_glBufferData__wrapper(p0,p1,p2,p3) {
  23835. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glBufferData(p0|0,p1|0,p2|0,p3|0);
  23836. }
  23837. function _emscripten_glBufferSubData__wrapper(p0,p1,p2,p3) {
  23838. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glBufferSubData(p0|0,p1|0,p2|0,p3|0);
  23839. }
  23840. function _emscripten_glUniform3i__wrapper(p0,p1,p2,p3) {
  23841. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glUniform3i(p0|0,p1|0,p2|0,p3|0);
  23842. }
  23843. function _emscripten_glUniformMatrix2fv__wrapper(p0,p1,p2,p3) {
  23844. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glUniformMatrix2fv(p0|0,p1|0,p2|0,p3|0);
  23845. }
  23846. function _emscripten_glUniformMatrix3fv__wrapper(p0,p1,p2,p3) {
  23847. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glUniformMatrix3fv(p0|0,p1|0,p2|0,p3|0);
  23848. }
  23849. function _emscripten_glUniformMatrix4fv__wrapper(p0,p1,p2,p3) {
  23850. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glUniformMatrix4fv(p0|0,p1|0,p2|0,p3|0);
  23851. }
  23852. function _emscripten_glGetAttachedShaders__wrapper(p0,p1,p2,p3) {
  23853. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glGetAttachedShaders(p0|0,p1|0,p2|0,p3|0);
  23854. }
  23855. function _emscripten_glShaderSource__wrapper(p0,p1,p2,p3) {
  23856. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glShaderSource(p0|0,p1|0,p2|0,p3|0);
  23857. }
  23858. function _emscripten_glGetShaderSource__wrapper(p0,p1,p2,p3) {
  23859. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glGetShaderSource(p0|0,p1|0,p2|0,p3|0);
  23860. }
  23861. function _emscripten_glGetShaderInfoLog__wrapper(p0,p1,p2,p3) {
  23862. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glGetShaderInfoLog(p0|0,p1|0,p2|0,p3|0);
  23863. }
  23864. function _emscripten_glGetShaderPrecisionFormat__wrapper(p0,p1,p2,p3) {
  23865. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glGetShaderPrecisionFormat(p0|0,p1|0,p2|0,p3|0);
  23866. }
  23867. function _emscripten_glGetProgramInfoLog__wrapper(p0,p1,p2,p3) {
  23868. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glGetProgramInfoLog(p0|0,p1|0,p2|0,p3|0);
  23869. }
  23870. function _emscripten_glFramebufferRenderbuffer__wrapper(p0,p1,p2,p3) {
  23871. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glFramebufferRenderbuffer(p0|0,p1|0,p2|0,p3|0);
  23872. }
  23873. function _emscripten_glGetFramebufferAttachmentParameteriv__wrapper(p0,p1,p2,p3) {
  23874. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glGetFramebufferAttachmentParameteriv(p0|0,p1|0,p2|0,p3|0);
  23875. }
  23876. function _emscripten_glGetInfoLogARB__wrapper(p0,p1,p2,p3) {
  23877. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glGetInfoLogARB(p0|0,p1|0,p2|0,p3|0);
  23878. }
  23879. function _emscripten_glVertexPointer__wrapper(p0,p1,p2,p3) {
  23880. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glVertexPointer(p0|0,p1|0,p2|0,p3|0);
  23881. }
  23882. function _emscripten_glTexCoordPointer__wrapper(p0,p1,p2,p3) {
  23883. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glTexCoordPointer(p0|0,p1|0,p2|0,p3|0);
  23884. }
  23885. function _emscripten_glColorPointer__wrapper(p0,p1,p2,p3) {
  23886. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glColorPointer(p0|0,p1|0,p2|0,p3|0);
  23887. }
  23888. function _emscripten_glDrawElements__wrapper(p0,p1,p2,p3) {
  23889. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glDrawElements(p0|0,p1|0,p2|0,p3|0);
  23890. }
  23891. function _emscripten_glDrawArraysInstanced__wrapper(p0,p1,p2,p3) {
  23892. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glDrawArraysInstanced(p0|0,p1|0,p2|0,p3|0);
  23893. }
  23894. function _emscripten_glViewport__wrapper(p0,p1,p2,p3) {
  23895. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glViewport(p0|0,p1|0,p2|0,p3|0);
  23896. }
  23897. function _emscripten_glScissor__wrapper(p0,p1,p2,p3) {
  23898. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glScissor(p0|0,p1|0,p2|0,p3|0);
  23899. }
  23900. function _emscripten_glColorMask__wrapper(p0,p1,p2,p3) {
  23901. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glColorMask(p0|0,p1|0,p2|0,p3|0);
  23902. }
  23903. function _emscripten_glRenderbufferStorage__wrapper(p0,p1,p2,p3) {
  23904. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glRenderbufferStorage(p0|0,p1|0,p2|0,p3|0);
  23905. }
  23906. function _emscripten_glBlendFuncSeparate__wrapper(p0,p1,p2,p3) {
  23907. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glBlendFuncSeparate(p0|0,p1|0,p2|0,p3|0);
  23908. }
  23909. function _emscripten_glStencilFuncSeparate__wrapper(p0,p1,p2,p3) {
  23910. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glStencilFuncSeparate(p0|0,p1|0,p2|0,p3|0);
  23911. }
  23912. function _emscripten_glStencilOpSeparate__wrapper(p0,p1,p2,p3) {
  23913. p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; _emscripten_glStencilOpSeparate(p0|0,p1|0,p2|0,p3|0);
  23914. }
  23915. // EMSCRIPTEN_END_FUNCS
  23916. var FUNCTION_TABLE_viiiii = [b0,_KeyCallback,_emscripten_glUniform4i__wrapper,_emscripten_glFramebufferTexture2D__wrapper,_emscripten_glShaderBinary__wrapper,_emscripten_glDrawElementsInstanced__wrapper,b0,b0];
  23917. var FUNCTION_TABLE_vd = [b1,_emscripten_glClearDepth__wrapper,_emscripten_glClearDepthf__wrapper,_emscripten_glLineWidth__wrapper];
  23918. var FUNCTION_TABLE_vid = [b2,_emscripten_glUniform1f__wrapper,_emscripten_glVertexAttrib1f__wrapper,b2];
  23919. var FUNCTION_TABLE_vi = [b3,_emscripten_glDeleteShader__wrapper,_emscripten_glCompileShader__wrapper,_emscripten_glDeleteProgram__wrapper,_emscripten_glLinkProgram__wrapper,_emscripten_glUseProgram__wrapper,_emscripten_glValidateProgram__wrapper,_emscripten_glDeleteObjectARB__wrapper,_emscripten_glEnableClientState__wrapper,_emscripten_glClientActiveTexture__wrapper,_emscripten_glBindVertexArray__wrapper,_emscripten_glMatrixMode__wrapper,_emscripten_glLoadMatrixf__wrapper,_emscripten_glEnableVertexAttribArray__wrapper,_emscripten_glDisableVertexAttribArray__wrapper,_emscripten_glDepthFunc__wrapper,_emscripten_glEnable__wrapper,_emscripten_glDisable__wrapper,_emscripten_glFrontFace__wrapper,_emscripten_glCullFace__wrapper,_emscripten_glClear__wrapper,_emscripten_glClearStencil__wrapper,_emscripten_glDepthMask__wrapper,_emscripten_glStencilMask__wrapper,_emscripten_glGenerateMipmap__wrapper,_emscripten_glActiveTexture__wrapper,_emscripten_glBlendEquation__wrapper,b3,b3
  23920. ,b3,b3,b3];
  23921. var FUNCTION_TABLE_vii = [b4,_ErrorCallback,_CursorEnterCallback,_CharCallback,_WindowIconifyCallback,_emscripten_glPixelStorei__wrapper,_emscripten_glGetIntegerv__wrapper,_emscripten_glGetFloatv__wrapper,_emscripten_glGetBooleanv__wrapper,_emscripten_glGenTextures__wrapper,_emscripten_glDeleteTextures__wrapper,_emscripten_glBindTexture__wrapper,_emscripten_glGenBuffers__wrapper,_emscripten_glDeleteBuffers__wrapper,_emscripten_glGenRenderbuffers__wrapper,_emscripten_glDeleteRenderbuffers__wrapper,_emscripten_glBindRenderbuffer__wrapper,_emscripten_glUniform1i__wrapper,_emscripten_glBindBuffer__wrapper,_emscripten_glVertexAttrib1fv__wrapper,_emscripten_glVertexAttrib2fv__wrapper,_emscripten_glVertexAttrib3fv__wrapper,_emscripten_glVertexAttrib4fv__wrapper,_emscripten_glAttachShader__wrapper,_emscripten_glDetachShader__wrapper,_emscripten_glBindFramebuffer__wrapper,_emscripten_glGenFramebuffers__wrapper,_emscripten_glDeleteFramebuffers__wrapper,_emscripten_glBindProgramARB__wrapper,_emscripten_glGetPointerv__wrapper,_emscripten_glGenVertexArrays__wrapper,_emscripten_glDeleteVertexArrays__wrapper,_emscripten_glVertexAttribDivisor__wrapper,_emscripten_glBlendFunc__wrapper,_emscripten_glBlendEquationSeparate__wrapper,_emscripten_glStencilMaskSeparate__wrapper,_emscripten_glHint__wrapper,_emscripten_glDrawBuffers__wrapper,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4
  23922. ,b4,b4,b4,b4,b4];
  23923. var FUNCTION_TABLE_ii = [b5,___stdio_close,_emscripten_glGetString__wrapper,_emscripten_glIsTexture__wrapper,_emscripten_glIsBuffer__wrapper,_emscripten_glIsRenderbuffer__wrapper,_emscripten_glCreateShader__wrapper,_emscripten_glIsShader__wrapper,_emscripten_glIsProgram__wrapper,_emscripten_glIsFramebuffer__wrapper,_emscripten_glCheckFramebufferStatus__wrapper,_emscripten_glIsEnabled__wrapper,b5,b5,b5,b5];
  23924. var FUNCTION_TABLE_viddd = [b6,_emscripten_glUniform3f__wrapper,_emscripten_glVertexAttrib3f__wrapper,b6];
  23925. var FUNCTION_TABLE_vidd = [b7,_MouseCursorPosCallback,_ScrollCallback,_emscripten_glUniform2f__wrapper,_emscripten_glVertexAttrib2f__wrapper,b7,b7,b7];
  23926. var FUNCTION_TABLE_iiii = [b8,___stdout_write,___stdio_seek,_EmscriptenFullscreenChangeCallback,_EmscriptenKeyboardCallback,_EmscriptenMouseCallback,_EmscriptenTouchCallback,_EmscriptenGamepadCallback,___stdio_write,b8,b8,b8,b8,b8,b8,b8];
  23927. var FUNCTION_TABLE_viiiiiiii = [b9,_emscripten_glCompressedTexImage2D__wrapper,_emscripten_glCopyTexImage2D__wrapper,_emscripten_glCopyTexSubImage2D__wrapper];
  23928. var FUNCTION_TABLE_viiiiii = [b10,_emscripten_glDrawRangeElements__wrapper,_emscripten_glVertexAttribPointer__wrapper,b10];
  23929. var FUNCTION_TABLE_viii = [b11,_WindowSizeCallback,_emscripten_glGetTexParameterfv__wrapper,_emscripten_glGetTexParameteriv__wrapper,_emscripten_glTexParameterfv__wrapper,_emscripten_glTexParameteriv__wrapper,_emscripten_glGetBufferParameteriv__wrapper,_emscripten_glGetRenderbufferParameteriv__wrapper,_emscripten_glGetUniformfv__wrapper,_emscripten_glGetUniformiv__wrapper,_emscripten_glGetVertexAttribfv__wrapper,_emscripten_glGetVertexAttribiv__wrapper,_emscripten_glGetVertexAttribPointerv__wrapper,_emscripten_glUniform2i__wrapper,_emscripten_glUniform1iv__wrapper,_emscripten_glUniform2iv__wrapper,_emscripten_glUniform3iv__wrapper,_emscripten_glUniform4iv__wrapper,_emscripten_glUniform1fv__wrapper,_emscripten_glUniform2fv__wrapper,_emscripten_glUniform3fv__wrapper,_emscripten_glUniform4fv__wrapper,_emscripten_glGetShaderiv__wrapper,_emscripten_glGetProgramiv__wrapper,_emscripten_glBindAttribLocation__wrapper,_emscripten_glGetObjectParameterivARB__wrapper,_emscripten_glNormalPointer__wrapper,_emscripten_glDrawArrays__wrapper,_emscripten_glTexParameteri__wrapper,_emscripten_glStencilFunc__wrapper,_emscripten_glStencilOp__wrapper,b11];
  23930. var FUNCTION_TABLE_vidddd = [b12,_emscripten_glUniform4f__wrapper,_emscripten_glVertexAttrib4f__wrapper,b12];
  23931. var FUNCTION_TABLE_vdi = [b13,_emscripten_glSampleCoverage__wrapper];
  23932. var FUNCTION_TABLE_viiiiiii = [b14,_emscripten_glReadPixels__wrapper,_emscripten_glGetActiveUniform__wrapper,_emscripten_glGetActiveAttrib__wrapper];
  23933. var FUNCTION_TABLE_viiiiiiiii = [b15,_emscripten_glCompressedTexSubImage2D__wrapper,_emscripten_glTexImage2D__wrapper,_emscripten_glTexSubImage2D__wrapper];
  23934. var FUNCTION_TABLE_iii = [b16,_emscripten_glGetUniformLocation__wrapper,_emscripten_glGetAttribLocation__wrapper,b16];
  23935. var FUNCTION_TABLE_i = [b17,_emscripten_glCreateProgram__wrapper,_emscripten_glGetError__wrapper,b17];
  23936. var FUNCTION_TABLE_vdddddd = [b18,_emscripten_glFrustum__wrapper];
  23937. var FUNCTION_TABLE_vdddd = [b19,_emscripten_glRotatef__wrapper,_emscripten_glClearColor__wrapper,_emscripten_glBlendColor__wrapper];
  23938. var FUNCTION_TABLE_vdd = [b20,_emscripten_glDepthRange__wrapper,_emscripten_glDepthRangef__wrapper,_emscripten_glPolygonOffset__wrapper];
  23939. var FUNCTION_TABLE_v = [b21,_UpdateDrawFrame,_emscripten_glLoadIdentity__wrapper,_emscripten_glReleaseShaderCompiler__wrapper,_emscripten_glFinish__wrapper,_emscripten_glFlush__wrapper,b21,b21];
  23940. var FUNCTION_TABLE_viid = [b22,_emscripten_glTexParameterf__wrapper];
  23941. var FUNCTION_TABLE_viiii = [b23,_MouseButtonCallback,_emscripten_glBufferData__wrapper,_emscripten_glBufferSubData__wrapper,_emscripten_glUniform3i__wrapper,_emscripten_glUniformMatrix2fv__wrapper,_emscripten_glUniformMatrix3fv__wrapper,_emscripten_glUniformMatrix4fv__wrapper,_emscripten_glGetAttachedShaders__wrapper,_emscripten_glShaderSource__wrapper,_emscripten_glGetShaderSource__wrapper,_emscripten_glGetShaderInfoLog__wrapper,_emscripten_glGetShaderPrecisionFormat__wrapper,_emscripten_glGetProgramInfoLog__wrapper,_emscripten_glFramebufferRenderbuffer__wrapper,_emscripten_glGetFramebufferAttachmentParameteriv__wrapper,_emscripten_glGetInfoLogARB__wrapper,_emscripten_glVertexPointer__wrapper,_emscripten_glTexCoordPointer__wrapper,_emscripten_glColorPointer__wrapper,_emscripten_glDrawElements__wrapper,_emscripten_glDrawArraysInstanced__wrapper,_emscripten_glViewport__wrapper,_emscripten_glScissor__wrapper,_emscripten_glColorMask__wrapper,_emscripten_glRenderbufferStorage__wrapper,_emscripten_glBlendFuncSeparate__wrapper,_emscripten_glStencilFuncSeparate__wrapper,_emscripten_glStencilOpSeparate__wrapper,b23,b23,b23];
  23942. return { _roundf: _roundf, _main: _main, _llvm_cttz_i32: _llvm_cttz_i32, _bitshift64Lshr: _bitshift64Lshr, _bitshift64Shl: _bitshift64Shl, _fflush: _fflush, _memset: _memset, _sbrk: _sbrk, _memcpy: _memcpy, ___errno_location: ___errno_location, ___uremdi3: ___uremdi3, _i64Subtract: _i64Subtract, ___udivmoddi4: ___udivmoddi4, _i64Add: _i64Add, _emscripten_get_global_libc: _emscripten_get_global_libc, _emscripten_GetProcAddress: _emscripten_GetProcAddress, ___udivdi3: ___udivdi3, _llvm_bswap_i32: _llvm_bswap_i32, _free: _free, _memmove: _memmove, _strstr: _strstr, _malloc: _malloc, runPostSets: runPostSets, _emscripten_replace_memory: _emscripten_replace_memory, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setTempRet0: setTempRet0, getTempRet0: getTempRet0, setThrew: setThrew, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_viiiii: dynCall_viiiii, dynCall_vd: dynCall_vd, dynCall_vid: dynCall_vid, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viddd: dynCall_viddd, dynCall_vidd: dynCall_vidd, dynCall_iiii: dynCall_iiii, dynCall_viiiiiiii: dynCall_viiiiiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_viii: dynCall_viii, dynCall_vidddd: dynCall_vidddd, dynCall_vdi: dynCall_vdi, dynCall_viiiiiii: dynCall_viiiiiii, dynCall_viiiiiiiii: dynCall_viiiiiiiii, dynCall_iii: dynCall_iii, dynCall_i: dynCall_i, dynCall_vdddddd: dynCall_vdddddd, dynCall_vdddd: dynCall_vdddd, dynCall_vdd: dynCall_vdd, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_viiii: dynCall_viiii };
  23943. })
  23944. // EMSCRIPTEN_END_ASM
  23945. (Module.asmGlobalArg, Module.asmLibraryArg, buffer);
  23946. var real__roundf = asm["_roundf"]; asm["_roundf"] = function() {
  23947. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  23948. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  23949. return real__roundf.apply(null, arguments);
  23950. };
  23951. var real__main = asm["_main"]; asm["_main"] = function() {
  23952. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  23953. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  23954. return real__main.apply(null, arguments);
  23955. };
  23956. var real_stackSave = asm["stackSave"]; asm["stackSave"] = function() {
  23957. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  23958. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  23959. return real_stackSave.apply(null, arguments);
  23960. };
  23961. var real_getTempRet0 = asm["getTempRet0"]; asm["getTempRet0"] = function() {
  23962. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  23963. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  23964. return real_getTempRet0.apply(null, arguments);
  23965. };
  23966. var real_setThrew = asm["setThrew"]; asm["setThrew"] = function() {
  23967. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  23968. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  23969. return real_setThrew.apply(null, arguments);
  23970. };
  23971. var real__bitshift64Lshr = asm["_bitshift64Lshr"]; asm["_bitshift64Lshr"] = function() {
  23972. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  23973. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  23974. return real__bitshift64Lshr.apply(null, arguments);
  23975. };
  23976. var real__bitshift64Shl = asm["_bitshift64Shl"]; asm["_bitshift64Shl"] = function() {
  23977. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  23978. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  23979. return real__bitshift64Shl.apply(null, arguments);
  23980. };
  23981. var real__fflush = asm["_fflush"]; asm["_fflush"] = function() {
  23982. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  23983. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  23984. return real__fflush.apply(null, arguments);
  23985. };
  23986. var real__llvm_cttz_i32 = asm["_llvm_cttz_i32"]; asm["_llvm_cttz_i32"] = function() {
  23987. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  23988. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  23989. return real__llvm_cttz_i32.apply(null, arguments);
  23990. };
  23991. var real__sbrk = asm["_sbrk"]; asm["_sbrk"] = function() {
  23992. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  23993. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  23994. return real__sbrk.apply(null, arguments);
  23995. };
  23996. var real____errno_location = asm["___errno_location"]; asm["___errno_location"] = function() {
  23997. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  23998. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  23999. return real____errno_location.apply(null, arguments);
  24000. };
  24001. var real____uremdi3 = asm["___uremdi3"]; asm["___uremdi3"] = function() {
  24002. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24003. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24004. return real____uremdi3.apply(null, arguments);
  24005. };
  24006. var real_stackAlloc = asm["stackAlloc"]; asm["stackAlloc"] = function() {
  24007. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24008. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24009. return real_stackAlloc.apply(null, arguments);
  24010. };
  24011. var real__i64Subtract = asm["_i64Subtract"]; asm["_i64Subtract"] = function() {
  24012. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24013. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24014. return real__i64Subtract.apply(null, arguments);
  24015. };
  24016. var real____udivmoddi4 = asm["___udivmoddi4"]; asm["___udivmoddi4"] = function() {
  24017. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24018. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24019. return real____udivmoddi4.apply(null, arguments);
  24020. };
  24021. var real_setTempRet0 = asm["setTempRet0"]; asm["setTempRet0"] = function() {
  24022. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24023. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24024. return real_setTempRet0.apply(null, arguments);
  24025. };
  24026. var real__i64Add = asm["_i64Add"]; asm["_i64Add"] = function() {
  24027. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24028. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24029. return real__i64Add.apply(null, arguments);
  24030. };
  24031. var real__emscripten_get_global_libc = asm["_emscripten_get_global_libc"]; asm["_emscripten_get_global_libc"] = function() {
  24032. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24033. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24034. return real__emscripten_get_global_libc.apply(null, arguments);
  24035. };
  24036. var real__emscripten_GetProcAddress = asm["_emscripten_GetProcAddress"]; asm["_emscripten_GetProcAddress"] = function() {
  24037. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24038. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24039. return real__emscripten_GetProcAddress.apply(null, arguments);
  24040. };
  24041. var real____udivdi3 = asm["___udivdi3"]; asm["___udivdi3"] = function() {
  24042. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24043. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24044. return real____udivdi3.apply(null, arguments);
  24045. };
  24046. var real__llvm_bswap_i32 = asm["_llvm_bswap_i32"]; asm["_llvm_bswap_i32"] = function() {
  24047. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24048. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24049. return real__llvm_bswap_i32.apply(null, arguments);
  24050. };
  24051. var real__free = asm["_free"]; asm["_free"] = function() {
  24052. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24053. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24054. return real__free.apply(null, arguments);
  24055. };
  24056. var real_establishStackSpace = asm["establishStackSpace"]; asm["establishStackSpace"] = function() {
  24057. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24058. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24059. return real_establishStackSpace.apply(null, arguments);
  24060. };
  24061. var real__memmove = asm["_memmove"]; asm["_memmove"] = function() {
  24062. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24063. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24064. return real__memmove.apply(null, arguments);
  24065. };
  24066. var real__strstr = asm["_strstr"]; asm["_strstr"] = function() {
  24067. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24068. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24069. return real__strstr.apply(null, arguments);
  24070. };
  24071. var real_stackRestore = asm["stackRestore"]; asm["stackRestore"] = function() {
  24072. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24073. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24074. return real_stackRestore.apply(null, arguments);
  24075. };
  24076. var real__malloc = asm["_malloc"]; asm["_malloc"] = function() {
  24077. assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
  24078. assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
  24079. return real__malloc.apply(null, arguments);
  24080. };
  24081. var _roundf = Module["_roundf"] = asm["_roundf"];
  24082. var _main = Module["_main"] = asm["_main"];
  24083. var stackSave = Module["stackSave"] = asm["stackSave"];
  24084. var getTempRet0 = Module["getTempRet0"] = asm["getTempRet0"];
  24085. var _memset = Module["_memset"] = asm["_memset"];
  24086. var setThrew = Module["setThrew"] = asm["setThrew"];
  24087. var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"];
  24088. var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
  24089. var _fflush = Module["_fflush"] = asm["_fflush"];
  24090. var _llvm_cttz_i32 = Module["_llvm_cttz_i32"] = asm["_llvm_cttz_i32"];
  24091. var _sbrk = Module["_sbrk"] = asm["_sbrk"];
  24092. var _memcpy = Module["_memcpy"] = asm["_memcpy"];
  24093. var ___errno_location = Module["___errno_location"] = asm["___errno_location"];
  24094. var ___uremdi3 = Module["___uremdi3"] = asm["___uremdi3"];
  24095. var stackAlloc = Module["stackAlloc"] = asm["stackAlloc"];
  24096. var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"];
  24097. var ___udivmoddi4 = Module["___udivmoddi4"] = asm["___udivmoddi4"];
  24098. var setTempRet0 = Module["setTempRet0"] = asm["setTempRet0"];
  24099. var _i64Add = Module["_i64Add"] = asm["_i64Add"];
  24100. var _emscripten_get_global_libc = Module["_emscripten_get_global_libc"] = asm["_emscripten_get_global_libc"];
  24101. var _emscripten_GetProcAddress = Module["_emscripten_GetProcAddress"] = asm["_emscripten_GetProcAddress"];
  24102. var ___udivdi3 = Module["___udivdi3"] = asm["___udivdi3"];
  24103. var _llvm_bswap_i32 = Module["_llvm_bswap_i32"] = asm["_llvm_bswap_i32"];
  24104. var _free = Module["_free"] = asm["_free"];
  24105. var runPostSets = Module["runPostSets"] = asm["runPostSets"];
  24106. var establishStackSpace = Module["establishStackSpace"] = asm["establishStackSpace"];
  24107. var _memmove = Module["_memmove"] = asm["_memmove"];
  24108. var _strstr = Module["_strstr"] = asm["_strstr"];
  24109. var stackRestore = Module["stackRestore"] = asm["stackRestore"];
  24110. var _malloc = Module["_malloc"] = asm["_malloc"];
  24111. var _emscripten_replace_memory = Module["_emscripten_replace_memory"] = asm["_emscripten_replace_memory"];
  24112. var dynCall_viiiii = Module["dynCall_viiiii"] = asm["dynCall_viiiii"];
  24113. var dynCall_vd = Module["dynCall_vd"] = asm["dynCall_vd"];
  24114. var dynCall_vid = Module["dynCall_vid"] = asm["dynCall_vid"];
  24115. var dynCall_vi = Module["dynCall_vi"] = asm["dynCall_vi"];
  24116. var dynCall_vii = Module["dynCall_vii"] = asm["dynCall_vii"];
  24117. var dynCall_ii = Module["dynCall_ii"] = asm["dynCall_ii"];
  24118. var dynCall_viddd = Module["dynCall_viddd"] = asm["dynCall_viddd"];
  24119. var dynCall_vidd = Module["dynCall_vidd"] = asm["dynCall_vidd"];
  24120. var dynCall_iiii = Module["dynCall_iiii"] = asm["dynCall_iiii"];
  24121. var dynCall_viiiiiiii = Module["dynCall_viiiiiiii"] = asm["dynCall_viiiiiiii"];
  24122. var dynCall_viiiiii = Module["dynCall_viiiiii"] = asm["dynCall_viiiiii"];
  24123. var dynCall_viii = Module["dynCall_viii"] = asm["dynCall_viii"];
  24124. var dynCall_vidddd = Module["dynCall_vidddd"] = asm["dynCall_vidddd"];
  24125. var dynCall_vdi = Module["dynCall_vdi"] = asm["dynCall_vdi"];
  24126. var dynCall_viiiiiii = Module["dynCall_viiiiiii"] = asm["dynCall_viiiiiii"];
  24127. var dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = asm["dynCall_viiiiiiiii"];
  24128. var dynCall_iii = Module["dynCall_iii"] = asm["dynCall_iii"];
  24129. var dynCall_i = Module["dynCall_i"] = asm["dynCall_i"];
  24130. var dynCall_vdddddd = Module["dynCall_vdddddd"] = asm["dynCall_vdddddd"];
  24131. var dynCall_vdddd = Module["dynCall_vdddd"] = asm["dynCall_vdddd"];
  24132. var dynCall_vdd = Module["dynCall_vdd"] = asm["dynCall_vdd"];
  24133. var dynCall_v = Module["dynCall_v"] = asm["dynCall_v"];
  24134. var dynCall_viid = Module["dynCall_viid"] = asm["dynCall_viid"];
  24135. var dynCall_viiii = Module["dynCall_viiii"] = asm["dynCall_viiii"];
  24136. ;
  24137. Runtime.stackAlloc = Module['stackAlloc'];
  24138. Runtime.stackSave = Module['stackSave'];
  24139. Runtime.stackRestore = Module['stackRestore'];
  24140. Runtime.establishStackSpace = Module['establishStackSpace'];
  24141. Runtime.setTempRet0 = Module['setTempRet0'];
  24142. Runtime.getTempRet0 = Module['getTempRet0'];
  24143. // === Auto-generated postamble setup entry stuff ===
  24144. Module['asm'] = asm;
  24145. function ExitStatus(status) {
  24146. this.name = "ExitStatus";
  24147. this.message = "Program terminated with exit(" + status + ")";
  24148. this.status = status;
  24149. };
  24150. ExitStatus.prototype = new Error();
  24151. ExitStatus.prototype.constructor = ExitStatus;
  24152. var initialStackTop;
  24153. var preloadStartTime = null;
  24154. var calledMain = false;
  24155. dependenciesFulfilled = function runCaller() {
  24156. // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)
  24157. if (!Module['calledRun']) run();
  24158. if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled
  24159. }
  24160. Module['callMain'] = Module.callMain = function callMain(args) {
  24161. assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)');
  24162. assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called');
  24163. args = args || [];
  24164. ensureInitRuntime();
  24165. var argc = args.length+1;
  24166. function pad() {
  24167. for (var i = 0; i < 4-1; i++) {
  24168. argv.push(0);
  24169. }
  24170. }
  24171. var argv = [allocate(intArrayFromString(Module['thisProgram']), 'i8', ALLOC_NORMAL) ];
  24172. pad();
  24173. for (var i = 0; i < argc-1; i = i + 1) {
  24174. argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL));
  24175. pad();
  24176. }
  24177. argv.push(0);
  24178. argv = allocate(argv, 'i32', ALLOC_NORMAL);
  24179. try {
  24180. var ret = Module['_main'](argc, argv, 0);
  24181. // if we're not running an evented main loop, it's time to exit
  24182. exit(ret, /* implicit = */ true);
  24183. }
  24184. catch(e) {
  24185. if (e instanceof ExitStatus) {
  24186. // exit() throws this once it's done to make sure execution
  24187. // has been stopped completely
  24188. return;
  24189. } else if (e == 'SimulateInfiniteLoop') {
  24190. // running an evented main loop, don't immediately exit
  24191. Module['noExitRuntime'] = true;
  24192. return;
  24193. } else {
  24194. var toLog = e;
  24195. if (e && typeof e === 'object' && e.stack) {
  24196. toLog = [e, e.stack];
  24197. }
  24198. Module.printErr('exception thrown: ' + toLog);
  24199. Module['quit'](1, e);
  24200. }
  24201. } finally {
  24202. calledMain = true;
  24203. }
  24204. }
  24205. function run(args) {
  24206. args = args || Module['arguments'];
  24207. if (preloadStartTime === null) preloadStartTime = Date.now();
  24208. if (runDependencies > 0) {
  24209. Module.printErr('run() called, but dependencies remain, so not running');
  24210. return;
  24211. }
  24212. writeStackCookie();
  24213. preRun();
  24214. if (runDependencies > 0) return; // a preRun added a dependency, run will be called later
  24215. if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame
  24216. function doRun() {
  24217. if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening
  24218. Module['calledRun'] = true;
  24219. if (ABORT) return;
  24220. ensureInitRuntime();
  24221. preMain();
  24222. if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) {
  24223. Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms');
  24224. }
  24225. if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized']();
  24226. if (Module['_main'] && shouldRunNow) Module['callMain'](args);
  24227. postRun();
  24228. }
  24229. if (Module['setStatus']) {
  24230. Module['setStatus']('Running...');
  24231. setTimeout(function() {
  24232. setTimeout(function() {
  24233. Module['setStatus']('');
  24234. }, 1);
  24235. doRun();
  24236. }, 1);
  24237. } else {
  24238. doRun();
  24239. }
  24240. checkStackCookie();
  24241. }
  24242. Module['run'] = Module.run = run;
  24243. function exit(status, implicit) {
  24244. if (implicit && Module['noExitRuntime']) {
  24245. Module.printErr('exit(' + status + ') implicitly called by end of main(), but noExitRuntime, so not exiting the runtime (you can use emscripten_force_exit, if you want to force a true shutdown)');
  24246. return;
  24247. }
  24248. if (Module['noExitRuntime']) {
  24249. Module.printErr('exit(' + status + ') called, but noExitRuntime, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)');
  24250. } else {
  24251. ABORT = true;
  24252. EXITSTATUS = status;
  24253. STACKTOP = initialStackTop;
  24254. exitRuntime();
  24255. if (Module['onExit']) Module['onExit'](status);
  24256. }
  24257. if (ENVIRONMENT_IS_NODE) {
  24258. process['exit'](status);
  24259. }
  24260. Module['quit'](status, new ExitStatus(status));
  24261. }
  24262. Module['exit'] = Module.exit = exit;
  24263. var abortDecorators = [];
  24264. function abort(what) {
  24265. if (what !== undefined) {
  24266. Module.print(what);
  24267. Module.printErr(what);
  24268. what = JSON.stringify(what)
  24269. } else {
  24270. what = '';
  24271. }
  24272. ABORT = true;
  24273. EXITSTATUS = 1;
  24274. var extra = '';
  24275. var output = 'abort(' + what + ') at ' + stackTrace() + extra;
  24276. if (abortDecorators) {
  24277. abortDecorators.forEach(function(decorator) {
  24278. output = decorator(output, what);
  24279. });
  24280. }
  24281. throw output;
  24282. }
  24283. Module['abort'] = Module.abort = abort;
  24284. // {{PRE_RUN_ADDITIONS}}
  24285. if (Module['preInit']) {
  24286. if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];
  24287. while (Module['preInit'].length > 0) {
  24288. Module['preInit'].pop()();
  24289. }
  24290. }
  24291. // shouldRunNow refers to calling main(), not run().
  24292. var shouldRunNow = true;
  24293. if (Module['noInitialRun']) {
  24294. shouldRunNow = false;
  24295. }
  24296. run();
  24297. // {{POST_RUN_ADDITIONS}}
  24298. // {{MODULE_ADDITIONS}}