| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864 |
- // Note: Some Emscripten settings will significantly limit the speed of the generated code.
- // Note: Some Emscripten settings may limit the speed of the generated code.
- // The Module object: Our interface to the outside world. We import
- // and export values on it, and do the work to get that through
- // closure compiler if necessary. There are various ways Module can be used:
- // 1. Not defined. We create it here
- // 2. A function parameter, function(Module) { ..generated code.. }
- // 3. pre-run appended it, var Module = {}; ..generated code..
- // 4. External script tag defines var Module.
- // We need to do an eval in order to handle the closure compiler
- // case, where this code here is minified but Module was defined
- // elsewhere (e.g. case 4 above). We also need to check if Module
- // already exists (e.g. case 3 above).
- // Note that if you want to run closure, and also to use Module
- // after the generated code, you will need to define var Module = {};
- // before the code. Then that object will be used in the code, and you
- // can continue to use Module afterwards as well.
- var Module = { };
- //if (!Module) { Module = eval('(function() { try { return Module || {} } catch(e) { return {} } })()'); }
- // Sometimes an existing Module object exists with properties
- // meant to overwrite the default module functionality. Here
- // we collect those properties and reapply _after_ we configure
- // the current environment's defaults to avoid having to be so
- // defensive during initialization.
- var moduleOverrides = {};
- for (var key in Module) {
- if (Module.hasOwnProperty(key)) {
- moduleOverrides[key] = Module[key];
- }
- }
- // The environment setup code below is customized to use Module.
- // *** Environment setup code ***
- var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function';
- var ENVIRONMENT_IS_WEB = typeof window === 'object';
- var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';
- var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
- if (ENVIRONMENT_IS_NODE) {
- // Expose functionality in the same simple way that the shells work
- // Note that we pollute the global namespace here, otherwise we break in node
- if (!Module['print']) Module['print'] = function print(x) {
- process['stdout'].write(x + '\n');
- };
- if (!Module['printErr']) Module['printErr'] = function printErr(x) {
- process['stderr'].write(x + '\n');
- };
- var nodeFS = require('fs');
- var nodePath = require('path');
- Module['read'] = function read(filename, binary) {
- filename = nodePath['normalize'](filename);
- var ret = nodeFS['readFileSync'](filename);
- // The path is absolute if the normalized version is the same as the resolved.
- if (!ret && filename != nodePath['resolve'](filename)) {
- filename = path.join(__dirname, '..', 'src', filename);
- ret = nodeFS['readFileSync'](filename);
- }
- if (ret && !binary) ret = ret.toString();
- return ret;
- };
- Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) };
- Module['load'] = function load(f) {
- globalEval(read(f));
- };
- Module['arguments'] = process['argv'].slice(2);
- module['exports'] = Module;
- }
- else if (ENVIRONMENT_IS_SHELL) {
- if (!Module['print']) Module['print'] = print;
- if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm
- if (typeof read != 'undefined') {
- Module['read'] = read;
- } else {
- Module['read'] = function read() { throw 'no read() available (jsc?)' };
- }
- Module['readBinary'] = function readBinary(f) {
- return read(f, 'binary');
- };
- if (typeof scriptArgs != 'undefined') {
- Module['arguments'] = scriptArgs;
- } else if (typeof arguments != 'undefined') {
- Module['arguments'] = arguments;
- }
- this['Module'] = Module;
- eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly)
- }
- else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
- Module['read'] = function read(url) {
- var xhr = new XMLHttpRequest();
- xhr.open('GET', url, false);
- xhr.send(null);
- return xhr.responseText;
- };
- if (typeof arguments != 'undefined') {
- Module['arguments'] = arguments;
- }
- if (typeof console !== 'undefined') {
- if (!Module['print']) Module['print'] = function print(x) {
- console.log(x);
- };
- if (!Module['printErr']) Module['printErr'] = function printErr(x) {
- console.log(x);
- };
- } else {
- // Probably a worker, and without console.log. We can do very little here...
- var TRY_USE_DUMP = false;
- if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) {
- dump(x);
- }) : (function(x) {
- // self.postMessage(x); // enable this if you want stdout to be sent as messages
- }));
- }
- if (ENVIRONMENT_IS_WEB) {
- this['Module'] = Module;
- } else {
- Module['load'] = importScripts;
- }
- }
- else {
- // Unreachable because SHELL is dependant on the others
- throw 'Unknown runtime environment. Where are we?';
- }
- function globalEval(x) {
- eval.call(null, x);
- }
- if (!Module['load'] == 'undefined' && Module['read']) {
- Module['load'] = function load(f) {
- globalEval(Module['read'](f));
- };
- }
- if (!Module['print']) {
- Module['print'] = function(){};
- }
- if (!Module['printErr']) {
- Module['printErr'] = Module['print'];
- }
- if (!Module['arguments']) {
- Module['arguments'] = [];
- }
- // *** Environment setup code ***
- // Closure helpers
- Module.print = Module['print'];
- Module.printErr = Module['printErr'];
- // Callbacks
- Module['preRun'] = [];
- Module['postRun'] = [];
- // Merge back in the overrides
- for (var key in moduleOverrides) {
- if (moduleOverrides.hasOwnProperty(key)) {
- Module[key] = moduleOverrides[key];
- }
- }
- // === Auto-generated preamble library stuff ===
- //========================================
- // Runtime code shared with compiler
- //========================================
- var Runtime = {
- stackSave: function () {
- return STACKTOP;
- },
- stackRestore: function (stackTop) {
- STACKTOP = stackTop;
- },
- forceAlign: function (target, quantum) {
- quantum = quantum || 4;
- if (quantum == 1) return target;
- if (isNumber(target) && isNumber(quantum)) {
- return Math.ceil(target/quantum)*quantum;
- } else if (isNumber(quantum) && isPowerOfTwo(quantum)) {
- return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')';
- }
- return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum;
- },
- isNumberType: function (type) {
- return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES;
- },
- isPointerType: function isPointerType(type) {
- return type[type.length-1] == '*';
- },
- isStructType: function isStructType(type) {
- if (isPointerType(type)) return false;
- if (isArrayType(type)) return true;
- if (/<?{ ?[^}]* ?}>?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types
- // See comment in isStructPointerType()
- return type[0] == '%';
- },
- INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0},
- FLOAT_TYPES: {"float":0,"double":0},
- or64: function (x, y) {
- var l = (x | 0) | (y | 0);
- var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296;
- return l + h;
- },
- and64: function (x, y) {
- var l = (x | 0) & (y | 0);
- var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296;
- return l + h;
- },
- xor64: function (x, y) {
- var l = (x | 0) ^ (y | 0);
- var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296;
- return l + h;
- },
- getNativeTypeSize: function (type) {
- switch (type) {
- case 'i1': case 'i8': return 1;
- case 'i16': return 2;
- case 'i32': return 4;
- case 'i64': return 8;
- case 'float': return 4;
- case 'double': return 8;
- default: {
- if (type[type.length-1] === '*') {
- return Runtime.QUANTUM_SIZE; // A pointer
- } else if (type[0] === 'i') {
- var bits = parseInt(type.substr(1));
- assert(bits % 8 === 0);
- return bits/8;
- } else {
- return 0;
- }
- }
- }
- },
- getNativeFieldSize: function (type) {
- return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE);
- },
- dedup: function dedup(items, ident) {
- var seen = {};
- if (ident) {
- return items.filter(function(item) {
- if (seen[item[ident]]) return false;
- seen[item[ident]] = true;
- return true;
- });
- } else {
- return items.filter(function(item) {
- if (seen[item]) return false;
- seen[item] = true;
- return true;
- });
- }
- },
- set: function set() {
- var args = typeof arguments[0] === 'object' ? arguments[0] : arguments;
- var ret = {};
- for (var i = 0; i < args.length; i++) {
- ret[args[i]] = 0;
- }
- return ret;
- },
- STACK_ALIGN: 8,
- getAlignSize: function (type, size, vararg) {
- // we align i64s and doubles on 64-bit boundaries, unlike x86
- if (vararg) return 8;
- if (!vararg && (type == 'i64' || type == 'double')) return 8;
- if (!type) return Math.min(size, 8); // align structures internally to 64 bits
- return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE);
- },
- calculateStructAlignment: function calculateStructAlignment(type) {
- type.flatSize = 0;
- type.alignSize = 0;
- var diffs = [];
- var prev = -1;
- var index = 0;
- type.flatIndexes = type.fields.map(function(field) {
- index++;
- var size, alignSize;
- if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) {
- size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s.
- alignSize = Runtime.getAlignSize(field, size);
- } else if (Runtime.isStructType(field)) {
- if (field[1] === '0') {
- // this is [0 x something]. When inside another structure like here, it must be at the end,
- // and it adds no size
- // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!');
- size = 0;
- if (Types.types[field]) {
- alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize);
- } else {
- alignSize = type.alignSize || QUANTUM_SIZE;
- }
- } else {
- size = Types.types[field].flatSize;
- alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize);
- }
- } else if (field[0] == 'b') {
- // bN, large number field, like a [N x i8]
- size = field.substr(1)|0;
- alignSize = 1;
- } else if (field[0] === '<') {
- // vector type
- size = alignSize = Types.types[field].flatSize; // fully aligned
- } else if (field[0] === 'i') {
- // illegal integer field, that could not be legalized because it is an internal structure field
- // it is ok to have such fields, if we just use them as markers of field size and nothing more complex
- size = alignSize = parseInt(field.substr(1))/8;
- assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field);
- } else {
- assert(false, 'invalid type for calculateStructAlignment');
- }
- if (type.packed) alignSize = 1;
- type.alignSize = Math.max(type.alignSize, alignSize);
- var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory
- type.flatSize = curr + size;
- if (prev >= 0) {
- diffs.push(curr-prev);
- }
- prev = curr;
- return curr;
- });
- if (type.name_ && type.name_[0] === '[') {
- // arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid
- // allocating a potentially huge array for [999999 x i8] etc.
- type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2;
- }
- type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize);
- if (diffs.length == 0) {
- type.flatFactor = type.flatSize;
- } else if (Runtime.dedup(diffs).length == 1) {
- type.flatFactor = diffs[0];
- }
- type.needsFlattening = (type.flatFactor != 1);
- return type.flatIndexes;
- },
- generateStructInfo: function (struct, typeName, offset) {
- var type, alignment;
- if (typeName) {
- offset = offset || 0;
- type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName];
- if (!type) return null;
- if (type.fields.length != struct.length) {
- printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo');
- return null;
- }
- alignment = type.flatIndexes;
- } else {
- var type = { fields: struct.map(function(item) { return item[0] }) };
- alignment = Runtime.calculateStructAlignment(type);
- }
- var ret = {
- __size__: type.flatSize
- };
- if (typeName) {
- struct.forEach(function(item, i) {
- if (typeof item === 'string') {
- ret[item] = alignment[i] + offset;
- } else {
- // embedded struct
- var key;
- for (var k in item) key = k;
- ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]);
- }
- });
- } else {
- struct.forEach(function(item, i) {
- ret[item[1]] = alignment[i];
- });
- }
- return ret;
- },
- dynCall: function (sig, ptr, args) {
- if (args && args.length) {
- assert(args.length == sig.length-1);
- return FUNCTION_TABLE[ptr].apply(null, args);
- } else {
- assert(sig.length == 1);
- return FUNCTION_TABLE[ptr]();
- }
- },
- addFunction: function (func) {
- var table = FUNCTION_TABLE;
- var ret = table.length;
- assert(ret % 2 === 0);
- table.push(func);
- for (var i = 0; i < 2-1; i++) table.push(0);
- return ret;
- },
- removeFunction: function (index) {
- var table = FUNCTION_TABLE;
- table[index] = null;
- },
- getAsmConst: function (code, numArgs) {
- // code is a constant string on the heap, so we can cache these
- if (!Runtime.asmConstCache) Runtime.asmConstCache = {};
- var func = Runtime.asmConstCache[code];
- if (func) return func;
- var args = [];
- for (var i = 0; i < numArgs; i++) {
- args.push(String.fromCharCode(36) + i); // $0, $1 etc
- }
- code = Pointer_stringify(code);
- if (code[0] === '"') {
- // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct
- if (code.indexOf('"', 1) === code.length-1) {
- code = code.substr(1, code.length-2);
- } else {
- // something invalid happened, e.g. EM_ASM("..code($0)..", input)
- abort('invalid EM_ASM input |' + code + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)');
- }
- }
- return Runtime.asmConstCache[code] = eval('(function(' + args.join(',') + '){ ' + code + ' })'); // new Function does not allow upvars in node
- },
- warnOnce: function (text) {
- if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};
- if (!Runtime.warnOnce.shown[text]) {
- Runtime.warnOnce.shown[text] = 1;
- Module.printErr(text);
- }
- },
- funcWrappers: {},
- getFuncWrapper: function (func, sig) {
- assert(sig);
- if (!Runtime.funcWrappers[func]) {
- Runtime.funcWrappers[func] = function dynCall_wrapper() {
- return Runtime.dynCall(sig, func, arguments);
- };
- }
- return Runtime.funcWrappers[func];
- },
- UTF8Processor: function () {
- var buffer = [];
- var needed = 0;
- this.processCChar = function (code) {
- code = code & 0xFF;
- if (buffer.length == 0) {
- if ((code & 0x80) == 0x00) { // 0xxxxxxx
- return String.fromCharCode(code);
- }
- buffer.push(code);
- if ((code & 0xE0) == 0xC0) { // 110xxxxx
- needed = 1;
- } else if ((code & 0xF0) == 0xE0) { // 1110xxxx
- needed = 2;
- } else { // 11110xxx
- needed = 3;
- }
- return '';
- }
- if (needed) {
- buffer.push(code);
- needed--;
- if (needed > 0) return '';
- }
- var c1 = buffer[0];
- var c2 = buffer[1];
- var c3 = buffer[2];
- var c4 = buffer[3];
- var ret;
- if (buffer.length == 2) {
- ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F));
- } else if (buffer.length == 3) {
- ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F));
- } else {
- // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
- var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) |
- ((c3 & 0x3F) << 6) | (c4 & 0x3F);
- ret = String.fromCharCode(
- Math.floor((codePoint - 0x10000) / 0x400) + 0xD800,
- (codePoint - 0x10000) % 0x400 + 0xDC00);
- }
- buffer.length = 0;
- return ret;
- }
- this.processJSString = function processJSString(string) {
- string = unescape(encodeURIComponent(string));
- var ret = [];
- for (var i = 0; i < string.length; i++) {
- ret.push(string.charCodeAt(i));
- }
- return ret;
- }
- },
- stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8);(assert((STACKTOP|0) < (STACK_MAX|0))|0); return ret; },
- staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + (assert(!staticSealed),size))|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; },
- dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + (assert(DYNAMICTOP > 0),size))|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; },
- alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); return ret; },
- makeBigInt: function (low,high,unsigned) { var ret = (unsigned ? ((low>>>0)+((high>>>0)*4294967296)) : ((low>>>0)+((high|0)*4294967296))); return ret; },
- GLOBAL_BASE: 8,
- QUANTUM_SIZE: 4,
- __dummy__: 0
- }
- Module['Runtime'] = Runtime;
- //========================================
- // Runtime essentials
- //========================================
- var __THREW__ = 0; // Used in checking for thrown exceptions.
- var setjmpId = 1; // Used in setjmp/longjmp
- var setjmpLabels = {};
- var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort()
- var EXITSTATUS = 0;
- var undef = 0;
- // tempInt is used for 32-bit signed values or smaller. tempBigInt is used
- // for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt
- var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat;
- var tempI64, tempI64b;
- var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;
- function assert(condition, text) {
- if (!condition) {
- abort('Assertion failed: ' + text);
- }
- }
- var globalScope = this;
- // C calling interface. A convenient way to call C functions (in C files, or
- // defined with extern "C").
- //
- // Note: LLVM optimizations can inline and remove functions, after which you will not be
- // able to call them. Closure can also do so. To avoid that, add your function to
- // the exports using something like
- //
- // -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]'
- //
- // @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C")
- // @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and
- // 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit).
- // @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType,
- // except that 'array' is not possible (there is no way for us to know the length of the array)
- // @param args An array of the arguments to the function, as native JS values (as in returnType)
- // Note that string arguments will be stored on the stack (the JS string will become a C string on the stack).
- // @return The return value, as a native JS value (as in returnType)
- function ccall(ident, returnType, argTypes, args) {
- return ccallFunc(getCFunc(ident), returnType, argTypes, args);
- }
- Module["ccall"] = ccall;
- // Returns the C function with a specified identifier (for C++, you need to do manual name mangling)
- function getCFunc(ident) {
- try {
- var func = Module['_' + ident]; // closure exported function
- if (!func) func = eval('_' + ident); // explicit lookup
- } catch(e) {
- }
- assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)');
- return func;
- }
- // Internal function that does a C call using a function, not an identifier
- function ccallFunc(func, returnType, argTypes, args) {
- var stack = 0;
- function toC(value, type) {
- if (type == 'string') {
- if (value === null || value === undefined || value === 0) return 0; // null string
- value = intArrayFromString(value);
- type = 'array';
- }
- if (type == 'array') {
- if (!stack) stack = Runtime.stackSave();
- var ret = Runtime.stackAlloc(value.length);
- writeArrayToMemory(value, ret);
- return ret;
- }
- return value;
- }
- function fromC(value, type) {
- if (type == 'string') {
- return Pointer_stringify(value);
- }
- assert(type != 'array');
- return value;
- }
- var i = 0;
- var cArgs = args ? args.map(function(arg) {
- return toC(arg, argTypes[i++]);
- }) : [];
- var ret = fromC(func.apply(null, cArgs), returnType);
- if (stack) Runtime.stackRestore(stack);
- return ret;
- }
- // Returns a native JS wrapper for a C function. This is similar to ccall, but
- // returns a function you can call repeatedly in a normal way. For example:
- //
- // var my_function = cwrap('my_c_function', 'number', ['number', 'number']);
- // alert(my_function(5, 22));
- // alert(my_function(99, 12));
- //
- function cwrap(ident, returnType, argTypes) {
- var func = getCFunc(ident);
- return function() {
- return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments));
- }
- }
- Module["cwrap"] = cwrap;
- // Sets a value in memory in a dynamic way at run-time. Uses the
- // type data. This is the same as makeSetValue, except that
- // makeSetValue is done at compile-time and generates the needed
- // code then, whereas this function picks the right code at
- // run-time.
- // Note that setValue and getValue only do *aligned* writes and reads!
- // Note that ccall uses JS types as for defining types, while setValue and
- // getValue need LLVM types ('i8', 'i32') - this is a lower-level operation
- function setValue(ptr, value, type, noSafe) {
- type = type || 'i8';
- if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit
- switch(type) {
- case 'i1': HEAP8[(ptr)]=value; break;
- case 'i8': HEAP8[(ptr)]=value; break;
- case 'i16': HEAP16[((ptr)>>1)]=value; break;
- case 'i32': HEAP32[((ptr)>>2)]=value; break;
- case 'i64': (tempI64 = [value>>>0,(tempDouble=value,Math_abs(tempDouble) >= 1 ? (tempDouble > 0 ? Math_min(Math_floor((tempDouble)/4294967296), 4294967295)>>>0 : (~~(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296)))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break;
- case 'float': HEAPF32[((ptr)>>2)]=value; break;
- case 'double': HEAPF64[((ptr)>>3)]=value; break;
- default: abort('invalid type for setValue: ' + type);
- }
- }
- Module['setValue'] = setValue;
- // Parallel to setValue.
- function getValue(ptr, type, noSafe) {
- type = type || 'i8';
- if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit
- switch(type) {
- case 'i1': return HEAP8[(ptr)];
- case 'i8': return HEAP8[(ptr)];
- case 'i16': return HEAP16[((ptr)>>1)];
- case 'i32': return HEAP32[((ptr)>>2)];
- case 'i64': return HEAP32[((ptr)>>2)];
- case 'float': return HEAPF32[((ptr)>>2)];
- case 'double': return HEAPF64[((ptr)>>3)];
- default: abort('invalid type for setValue: ' + type);
- }
- return null;
- }
- Module['getValue'] = getValue;
- var ALLOC_NORMAL = 0; // Tries to use _malloc()
- var ALLOC_STACK = 1; // Lives for the duration of the current function call
- var ALLOC_STATIC = 2; // Cannot be freed
- var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk
- var ALLOC_NONE = 4; // Do not allocate
- Module['ALLOC_NORMAL'] = ALLOC_NORMAL;
- Module['ALLOC_STACK'] = ALLOC_STACK;
- Module['ALLOC_STATIC'] = ALLOC_STATIC;
- Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC;
- Module['ALLOC_NONE'] = ALLOC_NONE;
- // allocate(): This is for internal use. You can use it yourself as well, but the interface
- // is a little tricky (see docs right below). The reason is that it is optimized
- // for multiple syntaxes to save space in generated code. So you should
- // normally not use allocate(), and instead allocate memory using _malloc(),
- // initialize it with setValue(), and so forth.
- // @slab: An array of data, or a number. If a number, then the size of the block to allocate,
- // in *bytes* (note that this is sometimes confusing: the next parameter does not
- // affect this!)
- // @types: Either an array of types, one for each byte (or 0 if no type at that position),
- // or a single type which is used for the entire block. This only matters if there
- // is initial data - if @slab is a number, then this does not matter at all and is
- // ignored.
- // @allocator: How to allocate memory, see ALLOC_*
- function allocate(slab, types, allocator, ptr) {
- var zeroinit, size;
- if (typeof slab === 'number') {
- zeroinit = true;
- size = slab;
- } else {
- zeroinit = false;
- size = slab.length;
- }
- var singleType = typeof types === 'string' ? types : null;
- var ret;
- if (allocator == ALLOC_NONE) {
- ret = ptr;
- } else {
- ret = [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));
- }
- if (zeroinit) {
- var ptr = ret, stop;
- assert((ret & 3) == 0);
- stop = ret + (size & ~3);
- for (; ptr < stop; ptr += 4) {
- HEAP32[((ptr)>>2)]=0;
- }
- stop = ret + size;
- while (ptr < stop) {
- HEAP8[((ptr++)|0)]=0;
- }
- return ret;
- }
- if (singleType === 'i8') {
- if (slab.subarray || slab.slice) {
- HEAPU8.set(slab, ret);
- } else {
- HEAPU8.set(new Uint8Array(slab), ret);
- }
- return ret;
- }
- var i = 0, type, typeSize, previousType;
- while (i < size) {
- var curr = slab[i];
- if (typeof curr === 'function') {
- curr = Runtime.getFunctionIndex(curr);
- }
- type = singleType || types[i];
- if (type === 0) {
- i++;
- continue;
- }
- assert(type, 'Must know what type to store in allocate!');
- if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later
- setValue(ret+i, curr, type);
- // no need to look up size unless type changes, so cache it
- if (previousType !== type) {
- typeSize = Runtime.getNativeTypeSize(type);
- previousType = type;
- }
- i += typeSize;
- }
- return ret;
- }
- Module['allocate'] = allocate;
- function Pointer_stringify(ptr, /* optional */ length) {
- // TODO: use TextDecoder
- // Find the length, and check for UTF while doing so
- var hasUtf = false;
- var t;
- var i = 0;
- while (1) {
- assert(ptr + i < TOTAL_MEMORY);
- t = HEAPU8[(((ptr)+(i))|0)];
- if (t >= 128) hasUtf = true;
- else if (t == 0 && !length) break;
- i++;
- if (length && i == length) break;
- }
- if (!length) length = i;
- var ret = '';
- if (!hasUtf) {
- var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack
- var curr;
- while (length > 0) {
- curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
- ret = ret ? ret + curr : curr;
- ptr += MAX_CHUNK;
- length -= MAX_CHUNK;
- }
- return ret;
- }
- var utf8 = new Runtime.UTF8Processor();
- for (i = 0; i < length; i++) {
- assert(ptr + i < TOTAL_MEMORY);
- t = HEAPU8[(((ptr)+(i))|0)];
- ret += utf8.processCChar(t);
- }
- return ret;
- }
- Module['Pointer_stringify'] = Pointer_stringify;
- // Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns
- // a copy of that string as a Javascript String object.
- function UTF16ToString(ptr) {
- var i = 0;
- var str = '';
- while (1) {
- var codeUnit = HEAP16[(((ptr)+(i*2))>>1)];
- if (codeUnit == 0)
- return str;
- ++i;
- // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through.
- str += String.fromCharCode(codeUnit);
- }
- }
- Module['UTF16ToString'] = UTF16ToString;
- // Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
- // null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP.
- function stringToUTF16(str, outPtr) {
- for(var i = 0; i < str.length; ++i) {
- // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.
- var codeUnit = str.charCodeAt(i); // possibly a lead surrogate
- HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit;
- }
- // Null-terminate the pointer to the HEAP.
- HEAP16[(((outPtr)+(str.length*2))>>1)]=0;
- }
- Module['stringToUTF16'] = stringToUTF16;
- // Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns
- // a copy of that string as a Javascript String object.
- function UTF32ToString(ptr) {
- var i = 0;
- var str = '';
- while (1) {
- var utf32 = HEAP32[(((ptr)+(i*4))>>2)];
- if (utf32 == 0)
- return str;
- ++i;
- // 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.
- if (utf32 >= 0x10000) {
- var ch = utf32 - 0x10000;
- str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));
- } else {
- str += String.fromCharCode(utf32);
- }
- }
- }
- Module['UTF32ToString'] = UTF32ToString;
- // Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
- // null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP,
- // but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string.
- function stringToUTF32(str, outPtr) {
- var iChar = 0;
- for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) {
- // 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.
- var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate
- if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) {
- var trailSurrogate = str.charCodeAt(++iCodeUnit);
- codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF);
- }
- HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit;
- ++iChar;
- }
- // Null-terminate the pointer to the HEAP.
- HEAP32[(((outPtr)+(iChar*4))>>2)]=0;
- }
- Module['stringToUTF32'] = stringToUTF32;
- function demangle(func) {
- try {
- // Special-case the entry point, since its name differs from other name mangling.
- if (func == 'Object._main' || func == '_main') {
- return 'main()';
- }
- if (typeof func === 'number') func = Pointer_stringify(func);
- if (func[0] !== '_') return func;
- if (func[1] !== '_') return func; // C function
- if (func[2] !== 'Z') return func;
- switch (func[3]) {
- case 'n': return 'operator new()';
- case 'd': return 'operator delete()';
- }
- var i = 3;
- // params, etc.
- var basicTypes = {
- 'v': 'void',
- 'b': 'bool',
- 'c': 'char',
- 's': 'short',
- 'i': 'int',
- 'l': 'long',
- 'f': 'float',
- 'd': 'double',
- 'w': 'wchar_t',
- 'a': 'signed char',
- 'h': 'unsigned char',
- 't': 'unsigned short',
- 'j': 'unsigned int',
- 'm': 'unsigned long',
- 'x': 'long long',
- 'y': 'unsigned long long',
- 'z': '...'
- };
- function dump(x) {
- //return;
- if (x) Module.print(x);
- Module.print(func);
- var pre = '';
- for (var a = 0; a < i; a++) pre += ' ';
- Module.print (pre + '^');
- }
- var subs = [];
- function parseNested() {
- i++;
- if (func[i] === 'K') i++; // ignore const
- var parts = [];
- while (func[i] !== 'E') {
- if (func[i] === 'S') { // substitution
- i++;
- var next = func.indexOf('_', i);
- var num = func.substring(i, next) || 0;
- parts.push(subs[num] || '?');
- i = next+1;
- continue;
- }
- if (func[i] === 'C') { // constructor
- parts.push(parts[parts.length-1]);
- i += 2;
- continue;
- }
- var size = parseInt(func.substr(i));
- var pre = size.toString().length;
- if (!size || !pre) { i--; break; } // counter i++ below us
- var curr = func.substr(i + pre, size);
- parts.push(curr);
- subs.push(curr);
- i += pre + size;
- }
- i++; // skip E
- return parts;
- }
- var first = true;
- function parse(rawList, limit, allowVoid) { // main parser
- limit = limit || Infinity;
- var ret = '', list = [];
- function flushList() {
- return '(' + list.join(', ') + ')';
- }
- var name;
- if (func[i] === 'N') {
- // namespaced N-E
- name = parseNested().join('::');
- limit--;
- if (limit === 0) return rawList ? [name] : name;
- } else {
- // not namespaced
- if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L'
- var size = parseInt(func.substr(i));
- if (size) {
- var pre = size.toString().length;
- name = func.substr(i + pre, size);
- i += pre + size;
- }
- }
- first = false;
- if (func[i] === 'I') {
- i++;
- var iList = parse(true);
- var iRet = parse(true, 1, true);
- ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>';
- } else {
- ret = name;
- }
- paramLoop: while (i < func.length && limit-- > 0) {
- //dump('paramLoop');
- var c = func[i++];
- if (c in basicTypes) {
- list.push(basicTypes[c]);
- } else {
- switch (c) {
- case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer
- case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference
- case 'L': { // literal
- i++; // skip basic type
- var end = func.indexOf('E', i);
- var size = end - i;
- list.push(func.substr(i, size));
- i += size + 2; // size + 'EE'
- break;
- }
- case 'A': { // array
- var size = parseInt(func.substr(i));
- i += size.toString().length;
- if (func[i] !== '_') throw '?';
- i++; // skip _
- list.push(parse(true, 1, true)[0] + ' [' + size + ']');
- break;
- }
- case 'E': break paramLoop;
- default: ret += '?' + c; break paramLoop;
- }
- }
- }
- if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void)
- return rawList ? list : ret + flushList();
- }
- return parse();
- } catch(e) {
- return func;
- }
- }
- function demangleAll(text) {
- return text.replace(/__Z[\w\d_]+/g, function(x) { var y = demangle(x); return x === y ? x : (x + ' [' + y + ']') });
- }
- function stackTrace() {
- var stack = new Error().stack;
- return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6.
- }
- // Memory management
- var PAGE_SIZE = 4096;
- function alignMemoryPage(x) {
- return (x+4095)&-4096;
- }
- var HEAP;
- var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
- var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area
- var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area
- var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk
- function enlargeMemory() {
- abort('Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value ' + TOTAL_MEMORY + ', (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.');
- }
- var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;
- var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 16777216;
- var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152;
- // Initialize the runtime's memory
- // check for full engine support (use string 'subarray' to avoid closure compiler confusion)
- assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']),
- 'Cannot fallback to non-typed array case: Code is too specialized');
- var buffer = new ArrayBuffer(TOTAL_MEMORY);
- HEAP8 = new Int8Array(buffer);
- HEAP16 = new Int16Array(buffer);
- HEAP32 = new Int32Array(buffer);
- HEAPU8 = new Uint8Array(buffer);
- HEAPU16 = new Uint16Array(buffer);
- HEAPU32 = new Uint32Array(buffer);
- HEAPF32 = new Float32Array(buffer);
- HEAPF64 = new Float64Array(buffer);
- // Endianness check (note: assumes compiler arch was little-endian)
- HEAP32[0] = 255;
- assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system');
- Module['HEAP'] = HEAP;
- Module['HEAP8'] = HEAP8;
- Module['HEAP16'] = HEAP16;
- Module['HEAP32'] = HEAP32;
- Module['HEAPU8'] = HEAPU8;
- Module['HEAPU16'] = HEAPU16;
- Module['HEAPU32'] = HEAPU32;
- Module['HEAPF32'] = HEAPF32;
- Module['HEAPF64'] = HEAPF64;
- function callRuntimeCallbacks(callbacks) {
- while(callbacks.length > 0) {
- var callback = callbacks.shift();
- if (typeof callback == 'function') {
- callback();
- continue;
- }
- var func = callback.func;
- if (typeof func === 'number') {
- if (callback.arg === undefined) {
- Runtime.dynCall('v', func);
- } else {
- Runtime.dynCall('vi', func, [callback.arg]);
- }
- } else {
- func(callback.arg === undefined ? null : callback.arg);
- }
- }
- }
- var __ATPRERUN__ = []; // functions called before the runtime is initialized
- var __ATINIT__ = []; // functions called during startup
- var __ATMAIN__ = []; // functions called when main() is to be run
- var __ATEXIT__ = []; // functions called during shutdown
- var __ATPOSTRUN__ = []; // functions called after the runtime has exited
- var runtimeInitialized = false;
- function preRun() {
- // compatibility - merge in anything from Module['preRun'] at this time
- if (Module['preRun']) {
- if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
- while (Module['preRun'].length) {
- addOnPreRun(Module['preRun'].shift());
- }
- }
- callRuntimeCallbacks(__ATPRERUN__);
- }
- function ensureInitRuntime() {
- if (runtimeInitialized) return;
- runtimeInitialized = true;
- callRuntimeCallbacks(__ATINIT__);
- }
- function preMain() {
- callRuntimeCallbacks(__ATMAIN__);
- }
- function exitRuntime() {
- callRuntimeCallbacks(__ATEXIT__);
- }
- function postRun() {
- // compatibility - merge in anything from Module['postRun'] at this time
- if (Module['postRun']) {
- if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];
- while (Module['postRun'].length) {
- addOnPostRun(Module['postRun'].shift());
- }
- }
- callRuntimeCallbacks(__ATPOSTRUN__);
- }
- function addOnPreRun(cb) {
- __ATPRERUN__.unshift(cb);
- }
- Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun;
- function addOnInit(cb) {
- __ATINIT__.unshift(cb);
- }
- Module['addOnInit'] = Module.addOnInit = addOnInit;
- function addOnPreMain(cb) {
- __ATMAIN__.unshift(cb);
- }
- Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain;
- function addOnExit(cb) {
- __ATEXIT__.unshift(cb);
- }
- Module['addOnExit'] = Module.addOnExit = addOnExit;
- function addOnPostRun(cb) {
- __ATPOSTRUN__.unshift(cb);
- }
- Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun;
- // Tools
- // This processes a JS string into a C-line array of numbers, 0-terminated.
- // For LLVM-originating strings, see parser.js:parseLLVMString function
- function intArrayFromString(stringy, dontAddNull, length /* optional */) {
- var ret = (new Runtime.UTF8Processor()).processJSString(stringy);
- if (length) {
- ret.length = length;
- }
- if (!dontAddNull) {
- ret.push(0);
- }
- return ret;
- }
- Module['intArrayFromString'] = intArrayFromString;
- function intArrayToString(array) {
- var ret = [];
- for (var i = 0; i < array.length; i++) {
- var chr = array[i];
- if (chr > 0xFF) {
- assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.');
- chr &= 0xFF;
- }
- ret.push(String.fromCharCode(chr));
- }
- return ret.join('');
- }
- Module['intArrayToString'] = intArrayToString;
- // Write a Javascript array to somewhere in the heap
- function writeStringToMemory(string, buffer, dontAddNull) {
- var array = intArrayFromString(string, dontAddNull);
- var i = 0;
- while (i < array.length) {
- var chr = array[i];
- HEAP8[(((buffer)+(i))|0)]=chr;
- i = i + 1;
- }
- }
- Module['writeStringToMemory'] = writeStringToMemory;
- function writeArrayToMemory(array, buffer) {
- for (var i = 0; i < array.length; i++) {
- HEAP8[(((buffer)+(i))|0)]=array[i];
- }
- }
- Module['writeArrayToMemory'] = writeArrayToMemory;
- function writeAsciiToMemory(str, buffer, dontAddNull) {
- for (var i = 0; i < str.length; i++) {
- assert(str.charCodeAt(i) === str.charCodeAt(i)&0xff);
- HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i);
- }
- if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0;
- }
- Module['writeAsciiToMemory'] = writeAsciiToMemory;
- function unSign(value, bits, ignore, sig) {
- if (value >= 0) {
- return value;
- }
- 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
- : Math.pow(2, bits) + value;
- }
- function reSign(value, bits, ignore, sig) {
- if (value <= 0) {
- return value;
- }
- var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32
- : Math.pow(2, bits-1);
- 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
- // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors
- // TODO: In i64 mode 1, resign the two parts separately and safely
- value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts
- }
- return value;
- }
- // check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 )
- if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) {
- var ah = a >>> 16;
- var al = a & 0xffff;
- var bh = b >>> 16;
- var bl = b & 0xffff;
- return (al*bl + ((ah*bl + al*bh) << 16))|0;
- };
- Math.imul = Math['imul'];
- var Math_abs = Math.abs;
- var Math_cos = Math.cos;
- var Math_sin = Math.sin;
- var Math_tan = Math.tan;
- var Math_acos = Math.acos;
- var Math_asin = Math.asin;
- var Math_atan = Math.atan;
- var Math_atan2 = Math.atan2;
- var Math_exp = Math.exp;
- var Math_log = Math.log;
- var Math_sqrt = Math.sqrt;
- var Math_ceil = Math.ceil;
- var Math_floor = Math.floor;
- var Math_pow = Math.pow;
- var Math_imul = Math.imul;
- var Math_fround = Math.fround;
- var Math_min = Math.min;
- // A counter of dependencies for calling run(). If we need to
- // do asynchronous work before running, increment this and
- // decrement it. Incrementing must happen in a place like
- // PRE_RUN_ADDITIONS (used by emcc to add file preloading).
- // Note that you can add dependencies in preRun, even though
- // it happens right before run - run will be postponed until
- // the dependencies are met.
- var runDependencies = 0;
- var runDependencyWatcher = null;
- var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled
- var runDependencyTracking = {};
- function addRunDependency(id) {
- runDependencies++;
- if (Module['monitorRunDependencies']) {
- Module['monitorRunDependencies'](runDependencies);
- }
- if (id) {
- assert(!runDependencyTracking[id]);
- runDependencyTracking[id] = 1;
- if (runDependencyWatcher === null && typeof setInterval !== 'undefined') {
- // Check for missing dependencies every few seconds
- runDependencyWatcher = setInterval(function() {
- var shown = false;
- for (var dep in runDependencyTracking) {
- if (!shown) {
- shown = true;
- Module.printErr('still waiting on run dependencies:');
- }
- Module.printErr('dependency: ' + dep);
- }
- if (shown) {
- Module.printErr('(end of list)');
- }
- }, 10000);
- }
- } else {
- Module.printErr('warning: run dependency added without ID');
- }
- }
- Module['addRunDependency'] = addRunDependency;
- function removeRunDependency(id) {
- runDependencies--;
- if (Module['monitorRunDependencies']) {
- Module['monitorRunDependencies'](runDependencies);
- }
- if (id) {
- assert(runDependencyTracking[id]);
- delete runDependencyTracking[id];
- } else {
- Module.printErr('warning: run dependency removed without ID');
- }
- if (runDependencies == 0) {
- if (runDependencyWatcher !== null) {
- clearInterval(runDependencyWatcher);
- runDependencyWatcher = null;
- }
- if (dependenciesFulfilled) {
- var callback = dependenciesFulfilled;
- dependenciesFulfilled = null;
- callback(); // can add another dependenciesFulfilled
- }
- }
- }
- Module['removeRunDependency'] = removeRunDependency;
- Module["preloadedImages"] = {}; // maps url to image data
- Module["preloadedAudios"] = {}; // maps url to audio data
- var memoryInitializer = null;
- // === Body ===
- STATIC_BASE = 8;
- STATICTOP = STATIC_BASE + 504;
- /* global initializers */ __ATINIT__.push({ func: function() { runPostSets() } });
- /* memory initializer */ allocate([255,255,255,0,0,0,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
- function runPostSets() {
- }
- var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
- assert(tempDoublePtr % 8 == 0);
- function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much
- HEAP8[tempDoublePtr] = HEAP8[ptr];
- HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
- HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
- HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
- }
- function copyTempDouble(ptr) {
- HEAP8[tempDoublePtr] = HEAP8[ptr];
- HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
- HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
- HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
- HEAP8[tempDoublePtr+4] = HEAP8[ptr+4];
- HEAP8[tempDoublePtr+5] = HEAP8[ptr+5];
- HEAP8[tempDoublePtr+6] = HEAP8[ptr+6];
- HEAP8[tempDoublePtr+7] = HEAP8[ptr+7];
- }
-
- function _memset(ptr, value, num) {
- ptr = ptr|0; value = value|0; num = num|0;
- var stop = 0, value4 = 0, stop4 = 0, unaligned = 0;
- stop = (ptr + num)|0;
- if ((num|0) >= 20) {
- // This is unaligned, but quite large, so work hard to get to aligned settings
- value = value & 0xff;
- unaligned = ptr & 3;
- value4 = value | (value << 8) | (value << 16) | (value << 24);
- stop4 = stop & ~3;
- if (unaligned) {
- unaligned = (ptr + 4 - unaligned)|0;
- while ((ptr|0) < (unaligned|0)) { // no need to check for stop, since we have large num
- HEAP8[(ptr)]=value;
- ptr = (ptr+1)|0;
- }
- }
- while ((ptr|0) < (stop4|0)) {
- HEAP32[((ptr)>>2)]=value4;
- ptr = (ptr+4)|0;
- }
- }
- while ((ptr|0) < (stop|0)) {
- HEAP8[(ptr)]=value;
- ptr = (ptr+1)|0;
- }
- return (ptr-num)|0;
- }var _llvm_memset_p0i8_i32=_memset;
-
- function _memcpy(dest, src, num) {
- dest = dest|0; src = src|0; num = num|0;
- var ret = 0;
- ret = dest|0;
- if ((dest&3) == (src&3)) {
- while (dest & 3) {
- if ((num|0) == 0) return ret|0;
- HEAP8[(dest)]=HEAP8[(src)];
- dest = (dest+1)|0;
- src = (src+1)|0;
- num = (num-1)|0;
- }
- while ((num|0) >= 4) {
- HEAP32[((dest)>>2)]=HEAP32[((src)>>2)];
- dest = (dest+4)|0;
- src = (src+4)|0;
- num = (num-4)|0;
- }
- }
- while ((num|0) > 0) {
- HEAP8[(dest)]=HEAP8[(src)];
- dest = (dest+1)|0;
- src = (src+1)|0;
- num = (num-1)|0;
- }
- return ret|0;
- }var _llvm_memcpy_p0i8_p0i8_i32=_memcpy;
- function _abort() {
- Module['abort']();
- }
-
-
- var ___errno_state=0;function ___setErrNo(value) {
- // For convenient setting and returning of errno.
- HEAP32[((___errno_state)>>2)]=value;
- return value;
- }function ___errno_location() {
- return ___errno_state;
- }
- function _sbrk(bytes) {
- // Implement a Linux-like 'memory area' for our 'process'.
- // Changes the size of the memory area by |bytes|; returns the
- // address of the previous top ('break') of the memory area
- // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP
- var self = _sbrk;
- if (!self.called) {
- DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned
- self.called = true;
- assert(Runtime.dynamicAlloc);
- self.alloc = Runtime.dynamicAlloc;
- Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') };
- }
- var ret = DYNAMICTOP;
- if (bytes != 0) self.alloc(bytes);
- return ret; // Previous break location.
- }
-
- var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(name) {
- // long sysconf(int name);
- // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
- switch(name) {
- case 30: return PAGE_SIZE;
- case 132:
- case 133:
- case 12:
- case 137:
- case 138:
- case 15:
- case 235:
- case 16:
- case 17:
- case 18:
- case 19:
- case 20:
- case 149:
- case 13:
- case 10:
- case 236:
- case 153:
- case 9:
- case 21:
- case 22:
- case 159:
- case 154:
- case 14:
- case 77:
- case 78:
- case 139:
- case 80:
- case 81:
- case 79:
- case 82:
- case 68:
- case 67:
- case 164:
- case 11:
- case 29:
- case 47:
- case 48:
- case 95:
- case 52:
- case 51:
- case 46:
- return 200809;
- case 27:
- case 246:
- case 127:
- case 128:
- case 23:
- case 24:
- case 160:
- case 161:
- case 181:
- case 182:
- case 242:
- case 183:
- case 184:
- case 243:
- case 244:
- case 245:
- case 165:
- case 178:
- case 179:
- case 49:
- case 50:
- case 168:
- case 169:
- case 175:
- case 170:
- case 171:
- case 172:
- case 97:
- case 76:
- case 32:
- case 173:
- case 35:
- return -1;
- case 176:
- case 177:
- case 7:
- case 155:
- case 8:
- case 157:
- case 125:
- case 126:
- case 92:
- case 93:
- case 129:
- case 130:
- case 131:
- case 94:
- case 91:
- return 1;
- case 74:
- case 60:
- case 69:
- case 70:
- case 4:
- return 1024;
- case 31:
- case 42:
- case 72:
- return 32;
- case 87:
- case 26:
- case 33:
- return 2147483647;
- case 34:
- case 1:
- return 47839;
- case 38:
- case 36:
- return 99;
- case 43:
- case 37:
- return 2048;
- case 0: return 2097152;
- case 3: return 65536;
- case 28: return 32768;
- case 44: return 32767;
- case 75: return 16384;
- case 39: return 1000;
- case 89: return 700;
- case 71: return 256;
- case 40: return 255;
- case 2: return 100;
- case 180: return 64;
- case 25: return 20;
- case 5: return 16;
- case 6: return 6;
- case 73: return 4;
- case 84: return 1;
- }
- ___setErrNo(ERRNO_CODES.EINVAL);
- return -1;
- }
- function _time(ptr) {
- var ret = Math.floor(Date.now()/1000);
- if (ptr) {
- HEAP32[((ptr)>>2)]=ret;
- }
- return ret;
- }
- function _strlen(ptr) {
- ptr = ptr|0;
- var curr = 0;
- curr = ptr;
- while (HEAP8[(curr)]) {
- curr = (curr + 1)|0;
- }
- return (curr - ptr)|0;
- }
-
-
-
- var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};
-
- var TTY={ttys:[],init:function () {
- // https://github.com/kripken/emscripten/pull/1555
- // if (ENVIRONMENT_IS_NODE) {
- // // currently, FS.init does not distinguish if process.stdin is a file or TTY
- // // device, it always assumes it's a TTY device. because of this, we're forcing
- // // process.stdin to UTF8 encoding to at least make stdin reading compatible
- // // with text files until FS.init can be refactored.
- // process['stdin']['setEncoding']('utf8');
- // }
- },shutdown:function () {
- // https://github.com/kripken/emscripten/pull/1555
- // if (ENVIRONMENT_IS_NODE) {
- // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)?
- // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation
- // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists?
- // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle
- // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call
- // process['stdin']['pause']();
- // }
- },register:function (dev, ops) {
- TTY.ttys[dev] = { input: [], output: [], ops: ops };
- FS.registerDevice(dev, TTY.stream_ops);
- },stream_ops:{open:function (stream) {
- var tty = TTY.ttys[stream.node.rdev];
- if (!tty) {
- throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
- }
- stream.tty = tty;
- stream.seekable = false;
- },close:function (stream) {
- // flush any pending line data
- if (stream.tty.output.length) {
- stream.tty.ops.put_char(stream.tty, 10);
- }
- },read:function (stream, buffer, offset, length, pos /* ignored */) {
- if (!stream.tty || !stream.tty.ops.get_char) {
- throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
- }
- var bytesRead = 0;
- for (var i = 0; i < length; i++) {
- var result;
- try {
- result = stream.tty.ops.get_char(stream.tty);
- } catch (e) {
- throw new FS.ErrnoError(ERRNO_CODES.EIO);
- }
- if (result === undefined && bytesRead === 0) {
- throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
- }
- if (result === null || result === undefined) break;
- bytesRead++;
- buffer[offset+i] = result;
- }
- if (bytesRead) {
- stream.node.timestamp = Date.now();
- }
- return bytesRead;
- },write:function (stream, buffer, offset, length, pos) {
- if (!stream.tty || !stream.tty.ops.put_char) {
- throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
- }
- for (var i = 0; i < length; i++) {
- try {
- stream.tty.ops.put_char(stream.tty, buffer[offset+i]);
- } catch (e) {
- throw new FS.ErrnoError(ERRNO_CODES.EIO);
- }
- }
- if (length) {
- stream.node.timestamp = Date.now();
- }
- return i;
- }},default_tty_ops:{get_char:function (tty) {
- if (!tty.input.length) {
- var result = null;
- if (ENVIRONMENT_IS_NODE) {
- result = process['stdin']['read']();
- if (!result) {
- if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) {
- return null; // EOF
- }
- return undefined; // no data available
- }
- } else if (typeof window != 'undefined' &&
- typeof window.prompt == 'function') {
- // Browser.
- result = window.prompt('Input: '); // returns null on cancel
- if (result !== null) {
- result += '\n';
- }
- } else if (typeof readline == 'function') {
- // Command line.
- result = readline();
- if (result !== null) {
- result += '\n';
- }
- }
- if (!result) {
- return null;
- }
- tty.input = intArrayFromString(result, true);
- }
- return tty.input.shift();
- },put_char:function (tty, val) {
- if (val === null || val === 10) {
- Module['print'](tty.output.join(''));
- tty.output = [];
- } else {
- tty.output.push(TTY.utf8.processCChar(val));
- }
- }},default_tty1_ops:{put_char:function (tty, val) {
- if (val === null || val === 10) {
- Module['printErr'](tty.output.join(''));
- tty.output = [];
- } else {
- tty.output.push(TTY.utf8.processCChar(val));
- }
- }}};
-
- var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) {
- return MEMFS.createNode(null, '/', 16384 | 0777, 0);
- },createNode:function (parent, name, mode, dev) {
- if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
- // no supported
- throw new FS.ErrnoError(ERRNO_CODES.EPERM);
- }
- if (!MEMFS.ops_table) {
- MEMFS.ops_table = {
- dir: {
- node: {
- getattr: MEMFS.node_ops.getattr,
- setattr: MEMFS.node_ops.setattr,
- lookup: MEMFS.node_ops.lookup,
- mknod: MEMFS.node_ops.mknod,
- mknod: MEMFS.node_ops.mknod,
- rename: MEMFS.node_ops.rename,
- unlink: MEMFS.node_ops.unlink,
- rmdir: MEMFS.node_ops.rmdir,
- readdir: MEMFS.node_ops.readdir,
- symlink: MEMFS.node_ops.symlink
- },
- stream: {
- llseek: MEMFS.stream_ops.llseek
- }
- },
- file: {
- node: {
- getattr: MEMFS.node_ops.getattr,
- setattr: MEMFS.node_ops.setattr
- },
- stream: {
- llseek: MEMFS.stream_ops.llseek,
- read: MEMFS.stream_ops.read,
- write: MEMFS.stream_ops.write,
- allocate: MEMFS.stream_ops.allocate,
- mmap: MEMFS.stream_ops.mmap
- }
- },
- link: {
- node: {
- getattr: MEMFS.node_ops.getattr,
- setattr: MEMFS.node_ops.setattr,
- readlink: MEMFS.node_ops.readlink
- },
- stream: {}
- },
- chrdev: {
- node: {
- getattr: MEMFS.node_ops.getattr,
- setattr: MEMFS.node_ops.setattr
- },
- stream: FS.chrdev_stream_ops
- },
- };
- }
- var node = FS.createNode(parent, name, mode, dev);
- if (FS.isDir(node.mode)) {
- node.node_ops = MEMFS.ops_table.dir.node;
- node.stream_ops = MEMFS.ops_table.dir.stream;
- node.contents = {};
- } else if (FS.isFile(node.mode)) {
- node.node_ops = MEMFS.ops_table.file.node;
- node.stream_ops = MEMFS.ops_table.file.stream;
- node.contents = [];
- node.contentMode = MEMFS.CONTENT_FLEXIBLE;
- } else if (FS.isLink(node.mode)) {
- node.node_ops = MEMFS.ops_table.link.node;
- node.stream_ops = MEMFS.ops_table.link.stream;
- } else if (FS.isChrdev(node.mode)) {
- node.node_ops = MEMFS.ops_table.chrdev.node;
- node.stream_ops = MEMFS.ops_table.chrdev.stream;
- }
- node.timestamp = Date.now();
- // add the new node to the parent
- if (parent) {
- parent.contents[name] = node;
- }
- return node;
- },ensureFlexible:function (node) {
- if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) {
- var contents = node.contents;
- node.contents = Array.prototype.slice.call(contents);
- node.contentMode = MEMFS.CONTENT_FLEXIBLE;
- }
- },node_ops:{getattr:function (node) {
- var attr = {};
- // device numbers reuse inode numbers.
- attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
- attr.ino = node.id;
- attr.mode = node.mode;
- attr.nlink = 1;
- attr.uid = 0;
- attr.gid = 0;
- attr.rdev = node.rdev;
- if (FS.isDir(node.mode)) {
- attr.size = 4096;
- } else if (FS.isFile(node.mode)) {
- attr.size = node.contents.length;
- } else if (FS.isLink(node.mode)) {
- attr.size = node.link.length;
- } else {
- attr.size = 0;
- }
- attr.atime = new Date(node.timestamp);
- attr.mtime = new Date(node.timestamp);
- attr.ctime = new Date(node.timestamp);
- // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
- // but this is not required by the standard.
- attr.blksize = 4096;
- attr.blocks = Math.ceil(attr.size / attr.blksize);
- return attr;
- },setattr:function (node, attr) {
- if (attr.mode !== undefined) {
- node.mode = attr.mode;
- }
- if (attr.timestamp !== undefined) {
- node.timestamp = attr.timestamp;
- }
- if (attr.size !== undefined) {
- MEMFS.ensureFlexible(node);
- var contents = node.contents;
- if (attr.size < contents.length) contents.length = attr.size;
- else while (attr.size > contents.length) contents.push(0);
- }
- },lookup:function (parent, name) {
- throw FS.genericErrors[ERRNO_CODES.ENOENT];
- },mknod:function (parent, name, mode, dev) {
- return MEMFS.createNode(parent, name, mode, dev);
- },rename:function (old_node, new_dir, new_name) {
- // if we're overwriting a directory at new_name, make sure it's empty.
- if (FS.isDir(old_node.mode)) {
- var new_node;
- try {
- new_node = FS.lookupNode(new_dir, new_name);
- } catch (e) {
- }
- if (new_node) {
- for (var i in new_node.contents) {
- throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
- }
- }
- }
- // do the internal rewiring
- delete old_node.parent.contents[old_node.name];
- old_node.name = new_name;
- new_dir.contents[new_name] = old_node;
- old_node.parent = new_dir;
- },unlink:function (parent, name) {
- delete parent.contents[name];
- },rmdir:function (parent, name) {
- var node = FS.lookupNode(parent, name);
- for (var i in node.contents) {
- throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
- }
- delete parent.contents[name];
- },readdir:function (node) {
- var entries = ['.', '..']
- for (var key in node.contents) {
- if (!node.contents.hasOwnProperty(key)) {
- continue;
- }
- entries.push(key);
- }
- return entries;
- },symlink:function (parent, newname, oldpath) {
- var node = MEMFS.createNode(parent, newname, 0777 | 40960, 0);
- node.link = oldpath;
- return node;
- },readlink:function (node) {
- if (!FS.isLink(node.mode)) {
- throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
- }
- return node.link;
- }},stream_ops:{read:function (stream, buffer, offset, length, position) {
- var contents = stream.node.contents;
- if (position >= contents.length)
- return 0;
- var size = Math.min(contents.length - position, length);
- assert(size >= 0);
- if (size > 8 && contents.subarray) { // non-trivial, and typed array
- buffer.set(contents.subarray(position, position + size), offset);
- } else
- {
- for (var i = 0; i < size; i++) {
- buffer[offset + i] = contents[position + i];
- }
- }
- return size;
- },write:function (stream, buffer, offset, length, position, canOwn) {
- var node = stream.node;
- node.timestamp = Date.now();
- var contents = node.contents;
- if (length && contents.length === 0 && position === 0 && buffer.subarray) {
- // just replace it with the new data
- assert(buffer.length);
- if (canOwn && offset === 0) {
- node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source.
- node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED;
- } else {
- node.contents = new Uint8Array(buffer.subarray(offset, offset+length));
- node.contentMode = MEMFS.CONTENT_FIXED;
- }
- return length;
- }
- MEMFS.ensureFlexible(node);
- var contents = node.contents;
- while (contents.length < position) contents.push(0);
- for (var i = 0; i < length; i++) {
- contents[position + i] = buffer[offset + i];
- }
- return length;
- },llseek:function (stream, offset, whence) {
- var position = offset;
- if (whence === 1) { // SEEK_CUR.
- position += stream.position;
- } else if (whence === 2) { // SEEK_END.
- if (FS.isFile(stream.node.mode)) {
- position += stream.node.contents.length;
- }
- }
- if (position < 0) {
- throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
- }
- stream.ungotten = [];
- stream.position = position;
- return position;
- },allocate:function (stream, offset, length) {
- MEMFS.ensureFlexible(stream.node);
- var contents = stream.node.contents;
- var limit = offset + length;
- while (limit > contents.length) contents.push(0);
- },mmap:function (stream, buffer, offset, length, position, prot, flags) {
- if (!FS.isFile(stream.node.mode)) {
- throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
- }
- var ptr;
- var allocated;
- var contents = stream.node.contents;
- // Only make a new copy when MAP_PRIVATE is specified.
- if ( !(flags & 2) &&
- (contents.buffer === buffer || contents.buffer === buffer.buffer) ) {
- // We can't emulate MAP_SHARED when the file is not backed by the buffer
- // we're mapping to (e.g. the HEAP buffer).
- allocated = false;
- ptr = contents.byteOffset;
- } else {
- // Try to avoid unnecessary slices.
- if (position > 0 || position + length < contents.length) {
- if (contents.subarray) {
- contents = contents.subarray(position, position + length);
- } else {
- contents = Array.prototype.slice.call(contents, position, position + length);
- }
- }
- allocated = true;
- ptr = _malloc(length);
- if (!ptr) {
- throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
- }
- buffer.set(contents, ptr);
- }
- return { ptr: ptr, allocated: allocated };
- }}};
-
- var IDBFS={dbs:{},indexedDB:function () {
- return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
- },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",mount:function (mount) {
- return MEMFS.mount.apply(null, arguments);
- },syncfs:function (mount, populate, callback) {
- IDBFS.getLocalSet(mount, function(err, local) {
- if (err) return callback(err);
-
- IDBFS.getRemoteSet(mount, function(err, remote) {
- if (err) return callback(err);
-
- var src = populate ? remote : local;
- var dst = populate ? local : remote;
-
- IDBFS.reconcile(src, dst, callback);
- });
- });
- },reconcile:function (src, dst, callback) {
- var total = 0;
-
- var create = {};
- for (var key in src.files) {
- if (!src.files.hasOwnProperty(key)) continue;
- var e = src.files[key];
- var e2 = dst.files[key];
- if (!e2 || e.timestamp > e2.timestamp) {
- create[key] = e;
- total++;
- }
- }
-
- var remove = {};
- for (var key in dst.files) {
- if (!dst.files.hasOwnProperty(key)) continue;
- var e = dst.files[key];
- var e2 = src.files[key];
- if (!e2) {
- remove[key] = e;
- total++;
- }
- }
-
- if (!total) {
- // early out
- return callback(null);
- }
-
- var completed = 0;
- function done(err) {
- if (err) return callback(err);
- if (++completed >= total) {
- return callback(null);
- }
- };
-
- // create a single transaction to handle and IDB reads / writes we'll need to do
- var db = src.type === 'remote' ? src.db : dst.db;
- var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');
- transaction.onerror = function transaction_onerror() { callback(this.error); };
- var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
-
- for (var path in create) {
- if (!create.hasOwnProperty(path)) continue;
- var entry = create[path];
-
- if (dst.type === 'local') {
- // save file to local
- try {
- if (FS.isDir(entry.mode)) {
- FS.mkdir(path, entry.mode);
- } else if (FS.isFile(entry.mode)) {
- var stream = FS.open(path, 'w+', 0666);
- FS.write(stream, entry.contents, 0, entry.contents.length, 0, true /* canOwn */);
- FS.close(stream);
- }
- done(null);
- } catch (e) {
- return done(e);
- }
- } else {
- // save file to IDB
- var req = store.put(entry, path);
- req.onsuccess = function req_onsuccess() { done(null); };
- req.onerror = function req_onerror() { done(this.error); };
- }
- }
-
- for (var path in remove) {
- if (!remove.hasOwnProperty(path)) continue;
- var entry = remove[path];
-
- if (dst.type === 'local') {
- // delete file from local
- try {
- if (FS.isDir(entry.mode)) {
- // TODO recursive delete?
- FS.rmdir(path);
- } else if (FS.isFile(entry.mode)) {
- FS.unlink(path);
- }
- done(null);
- } catch (e) {
- return done(e);
- }
- } else {
- // delete file from IDB
- var req = store.delete(path);
- req.onsuccess = function req_onsuccess() { done(null); };
- req.onerror = function req_onerror() { done(this.error); };
- }
- }
- },getLocalSet:function (mount, callback) {
- var files = {};
-
- function isRealDir(p) {
- return p !== '.' && p !== '..';
- };
- function toAbsolute(root) {
- return function(p) {
- return PATH.join2(root, p);
- }
- };
-
- var check = FS.readdir(mount.mountpoint)
- .filter(isRealDir)
- .map(toAbsolute(mount.mountpoint));
-
- while (check.length) {
- var path = check.pop();
- var stat, node;
-
- try {
- var lookup = FS.lookupPath(path);
- node = lookup.node;
- stat = FS.stat(path);
- } catch (e) {
- return callback(e);
- }
-
- if (FS.isDir(stat.mode)) {
- check.push.apply(check, FS.readdir(path)
- .filter(isRealDir)
- .map(toAbsolute(path)));
-
- files[path] = { mode: stat.mode, timestamp: stat.mtime };
- } else if (FS.isFile(stat.mode)) {
- files[path] = { contents: node.contents, mode: stat.mode, timestamp: stat.mtime };
- } else {
- return callback(new Error('node type not supported'));
- }
- }
-
- return callback(null, { type: 'local', files: files });
- },getDB:function (name, callback) {
- // look it up in the cache
- var db = IDBFS.dbs[name];
- if (db) {
- return callback(null, db);
- }
- var req;
- try {
- req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
- } catch (e) {
- return onerror(e);
- }
- req.onupgradeneeded = function req_onupgradeneeded() {
- db = req.result;
- db.createObjectStore(IDBFS.DB_STORE_NAME);
- };
- req.onsuccess = function req_onsuccess() {
- db = req.result;
- // add to the cache
- IDBFS.dbs[name] = db;
- callback(null, db);
- };
- req.onerror = function req_onerror() {
- callback(this.error);
- };
- },getRemoteSet:function (mount, callback) {
- var files = {};
-
- IDBFS.getDB(mount.mountpoint, function(err, db) {
- if (err) return callback(err);
-
- var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');
- transaction.onerror = function transaction_onerror() { callback(this.error); };
-
- var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
- store.openCursor().onsuccess = function store_openCursor_onsuccess(event) {
- var cursor = event.target.result;
- if (!cursor) {
- return callback(null, { type: 'remote', db: db, files: files });
- }
-
- files[cursor.key] = cursor.value;
- cursor.continue();
- };
- });
- }};
-
- var NODEFS={isWindows:false,staticInit:function () {
- NODEFS.isWindows = !!process.platform.match(/^win/);
- },mount:function (mount) {
- assert(ENVIRONMENT_IS_NODE);
- return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0);
- },createNode:function (parent, name, mode, dev) {
- if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
- throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
- }
- var node = FS.createNode(parent, name, mode);
- node.node_ops = NODEFS.node_ops;
- node.stream_ops = NODEFS.stream_ops;
- return node;
- },getMode:function (path) {
- var stat;
- try {
- stat = fs.lstatSync(path);
- if (NODEFS.isWindows) {
- // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so
- // propagate write bits to execute bits.
- stat.mode = stat.mode | ((stat.mode & 146) >> 1);
- }
- } catch (e) {
- if (!e.code) throw e;
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- return stat.mode;
- },realPath:function (node) {
- var parts = [];
- while (node.parent !== node) {
- parts.push(node.name);
- node = node.parent;
- }
- parts.push(node.mount.opts.root);
- parts.reverse();
- return PATH.join.apply(null, parts);
- },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) {
- if (flags in NODEFS.flagsToPermissionStringMap) {
- return NODEFS.flagsToPermissionStringMap[flags];
- } else {
- return flags;
- }
- },node_ops:{getattr:function (node) {
- var path = NODEFS.realPath(node);
- var stat;
- try {
- stat = fs.lstatSync(path);
- } catch (e) {
- if (!e.code) throw e;
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096.
- // See http://support.microsoft.com/kb/140365
- if (NODEFS.isWindows && !stat.blksize) {
- stat.blksize = 4096;
- }
- if (NODEFS.isWindows && !stat.blocks) {
- stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0;
- }
- return {
- dev: stat.dev,
- ino: stat.ino,
- mode: stat.mode,
- nlink: stat.nlink,
- uid: stat.uid,
- gid: stat.gid,
- rdev: stat.rdev,
- size: stat.size,
- atime: stat.atime,
- mtime: stat.mtime,
- ctime: stat.ctime,
- blksize: stat.blksize,
- blocks: stat.blocks
- };
- },setattr:function (node, attr) {
- var path = NODEFS.realPath(node);
- try {
- if (attr.mode !== undefined) {
- fs.chmodSync(path, attr.mode);
- // update the common node structure mode as well
- node.mode = attr.mode;
- }
- if (attr.timestamp !== undefined) {
- var date = new Date(attr.timestamp);
- fs.utimesSync(path, date, date);
- }
- if (attr.size !== undefined) {
- fs.truncateSync(path, attr.size);
- }
- } catch (e) {
- if (!e.code) throw e;
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- },lookup:function (parent, name) {
- var path = PATH.join2(NODEFS.realPath(parent), name);
- var mode = NODEFS.getMode(path);
- return NODEFS.createNode(parent, name, mode);
- },mknod:function (parent, name, mode, dev) {
- var node = NODEFS.createNode(parent, name, mode, dev);
- // create the backing node for this in the fs root as well
- var path = NODEFS.realPath(node);
- try {
- if (FS.isDir(node.mode)) {
- fs.mkdirSync(path, node.mode);
- } else {
- fs.writeFileSync(path, '', { mode: node.mode });
- }
- } catch (e) {
- if (!e.code) throw e;
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- return node;
- },rename:function (oldNode, newDir, newName) {
- var oldPath = NODEFS.realPath(oldNode);
- var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
- try {
- fs.renameSync(oldPath, newPath);
- } catch (e) {
- if (!e.code) throw e;
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- },unlink:function (parent, name) {
- var path = PATH.join2(NODEFS.realPath(parent), name);
- try {
- fs.unlinkSync(path);
- } catch (e) {
- if (!e.code) throw e;
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- },rmdir:function (parent, name) {
- var path = PATH.join2(NODEFS.realPath(parent), name);
- try {
- fs.rmdirSync(path);
- } catch (e) {
- if (!e.code) throw e;
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- },readdir:function (node) {
- var path = NODEFS.realPath(node);
- try {
- return fs.readdirSync(path);
- } catch (e) {
- if (!e.code) throw e;
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- },symlink:function (parent, newName, oldPath) {
- var newPath = PATH.join2(NODEFS.realPath(parent), newName);
- try {
- fs.symlinkSync(oldPath, newPath);
- } catch (e) {
- if (!e.code) throw e;
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- },readlink:function (node) {
- var path = NODEFS.realPath(node);
- try {
- return fs.readlinkSync(path);
- } catch (e) {
- if (!e.code) throw e;
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- }},stream_ops:{open:function (stream) {
- var path = NODEFS.realPath(stream.node);
- try {
- if (FS.isFile(stream.node.mode)) {
- stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));
- }
- } catch (e) {
- if (!e.code) throw e;
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- },close:function (stream) {
- try {
- if (FS.isFile(stream.node.mode) && stream.nfd) {
- fs.closeSync(stream.nfd);
- }
- } catch (e) {
- if (!e.code) throw e;
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- },read:function (stream, buffer, offset, length, position) {
- // FIXME this is terrible.
- var nbuffer = new Buffer(length);
- var res;
- try {
- res = fs.readSync(stream.nfd, nbuffer, 0, length, position);
- } catch (e) {
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- if (res > 0) {
- for (var i = 0; i < res; i++) {
- buffer[offset + i] = nbuffer[i];
- }
- }
- return res;
- },write:function (stream, buffer, offset, length, position) {
- // FIXME this is terrible.
- var nbuffer = new Buffer(buffer.subarray(offset, offset + length));
- var res;
- try {
- res = fs.writeSync(stream.nfd, nbuffer, 0, length, position);
- } catch (e) {
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- return res;
- },llseek:function (stream, offset, whence) {
- var position = offset;
- if (whence === 1) { // SEEK_CUR.
- position += stream.position;
- } else if (whence === 2) { // SEEK_END.
- if (FS.isFile(stream.node.mode)) {
- try {
- var stat = fs.fstatSync(stream.nfd);
- position += stat.size;
- } catch (e) {
- throw new FS.ErrnoError(ERRNO_CODES[e.code]);
- }
- }
- }
-
- if (position < 0) {
- throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
- }
-
- stream.position = position;
- return position;
- }}};
-
- var _stdin=allocate(1, "i32*", ALLOC_STATIC);
-
- var _stdout=allocate(1, "i32*", ALLOC_STATIC);
-
- var _stderr=allocate(1, "i32*", ALLOC_STATIC);
-
- function _fflush(stream) {
- // int fflush(FILE *stream);
- // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html
- // we don't currently perform any user-space buffering of data
- }var FS={root:null,mounts:[],devices:[null],streams:[null],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) {
- if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace();
- return ___setErrNo(e.errno);
- },lookupPath:function (path, opts) {
- path = PATH.resolve(FS.cwd(), path);
- opts = opts || { recurse_count: 0 };
-
- if (opts.recurse_count > 8) { // max recursive lookup of 8
- throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
- }
-
- // split the path
- var parts = PATH.normalizeArray(path.split('/').filter(function(p) {
- return !!p;
- }), false);
-
- // start at the root
- var current = FS.root;
- var current_path = '/';
-
- for (var i = 0; i < parts.length; i++) {
- var islast = (i === parts.length-1);
- if (islast && opts.parent) {
- // stop resolving
- break;
- }
-
- current = FS.lookupNode(current, parts[i]);
- current_path = PATH.join2(current_path, parts[i]);
-
- // jump to the mount's root node if this is a mountpoint
- if (FS.isMountpoint(current)) {
- current = current.mount.root;
- }
-
- // follow symlinks
- // by default, lookupPath will not follow a symlink if it is the final path component.
- // setting opts.follow = true will override this behavior.
- if (!islast || opts.follow) {
- var count = 0;
- while (FS.isLink(current.mode)) {
- var link = FS.readlink(current_path);
- current_path = PATH.resolve(PATH.dirname(current_path), link);
-
- var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count });
- current = lookup.node;
-
- if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX).
- throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
- }
- }
- }
- }
-
- return { path: current_path, node: current };
- },getPath:function (node) {
- var path;
- while (true) {
- if (FS.isRoot(node)) {
- var mount = node.mount.mountpoint;
- if (!path) return mount;
- return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path;
- }
- path = path ? node.name + '/' + path : node.name;
- node = node.parent;
- }
- },hashName:function (parentid, name) {
- var hash = 0;
-
-
- for (var i = 0; i < name.length; i++) {
- hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;
- }
- return ((parentid + hash) >>> 0) % FS.nameTable.length;
- },hashAddNode:function (node) {
- var hash = FS.hashName(node.parent.id, node.name);
- node.name_next = FS.nameTable[hash];
- FS.nameTable[hash] = node;
- },hashRemoveNode:function (node) {
- var hash = FS.hashName(node.parent.id, node.name);
- if (FS.nameTable[hash] === node) {
- FS.nameTable[hash] = node.name_next;
- } else {
- var current = FS.nameTable[hash];
- while (current) {
- if (current.name_next === node) {
- current.name_next = node.name_next;
- break;
- }
- current = current.name_next;
- }
- }
- },lookupNode:function (parent, name) {
- var err = FS.mayLookup(parent);
- if (err) {
- throw new FS.ErrnoError(err);
- }
- var hash = FS.hashName(parent.id, name);
- for (var node = FS.nameTable[hash]; node; node = node.name_next) {
- var nodeName = node.name;
- if (node.parent.id === parent.id && nodeName === name) {
- return node;
- }
- }
- // if we failed to find it in the cache, call into the VFS
- return FS.lookup(parent, name);
- },createNode:function (parent, name, mode, rdev) {
- if (!FS.FSNode) {
- FS.FSNode = function(parent, name, mode, rdev) {
- this.id = FS.nextInode++;
- this.name = name;
- this.mode = mode;
- this.node_ops = {};
- this.stream_ops = {};
- this.rdev = rdev;
- this.parent = null;
- this.mount = null;
- if (!parent) {
- parent = this; // root node sets parent to itself
- }
- this.parent = parent;
- this.mount = parent.mount;
- FS.hashAddNode(this);
- };
-
- // compatibility
- var readMode = 292 | 73;
- var writeMode = 146;
-
- FS.FSNode.prototype = {};
-
- // NOTE we must use Object.defineProperties instead of individual calls to
- // Object.defineProperty in order to make closure compiler happy
- Object.defineProperties(FS.FSNode.prototype, {
- read: {
- get: function() { return (this.mode & readMode) === readMode; },
- set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; }
- },
- write: {
- get: function() { return (this.mode & writeMode) === writeMode; },
- set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; }
- },
- isFolder: {
- get: function() { return FS.isDir(this.mode); },
- },
- isDevice: {
- get: function() { return FS.isChrdev(this.mode); },
- },
- });
- }
- return new FS.FSNode(parent, name, mode, rdev);
- },destroyNode:function (node) {
- FS.hashRemoveNode(node);
- },isRoot:function (node) {
- return node === node.parent;
- },isMountpoint:function (node) {
- return node.mounted;
- },isFile:function (mode) {
- return (mode & 61440) === 32768;
- },isDir:function (mode) {
- return (mode & 61440) === 16384;
- },isLink:function (mode) {
- return (mode & 61440) === 40960;
- },isChrdev:function (mode) {
- return (mode & 61440) === 8192;
- },isBlkdev:function (mode) {
- return (mode & 61440) === 24576;
- },isFIFO:function (mode) {
- return (mode & 61440) === 4096;
- },isSocket:function (mode) {
- return (mode & 49152) === 49152;
- },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) {
- var flags = FS.flagModes[str];
- if (typeof flags === 'undefined') {
- throw new Error('Unknown file open mode: ' + str);
- }
- return flags;
- },flagsToPermissionString:function (flag) {
- var accmode = flag & 2097155;
- var perms = ['r', 'w', 'rw'][accmode];
- if ((flag & 512)) {
- perms += 'w';
- }
- return perms;
- },nodePermissions:function (node, perms) {
- if (FS.ignorePermissions) {
- return 0;
- }
- // return 0 if any user, group or owner bits are set.
- if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {
- return ERRNO_CODES.EACCES;
- } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {
- return ERRNO_CODES.EACCES;
- } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {
- return ERRNO_CODES.EACCES;
- }
- return 0;
- },mayLookup:function (dir) {
- return FS.nodePermissions(dir, 'x');
- },mayCreate:function (dir, name) {
- try {
- var node = FS.lookupNode(dir, name);
- return ERRNO_CODES.EEXIST;
- } catch (e) {
- }
- return FS.nodePermissions(dir, 'wx');
- },mayDelete:function (dir, name, isdir) {
- var node;
- try {
- node = FS.lookupNode(dir, name);
- } catch (e) {
- return e.errno;
- }
- var err = FS.nodePermissions(dir, 'wx');
- if (err) {
- return err;
- }
- if (isdir) {
- if (!FS.isDir(node.mode)) {
- return ERRNO_CODES.ENOTDIR;
- }
- if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
- return ERRNO_CODES.EBUSY;
- }
- } else {
- if (FS.isDir(node.mode)) {
- return ERRNO_CODES.EISDIR;
- }
- }
- return 0;
- },mayOpen:function (node, flags) {
- if (!node) {
- return ERRNO_CODES.ENOENT;
- }
- if (FS.isLink(node.mode)) {
- return ERRNO_CODES.ELOOP;
- } else if (FS.isDir(node.mode)) {
- if ((flags & 2097155) !== 0 || // opening for write
- (flags & 512)) {
- return ERRNO_CODES.EISDIR;
- }
- }
- return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
- },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) {
- fd_start = fd_start || 1;
- fd_end = fd_end || FS.MAX_OPEN_FDS;
- for (var fd = fd_start; fd <= fd_end; fd++) {
- if (!FS.streams[fd]) {
- return fd;
- }
- }
- throw new FS.ErrnoError(ERRNO_CODES.EMFILE);
- },getStream:function (fd) {
- return FS.streams[fd];
- },createStream:function (stream, fd_start, fd_end) {
- if (!FS.FSStream) {
- FS.FSStream = function(){};
- FS.FSStream.prototype = {};
- // compatibility
- Object.defineProperties(FS.FSStream.prototype, {
- object: {
- get: function() { return this.node; },
- set: function(val) { this.node = val; }
- },
- isRead: {
- get: function() { return (this.flags & 2097155) !== 1; }
- },
- isWrite: {
- get: function() { return (this.flags & 2097155) !== 0; }
- },
- isAppend: {
- get: function() { return (this.flags & 1024); }
- }
- });
- }
- if (stream.__proto__) {
- // reuse the object
- stream.__proto__ = FS.FSStream.prototype;
- } else {
- var newStream = new FS.FSStream();
- for (var p in stream) {
- newStream[p] = stream[p];
- }
- stream = newStream;
- }
- var fd = FS.nextfd(fd_start, fd_end);
- stream.fd = fd;
- FS.streams[fd] = stream;
- return stream;
- },closeStream:function (fd) {
- FS.streams[fd] = null;
- },chrdev_stream_ops:{open:function (stream) {
- var device = FS.getDevice(stream.node.rdev);
- // override node's stream ops with the device's
- stream.stream_ops = device.stream_ops;
- // forward the open call
- if (stream.stream_ops.open) {
- stream.stream_ops.open(stream);
- }
- },llseek:function () {
- throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
- }},major:function (dev) {
- return ((dev) >> 8);
- },minor:function (dev) {
- return ((dev) & 0xff);
- },makedev:function (ma, mi) {
- return ((ma) << 8 | (mi));
- },registerDevice:function (dev, ops) {
- FS.devices[dev] = { stream_ops: ops };
- },getDevice:function (dev) {
- return FS.devices[dev];
- },syncfs:function (populate, callback) {
- if (typeof(populate) === 'function') {
- callback = populate;
- populate = false;
- }
-
- var completed = 0;
- var total = FS.mounts.length;
- function done(err) {
- if (err) {
- return callback(err);
- }
- if (++completed >= total) {
- callback(null);
- }
- };
-
- // sync all mounts
- for (var i = 0; i < FS.mounts.length; i++) {
- var mount = FS.mounts[i];
- if (!mount.type.syncfs) {
- done(null);
- continue;
- }
- mount.type.syncfs(mount, populate, done);
- }
- },mount:function (type, opts, mountpoint) {
- var lookup;
- if (mountpoint) {
- lookup = FS.lookupPath(mountpoint, { follow: false });
- mountpoint = lookup.path; // use the absolute path
- }
- var mount = {
- type: type,
- opts: opts,
- mountpoint: mountpoint,
- root: null
- };
- // create a root node for the fs
- var root = type.mount(mount);
- root.mount = mount;
- mount.root = root;
- // assign the mount info to the mountpoint's node
- if (lookup) {
- lookup.node.mount = mount;
- lookup.node.mounted = true;
- // compatibility update FS.root if we mount to /
- if (mountpoint === '/') {
- FS.root = mount.root;
- }
- }
- // add to our cached list of mounts
- FS.mounts.push(mount);
- return root;
- },lookup:function (parent, name) {
- return parent.node_ops.lookup(parent, name);
- },mknod:function (path, mode, dev) {
- var lookup = FS.lookupPath(path, { parent: true });
- var parent = lookup.node;
- var name = PATH.basename(path);
- var err = FS.mayCreate(parent, name);
- if (err) {
- throw new FS.ErrnoError(err);
- }
- if (!parent.node_ops.mknod) {
- throw new FS.ErrnoError(ERRNO_CODES.EPERM);
- }
- return parent.node_ops.mknod(parent, name, mode, dev);
- },create:function (path, mode) {
- mode = mode !== undefined ? mode : 0666;
- mode &= 4095;
- mode |= 32768;
- return FS.mknod(path, mode, 0);
- },mkdir:function (path, mode) {
- mode = mode !== undefined ? mode : 0777;
- mode &= 511 | 512;
- mode |= 16384;
- return FS.mknod(path, mode, 0);
- },mkdev:function (path, mode, dev) {
- if (typeof(dev) === 'undefined') {
- dev = mode;
- mode = 0666;
- }
- mode |= 8192;
- return FS.mknod(path, mode, dev);
- },symlink:function (oldpath, newpath) {
- var lookup = FS.lookupPath(newpath, { parent: true });
- var parent = lookup.node;
- var newname = PATH.basename(newpath);
- var err = FS.mayCreate(parent, newname);
- if (err) {
- throw new FS.ErrnoError(err);
- }
- if (!parent.node_ops.symlink) {
- throw new FS.ErrnoError(ERRNO_CODES.EPERM);
- }
- return parent.node_ops.symlink(parent, newname, oldpath);
- },rename:function (old_path, new_path) {
- var old_dirname = PATH.dirname(old_path);
- var new_dirname = PATH.dirname(new_path);
- var old_name = PATH.basename(old_path);
- var new_name = PATH.basename(new_path);
- // parents must exist
- var lookup, old_dir, new_dir;
- try {
- lookup = FS.lookupPath(old_path, { parent: true });
- old_dir = lookup.node;
- lookup = FS.lookupPath(new_path, { parent: true });
- new_dir = lookup.node;
- } catch (e) {
- throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
- }
- // need to be part of the same mount
- if (old_dir.mount !== new_dir.mount) {
- throw new FS.ErrnoError(ERRNO_CODES.EXDEV);
- }
- // source must exist
- var old_node = FS.lookupNode(old_dir, old_name);
- // old path should not be an ancestor of the new path
- var relative = PATH.relative(old_path, new_dirname);
- if (relative.charAt(0) !== '.') {
- throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
- }
- // new path should not be an ancestor of the old path
- relative = PATH.relative(new_path, old_dirname);
- if (relative.charAt(0) !== '.') {
- throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
- }
- // see if the new path already exists
- var new_node;
- try {
- new_node = FS.lookupNode(new_dir, new_name);
- } catch (e) {
- // not fatal
- }
- // early out if nothing needs to change
- if (old_node === new_node) {
- return;
- }
- // we'll need to delete the old entry
- var isdir = FS.isDir(old_node.mode);
- var err = FS.mayDelete(old_dir, old_name, isdir);
- if (err) {
- throw new FS.ErrnoError(err);
- }
- // need delete permissions if we'll be overwriting.
- // need create permissions if new doesn't already exist.
- err = new_node ?
- FS.mayDelete(new_dir, new_name, isdir) :
- FS.mayCreate(new_dir, new_name);
- if (err) {
- throw new FS.ErrnoError(err);
- }
- if (!old_dir.node_ops.rename) {
- throw new FS.ErrnoError(ERRNO_CODES.EPERM);
- }
- if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {
- throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
- }
- // if we are going to change the parent, check write permissions
- if (new_dir !== old_dir) {
- err = FS.nodePermissions(old_dir, 'w');
- if (err) {
- throw new FS.ErrnoError(err);
- }
- }
- // remove the node from the lookup hash
- FS.hashRemoveNode(old_node);
- // do the underlying fs rename
- try {
- old_dir.node_ops.rename(old_node, new_dir, new_name);
- } catch (e) {
- throw e;
- } finally {
- // add the node back to the hash (in case node_ops.rename
- // changed its name)
- FS.hashAddNode(old_node);
- }
- },rmdir:function (path) {
- var lookup = FS.lookupPath(path, { parent: true });
- var parent = lookup.node;
- var name = PATH.basename(path);
- var node = FS.lookupNode(parent, name);
- var err = FS.mayDelete(parent, name, true);
- if (err) {
- throw new FS.ErrnoError(err);
- }
- if (!parent.node_ops.rmdir) {
- throw new FS.ErrnoError(ERRNO_CODES.EPERM);
- }
- if (FS.isMountpoint(node)) {
- throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
- }
- parent.node_ops.rmdir(parent, name);
- FS.destroyNode(node);
- },readdir:function (path) {
- var lookup = FS.lookupPath(path, { follow: true });
- var node = lookup.node;
- if (!node.node_ops.readdir) {
- throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
- }
- return node.node_ops.readdir(node);
- },unlink:function (path) {
- var lookup = FS.lookupPath(path, { parent: true });
- var parent = lookup.node;
- var name = PATH.basename(path);
- var node = FS.lookupNode(parent, name);
- var err = FS.mayDelete(parent, name, false);
- if (err) {
- // POSIX says unlink should set EPERM, not EISDIR
- if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM;
- throw new FS.ErrnoError(err);
- }
- if (!parent.node_ops.unlink) {
- throw new FS.ErrnoError(ERRNO_CODES.EPERM);
- }
- if (FS.isMountpoint(node)) {
- throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
- }
- parent.node_ops.unlink(parent, name);
- FS.destroyNode(node);
- },readlink:function (path) {
- var lookup = FS.lookupPath(path, { follow: false });
- var link = lookup.node;
- if (!link.node_ops.readlink) {
- throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
- }
- return link.node_ops.readlink(link);
- },stat:function (path, dontFollow) {
- var lookup = FS.lookupPath(path, { follow: !dontFollow });
- var node = lookup.node;
- if (!node.node_ops.getattr) {
- throw new FS.ErrnoError(ERRNO_CODES.EPERM);
- }
- return node.node_ops.getattr(node);
- },lstat:function (path) {
- return FS.stat(path, true);
- },chmod:function (path, mode, dontFollow) {
- var node;
- if (typeof path === 'string') {
- var lookup = FS.lookupPath(path, { follow: !dontFollow });
- node = lookup.node;
- } else {
- node = path;
- }
- if (!node.node_ops.setattr) {
- throw new FS.ErrnoError(ERRNO_CODES.EPERM);
- }
- node.node_ops.setattr(node, {
- mode: (mode & 4095) | (node.mode & ~4095),
- timestamp: Date.now()
- });
- },lchmod:function (path, mode) {
- FS.chmod(path, mode, true);
- },fchmod:function (fd, mode) {
- var stream = FS.getStream(fd);
- if (!stream) {
- throw new FS.ErrnoError(ERRNO_CODES.EBADF);
- }
- FS.chmod(stream.node, mode);
- },chown:function (path, uid, gid, dontFollow) {
- var node;
- if (typeof path === 'string') {
- var lookup = FS.lookupPath(path, { follow: !dontFollow });
- node = lookup.node;
- } else {
- node = path;
- }
- if (!node.node_ops.setattr) {
- throw new FS.ErrnoError(ERRNO_CODES.EPERM);
- }
- node.node_ops.setattr(node, {
- timestamp: Date.now()
- // we ignore the uid / gid for now
- });
- },lchown:function (path, uid, gid) {
- FS.chown(path, uid, gid, true);
- },fchown:function (fd, uid, gid) {
- var stream = FS.getStream(fd);
- if (!stream) {
- throw new FS.ErrnoError(ERRNO_CODES.EBADF);
- }
- FS.chown(stream.node, uid, gid);
- },truncate:function (path, len) {
- if (len < 0) {
- throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
- }
- var node;
- if (typeof path === 'string') {
- var lookup = FS.lookupPath(path, { follow: true });
- node = lookup.node;
- } else {
- node = path;
- }
- if (!node.node_ops.setattr) {
- throw new FS.ErrnoError(ERRNO_CODES.EPERM);
- }
- if (FS.isDir(node.mode)) {
- throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
- }
- if (!FS.isFile(node.mode)) {
- throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
- }
- var err = FS.nodePermissions(node, 'w');
- if (err) {
- throw new FS.ErrnoError(err);
- }
- node.node_ops.setattr(node, {
- size: len,
- timestamp: Date.now()
- });
- },ftruncate:function (fd, len) {
- var stream = FS.getStream(fd);
- if (!stream) {
- throw new FS.ErrnoError(ERRNO_CODES.EBADF);
- }
- if ((stream.flags & 2097155) === 0) {
- throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
- }
- FS.truncate(stream.node, len);
- },utime:function (path, atime, mtime) {
- var lookup = FS.lookupPath(path, { follow: true });
- var node = lookup.node;
- node.node_ops.setattr(node, {
- timestamp: Math.max(atime, mtime)
- });
- },open:function (path, flags, mode, fd_start, fd_end) {
- flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;
- mode = typeof mode === 'undefined' ? 0666 : mode;
- if ((flags & 64)) {
- mode = (mode & 4095) | 32768;
- } else {
- mode = 0;
- }
- var node;
- if (typeof path === 'object') {
- node = path;
- } else {
- path = PATH.normalize(path);
- try {
- var lookup = FS.lookupPath(path, {
- follow: !(flags & 131072)
- });
- node = lookup.node;
- } catch (e) {
- // ignore
- }
- }
- // perhaps we need to create the node
- if ((flags & 64)) {
- if (node) {
- // if O_CREAT and O_EXCL are set, error out if the node already exists
- if ((flags & 128)) {
- throw new FS.ErrnoError(ERRNO_CODES.EEXIST);
- }
- } else {
- // node doesn't exist, try to create it
- node = FS.mknod(path, mode, 0);
- }
- }
- if (!node) {
- throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
- }
- // can't truncate a device
- if (FS.isChrdev(node.mode)) {
- flags &= ~512;
- }
- // check permissions
- var err = FS.mayOpen(node, flags);
- if (err) {
- throw new FS.ErrnoError(err);
- }
- // do truncation if necessary
- if ((flags & 512)) {
- FS.truncate(node, 0);
- }
- // we've already handled these, don't pass down to the underlying vfs
- flags &= ~(128 | 512);
-
- // register the stream with the filesystem
- var stream = FS.createStream({
- node: node,
- path: FS.getPath(node), // we want the absolute path to the node
- flags: flags,
- seekable: true,
- position: 0,
- stream_ops: node.stream_ops,
- // used by the file family libc calls (fopen, fwrite, ferror, etc.)
- ungotten: [],
- error: false
- }, fd_start, fd_end);
- // call the new stream's open function
- if (stream.stream_ops.open) {
- stream.stream_ops.open(stream);
- }
- if (Module['logReadFiles'] && !(flags & 1)) {
- if (!FS.readFiles) FS.readFiles = {};
- if (!(path in FS.readFiles)) {
- FS.readFiles[path] = 1;
- Module['printErr']('read file: ' + path);
- }
- }
- return stream;
- },close:function (stream) {
- try {
- if (stream.stream_ops.close) {
- stream.stream_ops.close(stream);
- }
- } catch (e) {
- throw e;
- } finally {
- FS.closeStream(stream.fd);
- }
- },llseek:function (stream, offset, whence) {
- if (!stream.seekable || !stream.stream_ops.llseek) {
- throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
- }
- return stream.stream_ops.llseek(stream, offset, whence);
- },read:function (stream, buffer, offset, length, position) {
- if (length < 0 || position < 0) {
- throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
- }
- if ((stream.flags & 2097155) === 1) {
- throw new FS.ErrnoError(ERRNO_CODES.EBADF);
- }
- if (FS.isDir(stream.node.mode)) {
- throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
- }
- if (!stream.stream_ops.read) {
- throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
- }
- var seeking = true;
- if (typeof position === 'undefined') {
- position = stream.position;
- seeking = false;
- } else if (!stream.seekable) {
- throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
- }
- var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
- if (!seeking) stream.position += bytesRead;
- return bytesRead;
- },write:function (stream, buffer, offset, length, position, canOwn) {
- if (length < 0 || position < 0) {
- throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
- }
- if ((stream.flags & 2097155) === 0) {
- throw new FS.ErrnoError(ERRNO_CODES.EBADF);
- }
- if (FS.isDir(stream.node.mode)) {
- throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
- }
- if (!stream.stream_ops.write) {
- throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
- }
- var seeking = true;
- if (typeof position === 'undefined') {
- position = stream.position;
- seeking = false;
- } else if (!stream.seekable) {
- throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
- }
- if (stream.flags & 1024) {
- // seek to the end before writing in append mode
- FS.llseek(stream, 0, 2);
- }
- var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
- if (!seeking) stream.position += bytesWritten;
- return bytesWritten;
- },allocate:function (stream, offset, length) {
- if (offset < 0 || length <= 0) {
- throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
- }
- if ((stream.flags & 2097155) === 0) {
- throw new FS.ErrnoError(ERRNO_CODES.EBADF);
- }
- if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
- throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
- }
- if (!stream.stream_ops.allocate) {
- throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
- }
- stream.stream_ops.allocate(stream, offset, length);
- },mmap:function (stream, buffer, offset, length, position, prot, flags) {
- // TODO if PROT is PROT_WRITE, make sure we have write access
- if ((stream.flags & 2097155) === 1) {
- throw new FS.ErrnoError(ERRNO_CODES.EACCES);
- }
- if (!stream.stream_ops.mmap) {
- throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
- }
- return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);
- },ioctl:function (stream, cmd, arg) {
- if (!stream.stream_ops.ioctl) {
- throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
- }
- return stream.stream_ops.ioctl(stream, cmd, arg);
- },readFile:function (path, opts) {
- opts = opts || {};
- opts.flags = opts.flags || 'r';
- opts.encoding = opts.encoding || 'binary';
- var ret;
- var stream = FS.open(path, opts.flags);
- var stat = FS.stat(path);
- var length = stat.size;
- var buf = new Uint8Array(length);
- FS.read(stream, buf, 0, length, 0);
- if (opts.encoding === 'utf8') {
- ret = '';
- var utf8 = new Runtime.UTF8Processor();
- for (var i = 0; i < length; i++) {
- ret += utf8.processCChar(buf[i]);
- }
- } else if (opts.encoding === 'binary') {
- ret = buf;
- } else {
- throw new Error('Invalid encoding type "' + opts.encoding + '"');
- }
- FS.close(stream);
- return ret;
- },writeFile:function (path, data, opts) {
- opts = opts || {};
- opts.flags = opts.flags || 'w';
- opts.encoding = opts.encoding || 'utf8';
- var stream = FS.open(path, opts.flags, opts.mode);
- if (opts.encoding === 'utf8') {
- var utf8 = new Runtime.UTF8Processor();
- var buf = new Uint8Array(utf8.processJSString(data));
- FS.write(stream, buf, 0, buf.length, 0);
- } else if (opts.encoding === 'binary') {
- FS.write(stream, data, 0, data.length, 0);
- } else {
- throw new Error('Invalid encoding type "' + opts.encoding + '"');
- }
- FS.close(stream);
- },cwd:function () {
- return FS.currentPath;
- },chdir:function (path) {
- var lookup = FS.lookupPath(path, { follow: true });
- if (!FS.isDir(lookup.node.mode)) {
- throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
- }
- var err = FS.nodePermissions(lookup.node, 'x');
- if (err) {
- throw new FS.ErrnoError(err);
- }
- FS.currentPath = lookup.path;
- },createDefaultDirectories:function () {
- FS.mkdir('/tmp');
- },createDefaultDevices:function () {
- // create /dev
- FS.mkdir('/dev');
- // setup /dev/null
- FS.registerDevice(FS.makedev(1, 3), {
- read: function() { return 0; },
- write: function() { return 0; }
- });
- FS.mkdev('/dev/null', FS.makedev(1, 3));
- // setup /dev/tty and /dev/tty1
- // stderr needs to print output using Module['printErr']
- // so we register a second tty just for it.
- TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
- TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
- FS.mkdev('/dev/tty', FS.makedev(5, 0));
- FS.mkdev('/dev/tty1', FS.makedev(6, 0));
- // we're not going to emulate the actual shm device,
- // just create the tmp dirs that reside in it commonly
- FS.mkdir('/dev/shm');
- FS.mkdir('/dev/shm/tmp');
- },createStandardStreams:function () {
- // TODO deprecate the old functionality of a single
- // input / output callback and that utilizes FS.createDevice
- // and instead require a unique set of stream ops
-
- // by default, we symlink the standard streams to the
- // default tty devices. however, if the standard streams
- // have been overwritten we create a unique device for
- // them instead.
- if (Module['stdin']) {
- FS.createDevice('/dev', 'stdin', Module['stdin']);
- } else {
- FS.symlink('/dev/tty', '/dev/stdin');
- }
- if (Module['stdout']) {
- FS.createDevice('/dev', 'stdout', null, Module['stdout']);
- } else {
- FS.symlink('/dev/tty', '/dev/stdout');
- }
- if (Module['stderr']) {
- FS.createDevice('/dev', 'stderr', null, Module['stderr']);
- } else {
- FS.symlink('/dev/tty1', '/dev/stderr');
- }
-
- // open default streams for the stdin, stdout and stderr devices
- var stdin = FS.open('/dev/stdin', 'r');
- HEAP32[((_stdin)>>2)]=stdin.fd;
- assert(stdin.fd === 1, 'invalid handle for stdin (' + stdin.fd + ')');
-
- var stdout = FS.open('/dev/stdout', 'w');
- HEAP32[((_stdout)>>2)]=stdout.fd;
- assert(stdout.fd === 2, 'invalid handle for stdout (' + stdout.fd + ')');
-
- var stderr = FS.open('/dev/stderr', 'w');
- HEAP32[((_stderr)>>2)]=stderr.fd;
- assert(stderr.fd === 3, 'invalid handle for stderr (' + stderr.fd + ')');
- },ensureErrnoError:function () {
- if (FS.ErrnoError) return;
- FS.ErrnoError = function ErrnoError(errno) {
- this.errno = errno;
- for (var key in ERRNO_CODES) {
- if (ERRNO_CODES[key] === errno) {
- this.code = key;
- break;
- }
- }
- this.message = ERRNO_MESSAGES[errno];
- if (this.stack) this.stack = demangleAll(this.stack);
- };
- FS.ErrnoError.prototype = new Error();
- FS.ErrnoError.prototype.constructor = FS.ErrnoError;
- // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info)
- [ERRNO_CODES.ENOENT].forEach(function(code) {
- FS.genericErrors[code] = new FS.ErrnoError(code);
- FS.genericErrors[code].stack = '<generic error, no stack>';
- });
- },staticInit:function () {
- FS.ensureErrnoError();
-
- FS.nameTable = new Array(4096);
-
- FS.root = FS.createNode(null, '/', 16384 | 0777, 0);
- FS.mount(MEMFS, {}, '/');
-
- FS.createDefaultDirectories();
- FS.createDefaultDevices();
- },init:function (input, output, error) {
- assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');
- FS.init.initialized = true;
-
- FS.ensureErrnoError();
-
- // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here
- Module['stdin'] = input || Module['stdin'];
- Module['stdout'] = output || Module['stdout'];
- Module['stderr'] = error || Module['stderr'];
-
- FS.createStandardStreams();
- },quit:function () {
- FS.init.initialized = false;
- for (var i = 0; i < FS.streams.length; i++) {
- var stream = FS.streams[i];
- if (!stream) {
- continue;
- }
- FS.close(stream);
- }
- },getMode:function (canRead, canWrite) {
- var mode = 0;
- if (canRead) mode |= 292 | 73;
- if (canWrite) mode |= 146;
- return mode;
- },joinPath:function (parts, forceRelative) {
- var path = PATH.join.apply(null, parts);
- if (forceRelative && path[0] == '/') path = path.substr(1);
- return path;
- },absolutePath:function (relative, base) {
- return PATH.resolve(base, relative);
- },standardizePath:function (path) {
- return PATH.normalize(path);
- },findObject:function (path, dontResolveLastLink) {
- var ret = FS.analyzePath(path, dontResolveLastLink);
- if (ret.exists) {
- return ret.object;
- } else {
- ___setErrNo(ret.error);
- return null;
- }
- },analyzePath:function (path, dontResolveLastLink) {
- // operate from within the context of the symlink's target
- try {
- var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
- path = lookup.path;
- } catch (e) {
- }
- var ret = {
- isRoot: false, exists: false, error: 0, name: null, path: null, object: null,
- parentExists: false, parentPath: null, parentObject: null
- };
- try {
- var lookup = FS.lookupPath(path, { parent: true });
- ret.parentExists = true;
- ret.parentPath = lookup.path;
- ret.parentObject = lookup.node;
- ret.name = PATH.basename(path);
- lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
- ret.exists = true;
- ret.path = lookup.path;
- ret.object = lookup.node;
- ret.name = lookup.node.name;
- ret.isRoot = lookup.path === '/';
- } catch (e) {
- ret.error = e.errno;
- };
- return ret;
- },createFolder:function (parent, name, canRead, canWrite) {
- var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
- var mode = FS.getMode(canRead, canWrite);
- return FS.mkdir(path, mode);
- },createPath:function (parent, path, canRead, canWrite) {
- parent = typeof parent === 'string' ? parent : FS.getPath(parent);
- var parts = path.split('/').reverse();
- while (parts.length) {
- var part = parts.pop();
- if (!part) continue;
- var current = PATH.join2(parent, part);
- try {
- FS.mkdir(current);
- } catch (e) {
- // ignore EEXIST
- }
- parent = current;
- }
- return current;
- },createFile:function (parent, name, properties, canRead, canWrite) {
- var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
- var mode = FS.getMode(canRead, canWrite);
- return FS.create(path, mode);
- },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) {
- var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent;
- var mode = FS.getMode(canRead, canWrite);
- var node = FS.create(path, mode);
- if (data) {
- if (typeof data === 'string') {
- var arr = new Array(data.length);
- for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
- data = arr;
- }
- // make sure we can write to the file
- FS.chmod(node, mode | 146);
- var stream = FS.open(node, 'w');
- FS.write(stream, data, 0, data.length, 0, canOwn);
- FS.close(stream);
- FS.chmod(node, mode);
- }
- return node;
- },createDevice:function (parent, name, input, output) {
- var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
- var mode = FS.getMode(!!input, !!output);
- if (!FS.createDevice.major) FS.createDevice.major = 64;
- var dev = FS.makedev(FS.createDevice.major++, 0);
- // Create a fake device that a set of stream ops to emulate
- // the old behavior.
- FS.registerDevice(dev, {
- open: function(stream) {
- stream.seekable = false;
- },
- close: function(stream) {
- // flush any pending line data
- if (output && output.buffer && output.buffer.length) {
- output(10);
- }
- },
- read: function(stream, buffer, offset, length, pos /* ignored */) {
- var bytesRead = 0;
- for (var i = 0; i < length; i++) {
- var result;
- try {
- result = input();
- } catch (e) {
- throw new FS.ErrnoError(ERRNO_CODES.EIO);
- }
- if (result === undefined && bytesRead === 0) {
- throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
- }
- if (result === null || result === undefined) break;
- bytesRead++;
- buffer[offset+i] = result;
- }
- if (bytesRead) {
- stream.node.timestamp = Date.now();
- }
- return bytesRead;
- },
- write: function(stream, buffer, offset, length, pos) {
- for (var i = 0; i < length; i++) {
- try {
- output(buffer[offset+i]);
- } catch (e) {
- throw new FS.ErrnoError(ERRNO_CODES.EIO);
- }
- }
- if (length) {
- stream.node.timestamp = Date.now();
- }
- return i;
- }
- });
- return FS.mkdev(path, mode, dev);
- },createLink:function (parent, name, target, canRead, canWrite) {
- var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
- return FS.symlink(target, path);
- },forceLoadFile:function (obj) {
- if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
- var success = true;
- if (typeof XMLHttpRequest !== 'undefined') {
- throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
- } else if (Module['read']) {
- // Command-line.
- try {
- // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as
- // read() will try to parse UTF8.
- obj.contents = intArrayFromString(Module['read'](obj.url), true);
- } catch (e) {
- success = false;
- }
- } else {
- throw new Error('Cannot load without read() or XMLHttpRequest.');
- }
- if (!success) ___setErrNo(ERRNO_CODES.EIO);
- return success;
- },createLazyFile:function (parent, name, url, canRead, canWrite) {
- if (typeof XMLHttpRequest !== 'undefined') {
- if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';
- // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.
- function LazyUint8Array() {
- this.lengthKnown = false;
- this.chunks = []; // Loaded chunks. Index is the chunk number
- }
- LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
- if (idx > this.length-1 || idx < 0) {
- return undefined;
- }
- var chunkOffset = idx % this.chunkSize;
- var chunkNum = Math.floor(idx / this.chunkSize);
- return this.getter(chunkNum)[chunkOffset];
- }
- LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
- this.getter = getter;
- }
- LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
- // Find length
- var xhr = new XMLHttpRequest();
- xhr.open('HEAD', url, false);
- xhr.send(null);
- if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
- var datalength = Number(xhr.getResponseHeader("Content-length"));
- var header;
- var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
- var chunkSize = 1024*1024; // Chunk size in bytes
-
- if (!hasByteServing) chunkSize = datalength;
-
- // Function to get a range from the remote URL.
- var doXHR = (function(from, to) {
- if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
- if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!");
-
- // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.
- var xhr = new XMLHttpRequest();
- xhr.open('GET', url, false);
- if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
-
- // Some hints to the browser that we want binary data.
- if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';
- if (xhr.overrideMimeType) {
- xhr.overrideMimeType('text/plain; charset=x-user-defined');
- }
-
- xhr.send(null);
- if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
- if (xhr.response !== undefined) {
- return new Uint8Array(xhr.response || []);
- } else {
- return intArrayFromString(xhr.responseText || '', true);
- }
- });
- var lazyArray = this;
- lazyArray.setDataGetter(function(chunkNum) {
- var start = chunkNum * chunkSize;
- var end = (chunkNum+1) * chunkSize - 1; // including this byte
- end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block
- if (typeof(lazyArray.chunks[chunkNum]) === "undefined") {
- lazyArray.chunks[chunkNum] = doXHR(start, end);
- }
- if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!");
- return lazyArray.chunks[chunkNum];
- });
-
- this._length = datalength;
- this._chunkSize = chunkSize;
- this.lengthKnown = true;
- }
-
- var lazyArray = new LazyUint8Array();
- Object.defineProperty(lazyArray, "length", {
- get: function() {
- if(!this.lengthKnown) {
- this.cacheLength();
- }
- return this._length;
- }
- });
- Object.defineProperty(lazyArray, "chunkSize", {
- get: function() {
- if(!this.lengthKnown) {
- this.cacheLength();
- }
- return this._chunkSize;
- }
- });
-
- var properties = { isDevice: false, contents: lazyArray };
- } else {
- var properties = { isDevice: false, url: url };
- }
-
- var node = FS.createFile(parent, name, properties, canRead, canWrite);
- // This is a total hack, but I want to get this lazy file code out of the
- // core of MEMFS. If we want to keep this lazy file concept I feel it should
- // be its own thin LAZYFS proxying calls to MEMFS.
- if (properties.contents) {
- node.contents = properties.contents;
- } else if (properties.url) {
- node.contents = null;
- node.url = properties.url;
- }
- // override each stream op with one that tries to force load the lazy file first
- var stream_ops = {};
- var keys = Object.keys(node.stream_ops);
- keys.forEach(function(key) {
- var fn = node.stream_ops[key];
- stream_ops[key] = function forceLoadLazyFile() {
- if (!FS.forceLoadFile(node)) {
- throw new FS.ErrnoError(ERRNO_CODES.EIO);
- }
- return fn.apply(null, arguments);
- };
- });
- // use a custom read function
- stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
- if (!FS.forceLoadFile(node)) {
- throw new FS.ErrnoError(ERRNO_CODES.EIO);
- }
- var contents = stream.node.contents;
- if (position >= contents.length)
- return 0;
- var size = Math.min(contents.length - position, length);
- assert(size >= 0);
- if (contents.slice) { // normal array
- for (var i = 0; i < size; i++) {
- buffer[offset + i] = contents[position + i];
- }
- } else {
- for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR
- buffer[offset + i] = contents.get(position + i);
- }
- }
- return size;
- };
- node.stream_ops = stream_ops;
- return node;
- },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) {
- Browser.init();
- // TODO we should allow people to just pass in a complete filename instead
- // of parent and name being that we just join them anyways
- var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;
- function processData(byteArray) {
- function finish(byteArray) {
- if (!dontCreateFile) {
- FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
- }
- if (onload) onload();
- removeRunDependency('cp ' + fullname);
- }
- var handled = false;
- Module['preloadPlugins'].forEach(function(plugin) {
- if (handled) return;
- if (plugin['canHandle'](fullname)) {
- plugin['handle'](byteArray, fullname, finish, function() {
- if (onerror) onerror();
- removeRunDependency('cp ' + fullname);
- });
- handled = true;
- }
- });
- if (!handled) finish(byteArray);
- }
- addRunDependency('cp ' + fullname);
- if (typeof url == 'string') {
- Browser.asyncLoad(url, function(byteArray) {
- processData(byteArray);
- }, onerror);
- } else {
- processData(url);
- }
- },indexedDB:function () {
- return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
- },DB_NAME:function () {
- return 'EM_FS_' + window.location.pathname;
- },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) {
- onload = onload || function(){};
- onerror = onerror || function(){};
- var indexedDB = FS.indexedDB();
- try {
- var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
- } catch (e) {
- return onerror(e);
- }
- openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
- console.log('creating db');
- var db = openRequest.result;
- db.createObjectStore(FS.DB_STORE_NAME);
- };
- openRequest.onsuccess = function openRequest_onsuccess() {
- var db = openRequest.result;
- var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');
- var files = transaction.objectStore(FS.DB_STORE_NAME);
- var ok = 0, fail = 0, total = paths.length;
- function finish() {
- if (fail == 0) onload(); else onerror();
- }
- paths.forEach(function(path) {
- var putRequest = files.put(FS.analyzePath(path).object.contents, path);
- putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() };
- putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() };
- });
- transaction.onerror = onerror;
- };
- openRequest.onerror = onerror;
- },loadFilesFromDB:function (paths, onload, onerror) {
- onload = onload || function(){};
- onerror = onerror || function(){};
- var indexedDB = FS.indexedDB();
- try {
- var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
- } catch (e) {
- return onerror(e);
- }
- openRequest.onupgradeneeded = onerror; // no database to load from
- openRequest.onsuccess = function openRequest_onsuccess() {
- var db = openRequest.result;
- try {
- var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');
- } catch(e) {
- onerror(e);
- return;
- }
- var files = transaction.objectStore(FS.DB_STORE_NAME);
- var ok = 0, fail = 0, total = paths.length;
- function finish() {
- if (fail == 0) onload(); else onerror();
- }
- paths.forEach(function(path) {
- var getRequest = files.get(path);
- getRequest.onsuccess = function getRequest_onsuccess() {
- if (FS.analyzePath(path).exists) {
- FS.unlink(path);
- }
- FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
- ok++;
- if (ok + fail == total) finish();
- };
- getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() };
- });
- transaction.onerror = onerror;
- };
- openRequest.onerror = onerror;
- }};var PATH={splitPath:function (filename) {
- var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
- return splitPathRe.exec(filename).slice(1);
- },normalizeArray:function (parts, allowAboveRoot) {
- // if the path tries to go above the root, `up` ends up > 0
- var up = 0;
- for (var i = parts.length - 1; i >= 0; i--) {
- var last = parts[i];
- if (last === '.') {
- parts.splice(i, 1);
- } else if (last === '..') {
- parts.splice(i, 1);
- up++;
- } else if (up) {
- parts.splice(i, 1);
- up--;
- }
- }
- // if the path is allowed to go above the root, restore leading ..s
- if (allowAboveRoot) {
- for (; up--; up) {
- parts.unshift('..');
- }
- }
- return parts;
- },normalize:function (path) {
- var isAbsolute = path.charAt(0) === '/',
- trailingSlash = path.substr(-1) === '/';
- // Normalize the path
- path = PATH.normalizeArray(path.split('/').filter(function(p) {
- return !!p;
- }), !isAbsolute).join('/');
- if (!path && !isAbsolute) {
- path = '.';
- }
- if (path && trailingSlash) {
- path += '/';
- }
- return (isAbsolute ? '/' : '') + path;
- },dirname:function (path) {
- var result = PATH.splitPath(path),
- root = result[0],
- dir = result[1];
- if (!root && !dir) {
- // No dirname whatsoever
- return '.';
- }
- if (dir) {
- // It has a dirname, strip trailing slash
- dir = dir.substr(0, dir.length - 1);
- }
- return root + dir;
- },basename:function (path) {
- // EMSCRIPTEN return '/'' for '/', not an empty string
- if (path === '/') return '/';
- var lastSlash = path.lastIndexOf('/');
- if (lastSlash === -1) return path;
- return path.substr(lastSlash+1);
- },extname:function (path) {
- return PATH.splitPath(path)[3];
- },join:function () {
- var paths = Array.prototype.slice.call(arguments, 0);
- return PATH.normalize(paths.join('/'));
- },join2:function (l, r) {
- return PATH.normalize(l + '/' + r);
- },resolve:function () {
- var resolvedPath = '',
- resolvedAbsolute = false;
- for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
- var path = (i >= 0) ? arguments[i] : FS.cwd();
- // Skip empty and invalid entries
- if (typeof path !== 'string') {
- throw new TypeError('Arguments to path.resolve must be strings');
- } else if (!path) {
- continue;
- }
- resolvedPath = path + '/' + resolvedPath;
- resolvedAbsolute = path.charAt(0) === '/';
- }
- // At this point the path should be resolved to a full absolute path, but
- // handle relative paths to be safe (might happen when process.cwd() fails)
- resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) {
- return !!p;
- }), !resolvedAbsolute).join('/');
- return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
- },relative:function (from, to) {
- from = PATH.resolve(from).substr(1);
- to = PATH.resolve(to).substr(1);
- function trim(arr) {
- var start = 0;
- for (; start < arr.length; start++) {
- if (arr[start] !== '') break;
- }
- var end = arr.length - 1;
- for (; end >= 0; end--) {
- if (arr[end] !== '') break;
- }
- if (start > end) return [];
- return arr.slice(start, end - start + 1);
- }
- var fromParts = trim(from.split('/'));
- var toParts = trim(to.split('/'));
- var length = Math.min(fromParts.length, toParts.length);
- var samePartsLength = length;
- for (var i = 0; i < length; i++) {
- if (fromParts[i] !== toParts[i]) {
- samePartsLength = i;
- break;
- }
- }
- var outputParts = [];
- for (var i = samePartsLength; i < fromParts.length; i++) {
- outputParts.push('..');
- }
- outputParts = outputParts.concat(toParts.slice(samePartsLength));
- return outputParts.join('/');
- }};var Browser={mainLoop:{scheduler:null,shouldPause:false,paused:false,queue:[],pause:function () {
- Browser.mainLoop.shouldPause = true;
- },resume:function () {
- if (Browser.mainLoop.paused) {
- Browser.mainLoop.paused = false;
- Browser.mainLoop.scheduler();
- }
- Browser.mainLoop.shouldPause = false;
- },updateStatus:function () {
- if (Module['setStatus']) {
- var message = Module['statusMessage'] || 'Please wait...';
- var remaining = Browser.mainLoop.remainingBlockers;
- var expected = Browser.mainLoop.expectedBlockers;
- if (remaining) {
- if (remaining < expected) {
- Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')');
- } else {
- Module['setStatus'](message);
- }
- } else {
- Module['setStatus']('');
- }
- }
- }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () {
- if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers
-
- if (Browser.initted || ENVIRONMENT_IS_WORKER) return;
- Browser.initted = true;
-
- try {
- new Blob();
- Browser.hasBlobConstructor = true;
- } catch(e) {
- Browser.hasBlobConstructor = false;
- console.log("warning: no blob constructor, cannot create blobs with mimetypes");
- }
- Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null));
- Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined;
- if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') {
- console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");
- Module.noImageDecoding = true;
- }
-
- // Support for plugins that can process preloaded files. You can add more of these to
- // your app by creating and appending to Module.preloadPlugins.
- //
- // Each plugin is asked if it can handle a file based on the file's name. If it can,
- // it is given the file's raw data. When it is done, it calls a callback with the file's
- // (possibly modified) data. For example, a plugin might decompress a file, or it
- // might create some side data structure for use later (like an Image element, etc.).
-
- var imagePlugin = {};
- imagePlugin['canHandle'] = function imagePlugin_canHandle(name) {
- return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name);
- };
- imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) {
- var b = null;
- if (Browser.hasBlobConstructor) {
- try {
- b = new Blob([byteArray], { type: Browser.getMimetype(name) });
- if (b.size !== byteArray.length) { // Safari bug #118630
- // Safari's Blob can only take an ArrayBuffer
- b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) });
- }
- } catch(e) {
- Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder');
- }
- }
- if (!b) {
- var bb = new Browser.BlobBuilder();
- bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range
- b = bb.getBlob();
- }
- var url = Browser.URLObject.createObjectURL(b);
- assert(typeof url == 'string', 'createObjectURL must return a url as a string');
- var img = new Image();
- img.onload = function img_onload() {
- assert(img.complete, 'Image ' + name + ' could not be decoded');
- var canvas = document.createElement('canvas');
- canvas.width = img.width;
- canvas.height = img.height;
- var ctx = canvas.getContext('2d');
- ctx.drawImage(img, 0, 0);
- Module["preloadedImages"][name] = canvas;
- Browser.URLObject.revokeObjectURL(url);
- if (onload) onload(byteArray);
- };
- img.onerror = function img_onerror(event) {
- console.log('Image ' + url + ' could not be decoded');
- if (onerror) onerror();
- };
- img.src = url;
- };
- Module['preloadPlugins'].push(imagePlugin);
-
- var audioPlugin = {};
- audioPlugin['canHandle'] = function audioPlugin_canHandle(name) {
- return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 };
- };
- audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) {
- var done = false;
- function finish(audio) {
- if (done) return;
- done = true;
- Module["preloadedAudios"][name] = audio;
- if (onload) onload(byteArray);
- }
- function fail() {
- if (done) return;
- done = true;
- Module["preloadedAudios"][name] = new Audio(); // empty shim
- if (onerror) onerror();
- }
- if (Browser.hasBlobConstructor) {
- try {
- var b = new Blob([byteArray], { type: Browser.getMimetype(name) });
- } catch(e) {
- return fail();
- }
- var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this!
- assert(typeof url == 'string', 'createObjectURL must return a url as a string');
- var audio = new Audio();
- audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926
- audio.onerror = function audio_onerror(event) {
- if (done) return;
- console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach');
- function encode64(data) {
- var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
- var PAD = '=';
- var ret = '';
- var leftchar = 0;
- var leftbits = 0;
- for (var i = 0; i < data.length; i++) {
- leftchar = (leftchar << 8) | data[i];
- leftbits += 8;
- while (leftbits >= 6) {
- var curr = (leftchar >> (leftbits-6)) & 0x3f;
- leftbits -= 6;
- ret += BASE[curr];
- }
- }
- if (leftbits == 2) {
- ret += BASE[(leftchar&3) << 4];
- ret += PAD + PAD;
- } else if (leftbits == 4) {
- ret += BASE[(leftchar&0xf) << 2];
- ret += PAD;
- }
- return ret;
- }
- audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray);
- finish(audio); // we don't wait for confirmation this worked - but it's worth trying
- };
- audio.src = url;
- // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror
- Browser.safeSetTimeout(function() {
- finish(audio); // try to use it even though it is not necessarily ready to play
- }, 10000);
- } else {
- return fail();
- }
- };
- Module['preloadPlugins'].push(audioPlugin);
-
- // Canvas event setup
-
- var canvas = Module['canvas'];
- canvas.requestPointerLock = canvas['requestPointerLock'] ||
- canvas['mozRequestPointerLock'] ||
- canvas['webkitRequestPointerLock'];
- canvas.exitPointerLock = document['exitPointerLock'] ||
- document['mozExitPointerLock'] ||
- document['webkitExitPointerLock'] ||
- function(){}; // no-op if function does not exist
- canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
-
- function pointerLockChange() {
- Browser.pointerLock = document['pointerLockElement'] === canvas ||
- document['mozPointerLockElement'] === canvas ||
- document['webkitPointerLockElement'] === canvas;
- }
-
- document.addEventListener('pointerlockchange', pointerLockChange, false);
- document.addEventListener('mozpointerlockchange', pointerLockChange, false);
- document.addEventListener('webkitpointerlockchange', pointerLockChange, false);
-
- if (Module['elementPointerLock']) {
- canvas.addEventListener("click", function(ev) {
- if (!Browser.pointerLock && canvas.requestPointerLock) {
- canvas.requestPointerLock();
- ev.preventDefault();
- }
- }, false);
- }
- },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) {
- var ctx;
- try {
- if (useWebGL) {
- var contextAttributes = {
- antialias: false,
- alpha: false
- };
-
- if (webGLContextAttributes) {
- for (var attribute in webGLContextAttributes) {
- contextAttributes[attribute] = webGLContextAttributes[attribute];
- }
- }
-
-
- var errorInfo = '?';
- function onContextCreationError(event) {
- errorInfo = event.statusMessage || errorInfo;
- }
- canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false);
- try {
- ['experimental-webgl', 'webgl'].some(function(webglId) {
- return ctx = canvas.getContext(webglId, contextAttributes);
- });
- } finally {
- canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false);
- }
- } else {
- ctx = canvas.getContext('2d');
- }
- if (!ctx) throw ':(';
- } catch (e) {
- Module.print('Could not create canvas: ' + [errorInfo, e]);
- return null;
- }
- if (useWebGL) {
- // Set the background of the WebGL canvas to black
- canvas.style.backgroundColor = "black";
-
- // Warn on context loss
- canvas.addEventListener('webglcontextlost', function(event) {
- alert('WebGL context lost. You will need to reload the page.');
- }, false);
- }
- if (setInModule) {
- GLctx = Module.ctx = ctx;
- Module.useWebGL = useWebGL;
- Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() });
- Browser.init();
- }
- return ctx;
- },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) {
- Browser.lockPointer = lockPointer;
- Browser.resizeCanvas = resizeCanvas;
- if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true;
- if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false;
-
- var canvas = Module['canvas'];
- function fullScreenChange() {
- Browser.isFullScreen = false;
- if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] ||
- document['mozFullScreenElement'] || document['mozFullscreenElement'] ||
- document['fullScreenElement'] || document['fullscreenElement']) === canvas) {
- canvas.cancelFullScreen = document['cancelFullScreen'] ||
- document['mozCancelFullScreen'] ||
- document['webkitCancelFullScreen'];
- canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document);
- if (Browser.lockPointer) canvas.requestPointerLock();
- Browser.isFullScreen = true;
- if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize();
- } else if (Browser.resizeCanvas){
- Browser.setWindowedCanvasSize();
- }
- if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen);
- }
-
- if (!Browser.fullScreenHandlersInstalled) {
- Browser.fullScreenHandlersInstalled = true;
- document.addEventListener('fullscreenchange', fullScreenChange, false);
- document.addEventListener('mozfullscreenchange', fullScreenChange, false);
- document.addEventListener('webkitfullscreenchange', fullScreenChange, false);
- }
-
- canvas.requestFullScreen = canvas['requestFullScreen'] ||
- canvas['mozRequestFullScreen'] ||
- (canvas['webkitRequestFullScreen'] ? function() { canvas['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null);
- canvas.requestFullScreen();
- },requestAnimationFrame:function requestAnimationFrame(func) {
- if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js)
- setTimeout(func, 1000/60);
- } else {
- if (!window.requestAnimationFrame) {
- window.requestAnimationFrame = window['requestAnimationFrame'] ||
- window['mozRequestAnimationFrame'] ||
- window['webkitRequestAnimationFrame'] ||
- window['msRequestAnimationFrame'] ||
- window['oRequestAnimationFrame'] ||
- window['setTimeout'];
- }
- window.requestAnimationFrame(func);
- }
- },safeCallback:function (func) {
- return function() {
- if (!ABORT) return func.apply(null, arguments);
- };
- },safeRequestAnimationFrame:function (func) {
- return Browser.requestAnimationFrame(function() {
- if (!ABORT) func();
- });
- },safeSetTimeout:function (func, timeout) {
- return setTimeout(function() {
- if (!ABORT) func();
- }, timeout);
- },safeSetInterval:function (func, timeout) {
- return setInterval(function() {
- if (!ABORT) func();
- }, timeout);
- },getMimetype:function (name) {
- return {
- 'jpg': 'image/jpeg',
- 'jpeg': 'image/jpeg',
- 'png': 'image/png',
- 'bmp': 'image/bmp',
- 'ogg': 'audio/ogg',
- 'wav': 'audio/wav',
- 'mp3': 'audio/mpeg'
- }[name.substr(name.lastIndexOf('.')+1)];
- },getUserMedia:function (func) {
- if(!window.getUserMedia) {
- window.getUserMedia = navigator['getUserMedia'] ||
- navigator['mozGetUserMedia'];
- }
- window.getUserMedia(func);
- },getMovementX:function (event) {
- return event['movementX'] ||
- event['mozMovementX'] ||
- event['webkitMovementX'] ||
- 0;
- },getMovementY:function (event) {
- return event['movementY'] ||
- event['mozMovementY'] ||
- event['webkitMovementY'] ||
- 0;
- },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup
- if (Browser.pointerLock) {
- // When the pointer is locked, calculate the coordinates
- // based on the movement of the mouse.
- // Workaround for Firefox bug 764498
- if (event.type != 'mousemove' &&
- ('mozMovementX' in event)) {
- Browser.mouseMovementX = Browser.mouseMovementY = 0;
- } else {
- Browser.mouseMovementX = Browser.getMovementX(event);
- Browser.mouseMovementY = Browser.getMovementY(event);
- }
-
- // check if SDL is available
- if (typeof SDL != "undefined") {
- Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;
- Browser.mouseY = SDL.mouseY + Browser.mouseMovementY;
- } else {
- // just add the mouse delta to the current absolut mouse position
- // FIXME: ideally this should be clamped against the canvas size and zero
- Browser.mouseX += Browser.mouseMovementX;
- Browser.mouseY += Browser.mouseMovementY;
- }
- } else {
- // Otherwise, calculate the movement based on the changes
- // in the coordinates.
- var rect = Module["canvas"].getBoundingClientRect();
- var x, y;
-
- // Neither .scrollX or .pageXOffset are defined in a spec, but
- // we prefer .scrollX because it is currently in a spec draft.
- // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/)
- var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset);
- var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset);
- // If this assert lands, it's likely because the browser doesn't support scrollX or pageXOffset
- // and we have no viable fallback.
- assert((typeof scrollX !== 'undefined') && (typeof scrollY !== 'undefined'), 'Unable to retrieve scroll position, mouse positions likely broken.');
- if (event.type == 'touchstart' ||
- event.type == 'touchend' ||
- event.type == 'touchmove') {
- var t = event.touches.item(0);
- if (t) {
- x = t.pageX - (scrollX + rect.left);
- y = t.pageY - (scrollY + rect.top);
- } else {
- return;
- }
- } else {
- x = event.pageX - (scrollX + rect.left);
- y = event.pageY - (scrollY + rect.top);
- }
-
- // the canvas might be CSS-scaled compared to its backbuffer;
- // SDL-using content will want mouse coordinates in terms
- // of backbuffer units.
- var cw = Module["canvas"].width;
- var ch = Module["canvas"].height;
- x = x * (cw / rect.width);
- y = y * (ch / rect.height);
-
- Browser.mouseMovementX = x - Browser.mouseX;
- Browser.mouseMovementY = y - Browser.mouseY;
- Browser.mouseX = x;
- Browser.mouseY = y;
- }
- },xhrLoad:function (url, onload, onerror) {
- var xhr = new XMLHttpRequest();
- xhr.open('GET', url, true);
- xhr.responseType = 'arraybuffer';
- xhr.onload = function xhr_onload() {
- if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
- onload(xhr.response);
- } else {
- onerror();
- }
- };
- xhr.onerror = onerror;
- xhr.send(null);
- },asyncLoad:function (url, onload, onerror, noRunDep) {
- Browser.xhrLoad(url, function(arrayBuffer) {
- assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).');
- onload(new Uint8Array(arrayBuffer));
- if (!noRunDep) removeRunDependency('al ' + url);
- }, function(event) {
- if (onerror) {
- onerror();
- } else {
- throw 'Loading data file "' + url + '" failed.';
- }
- });
- if (!noRunDep) addRunDependency('al ' + url);
- },resizeListeners:[],updateResizeListeners:function () {
- var canvas = Module['canvas'];
- Browser.resizeListeners.forEach(function(listener) {
- listener(canvas.width, canvas.height);
- });
- },setCanvasSize:function (width, height, noUpdates) {
- var canvas = Module['canvas'];
- canvas.width = width;
- canvas.height = height;
- if (!noUpdates) Browser.updateResizeListeners();
- },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () {
- var canvas = Module['canvas'];
- this.windowedWidth = canvas.width;
- this.windowedHeight = canvas.height;
- canvas.width = screen.width;
- canvas.height = screen.height;
- // check if SDL is available
- if (typeof SDL != "undefined") {
- var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
- flags = flags | 0x00800000; // set SDL_FULLSCREEN flag
- HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
- }
- Browser.updateResizeListeners();
- },setWindowedCanvasSize:function () {
- var canvas = Module['canvas'];
- canvas.width = this.windowedWidth;
- canvas.height = this.windowedHeight;
- // check if SDL is available
- if (typeof SDL != "undefined") {
- var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
- flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag
- HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
- }
- Browser.updateResizeListeners();
- }};
- ___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0;
- Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) };
- Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) };
- Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) };
- Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() };
- Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() };
- Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() }
- FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice;
- __ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor();
- if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); }
- STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
- staticSealed = true; // seal the static portion of memory
- STACK_MAX = STACK_BASE + 5242880;
- DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
- assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack");
- var FUNCTION_TABLE = [0, 0];
- // EMSCRIPTEN_START_FUNCS
- function _bitmap_decompress_15($output,$output_width,$output_height,$input_width,$input_height,$input,$size){
- var label=0;
- var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
- label = 1;
- while(1)switch(label){
- case 1:
- var $1;
- var $2;
- var $3;
- var $4;
- var $5;
- var $6;
- var $7;
- var $temp;
- var $rv;
- var $y;
- var $x;
- var $a;
- var $r;
- var $g;
- var $b;
- $1=$output;
- $2=$output_width;
- $3=$output_height;
- $4=$input_width;
- $5=$input_height;
- $6=$input;
- $7=$size;
- var $8=$4;
- var $9=$5;
- var $10=(Math_imul($8,$9)|0);
- var $11=($10<<1);
- var $12=_malloc($11);
- $temp=$12;
- var $13=$temp;
- var $14=$4;
- var $15=$5;
- var $16=$6;
- var $17=$7;
- var $18=_bitmap_decompress2($13,$14,$15,$16,$17);
- $rv=$18;
- $y=0;
- label=2;break;
- case 2:
- var $20=$y;
- var $21=$3;
- var $22=($20|0)<($21|0);
- if($22){label=3;break;}else{label=9;break;}
- case 3:
- $x=0;
- label=4;break;
- case 4:
- var $25=$x;
- var $26=$2;
- var $27=($25|0)<($26|0);
- if($27){label=5;break;}else{label=7;break;}
- case 5:
- var $29=$y;
- var $30=$4;
- var $31=(Math_imul($29,$30)|0);
- var $32=$x;
- var $33=((($31)+($32))|0);
- var $34=$temp;
- var $35=$34;
- var $36=(($35+($33<<1))|0);
- var $37=HEAP16[(($36)>>1)];
- $a=$37;
- var $38=$a;
- var $39=($38&65535);
- var $40=$39&31744;
- var $41=$40>>10;
- var $42=(($41)&255);
- $r=$42;
- var $43=$a;
- var $44=($43&65535);
- var $45=$44&992;
- var $46=$45>>5;
- var $47=(($46)&255);
- $g=$47;
- var $48=$a;
- var $49=($48&65535);
- var $50=$49&31;
- var $51=(($50)&255);
- $b=$51;
- var $52=$r;
- var $53=($52&255);
- var $54=((($53)*(255))&-1);
- var $55=(((($54|0))/(31))&-1);
- var $56=(($55)&255);
- $r=$56;
- var $57=$g;
- var $58=($57&255);
- var $59=((($58)*(255))&-1);
- var $60=(((($59|0))/(31))&-1);
- var $61=(($60)&255);
- $g=$61;
- var $62=$b;
- var $63=($62&255);
- var $64=((($63)*(255))&-1);
- var $65=(((($64|0))/(31))&-1);
- var $66=(($65)&255);
- $b=$66;
- var $67=$b;
- var $68=($67&255);
- var $69=$68<<16;
- var $70=-16777216|$69;
- var $71=$g;
- var $72=($71&255);
- var $73=$72<<8;
- var $74=$70|$73;
- var $75=$r;
- var $76=($75&255);
- var $77=$74|$76;
- var $78=$y;
- var $79=$2;
- var $80=(Math_imul($78,$79)|0);
- var $81=$x;
- var $82=((($80)+($81))|0);
- var $83=$1;
- var $84=$83;
- var $85=(($84+($82<<2))|0);
- HEAP32[(($85)>>2)]=$77;
- label=6;break;
- case 6:
- var $87=$x;
- var $88=((($87)+(1))|0);
- $x=$88;
- label=4;break;
- case 7:
- label=8;break;
- case 8:
- var $91=$y;
- var $92=((($91)+(1))|0);
- $y=$92;
- label=2;break;
- case 9:
- var $94=$temp;
- _free($94);
- var $95=$rv;
- STACKTOP=sp;return $95;
- default: assert(0, "bad label: " + label);
- }
- }
- Module["_bitmap_decompress_15"] = _bitmap_decompress_15;
- function _bitmap_decompress2($output,$width,$height,$input,$size){
- var label=0;
- var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
- label = 1;
- while(1)switch(label){
- case 1:
- var $1;
- var $2;
- var $3;
- var $4;
- var $5;
- var $6;
- var $end;
- var $prevline;
- var $line;
- var $opcode;
- var $count;
- var $offset;
- var $isfillormix;
- var $x;
- var $lastopcode;
- var $insertmix;
- var $bicolour;
- var $code;
- var $colour1;
- var $colour2;
- var $mixmask;
- var $mask;
- var $mix;
- var $fom_mask;
- $2=$output;
- $3=$width;
- $4=$height;
- $5=$input;
- $6=$size;
- var $7=$5;
- var $8=$6;
- var $9=(($7+$8)|0);
- $end=$9;
- $prevline=0;
- $line=0;
- var $10=$3;
- $x=$10;
- $lastopcode=-1;
- $insertmix=0;
- $bicolour=0;
- $colour1=0;
- $colour2=0;
- $mask=0;
- $mix=-1;
- $fom_mask=0;
- label=2;break;
- case 2:
- var $12=$5;
- var $13=$end;
- var $14=($12>>>0)<($13>>>0);
- if($14){label=3;break;}else{label=346;break;}
- case 3:
- $fom_mask=0;
- var $16=$5;
- var $17=(($16+1)|0);
- $5=$17;
- var $18=HEAP8[($16)];
- $code=$18;
- var $19=$code;
- var $20=($19&255);
- var $21=$20>>4;
- $opcode=$21;
- var $22=$opcode;
- if(($22|0)==12|($22|0)==13|($22|0)==14){ label=4;break;}else if(($22|0)==15){ label=5;break;}else{label=9;break;}
- case 4:
- var $24=$opcode;
- var $25=((($24)-(6))|0);
- $opcode=$25;
- var $26=$code;
- var $27=($26&255);
- var $28=$27&15;
- $count=$28;
- $offset=16;
- label=10;break;
- case 5:
- var $30=$code;
- var $31=($30&255);
- var $32=$31&15;
- $opcode=$32;
- var $33=$opcode;
- var $34=($33|0)<9;
- if($34){label=6;break;}else{label=7;break;}
- case 6:
- var $36=$5;
- var $37=(($36+1)|0);
- $5=$37;
- var $38=HEAP8[($36)];
- var $39=($38&255);
- $count=$39;
- var $40=$5;
- var $41=(($40+1)|0);
- $5=$41;
- var $42=HEAP8[($40)];
- var $43=($42&255);
- var $44=$43<<8;
- var $45=$count;
- var $46=$45|$44;
- $count=$46;
- label=8;break;
- case 7:
- var $48=$opcode;
- var $49=($48|0)<11;
- var $50=($49?8:1);
- $count=$50;
- label=8;break;
- case 8:
- $offset=0;
- label=10;break;
- case 9:
- var $53=$opcode;
- var $54=$53>>1;
- $opcode=$54;
- var $55=$code;
- var $56=($55&255);
- var $57=$56&31;
- $count=$57;
- $offset=32;
- label=10;break;
- case 10:
- var $59=$offset;
- var $60=($59|0)!=0;
- if($60){label=11;break;}else{label=22;break;}
- case 11:
- var $62=$opcode;
- var $63=($62|0)==2;
- if($63){var $68=1;label=13;break;}else{label=12;break;}
- case 12:
- var $65=$opcode;
- var $66=($65|0)==7;
- var $68=$66;label=13;break;
- case 13:
- var $68;
- var $69=($68&1);
- $isfillormix=$69;
- var $70=$count;
- var $71=($70|0)==0;
- if($71){label=14;break;}else{label=18;break;}
- case 14:
- var $73=$isfillormix;
- var $74=($73|0)!=0;
- if($74){label=15;break;}else{label=16;break;}
- case 15:
- var $76=$5;
- var $77=(($76+1)|0);
- $5=$77;
- var $78=HEAP8[($76)];
- var $79=($78&255);
- var $80=((($79)+(1))|0);
- $count=$80;
- label=17;break;
- case 16:
- var $82=$5;
- var $83=(($82+1)|0);
- $5=$83;
- var $84=HEAP8[($82)];
- var $85=($84&255);
- var $86=$offset;
- var $87=((($85)+($86))|0);
- $count=$87;
- label=17;break;
- case 17:
- label=21;break;
- case 18:
- var $90=$isfillormix;
- var $91=($90|0)!=0;
- if($91){label=19;break;}else{label=20;break;}
- case 19:
- var $93=$count;
- var $94=$93<<3;
- $count=$94;
- label=20;break;
- case 20:
- label=21;break;
- case 21:
- label=22;break;
- case 22:
- var $98=$opcode;
- switch(($98|0)){case 0:{ label=23;break;}case 8:{ label=28;break;}case 3:{ label=29;break;}case 6:case 7:{ label=30;break;}case 9:{ label=31;break;}case 10:{ label=32;break;}default:{label=33;break;}}break;
- case 23:
- var $100=$lastopcode;
- var $101=$opcode;
- var $102=($100|0)==($101|0);
- if($102){label=24;break;}else{label=27;break;}
- case 24:
- var $104=$x;
- var $105=$3;
- var $106=($104|0)==($105|0);
- if($106){label=25;break;}else{label=26;break;}
- case 25:
- var $108=$prevline;
- var $109=($108|0)==0;
- if($109){label=27;break;}else{label=26;break;}
- case 26:
- $insertmix=1;
- label=27;break;
- case 27:
- label=33;break;
- case 28:
- var $113=$5;
- var $114=(($113+1)|0);
- $5=$114;
- var $115=HEAP8[($113)];
- var $116=($115&255);
- $colour1=$116;
- var $117=$5;
- var $118=(($117+1)|0);
- $5=$118;
- var $119=HEAP8[($117)];
- var $120=($119&255);
- var $121=$120<<8;
- var $122=$colour1;
- var $123=($122&65535);
- var $124=$123|$121;
- var $125=(($124)&65535);
- $colour1=$125;
- label=29;break;
- case 29:
- var $127=$5;
- var $128=(($127+1)|0);
- $5=$128;
- var $129=HEAP8[($127)];
- var $130=($129&255);
- $colour2=$130;
- var $131=$5;
- var $132=(($131+1)|0);
- $5=$132;
- var $133=HEAP8[($131)];
- var $134=($133&255);
- var $135=$134<<8;
- var $136=$colour2;
- var $137=($136&65535);
- var $138=$137|$135;
- var $139=(($138)&65535);
- $colour2=$139;
- label=33;break;
- case 30:
- var $141=$5;
- var $142=(($141+1)|0);
- $5=$142;
- var $143=HEAP8[($141)];
- var $144=($143&255);
- $mix=$144;
- var $145=$5;
- var $146=(($145+1)|0);
- $5=$146;
- var $147=HEAP8[($145)];
- var $148=($147&255);
- var $149=$148<<8;
- var $150=$mix;
- var $151=($150&65535);
- var $152=$151|$149;
- var $153=(($152)&65535);
- $mix=$153;
- var $154=$opcode;
- var $155=((($154)-(5))|0);
- $opcode=$155;
- label=33;break;
- case 31:
- $mask=3;
- $opcode=2;
- $fom_mask=3;
- label=33;break;
- case 32:
- $mask=5;
- $opcode=2;
- $fom_mask=5;
- label=33;break;
- case 33:
- var $159=$opcode;
- $lastopcode=$159;
- $mixmask=0;
- label=34;break;
- case 34:
- var $161=$count;
- var $162=($161|0)>0;
- if($162){label=35;break;}else{label=345;break;}
- case 35:
- var $164=$x;
- var $165=$3;
- var $166=($164|0)>=($165|0);
- if($166){label=36;break;}else{label=39;break;}
- case 36:
- var $168=$4;
- var $169=($168|0)<=0;
- if($169){label=37;break;}else{label=38;break;}
- case 37:
- $1=0;
- label=347;break;
- case 38:
- $x=0;
- var $172=$4;
- var $173=((($172)-(1))|0);
- $4=$173;
- var $174=$line;
- $prevline=$174;
- var $175=$2;
- var $176=$175;
- var $177=$4;
- var $178=$3;
- var $179=(Math_imul($177,$178)|0);
- var $180=(($176+($179<<1))|0);
- $line=$180;
- label=39;break;
- case 39:
- var $182=$opcode;
- switch(($182|0)){case 3:{ label=261;break;}case 4:{ label=272;break;}case 8:{ label=283;break;}case 13:{ label=321;break;}case 14:{ label=332;break;}case 0:{ label=40;break;}case 1:{ label=69;break;}case 2:{ label=93;break;}default:{label=343;break;}}break;
- case 40:
- var $184=$insertmix;
- var $185=($184|0)!=0;
- if($185){label=41;break;}else{label=45;break;}
- case 41:
- var $187=$prevline;
- var $188=($187|0)==0;
- if($188){label=42;break;}else{label=43;break;}
- case 42:
- var $190=$mix;
- var $191=$x;
- var $192=$line;
- var $193=(($192+($191<<1))|0);
- HEAP16[(($193)>>1)]=$190;
- label=44;break;
- case 43:
- var $195=$x;
- var $196=$prevline;
- var $197=(($196+($195<<1))|0);
- var $198=HEAP16[(($197)>>1)];
- var $199=($198&65535);
- var $200=$mix;
- var $201=($200&65535);
- var $202=$199^$201;
- var $203=(($202)&65535);
- var $204=$x;
- var $205=$line;
- var $206=(($205+($204<<1))|0);
- HEAP16[(($206)>>1)]=$203;
- label=44;break;
- case 44:
- $insertmix=0;
- var $208=$count;
- var $209=((($208)-(1))|0);
- $count=$209;
- var $210=$x;
- var $211=((($210)+(1))|0);
- $x=$211;
- label=45;break;
- case 45:
- var $213=$prevline;
- var $214=($213|0)==0;
- if($214){label=46;break;}else{label=57;break;}
- case 46:
- label=47;break;
- case 47:
- var $217=$count;
- var $218=$217&-8;
- var $219=($218|0)!=0;
- if($219){label=48;break;}else{var $226=0;label=49;break;}
- case 48:
- var $221=$x;
- var $222=((($221)+(8))|0);
- var $223=$3;
- var $224=($222|0)<($223|0);
- var $226=$224;label=49;break;
- case 49:
- var $226;
- if($226){label=50;break;}else{label=51;break;}
- case 50:
- var $228=$x;
- var $229=$line;
- var $230=(($229+($228<<1))|0);
- HEAP16[(($230)>>1)]=0;
- var $231=$count;
- var $232=((($231)-(1))|0);
- $count=$232;
- var $233=$x;
- var $234=((($233)+(1))|0);
- $x=$234;
- var $235=$x;
- var $236=$line;
- var $237=(($236+($235<<1))|0);
- HEAP16[(($237)>>1)]=0;
- var $238=$count;
- var $239=((($238)-(1))|0);
- $count=$239;
- var $240=$x;
- var $241=((($240)+(1))|0);
- $x=$241;
- var $242=$x;
- var $243=$line;
- var $244=(($243+($242<<1))|0);
- HEAP16[(($244)>>1)]=0;
- var $245=$count;
- var $246=((($245)-(1))|0);
- $count=$246;
- var $247=$x;
- var $248=((($247)+(1))|0);
- $x=$248;
- var $249=$x;
- var $250=$line;
- var $251=(($250+($249<<1))|0);
- HEAP16[(($251)>>1)]=0;
- var $252=$count;
- var $253=((($252)-(1))|0);
- $count=$253;
- var $254=$x;
- var $255=((($254)+(1))|0);
- $x=$255;
- var $256=$x;
- var $257=$line;
- var $258=(($257+($256<<1))|0);
- HEAP16[(($258)>>1)]=0;
- var $259=$count;
- var $260=((($259)-(1))|0);
- $count=$260;
- var $261=$x;
- var $262=((($261)+(1))|0);
- $x=$262;
- var $263=$x;
- var $264=$line;
- var $265=(($264+($263<<1))|0);
- HEAP16[(($265)>>1)]=0;
- var $266=$count;
- var $267=((($266)-(1))|0);
- $count=$267;
- var $268=$x;
- var $269=((($268)+(1))|0);
- $x=$269;
- var $270=$x;
- var $271=$line;
- var $272=(($271+($270<<1))|0);
- HEAP16[(($272)>>1)]=0;
- var $273=$count;
- var $274=((($273)-(1))|0);
- $count=$274;
- var $275=$x;
- var $276=((($275)+(1))|0);
- $x=$276;
- var $277=$x;
- var $278=$line;
- var $279=(($278+($277<<1))|0);
- HEAP16[(($279)>>1)]=0;
- var $280=$count;
- var $281=((($280)-(1))|0);
- $count=$281;
- var $282=$x;
- var $283=((($282)+(1))|0);
- $x=$283;
- label=47;break;
- case 51:
- label=52;break;
- case 52:
- var $286=$count;
- var $287=($286|0)>0;
- if($287){label=53;break;}else{var $293=0;label=54;break;}
- case 53:
- var $289=$x;
- var $290=$3;
- var $291=($289|0)<($290|0);
- var $293=$291;label=54;break;
- case 54:
- var $293;
- if($293){label=55;break;}else{label=56;break;}
- case 55:
- var $295=$x;
- var $296=$line;
- var $297=(($296+($295<<1))|0);
- HEAP16[(($297)>>1)]=0;
- var $298=$count;
- var $299=((($298)-(1))|0);
- $count=$299;
- var $300=$x;
- var $301=((($300)+(1))|0);
- $x=$301;
- label=52;break;
- case 56:
- label=68;break;
- case 57:
- label=58;break;
- case 58:
- var $305=$count;
- var $306=$305&-8;
- var $307=($306|0)!=0;
- if($307){label=59;break;}else{var $314=0;label=60;break;}
- case 59:
- var $309=$x;
- var $310=((($309)+(8))|0);
- var $311=$3;
- var $312=($310|0)<($311|0);
- var $314=$312;label=60;break;
- case 60:
- var $314;
- if($314){label=61;break;}else{label=62;break;}
- case 61:
- var $316=$x;
- var $317=$prevline;
- var $318=(($317+($316<<1))|0);
- var $319=HEAP16[(($318)>>1)];
- var $320=$x;
- var $321=$line;
- var $322=(($321+($320<<1))|0);
- HEAP16[(($322)>>1)]=$319;
- var $323=$count;
- var $324=((($323)-(1))|0);
- $count=$324;
- var $325=$x;
- var $326=((($325)+(1))|0);
- $x=$326;
- var $327=$x;
- var $328=$prevline;
- var $329=(($328+($327<<1))|0);
- var $330=HEAP16[(($329)>>1)];
- var $331=$x;
- var $332=$line;
- var $333=(($332+($331<<1))|0);
- HEAP16[(($333)>>1)]=$330;
- var $334=$count;
- var $335=((($334)-(1))|0);
- $count=$335;
- var $336=$x;
- var $337=((($336)+(1))|0);
- $x=$337;
- var $338=$x;
- var $339=$prevline;
- var $340=(($339+($338<<1))|0);
- var $341=HEAP16[(($340)>>1)];
- var $342=$x;
- var $343=$line;
- var $344=(($343+($342<<1))|0);
- HEAP16[(($344)>>1)]=$341;
- var $345=$count;
- var $346=((($345)-(1))|0);
- $count=$346;
- var $347=$x;
- var $348=((($347)+(1))|0);
- $x=$348;
- var $349=$x;
- var $350=$prevline;
- var $351=(($350+($349<<1))|0);
- var $352=HEAP16[(($351)>>1)];
- var $353=$x;
- var $354=$line;
- var $355=(($354+($353<<1))|0);
- HEAP16[(($355)>>1)]=$352;
- var $356=$count;
- var $357=((($356)-(1))|0);
- $count=$357;
- var $358=$x;
- var $359=((($358)+(1))|0);
- $x=$359;
- var $360=$x;
- var $361=$prevline;
- var $362=(($361+($360<<1))|0);
- var $363=HEAP16[(($362)>>1)];
- var $364=$x;
- var $365=$line;
- var $366=(($365+($364<<1))|0);
- HEAP16[(($366)>>1)]=$363;
- var $367=$count;
- var $368=((($367)-(1))|0);
- $count=$368;
- var $369=$x;
- var $370=((($369)+(1))|0);
- $x=$370;
- var $371=$x;
- var $372=$prevline;
- var $373=(($372+($371<<1))|0);
- var $374=HEAP16[(($373)>>1)];
- var $375=$x;
- var $376=$line;
- var $377=(($376+($375<<1))|0);
- HEAP16[(($377)>>1)]=$374;
- var $378=$count;
- var $379=((($378)-(1))|0);
- $count=$379;
- var $380=$x;
- var $381=((($380)+(1))|0);
- $x=$381;
- var $382=$x;
- var $383=$prevline;
- var $384=(($383+($382<<1))|0);
- var $385=HEAP16[(($384)>>1)];
- var $386=$x;
- var $387=$line;
- var $388=(($387+($386<<1))|0);
- HEAP16[(($388)>>1)]=$385;
- var $389=$count;
- var $390=((($389)-(1))|0);
- $count=$390;
- var $391=$x;
- var $392=((($391)+(1))|0);
- $x=$392;
- var $393=$x;
- var $394=$prevline;
- var $395=(($394+($393<<1))|0);
- var $396=HEAP16[(($395)>>1)];
- var $397=$x;
- var $398=$line;
- var $399=(($398+($397<<1))|0);
- HEAP16[(($399)>>1)]=$396;
- var $400=$count;
- var $401=((($400)-(1))|0);
- $count=$401;
- var $402=$x;
- var $403=((($402)+(1))|0);
- $x=$403;
- label=58;break;
- case 62:
- label=63;break;
- case 63:
- var $406=$count;
- var $407=($406|0)>0;
- if($407){label=64;break;}else{var $413=0;label=65;break;}
- case 64:
- var $409=$x;
- var $410=$3;
- var $411=($409|0)<($410|0);
- var $413=$411;label=65;break;
- case 65:
- var $413;
- if($413){label=66;break;}else{label=67;break;}
- case 66:
- var $415=$x;
- var $416=$prevline;
- var $417=(($416+($415<<1))|0);
- var $418=HEAP16[(($417)>>1)];
- var $419=$x;
- var $420=$line;
- var $421=(($420+($419<<1))|0);
- HEAP16[(($421)>>1)]=$418;
- var $422=$count;
- var $423=((($422)-(1))|0);
- $count=$423;
- var $424=$x;
- var $425=((($424)+(1))|0);
- $x=$425;
- label=63;break;
- case 67:
- label=68;break;
- case 68:
- label=344;break;
- case 69:
- var $429=$prevline;
- var $430=($429|0)==0;
- if($430){label=70;break;}else{label=81;break;}
- case 70:
- label=71;break;
- case 71:
- var $433=$count;
- var $434=$433&-8;
- var $435=($434|0)!=0;
- if($435){label=72;break;}else{var $442=0;label=73;break;}
- case 72:
- var $437=$x;
- var $438=((($437)+(8))|0);
- var $439=$3;
- var $440=($438|0)<($439|0);
- var $442=$440;label=73;break;
- case 73:
- var $442;
- if($442){label=74;break;}else{label=75;break;}
- case 74:
- var $444=$mix;
- var $445=$x;
- var $446=$line;
- var $447=(($446+($445<<1))|0);
- HEAP16[(($447)>>1)]=$444;
- var $448=$count;
- var $449=((($448)-(1))|0);
- $count=$449;
- var $450=$x;
- var $451=((($450)+(1))|0);
- $x=$451;
- var $452=$mix;
- var $453=$x;
- var $454=$line;
- var $455=(($454+($453<<1))|0);
- HEAP16[(($455)>>1)]=$452;
- var $456=$count;
- var $457=((($456)-(1))|0);
- $count=$457;
- var $458=$x;
- var $459=((($458)+(1))|0);
- $x=$459;
- var $460=$mix;
- var $461=$x;
- var $462=$line;
- var $463=(($462+($461<<1))|0);
- HEAP16[(($463)>>1)]=$460;
- var $464=$count;
- var $465=((($464)-(1))|0);
- $count=$465;
- var $466=$x;
- var $467=((($466)+(1))|0);
- $x=$467;
- var $468=$mix;
- var $469=$x;
- var $470=$line;
- var $471=(($470+($469<<1))|0);
- HEAP16[(($471)>>1)]=$468;
- var $472=$count;
- var $473=((($472)-(1))|0);
- $count=$473;
- var $474=$x;
- var $475=((($474)+(1))|0);
- $x=$475;
- var $476=$mix;
- var $477=$x;
- var $478=$line;
- var $479=(($478+($477<<1))|0);
- HEAP16[(($479)>>1)]=$476;
- var $480=$count;
- var $481=((($480)-(1))|0);
- $count=$481;
- var $482=$x;
- var $483=((($482)+(1))|0);
- $x=$483;
- var $484=$mix;
- var $485=$x;
- var $486=$line;
- var $487=(($486+($485<<1))|0);
- HEAP16[(($487)>>1)]=$484;
- var $488=$count;
- var $489=((($488)-(1))|0);
- $count=$489;
- var $490=$x;
- var $491=((($490)+(1))|0);
- $x=$491;
- var $492=$mix;
- var $493=$x;
- var $494=$line;
- var $495=(($494+($493<<1))|0);
- HEAP16[(($495)>>1)]=$492;
- var $496=$count;
- var $497=((($496)-(1))|0);
- $count=$497;
- var $498=$x;
- var $499=((($498)+(1))|0);
- $x=$499;
- var $500=$mix;
- var $501=$x;
- var $502=$line;
- var $503=(($502+($501<<1))|0);
- HEAP16[(($503)>>1)]=$500;
- var $504=$count;
- var $505=((($504)-(1))|0);
- $count=$505;
- var $506=$x;
- var $507=((($506)+(1))|0);
- $x=$507;
- label=71;break;
- case 75:
- label=76;break;
- case 76:
- var $510=$count;
- var $511=($510|0)>0;
- if($511){label=77;break;}else{var $517=0;label=78;break;}
- case 77:
- var $513=$x;
- var $514=$3;
- var $515=($513|0)<($514|0);
- var $517=$515;label=78;break;
- case 78:
- var $517;
- if($517){label=79;break;}else{label=80;break;}
- case 79:
- var $519=$mix;
- var $520=$x;
- var $521=$line;
- var $522=(($521+($520<<1))|0);
- HEAP16[(($522)>>1)]=$519;
- var $523=$count;
- var $524=((($523)-(1))|0);
- $count=$524;
- var $525=$x;
- var $526=((($525)+(1))|0);
- $x=$526;
- label=76;break;
- case 80:
- label=92;break;
- case 81:
- label=82;break;
- case 82:
- var $530=$count;
- var $531=$530&-8;
- var $532=($531|0)!=0;
- if($532){label=83;break;}else{var $539=0;label=84;break;}
- case 83:
- var $534=$x;
- var $535=((($534)+(8))|0);
- var $536=$3;
- var $537=($535|0)<($536|0);
- var $539=$537;label=84;break;
- case 84:
- var $539;
- if($539){label=85;break;}else{label=86;break;}
- case 85:
- var $541=$x;
- var $542=$prevline;
- var $543=(($542+($541<<1))|0);
- var $544=HEAP16[(($543)>>1)];
- var $545=($544&65535);
- var $546=$mix;
- var $547=($546&65535);
- var $548=$545^$547;
- var $549=(($548)&65535);
- var $550=$x;
- var $551=$line;
- var $552=(($551+($550<<1))|0);
- HEAP16[(($552)>>1)]=$549;
- var $553=$count;
- var $554=((($553)-(1))|0);
- $count=$554;
- var $555=$x;
- var $556=((($555)+(1))|0);
- $x=$556;
- var $557=$x;
- var $558=$prevline;
- var $559=(($558+($557<<1))|0);
- var $560=HEAP16[(($559)>>1)];
- var $561=($560&65535);
- var $562=$mix;
- var $563=($562&65535);
- var $564=$561^$563;
- var $565=(($564)&65535);
- var $566=$x;
- var $567=$line;
- var $568=(($567+($566<<1))|0);
- HEAP16[(($568)>>1)]=$565;
- var $569=$count;
- var $570=((($569)-(1))|0);
- $count=$570;
- var $571=$x;
- var $572=((($571)+(1))|0);
- $x=$572;
- var $573=$x;
- var $574=$prevline;
- var $575=(($574+($573<<1))|0);
- var $576=HEAP16[(($575)>>1)];
- var $577=($576&65535);
- var $578=$mix;
- var $579=($578&65535);
- var $580=$577^$579;
- var $581=(($580)&65535);
- var $582=$x;
- var $583=$line;
- var $584=(($583+($582<<1))|0);
- HEAP16[(($584)>>1)]=$581;
- var $585=$count;
- var $586=((($585)-(1))|0);
- $count=$586;
- var $587=$x;
- var $588=((($587)+(1))|0);
- $x=$588;
- var $589=$x;
- var $590=$prevline;
- var $591=(($590+($589<<1))|0);
- var $592=HEAP16[(($591)>>1)];
- var $593=($592&65535);
- var $594=$mix;
- var $595=($594&65535);
- var $596=$593^$595;
- var $597=(($596)&65535);
- var $598=$x;
- var $599=$line;
- var $600=(($599+($598<<1))|0);
- HEAP16[(($600)>>1)]=$597;
- var $601=$count;
- var $602=((($601)-(1))|0);
- $count=$602;
- var $603=$x;
- var $604=((($603)+(1))|0);
- $x=$604;
- var $605=$x;
- var $606=$prevline;
- var $607=(($606+($605<<1))|0);
- var $608=HEAP16[(($607)>>1)];
- var $609=($608&65535);
- var $610=$mix;
- var $611=($610&65535);
- var $612=$609^$611;
- var $613=(($612)&65535);
- var $614=$x;
- var $615=$line;
- var $616=(($615+($614<<1))|0);
- HEAP16[(($616)>>1)]=$613;
- var $617=$count;
- var $618=((($617)-(1))|0);
- $count=$618;
- var $619=$x;
- var $620=((($619)+(1))|0);
- $x=$620;
- var $621=$x;
- var $622=$prevline;
- var $623=(($622+($621<<1))|0);
- var $624=HEAP16[(($623)>>1)];
- var $625=($624&65535);
- var $626=$mix;
- var $627=($626&65535);
- var $628=$625^$627;
- var $629=(($628)&65535);
- var $630=$x;
- var $631=$line;
- var $632=(($631+($630<<1))|0);
- HEAP16[(($632)>>1)]=$629;
- var $633=$count;
- var $634=((($633)-(1))|0);
- $count=$634;
- var $635=$x;
- var $636=((($635)+(1))|0);
- $x=$636;
- var $637=$x;
- var $638=$prevline;
- var $639=(($638+($637<<1))|0);
- var $640=HEAP16[(($639)>>1)];
- var $641=($640&65535);
- var $642=$mix;
- var $643=($642&65535);
- var $644=$641^$643;
- var $645=(($644)&65535);
- var $646=$x;
- var $647=$line;
- var $648=(($647+($646<<1))|0);
- HEAP16[(($648)>>1)]=$645;
- var $649=$count;
- var $650=((($649)-(1))|0);
- $count=$650;
- var $651=$x;
- var $652=((($651)+(1))|0);
- $x=$652;
- var $653=$x;
- var $654=$prevline;
- var $655=(($654+($653<<1))|0);
- var $656=HEAP16[(($655)>>1)];
- var $657=($656&65535);
- var $658=$mix;
- var $659=($658&65535);
- var $660=$657^$659;
- var $661=(($660)&65535);
- var $662=$x;
- var $663=$line;
- var $664=(($663+($662<<1))|0);
- HEAP16[(($664)>>1)]=$661;
- var $665=$count;
- var $666=((($665)-(1))|0);
- $count=$666;
- var $667=$x;
- var $668=((($667)+(1))|0);
- $x=$668;
- label=82;break;
- case 86:
- label=87;break;
- case 87:
- var $671=$count;
- var $672=($671|0)>0;
- if($672){label=88;break;}else{var $678=0;label=89;break;}
- case 88:
- var $674=$x;
- var $675=$3;
- var $676=($674|0)<($675|0);
- var $678=$676;label=89;break;
- case 89:
- var $678;
- if($678){label=90;break;}else{label=91;break;}
- case 90:
- var $680=$x;
- var $681=$prevline;
- var $682=(($681+($680<<1))|0);
- var $683=HEAP16[(($682)>>1)];
- var $684=($683&65535);
- var $685=$mix;
- var $686=($685&65535);
- var $687=$684^$686;
- var $688=(($687)&65535);
- var $689=$x;
- var $690=$line;
- var $691=(($690+($689<<1))|0);
- HEAP16[(($691)>>1)]=$688;
- var $692=$count;
- var $693=((($692)-(1))|0);
- $count=$693;
- var $694=$x;
- var $695=((($694)+(1))|0);
- $x=$695;
- label=87;break;
- case 91:
- label=92;break;
- case 92:
- label=344;break;
- case 93:
- var $699=$prevline;
- var $700=($699|0)==0;
- if($700){label=94;break;}else{label=177;break;}
- case 94:
- label=95;break;
- case 95:
- var $703=$count;
- var $704=$703&-8;
- var $705=($704|0)!=0;
- if($705){label=96;break;}else{var $712=0;label=97;break;}
- case 96:
- var $707=$x;
- var $708=((($707)+(8))|0);
- var $709=$3;
- var $710=($708|0)<($709|0);
- var $712=$710;label=97;break;
- case 97:
- var $712;
- if($712){label=98;break;}else{label=163;break;}
- case 98:
- var $714=$mixmask;
- var $715=($714&255);
- var $716=$715<<1;
- var $717=(($716)&255);
- $mixmask=$717;
- var $718=$mixmask;
- var $719=($718&255);
- var $720=($719|0)==0;
- if($720){label=99;break;}else{label=103;break;}
- case 99:
- var $722=$fom_mask;
- var $723=($722|0)!=0;
- if($723){label=100;break;}else{label=101;break;}
- case 100:
- var $725=$fom_mask;
- var $732=$725;label=102;break;
- case 101:
- var $727=$5;
- var $728=(($727+1)|0);
- $5=$728;
- var $729=HEAP8[($727)];
- var $730=($729&255);
- var $732=$730;label=102;break;
- case 102:
- var $732;
- var $733=(($732)&255);
- $mask=$733;
- $mixmask=1;
- label=103;break;
- case 103:
- var $735=$mask;
- var $736=($735&255);
- var $737=$mixmask;
- var $738=($737&255);
- var $739=$736&$738;
- var $740=($739|0)!=0;
- if($740){label=104;break;}else{label=105;break;}
- case 104:
- var $742=$mix;
- var $743=$x;
- var $744=$line;
- var $745=(($744+($743<<1))|0);
- HEAP16[(($745)>>1)]=$742;
- label=106;break;
- case 105:
- var $747=$x;
- var $748=$line;
- var $749=(($748+($747<<1))|0);
- HEAP16[(($749)>>1)]=0;
- label=106;break;
- case 106:
- var $751=$count;
- var $752=((($751)-(1))|0);
- $count=$752;
- var $753=$x;
- var $754=((($753)+(1))|0);
- $x=$754;
- var $755=$mixmask;
- var $756=($755&255);
- var $757=$756<<1;
- var $758=(($757)&255);
- $mixmask=$758;
- var $759=$mixmask;
- var $760=($759&255);
- var $761=($760|0)==0;
- if($761){label=107;break;}else{label=111;break;}
- case 107:
- var $763=$fom_mask;
- var $764=($763|0)!=0;
- if($764){label=108;break;}else{label=109;break;}
- case 108:
- var $766=$fom_mask;
- var $773=$766;label=110;break;
- case 109:
- var $768=$5;
- var $769=(($768+1)|0);
- $5=$769;
- var $770=HEAP8[($768)];
- var $771=($770&255);
- var $773=$771;label=110;break;
- case 110:
- var $773;
- var $774=(($773)&255);
- $mask=$774;
- $mixmask=1;
- label=111;break;
- case 111:
- var $776=$mask;
- var $777=($776&255);
- var $778=$mixmask;
- var $779=($778&255);
- var $780=$777&$779;
- var $781=($780|0)!=0;
- if($781){label=112;break;}else{label=113;break;}
- case 112:
- var $783=$mix;
- var $784=$x;
- var $785=$line;
- var $786=(($785+($784<<1))|0);
- HEAP16[(($786)>>1)]=$783;
- label=114;break;
- case 113:
- var $788=$x;
- var $789=$line;
- var $790=(($789+($788<<1))|0);
- HEAP16[(($790)>>1)]=0;
- label=114;break;
- case 114:
- var $792=$count;
- var $793=((($792)-(1))|0);
- $count=$793;
- var $794=$x;
- var $795=((($794)+(1))|0);
- $x=$795;
- var $796=$mixmask;
- var $797=($796&255);
- var $798=$797<<1;
- var $799=(($798)&255);
- $mixmask=$799;
- var $800=$mixmask;
- var $801=($800&255);
- var $802=($801|0)==0;
- if($802){label=115;break;}else{label=119;break;}
- case 115:
- var $804=$fom_mask;
- var $805=($804|0)!=0;
- if($805){label=116;break;}else{label=117;break;}
- case 116:
- var $807=$fom_mask;
- var $814=$807;label=118;break;
- case 117:
- var $809=$5;
- var $810=(($809+1)|0);
- $5=$810;
- var $811=HEAP8[($809)];
- var $812=($811&255);
- var $814=$812;label=118;break;
- case 118:
- var $814;
- var $815=(($814)&255);
- $mask=$815;
- $mixmask=1;
- label=119;break;
- case 119:
- var $817=$mask;
- var $818=($817&255);
- var $819=$mixmask;
- var $820=($819&255);
- var $821=$818&$820;
- var $822=($821|0)!=0;
- if($822){label=120;break;}else{label=121;break;}
- case 120:
- var $824=$mix;
- var $825=$x;
- var $826=$line;
- var $827=(($826+($825<<1))|0);
- HEAP16[(($827)>>1)]=$824;
- label=122;break;
- case 121:
- var $829=$x;
- var $830=$line;
- var $831=(($830+($829<<1))|0);
- HEAP16[(($831)>>1)]=0;
- label=122;break;
- case 122:
- var $833=$count;
- var $834=((($833)-(1))|0);
- $count=$834;
- var $835=$x;
- var $836=((($835)+(1))|0);
- $x=$836;
- var $837=$mixmask;
- var $838=($837&255);
- var $839=$838<<1;
- var $840=(($839)&255);
- $mixmask=$840;
- var $841=$mixmask;
- var $842=($841&255);
- var $843=($842|0)==0;
- if($843){label=123;break;}else{label=127;break;}
- case 123:
- var $845=$fom_mask;
- var $846=($845|0)!=0;
- if($846){label=124;break;}else{label=125;break;}
- case 124:
- var $848=$fom_mask;
- var $855=$848;label=126;break;
- case 125:
- var $850=$5;
- var $851=(($850+1)|0);
- $5=$851;
- var $852=HEAP8[($850)];
- var $853=($852&255);
- var $855=$853;label=126;break;
- case 126:
- var $855;
- var $856=(($855)&255);
- $mask=$856;
- $mixmask=1;
- label=127;break;
- case 127:
- var $858=$mask;
- var $859=($858&255);
- var $860=$mixmask;
- var $861=($860&255);
- var $862=$859&$861;
- var $863=($862|0)!=0;
- if($863){label=128;break;}else{label=129;break;}
- case 128:
- var $865=$mix;
- var $866=$x;
- var $867=$line;
- var $868=(($867+($866<<1))|0);
- HEAP16[(($868)>>1)]=$865;
- label=130;break;
- case 129:
- var $870=$x;
- var $871=$line;
- var $872=(($871+($870<<1))|0);
- HEAP16[(($872)>>1)]=0;
- label=130;break;
- case 130:
- var $874=$count;
- var $875=((($874)-(1))|0);
- $count=$875;
- var $876=$x;
- var $877=((($876)+(1))|0);
- $x=$877;
- var $878=$mixmask;
- var $879=($878&255);
- var $880=$879<<1;
- var $881=(($880)&255);
- $mixmask=$881;
- var $882=$mixmask;
- var $883=($882&255);
- var $884=($883|0)==0;
- if($884){label=131;break;}else{label=135;break;}
- case 131:
- var $886=$fom_mask;
- var $887=($886|0)!=0;
- if($887){label=132;break;}else{label=133;break;}
- case 132:
- var $889=$fom_mask;
- var $896=$889;label=134;break;
- case 133:
- var $891=$5;
- var $892=(($891+1)|0);
- $5=$892;
- var $893=HEAP8[($891)];
- var $894=($893&255);
- var $896=$894;label=134;break;
- case 134:
- var $896;
- var $897=(($896)&255);
- $mask=$897;
- $mixmask=1;
- label=135;break;
- case 135:
- var $899=$mask;
- var $900=($899&255);
- var $901=$mixmask;
- var $902=($901&255);
- var $903=$900&$902;
- var $904=($903|0)!=0;
- if($904){label=136;break;}else{label=137;break;}
- case 136:
- var $906=$mix;
- var $907=$x;
- var $908=$line;
- var $909=(($908+($907<<1))|0);
- HEAP16[(($909)>>1)]=$906;
- label=138;break;
- case 137:
- var $911=$x;
- var $912=$line;
- var $913=(($912+($911<<1))|0);
- HEAP16[(($913)>>1)]=0;
- label=138;break;
- case 138:
- var $915=$count;
- var $916=((($915)-(1))|0);
- $count=$916;
- var $917=$x;
- var $918=((($917)+(1))|0);
- $x=$918;
- var $919=$mixmask;
- var $920=($919&255);
- var $921=$920<<1;
- var $922=(($921)&255);
- $mixmask=$922;
- var $923=$mixmask;
- var $924=($923&255);
- var $925=($924|0)==0;
- if($925){label=139;break;}else{label=143;break;}
- case 139:
- var $927=$fom_mask;
- var $928=($927|0)!=0;
- if($928){label=140;break;}else{label=141;break;}
- case 140:
- var $930=$fom_mask;
- var $937=$930;label=142;break;
- case 141:
- var $932=$5;
- var $933=(($932+1)|0);
- $5=$933;
- var $934=HEAP8[($932)];
- var $935=($934&255);
- var $937=$935;label=142;break;
- case 142:
- var $937;
- var $938=(($937)&255);
- $mask=$938;
- $mixmask=1;
- label=143;break;
- case 143:
- var $940=$mask;
- var $941=($940&255);
- var $942=$mixmask;
- var $943=($942&255);
- var $944=$941&$943;
- var $945=($944|0)!=0;
- if($945){label=144;break;}else{label=145;break;}
- case 144:
- var $947=$mix;
- var $948=$x;
- var $949=$line;
- var $950=(($949+($948<<1))|0);
- HEAP16[(($950)>>1)]=$947;
- label=146;break;
- case 145:
- var $952=$x;
- var $953=$line;
- var $954=(($953+($952<<1))|0);
- HEAP16[(($954)>>1)]=0;
- label=146;break;
- case 146:
- var $956=$count;
- var $957=((($956)-(1))|0);
- $count=$957;
- var $958=$x;
- var $959=((($958)+(1))|0);
- $x=$959;
- var $960=$mixmask;
- var $961=($960&255);
- var $962=$961<<1;
- var $963=(($962)&255);
- $mixmask=$963;
- var $964=$mixmask;
- var $965=($964&255);
- var $966=($965|0)==0;
- if($966){label=147;break;}else{label=151;break;}
- case 147:
- var $968=$fom_mask;
- var $969=($968|0)!=0;
- if($969){label=148;break;}else{label=149;break;}
- case 148:
- var $971=$fom_mask;
- var $978=$971;label=150;break;
- case 149:
- var $973=$5;
- var $974=(($973+1)|0);
- $5=$974;
- var $975=HEAP8[($973)];
- var $976=($975&255);
- var $978=$976;label=150;break;
- case 150:
- var $978;
- var $979=(($978)&255);
- $mask=$979;
- $mixmask=1;
- label=151;break;
- case 151:
- var $981=$mask;
- var $982=($981&255);
- var $983=$mixmask;
- var $984=($983&255);
- var $985=$982&$984;
- var $986=($985|0)!=0;
- if($986){label=152;break;}else{label=153;break;}
- case 152:
- var $988=$mix;
- var $989=$x;
- var $990=$line;
- var $991=(($990+($989<<1))|0);
- HEAP16[(($991)>>1)]=$988;
- label=154;break;
- case 153:
- var $993=$x;
- var $994=$line;
- var $995=(($994+($993<<1))|0);
- HEAP16[(($995)>>1)]=0;
- label=154;break;
- case 154:
- var $997=$count;
- var $998=((($997)-(1))|0);
- $count=$998;
- var $999=$x;
- var $1000=((($999)+(1))|0);
- $x=$1000;
- var $1001=$mixmask;
- var $1002=($1001&255);
- var $1003=$1002<<1;
- var $1004=(($1003)&255);
- $mixmask=$1004;
- var $1005=$mixmask;
- var $1006=($1005&255);
- var $1007=($1006|0)==0;
- if($1007){label=155;break;}else{label=159;break;}
- case 155:
- var $1009=$fom_mask;
- var $1010=($1009|0)!=0;
- if($1010){label=156;break;}else{label=157;break;}
- case 156:
- var $1012=$fom_mask;
- var $1019=$1012;label=158;break;
- case 157:
- var $1014=$5;
- var $1015=(($1014+1)|0);
- $5=$1015;
- var $1016=HEAP8[($1014)];
- var $1017=($1016&255);
- var $1019=$1017;label=158;break;
- case 158:
- var $1019;
- var $1020=(($1019)&255);
- $mask=$1020;
- $mixmask=1;
- label=159;break;
- case 159:
- var $1022=$mask;
- var $1023=($1022&255);
- var $1024=$mixmask;
- var $1025=($1024&255);
- var $1026=$1023&$1025;
- var $1027=($1026|0)!=0;
- if($1027){label=160;break;}else{label=161;break;}
- case 160:
- var $1029=$mix;
- var $1030=$x;
- var $1031=$line;
- var $1032=(($1031+($1030<<1))|0);
- HEAP16[(($1032)>>1)]=$1029;
- label=162;break;
- case 161:
- var $1034=$x;
- var $1035=$line;
- var $1036=(($1035+($1034<<1))|0);
- HEAP16[(($1036)>>1)]=0;
- label=162;break;
- case 162:
- var $1038=$count;
- var $1039=((($1038)-(1))|0);
- $count=$1039;
- var $1040=$x;
- var $1041=((($1040)+(1))|0);
- $x=$1041;
- label=95;break;
- case 163:
- label=164;break;
- case 164:
- var $1044=$count;
- var $1045=($1044|0)>0;
- if($1045){label=165;break;}else{var $1051=0;label=166;break;}
- case 165:
- var $1047=$x;
- var $1048=$3;
- var $1049=($1047|0)<($1048|0);
- var $1051=$1049;label=166;break;
- case 166:
- var $1051;
- if($1051){label=167;break;}else{label=176;break;}
- case 167:
- var $1053=$mixmask;
- var $1054=($1053&255);
- var $1055=$1054<<1;
- var $1056=(($1055)&255);
- $mixmask=$1056;
- var $1057=$mixmask;
- var $1058=($1057&255);
- var $1059=($1058|0)==0;
- if($1059){label=168;break;}else{label=172;break;}
- case 168:
- var $1061=$fom_mask;
- var $1062=($1061|0)!=0;
- if($1062){label=169;break;}else{label=170;break;}
- case 169:
- var $1064=$fom_mask;
- var $1071=$1064;label=171;break;
- case 170:
- var $1066=$5;
- var $1067=(($1066+1)|0);
- $5=$1067;
- var $1068=HEAP8[($1066)];
- var $1069=($1068&255);
- var $1071=$1069;label=171;break;
- case 171:
- var $1071;
- var $1072=(($1071)&255);
- $mask=$1072;
- $mixmask=1;
- label=172;break;
- case 172:
- var $1074=$mask;
- var $1075=($1074&255);
- var $1076=$mixmask;
- var $1077=($1076&255);
- var $1078=$1075&$1077;
- var $1079=($1078|0)!=0;
- if($1079){label=173;break;}else{label=174;break;}
- case 173:
- var $1081=$mix;
- var $1082=$x;
- var $1083=$line;
- var $1084=(($1083+($1082<<1))|0);
- HEAP16[(($1084)>>1)]=$1081;
- label=175;break;
- case 174:
- var $1086=$x;
- var $1087=$line;
- var $1088=(($1087+($1086<<1))|0);
- HEAP16[(($1088)>>1)]=0;
- label=175;break;
- case 175:
- var $1090=$count;
- var $1091=((($1090)-(1))|0);
- $count=$1091;
- var $1092=$x;
- var $1093=((($1092)+(1))|0);
- $x=$1093;
- label=164;break;
- case 176:
- label=260;break;
- case 177:
- label=178;break;
- case 178:
- var $1097=$count;
- var $1098=$1097&-8;
- var $1099=($1098|0)!=0;
- if($1099){label=179;break;}else{var $1106=0;label=180;break;}
- case 179:
- var $1101=$x;
- var $1102=((($1101)+(8))|0);
- var $1103=$3;
- var $1104=($1102|0)<($1103|0);
- var $1106=$1104;label=180;break;
- case 180:
- var $1106;
- if($1106){label=181;break;}else{label=246;break;}
- case 181:
- var $1108=$mixmask;
- var $1109=($1108&255);
- var $1110=$1109<<1;
- var $1111=(($1110)&255);
- $mixmask=$1111;
- var $1112=$mixmask;
- var $1113=($1112&255);
- var $1114=($1113|0)==0;
- if($1114){label=182;break;}else{label=186;break;}
- case 182:
- var $1116=$fom_mask;
- var $1117=($1116|0)!=0;
- if($1117){label=183;break;}else{label=184;break;}
- case 183:
- var $1119=$fom_mask;
- var $1126=$1119;label=185;break;
- case 184:
- var $1121=$5;
- var $1122=(($1121+1)|0);
- $5=$1122;
- var $1123=HEAP8[($1121)];
- var $1124=($1123&255);
- var $1126=$1124;label=185;break;
- case 185:
- var $1126;
- var $1127=(($1126)&255);
- $mask=$1127;
- $mixmask=1;
- label=186;break;
- case 186:
- var $1129=$mask;
- var $1130=($1129&255);
- var $1131=$mixmask;
- var $1132=($1131&255);
- var $1133=$1130&$1132;
- var $1134=($1133|0)!=0;
- if($1134){label=187;break;}else{label=188;break;}
- case 187:
- var $1136=$x;
- var $1137=$prevline;
- var $1138=(($1137+($1136<<1))|0);
- var $1139=HEAP16[(($1138)>>1)];
- var $1140=($1139&65535);
- var $1141=$mix;
- var $1142=($1141&65535);
- var $1143=$1140^$1142;
- var $1144=(($1143)&65535);
- var $1145=$x;
- var $1146=$line;
- var $1147=(($1146+($1145<<1))|0);
- HEAP16[(($1147)>>1)]=$1144;
- label=189;break;
- case 188:
- var $1149=$x;
- var $1150=$prevline;
- var $1151=(($1150+($1149<<1))|0);
- var $1152=HEAP16[(($1151)>>1)];
- var $1153=$x;
- var $1154=$line;
- var $1155=(($1154+($1153<<1))|0);
- HEAP16[(($1155)>>1)]=$1152;
- label=189;break;
- case 189:
- var $1157=$count;
- var $1158=((($1157)-(1))|0);
- $count=$1158;
- var $1159=$x;
- var $1160=((($1159)+(1))|0);
- $x=$1160;
- var $1161=$mixmask;
- var $1162=($1161&255);
- var $1163=$1162<<1;
- var $1164=(($1163)&255);
- $mixmask=$1164;
- var $1165=$mixmask;
- var $1166=($1165&255);
- var $1167=($1166|0)==0;
- if($1167){label=190;break;}else{label=194;break;}
- case 190:
- var $1169=$fom_mask;
- var $1170=($1169|0)!=0;
- if($1170){label=191;break;}else{label=192;break;}
- case 191:
- var $1172=$fom_mask;
- var $1179=$1172;label=193;break;
- case 192:
- var $1174=$5;
- var $1175=(($1174+1)|0);
- $5=$1175;
- var $1176=HEAP8[($1174)];
- var $1177=($1176&255);
- var $1179=$1177;label=193;break;
- case 193:
- var $1179;
- var $1180=(($1179)&255);
- $mask=$1180;
- $mixmask=1;
- label=194;break;
- case 194:
- var $1182=$mask;
- var $1183=($1182&255);
- var $1184=$mixmask;
- var $1185=($1184&255);
- var $1186=$1183&$1185;
- var $1187=($1186|0)!=0;
- if($1187){label=195;break;}else{label=196;break;}
- case 195:
- var $1189=$x;
- var $1190=$prevline;
- var $1191=(($1190+($1189<<1))|0);
- var $1192=HEAP16[(($1191)>>1)];
- var $1193=($1192&65535);
- var $1194=$mix;
- var $1195=($1194&65535);
- var $1196=$1193^$1195;
- var $1197=(($1196)&65535);
- var $1198=$x;
- var $1199=$line;
- var $1200=(($1199+($1198<<1))|0);
- HEAP16[(($1200)>>1)]=$1197;
- label=197;break;
- case 196:
- var $1202=$x;
- var $1203=$prevline;
- var $1204=(($1203+($1202<<1))|0);
- var $1205=HEAP16[(($1204)>>1)];
- var $1206=$x;
- var $1207=$line;
- var $1208=(($1207+($1206<<1))|0);
- HEAP16[(($1208)>>1)]=$1205;
- label=197;break;
- case 197:
- var $1210=$count;
- var $1211=((($1210)-(1))|0);
- $count=$1211;
- var $1212=$x;
- var $1213=((($1212)+(1))|0);
- $x=$1213;
- var $1214=$mixmask;
- var $1215=($1214&255);
- var $1216=$1215<<1;
- var $1217=(($1216)&255);
- $mixmask=$1217;
- var $1218=$mixmask;
- var $1219=($1218&255);
- var $1220=($1219|0)==0;
- if($1220){label=198;break;}else{label=202;break;}
- case 198:
- var $1222=$fom_mask;
- var $1223=($1222|0)!=0;
- if($1223){label=199;break;}else{label=200;break;}
- case 199:
- var $1225=$fom_mask;
- var $1232=$1225;label=201;break;
- case 200:
- var $1227=$5;
- var $1228=(($1227+1)|0);
- $5=$1228;
- var $1229=HEAP8[($1227)];
- var $1230=($1229&255);
- var $1232=$1230;label=201;break;
- case 201:
- var $1232;
- var $1233=(($1232)&255);
- $mask=$1233;
- $mixmask=1;
- label=202;break;
- case 202:
- var $1235=$mask;
- var $1236=($1235&255);
- var $1237=$mixmask;
- var $1238=($1237&255);
- var $1239=$1236&$1238;
- var $1240=($1239|0)!=0;
- if($1240){label=203;break;}else{label=204;break;}
- case 203:
- var $1242=$x;
- var $1243=$prevline;
- var $1244=(($1243+($1242<<1))|0);
- var $1245=HEAP16[(($1244)>>1)];
- var $1246=($1245&65535);
- var $1247=$mix;
- var $1248=($1247&65535);
- var $1249=$1246^$1248;
- var $1250=(($1249)&65535);
- var $1251=$x;
- var $1252=$line;
- var $1253=(($1252+($1251<<1))|0);
- HEAP16[(($1253)>>1)]=$1250;
- label=205;break;
- case 204:
- var $1255=$x;
- var $1256=$prevline;
- var $1257=(($1256+($1255<<1))|0);
- var $1258=HEAP16[(($1257)>>1)];
- var $1259=$x;
- var $1260=$line;
- var $1261=(($1260+($1259<<1))|0);
- HEAP16[(($1261)>>1)]=$1258;
- label=205;break;
- case 205:
- var $1263=$count;
- var $1264=((($1263)-(1))|0);
- $count=$1264;
- var $1265=$x;
- var $1266=((($1265)+(1))|0);
- $x=$1266;
- var $1267=$mixmask;
- var $1268=($1267&255);
- var $1269=$1268<<1;
- var $1270=(($1269)&255);
- $mixmask=$1270;
- var $1271=$mixmask;
- var $1272=($1271&255);
- var $1273=($1272|0)==0;
- if($1273){label=206;break;}else{label=210;break;}
- case 206:
- var $1275=$fom_mask;
- var $1276=($1275|0)!=0;
- if($1276){label=207;break;}else{label=208;break;}
- case 207:
- var $1278=$fom_mask;
- var $1285=$1278;label=209;break;
- case 208:
- var $1280=$5;
- var $1281=(($1280+1)|0);
- $5=$1281;
- var $1282=HEAP8[($1280)];
- var $1283=($1282&255);
- var $1285=$1283;label=209;break;
- case 209:
- var $1285;
- var $1286=(($1285)&255);
- $mask=$1286;
- $mixmask=1;
- label=210;break;
- case 210:
- var $1288=$mask;
- var $1289=($1288&255);
- var $1290=$mixmask;
- var $1291=($1290&255);
- var $1292=$1289&$1291;
- var $1293=($1292|0)!=0;
- if($1293){label=211;break;}else{label=212;break;}
- case 211:
- var $1295=$x;
- var $1296=$prevline;
- var $1297=(($1296+($1295<<1))|0);
- var $1298=HEAP16[(($1297)>>1)];
- var $1299=($1298&65535);
- var $1300=$mix;
- var $1301=($1300&65535);
- var $1302=$1299^$1301;
- var $1303=(($1302)&65535);
- var $1304=$x;
- var $1305=$line;
- var $1306=(($1305+($1304<<1))|0);
- HEAP16[(($1306)>>1)]=$1303;
- label=213;break;
- case 212:
- var $1308=$x;
- var $1309=$prevline;
- var $1310=(($1309+($1308<<1))|0);
- var $1311=HEAP16[(($1310)>>1)];
- var $1312=$x;
- var $1313=$line;
- var $1314=(($1313+($1312<<1))|0);
- HEAP16[(($1314)>>1)]=$1311;
- label=213;break;
- case 213:
- var $1316=$count;
- var $1317=((($1316)-(1))|0);
- $count=$1317;
- var $1318=$x;
- var $1319=((($1318)+(1))|0);
- $x=$1319;
- var $1320=$mixmask;
- var $1321=($1320&255);
- var $1322=$1321<<1;
- var $1323=(($1322)&255);
- $mixmask=$1323;
- var $1324=$mixmask;
- var $1325=($1324&255);
- var $1326=($1325|0)==0;
- if($1326){label=214;break;}else{label=218;break;}
- case 214:
- var $1328=$fom_mask;
- var $1329=($1328|0)!=0;
- if($1329){label=215;break;}else{label=216;break;}
- case 215:
- var $1331=$fom_mask;
- var $1338=$1331;label=217;break;
- case 216:
- var $1333=$5;
- var $1334=(($1333+1)|0);
- $5=$1334;
- var $1335=HEAP8[($1333)];
- var $1336=($1335&255);
- var $1338=$1336;label=217;break;
- case 217:
- var $1338;
- var $1339=(($1338)&255);
- $mask=$1339;
- $mixmask=1;
- label=218;break;
- case 218:
- var $1341=$mask;
- var $1342=($1341&255);
- var $1343=$mixmask;
- var $1344=($1343&255);
- var $1345=$1342&$1344;
- var $1346=($1345|0)!=0;
- if($1346){label=219;break;}else{label=220;break;}
- case 219:
- var $1348=$x;
- var $1349=$prevline;
- var $1350=(($1349+($1348<<1))|0);
- var $1351=HEAP16[(($1350)>>1)];
- var $1352=($1351&65535);
- var $1353=$mix;
- var $1354=($1353&65535);
- var $1355=$1352^$1354;
- var $1356=(($1355)&65535);
- var $1357=$x;
- var $1358=$line;
- var $1359=(($1358+($1357<<1))|0);
- HEAP16[(($1359)>>1)]=$1356;
- label=221;break;
- case 220:
- var $1361=$x;
- var $1362=$prevline;
- var $1363=(($1362+($1361<<1))|0);
- var $1364=HEAP16[(($1363)>>1)];
- var $1365=$x;
- var $1366=$line;
- var $1367=(($1366+($1365<<1))|0);
- HEAP16[(($1367)>>1)]=$1364;
- label=221;break;
- case 221:
- var $1369=$count;
- var $1370=((($1369)-(1))|0);
- $count=$1370;
- var $1371=$x;
- var $1372=((($1371)+(1))|0);
- $x=$1372;
- var $1373=$mixmask;
- var $1374=($1373&255);
- var $1375=$1374<<1;
- var $1376=(($1375)&255);
- $mixmask=$1376;
- var $1377=$mixmask;
- var $1378=($1377&255);
- var $1379=($1378|0)==0;
- if($1379){label=222;break;}else{label=226;break;}
- case 222:
- var $1381=$fom_mask;
- var $1382=($1381|0)!=0;
- if($1382){label=223;break;}else{label=224;break;}
- case 223:
- var $1384=$fom_mask;
- var $1391=$1384;label=225;break;
- case 224:
- var $1386=$5;
- var $1387=(($1386+1)|0);
- $5=$1387;
- var $1388=HEAP8[($1386)];
- var $1389=($1388&255);
- var $1391=$1389;label=225;break;
- case 225:
- var $1391;
- var $1392=(($1391)&255);
- $mask=$1392;
- $mixmask=1;
- label=226;break;
- case 226:
- var $1394=$mask;
- var $1395=($1394&255);
- var $1396=$mixmask;
- var $1397=($1396&255);
- var $1398=$1395&$1397;
- var $1399=($1398|0)!=0;
- if($1399){label=227;break;}else{label=228;break;}
- case 227:
- var $1401=$x;
- var $1402=$prevline;
- var $1403=(($1402+($1401<<1))|0);
- var $1404=HEAP16[(($1403)>>1)];
- var $1405=($1404&65535);
- var $1406=$mix;
- var $1407=($1406&65535);
- var $1408=$1405^$1407;
- var $1409=(($1408)&65535);
- var $1410=$x;
- var $1411=$line;
- var $1412=(($1411+($1410<<1))|0);
- HEAP16[(($1412)>>1)]=$1409;
- label=229;break;
- case 228:
- var $1414=$x;
- var $1415=$prevline;
- var $1416=(($1415+($1414<<1))|0);
- var $1417=HEAP16[(($1416)>>1)];
- var $1418=$x;
- var $1419=$line;
- var $1420=(($1419+($1418<<1))|0);
- HEAP16[(($1420)>>1)]=$1417;
- label=229;break;
- case 229:
- var $1422=$count;
- var $1423=((($1422)-(1))|0);
- $count=$1423;
- var $1424=$x;
- var $1425=((($1424)+(1))|0);
- $x=$1425;
- var $1426=$mixmask;
- var $1427=($1426&255);
- var $1428=$1427<<1;
- var $1429=(($1428)&255);
- $mixmask=$1429;
- var $1430=$mixmask;
- var $1431=($1430&255);
- var $1432=($1431|0)==0;
- if($1432){label=230;break;}else{label=234;break;}
- case 230:
- var $1434=$fom_mask;
- var $1435=($1434|0)!=0;
- if($1435){label=231;break;}else{label=232;break;}
- case 231:
- var $1437=$fom_mask;
- var $1444=$1437;label=233;break;
- case 232:
- var $1439=$5;
- var $1440=(($1439+1)|0);
- $5=$1440;
- var $1441=HEAP8[($1439)];
- var $1442=($1441&255);
- var $1444=$1442;label=233;break;
- case 233:
- var $1444;
- var $1445=(($1444)&255);
- $mask=$1445;
- $mixmask=1;
- label=234;break;
- case 234:
- var $1447=$mask;
- var $1448=($1447&255);
- var $1449=$mixmask;
- var $1450=($1449&255);
- var $1451=$1448&$1450;
- var $1452=($1451|0)!=0;
- if($1452){label=235;break;}else{label=236;break;}
- case 235:
- var $1454=$x;
- var $1455=$prevline;
- var $1456=(($1455+($1454<<1))|0);
- var $1457=HEAP16[(($1456)>>1)];
- var $1458=($1457&65535);
- var $1459=$mix;
- var $1460=($1459&65535);
- var $1461=$1458^$1460;
- var $1462=(($1461)&65535);
- var $1463=$x;
- var $1464=$line;
- var $1465=(($1464+($1463<<1))|0);
- HEAP16[(($1465)>>1)]=$1462;
- label=237;break;
- case 236:
- var $1467=$x;
- var $1468=$prevline;
- var $1469=(($1468+($1467<<1))|0);
- var $1470=HEAP16[(($1469)>>1)];
- var $1471=$x;
- var $1472=$line;
- var $1473=(($1472+($1471<<1))|0);
- HEAP16[(($1473)>>1)]=$1470;
- label=237;break;
- case 237:
- var $1475=$count;
- var $1476=((($1475)-(1))|0);
- $count=$1476;
- var $1477=$x;
- var $1478=((($1477)+(1))|0);
- $x=$1478;
- var $1479=$mixmask;
- var $1480=($1479&255);
- var $1481=$1480<<1;
- var $1482=(($1481)&255);
- $mixmask=$1482;
- var $1483=$mixmask;
- var $1484=($1483&255);
- var $1485=($1484|0)==0;
- if($1485){label=238;break;}else{label=242;break;}
- case 238:
- var $1487=$fom_mask;
- var $1488=($1487|0)!=0;
- if($1488){label=239;break;}else{label=240;break;}
- case 239:
- var $1490=$fom_mask;
- var $1497=$1490;label=241;break;
- case 240:
- var $1492=$5;
- var $1493=(($1492+1)|0);
- $5=$1493;
- var $1494=HEAP8[($1492)];
- var $1495=($1494&255);
- var $1497=$1495;label=241;break;
- case 241:
- var $1497;
- var $1498=(($1497)&255);
- $mask=$1498;
- $mixmask=1;
- label=242;break;
- case 242:
- var $1500=$mask;
- var $1501=($1500&255);
- var $1502=$mixmask;
- var $1503=($1502&255);
- var $1504=$1501&$1503;
- var $1505=($1504|0)!=0;
- if($1505){label=243;break;}else{label=244;break;}
- case 243:
- var $1507=$x;
- var $1508=$prevline;
- var $1509=(($1508+($1507<<1))|0);
- var $1510=HEAP16[(($1509)>>1)];
- var $1511=($1510&65535);
- var $1512=$mix;
- var $1513=($1512&65535);
- var $1514=$1511^$1513;
- var $1515=(($1514)&65535);
- var $1516=$x;
- var $1517=$line;
- var $1518=(($1517+($1516<<1))|0);
- HEAP16[(($1518)>>1)]=$1515;
- label=245;break;
- case 244:
- var $1520=$x;
- var $1521=$prevline;
- var $1522=(($1521+($1520<<1))|0);
- var $1523=HEAP16[(($1522)>>1)];
- var $1524=$x;
- var $1525=$line;
- var $1526=(($1525+($1524<<1))|0);
- HEAP16[(($1526)>>1)]=$1523;
- label=245;break;
- case 245:
- var $1528=$count;
- var $1529=((($1528)-(1))|0);
- $count=$1529;
- var $1530=$x;
- var $1531=((($1530)+(1))|0);
- $x=$1531;
- label=178;break;
- case 246:
- label=247;break;
- case 247:
- var $1534=$count;
- var $1535=($1534|0)>0;
- if($1535){label=248;break;}else{var $1541=0;label=249;break;}
- case 248:
- var $1537=$x;
- var $1538=$3;
- var $1539=($1537|0)<($1538|0);
- var $1541=$1539;label=249;break;
- case 249:
- var $1541;
- if($1541){label=250;break;}else{label=259;break;}
- case 250:
- var $1543=$mixmask;
- var $1544=($1543&255);
- var $1545=$1544<<1;
- var $1546=(($1545)&255);
- $mixmask=$1546;
- var $1547=$mixmask;
- var $1548=($1547&255);
- var $1549=($1548|0)==0;
- if($1549){label=251;break;}else{label=255;break;}
- case 251:
- var $1551=$fom_mask;
- var $1552=($1551|0)!=0;
- if($1552){label=252;break;}else{label=253;break;}
- case 252:
- var $1554=$fom_mask;
- var $1561=$1554;label=254;break;
- case 253:
- var $1556=$5;
- var $1557=(($1556+1)|0);
- $5=$1557;
- var $1558=HEAP8[($1556)];
- var $1559=($1558&255);
- var $1561=$1559;label=254;break;
- case 254:
- var $1561;
- var $1562=(($1561)&255);
- $mask=$1562;
- $mixmask=1;
- label=255;break;
- case 255:
- var $1564=$mask;
- var $1565=($1564&255);
- var $1566=$mixmask;
- var $1567=($1566&255);
- var $1568=$1565&$1567;
- var $1569=($1568|0)!=0;
- if($1569){label=256;break;}else{label=257;break;}
- case 256:
- var $1571=$x;
- var $1572=$prevline;
- var $1573=(($1572+($1571<<1))|0);
- var $1574=HEAP16[(($1573)>>1)];
- var $1575=($1574&65535);
- var $1576=$mix;
- var $1577=($1576&65535);
- var $1578=$1575^$1577;
- var $1579=(($1578)&65535);
- var $1580=$x;
- var $1581=$line;
- var $1582=(($1581+($1580<<1))|0);
- HEAP16[(($1582)>>1)]=$1579;
- label=258;break;
- case 257:
- var $1584=$x;
- var $1585=$prevline;
- var $1586=(($1585+($1584<<1))|0);
- var $1587=HEAP16[(($1586)>>1)];
- var $1588=$x;
- var $1589=$line;
- var $1590=(($1589+($1588<<1))|0);
- HEAP16[(($1590)>>1)]=$1587;
- label=258;break;
- case 258:
- var $1592=$count;
- var $1593=((($1592)-(1))|0);
- $count=$1593;
- var $1594=$x;
- var $1595=((($1594)+(1))|0);
- $x=$1595;
- label=247;break;
- case 259:
- label=260;break;
- case 260:
- label=344;break;
- case 261:
- label=262;break;
- case 262:
- var $1600=$count;
- var $1601=$1600&-8;
- var $1602=($1601|0)!=0;
- if($1602){label=263;break;}else{var $1609=0;label=264;break;}
- case 263:
- var $1604=$x;
- var $1605=((($1604)+(8))|0);
- var $1606=$3;
- var $1607=($1605|0)<($1606|0);
- var $1609=$1607;label=264;break;
- case 264:
- var $1609;
- if($1609){label=265;break;}else{label=266;break;}
- case 265:
- var $1611=$colour2;
- var $1612=$x;
- var $1613=$line;
- var $1614=(($1613+($1612<<1))|0);
- HEAP16[(($1614)>>1)]=$1611;
- var $1615=$count;
- var $1616=((($1615)-(1))|0);
- $count=$1616;
- var $1617=$x;
- var $1618=((($1617)+(1))|0);
- $x=$1618;
- var $1619=$colour2;
- var $1620=$x;
- var $1621=$line;
- var $1622=(($1621+($1620<<1))|0);
- HEAP16[(($1622)>>1)]=$1619;
- var $1623=$count;
- var $1624=((($1623)-(1))|0);
- $count=$1624;
- var $1625=$x;
- var $1626=((($1625)+(1))|0);
- $x=$1626;
- var $1627=$colour2;
- var $1628=$x;
- var $1629=$line;
- var $1630=(($1629+($1628<<1))|0);
- HEAP16[(($1630)>>1)]=$1627;
- var $1631=$count;
- var $1632=((($1631)-(1))|0);
- $count=$1632;
- var $1633=$x;
- var $1634=((($1633)+(1))|0);
- $x=$1634;
- var $1635=$colour2;
- var $1636=$x;
- var $1637=$line;
- var $1638=(($1637+($1636<<1))|0);
- HEAP16[(($1638)>>1)]=$1635;
- var $1639=$count;
- var $1640=((($1639)-(1))|0);
- $count=$1640;
- var $1641=$x;
- var $1642=((($1641)+(1))|0);
- $x=$1642;
- var $1643=$colour2;
- var $1644=$x;
- var $1645=$line;
- var $1646=(($1645+($1644<<1))|0);
- HEAP16[(($1646)>>1)]=$1643;
- var $1647=$count;
- var $1648=((($1647)-(1))|0);
- $count=$1648;
- var $1649=$x;
- var $1650=((($1649)+(1))|0);
- $x=$1650;
- var $1651=$colour2;
- var $1652=$x;
- var $1653=$line;
- var $1654=(($1653+($1652<<1))|0);
- HEAP16[(($1654)>>1)]=$1651;
- var $1655=$count;
- var $1656=((($1655)-(1))|0);
- $count=$1656;
- var $1657=$x;
- var $1658=((($1657)+(1))|0);
- $x=$1658;
- var $1659=$colour2;
- var $1660=$x;
- var $1661=$line;
- var $1662=(($1661+($1660<<1))|0);
- HEAP16[(($1662)>>1)]=$1659;
- var $1663=$count;
- var $1664=((($1663)-(1))|0);
- $count=$1664;
- var $1665=$x;
- var $1666=((($1665)+(1))|0);
- $x=$1666;
- var $1667=$colour2;
- var $1668=$x;
- var $1669=$line;
- var $1670=(($1669+($1668<<1))|0);
- HEAP16[(($1670)>>1)]=$1667;
- var $1671=$count;
- var $1672=((($1671)-(1))|0);
- $count=$1672;
- var $1673=$x;
- var $1674=((($1673)+(1))|0);
- $x=$1674;
- label=262;break;
- case 266:
- label=267;break;
- case 267:
- var $1677=$count;
- var $1678=($1677|0)>0;
- if($1678){label=268;break;}else{var $1684=0;label=269;break;}
- case 268:
- var $1680=$x;
- var $1681=$3;
- var $1682=($1680|0)<($1681|0);
- var $1684=$1682;label=269;break;
- case 269:
- var $1684;
- if($1684){label=270;break;}else{label=271;break;}
- case 270:
- var $1686=$colour2;
- var $1687=$x;
- var $1688=$line;
- var $1689=(($1688+($1687<<1))|0);
- HEAP16[(($1689)>>1)]=$1686;
- var $1690=$count;
- var $1691=((($1690)-(1))|0);
- $count=$1691;
- var $1692=$x;
- var $1693=((($1692)+(1))|0);
- $x=$1693;
- label=267;break;
- case 271:
- label=344;break;
- case 272:
- label=273;break;
- case 273:
- var $1697=$count;
- var $1698=$1697&-8;
- var $1699=($1698|0)!=0;
- if($1699){label=274;break;}else{var $1706=0;label=275;break;}
- case 274:
- var $1701=$x;
- var $1702=((($1701)+(8))|0);
- var $1703=$3;
- var $1704=($1702|0)<($1703|0);
- var $1706=$1704;label=275;break;
- case 275:
- var $1706;
- if($1706){label=276;break;}else{label=277;break;}
- case 276:
- var $1708=$5;
- var $1709=(($1708+1)|0);
- $5=$1709;
- var $1710=HEAP8[($1708)];
- var $1711=($1710&255);
- var $1712=$x;
- var $1713=$line;
- var $1714=(($1713+($1712<<1))|0);
- HEAP16[(($1714)>>1)]=$1711;
- var $1715=$5;
- var $1716=(($1715+1)|0);
- $5=$1716;
- var $1717=HEAP8[($1715)];
- var $1718=($1717&255);
- var $1719=$1718<<8;
- var $1720=$x;
- var $1721=$line;
- var $1722=(($1721+($1720<<1))|0);
- var $1723=HEAP16[(($1722)>>1)];
- var $1724=($1723&65535);
- var $1725=$1724|$1719;
- var $1726=(($1725)&65535);
- HEAP16[(($1722)>>1)]=$1726;
- var $1727=$count;
- var $1728=((($1727)-(1))|0);
- $count=$1728;
- var $1729=$x;
- var $1730=((($1729)+(1))|0);
- $x=$1730;
- var $1731=$5;
- var $1732=(($1731+1)|0);
- $5=$1732;
- var $1733=HEAP8[($1731)];
- var $1734=($1733&255);
- var $1735=$x;
- var $1736=$line;
- var $1737=(($1736+($1735<<1))|0);
- HEAP16[(($1737)>>1)]=$1734;
- var $1738=$5;
- var $1739=(($1738+1)|0);
- $5=$1739;
- var $1740=HEAP8[($1738)];
- var $1741=($1740&255);
- var $1742=$1741<<8;
- var $1743=$x;
- var $1744=$line;
- var $1745=(($1744+($1743<<1))|0);
- var $1746=HEAP16[(($1745)>>1)];
- var $1747=($1746&65535);
- var $1748=$1747|$1742;
- var $1749=(($1748)&65535);
- HEAP16[(($1745)>>1)]=$1749;
- var $1750=$count;
- var $1751=((($1750)-(1))|0);
- $count=$1751;
- var $1752=$x;
- var $1753=((($1752)+(1))|0);
- $x=$1753;
- var $1754=$5;
- var $1755=(($1754+1)|0);
- $5=$1755;
- var $1756=HEAP8[($1754)];
- var $1757=($1756&255);
- var $1758=$x;
- var $1759=$line;
- var $1760=(($1759+($1758<<1))|0);
- HEAP16[(($1760)>>1)]=$1757;
- var $1761=$5;
- var $1762=(($1761+1)|0);
- $5=$1762;
- var $1763=HEAP8[($1761)];
- var $1764=($1763&255);
- var $1765=$1764<<8;
- var $1766=$x;
- var $1767=$line;
- var $1768=(($1767+($1766<<1))|0);
- var $1769=HEAP16[(($1768)>>1)];
- var $1770=($1769&65535);
- var $1771=$1770|$1765;
- var $1772=(($1771)&65535);
- HEAP16[(($1768)>>1)]=$1772;
- var $1773=$count;
- var $1774=((($1773)-(1))|0);
- $count=$1774;
- var $1775=$x;
- var $1776=((($1775)+(1))|0);
- $x=$1776;
- var $1777=$5;
- var $1778=(($1777+1)|0);
- $5=$1778;
- var $1779=HEAP8[($1777)];
- var $1780=($1779&255);
- var $1781=$x;
- var $1782=$line;
- var $1783=(($1782+($1781<<1))|0);
- HEAP16[(($1783)>>1)]=$1780;
- var $1784=$5;
- var $1785=(($1784+1)|0);
- $5=$1785;
- var $1786=HEAP8[($1784)];
- var $1787=($1786&255);
- var $1788=$1787<<8;
- var $1789=$x;
- var $1790=$line;
- var $1791=(($1790+($1789<<1))|0);
- var $1792=HEAP16[(($1791)>>1)];
- var $1793=($1792&65535);
- var $1794=$1793|$1788;
- var $1795=(($1794)&65535);
- HEAP16[(($1791)>>1)]=$1795;
- var $1796=$count;
- var $1797=((($1796)-(1))|0);
- $count=$1797;
- var $1798=$x;
- var $1799=((($1798)+(1))|0);
- $x=$1799;
- var $1800=$5;
- var $1801=(($1800+1)|0);
- $5=$1801;
- var $1802=HEAP8[($1800)];
- var $1803=($1802&255);
- var $1804=$x;
- var $1805=$line;
- var $1806=(($1805+($1804<<1))|0);
- HEAP16[(($1806)>>1)]=$1803;
- var $1807=$5;
- var $1808=(($1807+1)|0);
- $5=$1808;
- var $1809=HEAP8[($1807)];
- var $1810=($1809&255);
- var $1811=$1810<<8;
- var $1812=$x;
- var $1813=$line;
- var $1814=(($1813+($1812<<1))|0);
- var $1815=HEAP16[(($1814)>>1)];
- var $1816=($1815&65535);
- var $1817=$1816|$1811;
- var $1818=(($1817)&65535);
- HEAP16[(($1814)>>1)]=$1818;
- var $1819=$count;
- var $1820=((($1819)-(1))|0);
- $count=$1820;
- var $1821=$x;
- var $1822=((($1821)+(1))|0);
- $x=$1822;
- var $1823=$5;
- var $1824=(($1823+1)|0);
- $5=$1824;
- var $1825=HEAP8[($1823)];
- var $1826=($1825&255);
- var $1827=$x;
- var $1828=$line;
- var $1829=(($1828+($1827<<1))|0);
- HEAP16[(($1829)>>1)]=$1826;
- var $1830=$5;
- var $1831=(($1830+1)|0);
- $5=$1831;
- var $1832=HEAP8[($1830)];
- var $1833=($1832&255);
- var $1834=$1833<<8;
- var $1835=$x;
- var $1836=$line;
- var $1837=(($1836+($1835<<1))|0);
- var $1838=HEAP16[(($1837)>>1)];
- var $1839=($1838&65535);
- var $1840=$1839|$1834;
- var $1841=(($1840)&65535);
- HEAP16[(($1837)>>1)]=$1841;
- var $1842=$count;
- var $1843=((($1842)-(1))|0);
- $count=$1843;
- var $1844=$x;
- var $1845=((($1844)+(1))|0);
- $x=$1845;
- var $1846=$5;
- var $1847=(($1846+1)|0);
- $5=$1847;
- var $1848=HEAP8[($1846)];
- var $1849=($1848&255);
- var $1850=$x;
- var $1851=$line;
- var $1852=(($1851+($1850<<1))|0);
- HEAP16[(($1852)>>1)]=$1849;
- var $1853=$5;
- var $1854=(($1853+1)|0);
- $5=$1854;
- var $1855=HEAP8[($1853)];
- var $1856=($1855&255);
- var $1857=$1856<<8;
- var $1858=$x;
- var $1859=$line;
- var $1860=(($1859+($1858<<1))|0);
- var $1861=HEAP16[(($1860)>>1)];
- var $1862=($1861&65535);
- var $1863=$1862|$1857;
- var $1864=(($1863)&65535);
- HEAP16[(($1860)>>1)]=$1864;
- var $1865=$count;
- var $1866=((($1865)-(1))|0);
- $count=$1866;
- var $1867=$x;
- var $1868=((($1867)+(1))|0);
- $x=$1868;
- var $1869=$5;
- var $1870=(($1869+1)|0);
- $5=$1870;
- var $1871=HEAP8[($1869)];
- var $1872=($1871&255);
- var $1873=$x;
- var $1874=$line;
- var $1875=(($1874+($1873<<1))|0);
- HEAP16[(($1875)>>1)]=$1872;
- var $1876=$5;
- var $1877=(($1876+1)|0);
- $5=$1877;
- var $1878=HEAP8[($1876)];
- var $1879=($1878&255);
- var $1880=$1879<<8;
- var $1881=$x;
- var $1882=$line;
- var $1883=(($1882+($1881<<1))|0);
- var $1884=HEAP16[(($1883)>>1)];
- var $1885=($1884&65535);
- var $1886=$1885|$1880;
- var $1887=(($1886)&65535);
- HEAP16[(($1883)>>1)]=$1887;
- var $1888=$count;
- var $1889=((($1888)-(1))|0);
- $count=$1889;
- var $1890=$x;
- var $1891=((($1890)+(1))|0);
- $x=$1891;
- label=273;break;
- case 277:
- label=278;break;
- case 278:
- var $1894=$count;
- var $1895=($1894|0)>0;
- if($1895){label=279;break;}else{var $1901=0;label=280;break;}
- case 279:
- var $1897=$x;
- var $1898=$3;
- var $1899=($1897|0)<($1898|0);
- var $1901=$1899;label=280;break;
- case 280:
- var $1901;
- if($1901){label=281;break;}else{label=282;break;}
- case 281:
- var $1903=$5;
- var $1904=(($1903+1)|0);
- $5=$1904;
- var $1905=HEAP8[($1903)];
- var $1906=($1905&255);
- var $1907=$x;
- var $1908=$line;
- var $1909=(($1908+($1907<<1))|0);
- HEAP16[(($1909)>>1)]=$1906;
- var $1910=$5;
- var $1911=(($1910+1)|0);
- $5=$1911;
- var $1912=HEAP8[($1910)];
- var $1913=($1912&255);
- var $1914=$1913<<8;
- var $1915=$x;
- var $1916=$line;
- var $1917=(($1916+($1915<<1))|0);
- var $1918=HEAP16[(($1917)>>1)];
- var $1919=($1918&65535);
- var $1920=$1919|$1914;
- var $1921=(($1920)&65535);
- HEAP16[(($1917)>>1)]=$1921;
- var $1922=$count;
- var $1923=((($1922)-(1))|0);
- $count=$1923;
- var $1924=$x;
- var $1925=((($1924)+(1))|0);
- $x=$1925;
- label=278;break;
- case 282:
- label=344;break;
- case 283:
- label=284;break;
- case 284:
- var $1929=$count;
- var $1930=$1929&-8;
- var $1931=($1930|0)!=0;
- if($1931){label=285;break;}else{var $1938=0;label=286;break;}
- case 285:
- var $1933=$x;
- var $1934=((($1933)+(8))|0);
- var $1935=$3;
- var $1936=($1934|0)<($1935|0);
- var $1938=$1936;label=286;break;
- case 286:
- var $1938;
- if($1938){label=287;break;}else{label=312;break;}
- case 287:
- var $1940=$bicolour;
- var $1941=($1940|0)!=0;
- if($1941){label=288;break;}else{label=289;break;}
- case 288:
- var $1943=$colour2;
- var $1944=$x;
- var $1945=$line;
- var $1946=(($1945+($1944<<1))|0);
- HEAP16[(($1946)>>1)]=$1943;
- $bicolour=0;
- label=290;break;
- case 289:
- var $1948=$colour1;
- var $1949=$x;
- var $1950=$line;
- var $1951=(($1950+($1949<<1))|0);
- HEAP16[(($1951)>>1)]=$1948;
- $bicolour=1;
- var $1952=$count;
- var $1953=((($1952)+(1))|0);
- $count=$1953;
- label=290;break;
- case 290:
- var $1955=$count;
- var $1956=((($1955)-(1))|0);
- $count=$1956;
- var $1957=$x;
- var $1958=((($1957)+(1))|0);
- $x=$1958;
- var $1959=$bicolour;
- var $1960=($1959|0)!=0;
- if($1960){label=291;break;}else{label=292;break;}
- case 291:
- var $1962=$colour2;
- var $1963=$x;
- var $1964=$line;
- var $1965=(($1964+($1963<<1))|0);
- HEAP16[(($1965)>>1)]=$1962;
- $bicolour=0;
- label=293;break;
- case 292:
- var $1967=$colour1;
- var $1968=$x;
- var $1969=$line;
- var $1970=(($1969+($1968<<1))|0);
- HEAP16[(($1970)>>1)]=$1967;
- $bicolour=1;
- var $1971=$count;
- var $1972=((($1971)+(1))|0);
- $count=$1972;
- label=293;break;
- case 293:
- var $1974=$count;
- var $1975=((($1974)-(1))|0);
- $count=$1975;
- var $1976=$x;
- var $1977=((($1976)+(1))|0);
- $x=$1977;
- var $1978=$bicolour;
- var $1979=($1978|0)!=0;
- if($1979){label=294;break;}else{label=295;break;}
- case 294:
- var $1981=$colour2;
- var $1982=$x;
- var $1983=$line;
- var $1984=(($1983+($1982<<1))|0);
- HEAP16[(($1984)>>1)]=$1981;
- $bicolour=0;
- label=296;break;
- case 295:
- var $1986=$colour1;
- var $1987=$x;
- var $1988=$line;
- var $1989=(($1988+($1987<<1))|0);
- HEAP16[(($1989)>>1)]=$1986;
- $bicolour=1;
- var $1990=$count;
- var $1991=((($1990)+(1))|0);
- $count=$1991;
- label=296;break;
- case 296:
- var $1993=$count;
- var $1994=((($1993)-(1))|0);
- $count=$1994;
- var $1995=$x;
- var $1996=((($1995)+(1))|0);
- $x=$1996;
- var $1997=$bicolour;
- var $1998=($1997|0)!=0;
- if($1998){label=297;break;}else{label=298;break;}
- case 297:
- var $2000=$colour2;
- var $2001=$x;
- var $2002=$line;
- var $2003=(($2002+($2001<<1))|0);
- HEAP16[(($2003)>>1)]=$2000;
- $bicolour=0;
- label=299;break;
- case 298:
- var $2005=$colour1;
- var $2006=$x;
- var $2007=$line;
- var $2008=(($2007+($2006<<1))|0);
- HEAP16[(($2008)>>1)]=$2005;
- $bicolour=1;
- var $2009=$count;
- var $2010=((($2009)+(1))|0);
- $count=$2010;
- label=299;break;
- case 299:
- var $2012=$count;
- var $2013=((($2012)-(1))|0);
- $count=$2013;
- var $2014=$x;
- var $2015=((($2014)+(1))|0);
- $x=$2015;
- var $2016=$bicolour;
- var $2017=($2016|0)!=0;
- if($2017){label=300;break;}else{label=301;break;}
- case 300:
- var $2019=$colour2;
- var $2020=$x;
- var $2021=$line;
- var $2022=(($2021+($2020<<1))|0);
- HEAP16[(($2022)>>1)]=$2019;
- $bicolour=0;
- label=302;break;
- case 301:
- var $2024=$colour1;
- var $2025=$x;
- var $2026=$line;
- var $2027=(($2026+($2025<<1))|0);
- HEAP16[(($2027)>>1)]=$2024;
- $bicolour=1;
- var $2028=$count;
- var $2029=((($2028)+(1))|0);
- $count=$2029;
- label=302;break;
- case 302:
- var $2031=$count;
- var $2032=((($2031)-(1))|0);
- $count=$2032;
- var $2033=$x;
- var $2034=((($2033)+(1))|0);
- $x=$2034;
- var $2035=$bicolour;
- var $2036=($2035|0)!=0;
- if($2036){label=303;break;}else{label=304;break;}
- case 303:
- var $2038=$colour2;
- var $2039=$x;
- var $2040=$line;
- var $2041=(($2040+($2039<<1))|0);
- HEAP16[(($2041)>>1)]=$2038;
- $bicolour=0;
- label=305;break;
- case 304:
- var $2043=$colour1;
- var $2044=$x;
- var $2045=$line;
- var $2046=(($2045+($2044<<1))|0);
- HEAP16[(($2046)>>1)]=$2043;
- $bicolour=1;
- var $2047=$count;
- var $2048=((($2047)+(1))|0);
- $count=$2048;
- label=305;break;
- case 305:
- var $2050=$count;
- var $2051=((($2050)-(1))|0);
- $count=$2051;
- var $2052=$x;
- var $2053=((($2052)+(1))|0);
- $x=$2053;
- var $2054=$bicolour;
- var $2055=($2054|0)!=0;
- if($2055){label=306;break;}else{label=307;break;}
- case 306:
- var $2057=$colour2;
- var $2058=$x;
- var $2059=$line;
- var $2060=(($2059+($2058<<1))|0);
- HEAP16[(($2060)>>1)]=$2057;
- $bicolour=0;
- label=308;break;
- case 307:
- var $2062=$colour1;
- var $2063=$x;
- var $2064=$line;
- var $2065=(($2064+($2063<<1))|0);
- HEAP16[(($2065)>>1)]=$2062;
- $bicolour=1;
- var $2066=$count;
- var $2067=((($2066)+(1))|0);
- $count=$2067;
- label=308;break;
- case 308:
- var $2069=$count;
- var $2070=((($2069)-(1))|0);
- $count=$2070;
- var $2071=$x;
- var $2072=((($2071)+(1))|0);
- $x=$2072;
- var $2073=$bicolour;
- var $2074=($2073|0)!=0;
- if($2074){label=309;break;}else{label=310;break;}
- case 309:
- var $2076=$colour2;
- var $2077=$x;
- var $2078=$line;
- var $2079=(($2078+($2077<<1))|0);
- HEAP16[(($2079)>>1)]=$2076;
- $bicolour=0;
- label=311;break;
- case 310:
- var $2081=$colour1;
- var $2082=$x;
- var $2083=$line;
- var $2084=(($2083+($2082<<1))|0);
- HEAP16[(($2084)>>1)]=$2081;
- $bicolour=1;
- var $2085=$count;
- var $2086=((($2085)+(1))|0);
- $count=$2086;
- label=311;break;
- case 311:
- var $2088=$count;
- var $2089=((($2088)-(1))|0);
- $count=$2089;
- var $2090=$x;
- var $2091=((($2090)+(1))|0);
- $x=$2091;
- label=284;break;
- case 312:
- label=313;break;
- case 313:
- var $2094=$count;
- var $2095=($2094|0)>0;
- if($2095){label=314;break;}else{var $2101=0;label=315;break;}
- case 314:
- var $2097=$x;
- var $2098=$3;
- var $2099=($2097|0)<($2098|0);
- var $2101=$2099;label=315;break;
- case 315:
- var $2101;
- if($2101){label=316;break;}else{label=320;break;}
- case 316:
- var $2103=$bicolour;
- var $2104=($2103|0)!=0;
- if($2104){label=317;break;}else{label=318;break;}
- case 317:
- var $2106=$colour2;
- var $2107=$x;
- var $2108=$line;
- var $2109=(($2108+($2107<<1))|0);
- HEAP16[(($2109)>>1)]=$2106;
- $bicolour=0;
- label=319;break;
- case 318:
- var $2111=$colour1;
- var $2112=$x;
- var $2113=$line;
- var $2114=(($2113+($2112<<1))|0);
- HEAP16[(($2114)>>1)]=$2111;
- $bicolour=1;
- var $2115=$count;
- var $2116=((($2115)+(1))|0);
- $count=$2116;
- label=319;break;
- case 319:
- var $2118=$count;
- var $2119=((($2118)-(1))|0);
- $count=$2119;
- var $2120=$x;
- var $2121=((($2120)+(1))|0);
- $x=$2121;
- label=313;break;
- case 320:
- label=344;break;
- case 321:
- label=322;break;
- case 322:
- var $2125=$count;
- var $2126=$2125&-8;
- var $2127=($2126|0)!=0;
- if($2127){label=323;break;}else{var $2134=0;label=324;break;}
- case 323:
- var $2129=$x;
- var $2130=((($2129)+(8))|0);
- var $2131=$3;
- var $2132=($2130|0)<($2131|0);
- var $2134=$2132;label=324;break;
- case 324:
- var $2134;
- if($2134){label=325;break;}else{label=326;break;}
- case 325:
- var $2136=$x;
- var $2137=$line;
- var $2138=(($2137+($2136<<1))|0);
- HEAP16[(($2138)>>1)]=-1;
- var $2139=$count;
- var $2140=((($2139)-(1))|0);
- $count=$2140;
- var $2141=$x;
- var $2142=((($2141)+(1))|0);
- $x=$2142;
- var $2143=$x;
- var $2144=$line;
- var $2145=(($2144+($2143<<1))|0);
- HEAP16[(($2145)>>1)]=-1;
- var $2146=$count;
- var $2147=((($2146)-(1))|0);
- $count=$2147;
- var $2148=$x;
- var $2149=((($2148)+(1))|0);
- $x=$2149;
- var $2150=$x;
- var $2151=$line;
- var $2152=(($2151+($2150<<1))|0);
- HEAP16[(($2152)>>1)]=-1;
- var $2153=$count;
- var $2154=((($2153)-(1))|0);
- $count=$2154;
- var $2155=$x;
- var $2156=((($2155)+(1))|0);
- $x=$2156;
- var $2157=$x;
- var $2158=$line;
- var $2159=(($2158+($2157<<1))|0);
- HEAP16[(($2159)>>1)]=-1;
- var $2160=$count;
- var $2161=((($2160)-(1))|0);
- $count=$2161;
- var $2162=$x;
- var $2163=((($2162)+(1))|0);
- $x=$2163;
- var $2164=$x;
- var $2165=$line;
- var $2166=(($2165+($2164<<1))|0);
- HEAP16[(($2166)>>1)]=-1;
- var $2167=$count;
- var $2168=((($2167)-(1))|0);
- $count=$2168;
- var $2169=$x;
- var $2170=((($2169)+(1))|0);
- $x=$2170;
- var $2171=$x;
- var $2172=$line;
- var $2173=(($2172+($2171<<1))|0);
- HEAP16[(($2173)>>1)]=-1;
- var $2174=$count;
- var $2175=((($2174)-(1))|0);
- $count=$2175;
- var $2176=$x;
- var $2177=((($2176)+(1))|0);
- $x=$2177;
- var $2178=$x;
- var $2179=$line;
- var $2180=(($2179+($2178<<1))|0);
- HEAP16[(($2180)>>1)]=-1;
- var $2181=$count;
- var $2182=((($2181)-(1))|0);
- $count=$2182;
- var $2183=$x;
- var $2184=((($2183)+(1))|0);
- $x=$2184;
- var $2185=$x;
- var $2186=$line;
- var $2187=(($2186+($2185<<1))|0);
- HEAP16[(($2187)>>1)]=-1;
- var $2188=$count;
- var $2189=((($2188)-(1))|0);
- $count=$2189;
- var $2190=$x;
- var $2191=((($2190)+(1))|0);
- $x=$2191;
- label=322;break;
- case 326:
- label=327;break;
- case 327:
- var $2194=$count;
- var $2195=($2194|0)>0;
- if($2195){label=328;break;}else{var $2201=0;label=329;break;}
- case 328:
- var $2197=$x;
- var $2198=$3;
- var $2199=($2197|0)<($2198|0);
- var $2201=$2199;label=329;break;
- case 329:
- var $2201;
- if($2201){label=330;break;}else{label=331;break;}
- case 330:
- var $2203=$x;
- var $2204=$line;
- var $2205=(($2204+($2203<<1))|0);
- HEAP16[(($2205)>>1)]=-1;
- var $2206=$count;
- var $2207=((($2206)-(1))|0);
- $count=$2207;
- var $2208=$x;
- var $2209=((($2208)+(1))|0);
- $x=$2209;
- label=327;break;
- case 331:
- label=344;break;
- case 332:
- label=333;break;
- case 333:
- var $2213=$count;
- var $2214=$2213&-8;
- var $2215=($2214|0)!=0;
- if($2215){label=334;break;}else{var $2222=0;label=335;break;}
- case 334:
- var $2217=$x;
- var $2218=((($2217)+(8))|0);
- var $2219=$3;
- var $2220=($2218|0)<($2219|0);
- var $2222=$2220;label=335;break;
- case 335:
- var $2222;
- if($2222){label=336;break;}else{label=337;break;}
- case 336:
- var $2224=$x;
- var $2225=$line;
- var $2226=(($2225+($2224<<1))|0);
- HEAP16[(($2226)>>1)]=0;
- var $2227=$count;
- var $2228=((($2227)-(1))|0);
- $count=$2228;
- var $2229=$x;
- var $2230=((($2229)+(1))|0);
- $x=$2230;
- var $2231=$x;
- var $2232=$line;
- var $2233=(($2232+($2231<<1))|0);
- HEAP16[(($2233)>>1)]=0;
- var $2234=$count;
- var $2235=((($2234)-(1))|0);
- $count=$2235;
- var $2236=$x;
- var $2237=((($2236)+(1))|0);
- $x=$2237;
- var $2238=$x;
- var $2239=$line;
- var $2240=(($2239+($2238<<1))|0);
- HEAP16[(($2240)>>1)]=0;
- var $2241=$count;
- var $2242=((($2241)-(1))|0);
- $count=$2242;
- var $2243=$x;
- var $2244=((($2243)+(1))|0);
- $x=$2244;
- var $2245=$x;
- var $2246=$line;
- var $2247=(($2246+($2245<<1))|0);
- HEAP16[(($2247)>>1)]=0;
- var $2248=$count;
- var $2249=((($2248)-(1))|0);
- $count=$2249;
- var $2250=$x;
- var $2251=((($2250)+(1))|0);
- $x=$2251;
- var $2252=$x;
- var $2253=$line;
- var $2254=(($2253+($2252<<1))|0);
- HEAP16[(($2254)>>1)]=0;
- var $2255=$count;
- var $2256=((($2255)-(1))|0);
- $count=$2256;
- var $2257=$x;
- var $2258=((($2257)+(1))|0);
- $x=$2258;
- var $2259=$x;
- var $2260=$line;
- var $2261=(($2260+($2259<<1))|0);
- HEAP16[(($2261)>>1)]=0;
- var $2262=$count;
- var $2263=((($2262)-(1))|0);
- $count=$2263;
- var $2264=$x;
- var $2265=((($2264)+(1))|0);
- $x=$2265;
- var $2266=$x;
- var $2267=$line;
- var $2268=(($2267+($2266<<1))|0);
- HEAP16[(($2268)>>1)]=0;
- var $2269=$count;
- var $2270=((($2269)-(1))|0);
- $count=$2270;
- var $2271=$x;
- var $2272=((($2271)+(1))|0);
- $x=$2272;
- var $2273=$x;
- var $2274=$line;
- var $2275=(($2274+($2273<<1))|0);
- HEAP16[(($2275)>>1)]=0;
- var $2276=$count;
- var $2277=((($2276)-(1))|0);
- $count=$2277;
- var $2278=$x;
- var $2279=((($2278)+(1))|0);
- $x=$2279;
- label=333;break;
- case 337:
- label=338;break;
- case 338:
- var $2282=$count;
- var $2283=($2282|0)>0;
- if($2283){label=339;break;}else{var $2289=0;label=340;break;}
- case 339:
- var $2285=$x;
- var $2286=$3;
- var $2287=($2285|0)<($2286|0);
- var $2289=$2287;label=340;break;
- case 340:
- var $2289;
- if($2289){label=341;break;}else{label=342;break;}
- case 341:
- var $2291=$x;
- var $2292=$line;
- var $2293=(($2292+($2291<<1))|0);
- HEAP16[(($2293)>>1)]=0;
- var $2294=$count;
- var $2295=((($2294)-(1))|0);
- $count=$2295;
- var $2296=$x;
- var $2297=((($2296)+(1))|0);
- $x=$2297;
- label=338;break;
- case 342:
- label=344;break;
- case 343:
- $1=0;
- label=347;break;
- case 344:
- label=34;break;
- case 345:
- label=2;break;
- case 346:
- $1=1;
- label=347;break;
- case 347:
- var $2304=$1;
- STACKTOP=sp;return $2304;
- default: assert(0, "bad label: " + label);
- }
- }
- function _bitmap_decompress_16($output,$output_width,$output_height,$input_width,$input_height,$input,$size){
- var label=0;
- var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
- label = 1;
- while(1)switch(label){
- case 1:
- var $1;
- var $2;
- var $3;
- var $4;
- var $5;
- var $6;
- var $7;
- var $temp;
- var $rv;
- var $y;
- var $x;
- var $a;
- var $r;
- var $g;
- var $b;
- $1=$output;
- $2=$output_width;
- $3=$output_height;
- $4=$input_width;
- $5=$input_height;
- $6=$input;
- $7=$size;
- var $8=$4;
- var $9=$5;
- var $10=(Math_imul($8,$9)|0);
- var $11=($10<<1);
- var $12=_malloc($11);
- $temp=$12;
- var $13=$temp;
- var $14=$4;
- var $15=$5;
- var $16=$6;
- var $17=$7;
- var $18=_bitmap_decompress2($13,$14,$15,$16,$17);
- $rv=$18;
- $y=0;
- label=2;break;
- case 2:
- var $20=$y;
- var $21=$3;
- var $22=($20|0)<($21|0);
- if($22){label=3;break;}else{label=9;break;}
- case 3:
- $x=0;
- label=4;break;
- case 4:
- var $25=$x;
- var $26=$2;
- var $27=($25|0)<($26|0);
- if($27){label=5;break;}else{label=7;break;}
- case 5:
- var $29=$y;
- var $30=$4;
- var $31=(Math_imul($29,$30)|0);
- var $32=$x;
- var $33=((($31)+($32))|0);
- var $34=$temp;
- var $35=$34;
- var $36=(($35+($33<<1))|0);
- var $37=HEAP16[(($36)>>1)];
- $a=$37;
- var $38=$a;
- var $39=($38&65535);
- var $40=$39&63488;
- var $41=$40>>11;
- var $42=(($41)&255);
- $r=$42;
- var $43=$a;
- var $44=($43&65535);
- var $45=$44&2016;
- var $46=$45>>5;
- var $47=(($46)&255);
- $g=$47;
- var $48=$a;
- var $49=($48&65535);
- var $50=$49&31;
- var $51=(($50)&255);
- $b=$51;
- var $52=$r;
- var $53=($52&255);
- var $54=((($53)*(255))&-1);
- var $55=(((($54|0))/(31))&-1);
- var $56=(($55)&255);
- $r=$56;
- var $57=$g;
- var $58=($57&255);
- var $59=((($58)*(255))&-1);
- var $60=(((($59|0))/(63))&-1);
- var $61=(($60)&255);
- $g=$61;
- var $62=$b;
- var $63=($62&255);
- var $64=((($63)*(255))&-1);
- var $65=(((($64|0))/(31))&-1);
- var $66=(($65)&255);
- $b=$66;
- var $67=$b;
- var $68=($67&255);
- var $69=$68<<16;
- var $70=-16777216|$69;
- var $71=$g;
- var $72=($71&255);
- var $73=$72<<8;
- var $74=$70|$73;
- var $75=$r;
- var $76=($75&255);
- var $77=$74|$76;
- var $78=$y;
- var $79=$2;
- var $80=(Math_imul($78,$79)|0);
- var $81=$x;
- var $82=((($80)+($81))|0);
- var $83=$1;
- var $84=$83;
- var $85=(($84+($82<<2))|0);
- HEAP32[(($85)>>2)]=$77;
- label=6;break;
- case 6:
- var $87=$x;
- var $88=((($87)+(1))|0);
- $x=$88;
- label=4;break;
- case 7:
- label=8;break;
- case 8:
- var $91=$y;
- var $92=((($91)+(1))|0);
- $y=$92;
- label=2;break;
- case 9:
- var $94=$temp;
- _free($94);
- var $95=$rv;
- STACKTOP=sp;return $95;
- default: assert(0, "bad label: " + label);
- }
- }
- Module["_bitmap_decompress_16"] = _bitmap_decompress_16;
- function _bitmap_decompress_24($output,$output_width,$output_height,$input_width,$input_height,$input,$size){
- var label=0;
- var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
- label = 1;
- while(1)switch(label){
- case 1:
- var $1;
- var $2;
- var $3;
- var $4;
- var $5;
- var $6;
- var $7;
- var $temp;
- var $rv;
- var $y;
- var $x;
- var $r;
- var $g;
- var $b;
- $1=$output;
- $2=$output_width;
- $3=$output_height;
- $4=$input_width;
- $5=$input_height;
- $6=$input;
- $7=$size;
- var $8=$4;
- var $9=$5;
- var $10=(Math_imul($8,$9)|0);
- var $11=((($10)*(3))&-1);
- var $12=_malloc($11);
- $temp=$12;
- var $13=$temp;
- var $14=$4;
- var $15=$5;
- var $16=$6;
- var $17=$7;
- var $18=_bitmap_decompress3($13,$14,$15,$16,$17);
- $rv=$18;
- $y=0;
- label=2;break;
- case 2:
- var $20=$y;
- var $21=$3;
- var $22=($20|0)<($21|0);
- if($22){label=3;break;}else{label=9;break;}
- case 3:
- $x=0;
- label=4;break;
- case 4:
- var $25=$x;
- var $26=$2;
- var $27=($25|0)<($26|0);
- if($27){label=5;break;}else{label=7;break;}
- case 5:
- var $29=$y;
- var $30=$4;
- var $31=(Math_imul($29,$30)|0);
- var $32=$x;
- var $33=((($31)+($32))|0);
- var $34=((($33)*(3))&-1);
- var $35=$temp;
- var $36=(($35+$34)|0);
- var $37=HEAP8[($36)];
- $r=$37;
- var $38=$y;
- var $39=$4;
- var $40=(Math_imul($38,$39)|0);
- var $41=$x;
- var $42=((($40)+($41))|0);
- var $43=((($42)*(3))&-1);
- var $44=((($43)+(1))|0);
- var $45=$temp;
- var $46=(($45+$44)|0);
- var $47=HEAP8[($46)];
- $g=$47;
- var $48=$y;
- var $49=$4;
- var $50=(Math_imul($48,$49)|0);
- var $51=$x;
- var $52=((($50)+($51))|0);
- var $53=((($52)*(3))&-1);
- var $54=((($53)+(2))|0);
- var $55=$temp;
- var $56=(($55+$54)|0);
- var $57=HEAP8[($56)];
- $b=$57;
- var $58=$b;
- var $59=($58&255);
- var $60=$59<<16;
- var $61=-16777216|$60;
- var $62=$g;
- var $63=($62&255);
- var $64=$63<<8;
- var $65=$61|$64;
- var $66=$r;
- var $67=($66&255);
- var $68=$65|$67;
- var $69=$y;
- var $70=$2;
- var $71=(Math_imul($69,$70)|0);
- var $72=$x;
- var $73=((($71)+($72))|0);
- var $74=$1;
- var $75=$74;
- var $76=(($75+($73<<2))|0);
- HEAP32[(($76)>>2)]=$68;
- label=6;break;
- case 6:
- var $78=$x;
- var $79=((($78)+(1))|0);
- $x=$79;
- label=4;break;
- case 7:
- label=8;break;
- case 8:
- var $82=$y;
- var $83=((($82)+(1))|0);
- $y=$83;
- label=2;break;
- case 9:
- var $85=$temp;
- _free($85);
- var $86=$rv;
- STACKTOP=sp;return $86;
- default: assert(0, "bad label: " + label);
- }
- }
- Module["_bitmap_decompress_24"] = _bitmap_decompress_24;
- function _bitmap_decompress3($output,$width,$height,$input,$size){
- var label=0;
- var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
- label = 1;
- while(1)switch(label){
- case 1:
- var $1;
- var $2;
- var $3;
- var $4;
- var $5;
- var $6;
- var $end;
- var $prevline;
- var $line;
- var $opcode;
- var $count;
- var $offset;
- var $isfillormix;
- var $x;
- var $lastopcode;
- var $insertmix;
- var $bicolour;
- var $code;
- var $colour1=sp;
- var $colour2=(sp)+(8);
- var $mixmask;
- var $mask;
- var $mix=(sp)+(16);
- var $fom_mask;
- $2=$output;
- $3=$width;
- $4=$height;
- $5=$input;
- $6=$size;
- var $7=$5;
- var $8=$6;
- var $9=(($7+$8)|0);
- $end=$9;
- $prevline=0;
- $line=0;
- var $10=$3;
- $x=$10;
- $lastopcode=-1;
- $insertmix=0;
- $bicolour=0;
- var $11=$colour1;
- HEAP8[($11)]=0; HEAP8[((($11)+(1))|0)]=0; HEAP8[((($11)+(2))|0)]=0;
- var $12=$colour2;
- HEAP8[($12)]=0; HEAP8[((($12)+(1))|0)]=0; HEAP8[((($12)+(2))|0)]=0;
- $mask=0;
- var $13=$mix;
- assert(3 % 1 === 0);HEAP8[($13)]=HEAP8[(8)];HEAP8[((($13)+(1))|0)]=HEAP8[(9)];HEAP8[((($13)+(2))|0)]=HEAP8[(10)];
- $fom_mask=0;
- label=2;break;
- case 2:
- var $15=$5;
- var $16=$end;
- var $17=($15>>>0)<($16>>>0);
- if($17){label=3;break;}else{label=346;break;}
- case 3:
- $fom_mask=0;
- var $19=$5;
- var $20=(($19+1)|0);
- $5=$20;
- var $21=HEAP8[($19)];
- $code=$21;
- var $22=$code;
- var $23=($22&255);
- var $24=$23>>4;
- $opcode=$24;
- var $25=$opcode;
- if(($25|0)==12|($25|0)==13|($25|0)==14){ label=4;break;}else if(($25|0)==15){ label=5;break;}else{label=9;break;}
- case 4:
- var $27=$opcode;
- var $28=((($27)-(6))|0);
- $opcode=$28;
- var $29=$code;
- var $30=($29&255);
- var $31=$30&15;
- $count=$31;
- $offset=16;
- label=10;break;
- case 5:
- var $33=$code;
- var $34=($33&255);
- var $35=$34&15;
- $opcode=$35;
- var $36=$opcode;
- var $37=($36|0)<9;
- if($37){label=6;break;}else{label=7;break;}
- case 6:
- var $39=$5;
- var $40=(($39+1)|0);
- $5=$40;
- var $41=HEAP8[($39)];
- var $42=($41&255);
- $count=$42;
- var $43=$5;
- var $44=(($43+1)|0);
- $5=$44;
- var $45=HEAP8[($43)];
- var $46=($45&255);
- var $47=$46<<8;
- var $48=$count;
- var $49=$48|$47;
- $count=$49;
- label=8;break;
- case 7:
- var $51=$opcode;
- var $52=($51|0)<11;
- var $53=($52?8:1);
- $count=$53;
- label=8;break;
- case 8:
- $offset=0;
- label=10;break;
- case 9:
- var $56=$opcode;
- var $57=$56>>1;
- $opcode=$57;
- var $58=$code;
- var $59=($58&255);
- var $60=$59&31;
- $count=$60;
- $offset=32;
- label=10;break;
- case 10:
- var $62=$offset;
- var $63=($62|0)!=0;
- if($63){label=11;break;}else{label=22;break;}
- case 11:
- var $65=$opcode;
- var $66=($65|0)==2;
- if($66){var $71=1;label=13;break;}else{label=12;break;}
- case 12:
- var $68=$opcode;
- var $69=($68|0)==7;
- var $71=$69;label=13;break;
- case 13:
- var $71;
- var $72=($71&1);
- $isfillormix=$72;
- var $73=$count;
- var $74=($73|0)==0;
- if($74){label=14;break;}else{label=18;break;}
- case 14:
- var $76=$isfillormix;
- var $77=($76|0)!=0;
- if($77){label=15;break;}else{label=16;break;}
- case 15:
- var $79=$5;
- var $80=(($79+1)|0);
- $5=$80;
- var $81=HEAP8[($79)];
- var $82=($81&255);
- var $83=((($82)+(1))|0);
- $count=$83;
- label=17;break;
- case 16:
- var $85=$5;
- var $86=(($85+1)|0);
- $5=$86;
- var $87=HEAP8[($85)];
- var $88=($87&255);
- var $89=$offset;
- var $90=((($88)+($89))|0);
- $count=$90;
- label=17;break;
- case 17:
- label=21;break;
- case 18:
- var $93=$isfillormix;
- var $94=($93|0)!=0;
- if($94){label=19;break;}else{label=20;break;}
- case 19:
- var $96=$count;
- var $97=$96<<3;
- $count=$97;
- label=20;break;
- case 20:
- label=21;break;
- case 21:
- label=22;break;
- case 22:
- var $101=$opcode;
- switch(($101|0)){case 0:{ label=23;break;}case 8:{ label=28;break;}case 3:{ label=29;break;}case 6:case 7:{ label=30;break;}case 9:{ label=31;break;}case 10:{ label=32;break;}default:{label=33;break;}}break;
- case 23:
- var $103=$lastopcode;
- var $104=$opcode;
- var $105=($103|0)==($104|0);
- if($105){label=24;break;}else{label=27;break;}
- case 24:
- var $107=$x;
- var $108=$3;
- var $109=($107|0)==($108|0);
- if($109){label=25;break;}else{label=26;break;}
- case 25:
- var $111=$prevline;
- var $112=($111|0)==0;
- if($112){label=27;break;}else{label=26;break;}
- case 26:
- $insertmix=1;
- label=27;break;
- case 27:
- label=33;break;
- case 28:
- var $116=$5;
- var $117=(($116+1)|0);
- $5=$117;
- var $118=HEAP8[($116)];
- var $119=(($colour1)|0);
- HEAP8[($119)]=$118;
- var $120=$5;
- var $121=(($120+1)|0);
- $5=$121;
- var $122=HEAP8[($120)];
- var $123=(($colour1+1)|0);
- HEAP8[($123)]=$122;
- var $124=$5;
- var $125=(($124+1)|0);
- $5=$125;
- var $126=HEAP8[($124)];
- var $127=(($colour1+2)|0);
- HEAP8[($127)]=$126;
- label=29;break;
- case 29:
- var $129=$5;
- var $130=(($129+1)|0);
- $5=$130;
- var $131=HEAP8[($129)];
- var $132=(($colour2)|0);
- HEAP8[($132)]=$131;
- var $133=$5;
- var $134=(($133+1)|0);
- $5=$134;
- var $135=HEAP8[($133)];
- var $136=(($colour2+1)|0);
- HEAP8[($136)]=$135;
- var $137=$5;
- var $138=(($137+1)|0);
- $5=$138;
- var $139=HEAP8[($137)];
- var $140=(($colour2+2)|0);
- HEAP8[($140)]=$139;
- label=33;break;
- case 30:
- var $142=$5;
- var $143=(($142+1)|0);
- $5=$143;
- var $144=HEAP8[($142)];
- var $145=(($mix)|0);
- HEAP8[($145)]=$144;
- var $146=$5;
- var $147=(($146+1)|0);
- $5=$147;
- var $148=HEAP8[($146)];
- var $149=(($mix+1)|0);
- HEAP8[($149)]=$148;
- var $150=$5;
- var $151=(($150+1)|0);
- $5=$151;
- var $152=HEAP8[($150)];
- var $153=(($mix+2)|0);
- HEAP8[($153)]=$152;
- var $154=$opcode;
- var $155=((($154)-(5))|0);
- $opcode=$155;
- label=33;break;
- case 31:
- $mask=3;
- $opcode=2;
- $fom_mask=3;
- label=33;break;
- case 32:
- $mask=5;
- $opcode=2;
- $fom_mask=5;
- label=33;break;
- case 33:
- var $159=$opcode;
- $lastopcode=$159;
- $mixmask=0;
- label=34;break;
- case 34:
- var $161=$count;
- var $162=($161|0)>0;
- if($162){label=35;break;}else{label=345;break;}
- case 35:
- var $164=$x;
- var $165=$3;
- var $166=($164|0)>=($165|0);
- if($166){label=36;break;}else{label=39;break;}
- case 36:
- var $168=$4;
- var $169=($168|0)<=0;
- if($169){label=37;break;}else{label=38;break;}
- case 37:
- $1=0;
- label=347;break;
- case 38:
- $x=0;
- var $172=$4;
- var $173=((($172)-(1))|0);
- $4=$173;
- var $174=$line;
- $prevline=$174;
- var $175=$2;
- var $176=$4;
- var $177=$3;
- var $178=((($177)*(3))&-1);
- var $179=(Math_imul($176,$178)|0);
- var $180=(($175+$179)|0);
- $line=$180;
- label=39;break;
- case 39:
- var $182=$opcode;
- switch(($182|0)){case 3:{ label=261;break;}case 4:{ label=272;break;}case 8:{ label=283;break;}case 13:{ label=321;break;}case 14:{ label=332;break;}case 0:{ label=40;break;}case 1:{ label=69;break;}case 2:{ label=93;break;}default:{label=343;break;}}break;
- case 40:
- var $184=$insertmix;
- var $185=($184|0)!=0;
- if($185){label=41;break;}else{label=45;break;}
- case 41:
- var $187=$prevline;
- var $188=($187|0)==0;
- if($188){label=42;break;}else{label=43;break;}
- case 42:
- var $190=(($mix)|0);
- var $191=HEAP8[($190)];
- var $192=$x;
- var $193=((($192)*(3))&-1);
- var $194=$line;
- var $195=(($194+$193)|0);
- HEAP8[($195)]=$191;
- var $196=(($mix+1)|0);
- var $197=HEAP8[($196)];
- var $198=$x;
- var $199=((($198)*(3))&-1);
- var $200=((($199)+(1))|0);
- var $201=$line;
- var $202=(($201+$200)|0);
- HEAP8[($202)]=$197;
- var $203=(($mix+2)|0);
- var $204=HEAP8[($203)];
- var $205=$x;
- var $206=((($205)*(3))&-1);
- var $207=((($206)+(2))|0);
- var $208=$line;
- var $209=(($208+$207)|0);
- HEAP8[($209)]=$204;
- label=44;break;
- case 43:
- var $211=$x;
- var $212=((($211)*(3))&-1);
- var $213=$prevline;
- var $214=(($213+$212)|0);
- var $215=HEAP8[($214)];
- var $216=($215&255);
- var $217=(($mix)|0);
- var $218=HEAP8[($217)];
- var $219=($218&255);
- var $220=$216^$219;
- var $221=(($220)&255);
- var $222=$x;
- var $223=((($222)*(3))&-1);
- var $224=$line;
- var $225=(($224+$223)|0);
- HEAP8[($225)]=$221;
- var $226=$x;
- var $227=((($226)*(3))&-1);
- var $228=((($227)+(1))|0);
- var $229=$prevline;
- var $230=(($229+$228)|0);
- var $231=HEAP8[($230)];
- var $232=($231&255);
- var $233=(($mix+1)|0);
- var $234=HEAP8[($233)];
- var $235=($234&255);
- var $236=$232^$235;
- var $237=(($236)&255);
- var $238=$x;
- var $239=((($238)*(3))&-1);
- var $240=((($239)+(1))|0);
- var $241=$line;
- var $242=(($241+$240)|0);
- HEAP8[($242)]=$237;
- var $243=$x;
- var $244=((($243)*(3))&-1);
- var $245=((($244)+(2))|0);
- var $246=$prevline;
- var $247=(($246+$245)|0);
- var $248=HEAP8[($247)];
- var $249=($248&255);
- var $250=(($mix+2)|0);
- var $251=HEAP8[($250)];
- var $252=($251&255);
- var $253=$249^$252;
- var $254=(($253)&255);
- var $255=$x;
- var $256=((($255)*(3))&-1);
- var $257=((($256)+(2))|0);
- var $258=$line;
- var $259=(($258+$257)|0);
- HEAP8[($259)]=$254;
- label=44;break;
- case 44:
- $insertmix=0;
- var $261=$count;
- var $262=((($261)-(1))|0);
- $count=$262;
- var $263=$x;
- var $264=((($263)+(1))|0);
- $x=$264;
- label=45;break;
- case 45:
- var $266=$prevline;
- var $267=($266|0)==0;
- if($267){label=46;break;}else{label=57;break;}
- case 46:
- label=47;break;
- case 47:
- var $270=$count;
- var $271=$270&-8;
- var $272=($271|0)!=0;
- if($272){label=48;break;}else{var $279=0;label=49;break;}
- case 48:
- var $274=$x;
- var $275=((($274)+(8))|0);
- var $276=$3;
- var $277=($275|0)<($276|0);
- var $279=$277;label=49;break;
- case 49:
- var $279;
- if($279){label=50;break;}else{label=51;break;}
- case 50:
- var $281=$x;
- var $282=((($281)*(3))&-1);
- var $283=$line;
- var $284=(($283+$282)|0);
- HEAP8[($284)]=0;
- var $285=$x;
- var $286=((($285)*(3))&-1);
- var $287=((($286)+(1))|0);
- var $288=$line;
- var $289=(($288+$287)|0);
- HEAP8[($289)]=0;
- var $290=$x;
- var $291=((($290)*(3))&-1);
- var $292=((($291)+(2))|0);
- var $293=$line;
- var $294=(($293+$292)|0);
- HEAP8[($294)]=0;
- var $295=$count;
- var $296=((($295)-(1))|0);
- $count=$296;
- var $297=$x;
- var $298=((($297)+(1))|0);
- $x=$298;
- var $299=$x;
- var $300=((($299)*(3))&-1);
- var $301=$line;
- var $302=(($301+$300)|0);
- HEAP8[($302)]=0;
- var $303=$x;
- var $304=((($303)*(3))&-1);
- var $305=((($304)+(1))|0);
- var $306=$line;
- var $307=(($306+$305)|0);
- HEAP8[($307)]=0;
- var $308=$x;
- var $309=((($308)*(3))&-1);
- var $310=((($309)+(2))|0);
- var $311=$line;
- var $312=(($311+$310)|0);
- HEAP8[($312)]=0;
- var $313=$count;
- var $314=((($313)-(1))|0);
- $count=$314;
- var $315=$x;
- var $316=((($315)+(1))|0);
- $x=$316;
- var $317=$x;
- var $318=((($317)*(3))&-1);
- var $319=$line;
- var $320=(($319+$318)|0);
- HEAP8[($320)]=0;
- var $321=$x;
- var $322=((($321)*(3))&-1);
- var $323=((($322)+(1))|0);
- var $324=$line;
- var $325=(($324+$323)|0);
- HEAP8[($325)]=0;
- var $326=$x;
- var $327=((($326)*(3))&-1);
- var $328=((($327)+(2))|0);
- var $329=$line;
- var $330=(($329+$328)|0);
- HEAP8[($330)]=0;
- var $331=$count;
- var $332=((($331)-(1))|0);
- $count=$332;
- var $333=$x;
- var $334=((($333)+(1))|0);
- $x=$334;
- var $335=$x;
- var $336=((($335)*(3))&-1);
- var $337=$line;
- var $338=(($337+$336)|0);
- HEAP8[($338)]=0;
- var $339=$x;
- var $340=((($339)*(3))&-1);
- var $341=((($340)+(1))|0);
- var $342=$line;
- var $343=(($342+$341)|0);
- HEAP8[($343)]=0;
- var $344=$x;
- var $345=((($344)*(3))&-1);
- var $346=((($345)+(2))|0);
- var $347=$line;
- var $348=(($347+$346)|0);
- HEAP8[($348)]=0;
- var $349=$count;
- var $350=((($349)-(1))|0);
- $count=$350;
- var $351=$x;
- var $352=((($351)+(1))|0);
- $x=$352;
- var $353=$x;
- var $354=((($353)*(3))&-1);
- var $355=$line;
- var $356=(($355+$354)|0);
- HEAP8[($356)]=0;
- var $357=$x;
- var $358=((($357)*(3))&-1);
- var $359=((($358)+(1))|0);
- var $360=$line;
- var $361=(($360+$359)|0);
- HEAP8[($361)]=0;
- var $362=$x;
- var $363=((($362)*(3))&-1);
- var $364=((($363)+(2))|0);
- var $365=$line;
- var $366=(($365+$364)|0);
- HEAP8[($366)]=0;
- var $367=$count;
- var $368=((($367)-(1))|0);
- $count=$368;
- var $369=$x;
- var $370=((($369)+(1))|0);
- $x=$370;
- var $371=$x;
- var $372=((($371)*(3))&-1);
- var $373=$line;
- var $374=(($373+$372)|0);
- HEAP8[($374)]=0;
- var $375=$x;
- var $376=((($375)*(3))&-1);
- var $377=((($376)+(1))|0);
- var $378=$line;
- var $379=(($378+$377)|0);
- HEAP8[($379)]=0;
- var $380=$x;
- var $381=((($380)*(3))&-1);
- var $382=((($381)+(2))|0);
- var $383=$line;
- var $384=(($383+$382)|0);
- HEAP8[($384)]=0;
- var $385=$count;
- var $386=((($385)-(1))|0);
- $count=$386;
- var $387=$x;
- var $388=((($387)+(1))|0);
- $x=$388;
- var $389=$x;
- var $390=((($389)*(3))&-1);
- var $391=$line;
- var $392=(($391+$390)|0);
- HEAP8[($392)]=0;
- var $393=$x;
- var $394=((($393)*(3))&-1);
- var $395=((($394)+(1))|0);
- var $396=$line;
- var $397=(($396+$395)|0);
- HEAP8[($397)]=0;
- var $398=$x;
- var $399=((($398)*(3))&-1);
- var $400=((($399)+(2))|0);
- var $401=$line;
- var $402=(($401+$400)|0);
- HEAP8[($402)]=0;
- var $403=$count;
- var $404=((($403)-(1))|0);
- $count=$404;
- var $405=$x;
- var $406=((($405)+(1))|0);
- $x=$406;
- var $407=$x;
- var $408=((($407)*(3))&-1);
- var $409=$line;
- var $410=(($409+$408)|0);
- HEAP8[($410)]=0;
- var $411=$x;
- var $412=((($411)*(3))&-1);
- var $413=((($412)+(1))|0);
- var $414=$line;
- var $415=(($414+$413)|0);
- HEAP8[($415)]=0;
- var $416=$x;
- var $417=((($416)*(3))&-1);
- var $418=((($417)+(2))|0);
- var $419=$line;
- var $420=(($419+$418)|0);
- HEAP8[($420)]=0;
- var $421=$count;
- var $422=((($421)-(1))|0);
- $count=$422;
- var $423=$x;
- var $424=((($423)+(1))|0);
- $x=$424;
- label=47;break;
- case 51:
- label=52;break;
- case 52:
- var $427=$count;
- var $428=($427|0)>0;
- if($428){label=53;break;}else{var $434=0;label=54;break;}
- case 53:
- var $430=$x;
- var $431=$3;
- var $432=($430|0)<($431|0);
- var $434=$432;label=54;break;
- case 54:
- var $434;
- if($434){label=55;break;}else{label=56;break;}
- case 55:
- var $436=$x;
- var $437=((($436)*(3))&-1);
- var $438=$line;
- var $439=(($438+$437)|0);
- HEAP8[($439)]=0;
- var $440=$x;
- var $441=((($440)*(3))&-1);
- var $442=((($441)+(1))|0);
- var $443=$line;
- var $444=(($443+$442)|0);
- HEAP8[($444)]=0;
- var $445=$x;
- var $446=((($445)*(3))&-1);
- var $447=((($446)+(2))|0);
- var $448=$line;
- var $449=(($448+$447)|0);
- HEAP8[($449)]=0;
- var $450=$count;
- var $451=((($450)-(1))|0);
- $count=$451;
- var $452=$x;
- var $453=((($452)+(1))|0);
- $x=$453;
- label=52;break;
- case 56:
- label=68;break;
- case 57:
- label=58;break;
- case 58:
- var $457=$count;
- var $458=$457&-8;
- var $459=($458|0)!=0;
- if($459){label=59;break;}else{var $466=0;label=60;break;}
- case 59:
- var $461=$x;
- var $462=((($461)+(8))|0);
- var $463=$3;
- var $464=($462|0)<($463|0);
- var $466=$464;label=60;break;
- case 60:
- var $466;
- if($466){label=61;break;}else{label=62;break;}
- case 61:
- var $468=$x;
- var $469=((($468)*(3))&-1);
- var $470=$prevline;
- var $471=(($470+$469)|0);
- var $472=HEAP8[($471)];
- var $473=$x;
- var $474=((($473)*(3))&-1);
- var $475=$line;
- var $476=(($475+$474)|0);
- HEAP8[($476)]=$472;
- var $477=$x;
- var $478=((($477)*(3))&-1);
- var $479=((($478)+(1))|0);
- var $480=$prevline;
- var $481=(($480+$479)|0);
- var $482=HEAP8[($481)];
- var $483=$x;
- var $484=((($483)*(3))&-1);
- var $485=((($484)+(1))|0);
- var $486=$line;
- var $487=(($486+$485)|0);
- HEAP8[($487)]=$482;
- var $488=$x;
- var $489=((($488)*(3))&-1);
- var $490=((($489)+(2))|0);
- var $491=$prevline;
- var $492=(($491+$490)|0);
- var $493=HEAP8[($492)];
- var $494=$x;
- var $495=((($494)*(3))&-1);
- var $496=((($495)+(2))|0);
- var $497=$line;
- var $498=(($497+$496)|0);
- HEAP8[($498)]=$493;
- var $499=$count;
- var $500=((($499)-(1))|0);
- $count=$500;
- var $501=$x;
- var $502=((($501)+(1))|0);
- $x=$502;
- var $503=$x;
- var $504=((($503)*(3))&-1);
- var $505=$prevline;
- var $506=(($505+$504)|0);
- var $507=HEAP8[($506)];
- var $508=$x;
- var $509=((($508)*(3))&-1);
- var $510=$line;
- var $511=(($510+$509)|0);
- HEAP8[($511)]=$507;
- var $512=$x;
- var $513=((($512)*(3))&-1);
- var $514=((($513)+(1))|0);
- var $515=$prevline;
- var $516=(($515+$514)|0);
- var $517=HEAP8[($516)];
- var $518=$x;
- var $519=((($518)*(3))&-1);
- var $520=((($519)+(1))|0);
- var $521=$line;
- var $522=(($521+$520)|0);
- HEAP8[($522)]=$517;
- var $523=$x;
- var $524=((($523)*(3))&-1);
- var $525=((($524)+(2))|0);
- var $526=$prevline;
- var $527=(($526+$525)|0);
- var $528=HEAP8[($527)];
- var $529=$x;
- var $530=((($529)*(3))&-1);
- var $531=((($530)+(2))|0);
- var $532=$line;
- var $533=(($532+$531)|0);
- HEAP8[($533)]=$528;
- var $534=$count;
- var $535=((($534)-(1))|0);
- $count=$535;
- var $536=$x;
- var $537=((($536)+(1))|0);
- $x=$537;
- var $538=$x;
- var $539=((($538)*(3))&-1);
- var $540=$prevline;
- var $541=(($540+$539)|0);
- var $542=HEAP8[($541)];
- var $543=$x;
- var $544=((($543)*(3))&-1);
- var $545=$line;
- var $546=(($545+$544)|0);
- HEAP8[($546)]=$542;
- var $547=$x;
- var $548=((($547)*(3))&-1);
- var $549=((($548)+(1))|0);
- var $550=$prevline;
- var $551=(($550+$549)|0);
- var $552=HEAP8[($551)];
- var $553=$x;
- var $554=((($553)*(3))&-1);
- var $555=((($554)+(1))|0);
- var $556=$line;
- var $557=(($556+$555)|0);
- HEAP8[($557)]=$552;
- var $558=$x;
- var $559=((($558)*(3))&-1);
- var $560=((($559)+(2))|0);
- var $561=$prevline;
- var $562=(($561+$560)|0);
- var $563=HEAP8[($562)];
- var $564=$x;
- var $565=((($564)*(3))&-1);
- var $566=((($565)+(2))|0);
- var $567=$line;
- var $568=(($567+$566)|0);
- HEAP8[($568)]=$563;
- var $569=$count;
- var $570=((($569)-(1))|0);
- $count=$570;
- var $571=$x;
- var $572=((($571)+(1))|0);
- $x=$572;
- var $573=$x;
- var $574=((($573)*(3))&-1);
- var $575=$prevline;
- var $576=(($575+$574)|0);
- var $577=HEAP8[($576)];
- var $578=$x;
- var $579=((($578)*(3))&-1);
- var $580=$line;
- var $581=(($580+$579)|0);
- HEAP8[($581)]=$577;
- var $582=$x;
- var $583=((($582)*(3))&-1);
- var $584=((($583)+(1))|0);
- var $585=$prevline;
- var $586=(($585+$584)|0);
- var $587=HEAP8[($586)];
- var $588=$x;
- var $589=((($588)*(3))&-1);
- var $590=((($589)+(1))|0);
- var $591=$line;
- var $592=(($591+$590)|0);
- HEAP8[($592)]=$587;
- var $593=$x;
- var $594=((($593)*(3))&-1);
- var $595=((($594)+(2))|0);
- var $596=$prevline;
- var $597=(($596+$595)|0);
- var $598=HEAP8[($597)];
- var $599=$x;
- var $600=((($599)*(3))&-1);
- var $601=((($600)+(2))|0);
- var $602=$line;
- var $603=(($602+$601)|0);
- HEAP8[($603)]=$598;
- var $604=$count;
- var $605=((($604)-(1))|0);
- $count=$605;
- var $606=$x;
- var $607=((($606)+(1))|0);
- $x=$607;
- var $608=$x;
- var $609=((($608)*(3))&-1);
- var $610=$prevline;
- var $611=(($610+$609)|0);
- var $612=HEAP8[($611)];
- var $613=$x;
- var $614=((($613)*(3))&-1);
- var $615=$line;
- var $616=(($615+$614)|0);
- HEAP8[($616)]=$612;
- var $617=$x;
- var $618=((($617)*(3))&-1);
- var $619=((($618)+(1))|0);
- var $620=$prevline;
- var $621=(($620+$619)|0);
- var $622=HEAP8[($621)];
- var $623=$x;
- var $624=((($623)*(3))&-1);
- var $625=((($624)+(1))|0);
- var $626=$line;
- var $627=(($626+$625)|0);
- HEAP8[($627)]=$622;
- var $628=$x;
- var $629=((($628)*(3))&-1);
- var $630=((($629)+(2))|0);
- var $631=$prevline;
- var $632=(($631+$630)|0);
- var $633=HEAP8[($632)];
- var $634=$x;
- var $635=((($634)*(3))&-1);
- var $636=((($635)+(2))|0);
- var $637=$line;
- var $638=(($637+$636)|0);
- HEAP8[($638)]=$633;
- var $639=$count;
- var $640=((($639)-(1))|0);
- $count=$640;
- var $641=$x;
- var $642=((($641)+(1))|0);
- $x=$642;
- var $643=$x;
- var $644=((($643)*(3))&-1);
- var $645=$prevline;
- var $646=(($645+$644)|0);
- var $647=HEAP8[($646)];
- var $648=$x;
- var $649=((($648)*(3))&-1);
- var $650=$line;
- var $651=(($650+$649)|0);
- HEAP8[($651)]=$647;
- var $652=$x;
- var $653=((($652)*(3))&-1);
- var $654=((($653)+(1))|0);
- var $655=$prevline;
- var $656=(($655+$654)|0);
- var $657=HEAP8[($656)];
- var $658=$x;
- var $659=((($658)*(3))&-1);
- var $660=((($659)+(1))|0);
- var $661=$line;
- var $662=(($661+$660)|0);
- HEAP8[($662)]=$657;
- var $663=$x;
- var $664=((($663)*(3))&-1);
- var $665=((($664)+(2))|0);
- var $666=$prevline;
- var $667=(($666+$665)|0);
- var $668=HEAP8[($667)];
- var $669=$x;
- var $670=((($669)*(3))&-1);
- var $671=((($670)+(2))|0);
- var $672=$line;
- var $673=(($672+$671)|0);
- HEAP8[($673)]=$668;
- var $674=$count;
- var $675=((($674)-(1))|0);
- $count=$675;
- var $676=$x;
- var $677=((($676)+(1))|0);
- $x=$677;
- var $678=$x;
- var $679=((($678)*(3))&-1);
- var $680=$prevline;
- var $681=(($680+$679)|0);
- var $682=HEAP8[($681)];
- var $683=$x;
- var $684=((($683)*(3))&-1);
- var $685=$line;
- var $686=(($685+$684)|0);
- HEAP8[($686)]=$682;
- var $687=$x;
- var $688=((($687)*(3))&-1);
- var $689=((($688)+(1))|0);
- var $690=$prevline;
- var $691=(($690+$689)|0);
- var $692=HEAP8[($691)];
- var $693=$x;
- var $694=((($693)*(3))&-1);
- var $695=((($694)+(1))|0);
- var $696=$line;
- var $697=(($696+$695)|0);
- HEAP8[($697)]=$692;
- var $698=$x;
- var $699=((($698)*(3))&-1);
- var $700=((($699)+(2))|0);
- var $701=$prevline;
- var $702=(($701+$700)|0);
- var $703=HEAP8[($702)];
- var $704=$x;
- var $705=((($704)*(3))&-1);
- var $706=((($705)+(2))|0);
- var $707=$line;
- var $708=(($707+$706)|0);
- HEAP8[($708)]=$703;
- var $709=$count;
- var $710=((($709)-(1))|0);
- $count=$710;
- var $711=$x;
- var $712=((($711)+(1))|0);
- $x=$712;
- var $713=$x;
- var $714=((($713)*(3))&-1);
- var $715=$prevline;
- var $716=(($715+$714)|0);
- var $717=HEAP8[($716)];
- var $718=$x;
- var $719=((($718)*(3))&-1);
- var $720=$line;
- var $721=(($720+$719)|0);
- HEAP8[($721)]=$717;
- var $722=$x;
- var $723=((($722)*(3))&-1);
- var $724=((($723)+(1))|0);
- var $725=$prevline;
- var $726=(($725+$724)|0);
- var $727=HEAP8[($726)];
- var $728=$x;
- var $729=((($728)*(3))&-1);
- var $730=((($729)+(1))|0);
- var $731=$line;
- var $732=(($731+$730)|0);
- HEAP8[($732)]=$727;
- var $733=$x;
- var $734=((($733)*(3))&-1);
- var $735=((($734)+(2))|0);
- var $736=$prevline;
- var $737=(($736+$735)|0);
- var $738=HEAP8[($737)];
- var $739=$x;
- var $740=((($739)*(3))&-1);
- var $741=((($740)+(2))|0);
- var $742=$line;
- var $743=(($742+$741)|0);
- HEAP8[($743)]=$738;
- var $744=$count;
- var $745=((($744)-(1))|0);
- $count=$745;
- var $746=$x;
- var $747=((($746)+(1))|0);
- $x=$747;
- label=58;break;
- case 62:
- label=63;break;
- case 63:
- var $750=$count;
- var $751=($750|0)>0;
- if($751){label=64;break;}else{var $757=0;label=65;break;}
- case 64:
- var $753=$x;
- var $754=$3;
- var $755=($753|0)<($754|0);
- var $757=$755;label=65;break;
- case 65:
- var $757;
- if($757){label=66;break;}else{label=67;break;}
- case 66:
- var $759=$x;
- var $760=((($759)*(3))&-1);
- var $761=$prevline;
- var $762=(($761+$760)|0);
- var $763=HEAP8[($762)];
- var $764=$x;
- var $765=((($764)*(3))&-1);
- var $766=$line;
- var $767=(($766+$765)|0);
- HEAP8[($767)]=$763;
- var $768=$x;
- var $769=((($768)*(3))&-1);
- var $770=((($769)+(1))|0);
- var $771=$prevline;
- var $772=(($771+$770)|0);
- var $773=HEAP8[($772)];
- var $774=$x;
- var $775=((($774)*(3))&-1);
- var $776=((($775)+(1))|0);
- var $777=$line;
- var $778=(($777+$776)|0);
- HEAP8[($778)]=$773;
- var $779=$x;
- var $780=((($779)*(3))&-1);
- var $781=((($780)+(2))|0);
- var $782=$prevline;
- var $783=(($782+$781)|0);
- var $784=HEAP8[($783)];
- var $785=$x;
- var $786=((($785)*(3))&-1);
- var $787=((($786)+(2))|0);
- var $788=$line;
- var $789=(($788+$787)|0);
- HEAP8[($789)]=$784;
- var $790=$count;
- var $791=((($790)-(1))|0);
- $count=$791;
- var $792=$x;
- var $793=((($792)+(1))|0);
- $x=$793;
- label=63;break;
- case 67:
- label=68;break;
- case 68:
- label=344;break;
- case 69:
- var $797=$prevline;
- var $798=($797|0)==0;
- if($798){label=70;break;}else{label=81;break;}
- case 70:
- label=71;break;
- case 71:
- var $801=$count;
- var $802=$801&-8;
- var $803=($802|0)!=0;
- if($803){label=72;break;}else{var $810=0;label=73;break;}
- case 72:
- var $805=$x;
- var $806=((($805)+(8))|0);
- var $807=$3;
- var $808=($806|0)<($807|0);
- var $810=$808;label=73;break;
- case 73:
- var $810;
- if($810){label=74;break;}else{label=75;break;}
- case 74:
- var $812=(($mix)|0);
- var $813=HEAP8[($812)];
- var $814=$x;
- var $815=((($814)*(3))&-1);
- var $816=$line;
- var $817=(($816+$815)|0);
- HEAP8[($817)]=$813;
- var $818=(($mix+1)|0);
- var $819=HEAP8[($818)];
- var $820=$x;
- var $821=((($820)*(3))&-1);
- var $822=((($821)+(1))|0);
- var $823=$line;
- var $824=(($823+$822)|0);
- HEAP8[($824)]=$819;
- var $825=(($mix+2)|0);
- var $826=HEAP8[($825)];
- var $827=$x;
- var $828=((($827)*(3))&-1);
- var $829=((($828)+(2))|0);
- var $830=$line;
- var $831=(($830+$829)|0);
- HEAP8[($831)]=$826;
- var $832=$count;
- var $833=((($832)-(1))|0);
- $count=$833;
- var $834=$x;
- var $835=((($834)+(1))|0);
- $x=$835;
- var $836=(($mix)|0);
- var $837=HEAP8[($836)];
- var $838=$x;
- var $839=((($838)*(3))&-1);
- var $840=$line;
- var $841=(($840+$839)|0);
- HEAP8[($841)]=$837;
- var $842=(($mix+1)|0);
- var $843=HEAP8[($842)];
- var $844=$x;
- var $845=((($844)*(3))&-1);
- var $846=((($845)+(1))|0);
- var $847=$line;
- var $848=(($847+$846)|0);
- HEAP8[($848)]=$843;
- var $849=(($mix+2)|0);
- var $850=HEAP8[($849)];
- var $851=$x;
- var $852=((($851)*(3))&-1);
- var $853=((($852)+(2))|0);
- var $854=$line;
- var $855=(($854+$853)|0);
- HEAP8[($855)]=$850;
- var $856=$count;
- var $857=((($856)-(1))|0);
- $count=$857;
- var $858=$x;
- var $859=((($858)+(1))|0);
- $x=$859;
- var $860=(($mix)|0);
- var $861=HEAP8[($860)];
- var $862=$x;
- var $863=((($862)*(3))&-1);
- var $864=$line;
- var $865=(($864+$863)|0);
- HEAP8[($865)]=$861;
- var $866=(($mix+1)|0);
- var $867=HEAP8[($866)];
- var $868=$x;
- var $869=((($868)*(3))&-1);
- var $870=((($869)+(1))|0);
- var $871=$line;
- var $872=(($871+$870)|0);
- HEAP8[($872)]=$867;
- var $873=(($mix+2)|0);
- var $874=HEAP8[($873)];
- var $875=$x;
- var $876=((($875)*(3))&-1);
- var $877=((($876)+(2))|0);
- var $878=$line;
- var $879=(($878+$877)|0);
- HEAP8[($879)]=$874;
- var $880=$count;
- var $881=((($880)-(1))|0);
- $count=$881;
- var $882=$x;
- var $883=((($882)+(1))|0);
- $x=$883;
- var $884=(($mix)|0);
- var $885=HEAP8[($884)];
- var $886=$x;
- var $887=((($886)*(3))&-1);
- var $888=$line;
- var $889=(($888+$887)|0);
- HEAP8[($889)]=$885;
- var $890=(($mix+1)|0);
- var $891=HEAP8[($890)];
- var $892=$x;
- var $893=((($892)*(3))&-1);
- var $894=((($893)+(1))|0);
- var $895=$line;
- var $896=(($895+$894)|0);
- HEAP8[($896)]=$891;
- var $897=(($mix+2)|0);
- var $898=HEAP8[($897)];
- var $899=$x;
- var $900=((($899)*(3))&-1);
- var $901=((($900)+(2))|0);
- var $902=$line;
- var $903=(($902+$901)|0);
- HEAP8[($903)]=$898;
- var $904=$count;
- var $905=((($904)-(1))|0);
- $count=$905;
- var $906=$x;
- var $907=((($906)+(1))|0);
- $x=$907;
- var $908=(($mix)|0);
- var $909=HEAP8[($908)];
- var $910=$x;
- var $911=((($910)*(3))&-1);
- var $912=$line;
- var $913=(($912+$911)|0);
- HEAP8[($913)]=$909;
- var $914=(($mix+1)|0);
- var $915=HEAP8[($914)];
- var $916=$x;
- var $917=((($916)*(3))&-1);
- var $918=((($917)+(1))|0);
- var $919=$line;
- var $920=(($919+$918)|0);
- HEAP8[($920)]=$915;
- var $921=(($mix+2)|0);
- var $922=HEAP8[($921)];
- var $923=$x;
- var $924=((($923)*(3))&-1);
- var $925=((($924)+(2))|0);
- var $926=$line;
- var $927=(($926+$925)|0);
- HEAP8[($927)]=$922;
- var $928=$count;
- var $929=((($928)-(1))|0);
- $count=$929;
- var $930=$x;
- var $931=((($930)+(1))|0);
- $x=$931;
- var $932=(($mix)|0);
- var $933=HEAP8[($932)];
- var $934=$x;
- var $935=((($934)*(3))&-1);
- var $936=$line;
- var $937=(($936+$935)|0);
- HEAP8[($937)]=$933;
- var $938=(($mix+1)|0);
- var $939=HEAP8[($938)];
- var $940=$x;
- var $941=((($940)*(3))&-1);
- var $942=((($941)+(1))|0);
- var $943=$line;
- var $944=(($943+$942)|0);
- HEAP8[($944)]=$939;
- var $945=(($mix+2)|0);
- var $946=HEAP8[($945)];
- var $947=$x;
- var $948=((($947)*(3))&-1);
- var $949=((($948)+(2))|0);
- var $950=$line;
- var $951=(($950+$949)|0);
- HEAP8[($951)]=$946;
- var $952=$count;
- var $953=((($952)-(1))|0);
- $count=$953;
- var $954=$x;
- var $955=((($954)+(1))|0);
- $x=$955;
- var $956=(($mix)|0);
- var $957=HEAP8[($956)];
- var $958=$x;
- var $959=((($958)*(3))&-1);
- var $960=$line;
- var $961=(($960+$959)|0);
- HEAP8[($961)]=$957;
- var $962=(($mix+1)|0);
- var $963=HEAP8[($962)];
- var $964=$x;
- var $965=((($964)*(3))&-1);
- var $966=((($965)+(1))|0);
- var $967=$line;
- var $968=(($967+$966)|0);
- HEAP8[($968)]=$963;
- var $969=(($mix+2)|0);
- var $970=HEAP8[($969)];
- var $971=$x;
- var $972=((($971)*(3))&-1);
- var $973=((($972)+(2))|0);
- var $974=$line;
- var $975=(($974+$973)|0);
- HEAP8[($975)]=$970;
- var $976=$count;
- var $977=((($976)-(1))|0);
- $count=$977;
- var $978=$x;
- var $979=((($978)+(1))|0);
- $x=$979;
- var $980=(($mix)|0);
- var $981=HEAP8[($980)];
- var $982=$x;
- var $983=((($982)*(3))&-1);
- var $984=$line;
- var $985=(($984+$983)|0);
- HEAP8[($985)]=$981;
- var $986=(($mix+1)|0);
- var $987=HEAP8[($986)];
- var $988=$x;
- var $989=((($988)*(3))&-1);
- var $990=((($989)+(1))|0);
- var $991=$line;
- var $992=(($991+$990)|0);
- HEAP8[($992)]=$987;
- var $993=(($mix+2)|0);
- var $994=HEAP8[($993)];
- var $995=$x;
- var $996=((($995)*(3))&-1);
- var $997=((($996)+(2))|0);
- var $998=$line;
- var $999=(($998+$997)|0);
- HEAP8[($999)]=$994;
- var $1000=$count;
- var $1001=((($1000)-(1))|0);
- $count=$1001;
- var $1002=$x;
- var $1003=((($1002)+(1))|0);
- $x=$1003;
- label=71;break;
- case 75:
- label=76;break;
- case 76:
- var $1006=$count;
- var $1007=($1006|0)>0;
- if($1007){label=77;break;}else{var $1013=0;label=78;break;}
- case 77:
- var $1009=$x;
- var $1010=$3;
- var $1011=($1009|0)<($1010|0);
- var $1013=$1011;label=78;break;
- case 78:
- var $1013;
- if($1013){label=79;break;}else{label=80;break;}
- case 79:
- var $1015=(($mix)|0);
- var $1016=HEAP8[($1015)];
- var $1017=$x;
- var $1018=((($1017)*(3))&-1);
- var $1019=$line;
- var $1020=(($1019+$1018)|0);
- HEAP8[($1020)]=$1016;
- var $1021=(($mix+1)|0);
- var $1022=HEAP8[($1021)];
- var $1023=$x;
- var $1024=((($1023)*(3))&-1);
- var $1025=((($1024)+(1))|0);
- var $1026=$line;
- var $1027=(($1026+$1025)|0);
- HEAP8[($1027)]=$1022;
- var $1028=(($mix+2)|0);
- var $1029=HEAP8[($1028)];
- var $1030=$x;
- var $1031=((($1030)*(3))&-1);
- var $1032=((($1031)+(2))|0);
- var $1033=$line;
- var $1034=(($1033+$1032)|0);
- HEAP8[($1034)]=$1029;
- var $1035=$count;
- var $1036=((($1035)-(1))|0);
- $count=$1036;
- var $1037=$x;
- var $1038=((($1037)+(1))|0);
- $x=$1038;
- label=76;break;
- case 80:
- label=92;break;
- case 81:
- label=82;break;
- case 82:
- var $1042=$count;
- var $1043=$1042&-8;
- var $1044=($1043|0)!=0;
- if($1044){label=83;break;}else{var $1051=0;label=84;break;}
- case 83:
- var $1046=$x;
- var $1047=((($1046)+(8))|0);
- var $1048=$3;
- var $1049=($1047|0)<($1048|0);
- var $1051=$1049;label=84;break;
- case 84:
- var $1051;
- if($1051){label=85;break;}else{label=86;break;}
- case 85:
- var $1053=$x;
- var $1054=((($1053)*(3))&-1);
- var $1055=$prevline;
- var $1056=(($1055+$1054)|0);
- var $1057=HEAP8[($1056)];
- var $1058=($1057&255);
- var $1059=(($mix)|0);
- var $1060=HEAP8[($1059)];
- var $1061=($1060&255);
- var $1062=$1058^$1061;
- var $1063=(($1062)&255);
- var $1064=$x;
- var $1065=((($1064)*(3))&-1);
- var $1066=$line;
- var $1067=(($1066+$1065)|0);
- HEAP8[($1067)]=$1063;
- var $1068=$x;
- var $1069=((($1068)*(3))&-1);
- var $1070=((($1069)+(1))|0);
- var $1071=$prevline;
- var $1072=(($1071+$1070)|0);
- var $1073=HEAP8[($1072)];
- var $1074=($1073&255);
- var $1075=(($mix+1)|0);
- var $1076=HEAP8[($1075)];
- var $1077=($1076&255);
- var $1078=$1074^$1077;
- var $1079=(($1078)&255);
- var $1080=$x;
- var $1081=((($1080)*(3))&-1);
- var $1082=((($1081)+(1))|0);
- var $1083=$line;
- var $1084=(($1083+$1082)|0);
- HEAP8[($1084)]=$1079;
- var $1085=$x;
- var $1086=((($1085)*(3))&-1);
- var $1087=((($1086)+(2))|0);
- var $1088=$prevline;
- var $1089=(($1088+$1087)|0);
- var $1090=HEAP8[($1089)];
- var $1091=($1090&255);
- var $1092=(($mix+2)|0);
- var $1093=HEAP8[($1092)];
- var $1094=($1093&255);
- var $1095=$1091^$1094;
- var $1096=(($1095)&255);
- var $1097=$x;
- var $1098=((($1097)*(3))&-1);
- var $1099=((($1098)+(2))|0);
- var $1100=$line;
- var $1101=(($1100+$1099)|0);
- HEAP8[($1101)]=$1096;
- var $1102=$count;
- var $1103=((($1102)-(1))|0);
- $count=$1103;
- var $1104=$x;
- var $1105=((($1104)+(1))|0);
- $x=$1105;
- var $1106=$x;
- var $1107=((($1106)*(3))&-1);
- var $1108=$prevline;
- var $1109=(($1108+$1107)|0);
- var $1110=HEAP8[($1109)];
- var $1111=($1110&255);
- var $1112=(($mix)|0);
- var $1113=HEAP8[($1112)];
- var $1114=($1113&255);
- var $1115=$1111^$1114;
- var $1116=(($1115)&255);
- var $1117=$x;
- var $1118=((($1117)*(3))&-1);
- var $1119=$line;
- var $1120=(($1119+$1118)|0);
- HEAP8[($1120)]=$1116;
- var $1121=$x;
- var $1122=((($1121)*(3))&-1);
- var $1123=((($1122)+(1))|0);
- var $1124=$prevline;
- var $1125=(($1124+$1123)|0);
- var $1126=HEAP8[($1125)];
- var $1127=($1126&255);
- var $1128=(($mix+1)|0);
- var $1129=HEAP8[($1128)];
- var $1130=($1129&255);
- var $1131=$1127^$1130;
- var $1132=(($1131)&255);
- var $1133=$x;
- var $1134=((($1133)*(3))&-1);
- var $1135=((($1134)+(1))|0);
- var $1136=$line;
- var $1137=(($1136+$1135)|0);
- HEAP8[($1137)]=$1132;
- var $1138=$x;
- var $1139=((($1138)*(3))&-1);
- var $1140=((($1139)+(2))|0);
- var $1141=$prevline;
- var $1142=(($1141+$1140)|0);
- var $1143=HEAP8[($1142)];
- var $1144=($1143&255);
- var $1145=(($mix+2)|0);
- var $1146=HEAP8[($1145)];
- var $1147=($1146&255);
- var $1148=$1144^$1147;
- var $1149=(($1148)&255);
- var $1150=$x;
- var $1151=((($1150)*(3))&-1);
- var $1152=((($1151)+(2))|0);
- var $1153=$line;
- var $1154=(($1153+$1152)|0);
- HEAP8[($1154)]=$1149;
- var $1155=$count;
- var $1156=((($1155)-(1))|0);
- $count=$1156;
- var $1157=$x;
- var $1158=((($1157)+(1))|0);
- $x=$1158;
- var $1159=$x;
- var $1160=((($1159)*(3))&-1);
- var $1161=$prevline;
- var $1162=(($1161+$1160)|0);
- var $1163=HEAP8[($1162)];
- var $1164=($1163&255);
- var $1165=(($mix)|0);
- var $1166=HEAP8[($1165)];
- var $1167=($1166&255);
- var $1168=$1164^$1167;
- var $1169=(($1168)&255);
- var $1170=$x;
- var $1171=((($1170)*(3))&-1);
- var $1172=$line;
- var $1173=(($1172+$1171)|0);
- HEAP8[($1173)]=$1169;
- var $1174=$x;
- var $1175=((($1174)*(3))&-1);
- var $1176=((($1175)+(1))|0);
- var $1177=$prevline;
- var $1178=(($1177+$1176)|0);
- var $1179=HEAP8[($1178)];
- var $1180=($1179&255);
- var $1181=(($mix+1)|0);
- var $1182=HEAP8[($1181)];
- var $1183=($1182&255);
- var $1184=$1180^$1183;
- var $1185=(($1184)&255);
- var $1186=$x;
- var $1187=((($1186)*(3))&-1);
- var $1188=((($1187)+(1))|0);
- var $1189=$line;
- var $1190=(($1189+$1188)|0);
- HEAP8[($1190)]=$1185;
- var $1191=$x;
- var $1192=((($1191)*(3))&-1);
- var $1193=((($1192)+(2))|0);
- var $1194=$prevline;
- var $1195=(($1194+$1193)|0);
- var $1196=HEAP8[($1195)];
- var $1197=($1196&255);
- var $1198=(($mix+2)|0);
- var $1199=HEAP8[($1198)];
- var $1200=($1199&255);
- var $1201=$1197^$1200;
- var $1202=(($1201)&255);
- var $1203=$x;
- var $1204=((($1203)*(3))&-1);
- var $1205=((($1204)+(2))|0);
- var $1206=$line;
- var $1207=(($1206+$1205)|0);
- HEAP8[($1207)]=$1202;
- var $1208=$count;
- var $1209=((($1208)-(1))|0);
- $count=$1209;
- var $1210=$x;
- var $1211=((($1210)+(1))|0);
- $x=$1211;
- var $1212=$x;
- var $1213=((($1212)*(3))&-1);
- var $1214=$prevline;
- var $1215=(($1214+$1213)|0);
- var $1216=HEAP8[($1215)];
- var $1217=($1216&255);
- var $1218=(($mix)|0);
- var $1219=HEAP8[($1218)];
- var $1220=($1219&255);
- var $1221=$1217^$1220;
- var $1222=(($1221)&255);
- var $1223=$x;
- var $1224=((($1223)*(3))&-1);
- var $1225=$line;
- var $1226=(($1225+$1224)|0);
- HEAP8[($1226)]=$1222;
- var $1227=$x;
- var $1228=((($1227)*(3))&-1);
- var $1229=((($1228)+(1))|0);
- var $1230=$prevline;
- var $1231=(($1230+$1229)|0);
- var $1232=HEAP8[($1231)];
- var $1233=($1232&255);
- var $1234=(($mix+1)|0);
- var $1235=HEAP8[($1234)];
- var $1236=($1235&255);
- var $1237=$1233^$1236;
- var $1238=(($1237)&255);
- var $1239=$x;
- var $1240=((($1239)*(3))&-1);
- var $1241=((($1240)+(1))|0);
- var $1242=$line;
- var $1243=(($1242+$1241)|0);
- HEAP8[($1243)]=$1238;
- var $1244=$x;
- var $1245=((($1244)*(3))&-1);
- var $1246=((($1245)+(2))|0);
- var $1247=$prevline;
- var $1248=(($1247+$1246)|0);
- var $1249=HEAP8[($1248)];
- var $1250=($1249&255);
- var $1251=(($mix+2)|0);
- var $1252=HEAP8[($1251)];
- var $1253=($1252&255);
- var $1254=$1250^$1253;
- var $1255=(($1254)&255);
- var $1256=$x;
- var $1257=((($1256)*(3))&-1);
- var $1258=((($1257)+(2))|0);
- var $1259=$line;
- var $1260=(($1259+$1258)|0);
- HEAP8[($1260)]=$1255;
- var $1261=$count;
- var $1262=((($1261)-(1))|0);
- $count=$1262;
- var $1263=$x;
- var $1264=((($1263)+(1))|0);
- $x=$1264;
- var $1265=$x;
- var $1266=((($1265)*(3))&-1);
- var $1267=$prevline;
- var $1268=(($1267+$1266)|0);
- var $1269=HEAP8[($1268)];
- var $1270=($1269&255);
- var $1271=(($mix)|0);
- var $1272=HEAP8[($1271)];
- var $1273=($1272&255);
- var $1274=$1270^$1273;
- var $1275=(($1274)&255);
- var $1276=$x;
- var $1277=((($1276)*(3))&-1);
- var $1278=$line;
- var $1279=(($1278+$1277)|0);
- HEAP8[($1279)]=$1275;
- var $1280=$x;
- var $1281=((($1280)*(3))&-1);
- var $1282=((($1281)+(1))|0);
- var $1283=$prevline;
- var $1284=(($1283+$1282)|0);
- var $1285=HEAP8[($1284)];
- var $1286=($1285&255);
- var $1287=(($mix+1)|0);
- var $1288=HEAP8[($1287)];
- var $1289=($1288&255);
- var $1290=$1286^$1289;
- var $1291=(($1290)&255);
- var $1292=$x;
- var $1293=((($1292)*(3))&-1);
- var $1294=((($1293)+(1))|0);
- var $1295=$line;
- var $1296=(($1295+$1294)|0);
- HEAP8[($1296)]=$1291;
- var $1297=$x;
- var $1298=((($1297)*(3))&-1);
- var $1299=((($1298)+(2))|0);
- var $1300=$prevline;
- var $1301=(($1300+$1299)|0);
- var $1302=HEAP8[($1301)];
- var $1303=($1302&255);
- var $1304=(($mix+2)|0);
- var $1305=HEAP8[($1304)];
- var $1306=($1305&255);
- var $1307=$1303^$1306;
- var $1308=(($1307)&255);
- var $1309=$x;
- var $1310=((($1309)*(3))&-1);
- var $1311=((($1310)+(2))|0);
- var $1312=$line;
- var $1313=(($1312+$1311)|0);
- HEAP8[($1313)]=$1308;
- var $1314=$count;
- var $1315=((($1314)-(1))|0);
- $count=$1315;
- var $1316=$x;
- var $1317=((($1316)+(1))|0);
- $x=$1317;
- var $1318=$x;
- var $1319=((($1318)*(3))&-1);
- var $1320=$prevline;
- var $1321=(($1320+$1319)|0);
- var $1322=HEAP8[($1321)];
- var $1323=($1322&255);
- var $1324=(($mix)|0);
- var $1325=HEAP8[($1324)];
- var $1326=($1325&255);
- var $1327=$1323^$1326;
- var $1328=(($1327)&255);
- var $1329=$x;
- var $1330=((($1329)*(3))&-1);
- var $1331=$line;
- var $1332=(($1331+$1330)|0);
- HEAP8[($1332)]=$1328;
- var $1333=$x;
- var $1334=((($1333)*(3))&-1);
- var $1335=((($1334)+(1))|0);
- var $1336=$prevline;
- var $1337=(($1336+$1335)|0);
- var $1338=HEAP8[($1337)];
- var $1339=($1338&255);
- var $1340=(($mix+1)|0);
- var $1341=HEAP8[($1340)];
- var $1342=($1341&255);
- var $1343=$1339^$1342;
- var $1344=(($1343)&255);
- var $1345=$x;
- var $1346=((($1345)*(3))&-1);
- var $1347=((($1346)+(1))|0);
- var $1348=$line;
- var $1349=(($1348+$1347)|0);
- HEAP8[($1349)]=$1344;
- var $1350=$x;
- var $1351=((($1350)*(3))&-1);
- var $1352=((($1351)+(2))|0);
- var $1353=$prevline;
- var $1354=(($1353+$1352)|0);
- var $1355=HEAP8[($1354)];
- var $1356=($1355&255);
- var $1357=(($mix+2)|0);
- var $1358=HEAP8[($1357)];
- var $1359=($1358&255);
- var $1360=$1356^$1359;
- var $1361=(($1360)&255);
- var $1362=$x;
- var $1363=((($1362)*(3))&-1);
- var $1364=((($1363)+(2))|0);
- var $1365=$line;
- var $1366=(($1365+$1364)|0);
- HEAP8[($1366)]=$1361;
- var $1367=$count;
- var $1368=((($1367)-(1))|0);
- $count=$1368;
- var $1369=$x;
- var $1370=((($1369)+(1))|0);
- $x=$1370;
- var $1371=$x;
- var $1372=((($1371)*(3))&-1);
- var $1373=$prevline;
- var $1374=(($1373+$1372)|0);
- var $1375=HEAP8[($1374)];
- var $1376=($1375&255);
- var $1377=(($mix)|0);
- var $1378=HEAP8[($1377)];
- var $1379=($1378&255);
- var $1380=$1376^$1379;
- var $1381=(($1380)&255);
- var $1382=$x;
- var $1383=((($1382)*(3))&-1);
- var $1384=$line;
- var $1385=(($1384+$1383)|0);
- HEAP8[($1385)]=$1381;
- var $1386=$x;
- var $1387=((($1386)*(3))&-1);
- var $1388=((($1387)+(1))|0);
- var $1389=$prevline;
- var $1390=(($1389+$1388)|0);
- var $1391=HEAP8[($1390)];
- var $1392=($1391&255);
- var $1393=(($mix+1)|0);
- var $1394=HEAP8[($1393)];
- var $1395=($1394&255);
- var $1396=$1392^$1395;
- var $1397=(($1396)&255);
- var $1398=$x;
- var $1399=((($1398)*(3))&-1);
- var $1400=((($1399)+(1))|0);
- var $1401=$line;
- var $1402=(($1401+$1400)|0);
- HEAP8[($1402)]=$1397;
- var $1403=$x;
- var $1404=((($1403)*(3))&-1);
- var $1405=((($1404)+(2))|0);
- var $1406=$prevline;
- var $1407=(($1406+$1405)|0);
- var $1408=HEAP8[($1407)];
- var $1409=($1408&255);
- var $1410=(($mix+2)|0);
- var $1411=HEAP8[($1410)];
- var $1412=($1411&255);
- var $1413=$1409^$1412;
- var $1414=(($1413)&255);
- var $1415=$x;
- var $1416=((($1415)*(3))&-1);
- var $1417=((($1416)+(2))|0);
- var $1418=$line;
- var $1419=(($1418+$1417)|0);
- HEAP8[($1419)]=$1414;
- var $1420=$count;
- var $1421=((($1420)-(1))|0);
- $count=$1421;
- var $1422=$x;
- var $1423=((($1422)+(1))|0);
- $x=$1423;
- var $1424=$x;
- var $1425=((($1424)*(3))&-1);
- var $1426=$prevline;
- var $1427=(($1426+$1425)|0);
- var $1428=HEAP8[($1427)];
- var $1429=($1428&255);
- var $1430=(($mix)|0);
- var $1431=HEAP8[($1430)];
- var $1432=($1431&255);
- var $1433=$1429^$1432;
- var $1434=(($1433)&255);
- var $1435=$x;
- var $1436=((($1435)*(3))&-1);
- var $1437=$line;
- var $1438=(($1437+$1436)|0);
- HEAP8[($1438)]=$1434;
- var $1439=$x;
- var $1440=((($1439)*(3))&-1);
- var $1441=((($1440)+(1))|0);
- var $1442=$prevline;
- var $1443=(($1442+$1441)|0);
- var $1444=HEAP8[($1443)];
- var $1445=($1444&255);
- var $1446=(($mix+1)|0);
- var $1447=HEAP8[($1446)];
- var $1448=($1447&255);
- var $1449=$1445^$1448;
- var $1450=(($1449)&255);
- var $1451=$x;
- var $1452=((($1451)*(3))&-1);
- var $1453=((($1452)+(1))|0);
- var $1454=$line;
- var $1455=(($1454+$1453)|0);
- HEAP8[($1455)]=$1450;
- var $1456=$x;
- var $1457=((($1456)*(3))&-1);
- var $1458=((($1457)+(2))|0);
- var $1459=$prevline;
- var $1460=(($1459+$1458)|0);
- var $1461=HEAP8[($1460)];
- var $1462=($1461&255);
- var $1463=(($mix+2)|0);
- var $1464=HEAP8[($1463)];
- var $1465=($1464&255);
- var $1466=$1462^$1465;
- var $1467=(($1466)&255);
- var $1468=$x;
- var $1469=((($1468)*(3))&-1);
- var $1470=((($1469)+(2))|0);
- var $1471=$line;
- var $1472=(($1471+$1470)|0);
- HEAP8[($1472)]=$1467;
- var $1473=$count;
- var $1474=((($1473)-(1))|0);
- $count=$1474;
- var $1475=$x;
- var $1476=((($1475)+(1))|0);
- $x=$1476;
- label=82;break;
- case 86:
- label=87;break;
- case 87:
- var $1479=$count;
- var $1480=($1479|0)>0;
- if($1480){label=88;break;}else{var $1486=0;label=89;break;}
- case 88:
- var $1482=$x;
- var $1483=$3;
- var $1484=($1482|0)<($1483|0);
- var $1486=$1484;label=89;break;
- case 89:
- var $1486;
- if($1486){label=90;break;}else{label=91;break;}
- case 90:
- var $1488=$x;
- var $1489=((($1488)*(3))&-1);
- var $1490=$prevline;
- var $1491=(($1490+$1489)|0);
- var $1492=HEAP8[($1491)];
- var $1493=($1492&255);
- var $1494=(($mix)|0);
- var $1495=HEAP8[($1494)];
- var $1496=($1495&255);
- var $1497=$1493^$1496;
- var $1498=(($1497)&255);
- var $1499=$x;
- var $1500=((($1499)*(3))&-1);
- var $1501=$line;
- var $1502=(($1501+$1500)|0);
- HEAP8[($1502)]=$1498;
- var $1503=$x;
- var $1504=((($1503)*(3))&-1);
- var $1505=((($1504)+(1))|0);
- var $1506=$prevline;
- var $1507=(($1506+$1505)|0);
- var $1508=HEAP8[($1507)];
- var $1509=($1508&255);
- var $1510=(($mix+1)|0);
- var $1511=HEAP8[($1510)];
- var $1512=($1511&255);
- var $1513=$1509^$1512;
- var $1514=(($1513)&255);
- var $1515=$x;
- var $1516=((($1515)*(3))&-1);
- var $1517=((($1516)+(1))|0);
- var $1518=$line;
- var $1519=(($1518+$1517)|0);
- HEAP8[($1519)]=$1514;
- var $1520=$x;
- var $1521=((($1520)*(3))&-1);
- var $1522=((($1521)+(2))|0);
- var $1523=$prevline;
- var $1524=(($1523+$1522)|0);
- var $1525=HEAP8[($1524)];
- var $1526=($1525&255);
- var $1527=(($mix+2)|0);
- var $1528=HEAP8[($1527)];
- var $1529=($1528&255);
- var $1530=$1526^$1529;
- var $1531=(($1530)&255);
- var $1532=$x;
- var $1533=((($1532)*(3))&-1);
- var $1534=((($1533)+(2))|0);
- var $1535=$line;
- var $1536=(($1535+$1534)|0);
- HEAP8[($1536)]=$1531;
- var $1537=$count;
- var $1538=((($1537)-(1))|0);
- $count=$1538;
- var $1539=$x;
- var $1540=((($1539)+(1))|0);
- $x=$1540;
- label=87;break;
- case 91:
- label=92;break;
- case 92:
- label=344;break;
- case 93:
- var $1544=$prevline;
- var $1545=($1544|0)==0;
- if($1545){label=94;break;}else{label=177;break;}
- case 94:
- label=95;break;
- case 95:
- var $1548=$count;
- var $1549=$1548&-8;
- var $1550=($1549|0)!=0;
- if($1550){label=96;break;}else{var $1557=0;label=97;break;}
- case 96:
- var $1552=$x;
- var $1553=((($1552)+(8))|0);
- var $1554=$3;
- var $1555=($1553|0)<($1554|0);
- var $1557=$1555;label=97;break;
- case 97:
- var $1557;
- if($1557){label=98;break;}else{label=163;break;}
- case 98:
- var $1559=$mixmask;
- var $1560=($1559&255);
- var $1561=$1560<<1;
- var $1562=(($1561)&255);
- $mixmask=$1562;
- var $1563=$mixmask;
- var $1564=($1563&255);
- var $1565=($1564|0)==0;
- if($1565){label=99;break;}else{label=103;break;}
- case 99:
- var $1567=$fom_mask;
- var $1568=($1567|0)!=0;
- if($1568){label=100;break;}else{label=101;break;}
- case 100:
- var $1570=$fom_mask;
- var $1577=$1570;label=102;break;
- case 101:
- var $1572=$5;
- var $1573=(($1572+1)|0);
- $5=$1573;
- var $1574=HEAP8[($1572)];
- var $1575=($1574&255);
- var $1577=$1575;label=102;break;
- case 102:
- var $1577;
- var $1578=(($1577)&255);
- $mask=$1578;
- $mixmask=1;
- label=103;break;
- case 103:
- var $1580=$mask;
- var $1581=($1580&255);
- var $1582=$mixmask;
- var $1583=($1582&255);
- var $1584=$1581&$1583;
- var $1585=($1584|0)!=0;
- if($1585){label=104;break;}else{label=105;break;}
- case 104:
- var $1587=(($mix)|0);
- var $1588=HEAP8[($1587)];
- var $1589=$x;
- var $1590=((($1589)*(3))&-1);
- var $1591=$line;
- var $1592=(($1591+$1590)|0);
- HEAP8[($1592)]=$1588;
- var $1593=(($mix+1)|0);
- var $1594=HEAP8[($1593)];
- var $1595=$x;
- var $1596=((($1595)*(3))&-1);
- var $1597=((($1596)+(1))|0);
- var $1598=$line;
- var $1599=(($1598+$1597)|0);
- HEAP8[($1599)]=$1594;
- var $1600=(($mix+2)|0);
- var $1601=HEAP8[($1600)];
- var $1602=$x;
- var $1603=((($1602)*(3))&-1);
- var $1604=((($1603)+(2))|0);
- var $1605=$line;
- var $1606=(($1605+$1604)|0);
- HEAP8[($1606)]=$1601;
- label=106;break;
- case 105:
- var $1608=$x;
- var $1609=((($1608)*(3))&-1);
- var $1610=$line;
- var $1611=(($1610+$1609)|0);
- HEAP8[($1611)]=0;
- var $1612=$x;
- var $1613=((($1612)*(3))&-1);
- var $1614=((($1613)+(1))|0);
- var $1615=$line;
- var $1616=(($1615+$1614)|0);
- HEAP8[($1616)]=0;
- var $1617=$x;
- var $1618=((($1617)*(3))&-1);
- var $1619=((($1618)+(2))|0);
- var $1620=$line;
- var $1621=(($1620+$1619)|0);
- HEAP8[($1621)]=0;
- label=106;break;
- case 106:
- var $1623=$count;
- var $1624=((($1623)-(1))|0);
- $count=$1624;
- var $1625=$x;
- var $1626=((($1625)+(1))|0);
- $x=$1626;
- var $1627=$mixmask;
- var $1628=($1627&255);
- var $1629=$1628<<1;
- var $1630=(($1629)&255);
- $mixmask=$1630;
- var $1631=$mixmask;
- var $1632=($1631&255);
- var $1633=($1632|0)==0;
- if($1633){label=107;break;}else{label=111;break;}
- case 107:
- var $1635=$fom_mask;
- var $1636=($1635|0)!=0;
- if($1636){label=108;break;}else{label=109;break;}
- case 108:
- var $1638=$fom_mask;
- var $1645=$1638;label=110;break;
- case 109:
- var $1640=$5;
- var $1641=(($1640+1)|0);
- $5=$1641;
- var $1642=HEAP8[($1640)];
- var $1643=($1642&255);
- var $1645=$1643;label=110;break;
- case 110:
- var $1645;
- var $1646=(($1645)&255);
- $mask=$1646;
- $mixmask=1;
- label=111;break;
- case 111:
- var $1648=$mask;
- var $1649=($1648&255);
- var $1650=$mixmask;
- var $1651=($1650&255);
- var $1652=$1649&$1651;
- var $1653=($1652|0)!=0;
- if($1653){label=112;break;}else{label=113;break;}
- case 112:
- var $1655=(($mix)|0);
- var $1656=HEAP8[($1655)];
- var $1657=$x;
- var $1658=((($1657)*(3))&-1);
- var $1659=$line;
- var $1660=(($1659+$1658)|0);
- HEAP8[($1660)]=$1656;
- var $1661=(($mix+1)|0);
- var $1662=HEAP8[($1661)];
- var $1663=$x;
- var $1664=((($1663)*(3))&-1);
- var $1665=((($1664)+(1))|0);
- var $1666=$line;
- var $1667=(($1666+$1665)|0);
- HEAP8[($1667)]=$1662;
- var $1668=(($mix+2)|0);
- var $1669=HEAP8[($1668)];
- var $1670=$x;
- var $1671=((($1670)*(3))&-1);
- var $1672=((($1671)+(2))|0);
- var $1673=$line;
- var $1674=(($1673+$1672)|0);
- HEAP8[($1674)]=$1669;
- label=114;break;
- case 113:
- var $1676=$x;
- var $1677=((($1676)*(3))&-1);
- var $1678=$line;
- var $1679=(($1678+$1677)|0);
- HEAP8[($1679)]=0;
- var $1680=$x;
- var $1681=((($1680)*(3))&-1);
- var $1682=((($1681)+(1))|0);
- var $1683=$line;
- var $1684=(($1683+$1682)|0);
- HEAP8[($1684)]=0;
- var $1685=$x;
- var $1686=((($1685)*(3))&-1);
- var $1687=((($1686)+(2))|0);
- var $1688=$line;
- var $1689=(($1688+$1687)|0);
- HEAP8[($1689)]=0;
- label=114;break;
- case 114:
- var $1691=$count;
- var $1692=((($1691)-(1))|0);
- $count=$1692;
- var $1693=$x;
- var $1694=((($1693)+(1))|0);
- $x=$1694;
- var $1695=$mixmask;
- var $1696=($1695&255);
- var $1697=$1696<<1;
- var $1698=(($1697)&255);
- $mixmask=$1698;
- var $1699=$mixmask;
- var $1700=($1699&255);
- var $1701=($1700|0)==0;
- if($1701){label=115;break;}else{label=119;break;}
- case 115:
- var $1703=$fom_mask;
- var $1704=($1703|0)!=0;
- if($1704){label=116;break;}else{label=117;break;}
- case 116:
- var $1706=$fom_mask;
- var $1713=$1706;label=118;break;
- case 117:
- var $1708=$5;
- var $1709=(($1708+1)|0);
- $5=$1709;
- var $1710=HEAP8[($1708)];
- var $1711=($1710&255);
- var $1713=$1711;label=118;break;
- case 118:
- var $1713;
- var $1714=(($1713)&255);
- $mask=$1714;
- $mixmask=1;
- label=119;break;
- case 119:
- var $1716=$mask;
- var $1717=($1716&255);
- var $1718=$mixmask;
- var $1719=($1718&255);
- var $1720=$1717&$1719;
- var $1721=($1720|0)!=0;
- if($1721){label=120;break;}else{label=121;break;}
- case 120:
- var $1723=(($mix)|0);
- var $1724=HEAP8[($1723)];
- var $1725=$x;
- var $1726=((($1725)*(3))&-1);
- var $1727=$line;
- var $1728=(($1727+$1726)|0);
- HEAP8[($1728)]=$1724;
- var $1729=(($mix+1)|0);
- var $1730=HEAP8[($1729)];
- var $1731=$x;
- var $1732=((($1731)*(3))&-1);
- var $1733=((($1732)+(1))|0);
- var $1734=$line;
- var $1735=(($1734+$1733)|0);
- HEAP8[($1735)]=$1730;
- var $1736=(($mix+2)|0);
- var $1737=HEAP8[($1736)];
- var $1738=$x;
- var $1739=((($1738)*(3))&-1);
- var $1740=((($1739)+(2))|0);
- var $1741=$line;
- var $1742=(($1741+$1740)|0);
- HEAP8[($1742)]=$1737;
- label=122;break;
- case 121:
- var $1744=$x;
- var $1745=((($1744)*(3))&-1);
- var $1746=$line;
- var $1747=(($1746+$1745)|0);
- HEAP8[($1747)]=0;
- var $1748=$x;
- var $1749=((($1748)*(3))&-1);
- var $1750=((($1749)+(1))|0);
- var $1751=$line;
- var $1752=(($1751+$1750)|0);
- HEAP8[($1752)]=0;
- var $1753=$x;
- var $1754=((($1753)*(3))&-1);
- var $1755=((($1754)+(2))|0);
- var $1756=$line;
- var $1757=(($1756+$1755)|0);
- HEAP8[($1757)]=0;
- label=122;break;
- case 122:
- var $1759=$count;
- var $1760=((($1759)-(1))|0);
- $count=$1760;
- var $1761=$x;
- var $1762=((($1761)+(1))|0);
- $x=$1762;
- var $1763=$mixmask;
- var $1764=($1763&255);
- var $1765=$1764<<1;
- var $1766=(($1765)&255);
- $mixmask=$1766;
- var $1767=$mixmask;
- var $1768=($1767&255);
- var $1769=($1768|0)==0;
- if($1769){label=123;break;}else{label=127;break;}
- case 123:
- var $1771=$fom_mask;
- var $1772=($1771|0)!=0;
- if($1772){label=124;break;}else{label=125;break;}
- case 124:
- var $1774=$fom_mask;
- var $1781=$1774;label=126;break;
- case 125:
- var $1776=$5;
- var $1777=(($1776+1)|0);
- $5=$1777;
- var $1778=HEAP8[($1776)];
- var $1779=($1778&255);
- var $1781=$1779;label=126;break;
- case 126:
- var $1781;
- var $1782=(($1781)&255);
- $mask=$1782;
- $mixmask=1;
- label=127;break;
- case 127:
- var $1784=$mask;
- var $1785=($1784&255);
- var $1786=$mixmask;
- var $1787=($1786&255);
- var $1788=$1785&$1787;
- var $1789=($1788|0)!=0;
- if($1789){label=128;break;}else{label=129;break;}
- case 128:
- var $1791=(($mix)|0);
- var $1792=HEAP8[($1791)];
- var $1793=$x;
- var $1794=((($1793)*(3))&-1);
- var $1795=$line;
- var $1796=(($1795+$1794)|0);
- HEAP8[($1796)]=$1792;
- var $1797=(($mix+1)|0);
- var $1798=HEAP8[($1797)];
- var $1799=$x;
- var $1800=((($1799)*(3))&-1);
- var $1801=((($1800)+(1))|0);
- var $1802=$line;
- var $1803=(($1802+$1801)|0);
- HEAP8[($1803)]=$1798;
- var $1804=(($mix+2)|0);
- var $1805=HEAP8[($1804)];
- var $1806=$x;
- var $1807=((($1806)*(3))&-1);
- var $1808=((($1807)+(2))|0);
- var $1809=$line;
- var $1810=(($1809+$1808)|0);
- HEAP8[($1810)]=$1805;
- label=130;break;
- case 129:
- var $1812=$x;
- var $1813=((($1812)*(3))&-1);
- var $1814=$line;
- var $1815=(($1814+$1813)|0);
- HEAP8[($1815)]=0;
- var $1816=$x;
- var $1817=((($1816)*(3))&-1);
- var $1818=((($1817)+(1))|0);
- var $1819=$line;
- var $1820=(($1819+$1818)|0);
- HEAP8[($1820)]=0;
- var $1821=$x;
- var $1822=((($1821)*(3))&-1);
- var $1823=((($1822)+(2))|0);
- var $1824=$line;
- var $1825=(($1824+$1823)|0);
- HEAP8[($1825)]=0;
- label=130;break;
- case 130:
- var $1827=$count;
- var $1828=((($1827)-(1))|0);
- $count=$1828;
- var $1829=$x;
- var $1830=((($1829)+(1))|0);
- $x=$1830;
- var $1831=$mixmask;
- var $1832=($1831&255);
- var $1833=$1832<<1;
- var $1834=(($1833)&255);
- $mixmask=$1834;
- var $1835=$mixmask;
- var $1836=($1835&255);
- var $1837=($1836|0)==0;
- if($1837){label=131;break;}else{label=135;break;}
- case 131:
- var $1839=$fom_mask;
- var $1840=($1839|0)!=0;
- if($1840){label=132;break;}else{label=133;break;}
- case 132:
- var $1842=$fom_mask;
- var $1849=$1842;label=134;break;
- case 133:
- var $1844=$5;
- var $1845=(($1844+1)|0);
- $5=$1845;
- var $1846=HEAP8[($1844)];
- var $1847=($1846&255);
- var $1849=$1847;label=134;break;
- case 134:
- var $1849;
- var $1850=(($1849)&255);
- $mask=$1850;
- $mixmask=1;
- label=135;break;
- case 135:
- var $1852=$mask;
- var $1853=($1852&255);
- var $1854=$mixmask;
- var $1855=($1854&255);
- var $1856=$1853&$1855;
- var $1857=($1856|0)!=0;
- if($1857){label=136;break;}else{label=137;break;}
- case 136:
- var $1859=(($mix)|0);
- var $1860=HEAP8[($1859)];
- var $1861=$x;
- var $1862=((($1861)*(3))&-1);
- var $1863=$line;
- var $1864=(($1863+$1862)|0);
- HEAP8[($1864)]=$1860;
- var $1865=(($mix+1)|0);
- var $1866=HEAP8[($1865)];
- var $1867=$x;
- var $1868=((($1867)*(3))&-1);
- var $1869=((($1868)+(1))|0);
- var $1870=$line;
- var $1871=(($1870+$1869)|0);
- HEAP8[($1871)]=$1866;
- var $1872=(($mix+2)|0);
- var $1873=HEAP8[($1872)];
- var $1874=$x;
- var $1875=((($1874)*(3))&-1);
- var $1876=((($1875)+(2))|0);
- var $1877=$line;
- var $1878=(($1877+$1876)|0);
- HEAP8[($1878)]=$1873;
- label=138;break;
- case 137:
- var $1880=$x;
- var $1881=((($1880)*(3))&-1);
- var $1882=$line;
- var $1883=(($1882+$1881)|0);
- HEAP8[($1883)]=0;
- var $1884=$x;
- var $1885=((($1884)*(3))&-1);
- var $1886=((($1885)+(1))|0);
- var $1887=$line;
- var $1888=(($1887+$1886)|0);
- HEAP8[($1888)]=0;
- var $1889=$x;
- var $1890=((($1889)*(3))&-1);
- var $1891=((($1890)+(2))|0);
- var $1892=$line;
- var $1893=(($1892+$1891)|0);
- HEAP8[($1893)]=0;
- label=138;break;
- case 138:
- var $1895=$count;
- var $1896=((($1895)-(1))|0);
- $count=$1896;
- var $1897=$x;
- var $1898=((($1897)+(1))|0);
- $x=$1898;
- var $1899=$mixmask;
- var $1900=($1899&255);
- var $1901=$1900<<1;
- var $1902=(($1901)&255);
- $mixmask=$1902;
- var $1903=$mixmask;
- var $1904=($1903&255);
- var $1905=($1904|0)==0;
- if($1905){label=139;break;}else{label=143;break;}
- case 139:
- var $1907=$fom_mask;
- var $1908=($1907|0)!=0;
- if($1908){label=140;break;}else{label=141;break;}
- case 140:
- var $1910=$fom_mask;
- var $1917=$1910;label=142;break;
- case 141:
- var $1912=$5;
- var $1913=(($1912+1)|0);
- $5=$1913;
- var $1914=HEAP8[($1912)];
- var $1915=($1914&255);
- var $1917=$1915;label=142;break;
- case 142:
- var $1917;
- var $1918=(($1917)&255);
- $mask=$1918;
- $mixmask=1;
- label=143;break;
- case 143:
- var $1920=$mask;
- var $1921=($1920&255);
- var $1922=$mixmask;
- var $1923=($1922&255);
- var $1924=$1921&$1923;
- var $1925=($1924|0)!=0;
- if($1925){label=144;break;}else{label=145;break;}
- case 144:
- var $1927=(($mix)|0);
- var $1928=HEAP8[($1927)];
- var $1929=$x;
- var $1930=((($1929)*(3))&-1);
- var $1931=$line;
- var $1932=(($1931+$1930)|0);
- HEAP8[($1932)]=$1928;
- var $1933=(($mix+1)|0);
- var $1934=HEAP8[($1933)];
- var $1935=$x;
- var $1936=((($1935)*(3))&-1);
- var $1937=((($1936)+(1))|0);
- var $1938=$line;
- var $1939=(($1938+$1937)|0);
- HEAP8[($1939)]=$1934;
- var $1940=(($mix+2)|0);
- var $1941=HEAP8[($1940)];
- var $1942=$x;
- var $1943=((($1942)*(3))&-1);
- var $1944=((($1943)+(2))|0);
- var $1945=$line;
- var $1946=(($1945+$1944)|0);
- HEAP8[($1946)]=$1941;
- label=146;break;
- case 145:
- var $1948=$x;
- var $1949=((($1948)*(3))&-1);
- var $1950=$line;
- var $1951=(($1950+$1949)|0);
- HEAP8[($1951)]=0;
- var $1952=$x;
- var $1953=((($1952)*(3))&-1);
- var $1954=((($1953)+(1))|0);
- var $1955=$line;
- var $1956=(($1955+$1954)|0);
- HEAP8[($1956)]=0;
- var $1957=$x;
- var $1958=((($1957)*(3))&-1);
- var $1959=((($1958)+(2))|0);
- var $1960=$line;
- var $1961=(($1960+$1959)|0);
- HEAP8[($1961)]=0;
- label=146;break;
- case 146:
- var $1963=$count;
- var $1964=((($1963)-(1))|0);
- $count=$1964;
- var $1965=$x;
- var $1966=((($1965)+(1))|0);
- $x=$1966;
- var $1967=$mixmask;
- var $1968=($1967&255);
- var $1969=$1968<<1;
- var $1970=(($1969)&255);
- $mixmask=$1970;
- var $1971=$mixmask;
- var $1972=($1971&255);
- var $1973=($1972|0)==0;
- if($1973){label=147;break;}else{label=151;break;}
- case 147:
- var $1975=$fom_mask;
- var $1976=($1975|0)!=0;
- if($1976){label=148;break;}else{label=149;break;}
- case 148:
- var $1978=$fom_mask;
- var $1985=$1978;label=150;break;
- case 149:
- var $1980=$5;
- var $1981=(($1980+1)|0);
- $5=$1981;
- var $1982=HEAP8[($1980)];
- var $1983=($1982&255);
- var $1985=$1983;label=150;break;
- case 150:
- var $1985;
- var $1986=(($1985)&255);
- $mask=$1986;
- $mixmask=1;
- label=151;break;
- case 151:
- var $1988=$mask;
- var $1989=($1988&255);
- var $1990=$mixmask;
- var $1991=($1990&255);
- var $1992=$1989&$1991;
- var $1993=($1992|0)!=0;
- if($1993){label=152;break;}else{label=153;break;}
- case 152:
- var $1995=(($mix)|0);
- var $1996=HEAP8[($1995)];
- var $1997=$x;
- var $1998=((($1997)*(3))&-1);
- var $1999=$line;
- var $2000=(($1999+$1998)|0);
- HEAP8[($2000)]=$1996;
- var $2001=(($mix+1)|0);
- var $2002=HEAP8[($2001)];
- var $2003=$x;
- var $2004=((($2003)*(3))&-1);
- var $2005=((($2004)+(1))|0);
- var $2006=$line;
- var $2007=(($2006+$2005)|0);
- HEAP8[($2007)]=$2002;
- var $2008=(($mix+2)|0);
- var $2009=HEAP8[($2008)];
- var $2010=$x;
- var $2011=((($2010)*(3))&-1);
- var $2012=((($2011)+(2))|0);
- var $2013=$line;
- var $2014=(($2013+$2012)|0);
- HEAP8[($2014)]=$2009;
- label=154;break;
- case 153:
- var $2016=$x;
- var $2017=((($2016)*(3))&-1);
- var $2018=$line;
- var $2019=(($2018+$2017)|0);
- HEAP8[($2019)]=0;
- var $2020=$x;
- var $2021=((($2020)*(3))&-1);
- var $2022=((($2021)+(1))|0);
- var $2023=$line;
- var $2024=(($2023+$2022)|0);
- HEAP8[($2024)]=0;
- var $2025=$x;
- var $2026=((($2025)*(3))&-1);
- var $2027=((($2026)+(2))|0);
- var $2028=$line;
- var $2029=(($2028+$2027)|0);
- HEAP8[($2029)]=0;
- label=154;break;
- case 154:
- var $2031=$count;
- var $2032=((($2031)-(1))|0);
- $count=$2032;
- var $2033=$x;
- var $2034=((($2033)+(1))|0);
- $x=$2034;
- var $2035=$mixmask;
- var $2036=($2035&255);
- var $2037=$2036<<1;
- var $2038=(($2037)&255);
- $mixmask=$2038;
- var $2039=$mixmask;
- var $2040=($2039&255);
- var $2041=($2040|0)==0;
- if($2041){label=155;break;}else{label=159;break;}
- case 155:
- var $2043=$fom_mask;
- var $2044=($2043|0)!=0;
- if($2044){label=156;break;}else{label=157;break;}
- case 156:
- var $2046=$fom_mask;
- var $2053=$2046;label=158;break;
- case 157:
- var $2048=$5;
- var $2049=(($2048+1)|0);
- $5=$2049;
- var $2050=HEAP8[($2048)];
- var $2051=($2050&255);
- var $2053=$2051;label=158;break;
- case 158:
- var $2053;
- var $2054=(($2053)&255);
- $mask=$2054;
- $mixmask=1;
- label=159;break;
- case 159:
- var $2056=$mask;
- var $2057=($2056&255);
- var $2058=$mixmask;
- var $2059=($2058&255);
- var $2060=$2057&$2059;
- var $2061=($2060|0)!=0;
- if($2061){label=160;break;}else{label=161;break;}
- case 160:
- var $2063=(($mix)|0);
- var $2064=HEAP8[($2063)];
- var $2065=$x;
- var $2066=((($2065)*(3))&-1);
- var $2067=$line;
- var $2068=(($2067+$2066)|0);
- HEAP8[($2068)]=$2064;
- var $2069=(($mix+1)|0);
- var $2070=HEAP8[($2069)];
- var $2071=$x;
- var $2072=((($2071)*(3))&-1);
- var $2073=((($2072)+(1))|0);
- var $2074=$line;
- var $2075=(($2074+$2073)|0);
- HEAP8[($2075)]=$2070;
- var $2076=(($mix+2)|0);
- var $2077=HEAP8[($2076)];
- var $2078=$x;
- var $2079=((($2078)*(3))&-1);
- var $2080=((($2079)+(2))|0);
- var $2081=$line;
- var $2082=(($2081+$2080)|0);
- HEAP8[($2082)]=$2077;
- label=162;break;
- case 161:
- var $2084=$x;
- var $2085=((($2084)*(3))&-1);
- var $2086=$line;
- var $2087=(($2086+$2085)|0);
- HEAP8[($2087)]=0;
- var $2088=$x;
- var $2089=((($2088)*(3))&-1);
- var $2090=((($2089)+(1))|0);
- var $2091=$line;
- var $2092=(($2091+$2090)|0);
- HEAP8[($2092)]=0;
- var $2093=$x;
- var $2094=((($2093)*(3))&-1);
- var $2095=((($2094)+(2))|0);
- var $2096=$line;
- var $2097=(($2096+$2095)|0);
- HEAP8[($2097)]=0;
- label=162;break;
- case 162:
- var $2099=$count;
- var $2100=((($2099)-(1))|0);
- $count=$2100;
- var $2101=$x;
- var $2102=((($2101)+(1))|0);
- $x=$2102;
- label=95;break;
- case 163:
- label=164;break;
- case 164:
- var $2105=$count;
- var $2106=($2105|0)>0;
- if($2106){label=165;break;}else{var $2112=0;label=166;break;}
- case 165:
- var $2108=$x;
- var $2109=$3;
- var $2110=($2108|0)<($2109|0);
- var $2112=$2110;label=166;break;
- case 166:
- var $2112;
- if($2112){label=167;break;}else{label=176;break;}
- case 167:
- var $2114=$mixmask;
- var $2115=($2114&255);
- var $2116=$2115<<1;
- var $2117=(($2116)&255);
- $mixmask=$2117;
- var $2118=$mixmask;
- var $2119=($2118&255);
- var $2120=($2119|0)==0;
- if($2120){label=168;break;}else{label=172;break;}
- case 168:
- var $2122=$fom_mask;
- var $2123=($2122|0)!=0;
- if($2123){label=169;break;}else{label=170;break;}
- case 169:
- var $2125=$fom_mask;
- var $2132=$2125;label=171;break;
- case 170:
- var $2127=$5;
- var $2128=(($2127+1)|0);
- $5=$2128;
- var $2129=HEAP8[($2127)];
- var $2130=($2129&255);
- var $2132=$2130;label=171;break;
- case 171:
- var $2132;
- var $2133=(($2132)&255);
- $mask=$2133;
- $mixmask=1;
- label=172;break;
- case 172:
- var $2135=$mask;
- var $2136=($2135&255);
- var $2137=$mixmask;
- var $2138=($2137&255);
- var $2139=$2136&$2138;
- var $2140=($2139|0)!=0;
- if($2140){label=173;break;}else{label=174;break;}
- case 173:
- var $2142=(($mix)|0);
- var $2143=HEAP8[($2142)];
- var $2144=$x;
- var $2145=((($2144)*(3))&-1);
- var $2146=$line;
- var $2147=(($2146+$2145)|0);
- HEAP8[($2147)]=$2143;
- var $2148=(($mix+1)|0);
- var $2149=HEAP8[($2148)];
- var $2150=$x;
- var $2151=((($2150)*(3))&-1);
- var $2152=((($2151)+(1))|0);
- var $2153=$line;
- var $2154=(($2153+$2152)|0);
- HEAP8[($2154)]=$2149;
- var $2155=(($mix+2)|0);
- var $2156=HEAP8[($2155)];
- var $2157=$x;
- var $2158=((($2157)*(3))&-1);
- var $2159=((($2158)+(2))|0);
- var $2160=$line;
- var $2161=(($2160+$2159)|0);
- HEAP8[($2161)]=$2156;
- label=175;break;
- case 174:
- var $2163=$x;
- var $2164=((($2163)*(3))&-1);
- var $2165=$line;
- var $2166=(($2165+$2164)|0);
- HEAP8[($2166)]=0;
- var $2167=$x;
- var $2168=((($2167)*(3))&-1);
- var $2169=((($2168)+(1))|0);
- var $2170=$line;
- var $2171=(($2170+$2169)|0);
- HEAP8[($2171)]=0;
- var $2172=$x;
- var $2173=((($2172)*(3))&-1);
- var $2174=((($2173)+(2))|0);
- var $2175=$line;
- var $2176=(($2175+$2174)|0);
- HEAP8[($2176)]=0;
- label=175;break;
- case 175:
- var $2178=$count;
- var $2179=((($2178)-(1))|0);
- $count=$2179;
- var $2180=$x;
- var $2181=((($2180)+(1))|0);
- $x=$2181;
- label=164;break;
- case 176:
- label=260;break;
- case 177:
- label=178;break;
- case 178:
- var $2185=$count;
- var $2186=$2185&-8;
- var $2187=($2186|0)!=0;
- if($2187){label=179;break;}else{var $2194=0;label=180;break;}
- case 179:
- var $2189=$x;
- var $2190=((($2189)+(8))|0);
- var $2191=$3;
- var $2192=($2190|0)<($2191|0);
- var $2194=$2192;label=180;break;
- case 180:
- var $2194;
- if($2194){label=181;break;}else{label=246;break;}
- case 181:
- var $2196=$mixmask;
- var $2197=($2196&255);
- var $2198=$2197<<1;
- var $2199=(($2198)&255);
- $mixmask=$2199;
- var $2200=$mixmask;
- var $2201=($2200&255);
- var $2202=($2201|0)==0;
- if($2202){label=182;break;}else{label=186;break;}
- case 182:
- var $2204=$fom_mask;
- var $2205=($2204|0)!=0;
- if($2205){label=183;break;}else{label=184;break;}
- case 183:
- var $2207=$fom_mask;
- var $2214=$2207;label=185;break;
- case 184:
- var $2209=$5;
- var $2210=(($2209+1)|0);
- $5=$2210;
- var $2211=HEAP8[($2209)];
- var $2212=($2211&255);
- var $2214=$2212;label=185;break;
- case 185:
- var $2214;
- var $2215=(($2214)&255);
- $mask=$2215;
- $mixmask=1;
- label=186;break;
- case 186:
- var $2217=$mask;
- var $2218=($2217&255);
- var $2219=$mixmask;
- var $2220=($2219&255);
- var $2221=$2218&$2220;
- var $2222=($2221|0)!=0;
- if($2222){label=187;break;}else{label=188;break;}
- case 187:
- var $2224=$x;
- var $2225=((($2224)*(3))&-1);
- var $2226=$prevline;
- var $2227=(($2226+$2225)|0);
- var $2228=HEAP8[($2227)];
- var $2229=($2228&255);
- var $2230=(($mix)|0);
- var $2231=HEAP8[($2230)];
- var $2232=($2231&255);
- var $2233=$2229^$2232;
- var $2234=(($2233)&255);
- var $2235=$x;
- var $2236=((($2235)*(3))&-1);
- var $2237=$line;
- var $2238=(($2237+$2236)|0);
- HEAP8[($2238)]=$2234;
- var $2239=$x;
- var $2240=((($2239)*(3))&-1);
- var $2241=((($2240)+(1))|0);
- var $2242=$prevline;
- var $2243=(($2242+$2241)|0);
- var $2244=HEAP8[($2243)];
- var $2245=($2244&255);
- var $2246=(($mix+1)|0);
- var $2247=HEAP8[($2246)];
- var $2248=($2247&255);
- var $2249=$2245^$2248;
- var $2250=(($2249)&255);
- var $2251=$x;
- var $2252=((($2251)*(3))&-1);
- var $2253=((($2252)+(1))|0);
- var $2254=$line;
- var $2255=(($2254+$2253)|0);
- HEAP8[($2255)]=$2250;
- var $2256=$x;
- var $2257=((($2256)*(3))&-1);
- var $2258=((($2257)+(2))|0);
- var $2259=$prevline;
- var $2260=(($2259+$2258)|0);
- var $2261=HEAP8[($2260)];
- var $2262=($2261&255);
- var $2263=(($mix+2)|0);
- var $2264=HEAP8[($2263)];
- var $2265=($2264&255);
- var $2266=$2262^$2265;
- var $2267=(($2266)&255);
- var $2268=$x;
- var $2269=((($2268)*(3))&-1);
- var $2270=((($2269)+(2))|0);
- var $2271=$line;
- var $2272=(($2271+$2270)|0);
- HEAP8[($2272)]=$2267;
- label=189;break;
- case 188:
- var $2274=$x;
- var $2275=((($2274)*(3))&-1);
- var $2276=$prevline;
- var $2277=(($2276+$2275)|0);
- var $2278=HEAP8[($2277)];
- var $2279=$x;
- var $2280=((($2279)*(3))&-1);
- var $2281=$line;
- var $2282=(($2281+$2280)|0);
- HEAP8[($2282)]=$2278;
- var $2283=$x;
- var $2284=((($2283)*(3))&-1);
- var $2285=((($2284)+(1))|0);
- var $2286=$prevline;
- var $2287=(($2286+$2285)|0);
- var $2288=HEAP8[($2287)];
- var $2289=$x;
- var $2290=((($2289)*(3))&-1);
- var $2291=((($2290)+(1))|0);
- var $2292=$line;
- var $2293=(($2292+$2291)|0);
- HEAP8[($2293)]=$2288;
- var $2294=$x;
- var $2295=((($2294)*(3))&-1);
- var $2296=((($2295)+(2))|0);
- var $2297=$prevline;
- var $2298=(($2297+$2296)|0);
- var $2299=HEAP8[($2298)];
- var $2300=$x;
- var $2301=((($2300)*(3))&-1);
- var $2302=((($2301)+(2))|0);
- var $2303=$line;
- var $2304=(($2303+$2302)|0);
- HEAP8[($2304)]=$2299;
- label=189;break;
- case 189:
- var $2306=$count;
- var $2307=((($2306)-(1))|0);
- $count=$2307;
- var $2308=$x;
- var $2309=((($2308)+(1))|0);
- $x=$2309;
- var $2310=$mixmask;
- var $2311=($2310&255);
- var $2312=$2311<<1;
- var $2313=(($2312)&255);
- $mixmask=$2313;
- var $2314=$mixmask;
- var $2315=($2314&255);
- var $2316=($2315|0)==0;
- if($2316){label=190;break;}else{label=194;break;}
- case 190:
- var $2318=$fom_mask;
- var $2319=($2318|0)!=0;
- if($2319){label=191;break;}else{label=192;break;}
- case 191:
- var $2321=$fom_mask;
- var $2328=$2321;label=193;break;
- case 192:
- var $2323=$5;
- var $2324=(($2323+1)|0);
- $5=$2324;
- var $2325=HEAP8[($2323)];
- var $2326=($2325&255);
- var $2328=$2326;label=193;break;
- case 193:
- var $2328;
- var $2329=(($2328)&255);
- $mask=$2329;
- $mixmask=1;
- label=194;break;
- case 194:
- var $2331=$mask;
- var $2332=($2331&255);
- var $2333=$mixmask;
- var $2334=($2333&255);
- var $2335=$2332&$2334;
- var $2336=($2335|0)!=0;
- if($2336){label=195;break;}else{label=196;break;}
- case 195:
- var $2338=$x;
- var $2339=((($2338)*(3))&-1);
- var $2340=$prevline;
- var $2341=(($2340+$2339)|0);
- var $2342=HEAP8[($2341)];
- var $2343=($2342&255);
- var $2344=(($mix)|0);
- var $2345=HEAP8[($2344)];
- var $2346=($2345&255);
- var $2347=$2343^$2346;
- var $2348=(($2347)&255);
- var $2349=$x;
- var $2350=((($2349)*(3))&-1);
- var $2351=$line;
- var $2352=(($2351+$2350)|0);
- HEAP8[($2352)]=$2348;
- var $2353=$x;
- var $2354=((($2353)*(3))&-1);
- var $2355=((($2354)+(1))|0);
- var $2356=$prevline;
- var $2357=(($2356+$2355)|0);
- var $2358=HEAP8[($2357)];
- var $2359=($2358&255);
- var $2360=(($mix+1)|0);
- var $2361=HEAP8[($2360)];
- var $2362=($2361&255);
- var $2363=$2359^$2362;
- var $2364=(($2363)&255);
- var $2365=$x;
- var $2366=((($2365)*(3))&-1);
- var $2367=((($2366)+(1))|0);
- var $2368=$line;
- var $2369=(($2368+$2367)|0);
- HEAP8[($2369)]=$2364;
- var $2370=$x;
- var $2371=((($2370)*(3))&-1);
- var $2372=((($2371)+(2))|0);
- var $2373=$prevline;
- var $2374=(($2373+$2372)|0);
- var $2375=HEAP8[($2374)];
- var $2376=($2375&255);
- var $2377=(($mix+2)|0);
- var $2378=HEAP8[($2377)];
- var $2379=($2378&255);
- var $2380=$2376^$2379;
- var $2381=(($2380)&255);
- var $2382=$x;
- var $2383=((($2382)*(3))&-1);
- var $2384=((($2383)+(2))|0);
- var $2385=$line;
- var $2386=(($2385+$2384)|0);
- HEAP8[($2386)]=$2381;
- label=197;break;
- case 196:
- var $2388=$x;
- var $2389=((($2388)*(3))&-1);
- var $2390=$prevline;
- var $2391=(($2390+$2389)|0);
- var $2392=HEAP8[($2391)];
- var $2393=$x;
- var $2394=((($2393)*(3))&-1);
- var $2395=$line;
- var $2396=(($2395+$2394)|0);
- HEAP8[($2396)]=$2392;
- var $2397=$x;
- var $2398=((($2397)*(3))&-1);
- var $2399=((($2398)+(1))|0);
- var $2400=$prevline;
- var $2401=(($2400+$2399)|0);
- var $2402=HEAP8[($2401)];
- var $2403=$x;
- var $2404=((($2403)*(3))&-1);
- var $2405=((($2404)+(1))|0);
- var $2406=$line;
- var $2407=(($2406+$2405)|0);
- HEAP8[($2407)]=$2402;
- var $2408=$x;
- var $2409=((($2408)*(3))&-1);
- var $2410=((($2409)+(2))|0);
- var $2411=$prevline;
- var $2412=(($2411+$2410)|0);
- var $2413=HEAP8[($2412)];
- var $2414=$x;
- var $2415=((($2414)*(3))&-1);
- var $2416=((($2415)+(2))|0);
- var $2417=$line;
- var $2418=(($2417+$2416)|0);
- HEAP8[($2418)]=$2413;
- label=197;break;
- case 197:
- var $2420=$count;
- var $2421=((($2420)-(1))|0);
- $count=$2421;
- var $2422=$x;
- var $2423=((($2422)+(1))|0);
- $x=$2423;
- var $2424=$mixmask;
- var $2425=($2424&255);
- var $2426=$2425<<1;
- var $2427=(($2426)&255);
- $mixmask=$2427;
- var $2428=$mixmask;
- var $2429=($2428&255);
- var $2430=($2429|0)==0;
- if($2430){label=198;break;}else{label=202;break;}
- case 198:
- var $2432=$fom_mask;
- var $2433=($2432|0)!=0;
- if($2433){label=199;break;}else{label=200;break;}
- case 199:
- var $2435=$fom_mask;
- var $2442=$2435;label=201;break;
- case 200:
- var $2437=$5;
- var $2438=(($2437+1)|0);
- $5=$2438;
- var $2439=HEAP8[($2437)];
- var $2440=($2439&255);
- var $2442=$2440;label=201;break;
- case 201:
- var $2442;
- var $2443=(($2442)&255);
- $mask=$2443;
- $mixmask=1;
- label=202;break;
- case 202:
- var $2445=$mask;
- var $2446=($2445&255);
- var $2447=$mixmask;
- var $2448=($2447&255);
- var $2449=$2446&$2448;
- var $2450=($2449|0)!=0;
- if($2450){label=203;break;}else{label=204;break;}
- case 203:
- var $2452=$x;
- var $2453=((($2452)*(3))&-1);
- var $2454=$prevline;
- var $2455=(($2454+$2453)|0);
- var $2456=HEAP8[($2455)];
- var $2457=($2456&255);
- var $2458=(($mix)|0);
- var $2459=HEAP8[($2458)];
- var $2460=($2459&255);
- var $2461=$2457^$2460;
- var $2462=(($2461)&255);
- var $2463=$x;
- var $2464=((($2463)*(3))&-1);
- var $2465=$line;
- var $2466=(($2465+$2464)|0);
- HEAP8[($2466)]=$2462;
- var $2467=$x;
- var $2468=((($2467)*(3))&-1);
- var $2469=((($2468)+(1))|0);
- var $2470=$prevline;
- var $2471=(($2470+$2469)|0);
- var $2472=HEAP8[($2471)];
- var $2473=($2472&255);
- var $2474=(($mix+1)|0);
- var $2475=HEAP8[($2474)];
- var $2476=($2475&255);
- var $2477=$2473^$2476;
- var $2478=(($2477)&255);
- var $2479=$x;
- var $2480=((($2479)*(3))&-1);
- var $2481=((($2480)+(1))|0);
- var $2482=$line;
- var $2483=(($2482+$2481)|0);
- HEAP8[($2483)]=$2478;
- var $2484=$x;
- var $2485=((($2484)*(3))&-1);
- var $2486=((($2485)+(2))|0);
- var $2487=$prevline;
- var $2488=(($2487+$2486)|0);
- var $2489=HEAP8[($2488)];
- var $2490=($2489&255);
- var $2491=(($mix+2)|0);
- var $2492=HEAP8[($2491)];
- var $2493=($2492&255);
- var $2494=$2490^$2493;
- var $2495=(($2494)&255);
- var $2496=$x;
- var $2497=((($2496)*(3))&-1);
- var $2498=((($2497)+(2))|0);
- var $2499=$line;
- var $2500=(($2499+$2498)|0);
- HEAP8[($2500)]=$2495;
- label=205;break;
- case 204:
- var $2502=$x;
- var $2503=((($2502)*(3))&-1);
- var $2504=$prevline;
- var $2505=(($2504+$2503)|0);
- var $2506=HEAP8[($2505)];
- var $2507=$x;
- var $2508=((($2507)*(3))&-1);
- var $2509=$line;
- var $2510=(($2509+$2508)|0);
- HEAP8[($2510)]=$2506;
- var $2511=$x;
- var $2512=((($2511)*(3))&-1);
- var $2513=((($2512)+(1))|0);
- var $2514=$prevline;
- var $2515=(($2514+$2513)|0);
- var $2516=HEAP8[($2515)];
- var $2517=$x;
- var $2518=((($2517)*(3))&-1);
- var $2519=((($2518)+(1))|0);
- var $2520=$line;
- var $2521=(($2520+$2519)|0);
- HEAP8[($2521)]=$2516;
- var $2522=$x;
- var $2523=((($2522)*(3))&-1);
- var $2524=((($2523)+(2))|0);
- var $2525=$prevline;
- var $2526=(($2525+$2524)|0);
- var $2527=HEAP8[($2526)];
- var $2528=$x;
- var $2529=((($2528)*(3))&-1);
- var $2530=((($2529)+(2))|0);
- var $2531=$line;
- var $2532=(($2531+$2530)|0);
- HEAP8[($2532)]=$2527;
- label=205;break;
- case 205:
- var $2534=$count;
- var $2535=((($2534)-(1))|0);
- $count=$2535;
- var $2536=$x;
- var $2537=((($2536)+(1))|0);
- $x=$2537;
- var $2538=$mixmask;
- var $2539=($2538&255);
- var $2540=$2539<<1;
- var $2541=(($2540)&255);
- $mixmask=$2541;
- var $2542=$mixmask;
- var $2543=($2542&255);
- var $2544=($2543|0)==0;
- if($2544){label=206;break;}else{label=210;break;}
- case 206:
- var $2546=$fom_mask;
- var $2547=($2546|0)!=0;
- if($2547){label=207;break;}else{label=208;break;}
- case 207:
- var $2549=$fom_mask;
- var $2556=$2549;label=209;break;
- case 208:
- var $2551=$5;
- var $2552=(($2551+1)|0);
- $5=$2552;
- var $2553=HEAP8[($2551)];
- var $2554=($2553&255);
- var $2556=$2554;label=209;break;
- case 209:
- var $2556;
- var $2557=(($2556)&255);
- $mask=$2557;
- $mixmask=1;
- label=210;break;
- case 210:
- var $2559=$mask;
- var $2560=($2559&255);
- var $2561=$mixmask;
- var $2562=($2561&255);
- var $2563=$2560&$2562;
- var $2564=($2563|0)!=0;
- if($2564){label=211;break;}else{label=212;break;}
- case 211:
- var $2566=$x;
- var $2567=((($2566)*(3))&-1);
- var $2568=$prevline;
- var $2569=(($2568+$2567)|0);
- var $2570=HEAP8[($2569)];
- var $2571=($2570&255);
- var $2572=(($mix)|0);
- var $2573=HEAP8[($2572)];
- var $2574=($2573&255);
- var $2575=$2571^$2574;
- var $2576=(($2575)&255);
- var $2577=$x;
- var $2578=((($2577)*(3))&-1);
- var $2579=$line;
- var $2580=(($2579+$2578)|0);
- HEAP8[($2580)]=$2576;
- var $2581=$x;
- var $2582=((($2581)*(3))&-1);
- var $2583=((($2582)+(1))|0);
- var $2584=$prevline;
- var $2585=(($2584+$2583)|0);
- var $2586=HEAP8[($2585)];
- var $2587=($2586&255);
- var $2588=(($mix+1)|0);
- var $2589=HEAP8[($2588)];
- var $2590=($2589&255);
- var $2591=$2587^$2590;
- var $2592=(($2591)&255);
- var $2593=$x;
- var $2594=((($2593)*(3))&-1);
- var $2595=((($2594)+(1))|0);
- var $2596=$line;
- var $2597=(($2596+$2595)|0);
- HEAP8[($2597)]=$2592;
- var $2598=$x;
- var $2599=((($2598)*(3))&-1);
- var $2600=((($2599)+(2))|0);
- var $2601=$prevline;
- var $2602=(($2601+$2600)|0);
- var $2603=HEAP8[($2602)];
- var $2604=($2603&255);
- var $2605=(($mix+2)|0);
- var $2606=HEAP8[($2605)];
- var $2607=($2606&255);
- var $2608=$2604^$2607;
- var $2609=(($2608)&255);
- var $2610=$x;
- var $2611=((($2610)*(3))&-1);
- var $2612=((($2611)+(2))|0);
- var $2613=$line;
- var $2614=(($2613+$2612)|0);
- HEAP8[($2614)]=$2609;
- label=213;break;
- case 212:
- var $2616=$x;
- var $2617=((($2616)*(3))&-1);
- var $2618=$prevline;
- var $2619=(($2618+$2617)|0);
- var $2620=HEAP8[($2619)];
- var $2621=$x;
- var $2622=((($2621)*(3))&-1);
- var $2623=$line;
- var $2624=(($2623+$2622)|0);
- HEAP8[($2624)]=$2620;
- var $2625=$x;
- var $2626=((($2625)*(3))&-1);
- var $2627=((($2626)+(1))|0);
- var $2628=$prevline;
- var $2629=(($2628+$2627)|0);
- var $2630=HEAP8[($2629)];
- var $2631=$x;
- var $2632=((($2631)*(3))&-1);
- var $2633=((($2632)+(1))|0);
- var $2634=$line;
- var $2635=(($2634+$2633)|0);
- HEAP8[($2635)]=$2630;
- var $2636=$x;
- var $2637=((($2636)*(3))&-1);
- var $2638=((($2637)+(2))|0);
- var $2639=$prevline;
- var $2640=(($2639+$2638)|0);
- var $2641=HEAP8[($2640)];
- var $2642=$x;
- var $2643=((($2642)*(3))&-1);
- var $2644=((($2643)+(2))|0);
- var $2645=$line;
- var $2646=(($2645+$2644)|0);
- HEAP8[($2646)]=$2641;
- label=213;break;
- case 213:
- var $2648=$count;
- var $2649=((($2648)-(1))|0);
- $count=$2649;
- var $2650=$x;
- var $2651=((($2650)+(1))|0);
- $x=$2651;
- var $2652=$mixmask;
- var $2653=($2652&255);
- var $2654=$2653<<1;
- var $2655=(($2654)&255);
- $mixmask=$2655;
- var $2656=$mixmask;
- var $2657=($2656&255);
- var $2658=($2657|0)==0;
- if($2658){label=214;break;}else{label=218;break;}
- case 214:
- var $2660=$fom_mask;
- var $2661=($2660|0)!=0;
- if($2661){label=215;break;}else{label=216;break;}
- case 215:
- var $2663=$fom_mask;
- var $2670=$2663;label=217;break;
- case 216:
- var $2665=$5;
- var $2666=(($2665+1)|0);
- $5=$2666;
- var $2667=HEAP8[($2665)];
- var $2668=($2667&255);
- var $2670=$2668;label=217;break;
- case 217:
- var $2670;
- var $2671=(($2670)&255);
- $mask=$2671;
- $mixmask=1;
- label=218;break;
- case 218:
- var $2673=$mask;
- var $2674=($2673&255);
- var $2675=$mixmask;
- var $2676=($2675&255);
- var $2677=$2674&$2676;
- var $2678=($2677|0)!=0;
- if($2678){label=219;break;}else{label=220;break;}
- case 219:
- var $2680=$x;
- var $2681=((($2680)*(3))&-1);
- var $2682=$prevline;
- var $2683=(($2682+$2681)|0);
- var $2684=HEAP8[($2683)];
- var $2685=($2684&255);
- var $2686=(($mix)|0);
- var $2687=HEAP8[($2686)];
- var $2688=($2687&255);
- var $2689=$2685^$2688;
- var $2690=(($2689)&255);
- var $2691=$x;
- var $2692=((($2691)*(3))&-1);
- var $2693=$line;
- var $2694=(($2693+$2692)|0);
- HEAP8[($2694)]=$2690;
- var $2695=$x;
- var $2696=((($2695)*(3))&-1);
- var $2697=((($2696)+(1))|0);
- var $2698=$prevline;
- var $2699=(($2698+$2697)|0);
- var $2700=HEAP8[($2699)];
- var $2701=($2700&255);
- var $2702=(($mix+1)|0);
- var $2703=HEAP8[($2702)];
- var $2704=($2703&255);
- var $2705=$2701^$2704;
- var $2706=(($2705)&255);
- var $2707=$x;
- var $2708=((($2707)*(3))&-1);
- var $2709=((($2708)+(1))|0);
- var $2710=$line;
- var $2711=(($2710+$2709)|0);
- HEAP8[($2711)]=$2706;
- var $2712=$x;
- var $2713=((($2712)*(3))&-1);
- var $2714=((($2713)+(2))|0);
- var $2715=$prevline;
- var $2716=(($2715+$2714)|0);
- var $2717=HEAP8[($2716)];
- var $2718=($2717&255);
- var $2719=(($mix+2)|0);
- var $2720=HEAP8[($2719)];
- var $2721=($2720&255);
- var $2722=$2718^$2721;
- var $2723=(($2722)&255);
- var $2724=$x;
- var $2725=((($2724)*(3))&-1);
- var $2726=((($2725)+(2))|0);
- var $2727=$line;
- var $2728=(($2727+$2726)|0);
- HEAP8[($2728)]=$2723;
- label=221;break;
- case 220:
- var $2730=$x;
- var $2731=((($2730)*(3))&-1);
- var $2732=$prevline;
- var $2733=(($2732+$2731)|0);
- var $2734=HEAP8[($2733)];
- var $2735=$x;
- var $2736=((($2735)*(3))&-1);
- var $2737=$line;
- var $2738=(($2737+$2736)|0);
- HEAP8[($2738)]=$2734;
- var $2739=$x;
- var $2740=((($2739)*(3))&-1);
- var $2741=((($2740)+(1))|0);
- var $2742=$prevline;
- var $2743=(($2742+$2741)|0);
- var $2744=HEAP8[($2743)];
- var $2745=$x;
- var $2746=((($2745)*(3))&-1);
- var $2747=((($2746)+(1))|0);
- var $2748=$line;
- var $2749=(($2748+$2747)|0);
- HEAP8[($2749)]=$2744;
- var $2750=$x;
- var $2751=((($2750)*(3))&-1);
- var $2752=((($2751)+(2))|0);
- var $2753=$prevline;
- var $2754=(($2753+$2752)|0);
- var $2755=HEAP8[($2754)];
- var $2756=$x;
- var $2757=((($2756)*(3))&-1);
- var $2758=((($2757)+(2))|0);
- var $2759=$line;
- var $2760=(($2759+$2758)|0);
- HEAP8[($2760)]=$2755;
- label=221;break;
- case 221:
- var $2762=$count;
- var $2763=((($2762)-(1))|0);
- $count=$2763;
- var $2764=$x;
- var $2765=((($2764)+(1))|0);
- $x=$2765;
- var $2766=$mixmask;
- var $2767=($2766&255);
- var $2768=$2767<<1;
- var $2769=(($2768)&255);
- $mixmask=$2769;
- var $2770=$mixmask;
- var $2771=($2770&255);
- var $2772=($2771|0)==0;
- if($2772){label=222;break;}else{label=226;break;}
- case 222:
- var $2774=$fom_mask;
- var $2775=($2774|0)!=0;
- if($2775){label=223;break;}else{label=224;break;}
- case 223:
- var $2777=$fom_mask;
- var $2784=$2777;label=225;break;
- case 224:
- var $2779=$5;
- var $2780=(($2779+1)|0);
- $5=$2780;
- var $2781=HEAP8[($2779)];
- var $2782=($2781&255);
- var $2784=$2782;label=225;break;
- case 225:
- var $2784;
- var $2785=(($2784)&255);
- $mask=$2785;
- $mixmask=1;
- label=226;break;
- case 226:
- var $2787=$mask;
- var $2788=($2787&255);
- var $2789=$mixmask;
- var $2790=($2789&255);
- var $2791=$2788&$2790;
- var $2792=($2791|0)!=0;
- if($2792){label=227;break;}else{label=228;break;}
- case 227:
- var $2794=$x;
- var $2795=((($2794)*(3))&-1);
- var $2796=$prevline;
- var $2797=(($2796+$2795)|0);
- var $2798=HEAP8[($2797)];
- var $2799=($2798&255);
- var $2800=(($mix)|0);
- var $2801=HEAP8[($2800)];
- var $2802=($2801&255);
- var $2803=$2799^$2802;
- var $2804=(($2803)&255);
- var $2805=$x;
- var $2806=((($2805)*(3))&-1);
- var $2807=$line;
- var $2808=(($2807+$2806)|0);
- HEAP8[($2808)]=$2804;
- var $2809=$x;
- var $2810=((($2809)*(3))&-1);
- var $2811=((($2810)+(1))|0);
- var $2812=$prevline;
- var $2813=(($2812+$2811)|0);
- var $2814=HEAP8[($2813)];
- var $2815=($2814&255);
- var $2816=(($mix+1)|0);
- var $2817=HEAP8[($2816)];
- var $2818=($2817&255);
- var $2819=$2815^$2818;
- var $2820=(($2819)&255);
- var $2821=$x;
- var $2822=((($2821)*(3))&-1);
- var $2823=((($2822)+(1))|0);
- var $2824=$line;
- var $2825=(($2824+$2823)|0);
- HEAP8[($2825)]=$2820;
- var $2826=$x;
- var $2827=((($2826)*(3))&-1);
- var $2828=((($2827)+(2))|0);
- var $2829=$prevline;
- var $2830=(($2829+$2828)|0);
- var $2831=HEAP8[($2830)];
- var $2832=($2831&255);
- var $2833=(($mix+2)|0);
- var $2834=HEAP8[($2833)];
- var $2835=($2834&255);
- var $2836=$2832^$2835;
- var $2837=(($2836)&255);
- var $2838=$x;
- var $2839=((($2838)*(3))&-1);
- var $2840=((($2839)+(2))|0);
- var $2841=$line;
- var $2842=(($2841+$2840)|0);
- HEAP8[($2842)]=$2837;
- label=229;break;
- case 228:
- var $2844=$x;
- var $2845=((($2844)*(3))&-1);
- var $2846=$prevline;
- var $2847=(($2846+$2845)|0);
- var $2848=HEAP8[($2847)];
- var $2849=$x;
- var $2850=((($2849)*(3))&-1);
- var $2851=$line;
- var $2852=(($2851+$2850)|0);
- HEAP8[($2852)]=$2848;
- var $2853=$x;
- var $2854=((($2853)*(3))&-1);
- var $2855=((($2854)+(1))|0);
- var $2856=$prevline;
- var $2857=(($2856+$2855)|0);
- var $2858=HEAP8[($2857)];
- var $2859=$x;
- var $2860=((($2859)*(3))&-1);
- var $2861=((($2860)+(1))|0);
- var $2862=$line;
- var $2863=(($2862+$2861)|0);
- HEAP8[($2863)]=$2858;
- var $2864=$x;
- var $2865=((($2864)*(3))&-1);
- var $2866=((($2865)+(2))|0);
- var $2867=$prevline;
- var $2868=(($2867+$2866)|0);
- var $2869=HEAP8[($2868)];
- var $2870=$x;
- var $2871=((($2870)*(3))&-1);
- var $2872=((($2871)+(2))|0);
- var $2873=$line;
- var $2874=(($2873+$2872)|0);
- HEAP8[($2874)]=$2869;
- label=229;break;
- case 229:
- var $2876=$count;
- var $2877=((($2876)-(1))|0);
- $count=$2877;
- var $2878=$x;
- var $2879=((($2878)+(1))|0);
- $x=$2879;
- var $2880=$mixmask;
- var $2881=($2880&255);
- var $2882=$2881<<1;
- var $2883=(($2882)&255);
- $mixmask=$2883;
- var $2884=$mixmask;
- var $2885=($2884&255);
- var $2886=($2885|0)==0;
- if($2886){label=230;break;}else{label=234;break;}
- case 230:
- var $2888=$fom_mask;
- var $2889=($2888|0)!=0;
- if($2889){label=231;break;}else{label=232;break;}
- case 231:
- var $2891=$fom_mask;
- var $2898=$2891;label=233;break;
- case 232:
- var $2893=$5;
- var $2894=(($2893+1)|0);
- $5=$2894;
- var $2895=HEAP8[($2893)];
- var $2896=($2895&255);
- var $2898=$2896;label=233;break;
- case 233:
- var $2898;
- var $2899=(($2898)&255);
- $mask=$2899;
- $mixmask=1;
- label=234;break;
- case 234:
- var $2901=$mask;
- var $2902=($2901&255);
- var $2903=$mixmask;
- var $2904=($2903&255);
- var $2905=$2902&$2904;
- var $2906=($2905|0)!=0;
- if($2906){label=235;break;}else{label=236;break;}
- case 235:
- var $2908=$x;
- var $2909=((($2908)*(3))&-1);
- var $2910=$prevline;
- var $2911=(($2910+$2909)|0);
- var $2912=HEAP8[($2911)];
- var $2913=($2912&255);
- var $2914=(($mix)|0);
- var $2915=HEAP8[($2914)];
- var $2916=($2915&255);
- var $2917=$2913^$2916;
- var $2918=(($2917)&255);
- var $2919=$x;
- var $2920=((($2919)*(3))&-1);
- var $2921=$line;
- var $2922=(($2921+$2920)|0);
- HEAP8[($2922)]=$2918;
- var $2923=$x;
- var $2924=((($2923)*(3))&-1);
- var $2925=((($2924)+(1))|0);
- var $2926=$prevline;
- var $2927=(($2926+$2925)|0);
- var $2928=HEAP8[($2927)];
- var $2929=($2928&255);
- var $2930=(($mix+1)|0);
- var $2931=HEAP8[($2930)];
- var $2932=($2931&255);
- var $2933=$2929^$2932;
- var $2934=(($2933)&255);
- var $2935=$x;
- var $2936=((($2935)*(3))&-1);
- var $2937=((($2936)+(1))|0);
- var $2938=$line;
- var $2939=(($2938+$2937)|0);
- HEAP8[($2939)]=$2934;
- var $2940=$x;
- var $2941=((($2940)*(3))&-1);
- var $2942=((($2941)+(2))|0);
- var $2943=$prevline;
- var $2944=(($2943+$2942)|0);
- var $2945=HEAP8[($2944)];
- var $2946=($2945&255);
- var $2947=(($mix+2)|0);
- var $2948=HEAP8[($2947)];
- var $2949=($2948&255);
- var $2950=$2946^$2949;
- var $2951=(($2950)&255);
- var $2952=$x;
- var $2953=((($2952)*(3))&-1);
- var $2954=((($2953)+(2))|0);
- var $2955=$line;
- var $2956=(($2955+$2954)|0);
- HEAP8[($2956)]=$2951;
- label=237;break;
- case 236:
- var $2958=$x;
- var $2959=((($2958)*(3))&-1);
- var $2960=$prevline;
- var $2961=(($2960+$2959)|0);
- var $2962=HEAP8[($2961)];
- var $2963=$x;
- var $2964=((($2963)*(3))&-1);
- var $2965=$line;
- var $2966=(($2965+$2964)|0);
- HEAP8[($2966)]=$2962;
- var $2967=$x;
- var $2968=((($2967)*(3))&-1);
- var $2969=((($2968)+(1))|0);
- var $2970=$prevline;
- var $2971=(($2970+$2969)|0);
- var $2972=HEAP8[($2971)];
- var $2973=$x;
- var $2974=((($2973)*(3))&-1);
- var $2975=((($2974)+(1))|0);
- var $2976=$line;
- var $2977=(($2976+$2975)|0);
- HEAP8[($2977)]=$2972;
- var $2978=$x;
- var $2979=((($2978)*(3))&-1);
- var $2980=((($2979)+(2))|0);
- var $2981=$prevline;
- var $2982=(($2981+$2980)|0);
- var $2983=HEAP8[($2982)];
- var $2984=$x;
- var $2985=((($2984)*(3))&-1);
- var $2986=((($2985)+(2))|0);
- var $2987=$line;
- var $2988=(($2987+$2986)|0);
- HEAP8[($2988)]=$2983;
- label=237;break;
- case 237:
- var $2990=$count;
- var $2991=((($2990)-(1))|0);
- $count=$2991;
- var $2992=$x;
- var $2993=((($2992)+(1))|0);
- $x=$2993;
- var $2994=$mixmask;
- var $2995=($2994&255);
- var $2996=$2995<<1;
- var $2997=(($2996)&255);
- $mixmask=$2997;
- var $2998=$mixmask;
- var $2999=($2998&255);
- var $3000=($2999|0)==0;
- if($3000){label=238;break;}else{label=242;break;}
- case 238:
- var $3002=$fom_mask;
- var $3003=($3002|0)!=0;
- if($3003){label=239;break;}else{label=240;break;}
- case 239:
- var $3005=$fom_mask;
- var $3012=$3005;label=241;break;
- case 240:
- var $3007=$5;
- var $3008=(($3007+1)|0);
- $5=$3008;
- var $3009=HEAP8[($3007)];
- var $3010=($3009&255);
- var $3012=$3010;label=241;break;
- case 241:
- var $3012;
- var $3013=(($3012)&255);
- $mask=$3013;
- $mixmask=1;
- label=242;break;
- case 242:
- var $3015=$mask;
- var $3016=($3015&255);
- var $3017=$mixmask;
- var $3018=($3017&255);
- var $3019=$3016&$3018;
- var $3020=($3019|0)!=0;
- if($3020){label=243;break;}else{label=244;break;}
- case 243:
- var $3022=$x;
- var $3023=((($3022)*(3))&-1);
- var $3024=$prevline;
- var $3025=(($3024+$3023)|0);
- var $3026=HEAP8[($3025)];
- var $3027=($3026&255);
- var $3028=(($mix)|0);
- var $3029=HEAP8[($3028)];
- var $3030=($3029&255);
- var $3031=$3027^$3030;
- var $3032=(($3031)&255);
- var $3033=$x;
- var $3034=((($3033)*(3))&-1);
- var $3035=$line;
- var $3036=(($3035+$3034)|0);
- HEAP8[($3036)]=$3032;
- var $3037=$x;
- var $3038=((($3037)*(3))&-1);
- var $3039=((($3038)+(1))|0);
- var $3040=$prevline;
- var $3041=(($3040+$3039)|0);
- var $3042=HEAP8[($3041)];
- var $3043=($3042&255);
- var $3044=(($mix+1)|0);
- var $3045=HEAP8[($3044)];
- var $3046=($3045&255);
- var $3047=$3043^$3046;
- var $3048=(($3047)&255);
- var $3049=$x;
- var $3050=((($3049)*(3))&-1);
- var $3051=((($3050)+(1))|0);
- var $3052=$line;
- var $3053=(($3052+$3051)|0);
- HEAP8[($3053)]=$3048;
- var $3054=$x;
- var $3055=((($3054)*(3))&-1);
- var $3056=((($3055)+(2))|0);
- var $3057=$prevline;
- var $3058=(($3057+$3056)|0);
- var $3059=HEAP8[($3058)];
- var $3060=($3059&255);
- var $3061=(($mix+2)|0);
- var $3062=HEAP8[($3061)];
- var $3063=($3062&255);
- var $3064=$3060^$3063;
- var $3065=(($3064)&255);
- var $3066=$x;
- var $3067=((($3066)*(3))&-1);
- var $3068=((($3067)+(2))|0);
- var $3069=$line;
- var $3070=(($3069+$3068)|0);
- HEAP8[($3070)]=$3065;
- label=245;break;
- case 244:
- var $3072=$x;
- var $3073=((($3072)*(3))&-1);
- var $3074=$prevline;
- var $3075=(($3074+$3073)|0);
- var $3076=HEAP8[($3075)];
- var $3077=$x;
- var $3078=((($3077)*(3))&-1);
- var $3079=$line;
- var $3080=(($3079+$3078)|0);
- HEAP8[($3080)]=$3076;
- var $3081=$x;
- var $3082=((($3081)*(3))&-1);
- var $3083=((($3082)+(1))|0);
- var $3084=$prevline;
- var $3085=(($3084+$3083)|0);
- var $3086=HEAP8[($3085)];
- var $3087=$x;
- var $3088=((($3087)*(3))&-1);
- var $3089=((($3088)+(1))|0);
- var $3090=$line;
- var $3091=(($3090+$3089)|0);
- HEAP8[($3091)]=$3086;
- var $3092=$x;
- var $3093=((($3092)*(3))&-1);
- var $3094=((($3093)+(2))|0);
- var $3095=$prevline;
- var $3096=(($3095+$3094)|0);
- var $3097=HEAP8[($3096)];
- var $3098=$x;
- var $3099=((($3098)*(3))&-1);
- var $3100=((($3099)+(2))|0);
- var $3101=$line;
- var $3102=(($3101+$3100)|0);
- HEAP8[($3102)]=$3097;
- label=245;break;
- case 245:
- var $3104=$count;
- var $3105=((($3104)-(1))|0);
- $count=$3105;
- var $3106=$x;
- var $3107=((($3106)+(1))|0);
- $x=$3107;
- label=178;break;
- case 246:
- label=247;break;
- case 247:
- var $3110=$count;
- var $3111=($3110|0)>0;
- if($3111){label=248;break;}else{var $3117=0;label=249;break;}
- case 248:
- var $3113=$x;
- var $3114=$3;
- var $3115=($3113|0)<($3114|0);
- var $3117=$3115;label=249;break;
- case 249:
- var $3117;
- if($3117){label=250;break;}else{label=259;break;}
- case 250:
- var $3119=$mixmask;
- var $3120=($3119&255);
- var $3121=$3120<<1;
- var $3122=(($3121)&255);
- $mixmask=$3122;
- var $3123=$mixmask;
- var $3124=($3123&255);
- var $3125=($3124|0)==0;
- if($3125){label=251;break;}else{label=255;break;}
- case 251:
- var $3127=$fom_mask;
- var $3128=($3127|0)!=0;
- if($3128){label=252;break;}else{label=253;break;}
- case 252:
- var $3130=$fom_mask;
- var $3137=$3130;label=254;break;
- case 253:
- var $3132=$5;
- var $3133=(($3132+1)|0);
- $5=$3133;
- var $3134=HEAP8[($3132)];
- var $3135=($3134&255);
- var $3137=$3135;label=254;break;
- case 254:
- var $3137;
- var $3138=(($3137)&255);
- $mask=$3138;
- $mixmask=1;
- label=255;break;
- case 255:
- var $3140=$mask;
- var $3141=($3140&255);
- var $3142=$mixmask;
- var $3143=($3142&255);
- var $3144=$3141&$3143;
- var $3145=($3144|0)!=0;
- if($3145){label=256;break;}else{label=257;break;}
- case 256:
- var $3147=$x;
- var $3148=((($3147)*(3))&-1);
- var $3149=$prevline;
- var $3150=(($3149+$3148)|0);
- var $3151=HEAP8[($3150)];
- var $3152=($3151&255);
- var $3153=(($mix)|0);
- var $3154=HEAP8[($3153)];
- var $3155=($3154&255);
- var $3156=$3152^$3155;
- var $3157=(($3156)&255);
- var $3158=$x;
- var $3159=((($3158)*(3))&-1);
- var $3160=$line;
- var $3161=(($3160+$3159)|0);
- HEAP8[($3161)]=$3157;
- var $3162=$x;
- var $3163=((($3162)*(3))&-1);
- var $3164=((($3163)+(1))|0);
- var $3165=$prevline;
- var $3166=(($3165+$3164)|0);
- var $3167=HEAP8[($3166)];
- var $3168=($3167&255);
- var $3169=(($mix+1)|0);
- var $3170=HEAP8[($3169)];
- var $3171=($3170&255);
- var $3172=$3168^$3171;
- var $3173=(($3172)&255);
- var $3174=$x;
- var $3175=((($3174)*(3))&-1);
- var $3176=((($3175)+(1))|0);
- var $3177=$line;
- var $3178=(($3177+$3176)|0);
- HEAP8[($3178)]=$3173;
- var $3179=$x;
- var $3180=((($3179)*(3))&-1);
- var $3181=((($3180)+(2))|0);
- var $3182=$prevline;
- var $3183=(($3182+$3181)|0);
- var $3184=HEAP8[($3183)];
- var $3185=($3184&255);
- var $3186=(($mix+2)|0);
- var $3187=HEAP8[($3186)];
- var $3188=($3187&255);
- var $3189=$3185^$3188;
- var $3190=(($3189)&255);
- var $3191=$x;
- var $3192=((($3191)*(3))&-1);
- var $3193=((($3192)+(2))|0);
- var $3194=$line;
- var $3195=(($3194+$3193)|0);
- HEAP8[($3195)]=$3190;
- label=258;break;
- case 257:
- var $3197=$x;
- var $3198=((($3197)*(3))&-1);
- var $3199=$prevline;
- var $3200=(($3199+$3198)|0);
- var $3201=HEAP8[($3200)];
- var $3202=$x;
- var $3203=((($3202)*(3))&-1);
- var $3204=$line;
- var $3205=(($3204+$3203)|0);
- HEAP8[($3205)]=$3201;
- var $3206=$x;
- var $3207=((($3206)*(3))&-1);
- var $3208=((($3207)+(1))|0);
- var $3209=$prevline;
- var $3210=(($3209+$3208)|0);
- var $3211=HEAP8[($3210)];
- var $3212=$x;
- var $3213=((($3212)*(3))&-1);
- var $3214=((($3213)+(1))|0);
- var $3215=$line;
- var $3216=(($3215+$3214)|0);
- HEAP8[($3216)]=$3211;
- var $3217=$x;
- var $3218=((($3217)*(3))&-1);
- var $3219=((($3218)+(2))|0);
- var $3220=$prevline;
- var $3221=(($3220+$3219)|0);
- var $3222=HEAP8[($3221)];
- var $3223=$x;
- var $3224=((($3223)*(3))&-1);
- var $3225=((($3224)+(2))|0);
- var $3226=$line;
- var $3227=(($3226+$3225)|0);
- HEAP8[($3227)]=$3222;
- label=258;break;
- case 258:
- var $3229=$count;
- var $3230=((($3229)-(1))|0);
- $count=$3230;
- var $3231=$x;
- var $3232=((($3231)+(1))|0);
- $x=$3232;
- label=247;break;
- case 259:
- label=260;break;
- case 260:
- label=344;break;
- case 261:
- label=262;break;
- case 262:
- var $3237=$count;
- var $3238=$3237&-8;
- var $3239=($3238|0)!=0;
- if($3239){label=263;break;}else{var $3246=0;label=264;break;}
- case 263:
- var $3241=$x;
- var $3242=((($3241)+(8))|0);
- var $3243=$3;
- var $3244=($3242|0)<($3243|0);
- var $3246=$3244;label=264;break;
- case 264:
- var $3246;
- if($3246){label=265;break;}else{label=266;break;}
- case 265:
- var $3248=(($colour2)|0);
- var $3249=HEAP8[($3248)];
- var $3250=$x;
- var $3251=((($3250)*(3))&-1);
- var $3252=$line;
- var $3253=(($3252+$3251)|0);
- HEAP8[($3253)]=$3249;
- var $3254=(($colour2+1)|0);
- var $3255=HEAP8[($3254)];
- var $3256=$x;
- var $3257=((($3256)*(3))&-1);
- var $3258=((($3257)+(1))|0);
- var $3259=$line;
- var $3260=(($3259+$3258)|0);
- HEAP8[($3260)]=$3255;
- var $3261=(($colour2+2)|0);
- var $3262=HEAP8[($3261)];
- var $3263=$x;
- var $3264=((($3263)*(3))&-1);
- var $3265=((($3264)+(2))|0);
- var $3266=$line;
- var $3267=(($3266+$3265)|0);
- HEAP8[($3267)]=$3262;
- var $3268=$count;
- var $3269=((($3268)-(1))|0);
- $count=$3269;
- var $3270=$x;
- var $3271=((($3270)+(1))|0);
- $x=$3271;
- var $3272=(($colour2)|0);
- var $3273=HEAP8[($3272)];
- var $3274=$x;
- var $3275=((($3274)*(3))&-1);
- var $3276=$line;
- var $3277=(($3276+$3275)|0);
- HEAP8[($3277)]=$3273;
- var $3278=(($colour2+1)|0);
- var $3279=HEAP8[($3278)];
- var $3280=$x;
- var $3281=((($3280)*(3))&-1);
- var $3282=((($3281)+(1))|0);
- var $3283=$line;
- var $3284=(($3283+$3282)|0);
- HEAP8[($3284)]=$3279;
- var $3285=(($colour2+2)|0);
- var $3286=HEAP8[($3285)];
- var $3287=$x;
- var $3288=((($3287)*(3))&-1);
- var $3289=((($3288)+(2))|0);
- var $3290=$line;
- var $3291=(($3290+$3289)|0);
- HEAP8[($3291)]=$3286;
- var $3292=$count;
- var $3293=((($3292)-(1))|0);
- $count=$3293;
- var $3294=$x;
- var $3295=((($3294)+(1))|0);
- $x=$3295;
- var $3296=(($colour2)|0);
- var $3297=HEAP8[($3296)];
- var $3298=$x;
- var $3299=((($3298)*(3))&-1);
- var $3300=$line;
- var $3301=(($3300+$3299)|0);
- HEAP8[($3301)]=$3297;
- var $3302=(($colour2+1)|0);
- var $3303=HEAP8[($3302)];
- var $3304=$x;
- var $3305=((($3304)*(3))&-1);
- var $3306=((($3305)+(1))|0);
- var $3307=$line;
- var $3308=(($3307+$3306)|0);
- HEAP8[($3308)]=$3303;
- var $3309=(($colour2+2)|0);
- var $3310=HEAP8[($3309)];
- var $3311=$x;
- var $3312=((($3311)*(3))&-1);
- var $3313=((($3312)+(2))|0);
- var $3314=$line;
- var $3315=(($3314+$3313)|0);
- HEAP8[($3315)]=$3310;
- var $3316=$count;
- var $3317=((($3316)-(1))|0);
- $count=$3317;
- var $3318=$x;
- var $3319=((($3318)+(1))|0);
- $x=$3319;
- var $3320=(($colour2)|0);
- var $3321=HEAP8[($3320)];
- var $3322=$x;
- var $3323=((($3322)*(3))&-1);
- var $3324=$line;
- var $3325=(($3324+$3323)|0);
- HEAP8[($3325)]=$3321;
- var $3326=(($colour2+1)|0);
- var $3327=HEAP8[($3326)];
- var $3328=$x;
- var $3329=((($3328)*(3))&-1);
- var $3330=((($3329)+(1))|0);
- var $3331=$line;
- var $3332=(($3331+$3330)|0);
- HEAP8[($3332)]=$3327;
- var $3333=(($colour2+2)|0);
- var $3334=HEAP8[($3333)];
- var $3335=$x;
- var $3336=((($3335)*(3))&-1);
- var $3337=((($3336)+(2))|0);
- var $3338=$line;
- var $3339=(($3338+$3337)|0);
- HEAP8[($3339)]=$3334;
- var $3340=$count;
- var $3341=((($3340)-(1))|0);
- $count=$3341;
- var $3342=$x;
- var $3343=((($3342)+(1))|0);
- $x=$3343;
- var $3344=(($colour2)|0);
- var $3345=HEAP8[($3344)];
- var $3346=$x;
- var $3347=((($3346)*(3))&-1);
- var $3348=$line;
- var $3349=(($3348+$3347)|0);
- HEAP8[($3349)]=$3345;
- var $3350=(($colour2+1)|0);
- var $3351=HEAP8[($3350)];
- var $3352=$x;
- var $3353=((($3352)*(3))&-1);
- var $3354=((($3353)+(1))|0);
- var $3355=$line;
- var $3356=(($3355+$3354)|0);
- HEAP8[($3356)]=$3351;
- var $3357=(($colour2+2)|0);
- var $3358=HEAP8[($3357)];
- var $3359=$x;
- var $3360=((($3359)*(3))&-1);
- var $3361=((($3360)+(2))|0);
- var $3362=$line;
- var $3363=(($3362+$3361)|0);
- HEAP8[($3363)]=$3358;
- var $3364=$count;
- var $3365=((($3364)-(1))|0);
- $count=$3365;
- var $3366=$x;
- var $3367=((($3366)+(1))|0);
- $x=$3367;
- var $3368=(($colour2)|0);
- var $3369=HEAP8[($3368)];
- var $3370=$x;
- var $3371=((($3370)*(3))&-1);
- var $3372=$line;
- var $3373=(($3372+$3371)|0);
- HEAP8[($3373)]=$3369;
- var $3374=(($colour2+1)|0);
- var $3375=HEAP8[($3374)];
- var $3376=$x;
- var $3377=((($3376)*(3))&-1);
- var $3378=((($3377)+(1))|0);
- var $3379=$line;
- var $3380=(($3379+$3378)|0);
- HEAP8[($3380)]=$3375;
- var $3381=(($colour2+2)|0);
- var $3382=HEAP8[($3381)];
- var $3383=$x;
- var $3384=((($3383)*(3))&-1);
- var $3385=((($3384)+(2))|0);
- var $3386=$line;
- var $3387=(($3386+$3385)|0);
- HEAP8[($3387)]=$3382;
- var $3388=$count;
- var $3389=((($3388)-(1))|0);
- $count=$3389;
- var $3390=$x;
- var $3391=((($3390)+(1))|0);
- $x=$3391;
- var $3392=(($colour2)|0);
- var $3393=HEAP8[($3392)];
- var $3394=$x;
- var $3395=((($3394)*(3))&-1);
- var $3396=$line;
- var $3397=(($3396+$3395)|0);
- HEAP8[($3397)]=$3393;
- var $3398=(($colour2+1)|0);
- var $3399=HEAP8[($3398)];
- var $3400=$x;
- var $3401=((($3400)*(3))&-1);
- var $3402=((($3401)+(1))|0);
- var $3403=$line;
- var $3404=(($3403+$3402)|0);
- HEAP8[($3404)]=$3399;
- var $3405=(($colour2+2)|0);
- var $3406=HEAP8[($3405)];
- var $3407=$x;
- var $3408=((($3407)*(3))&-1);
- var $3409=((($3408)+(2))|0);
- var $3410=$line;
- var $3411=(($3410+$3409)|0);
- HEAP8[($3411)]=$3406;
- var $3412=$count;
- var $3413=((($3412)-(1))|0);
- $count=$3413;
- var $3414=$x;
- var $3415=((($3414)+(1))|0);
- $x=$3415;
- var $3416=(($colour2)|0);
- var $3417=HEAP8[($3416)];
- var $3418=$x;
- var $3419=((($3418)*(3))&-1);
- var $3420=$line;
- var $3421=(($3420+$3419)|0);
- HEAP8[($3421)]=$3417;
- var $3422=(($colour2+1)|0);
- var $3423=HEAP8[($3422)];
- var $3424=$x;
- var $3425=((($3424)*(3))&-1);
- var $3426=((($3425)+(1))|0);
- var $3427=$line;
- var $3428=(($3427+$3426)|0);
- HEAP8[($3428)]=$3423;
- var $3429=(($colour2+2)|0);
- var $3430=HEAP8[($3429)];
- var $3431=$x;
- var $3432=((($3431)*(3))&-1);
- var $3433=((($3432)+(2))|0);
- var $3434=$line;
- var $3435=(($3434+$3433)|0);
- HEAP8[($3435)]=$3430;
- var $3436=$count;
- var $3437=((($3436)-(1))|0);
- $count=$3437;
- var $3438=$x;
- var $3439=((($3438)+(1))|0);
- $x=$3439;
- label=262;break;
- case 266:
- label=267;break;
- case 267:
- var $3442=$count;
- var $3443=($3442|0)>0;
- if($3443){label=268;break;}else{var $3449=0;label=269;break;}
- case 268:
- var $3445=$x;
- var $3446=$3;
- var $3447=($3445|0)<($3446|0);
- var $3449=$3447;label=269;break;
- case 269:
- var $3449;
- if($3449){label=270;break;}else{label=271;break;}
- case 270:
- var $3451=(($colour2)|0);
- var $3452=HEAP8[($3451)];
- var $3453=$x;
- var $3454=((($3453)*(3))&-1);
- var $3455=$line;
- var $3456=(($3455+$3454)|0);
- HEAP8[($3456)]=$3452;
- var $3457=(($colour2+1)|0);
- var $3458=HEAP8[($3457)];
- var $3459=$x;
- var $3460=((($3459)*(3))&-1);
- var $3461=((($3460)+(1))|0);
- var $3462=$line;
- var $3463=(($3462+$3461)|0);
- HEAP8[($3463)]=$3458;
- var $3464=(($colour2+2)|0);
- var $3465=HEAP8[($3464)];
- var $3466=$x;
- var $3467=((($3466)*(3))&-1);
- var $3468=((($3467)+(2))|0);
- var $3469=$line;
- var $3470=(($3469+$3468)|0);
- HEAP8[($3470)]=$3465;
- var $3471=$count;
- var $3472=((($3471)-(1))|0);
- $count=$3472;
- var $3473=$x;
- var $3474=((($3473)+(1))|0);
- $x=$3474;
- label=267;break;
- case 271:
- label=344;break;
- case 272:
- label=273;break;
- case 273:
- var $3478=$count;
- var $3479=$3478&-8;
- var $3480=($3479|0)!=0;
- if($3480){label=274;break;}else{var $3487=0;label=275;break;}
- case 274:
- var $3482=$x;
- var $3483=((($3482)+(8))|0);
- var $3484=$3;
- var $3485=($3483|0)<($3484|0);
- var $3487=$3485;label=275;break;
- case 275:
- var $3487;
- if($3487){label=276;break;}else{label=277;break;}
- case 276:
- var $3489=$5;
- var $3490=(($3489+1)|0);
- $5=$3490;
- var $3491=HEAP8[($3489)];
- var $3492=$x;
- var $3493=((($3492)*(3))&-1);
- var $3494=$line;
- var $3495=(($3494+$3493)|0);
- HEAP8[($3495)]=$3491;
- var $3496=$5;
- var $3497=(($3496+1)|0);
- $5=$3497;
- var $3498=HEAP8[($3496)];
- var $3499=$x;
- var $3500=((($3499)*(3))&-1);
- var $3501=((($3500)+(1))|0);
- var $3502=$line;
- var $3503=(($3502+$3501)|0);
- HEAP8[($3503)]=$3498;
- var $3504=$5;
- var $3505=(($3504+1)|0);
- $5=$3505;
- var $3506=HEAP8[($3504)];
- var $3507=$x;
- var $3508=((($3507)*(3))&-1);
- var $3509=((($3508)+(2))|0);
- var $3510=$line;
- var $3511=(($3510+$3509)|0);
- HEAP8[($3511)]=$3506;
- var $3512=$count;
- var $3513=((($3512)-(1))|0);
- $count=$3513;
- var $3514=$x;
- var $3515=((($3514)+(1))|0);
- $x=$3515;
- var $3516=$5;
- var $3517=(($3516+1)|0);
- $5=$3517;
- var $3518=HEAP8[($3516)];
- var $3519=$x;
- var $3520=((($3519)*(3))&-1);
- var $3521=$line;
- var $3522=(($3521+$3520)|0);
- HEAP8[($3522)]=$3518;
- var $3523=$5;
- var $3524=(($3523+1)|0);
- $5=$3524;
- var $3525=HEAP8[($3523)];
- var $3526=$x;
- var $3527=((($3526)*(3))&-1);
- var $3528=((($3527)+(1))|0);
- var $3529=$line;
- var $3530=(($3529+$3528)|0);
- HEAP8[($3530)]=$3525;
- var $3531=$5;
- var $3532=(($3531+1)|0);
- $5=$3532;
- var $3533=HEAP8[($3531)];
- var $3534=$x;
- var $3535=((($3534)*(3))&-1);
- var $3536=((($3535)+(2))|0);
- var $3537=$line;
- var $3538=(($3537+$3536)|0);
- HEAP8[($3538)]=$3533;
- var $3539=$count;
- var $3540=((($3539)-(1))|0);
- $count=$3540;
- var $3541=$x;
- var $3542=((($3541)+(1))|0);
- $x=$3542;
- var $3543=$5;
- var $3544=(($3543+1)|0);
- $5=$3544;
- var $3545=HEAP8[($3543)];
- var $3546=$x;
- var $3547=((($3546)*(3))&-1);
- var $3548=$line;
- var $3549=(($3548+$3547)|0);
- HEAP8[($3549)]=$3545;
- var $3550=$5;
- var $3551=(($3550+1)|0);
- $5=$3551;
- var $3552=HEAP8[($3550)];
- var $3553=$x;
- var $3554=((($3553)*(3))&-1);
- var $3555=((($3554)+(1))|0);
- var $3556=$line;
- var $3557=(($3556+$3555)|0);
- HEAP8[($3557)]=$3552;
- var $3558=$5;
- var $3559=(($3558+1)|0);
- $5=$3559;
- var $3560=HEAP8[($3558)];
- var $3561=$x;
- var $3562=((($3561)*(3))&-1);
- var $3563=((($3562)+(2))|0);
- var $3564=$line;
- var $3565=(($3564+$3563)|0);
- HEAP8[($3565)]=$3560;
- var $3566=$count;
- var $3567=((($3566)-(1))|0);
- $count=$3567;
- var $3568=$x;
- var $3569=((($3568)+(1))|0);
- $x=$3569;
- var $3570=$5;
- var $3571=(($3570+1)|0);
- $5=$3571;
- var $3572=HEAP8[($3570)];
- var $3573=$x;
- var $3574=((($3573)*(3))&-1);
- var $3575=$line;
- var $3576=(($3575+$3574)|0);
- HEAP8[($3576)]=$3572;
- var $3577=$5;
- var $3578=(($3577+1)|0);
- $5=$3578;
- var $3579=HEAP8[($3577)];
- var $3580=$x;
- var $3581=((($3580)*(3))&-1);
- var $3582=((($3581)+(1))|0);
- var $3583=$line;
- var $3584=(($3583+$3582)|0);
- HEAP8[($3584)]=$3579;
- var $3585=$5;
- var $3586=(($3585+1)|0);
- $5=$3586;
- var $3587=HEAP8[($3585)];
- var $3588=$x;
- var $3589=((($3588)*(3))&-1);
- var $3590=((($3589)+(2))|0);
- var $3591=$line;
- var $3592=(($3591+$3590)|0);
- HEAP8[($3592)]=$3587;
- var $3593=$count;
- var $3594=((($3593)-(1))|0);
- $count=$3594;
- var $3595=$x;
- var $3596=((($3595)+(1))|0);
- $x=$3596;
- var $3597=$5;
- var $3598=(($3597+1)|0);
- $5=$3598;
- var $3599=HEAP8[($3597)];
- var $3600=$x;
- var $3601=((($3600)*(3))&-1);
- var $3602=$line;
- var $3603=(($3602+$3601)|0);
- HEAP8[($3603)]=$3599;
- var $3604=$5;
- var $3605=(($3604+1)|0);
- $5=$3605;
- var $3606=HEAP8[($3604)];
- var $3607=$x;
- var $3608=((($3607)*(3))&-1);
- var $3609=((($3608)+(1))|0);
- var $3610=$line;
- var $3611=(($3610+$3609)|0);
- HEAP8[($3611)]=$3606;
- var $3612=$5;
- var $3613=(($3612+1)|0);
- $5=$3613;
- var $3614=HEAP8[($3612)];
- var $3615=$x;
- var $3616=((($3615)*(3))&-1);
- var $3617=((($3616)+(2))|0);
- var $3618=$line;
- var $3619=(($3618+$3617)|0);
- HEAP8[($3619)]=$3614;
- var $3620=$count;
- var $3621=((($3620)-(1))|0);
- $count=$3621;
- var $3622=$x;
- var $3623=((($3622)+(1))|0);
- $x=$3623;
- var $3624=$5;
- var $3625=(($3624+1)|0);
- $5=$3625;
- var $3626=HEAP8[($3624)];
- var $3627=$x;
- var $3628=((($3627)*(3))&-1);
- var $3629=$line;
- var $3630=(($3629+$3628)|0);
- HEAP8[($3630)]=$3626;
- var $3631=$5;
- var $3632=(($3631+1)|0);
- $5=$3632;
- var $3633=HEAP8[($3631)];
- var $3634=$x;
- var $3635=((($3634)*(3))&-1);
- var $3636=((($3635)+(1))|0);
- var $3637=$line;
- var $3638=(($3637+$3636)|0);
- HEAP8[($3638)]=$3633;
- var $3639=$5;
- var $3640=(($3639+1)|0);
- $5=$3640;
- var $3641=HEAP8[($3639)];
- var $3642=$x;
- var $3643=((($3642)*(3))&-1);
- var $3644=((($3643)+(2))|0);
- var $3645=$line;
- var $3646=(($3645+$3644)|0);
- HEAP8[($3646)]=$3641;
- var $3647=$count;
- var $3648=((($3647)-(1))|0);
- $count=$3648;
- var $3649=$x;
- var $3650=((($3649)+(1))|0);
- $x=$3650;
- var $3651=$5;
- var $3652=(($3651+1)|0);
- $5=$3652;
- var $3653=HEAP8[($3651)];
- var $3654=$x;
- var $3655=((($3654)*(3))&-1);
- var $3656=$line;
- var $3657=(($3656+$3655)|0);
- HEAP8[($3657)]=$3653;
- var $3658=$5;
- var $3659=(($3658+1)|0);
- $5=$3659;
- var $3660=HEAP8[($3658)];
- var $3661=$x;
- var $3662=((($3661)*(3))&-1);
- var $3663=((($3662)+(1))|0);
- var $3664=$line;
- var $3665=(($3664+$3663)|0);
- HEAP8[($3665)]=$3660;
- var $3666=$5;
- var $3667=(($3666+1)|0);
- $5=$3667;
- var $3668=HEAP8[($3666)];
- var $3669=$x;
- var $3670=((($3669)*(3))&-1);
- var $3671=((($3670)+(2))|0);
- var $3672=$line;
- var $3673=(($3672+$3671)|0);
- HEAP8[($3673)]=$3668;
- var $3674=$count;
- var $3675=((($3674)-(1))|0);
- $count=$3675;
- var $3676=$x;
- var $3677=((($3676)+(1))|0);
- $x=$3677;
- var $3678=$5;
- var $3679=(($3678+1)|0);
- $5=$3679;
- var $3680=HEAP8[($3678)];
- var $3681=$x;
- var $3682=((($3681)*(3))&-1);
- var $3683=$line;
- var $3684=(($3683+$3682)|0);
- HEAP8[($3684)]=$3680;
- var $3685=$5;
- var $3686=(($3685+1)|0);
- $5=$3686;
- var $3687=HEAP8[($3685)];
- var $3688=$x;
- var $3689=((($3688)*(3))&-1);
- var $3690=((($3689)+(1))|0);
- var $3691=$line;
- var $3692=(($3691+$3690)|0);
- HEAP8[($3692)]=$3687;
- var $3693=$5;
- var $3694=(($3693+1)|0);
- $5=$3694;
- var $3695=HEAP8[($3693)];
- var $3696=$x;
- var $3697=((($3696)*(3))&-1);
- var $3698=((($3697)+(2))|0);
- var $3699=$line;
- var $3700=(($3699+$3698)|0);
- HEAP8[($3700)]=$3695;
- var $3701=$count;
- var $3702=((($3701)-(1))|0);
- $count=$3702;
- var $3703=$x;
- var $3704=((($3703)+(1))|0);
- $x=$3704;
- label=273;break;
- case 277:
- label=278;break;
- case 278:
- var $3707=$count;
- var $3708=($3707|0)>0;
- if($3708){label=279;break;}else{var $3714=0;label=280;break;}
- case 279:
- var $3710=$x;
- var $3711=$3;
- var $3712=($3710|0)<($3711|0);
- var $3714=$3712;label=280;break;
- case 280:
- var $3714;
- if($3714){label=281;break;}else{label=282;break;}
- case 281:
- var $3716=$5;
- var $3717=(($3716+1)|0);
- $5=$3717;
- var $3718=HEAP8[($3716)];
- var $3719=$x;
- var $3720=((($3719)*(3))&-1);
- var $3721=$line;
- var $3722=(($3721+$3720)|0);
- HEAP8[($3722)]=$3718;
- var $3723=$5;
- var $3724=(($3723+1)|0);
- $5=$3724;
- var $3725=HEAP8[($3723)];
- var $3726=$x;
- var $3727=((($3726)*(3))&-1);
- var $3728=((($3727)+(1))|0);
- var $3729=$line;
- var $3730=(($3729+$3728)|0);
- HEAP8[($3730)]=$3725;
- var $3731=$5;
- var $3732=(($3731+1)|0);
- $5=$3732;
- var $3733=HEAP8[($3731)];
- var $3734=$x;
- var $3735=((($3734)*(3))&-1);
- var $3736=((($3735)+(2))|0);
- var $3737=$line;
- var $3738=(($3737+$3736)|0);
- HEAP8[($3738)]=$3733;
- var $3739=$count;
- var $3740=((($3739)-(1))|0);
- $count=$3740;
- var $3741=$x;
- var $3742=((($3741)+(1))|0);
- $x=$3742;
- label=278;break;
- case 282:
- label=344;break;
- case 283:
- label=284;break;
- case 284:
- var $3746=$count;
- var $3747=$3746&-8;
- var $3748=($3747|0)!=0;
- if($3748){label=285;break;}else{var $3755=0;label=286;break;}
- case 285:
- var $3750=$x;
- var $3751=((($3750)+(8))|0);
- var $3752=$3;
- var $3753=($3751|0)<($3752|0);
- var $3755=$3753;label=286;break;
- case 286:
- var $3755;
- if($3755){label=287;break;}else{label=312;break;}
- case 287:
- var $3757=$bicolour;
- var $3758=($3757|0)!=0;
- if($3758){label=288;break;}else{label=289;break;}
- case 288:
- var $3760=(($colour2)|0);
- var $3761=HEAP8[($3760)];
- var $3762=$x;
- var $3763=((($3762)*(3))&-1);
- var $3764=$line;
- var $3765=(($3764+$3763)|0);
- HEAP8[($3765)]=$3761;
- var $3766=(($colour2+1)|0);
- var $3767=HEAP8[($3766)];
- var $3768=$x;
- var $3769=((($3768)*(3))&-1);
- var $3770=((($3769)+(1))|0);
- var $3771=$line;
- var $3772=(($3771+$3770)|0);
- HEAP8[($3772)]=$3767;
- var $3773=(($colour2+2)|0);
- var $3774=HEAP8[($3773)];
- var $3775=$x;
- var $3776=((($3775)*(3))&-1);
- var $3777=((($3776)+(2))|0);
- var $3778=$line;
- var $3779=(($3778+$3777)|0);
- HEAP8[($3779)]=$3774;
- $bicolour=0;
- label=290;break;
- case 289:
- var $3781=(($colour1)|0);
- var $3782=HEAP8[($3781)];
- var $3783=$x;
- var $3784=((($3783)*(3))&-1);
- var $3785=$line;
- var $3786=(($3785+$3784)|0);
- HEAP8[($3786)]=$3782;
- var $3787=(($colour1+1)|0);
- var $3788=HEAP8[($3787)];
- var $3789=$x;
- var $3790=((($3789)*(3))&-1);
- var $3791=((($3790)+(1))|0);
- var $3792=$line;
- var $3793=(($3792+$3791)|0);
- HEAP8[($3793)]=$3788;
- var $3794=(($colour1+2)|0);
- var $3795=HEAP8[($3794)];
- var $3796=$x;
- var $3797=((($3796)*(3))&-1);
- var $3798=((($3797)+(2))|0);
- var $3799=$line;
- var $3800=(($3799+$3798)|0);
- HEAP8[($3800)]=$3795;
- $bicolour=1;
- var $3801=$count;
- var $3802=((($3801)+(1))|0);
- $count=$3802;
- label=290;break;
- case 290:
- var $3804=$count;
- var $3805=((($3804)-(1))|0);
- $count=$3805;
- var $3806=$x;
- var $3807=((($3806)+(1))|0);
- $x=$3807;
- var $3808=$bicolour;
- var $3809=($3808|0)!=0;
- if($3809){label=291;break;}else{label=292;break;}
- case 291:
- var $3811=(($colour2)|0);
- var $3812=HEAP8[($3811)];
- var $3813=$x;
- var $3814=((($3813)*(3))&-1);
- var $3815=$line;
- var $3816=(($3815+$3814)|0);
- HEAP8[($3816)]=$3812;
- var $3817=(($colour2+1)|0);
- var $3818=HEAP8[($3817)];
- var $3819=$x;
- var $3820=((($3819)*(3))&-1);
- var $3821=((($3820)+(1))|0);
- var $3822=$line;
- var $3823=(($3822+$3821)|0);
- HEAP8[($3823)]=$3818;
- var $3824=(($colour2+2)|0);
- var $3825=HEAP8[($3824)];
- var $3826=$x;
- var $3827=((($3826)*(3))&-1);
- var $3828=((($3827)+(2))|0);
- var $3829=$line;
- var $3830=(($3829+$3828)|0);
- HEAP8[($3830)]=$3825;
- $bicolour=0;
- label=293;break;
- case 292:
- var $3832=(($colour1)|0);
- var $3833=HEAP8[($3832)];
- var $3834=$x;
- var $3835=((($3834)*(3))&-1);
- var $3836=$line;
- var $3837=(($3836+$3835)|0);
- HEAP8[($3837)]=$3833;
- var $3838=(($colour1+1)|0);
- var $3839=HEAP8[($3838)];
- var $3840=$x;
- var $3841=((($3840)*(3))&-1);
- var $3842=((($3841)+(1))|0);
- var $3843=$line;
- var $3844=(($3843+$3842)|0);
- HEAP8[($3844)]=$3839;
- var $3845=(($colour1+2)|0);
- var $3846=HEAP8[($3845)];
- var $3847=$x;
- var $3848=((($3847)*(3))&-1);
- var $3849=((($3848)+(2))|0);
- var $3850=$line;
- var $3851=(($3850+$3849)|0);
- HEAP8[($3851)]=$3846;
- $bicolour=1;
- var $3852=$count;
- var $3853=((($3852)+(1))|0);
- $count=$3853;
- label=293;break;
- case 293:
- var $3855=$count;
- var $3856=((($3855)-(1))|0);
- $count=$3856;
- var $3857=$x;
- var $3858=((($3857)+(1))|0);
- $x=$3858;
- var $3859=$bicolour;
- var $3860=($3859|0)!=0;
- if($3860){label=294;break;}else{label=295;break;}
- case 294:
- var $3862=(($colour2)|0);
- var $3863=HEAP8[($3862)];
- var $3864=$x;
- var $3865=((($3864)*(3))&-1);
- var $3866=$line;
- var $3867=(($3866+$3865)|0);
- HEAP8[($3867)]=$3863;
- var $3868=(($colour2+1)|0);
- var $3869=HEAP8[($3868)];
- var $3870=$x;
- var $3871=((($3870)*(3))&-1);
- var $3872=((($3871)+(1))|0);
- var $3873=$line;
- var $3874=(($3873+$3872)|0);
- HEAP8[($3874)]=$3869;
- var $3875=(($colour2+2)|0);
- var $3876=HEAP8[($3875)];
- var $3877=$x;
- var $3878=((($3877)*(3))&-1);
- var $3879=((($3878)+(2))|0);
- var $3880=$line;
- var $3881=(($3880+$3879)|0);
- HEAP8[($3881)]=$3876;
- $bicolour=0;
- label=296;break;
- case 295:
- var $3883=(($colour1)|0);
- var $3884=HEAP8[($3883)];
- var $3885=$x;
- var $3886=((($3885)*(3))&-1);
- var $3887=$line;
- var $3888=(($3887+$3886)|0);
- HEAP8[($3888)]=$3884;
- var $3889=(($colour1+1)|0);
- var $3890=HEAP8[($3889)];
- var $3891=$x;
- var $3892=((($3891)*(3))&-1);
- var $3893=((($3892)+(1))|0);
- var $3894=$line;
- var $3895=(($3894+$3893)|0);
- HEAP8[($3895)]=$3890;
- var $3896=(($colour1+2)|0);
- var $3897=HEAP8[($3896)];
- var $3898=$x;
- var $3899=((($3898)*(3))&-1);
- var $3900=((($3899)+(2))|0);
- var $3901=$line;
- var $3902=(($3901+$3900)|0);
- HEAP8[($3902)]=$3897;
- $bicolour=1;
- var $3903=$count;
- var $3904=((($3903)+(1))|0);
- $count=$3904;
- label=296;break;
- case 296:
- var $3906=$count;
- var $3907=((($3906)-(1))|0);
- $count=$3907;
- var $3908=$x;
- var $3909=((($3908)+(1))|0);
- $x=$3909;
- var $3910=$bicolour;
- var $3911=($3910|0)!=0;
- if($3911){label=297;break;}else{label=298;break;}
- case 297:
- var $3913=(($colour2)|0);
- var $3914=HEAP8[($3913)];
- var $3915=$x;
- var $3916=((($3915)*(3))&-1);
- var $3917=$line;
- var $3918=(($3917+$3916)|0);
- HEAP8[($3918)]=$3914;
- var $3919=(($colour2+1)|0);
- var $3920=HEAP8[($3919)];
- var $3921=$x;
- var $3922=((($3921)*(3))&-1);
- var $3923=((($3922)+(1))|0);
- var $3924=$line;
- var $3925=(($3924+$3923)|0);
- HEAP8[($3925)]=$3920;
- var $3926=(($colour2+2)|0);
- var $3927=HEAP8[($3926)];
- var $3928=$x;
- var $3929=((($3928)*(3))&-1);
- var $3930=((($3929)+(2))|0);
- var $3931=$line;
- var $3932=(($3931+$3930)|0);
- HEAP8[($3932)]=$3927;
- $bicolour=0;
- label=299;break;
- case 298:
- var $3934=(($colour1)|0);
- var $3935=HEAP8[($3934)];
- var $3936=$x;
- var $3937=((($3936)*(3))&-1);
- var $3938=$line;
- var $3939=(($3938+$3937)|0);
- HEAP8[($3939)]=$3935;
- var $3940=(($colour1+1)|0);
- var $3941=HEAP8[($3940)];
- var $3942=$x;
- var $3943=((($3942)*(3))&-1);
- var $3944=((($3943)+(1))|0);
- var $3945=$line;
- var $3946=(($3945+$3944)|0);
- HEAP8[($3946)]=$3941;
- var $3947=(($colour1+2)|0);
- var $3948=HEAP8[($3947)];
- var $3949=$x;
- var $3950=((($3949)*(3))&-1);
- var $3951=((($3950)+(2))|0);
- var $3952=$line;
- var $3953=(($3952+$3951)|0);
- HEAP8[($3953)]=$3948;
- $bicolour=1;
- var $3954=$count;
- var $3955=((($3954)+(1))|0);
- $count=$3955;
- label=299;break;
- case 299:
- var $3957=$count;
- var $3958=((($3957)-(1))|0);
- $count=$3958;
- var $3959=$x;
- var $3960=((($3959)+(1))|0);
- $x=$3960;
- var $3961=$bicolour;
- var $3962=($3961|0)!=0;
- if($3962){label=300;break;}else{label=301;break;}
- case 300:
- var $3964=(($colour2)|0);
- var $3965=HEAP8[($3964)];
- var $3966=$x;
- var $3967=((($3966)*(3))&-1);
- var $3968=$line;
- var $3969=(($3968+$3967)|0);
- HEAP8[($3969)]=$3965;
- var $3970=(($colour2+1)|0);
- var $3971=HEAP8[($3970)];
- var $3972=$x;
- var $3973=((($3972)*(3))&-1);
- var $3974=((($3973)+(1))|0);
- var $3975=$line;
- var $3976=(($3975+$3974)|0);
- HEAP8[($3976)]=$3971;
- var $3977=(($colour2+2)|0);
- var $3978=HEAP8[($3977)];
- var $3979=$x;
- var $3980=((($3979)*(3))&-1);
- var $3981=((($3980)+(2))|0);
- var $3982=$line;
- var $3983=(($3982+$3981)|0);
- HEAP8[($3983)]=$3978;
- $bicolour=0;
- label=302;break;
- case 301:
- var $3985=(($colour1)|0);
- var $3986=HEAP8[($3985)];
- var $3987=$x;
- var $3988=((($3987)*(3))&-1);
- var $3989=$line;
- var $3990=(($3989+$3988)|0);
- HEAP8[($3990)]=$3986;
- var $3991=(($colour1+1)|0);
- var $3992=HEAP8[($3991)];
- var $3993=$x;
- var $3994=((($3993)*(3))&-1);
- var $3995=((($3994)+(1))|0);
- var $3996=$line;
- var $3997=(($3996+$3995)|0);
- HEAP8[($3997)]=$3992;
- var $3998=(($colour1+2)|0);
- var $3999=HEAP8[($3998)];
- var $4000=$x;
- var $4001=((($4000)*(3))&-1);
- var $4002=((($4001)+(2))|0);
- var $4003=$line;
- var $4004=(($4003+$4002)|0);
- HEAP8[($4004)]=$3999;
- $bicolour=1;
- var $4005=$count;
- var $4006=((($4005)+(1))|0);
- $count=$4006;
- label=302;break;
- case 302:
- var $4008=$count;
- var $4009=((($4008)-(1))|0);
- $count=$4009;
- var $4010=$x;
- var $4011=((($4010)+(1))|0);
- $x=$4011;
- var $4012=$bicolour;
- var $4013=($4012|0)!=0;
- if($4013){label=303;break;}else{label=304;break;}
- case 303:
- var $4015=(($colour2)|0);
- var $4016=HEAP8[($4015)];
- var $4017=$x;
- var $4018=((($4017)*(3))&-1);
- var $4019=$line;
- var $4020=(($4019+$4018)|0);
- HEAP8[($4020)]=$4016;
- var $4021=(($colour2+1)|0);
- var $4022=HEAP8[($4021)];
- var $4023=$x;
- var $4024=((($4023)*(3))&-1);
- var $4025=((($4024)+(1))|0);
- var $4026=$line;
- var $4027=(($4026+$4025)|0);
- HEAP8[($4027)]=$4022;
- var $4028=(($colour2+2)|0);
- var $4029=HEAP8[($4028)];
- var $4030=$x;
- var $4031=((($4030)*(3))&-1);
- var $4032=((($4031)+(2))|0);
- var $4033=$line;
- var $4034=(($4033+$4032)|0);
- HEAP8[($4034)]=$4029;
- $bicolour=0;
- label=305;break;
- case 304:
- var $4036=(($colour1)|0);
- var $4037=HEAP8[($4036)];
- var $4038=$x;
- var $4039=((($4038)*(3))&-1);
- var $4040=$line;
- var $4041=(($4040+$4039)|0);
- HEAP8[($4041)]=$4037;
- var $4042=(($colour1+1)|0);
- var $4043=HEAP8[($4042)];
- var $4044=$x;
- var $4045=((($4044)*(3))&-1);
- var $4046=((($4045)+(1))|0);
- var $4047=$line;
- var $4048=(($4047+$4046)|0);
- HEAP8[($4048)]=$4043;
- var $4049=(($colour1+2)|0);
- var $4050=HEAP8[($4049)];
- var $4051=$x;
- var $4052=((($4051)*(3))&-1);
- var $4053=((($4052)+(2))|0);
- var $4054=$line;
- var $4055=(($4054+$4053)|0);
- HEAP8[($4055)]=$4050;
- $bicolour=1;
- var $4056=$count;
- var $4057=((($4056)+(1))|0);
- $count=$4057;
- label=305;break;
- case 305:
- var $4059=$count;
- var $4060=((($4059)-(1))|0);
- $count=$4060;
- var $4061=$x;
- var $4062=((($4061)+(1))|0);
- $x=$4062;
- var $4063=$bicolour;
- var $4064=($4063|0)!=0;
- if($4064){label=306;break;}else{label=307;break;}
- case 306:
- var $4066=(($colour2)|0);
- var $4067=HEAP8[($4066)];
- var $4068=$x;
- var $4069=((($4068)*(3))&-1);
- var $4070=$line;
- var $4071=(($4070+$4069)|0);
- HEAP8[($4071)]=$4067;
- var $4072=(($colour2+1)|0);
- var $4073=HEAP8[($4072)];
- var $4074=$x;
- var $4075=((($4074)*(3))&-1);
- var $4076=((($4075)+(1))|0);
- var $4077=$line;
- var $4078=(($4077+$4076)|0);
- HEAP8[($4078)]=$4073;
- var $4079=(($colour2+2)|0);
- var $4080=HEAP8[($4079)];
- var $4081=$x;
- var $4082=((($4081)*(3))&-1);
- var $4083=((($4082)+(2))|0);
- var $4084=$line;
- var $4085=(($4084+$4083)|0);
- HEAP8[($4085)]=$4080;
- $bicolour=0;
- label=308;break;
- case 307:
- var $4087=(($colour1)|0);
- var $4088=HEAP8[($4087)];
- var $4089=$x;
- var $4090=((($4089)*(3))&-1);
- var $4091=$line;
- var $4092=(($4091+$4090)|0);
- HEAP8[($4092)]=$4088;
- var $4093=(($colour1+1)|0);
- var $4094=HEAP8[($4093)];
- var $4095=$x;
- var $4096=((($4095)*(3))&-1);
- var $4097=((($4096)+(1))|0);
- var $4098=$line;
- var $4099=(($4098+$4097)|0);
- HEAP8[($4099)]=$4094;
- var $4100=(($colour1+2)|0);
- var $4101=HEAP8[($4100)];
- var $4102=$x;
- var $4103=((($4102)*(3))&-1);
- var $4104=((($4103)+(2))|0);
- var $4105=$line;
- var $4106=(($4105+$4104)|0);
- HEAP8[($4106)]=$4101;
- $bicolour=1;
- var $4107=$count;
- var $4108=((($4107)+(1))|0);
- $count=$4108;
- label=308;break;
- case 308:
- var $4110=$count;
- var $4111=((($4110)-(1))|0);
- $count=$4111;
- var $4112=$x;
- var $4113=((($4112)+(1))|0);
- $x=$4113;
- var $4114=$bicolour;
- var $4115=($4114|0)!=0;
- if($4115){label=309;break;}else{label=310;break;}
- case 309:
- var $4117=(($colour2)|0);
- var $4118=HEAP8[($4117)];
- var $4119=$x;
- var $4120=((($4119)*(3))&-1);
- var $4121=$line;
- var $4122=(($4121+$4120)|0);
- HEAP8[($4122)]=$4118;
- var $4123=(($colour2+1)|0);
- var $4124=HEAP8[($4123)];
- var $4125=$x;
- var $4126=((($4125)*(3))&-1);
- var $4127=((($4126)+(1))|0);
- var $4128=$line;
- var $4129=(($4128+$4127)|0);
- HEAP8[($4129)]=$4124;
- var $4130=(($colour2+2)|0);
- var $4131=HEAP8[($4130)];
- var $4132=$x;
- var $4133=((($4132)*(3))&-1);
- var $4134=((($4133)+(2))|0);
- var $4135=$line;
- var $4136=(($4135+$4134)|0);
- HEAP8[($4136)]=$4131;
- $bicolour=0;
- label=311;break;
- case 310:
- var $4138=(($colour1)|0);
- var $4139=HEAP8[($4138)];
- var $4140=$x;
- var $4141=((($4140)*(3))&-1);
- var $4142=$line;
- var $4143=(($4142+$4141)|0);
- HEAP8[($4143)]=$4139;
- var $4144=(($colour1+1)|0);
- var $4145=HEAP8[($4144)];
- var $4146=$x;
- var $4147=((($4146)*(3))&-1);
- var $4148=((($4147)+(1))|0);
- var $4149=$line;
- var $4150=(($4149+$4148)|0);
- HEAP8[($4150)]=$4145;
- var $4151=(($colour1+2)|0);
- var $4152=HEAP8[($4151)];
- var $4153=$x;
- var $4154=((($4153)*(3))&-1);
- var $4155=((($4154)+(2))|0);
- var $4156=$line;
- var $4157=(($4156+$4155)|0);
- HEAP8[($4157)]=$4152;
- $bicolour=1;
- var $4158=$count;
- var $4159=((($4158)+(1))|0);
- $count=$4159;
- label=311;break;
- case 311:
- var $4161=$count;
- var $4162=((($4161)-(1))|0);
- $count=$4162;
- var $4163=$x;
- var $4164=((($4163)+(1))|0);
- $x=$4164;
- label=284;break;
- case 312:
- label=313;break;
- case 313:
- var $4167=$count;
- var $4168=($4167|0)>0;
- if($4168){label=314;break;}else{var $4174=0;label=315;break;}
- case 314:
- var $4170=$x;
- var $4171=$3;
- var $4172=($4170|0)<($4171|0);
- var $4174=$4172;label=315;break;
- case 315:
- var $4174;
- if($4174){label=316;break;}else{label=320;break;}
- case 316:
- var $4176=$bicolour;
- var $4177=($4176|0)!=0;
- if($4177){label=317;break;}else{label=318;break;}
- case 317:
- var $4179=(($colour2)|0);
- var $4180=HEAP8[($4179)];
- var $4181=$x;
- var $4182=((($4181)*(3))&-1);
- var $4183=$line;
- var $4184=(($4183+$4182)|0);
- HEAP8[($4184)]=$4180;
- var $4185=(($colour2+1)|0);
- var $4186=HEAP8[($4185)];
- var $4187=$x;
- var $4188=((($4187)*(3))&-1);
- var $4189=((($4188)+(1))|0);
- var $4190=$line;
- var $4191=(($4190+$4189)|0);
- HEAP8[($4191)]=$4186;
- var $4192=(($colour2+2)|0);
- var $4193=HEAP8[($4192)];
- var $4194=$x;
- var $4195=((($4194)*(3))&-1);
- var $4196=((($4195)+(2))|0);
- var $4197=$line;
- var $4198=(($4197+$4196)|0);
- HEAP8[($4198)]=$4193;
- $bicolour=0;
- label=319;break;
- case 318:
- var $4200=(($colour1)|0);
- var $4201=HEAP8[($4200)];
- var $4202=$x;
- var $4203=((($4202)*(3))&-1);
- var $4204=$line;
- var $4205=(($4204+$4203)|0);
- HEAP8[($4205)]=$4201;
- var $4206=(($colour1+1)|0);
- var $4207=HEAP8[($4206)];
- var $4208=$x;
- var $4209=((($4208)*(3))&-1);
- var $4210=((($4209)+(1))|0);
- var $4211=$line;
- var $4212=(($4211+$4210)|0);
- HEAP8[($4212)]=$4207;
- var $4213=(($colour1+2)|0);
- var $4214=HEAP8[($4213)];
- var $4215=$x;
- var $4216=((($4215)*(3))&-1);
- var $4217=((($4216)+(2))|0);
- var $4218=$line;
- var $4219=(($4218+$4217)|0);
- HEAP8[($4219)]=$4214;
- $bicolour=1;
- var $4220=$count;
- var $4221=((($4220)+(1))|0);
- $count=$4221;
- label=319;break;
- case 319:
- var $4223=$count;
- var $4224=((($4223)-(1))|0);
- $count=$4224;
- var $4225=$x;
- var $4226=((($4225)+(1))|0);
- $x=$4226;
- label=313;break;
- case 320:
- label=344;break;
- case 321:
- label=322;break;
- case 322:
- var $4230=$count;
- var $4231=$4230&-8;
- var $4232=($4231|0)!=0;
- if($4232){label=323;break;}else{var $4239=0;label=324;break;}
- case 323:
- var $4234=$x;
- var $4235=((($4234)+(8))|0);
- var $4236=$3;
- var $4237=($4235|0)<($4236|0);
- var $4239=$4237;label=324;break;
- case 324:
- var $4239;
- if($4239){label=325;break;}else{label=326;break;}
- case 325:
- var $4241=$x;
- var $4242=((($4241)*(3))&-1);
- var $4243=$line;
- var $4244=(($4243+$4242)|0);
- HEAP8[($4244)]=-1;
- var $4245=$x;
- var $4246=((($4245)*(3))&-1);
- var $4247=((($4246)+(1))|0);
- var $4248=$line;
- var $4249=(($4248+$4247)|0);
- HEAP8[($4249)]=-1;
- var $4250=$x;
- var $4251=((($4250)*(3))&-1);
- var $4252=((($4251)+(2))|0);
- var $4253=$line;
- var $4254=(($4253+$4252)|0);
- HEAP8[($4254)]=-1;
- var $4255=$count;
- var $4256=((($4255)-(1))|0);
- $count=$4256;
- var $4257=$x;
- var $4258=((($4257)+(1))|0);
- $x=$4258;
- var $4259=$x;
- var $4260=((($4259)*(3))&-1);
- var $4261=$line;
- var $4262=(($4261+$4260)|0);
- HEAP8[($4262)]=-1;
- var $4263=$x;
- var $4264=((($4263)*(3))&-1);
- var $4265=((($4264)+(1))|0);
- var $4266=$line;
- var $4267=(($4266+$4265)|0);
- HEAP8[($4267)]=-1;
- var $4268=$x;
- var $4269=((($4268)*(3))&-1);
- var $4270=((($4269)+(2))|0);
- var $4271=$line;
- var $4272=(($4271+$4270)|0);
- HEAP8[($4272)]=-1;
- var $4273=$count;
- var $4274=((($4273)-(1))|0);
- $count=$4274;
- var $4275=$x;
- var $4276=((($4275)+(1))|0);
- $x=$4276;
- var $4277=$x;
- var $4278=((($4277)*(3))&-1);
- var $4279=$line;
- var $4280=(($4279+$4278)|0);
- HEAP8[($4280)]=-1;
- var $4281=$x;
- var $4282=((($4281)*(3))&-1);
- var $4283=((($4282)+(1))|0);
- var $4284=$line;
- var $4285=(($4284+$4283)|0);
- HEAP8[($4285)]=-1;
- var $4286=$x;
- var $4287=((($4286)*(3))&-1);
- var $4288=((($4287)+(2))|0);
- var $4289=$line;
- var $4290=(($4289+$4288)|0);
- HEAP8[($4290)]=-1;
- var $4291=$count;
- var $4292=((($4291)-(1))|0);
- $count=$4292;
- var $4293=$x;
- var $4294=((($4293)+(1))|0);
- $x=$4294;
- var $4295=$x;
- var $4296=((($4295)*(3))&-1);
- var $4297=$line;
- var $4298=(($4297+$4296)|0);
- HEAP8[($4298)]=-1;
- var $4299=$x;
- var $4300=((($4299)*(3))&-1);
- var $4301=((($4300)+(1))|0);
- var $4302=$line;
- var $4303=(($4302+$4301)|0);
- HEAP8[($4303)]=-1;
- var $4304=$x;
- var $4305=((($4304)*(3))&-1);
- var $4306=((($4305)+(2))|0);
- var $4307=$line;
- var $4308=(($4307+$4306)|0);
- HEAP8[($4308)]=-1;
- var $4309=$count;
- var $4310=((($4309)-(1))|0);
- $count=$4310;
- var $4311=$x;
- var $4312=((($4311)+(1))|0);
- $x=$4312;
- var $4313=$x;
- var $4314=((($4313)*(3))&-1);
- var $4315=$line;
- var $4316=(($4315+$4314)|0);
- HEAP8[($4316)]=-1;
- var $4317=$x;
- var $4318=((($4317)*(3))&-1);
- var $4319=((($4318)+(1))|0);
- var $4320=$line;
- var $4321=(($4320+$4319)|0);
- HEAP8[($4321)]=-1;
- var $4322=$x;
- var $4323=((($4322)*(3))&-1);
- var $4324=((($4323)+(2))|0);
- var $4325=$line;
- var $4326=(($4325+$4324)|0);
- HEAP8[($4326)]=-1;
- var $4327=$count;
- var $4328=((($4327)-(1))|0);
- $count=$4328;
- var $4329=$x;
- var $4330=((($4329)+(1))|0);
- $x=$4330;
- var $4331=$x;
- var $4332=((($4331)*(3))&-1);
- var $4333=$line;
- var $4334=(($4333+$4332)|0);
- HEAP8[($4334)]=-1;
- var $4335=$x;
- var $4336=((($4335)*(3))&-1);
- var $4337=((($4336)+(1))|0);
- var $4338=$line;
- var $4339=(($4338+$4337)|0);
- HEAP8[($4339)]=-1;
- var $4340=$x;
- var $4341=((($4340)*(3))&-1);
- var $4342=((($4341)+(2))|0);
- var $4343=$line;
- var $4344=(($4343+$4342)|0);
- HEAP8[($4344)]=-1;
- var $4345=$count;
- var $4346=((($4345)-(1))|0);
- $count=$4346;
- var $4347=$x;
- var $4348=((($4347)+(1))|0);
- $x=$4348;
- var $4349=$x;
- var $4350=((($4349)*(3))&-1);
- var $4351=$line;
- var $4352=(($4351+$4350)|0);
- HEAP8[($4352)]=-1;
- var $4353=$x;
- var $4354=((($4353)*(3))&-1);
- var $4355=((($4354)+(1))|0);
- var $4356=$line;
- var $4357=(($4356+$4355)|0);
- HEAP8[($4357)]=-1;
- var $4358=$x;
- var $4359=((($4358)*(3))&-1);
- var $4360=((($4359)+(2))|0);
- var $4361=$line;
- var $4362=(($4361+$4360)|0);
- HEAP8[($4362)]=-1;
- var $4363=$count;
- var $4364=((($4363)-(1))|0);
- $count=$4364;
- var $4365=$x;
- var $4366=((($4365)+(1))|0);
- $x=$4366;
- var $4367=$x;
- var $4368=((($4367)*(3))&-1);
- var $4369=$line;
- var $4370=(($4369+$4368)|0);
- HEAP8[($4370)]=-1;
- var $4371=$x;
- var $4372=((($4371)*(3))&-1);
- var $4373=((($4372)+(1))|0);
- var $4374=$line;
- var $4375=(($4374+$4373)|0);
- HEAP8[($4375)]=-1;
- var $4376=$x;
- var $4377=((($4376)*(3))&-1);
- var $4378=((($4377)+(2))|0);
- var $4379=$line;
- var $4380=(($4379+$4378)|0);
- HEAP8[($4380)]=-1;
- var $4381=$count;
- var $4382=((($4381)-(1))|0);
- $count=$4382;
- var $4383=$x;
- var $4384=((($4383)+(1))|0);
- $x=$4384;
- label=322;break;
- case 326:
- label=327;break;
- case 327:
- var $4387=$count;
- var $4388=($4387|0)>0;
- if($4388){label=328;break;}else{var $4394=0;label=329;break;}
- case 328:
- var $4390=$x;
- var $4391=$3;
- var $4392=($4390|0)<($4391|0);
- var $4394=$4392;label=329;break;
- case 329:
- var $4394;
- if($4394){label=330;break;}else{label=331;break;}
- case 330:
- var $4396=$x;
- var $4397=((($4396)*(3))&-1);
- var $4398=$line;
- var $4399=(($4398+$4397)|0);
- HEAP8[($4399)]=-1;
- var $4400=$x;
- var $4401=((($4400)*(3))&-1);
- var $4402=((($4401)+(1))|0);
- var $4403=$line;
- var $4404=(($4403+$4402)|0);
- HEAP8[($4404)]=-1;
- var $4405=$x;
- var $4406=((($4405)*(3))&-1);
- var $4407=((($4406)+(2))|0);
- var $4408=$line;
- var $4409=(($4408+$4407)|0);
- HEAP8[($4409)]=-1;
- var $4410=$count;
- var $4411=((($4410)-(1))|0);
- $count=$4411;
- var $4412=$x;
- var $4413=((($4412)+(1))|0);
- $x=$4413;
- label=327;break;
- case 331:
- label=344;break;
- case 332:
- label=333;break;
- case 333:
- var $4417=$count;
- var $4418=$4417&-8;
- var $4419=($4418|0)!=0;
- if($4419){label=334;break;}else{var $4426=0;label=335;break;}
- case 334:
- var $4421=$x;
- var $4422=((($4421)+(8))|0);
- var $4423=$3;
- var $4424=($4422|0)<($4423|0);
- var $4426=$4424;label=335;break;
- case 335:
- var $4426;
- if($4426){label=336;break;}else{label=337;break;}
- case 336:
- var $4428=$x;
- var $4429=((($4428)*(3))&-1);
- var $4430=$line;
- var $4431=(($4430+$4429)|0);
- HEAP8[($4431)]=0;
- var $4432=$x;
- var $4433=((($4432)*(3))&-1);
- var $4434=((($4433)+(1))|0);
- var $4435=$line;
- var $4436=(($4435+$4434)|0);
- HEAP8[($4436)]=0;
- var $4437=$x;
- var $4438=((($4437)*(3))&-1);
- var $4439=((($4438)+(2))|0);
- var $4440=$line;
- var $4441=(($4440+$4439)|0);
- HEAP8[($4441)]=0;
- var $4442=$count;
- var $4443=((($4442)-(1))|0);
- $count=$4443;
- var $4444=$x;
- var $4445=((($4444)+(1))|0);
- $x=$4445;
- var $4446=$x;
- var $4447=((($4446)*(3))&-1);
- var $4448=$line;
- var $4449=(($4448+$4447)|0);
- HEAP8[($4449)]=0;
- var $4450=$x;
- var $4451=((($4450)*(3))&-1);
- var $4452=((($4451)+(1))|0);
- var $4453=$line;
- var $4454=(($4453+$4452)|0);
- HEAP8[($4454)]=0;
- var $4455=$x;
- var $4456=((($4455)*(3))&-1);
- var $4457=((($4456)+(2))|0);
- var $4458=$line;
- var $4459=(($4458+$4457)|0);
- HEAP8[($4459)]=0;
- var $4460=$count;
- var $4461=((($4460)-(1))|0);
- $count=$4461;
- var $4462=$x;
- var $4463=((($4462)+(1))|0);
- $x=$4463;
- var $4464=$x;
- var $4465=((($4464)*(3))&-1);
- var $4466=$line;
- var $4467=(($4466+$4465)|0);
- HEAP8[($4467)]=0;
- var $4468=$x;
- var $4469=((($4468)*(3))&-1);
- var $4470=((($4469)+(1))|0);
- var $4471=$line;
- var $4472=(($4471+$4470)|0);
- HEAP8[($4472)]=0;
- var $4473=$x;
- var $4474=((($4473)*(3))&-1);
- var $4475=((($4474)+(2))|0);
- var $4476=$line;
- var $4477=(($4476+$4475)|0);
- HEAP8[($4477)]=0;
- var $4478=$count;
- var $4479=((($4478)-(1))|0);
- $count=$4479;
- var $4480=$x;
- var $4481=((($4480)+(1))|0);
- $x=$4481;
- var $4482=$x;
- var $4483=((($4482)*(3))&-1);
- var $4484=$line;
- var $4485=(($4484+$4483)|0);
- HEAP8[($4485)]=0;
- var $4486=$x;
- var $4487=((($4486)*(3))&-1);
- var $4488=((($4487)+(1))|0);
- var $4489=$line;
- var $4490=(($4489+$4488)|0);
- HEAP8[($4490)]=0;
- var $4491=$x;
- var $4492=((($4491)*(3))&-1);
- var $4493=((($4492)+(2))|0);
- var $4494=$line;
- var $4495=(($4494+$4493)|0);
- HEAP8[($4495)]=0;
- var $4496=$count;
- var $4497=((($4496)-(1))|0);
- $count=$4497;
- var $4498=$x;
- var $4499=((($4498)+(1))|0);
- $x=$4499;
- var $4500=$x;
- var $4501=((($4500)*(3))&-1);
- var $4502=$line;
- var $4503=(($4502+$4501)|0);
- HEAP8[($4503)]=0;
- var $4504=$x;
- var $4505=((($4504)*(3))&-1);
- var $4506=((($4505)+(1))|0);
- var $4507=$line;
- var $4508=(($4507+$4506)|0);
- HEAP8[($4508)]=0;
- var $4509=$x;
- var $4510=((($4509)*(3))&-1);
- var $4511=((($4510)+(2))|0);
- var $4512=$line;
- var $4513=(($4512+$4511)|0);
- HEAP8[($4513)]=0;
- var $4514=$count;
- var $4515=((($4514)-(1))|0);
- $count=$4515;
- var $4516=$x;
- var $4517=((($4516)+(1))|0);
- $x=$4517;
- var $4518=$x;
- var $4519=((($4518)*(3))&-1);
- var $4520=$line;
- var $4521=(($4520+$4519)|0);
- HEAP8[($4521)]=0;
- var $4522=$x;
- var $4523=((($4522)*(3))&-1);
- var $4524=((($4523)+(1))|0);
- var $4525=$line;
- var $4526=(($4525+$4524)|0);
- HEAP8[($4526)]=0;
- var $4527=$x;
- var $4528=((($4527)*(3))&-1);
- var $4529=((($4528)+(2))|0);
- var $4530=$line;
- var $4531=(($4530+$4529)|0);
- HEAP8[($4531)]=0;
- var $4532=$count;
- var $4533=((($4532)-(1))|0);
- $count=$4533;
- var $4534=$x;
- var $4535=((($4534)+(1))|0);
- $x=$4535;
- var $4536=$x;
- var $4537=((($4536)*(3))&-1);
- var $4538=$line;
- var $4539=(($4538+$4537)|0);
- HEAP8[($4539)]=0;
- var $4540=$x;
- var $4541=((($4540)*(3))&-1);
- var $4542=((($4541)+(1))|0);
- var $4543=$line;
- var $4544=(($4543+$4542)|0);
- HEAP8[($4544)]=0;
- var $4545=$x;
- var $4546=((($4545)*(3))&-1);
- var $4547=((($4546)+(2))|0);
- var $4548=$line;
- var $4549=(($4548+$4547)|0);
- HEAP8[($4549)]=0;
- var $4550=$count;
- var $4551=((($4550)-(1))|0);
- $count=$4551;
- var $4552=$x;
- var $4553=((($4552)+(1))|0);
- $x=$4553;
- var $4554=$x;
- var $4555=((($4554)*(3))&-1);
- var $4556=$line;
- var $4557=(($4556+$4555)|0);
- HEAP8[($4557)]=0;
- var $4558=$x;
- var $4559=((($4558)*(3))&-1);
- var $4560=((($4559)+(1))|0);
- var $4561=$line;
- var $4562=(($4561+$4560)|0);
- HEAP8[($4562)]=0;
- var $4563=$x;
- var $4564=((($4563)*(3))&-1);
- var $4565=((($4564)+(2))|0);
- var $4566=$line;
- var $4567=(($4566+$4565)|0);
- HEAP8[($4567)]=0;
- var $4568=$count;
- var $4569=((($4568)-(1))|0);
- $count=$4569;
- var $4570=$x;
- var $4571=((($4570)+(1))|0);
- $x=$4571;
- label=333;break;
- case 337:
- label=338;break;
- case 338:
- var $4574=$count;
- var $4575=($4574|0)>0;
- if($4575){label=339;break;}else{var $4581=0;label=340;break;}
- case 339:
- var $4577=$x;
- var $4578=$3;
- var $4579=($4577|0)<($4578|0);
- var $4581=$4579;label=340;break;
- case 340:
- var $4581;
- if($4581){label=341;break;}else{label=342;break;}
- case 341:
- var $4583=$x;
- var $4584=((($4583)*(3))&-1);
- var $4585=$line;
- var $4586=(($4585+$4584)|0);
- HEAP8[($4586)]=0;
- var $4587=$x;
- var $4588=((($4587)*(3))&-1);
- var $4589=((($4588)+(1))|0);
- var $4590=$line;
- var $4591=(($4590+$4589)|0);
- HEAP8[($4591)]=0;
- var $4592=$x;
- var $4593=((($4592)*(3))&-1);
- var $4594=((($4593)+(2))|0);
- var $4595=$line;
- var $4596=(($4595+$4594)|0);
- HEAP8[($4596)]=0;
- var $4597=$count;
- var $4598=((($4597)-(1))|0);
- $count=$4598;
- var $4599=$x;
- var $4600=((($4599)+(1))|0);
- $x=$4600;
- label=338;break;
- case 342:
- label=344;break;
- case 343:
- $1=0;
- label=347;break;
- case 344:
- label=34;break;
- case 345:
- label=2;break;
- case 346:
- $1=1;
- label=347;break;
- case 347:
- var $4607=$1;
- STACKTOP=sp;return $4607;
- default: assert(0, "bad label: " + label);
- }
- }
- function _bitmap_decompress_32($output,$output_width,$output_height,$input_width,$input_height,$input,$size){
- var label=0;
- var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
- label = 1;
- while(1)switch(label){
- case 1:
- var $1;
- var $2;
- var $3;
- var $4;
- var $5;
- var $6;
- var $7;
- var $temp;
- var $rv;
- var $y;
- var $x;
- var $r;
- var $g;
- var $b;
- var $a;
- $1=$output;
- $2=$output_width;
- $3=$output_height;
- $4=$input_width;
- $5=$input_height;
- $6=$input;
- $7=$size;
- var $8=$4;
- var $9=$5;
- var $10=(Math_imul($8,$9)|0);
- var $11=($10<<2);
- var $12=_malloc($11);
- $temp=$12;
- var $13=$temp;
- var $14=$4;
- var $15=$5;
- var $16=$6;
- var $17=$7;
- var $18=_bitmap_decompress4($13,$14,$15,$16,$17);
- $rv=$18;
- $y=0;
- label=2;break;
- case 2:
- var $20=$y;
- var $21=$3;
- var $22=($20|0)<($21|0);
- if($22){label=3;break;}else{label=9;break;}
- case 3:
- $x=0;
- label=4;break;
- case 4:
- var $25=$x;
- var $26=$2;
- var $27=($25|0)<($26|0);
- if($27){label=5;break;}else{label=7;break;}
- case 5:
- var $29=$y;
- var $30=$4;
- var $31=(Math_imul($29,$30)|0);
- var $32=$x;
- var $33=((($31)+($32))|0);
- var $34=($33<<2);
- var $35=$temp;
- var $36=(($35+$34)|0);
- var $37=HEAP8[($36)];
- $r=$37;
- var $38=$y;
- var $39=$4;
- var $40=(Math_imul($38,$39)|0);
- var $41=$x;
- var $42=((($40)+($41))|0);
- var $43=($42<<2);
- var $44=((($43)+(1))|0);
- var $45=$temp;
- var $46=(($45+$44)|0);
- var $47=HEAP8[($46)];
- $g=$47;
- var $48=$y;
- var $49=$4;
- var $50=(Math_imul($48,$49)|0);
- var $51=$x;
- var $52=((($50)+($51))|0);
- var $53=($52<<2);
- var $54=((($53)+(2))|0);
- var $55=$temp;
- var $56=(($55+$54)|0);
- var $57=HEAP8[($56)];
- $b=$57;
- var $58=$y;
- var $59=$4;
- var $60=(Math_imul($58,$59)|0);
- var $61=$x;
- var $62=((($60)+($61))|0);
- var $63=($62<<2);
- var $64=((($63)+(3))|0);
- var $65=$temp;
- var $66=(($65+$64)|0);
- var $67=HEAP8[($66)];
- $a=$67;
- var $68=$r;
- var $69=($68&255);
- var $70=$69<<16;
- var $71=-16777216|$70;
- var $72=$g;
- var $73=($72&255);
- var $74=$73<<8;
- var $75=$71|$74;
- var $76=$b;
- var $77=($76&255);
- var $78=$75|$77;
- var $79=$y;
- var $80=$2;
- var $81=(Math_imul($79,$80)|0);
- var $82=$x;
- var $83=((($81)+($82))|0);
- var $84=$1;
- var $85=$84;
- var $86=(($85+($83<<2))|0);
- HEAP32[(($86)>>2)]=$78;
- label=6;break;
- case 6:
- var $88=$x;
- var $89=((($88)+(1))|0);
- $x=$89;
- label=4;break;
- case 7:
- label=8;break;
- case 8:
- var $92=$y;
- var $93=((($92)+(1))|0);
- $y=$93;
- label=2;break;
- case 9:
- var $95=$temp;
- _free($95);
- var $96=$rv;
- STACKTOP=sp;return $96;
- default: assert(0, "bad label: " + label);
- }
- }
- Module["_bitmap_decompress_32"] = _bitmap_decompress_32;
- function _bitmap_decompress4($output,$width,$height,$input,$size){
- var label=0;
- var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
- label = 1;
- while(1)switch(label){
- case 1:
- var $1;
- var $2;
- var $3;
- var $4;
- var $5;
- var $6;
- var $code;
- var $bytes_pro;
- var $total_pro;
- $2=$output;
- $3=$width;
- $4=$height;
- $5=$input;
- $6=$size;
- var $7=$5;
- var $8=(($7+1)|0);
- $5=$8;
- var $9=HEAP8[($7)];
- var $10=($9&255);
- $code=$10;
- var $11=$code;
- var $12=($11|0)!=16;
- if($12){label=2;break;}else{label=3;break;}
- case 2:
- $1=0;
- label=4;break;
- case 3:
- $total_pro=1;
- var $15=$5;
- var $16=$3;
- var $17=$4;
- var $18=$2;
- var $19=(($18+3)|0);
- var $20=$6;
- var $21=$total_pro;
- var $22=((($20)-($21))|0);
- var $23=_process_plane($15,$16,$17,$19,$22);
- $bytes_pro=$23;
- var $24=$bytes_pro;
- var $25=$total_pro;
- var $26=((($25)+($24))|0);
- $total_pro=$26;
- var $27=$bytes_pro;
- var $28=$5;
- var $29=(($28+$27)|0);
- $5=$29;
- var $30=$5;
- var $31=$3;
- var $32=$4;
- var $33=$2;
- var $34=(($33+2)|0);
- var $35=$6;
- var $36=$total_pro;
- var $37=((($35)-($36))|0);
- var $38=_process_plane($30,$31,$32,$34,$37);
- $bytes_pro=$38;
- var $39=$bytes_pro;
- var $40=$total_pro;
- var $41=((($40)+($39))|0);
- $total_pro=$41;
- var $42=$bytes_pro;
- var $43=$5;
- var $44=(($43+$42)|0);
- $5=$44;
- var $45=$5;
- var $46=$3;
- var $47=$4;
- var $48=$2;
- var $49=(($48+1)|0);
- var $50=$6;
- var $51=$total_pro;
- var $52=((($50)-($51))|0);
- var $53=_process_plane($45,$46,$47,$49,$52);
- $bytes_pro=$53;
- var $54=$bytes_pro;
- var $55=$total_pro;
- var $56=((($55)+($54))|0);
- $total_pro=$56;
- var $57=$bytes_pro;
- var $58=$5;
- var $59=(($58+$57)|0);
- $5=$59;
- var $60=$5;
- var $61=$3;
- var $62=$4;
- var $63=$2;
- var $64=(($63)|0);
- var $65=$6;
- var $66=$total_pro;
- var $67=((($65)-($66))|0);
- var $68=_process_plane($60,$61,$62,$64,$67);
- $bytes_pro=$68;
- var $69=$bytes_pro;
- var $70=$total_pro;
- var $71=((($70)+($69))|0);
- $total_pro=$71;
- var $72=$6;
- var $73=$total_pro;
- var $74=($72|0)==($73|0);
- var $75=($74&1);
- $1=$75;
- label=4;break;
- case 4:
- var $77=$1;
- STACKTOP=sp;return $77;
- default: assert(0, "bad label: " + label);
- }
- }
- function _process_plane($in,$width,$height,$out,$size){
- var label=0;
- var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
- label = 1;
- while(1)switch(label){
- case 1:
- var $1;
- var $2;
- var $3;
- var $4;
- var $5;
- var $indexw;
- var $indexh;
- var $code;
- var $collen;
- var $replen;
- var $color;
- var $x;
- var $revcode;
- var $last_line;
- var $this_line;
- var $org_in;
- var $org_out;
- $1=$in;
- $2=$width;
- $3=$height;
- $4=$out;
- $5=$size;
- var $6=$1;
- $org_in=$6;
- var $7=$4;
- $org_out=$7;
- $last_line=0;
- $indexh=0;
- label=2;break;
- case 2:
- var $9=$indexh;
- var $10=$3;
- var $11=($9|0)<($10|0);
- if($11){label=3;break;}else{label=34;break;}
- case 3:
- var $13=$org_out;
- var $14=$2;
- var $15=$3;
- var $16=(Math_imul($14,$15)|0);
- var $17=($16<<2);
- var $18=(($13+$17)|0);
- var $19=$indexh;
- var $20=((($19)+(1))|0);
- var $21=$2;
- var $22=(Math_imul($20,$21)|0);
- var $23=($22<<2);
- var $24=(((-$23))|0);
- var $25=(($18+$24)|0);
- $4=$25;
- $color=0;
- var $26=$4;
- $this_line=$26;
- $indexw=0;
- var $27=$last_line;
- var $28=($27|0)==0;
- if($28){label=4;break;}else{label=17;break;}
- case 4:
- label=5;break;
- case 5:
- var $31=$indexw;
- var $32=$2;
- var $33=($31|0)<($32|0);
- if($33){label=6;break;}else{label=16;break;}
- case 6:
- var $35=$1;
- var $36=(($35+1)|0);
- $1=$36;
- var $37=HEAP8[($35)];
- var $38=($37&255);
- $code=$38;
- var $39=$code;
- var $40=$39&15;
- $replen=$40;
- var $41=$code;
- var $42=$41>>4;
- var $43=$42&15;
- $collen=$43;
- var $44=$replen;
- var $45=$44<<4;
- var $46=$collen;
- var $47=$45|$46;
- $revcode=$47;
- var $48=$revcode;
- var $49=($48|0)<=47;
- if($49){label=7;break;}else{label=9;break;}
- case 7:
- var $51=$revcode;
- var $52=($51|0)>=16;
- if($52){label=8;break;}else{label=9;break;}
- case 8:
- var $54=$revcode;
- $replen=$54;
- $collen=0;
- label=9;break;
- case 9:
- label=10;break;
- case 10:
- var $57=$collen;
- var $58=($57|0)>0;
- if($58){label=11;break;}else{label=12;break;}
- case 11:
- var $60=$1;
- var $61=(($60+1)|0);
- $1=$61;
- var $62=HEAP8[($60)];
- var $63=($62&255);
- $color=$63;
- var $64=$color;
- var $65=(($64)&255);
- var $66=$4;
- HEAP8[($66)]=$65;
- var $67=$4;
- var $68=(($67+4)|0);
- $4=$68;
- var $69=$indexw;
- var $70=((($69)+(1))|0);
- $indexw=$70;
- var $71=$collen;
- var $72=((($71)-(1))|0);
- $collen=$72;
- label=10;break;
- case 12:
- label=13;break;
- case 13:
- var $75=$replen;
- var $76=($75|0)>0;
- if($76){label=14;break;}else{label=15;break;}
- case 14:
- var $78=$color;
- var $79=(($78)&255);
- var $80=$4;
- HEAP8[($80)]=$79;
- var $81=$4;
- var $82=(($81+4)|0);
- $4=$82;
- var $83=$indexw;
- var $84=((($83)+(1))|0);
- $indexw=$84;
- var $85=$replen;
- var $86=((($85)-(1))|0);
- $replen=$86;
- label=13;break;
- case 15:
- label=5;break;
- case 16:
- label=33;break;
- case 17:
- label=18;break;
- case 18:
- var $91=$indexw;
- var $92=$2;
- var $93=($91|0)<($92|0);
- if($93){label=19;break;}else{label=32;break;}
- case 19:
- var $95=$1;
- var $96=(($95+1)|0);
- $1=$96;
- var $97=HEAP8[($95)];
- var $98=($97&255);
- $code=$98;
- var $99=$code;
- var $100=$99&15;
- $replen=$100;
- var $101=$code;
- var $102=$101>>4;
- var $103=$102&15;
- $collen=$103;
- var $104=$replen;
- var $105=$104<<4;
- var $106=$collen;
- var $107=$105|$106;
- $revcode=$107;
- var $108=$revcode;
- var $109=($108|0)<=47;
- if($109){label=20;break;}else{label=22;break;}
- case 20:
- var $111=$revcode;
- var $112=($111|0)>=16;
- if($112){label=21;break;}else{label=22;break;}
- case 21:
- var $114=$revcode;
- $replen=$114;
- $collen=0;
- label=22;break;
- case 22:
- label=23;break;
- case 23:
- var $117=$collen;
- var $118=($117|0)>0;
- if($118){label=24;break;}else{label=28;break;}
- case 24:
- var $120=$1;
- var $121=(($120+1)|0);
- $1=$121;
- var $122=HEAP8[($120)];
- var $123=($122&255);
- $x=$123;
- var $124=$x;
- var $125=$124&1;
- var $126=($125|0)!=0;
- if($126){label=25;break;}else{label=26;break;}
- case 25:
- var $128=$x;
- var $129=$128>>1;
- $x=$129;
- var $130=$x;
- var $131=((($130)+(1))|0);
- $x=$131;
- var $132=$x;
- var $133=(((-$132))|0);
- $color=$133;
- label=27;break;
- case 26:
- var $135=$x;
- var $136=$135>>1;
- $x=$136;
- var $137=$x;
- $color=$137;
- label=27;break;
- case 27:
- var $139=$indexw;
- var $140=($139<<2);
- var $141=$last_line;
- var $142=(($141+$140)|0);
- var $143=HEAP8[($142)];
- var $144=($143&255);
- var $145=$color;
- var $146=((($144)+($145))|0);
- $x=$146;
- var $147=$x;
- var $148=(($147)&255);
- var $149=$4;
- HEAP8[($149)]=$148;
- var $150=$4;
- var $151=(($150+4)|0);
- $4=$151;
- var $152=$indexw;
- var $153=((($152)+(1))|0);
- $indexw=$153;
- var $154=$collen;
- var $155=((($154)-(1))|0);
- $collen=$155;
- label=23;break;
- case 28:
- label=29;break;
- case 29:
- var $158=$replen;
- var $159=($158|0)>0;
- if($159){label=30;break;}else{label=31;break;}
- case 30:
- var $161=$indexw;
- var $162=($161<<2);
- var $163=$last_line;
- var $164=(($163+$162)|0);
- var $165=HEAP8[($164)];
- var $166=($165&255);
- var $167=$color;
- var $168=((($166)+($167))|0);
- $x=$168;
- var $169=$x;
- var $170=(($169)&255);
- var $171=$4;
- HEAP8[($171)]=$170;
- var $172=$4;
- var $173=(($172+4)|0);
- $4=$173;
- var $174=$indexw;
- var $175=((($174)+(1))|0);
- $indexw=$175;
- var $176=$replen;
- var $177=((($176)-(1))|0);
- $replen=$177;
- label=29;break;
- case 31:
- label=18;break;
- case 32:
- label=33;break;
- case 33:
- var $181=$indexh;
- var $182=((($181)+(1))|0);
- $indexh=$182;
- var $183=$this_line;
- $last_line=$183;
- label=2;break;
- case 34:
- var $185=$1;
- var $186=$org_in;
- var $187=$185;
- var $188=$186;
- var $189=((($187)-($188))|0);
- STACKTOP=sp;return $189;
- default: assert(0, "bad label: " + label);
- }
- }
- function _malloc($bytes){
- var label=0;
- label = 1;
- while(1)switch(label){
- case 1:
- var $1=($bytes>>>0)<245;
- if($1){label=2;break;}else{label=78;break;}
- case 2:
- var $3=($bytes>>>0)<11;
- if($3){var $8=16;label=4;break;}else{label=3;break;}
- case 3:
- var $5=((($bytes)+(11))|0);
- var $6=$5&-8;
- var $8=$6;label=4;break;
- case 4:
- var $8;
- var $9=$8>>>3;
- var $10=HEAP32[((40)>>2)];
- var $11=$10>>>($9>>>0);
- var $12=$11&3;
- var $13=($12|0)==0;
- if($13){label=12;break;}else{label=5;break;}
- case 5:
- var $15=$11&1;
- var $16=$15^1;
- var $17=((($16)+($9))|0);
- var $18=$17<<1;
- var $19=((80+($18<<2))|0);
- var $20=$19;
- var $_sum11=((($18)+(2))|0);
- var $21=((80+($_sum11<<2))|0);
- var $22=HEAP32[(($21)>>2)];
- var $23=(($22+8)|0);
- var $24=HEAP32[(($23)>>2)];
- var $25=($20|0)==($24|0);
- if($25){label=6;break;}else{label=7;break;}
- case 6:
- var $27=1<<$17;
- var $28=$27^-1;
- var $29=$10&$28;
- HEAP32[((40)>>2)]=$29;
- label=11;break;
- case 7:
- var $31=$24;
- var $32=HEAP32[((56)>>2)];
- var $33=($31>>>0)<($32>>>0);
- if($33){label=10;break;}else{label=8;break;}
- case 8:
- var $35=(($24+12)|0);
- var $36=HEAP32[(($35)>>2)];
- var $37=($36|0)==($22|0);
- if($37){label=9;break;}else{label=10;break;}
- case 9:
- HEAP32[(($35)>>2)]=$20;
- HEAP32[(($21)>>2)]=$24;
- label=11;break;
- case 10:
- _abort();
- throw "Reached an unreachable!";
- case 11:
- var $40=$17<<3;
- var $41=$40|3;
- var $42=(($22+4)|0);
- HEAP32[(($42)>>2)]=$41;
- var $43=$22;
- var $_sum1314=$40|4;
- var $44=(($43+$_sum1314)|0);
- var $45=$44;
- var $46=HEAP32[(($45)>>2)];
- var $47=$46|1;
- HEAP32[(($45)>>2)]=$47;
- var $48=$23;
- var $mem_0=$48;label=341;break;
- case 12:
- var $50=HEAP32[((48)>>2)];
- var $51=($8>>>0)>($50>>>0);
- if($51){label=13;break;}else{var $nb_0=$8;label=160;break;}
- case 13:
- var $53=($11|0)==0;
- if($53){label=27;break;}else{label=14;break;}
- case 14:
- var $55=$11<<$9;
- var $56=2<<$9;
- var $57=(((-$56))|0);
- var $58=$56|$57;
- var $59=$55&$58;
- var $60=(((-$59))|0);
- var $61=$59&$60;
- var $62=((($61)-(1))|0);
- var $63=$62>>>12;
- var $64=$63&16;
- var $65=$62>>>($64>>>0);
- var $66=$65>>>5;
- var $67=$66&8;
- var $68=$67|$64;
- var $69=$65>>>($67>>>0);
- var $70=$69>>>2;
- var $71=$70&4;
- var $72=$68|$71;
- var $73=$69>>>($71>>>0);
- var $74=$73>>>1;
- var $75=$74&2;
- var $76=$72|$75;
- var $77=$73>>>($75>>>0);
- var $78=$77>>>1;
- var $79=$78&1;
- var $80=$76|$79;
- var $81=$77>>>($79>>>0);
- var $82=((($80)+($81))|0);
- var $83=$82<<1;
- var $84=((80+($83<<2))|0);
- var $85=$84;
- var $_sum4=((($83)+(2))|0);
- var $86=((80+($_sum4<<2))|0);
- var $87=HEAP32[(($86)>>2)];
- var $88=(($87+8)|0);
- var $89=HEAP32[(($88)>>2)];
- var $90=($85|0)==($89|0);
- if($90){label=15;break;}else{label=16;break;}
- case 15:
- var $92=1<<$82;
- var $93=$92^-1;
- var $94=$10&$93;
- HEAP32[((40)>>2)]=$94;
- label=20;break;
- case 16:
- var $96=$89;
- var $97=HEAP32[((56)>>2)];
- var $98=($96>>>0)<($97>>>0);
- if($98){label=19;break;}else{label=17;break;}
- case 17:
- var $100=(($89+12)|0);
- var $101=HEAP32[(($100)>>2)];
- var $102=($101|0)==($87|0);
- if($102){label=18;break;}else{label=19;break;}
- case 18:
- HEAP32[(($100)>>2)]=$85;
- HEAP32[(($86)>>2)]=$89;
- label=20;break;
- case 19:
- _abort();
- throw "Reached an unreachable!";
- case 20:
- var $105=$82<<3;
- var $106=((($105)-($8))|0);
- var $107=$8|3;
- var $108=(($87+4)|0);
- HEAP32[(($108)>>2)]=$107;
- var $109=$87;
- var $110=(($109+$8)|0);
- var $111=$110;
- var $112=$106|1;
- var $_sum67=$8|4;
- var $113=(($109+$_sum67)|0);
- var $114=$113;
- HEAP32[(($114)>>2)]=$112;
- var $115=(($109+$105)|0);
- var $116=$115;
- HEAP32[(($116)>>2)]=$106;
- var $117=HEAP32[((48)>>2)];
- var $118=($117|0)==0;
- if($118){label=26;break;}else{label=21;break;}
- case 21:
- var $120=HEAP32[((60)>>2)];
- var $121=$117>>>3;
- var $122=$121<<1;
- var $123=((80+($122<<2))|0);
- var $124=$123;
- var $125=HEAP32[((40)>>2)];
- var $126=1<<$121;
- var $127=$125&$126;
- var $128=($127|0)==0;
- if($128){label=22;break;}else{label=23;break;}
- case 22:
- var $130=$125|$126;
- HEAP32[((40)>>2)]=$130;
- var $_sum9_pre=((($122)+(2))|0);
- var $_pre=((80+($_sum9_pre<<2))|0);
- var $F4_0=$124;var $_pre_phi=$_pre;label=25;break;
- case 23:
- var $_sum10=((($122)+(2))|0);
- var $132=((80+($_sum10<<2))|0);
- var $133=HEAP32[(($132)>>2)];
- var $134=$133;
- var $135=HEAP32[((56)>>2)];
- var $136=($134>>>0)<($135>>>0);
- if($136){label=24;break;}else{var $F4_0=$133;var $_pre_phi=$132;label=25;break;}
- case 24:
- _abort();
- throw "Reached an unreachable!";
- case 25:
- var $_pre_phi;
- var $F4_0;
- HEAP32[(($_pre_phi)>>2)]=$120;
- var $139=(($F4_0+12)|0);
- HEAP32[(($139)>>2)]=$120;
- var $140=(($120+8)|0);
- HEAP32[(($140)>>2)]=$F4_0;
- var $141=(($120+12)|0);
- HEAP32[(($141)>>2)]=$124;
- label=26;break;
- case 26:
- HEAP32[((48)>>2)]=$106;
- HEAP32[((60)>>2)]=$111;
- var $143=$88;
- var $mem_0=$143;label=341;break;
- case 27:
- var $145=HEAP32[((44)>>2)];
- var $146=($145|0)==0;
- if($146){var $nb_0=$8;label=160;break;}else{label=28;break;}
- case 28:
- var $148=(((-$145))|0);
- var $149=$145&$148;
- var $150=((($149)-(1))|0);
- var $151=$150>>>12;
- var $152=$151&16;
- var $153=$150>>>($152>>>0);
- var $154=$153>>>5;
- var $155=$154&8;
- var $156=$155|$152;
- var $157=$153>>>($155>>>0);
- var $158=$157>>>2;
- var $159=$158&4;
- var $160=$156|$159;
- var $161=$157>>>($159>>>0);
- var $162=$161>>>1;
- var $163=$162&2;
- var $164=$160|$163;
- var $165=$161>>>($163>>>0);
- var $166=$165>>>1;
- var $167=$166&1;
- var $168=$164|$167;
- var $169=$165>>>($167>>>0);
- var $170=((($168)+($169))|0);
- var $171=((344+($170<<2))|0);
- var $172=HEAP32[(($171)>>2)];
- var $173=(($172+4)|0);
- var $174=HEAP32[(($173)>>2)];
- var $175=$174&-8;
- var $176=((($175)-($8))|0);
- var $t_0_i=$172;var $v_0_i=$172;var $rsize_0_i=$176;label=29;break;
- case 29:
- var $rsize_0_i;
- var $v_0_i;
- var $t_0_i;
- var $178=(($t_0_i+16)|0);
- var $179=HEAP32[(($178)>>2)];
- var $180=($179|0)==0;
- if($180){label=30;break;}else{var $185=$179;label=31;break;}
- case 30:
- var $182=(($t_0_i+20)|0);
- var $183=HEAP32[(($182)>>2)];
- var $184=($183|0)==0;
- if($184){label=32;break;}else{var $185=$183;label=31;break;}
- case 31:
- var $185;
- var $186=(($185+4)|0);
- var $187=HEAP32[(($186)>>2)];
- var $188=$187&-8;
- var $189=((($188)-($8))|0);
- var $190=($189>>>0)<($rsize_0_i>>>0);
- var $_rsize_0_i=($190?$189:$rsize_0_i);
- var $_v_0_i=($190?$185:$v_0_i);
- var $t_0_i=$185;var $v_0_i=$_v_0_i;var $rsize_0_i=$_rsize_0_i;label=29;break;
- case 32:
- var $192=$v_0_i;
- var $193=HEAP32[((56)>>2)];
- var $194=($192>>>0)<($193>>>0);
- if($194){label=76;break;}else{label=33;break;}
- case 33:
- var $196=(($192+$8)|0);
- var $197=$196;
- var $198=($192>>>0)<($196>>>0);
- if($198){label=34;break;}else{label=76;break;}
- case 34:
- var $200=(($v_0_i+24)|0);
- var $201=HEAP32[(($200)>>2)];
- var $202=(($v_0_i+12)|0);
- var $203=HEAP32[(($202)>>2)];
- var $204=($203|0)==($v_0_i|0);
- if($204){label=40;break;}else{label=35;break;}
- case 35:
- var $206=(($v_0_i+8)|0);
- var $207=HEAP32[(($206)>>2)];
- var $208=$207;
- var $209=($208>>>0)<($193>>>0);
- if($209){label=39;break;}else{label=36;break;}
- case 36:
- var $211=(($207+12)|0);
- var $212=HEAP32[(($211)>>2)];
- var $213=($212|0)==($v_0_i|0);
- if($213){label=37;break;}else{label=39;break;}
- case 37:
- var $215=(($203+8)|0);
- var $216=HEAP32[(($215)>>2)];
- var $217=($216|0)==($v_0_i|0);
- if($217){label=38;break;}else{label=39;break;}
- case 38:
- HEAP32[(($211)>>2)]=$203;
- HEAP32[(($215)>>2)]=$207;
- var $R_1_i=$203;label=47;break;
- case 39:
- _abort();
- throw "Reached an unreachable!";
- case 40:
- var $220=(($v_0_i+20)|0);
- var $221=HEAP32[(($220)>>2)];
- var $222=($221|0)==0;
- if($222){label=41;break;}else{var $R_0_i=$221;var $RP_0_i=$220;label=42;break;}
- case 41:
- var $224=(($v_0_i+16)|0);
- var $225=HEAP32[(($224)>>2)];
- var $226=($225|0)==0;
- if($226){var $R_1_i=0;label=47;break;}else{var $R_0_i=$225;var $RP_0_i=$224;label=42;break;}
- case 42:
- var $RP_0_i;
- var $R_0_i;
- var $227=(($R_0_i+20)|0);
- var $228=HEAP32[(($227)>>2)];
- var $229=($228|0)==0;
- if($229){label=43;break;}else{var $R_0_i=$228;var $RP_0_i=$227;label=42;break;}
- case 43:
- var $231=(($R_0_i+16)|0);
- var $232=HEAP32[(($231)>>2)];
- var $233=($232|0)==0;
- if($233){label=44;break;}else{var $R_0_i=$232;var $RP_0_i=$231;label=42;break;}
- case 44:
- var $235=$RP_0_i;
- var $236=($235>>>0)<($193>>>0);
- if($236){label=46;break;}else{label=45;break;}
- case 45:
- HEAP32[(($RP_0_i)>>2)]=0;
- var $R_1_i=$R_0_i;label=47;break;
- case 46:
- _abort();
- throw "Reached an unreachable!";
- case 47:
- var $R_1_i;
- var $240=($201|0)==0;
- if($240){label=67;break;}else{label=48;break;}
- case 48:
- var $242=(($v_0_i+28)|0);
- var $243=HEAP32[(($242)>>2)];
- var $244=((344+($243<<2))|0);
- var $245=HEAP32[(($244)>>2)];
- var $246=($v_0_i|0)==($245|0);
- if($246){label=49;break;}else{label=51;break;}
- case 49:
- HEAP32[(($244)>>2)]=$R_1_i;
- var $cond_i=($R_1_i|0)==0;
- if($cond_i){label=50;break;}else{label=57;break;}
- case 50:
- var $248=HEAP32[(($242)>>2)];
- var $249=1<<$248;
- var $250=$249^-1;
- var $251=HEAP32[((44)>>2)];
- var $252=$251&$250;
- HEAP32[((44)>>2)]=$252;
- label=67;break;
- case 51:
- var $254=$201;
- var $255=HEAP32[((56)>>2)];
- var $256=($254>>>0)<($255>>>0);
- if($256){label=55;break;}else{label=52;break;}
- case 52:
- var $258=(($201+16)|0);
- var $259=HEAP32[(($258)>>2)];
- var $260=($259|0)==($v_0_i|0);
- if($260){label=53;break;}else{label=54;break;}
- case 53:
- HEAP32[(($258)>>2)]=$R_1_i;
- label=56;break;
- case 54:
- var $263=(($201+20)|0);
- HEAP32[(($263)>>2)]=$R_1_i;
- label=56;break;
- case 55:
- _abort();
- throw "Reached an unreachable!";
- case 56:
- var $266=($R_1_i|0)==0;
- if($266){label=67;break;}else{label=57;break;}
- case 57:
- var $268=$R_1_i;
- var $269=HEAP32[((56)>>2)];
- var $270=($268>>>0)<($269>>>0);
- if($270){label=66;break;}else{label=58;break;}
- case 58:
- var $272=(($R_1_i+24)|0);
- HEAP32[(($272)>>2)]=$201;
- var $273=(($v_0_i+16)|0);
- var $274=HEAP32[(($273)>>2)];
- var $275=($274|0)==0;
- if($275){label=62;break;}else{label=59;break;}
- case 59:
- var $277=$274;
- var $278=HEAP32[((56)>>2)];
- var $279=($277>>>0)<($278>>>0);
- if($279){label=61;break;}else{label=60;break;}
- case 60:
- var $281=(($R_1_i+16)|0);
- HEAP32[(($281)>>2)]=$274;
- var $282=(($274+24)|0);
- HEAP32[(($282)>>2)]=$R_1_i;
- label=62;break;
- case 61:
- _abort();
- throw "Reached an unreachable!";
- case 62:
- var $285=(($v_0_i+20)|0);
- var $286=HEAP32[(($285)>>2)];
- var $287=($286|0)==0;
- if($287){label=67;break;}else{label=63;break;}
- case 63:
- var $289=$286;
- var $290=HEAP32[((56)>>2)];
- var $291=($289>>>0)<($290>>>0);
- if($291){label=65;break;}else{label=64;break;}
- case 64:
- var $293=(($R_1_i+20)|0);
- HEAP32[(($293)>>2)]=$286;
- var $294=(($286+24)|0);
- HEAP32[(($294)>>2)]=$R_1_i;
- label=67;break;
- case 65:
- _abort();
- throw "Reached an unreachable!";
- case 66:
- _abort();
- throw "Reached an unreachable!";
- case 67:
- var $298=($rsize_0_i>>>0)<16;
- if($298){label=68;break;}else{label=69;break;}
- case 68:
- var $300=((($rsize_0_i)+($8))|0);
- var $301=$300|3;
- var $302=(($v_0_i+4)|0);
- HEAP32[(($302)>>2)]=$301;
- var $_sum4_i=((($300)+(4))|0);
- var $303=(($192+$_sum4_i)|0);
- var $304=$303;
- var $305=HEAP32[(($304)>>2)];
- var $306=$305|1;
- HEAP32[(($304)>>2)]=$306;
- label=77;break;
- case 69:
- var $308=$8|3;
- var $309=(($v_0_i+4)|0);
- HEAP32[(($309)>>2)]=$308;
- var $310=$rsize_0_i|1;
- var $_sum_i41=$8|4;
- var $311=(($192+$_sum_i41)|0);
- var $312=$311;
- HEAP32[(($312)>>2)]=$310;
- var $_sum1_i=((($rsize_0_i)+($8))|0);
- var $313=(($192+$_sum1_i)|0);
- var $314=$313;
- HEAP32[(($314)>>2)]=$rsize_0_i;
- var $315=HEAP32[((48)>>2)];
- var $316=($315|0)==0;
- if($316){label=75;break;}else{label=70;break;}
- case 70:
- var $318=HEAP32[((60)>>2)];
- var $319=$315>>>3;
- var $320=$319<<1;
- var $321=((80+($320<<2))|0);
- var $322=$321;
- var $323=HEAP32[((40)>>2)];
- var $324=1<<$319;
- var $325=$323&$324;
- var $326=($325|0)==0;
- if($326){label=71;break;}else{label=72;break;}
- case 71:
- var $328=$323|$324;
- HEAP32[((40)>>2)]=$328;
- var $_sum2_pre_i=((($320)+(2))|0);
- var $_pre_i=((80+($_sum2_pre_i<<2))|0);
- var $F1_0_i=$322;var $_pre_phi_i=$_pre_i;label=74;break;
- case 72:
- var $_sum3_i=((($320)+(2))|0);
- var $330=((80+($_sum3_i<<2))|0);
- var $331=HEAP32[(($330)>>2)];
- var $332=$331;
- var $333=HEAP32[((56)>>2)];
- var $334=($332>>>0)<($333>>>0);
- if($334){label=73;break;}else{var $F1_0_i=$331;var $_pre_phi_i=$330;label=74;break;}
- case 73:
- _abort();
- throw "Reached an unreachable!";
- case 74:
- var $_pre_phi_i;
- var $F1_0_i;
- HEAP32[(($_pre_phi_i)>>2)]=$318;
- var $337=(($F1_0_i+12)|0);
- HEAP32[(($337)>>2)]=$318;
- var $338=(($318+8)|0);
- HEAP32[(($338)>>2)]=$F1_0_i;
- var $339=(($318+12)|0);
- HEAP32[(($339)>>2)]=$322;
- label=75;break;
- case 75:
- HEAP32[((48)>>2)]=$rsize_0_i;
- HEAP32[((60)>>2)]=$197;
- label=77;break;
- case 76:
- _abort();
- throw "Reached an unreachable!";
- case 77:
- var $342=(($v_0_i+8)|0);
- var $343=$342;
- var $mem_0=$343;label=341;break;
- case 78:
- var $345=($bytes>>>0)>4294967231;
- if($345){var $nb_0=-1;label=160;break;}else{label=79;break;}
- case 79:
- var $347=((($bytes)+(11))|0);
- var $348=$347&-8;
- var $349=HEAP32[((44)>>2)];
- var $350=($349|0)==0;
- if($350){var $nb_0=$348;label=160;break;}else{label=80;break;}
- case 80:
- var $352=(((-$348))|0);
- var $353=$347>>>8;
- var $354=($353|0)==0;
- if($354){var $idx_0_i=0;label=83;break;}else{label=81;break;}
- case 81:
- var $356=($348>>>0)>16777215;
- if($356){var $idx_0_i=31;label=83;break;}else{label=82;break;}
- case 82:
- var $358=((($353)+(1048320))|0);
- var $359=$358>>>16;
- var $360=$359&8;
- var $361=$353<<$360;
- var $362=((($361)+(520192))|0);
- var $363=$362>>>16;
- var $364=$363&4;
- var $365=$364|$360;
- var $366=$361<<$364;
- var $367=((($366)+(245760))|0);
- var $368=$367>>>16;
- var $369=$368&2;
- var $370=$365|$369;
- var $371=(((14)-($370))|0);
- var $372=$366<<$369;
- var $373=$372>>>15;
- var $374=((($371)+($373))|0);
- var $375=$374<<1;
- var $376=((($374)+(7))|0);
- var $377=$348>>>($376>>>0);
- var $378=$377&1;
- var $379=$378|$375;
- var $idx_0_i=$379;label=83;break;
- case 83:
- var $idx_0_i;
- var $381=((344+($idx_0_i<<2))|0);
- var $382=HEAP32[(($381)>>2)];
- var $383=($382|0)==0;
- if($383){var $v_2_i=0;var $rsize_2_i=$352;var $t_1_i=0;label=90;break;}else{label=84;break;}
- case 84:
- var $385=($idx_0_i|0)==31;
- if($385){var $390=0;label=86;break;}else{label=85;break;}
- case 85:
- var $387=$idx_0_i>>>1;
- var $388=(((25)-($387))|0);
- var $390=$388;label=86;break;
- case 86:
- var $390;
- var $391=$348<<$390;
- var $v_0_i18=0;var $rsize_0_i17=$352;var $t_0_i16=$382;var $sizebits_0_i=$391;var $rst_0_i=0;label=87;break;
- case 87:
- var $rst_0_i;
- var $sizebits_0_i;
- var $t_0_i16;
- var $rsize_0_i17;
- var $v_0_i18;
- var $393=(($t_0_i16+4)|0);
- var $394=HEAP32[(($393)>>2)];
- var $395=$394&-8;
- var $396=((($395)-($348))|0);
- var $397=($396>>>0)<($rsize_0_i17>>>0);
- if($397){label=88;break;}else{var $v_1_i=$v_0_i18;var $rsize_1_i=$rsize_0_i17;label=89;break;}
- case 88:
- var $399=($395|0)==($348|0);
- if($399){var $v_2_i=$t_0_i16;var $rsize_2_i=$396;var $t_1_i=$t_0_i16;label=90;break;}else{var $v_1_i=$t_0_i16;var $rsize_1_i=$396;label=89;break;}
- case 89:
- var $rsize_1_i;
- var $v_1_i;
- var $401=(($t_0_i16+20)|0);
- var $402=HEAP32[(($401)>>2)];
- var $403=$sizebits_0_i>>>31;
- var $404=(($t_0_i16+16+($403<<2))|0);
- var $405=HEAP32[(($404)>>2)];
- var $406=($402|0)==0;
- var $407=($402|0)==($405|0);
- var $or_cond21_i=$406|$407;
- var $rst_1_i=($or_cond21_i?$rst_0_i:$402);
- var $408=($405|0)==0;
- var $409=$sizebits_0_i<<1;
- if($408){var $v_2_i=$v_1_i;var $rsize_2_i=$rsize_1_i;var $t_1_i=$rst_1_i;label=90;break;}else{var $v_0_i18=$v_1_i;var $rsize_0_i17=$rsize_1_i;var $t_0_i16=$405;var $sizebits_0_i=$409;var $rst_0_i=$rst_1_i;label=87;break;}
- case 90:
- var $t_1_i;
- var $rsize_2_i;
- var $v_2_i;
- var $410=($t_1_i|0)==0;
- var $411=($v_2_i|0)==0;
- var $or_cond_i=$410&$411;
- if($or_cond_i){label=91;break;}else{var $t_2_ph_i=$t_1_i;label=93;break;}
- case 91:
- var $413=2<<$idx_0_i;
- var $414=(((-$413))|0);
- var $415=$413|$414;
- var $416=$349&$415;
- var $417=($416|0)==0;
- if($417){var $nb_0=$348;label=160;break;}else{label=92;break;}
- case 92:
- var $419=(((-$416))|0);
- var $420=$416&$419;
- var $421=((($420)-(1))|0);
- var $422=$421>>>12;
- var $423=$422&16;
- var $424=$421>>>($423>>>0);
- var $425=$424>>>5;
- var $426=$425&8;
- var $427=$426|$423;
- var $428=$424>>>($426>>>0);
- var $429=$428>>>2;
- var $430=$429&4;
- var $431=$427|$430;
- var $432=$428>>>($430>>>0);
- var $433=$432>>>1;
- var $434=$433&2;
- var $435=$431|$434;
- var $436=$432>>>($434>>>0);
- var $437=$436>>>1;
- var $438=$437&1;
- var $439=$435|$438;
- var $440=$436>>>($438>>>0);
- var $441=((($439)+($440))|0);
- var $442=((344+($441<<2))|0);
- var $443=HEAP32[(($442)>>2)];
- var $t_2_ph_i=$443;label=93;break;
- case 93:
- var $t_2_ph_i;
- var $444=($t_2_ph_i|0)==0;
- if($444){var $rsize_3_lcssa_i=$rsize_2_i;var $v_3_lcssa_i=$v_2_i;label=96;break;}else{var $t_232_i=$t_2_ph_i;var $rsize_333_i=$rsize_2_i;var $v_334_i=$v_2_i;label=94;break;}
- case 94:
- var $v_334_i;
- var $rsize_333_i;
- var $t_232_i;
- var $445=(($t_232_i+4)|0);
- var $446=HEAP32[(($445)>>2)];
- var $447=$446&-8;
- var $448=((($447)-($348))|0);
- var $449=($448>>>0)<($rsize_333_i>>>0);
- var $_rsize_3_i=($449?$448:$rsize_333_i);
- var $t_2_v_3_i=($449?$t_232_i:$v_334_i);
- var $450=(($t_232_i+16)|0);
- var $451=HEAP32[(($450)>>2)];
- var $452=($451|0)==0;
- if($452){label=95;break;}else{var $t_232_i=$451;var $rsize_333_i=$_rsize_3_i;var $v_334_i=$t_2_v_3_i;label=94;break;}
- case 95:
- var $453=(($t_232_i+20)|0);
- var $454=HEAP32[(($453)>>2)];
- var $455=($454|0)==0;
- if($455){var $rsize_3_lcssa_i=$_rsize_3_i;var $v_3_lcssa_i=$t_2_v_3_i;label=96;break;}else{var $t_232_i=$454;var $rsize_333_i=$_rsize_3_i;var $v_334_i=$t_2_v_3_i;label=94;break;}
- case 96:
- var $v_3_lcssa_i;
- var $rsize_3_lcssa_i;
- var $456=($v_3_lcssa_i|0)==0;
- if($456){var $nb_0=$348;label=160;break;}else{label=97;break;}
- case 97:
- var $458=HEAP32[((48)>>2)];
- var $459=((($458)-($348))|0);
- var $460=($rsize_3_lcssa_i>>>0)<($459>>>0);
- if($460){label=98;break;}else{var $nb_0=$348;label=160;break;}
- case 98:
- var $462=$v_3_lcssa_i;
- var $463=HEAP32[((56)>>2)];
- var $464=($462>>>0)<($463>>>0);
- if($464){label=158;break;}else{label=99;break;}
- case 99:
- var $466=(($462+$348)|0);
- var $467=$466;
- var $468=($462>>>0)<($466>>>0);
- if($468){label=100;break;}else{label=158;break;}
- case 100:
- var $470=(($v_3_lcssa_i+24)|0);
- var $471=HEAP32[(($470)>>2)];
- var $472=(($v_3_lcssa_i+12)|0);
- var $473=HEAP32[(($472)>>2)];
- var $474=($473|0)==($v_3_lcssa_i|0);
- if($474){label=106;break;}else{label=101;break;}
- case 101:
- var $476=(($v_3_lcssa_i+8)|0);
- var $477=HEAP32[(($476)>>2)];
- var $478=$477;
- var $479=($478>>>0)<($463>>>0);
- if($479){label=105;break;}else{label=102;break;}
- case 102:
- var $481=(($477+12)|0);
- var $482=HEAP32[(($481)>>2)];
- var $483=($482|0)==($v_3_lcssa_i|0);
- if($483){label=103;break;}else{label=105;break;}
- case 103:
- var $485=(($473+8)|0);
- var $486=HEAP32[(($485)>>2)];
- var $487=($486|0)==($v_3_lcssa_i|0);
- if($487){label=104;break;}else{label=105;break;}
- case 104:
- HEAP32[(($481)>>2)]=$473;
- HEAP32[(($485)>>2)]=$477;
- var $R_1_i22=$473;label=113;break;
- case 105:
- _abort();
- throw "Reached an unreachable!";
- case 106:
- var $490=(($v_3_lcssa_i+20)|0);
- var $491=HEAP32[(($490)>>2)];
- var $492=($491|0)==0;
- if($492){label=107;break;}else{var $R_0_i20=$491;var $RP_0_i19=$490;label=108;break;}
- case 107:
- var $494=(($v_3_lcssa_i+16)|0);
- var $495=HEAP32[(($494)>>2)];
- var $496=($495|0)==0;
- if($496){var $R_1_i22=0;label=113;break;}else{var $R_0_i20=$495;var $RP_0_i19=$494;label=108;break;}
- case 108:
- var $RP_0_i19;
- var $R_0_i20;
- var $497=(($R_0_i20+20)|0);
- var $498=HEAP32[(($497)>>2)];
- var $499=($498|0)==0;
- if($499){label=109;break;}else{var $R_0_i20=$498;var $RP_0_i19=$497;label=108;break;}
- case 109:
- var $501=(($R_0_i20+16)|0);
- var $502=HEAP32[(($501)>>2)];
- var $503=($502|0)==0;
- if($503){label=110;break;}else{var $R_0_i20=$502;var $RP_0_i19=$501;label=108;break;}
- case 110:
- var $505=$RP_0_i19;
- var $506=($505>>>0)<($463>>>0);
- if($506){label=112;break;}else{label=111;break;}
- case 111:
- HEAP32[(($RP_0_i19)>>2)]=0;
- var $R_1_i22=$R_0_i20;label=113;break;
- case 112:
- _abort();
- throw "Reached an unreachable!";
- case 113:
- var $R_1_i22;
- var $510=($471|0)==0;
- if($510){label=133;break;}else{label=114;break;}
- case 114:
- var $512=(($v_3_lcssa_i+28)|0);
- var $513=HEAP32[(($512)>>2)];
- var $514=((344+($513<<2))|0);
- var $515=HEAP32[(($514)>>2)];
- var $516=($v_3_lcssa_i|0)==($515|0);
- if($516){label=115;break;}else{label=117;break;}
- case 115:
- HEAP32[(($514)>>2)]=$R_1_i22;
- var $cond_i23=($R_1_i22|0)==0;
- if($cond_i23){label=116;break;}else{label=123;break;}
- case 116:
- var $518=HEAP32[(($512)>>2)];
- var $519=1<<$518;
- var $520=$519^-1;
- var $521=HEAP32[((44)>>2)];
- var $522=$521&$520;
- HEAP32[((44)>>2)]=$522;
- label=133;break;
- case 117:
- var $524=$471;
- var $525=HEAP32[((56)>>2)];
- var $526=($524>>>0)<($525>>>0);
- if($526){label=121;break;}else{label=118;break;}
- case 118:
- var $528=(($471+16)|0);
- var $529=HEAP32[(($528)>>2)];
- var $530=($529|0)==($v_3_lcssa_i|0);
- if($530){label=119;break;}else{label=120;break;}
- case 119:
- HEAP32[(($528)>>2)]=$R_1_i22;
- label=122;break;
- case 120:
- var $533=(($471+20)|0);
- HEAP32[(($533)>>2)]=$R_1_i22;
- label=122;break;
- case 121:
- _abort();
- throw "Reached an unreachable!";
- case 122:
- var $536=($R_1_i22|0)==0;
- if($536){label=133;break;}else{label=123;break;}
- case 123:
- var $538=$R_1_i22;
- var $539=HEAP32[((56)>>2)];
- var $540=($538>>>0)<($539>>>0);
- if($540){label=132;break;}else{label=124;break;}
- case 124:
- var $542=(($R_1_i22+24)|0);
- HEAP32[(($542)>>2)]=$471;
- var $543=(($v_3_lcssa_i+16)|0);
- var $544=HEAP32[(($543)>>2)];
- var $545=($544|0)==0;
- if($545){label=128;break;}else{label=125;break;}
- case 125:
- var $547=$544;
- var $548=HEAP32[((56)>>2)];
- var $549=($547>>>0)<($548>>>0);
- if($549){label=127;break;}else{label=126;break;}
- case 126:
- var $551=(($R_1_i22+16)|0);
- HEAP32[(($551)>>2)]=$544;
- var $552=(($544+24)|0);
- HEAP32[(($552)>>2)]=$R_1_i22;
- label=128;break;
- case 127:
- _abort();
- throw "Reached an unreachable!";
- case 128:
- var $555=(($v_3_lcssa_i+20)|0);
- var $556=HEAP32[(($555)>>2)];
- var $557=($556|0)==0;
- if($557){label=133;break;}else{label=129;break;}
- case 129:
- var $559=$556;
- var $560=HEAP32[((56)>>2)];
- var $561=($559>>>0)<($560>>>0);
- if($561){label=131;break;}else{label=130;break;}
- case 130:
- var $563=(($R_1_i22+20)|0);
- HEAP32[(($563)>>2)]=$556;
- var $564=(($556+24)|0);
- HEAP32[(($564)>>2)]=$R_1_i22;
- label=133;break;
- case 131:
- _abort();
- throw "Reached an unreachable!";
- case 132:
- _abort();
- throw "Reached an unreachable!";
- case 133:
- var $568=($rsize_3_lcssa_i>>>0)<16;
- if($568){label=134;break;}else{label=135;break;}
- case 134:
- var $570=((($rsize_3_lcssa_i)+($348))|0);
- var $571=$570|3;
- var $572=(($v_3_lcssa_i+4)|0);
- HEAP32[(($572)>>2)]=$571;
- var $_sum19_i=((($570)+(4))|0);
- var $573=(($462+$_sum19_i)|0);
- var $574=$573;
- var $575=HEAP32[(($574)>>2)];
- var $576=$575|1;
- HEAP32[(($574)>>2)]=$576;
- label=159;break;
- case 135:
- var $578=$348|3;
- var $579=(($v_3_lcssa_i+4)|0);
- HEAP32[(($579)>>2)]=$578;
- var $580=$rsize_3_lcssa_i|1;
- var $_sum_i2540=$348|4;
- var $581=(($462+$_sum_i2540)|0);
- var $582=$581;
- HEAP32[(($582)>>2)]=$580;
- var $_sum1_i26=((($rsize_3_lcssa_i)+($348))|0);
- var $583=(($462+$_sum1_i26)|0);
- var $584=$583;
- HEAP32[(($584)>>2)]=$rsize_3_lcssa_i;
- var $585=$rsize_3_lcssa_i>>>3;
- var $586=($rsize_3_lcssa_i>>>0)<256;
- if($586){label=136;break;}else{label=141;break;}
- case 136:
- var $588=$585<<1;
- var $589=((80+($588<<2))|0);
- var $590=$589;
- var $591=HEAP32[((40)>>2)];
- var $592=1<<$585;
- var $593=$591&$592;
- var $594=($593|0)==0;
- if($594){label=137;break;}else{label=138;break;}
- case 137:
- var $596=$591|$592;
- HEAP32[((40)>>2)]=$596;
- var $_sum15_pre_i=((($588)+(2))|0);
- var $_pre_i27=((80+($_sum15_pre_i<<2))|0);
- var $F5_0_i=$590;var $_pre_phi_i28=$_pre_i27;label=140;break;
- case 138:
- var $_sum18_i=((($588)+(2))|0);
- var $598=((80+($_sum18_i<<2))|0);
- var $599=HEAP32[(($598)>>2)];
- var $600=$599;
- var $601=HEAP32[((56)>>2)];
- var $602=($600>>>0)<($601>>>0);
- if($602){label=139;break;}else{var $F5_0_i=$599;var $_pre_phi_i28=$598;label=140;break;}
- case 139:
- _abort();
- throw "Reached an unreachable!";
- case 140:
- var $_pre_phi_i28;
- var $F5_0_i;
- HEAP32[(($_pre_phi_i28)>>2)]=$467;
- var $605=(($F5_0_i+12)|0);
- HEAP32[(($605)>>2)]=$467;
- var $_sum16_i=((($348)+(8))|0);
- var $606=(($462+$_sum16_i)|0);
- var $607=$606;
- HEAP32[(($607)>>2)]=$F5_0_i;
- var $_sum17_i=((($348)+(12))|0);
- var $608=(($462+$_sum17_i)|0);
- var $609=$608;
- HEAP32[(($609)>>2)]=$590;
- label=159;break;
- case 141:
- var $611=$466;
- var $612=$rsize_3_lcssa_i>>>8;
- var $613=($612|0)==0;
- if($613){var $I7_0_i=0;label=144;break;}else{label=142;break;}
- case 142:
- var $615=($rsize_3_lcssa_i>>>0)>16777215;
- if($615){var $I7_0_i=31;label=144;break;}else{label=143;break;}
- case 143:
- var $617=((($612)+(1048320))|0);
- var $618=$617>>>16;
- var $619=$618&8;
- var $620=$612<<$619;
- var $621=((($620)+(520192))|0);
- var $622=$621>>>16;
- var $623=$622&4;
- var $624=$623|$619;
- var $625=$620<<$623;
- var $626=((($625)+(245760))|0);
- var $627=$626>>>16;
- var $628=$627&2;
- var $629=$624|$628;
- var $630=(((14)-($629))|0);
- var $631=$625<<$628;
- var $632=$631>>>15;
- var $633=((($630)+($632))|0);
- var $634=$633<<1;
- var $635=((($633)+(7))|0);
- var $636=$rsize_3_lcssa_i>>>($635>>>0);
- var $637=$636&1;
- var $638=$637|$634;
- var $I7_0_i=$638;label=144;break;
- case 144:
- var $I7_0_i;
- var $640=((344+($I7_0_i<<2))|0);
- var $_sum2_i=((($348)+(28))|0);
- var $641=(($462+$_sum2_i)|0);
- var $642=$641;
- HEAP32[(($642)>>2)]=$I7_0_i;
- var $_sum3_i29=((($348)+(16))|0);
- var $643=(($462+$_sum3_i29)|0);
- var $_sum4_i30=((($348)+(20))|0);
- var $644=(($462+$_sum4_i30)|0);
- var $645=$644;
- HEAP32[(($645)>>2)]=0;
- var $646=$643;
- HEAP32[(($646)>>2)]=0;
- var $647=HEAP32[((44)>>2)];
- var $648=1<<$I7_0_i;
- var $649=$647&$648;
- var $650=($649|0)==0;
- if($650){label=145;break;}else{label=146;break;}
- case 145:
- var $652=$647|$648;
- HEAP32[((44)>>2)]=$652;
- HEAP32[(($640)>>2)]=$611;
- var $653=$640;
- var $_sum5_i=((($348)+(24))|0);
- var $654=(($462+$_sum5_i)|0);
- var $655=$654;
- HEAP32[(($655)>>2)]=$653;
- var $_sum6_i=((($348)+(12))|0);
- var $656=(($462+$_sum6_i)|0);
- var $657=$656;
- HEAP32[(($657)>>2)]=$611;
- var $_sum7_i=((($348)+(8))|0);
- var $658=(($462+$_sum7_i)|0);
- var $659=$658;
- HEAP32[(($659)>>2)]=$611;
- label=159;break;
- case 146:
- var $661=HEAP32[(($640)>>2)];
- var $662=($I7_0_i|0)==31;
- if($662){var $667=0;label=148;break;}else{label=147;break;}
- case 147:
- var $664=$I7_0_i>>>1;
- var $665=(((25)-($664))|0);
- var $667=$665;label=148;break;
- case 148:
- var $667;
- var $668=(($661+4)|0);
- var $669=HEAP32[(($668)>>2)];
- var $670=$669&-8;
- var $671=($670|0)==($rsize_3_lcssa_i|0);
- if($671){var $T_0_lcssa_i=$661;label=155;break;}else{label=149;break;}
- case 149:
- var $672=$rsize_3_lcssa_i<<$667;
- var $T_028_i=$661;var $K12_029_i=$672;label=151;break;
- case 150:
- var $674=$K12_029_i<<1;
- var $675=(($682+4)|0);
- var $676=HEAP32[(($675)>>2)];
- var $677=$676&-8;
- var $678=($677|0)==($rsize_3_lcssa_i|0);
- if($678){var $T_0_lcssa_i=$682;label=155;break;}else{var $T_028_i=$682;var $K12_029_i=$674;label=151;break;}
- case 151:
- var $K12_029_i;
- var $T_028_i;
- var $680=$K12_029_i>>>31;
- var $681=(($T_028_i+16+($680<<2))|0);
- var $682=HEAP32[(($681)>>2)];
- var $683=($682|0)==0;
- if($683){label=152;break;}else{label=150;break;}
- case 152:
- var $685=$681;
- var $686=HEAP32[((56)>>2)];
- var $687=($685>>>0)<($686>>>0);
- if($687){label=154;break;}else{label=153;break;}
- case 153:
- HEAP32[(($681)>>2)]=$611;
- var $_sum12_i=((($348)+(24))|0);
- var $689=(($462+$_sum12_i)|0);
- var $690=$689;
- HEAP32[(($690)>>2)]=$T_028_i;
- var $_sum13_i=((($348)+(12))|0);
- var $691=(($462+$_sum13_i)|0);
- var $692=$691;
- HEAP32[(($692)>>2)]=$611;
- var $_sum14_i=((($348)+(8))|0);
- var $693=(($462+$_sum14_i)|0);
- var $694=$693;
- HEAP32[(($694)>>2)]=$611;
- label=159;break;
- case 154:
- _abort();
- throw "Reached an unreachable!";
- case 155:
- var $T_0_lcssa_i;
- var $696=(($T_0_lcssa_i+8)|0);
- var $697=HEAP32[(($696)>>2)];
- var $698=$T_0_lcssa_i;
- var $699=HEAP32[((56)>>2)];
- var $700=($698>>>0)>=($699>>>0);
- var $701=$697;
- var $702=($701>>>0)>=($699>>>0);
- var $or_cond26_i=$700&$702;
- if($or_cond26_i){label=156;break;}else{label=157;break;}
- case 156:
- var $704=(($697+12)|0);
- HEAP32[(($704)>>2)]=$611;
- HEAP32[(($696)>>2)]=$611;
- var $_sum9_i=((($348)+(8))|0);
- var $705=(($462+$_sum9_i)|0);
- var $706=$705;
- HEAP32[(($706)>>2)]=$697;
- var $_sum10_i=((($348)+(12))|0);
- var $707=(($462+$_sum10_i)|0);
- var $708=$707;
- HEAP32[(($708)>>2)]=$T_0_lcssa_i;
- var $_sum11_i=((($348)+(24))|0);
- var $709=(($462+$_sum11_i)|0);
- var $710=$709;
- HEAP32[(($710)>>2)]=0;
- label=159;break;
- case 157:
- _abort();
- throw "Reached an unreachable!";
- case 158:
- _abort();
- throw "Reached an unreachable!";
- case 159:
- var $712=(($v_3_lcssa_i+8)|0);
- var $713=$712;
- var $mem_0=$713;label=341;break;
- case 160:
- var $nb_0;
- var $714=HEAP32[((48)>>2)];
- var $715=($714>>>0)<($nb_0>>>0);
- if($715){label=165;break;}else{label=161;break;}
- case 161:
- var $717=((($714)-($nb_0))|0);
- var $718=HEAP32[((60)>>2)];
- var $719=($717>>>0)>15;
- if($719){label=162;break;}else{label=163;break;}
- case 162:
- var $721=$718;
- var $722=(($721+$nb_0)|0);
- var $723=$722;
- HEAP32[((60)>>2)]=$723;
- HEAP32[((48)>>2)]=$717;
- var $724=$717|1;
- var $_sum2=((($nb_0)+(4))|0);
- var $725=(($721+$_sum2)|0);
- var $726=$725;
- HEAP32[(($726)>>2)]=$724;
- var $727=(($721+$714)|0);
- var $728=$727;
- HEAP32[(($728)>>2)]=$717;
- var $729=$nb_0|3;
- var $730=(($718+4)|0);
- HEAP32[(($730)>>2)]=$729;
- label=164;break;
- case 163:
- HEAP32[((48)>>2)]=0;
- HEAP32[((60)>>2)]=0;
- var $732=$714|3;
- var $733=(($718+4)|0);
- HEAP32[(($733)>>2)]=$732;
- var $734=$718;
- var $_sum1=((($714)+(4))|0);
- var $735=(($734+$_sum1)|0);
- var $736=$735;
- var $737=HEAP32[(($736)>>2)];
- var $738=$737|1;
- HEAP32[(($736)>>2)]=$738;
- label=164;break;
- case 164:
- var $740=(($718+8)|0);
- var $741=$740;
- var $mem_0=$741;label=341;break;
- case 165:
- var $743=HEAP32[((52)>>2)];
- var $744=($743>>>0)>($nb_0>>>0);
- if($744){label=166;break;}else{label=167;break;}
- case 166:
- var $746=((($743)-($nb_0))|0);
- HEAP32[((52)>>2)]=$746;
- var $747=HEAP32[((64)>>2)];
- var $748=$747;
- var $749=(($748+$nb_0)|0);
- var $750=$749;
- HEAP32[((64)>>2)]=$750;
- var $751=$746|1;
- var $_sum=((($nb_0)+(4))|0);
- var $752=(($748+$_sum)|0);
- var $753=$752;
- HEAP32[(($753)>>2)]=$751;
- var $754=$nb_0|3;
- var $755=(($747+4)|0);
- HEAP32[(($755)>>2)]=$754;
- var $756=(($747+8)|0);
- var $757=$756;
- var $mem_0=$757;label=341;break;
- case 167:
- var $759=HEAP32[((16)>>2)];
- var $760=($759|0)==0;
- if($760){label=168;break;}else{label=171;break;}
- case 168:
- var $762=_sysconf(30);
- var $763=((($762)-(1))|0);
- var $764=$763&$762;
- var $765=($764|0)==0;
- if($765){label=170;break;}else{label=169;break;}
- case 169:
- _abort();
- throw "Reached an unreachable!";
- case 170:
- HEAP32[((24)>>2)]=$762;
- HEAP32[((20)>>2)]=$762;
- HEAP32[((28)>>2)]=-1;
- HEAP32[((32)>>2)]=-1;
- HEAP32[((36)>>2)]=0;
- HEAP32[((484)>>2)]=0;
- var $767=_time(0);
- var $768=$767&-16;
- var $769=$768^1431655768;
- HEAP32[((16)>>2)]=$769;
- label=171;break;
- case 171:
- var $771=((($nb_0)+(48))|0);
- var $772=HEAP32[((24)>>2)];
- var $773=((($nb_0)+(47))|0);
- var $774=((($772)+($773))|0);
- var $775=(((-$772))|0);
- var $776=$774&$775;
- var $777=($776>>>0)>($nb_0>>>0);
- if($777){label=172;break;}else{var $mem_0=0;label=341;break;}
- case 172:
- var $779=HEAP32[((480)>>2)];
- var $780=($779|0)==0;
- if($780){label=174;break;}else{label=173;break;}
- case 173:
- var $782=HEAP32[((472)>>2)];
- var $783=((($782)+($776))|0);
- var $784=($783>>>0)<=($782>>>0);
- var $785=($783>>>0)>($779>>>0);
- var $or_cond1_i=$784|$785;
- if($or_cond1_i){var $mem_0=0;label=341;break;}else{label=174;break;}
- case 174:
- var $787=HEAP32[((484)>>2)];
- var $788=$787&4;
- var $789=($788|0)==0;
- if($789){label=175;break;}else{var $tsize_1_i=0;label=198;break;}
- case 175:
- var $791=HEAP32[((64)>>2)];
- var $792=($791|0)==0;
- if($792){label=181;break;}else{label=176;break;}
- case 176:
- var $794=$791;
- var $sp_0_i_i=488;label=177;break;
- case 177:
- var $sp_0_i_i;
- var $796=(($sp_0_i_i)|0);
- var $797=HEAP32[(($796)>>2)];
- var $798=($797>>>0)>($794>>>0);
- if($798){label=179;break;}else{label=178;break;}
- case 178:
- var $800=(($sp_0_i_i+4)|0);
- var $801=HEAP32[(($800)>>2)];
- var $802=(($797+$801)|0);
- var $803=($802>>>0)>($794>>>0);
- if($803){label=180;break;}else{label=179;break;}
- case 179:
- var $805=(($sp_0_i_i+8)|0);
- var $806=HEAP32[(($805)>>2)];
- var $807=($806|0)==0;
- if($807){label=181;break;}else{var $sp_0_i_i=$806;label=177;break;}
- case 180:
- var $808=($sp_0_i_i|0)==0;
- if($808){label=181;break;}else{label=188;break;}
- case 181:
- var $809=_sbrk(0);
- var $810=($809|0)==-1;
- if($810){var $tsize_03141_i=0;label=197;break;}else{label=182;break;}
- case 182:
- var $812=$809;
- var $813=HEAP32[((20)>>2)];
- var $814=((($813)-(1))|0);
- var $815=$814&$812;
- var $816=($815|0)==0;
- if($816){var $ssize_0_i=$776;label=184;break;}else{label=183;break;}
- case 183:
- var $818=((($814)+($812))|0);
- var $819=(((-$813))|0);
- var $820=$818&$819;
- var $821=((($776)-($812))|0);
- var $822=((($821)+($820))|0);
- var $ssize_0_i=$822;label=184;break;
- case 184:
- var $ssize_0_i;
- var $824=HEAP32[((472)>>2)];
- var $825=((($824)+($ssize_0_i))|0);
- var $826=($ssize_0_i>>>0)>($nb_0>>>0);
- var $827=($ssize_0_i>>>0)<2147483647;
- var $or_cond_i31=$826&$827;
- if($or_cond_i31){label=185;break;}else{var $tsize_03141_i=0;label=197;break;}
- case 185:
- var $829=HEAP32[((480)>>2)];
- var $830=($829|0)==0;
- if($830){label=187;break;}else{label=186;break;}
- case 186:
- var $832=($825>>>0)<=($824>>>0);
- var $833=($825>>>0)>($829>>>0);
- var $or_cond2_i=$832|$833;
- if($or_cond2_i){var $tsize_03141_i=0;label=197;break;}else{label=187;break;}
- case 187:
- var $835=_sbrk($ssize_0_i);
- var $836=($835|0)==($809|0);
- if($836){var $br_0_i=$809;var $ssize_1_i=$ssize_0_i;label=190;break;}else{var $ssize_129_i=$ssize_0_i;var $br_030_i=$835;label=191;break;}
- case 188:
- var $838=HEAP32[((52)>>2)];
- var $839=((($774)-($838))|0);
- var $840=$839&$775;
- var $841=($840>>>0)<2147483647;
- if($841){label=189;break;}else{var $tsize_03141_i=0;label=197;break;}
- case 189:
- var $843=_sbrk($840);
- var $844=HEAP32[(($796)>>2)];
- var $845=HEAP32[(($800)>>2)];
- var $846=(($844+$845)|0);
- var $847=($843|0)==($846|0);
- if($847){var $br_0_i=$843;var $ssize_1_i=$840;label=190;break;}else{var $ssize_129_i=$840;var $br_030_i=$843;label=191;break;}
- case 190:
- var $ssize_1_i;
- var $br_0_i;
- var $849=($br_0_i|0)==-1;
- if($849){var $tsize_03141_i=$ssize_1_i;label=197;break;}else{var $tsize_244_i=$ssize_1_i;var $tbase_245_i=$br_0_i;label=201;break;}
- case 191:
- var $br_030_i;
- var $ssize_129_i;
- var $850=(((-$ssize_129_i))|0);
- var $851=($br_030_i|0)!=-1;
- var $852=($ssize_129_i>>>0)<2147483647;
- var $or_cond5_i=$851&$852;
- var $853=($771>>>0)>($ssize_129_i>>>0);
- var $or_cond4_i=$or_cond5_i&$853;
- if($or_cond4_i){label=192;break;}else{var $ssize_2_i=$ssize_129_i;label=196;break;}
- case 192:
- var $855=HEAP32[((24)>>2)];
- var $856=((($773)-($ssize_129_i))|0);
- var $857=((($856)+($855))|0);
- var $858=(((-$855))|0);
- var $859=$857&$858;
- var $860=($859>>>0)<2147483647;
- if($860){label=193;break;}else{var $ssize_2_i=$ssize_129_i;label=196;break;}
- case 193:
- var $862=_sbrk($859);
- var $863=($862|0)==-1;
- if($863){label=195;break;}else{label=194;break;}
- case 194:
- var $865=((($859)+($ssize_129_i))|0);
- var $ssize_2_i=$865;label=196;break;
- case 195:
- var $866=_sbrk($850);
- var $tsize_03141_i=0;label=197;break;
- case 196:
- var $ssize_2_i;
- var $868=($br_030_i|0)==-1;
- if($868){var $tsize_03141_i=0;label=197;break;}else{var $tsize_244_i=$ssize_2_i;var $tbase_245_i=$br_030_i;label=201;break;}
- case 197:
- var $tsize_03141_i;
- var $869=HEAP32[((484)>>2)];
- var $870=$869|4;
- HEAP32[((484)>>2)]=$870;
- var $tsize_1_i=$tsize_03141_i;label=198;break;
- case 198:
- var $tsize_1_i;
- var $872=($776>>>0)<2147483647;
- if($872){label=199;break;}else{label=340;break;}
- case 199:
- var $874=_sbrk($776);
- var $875=_sbrk(0);
- var $876=($874|0)!=-1;
- var $877=($875|0)!=-1;
- var $or_cond3_i=$876&$877;
- var $878=($874>>>0)<($875>>>0);
- var $or_cond6_i=$or_cond3_i&$878;
- if($or_cond6_i){label=200;break;}else{label=340;break;}
- case 200:
- var $880=$875;
- var $881=$874;
- var $882=((($880)-($881))|0);
- var $883=((($nb_0)+(40))|0);
- var $884=($882>>>0)>($883>>>0);
- var $_tsize_1_i=($884?$882:$tsize_1_i);
- if($884){var $tsize_244_i=$_tsize_1_i;var $tbase_245_i=$874;label=201;break;}else{label=340;break;}
- case 201:
- var $tbase_245_i;
- var $tsize_244_i;
- var $885=HEAP32[((472)>>2)];
- var $886=((($885)+($tsize_244_i))|0);
- HEAP32[((472)>>2)]=$886;
- var $887=HEAP32[((476)>>2)];
- var $888=($886>>>0)>($887>>>0);
- if($888){label=202;break;}else{label=203;break;}
- case 202:
- HEAP32[((476)>>2)]=$886;
- label=203;break;
- case 203:
- var $891=HEAP32[((64)>>2)];
- var $892=($891|0)==0;
- if($892){label=204;break;}else{var $sp_073_i=488;label=211;break;}
- case 204:
- var $894=HEAP32[((56)>>2)];
- var $895=($894|0)==0;
- var $896=($tbase_245_i>>>0)<($894>>>0);
- var $or_cond8_i=$895|$896;
- if($or_cond8_i){label=205;break;}else{label=206;break;}
- case 205:
- HEAP32[((56)>>2)]=$tbase_245_i;
- label=206;break;
- case 206:
- HEAP32[((488)>>2)]=$tbase_245_i;
- HEAP32[((492)>>2)]=$tsize_244_i;
- HEAP32[((500)>>2)]=0;
- var $899=HEAP32[((16)>>2)];
- HEAP32[((76)>>2)]=$899;
- HEAP32[((72)>>2)]=-1;
- var $i_02_i_i=0;label=207;break;
- case 207:
- var $i_02_i_i;
- var $901=$i_02_i_i<<1;
- var $902=((80+($901<<2))|0);
- var $903=$902;
- var $_sum_i_i=((($901)+(3))|0);
- var $904=((80+($_sum_i_i<<2))|0);
- HEAP32[(($904)>>2)]=$903;
- var $_sum1_i_i=((($901)+(2))|0);
- var $905=((80+($_sum1_i_i<<2))|0);
- HEAP32[(($905)>>2)]=$903;
- var $906=((($i_02_i_i)+(1))|0);
- var $907=($906>>>0)<32;
- if($907){var $i_02_i_i=$906;label=207;break;}else{label=208;break;}
- case 208:
- var $908=((($tsize_244_i)-(40))|0);
- var $909=(($tbase_245_i+8)|0);
- var $910=$909;
- var $911=$910&7;
- var $912=($911|0)==0;
- if($912){var $916=0;label=210;break;}else{label=209;break;}
- case 209:
- var $914=(((-$910))|0);
- var $915=$914&7;
- var $916=$915;label=210;break;
- case 210:
- var $916;
- var $917=(($tbase_245_i+$916)|0);
- var $918=$917;
- var $919=((($908)-($916))|0);
- HEAP32[((64)>>2)]=$918;
- HEAP32[((52)>>2)]=$919;
- var $920=$919|1;
- var $_sum_i12_i=((($916)+(4))|0);
- var $921=(($tbase_245_i+$_sum_i12_i)|0);
- var $922=$921;
- HEAP32[(($922)>>2)]=$920;
- var $_sum2_i_i=((($tsize_244_i)-(36))|0);
- var $923=(($tbase_245_i+$_sum2_i_i)|0);
- var $924=$923;
- HEAP32[(($924)>>2)]=40;
- var $925=HEAP32[((32)>>2)];
- HEAP32[((68)>>2)]=$925;
- label=338;break;
- case 211:
- var $sp_073_i;
- var $926=(($sp_073_i)|0);
- var $927=HEAP32[(($926)>>2)];
- var $928=(($sp_073_i+4)|0);
- var $929=HEAP32[(($928)>>2)];
- var $930=(($927+$929)|0);
- var $931=($tbase_245_i|0)==($930|0);
- if($931){label=213;break;}else{label=212;break;}
- case 212:
- var $933=(($sp_073_i+8)|0);
- var $934=HEAP32[(($933)>>2)];
- var $935=($934|0)==0;
- if($935){label=218;break;}else{var $sp_073_i=$934;label=211;break;}
- case 213:
- var $936=(($sp_073_i+12)|0);
- var $937=HEAP32[(($936)>>2)];
- var $938=$937&8;
- var $939=($938|0)==0;
- if($939){label=214;break;}else{label=218;break;}
- case 214:
- var $941=$891;
- var $942=($941>>>0)>=($927>>>0);
- var $943=($941>>>0)<($tbase_245_i>>>0);
- var $or_cond47_i=$942&$943;
- if($or_cond47_i){label=215;break;}else{label=218;break;}
- case 215:
- var $945=((($929)+($tsize_244_i))|0);
- HEAP32[(($928)>>2)]=$945;
- var $946=HEAP32[((64)>>2)];
- var $947=HEAP32[((52)>>2)];
- var $948=((($947)+($tsize_244_i))|0);
- var $949=$946;
- var $950=(($946+8)|0);
- var $951=$950;
- var $952=$951&7;
- var $953=($952|0)==0;
- if($953){var $957=0;label=217;break;}else{label=216;break;}
- case 216:
- var $955=(((-$951))|0);
- var $956=$955&7;
- var $957=$956;label=217;break;
- case 217:
- var $957;
- var $958=(($949+$957)|0);
- var $959=$958;
- var $960=((($948)-($957))|0);
- HEAP32[((64)>>2)]=$959;
- HEAP32[((52)>>2)]=$960;
- var $961=$960|1;
- var $_sum_i16_i=((($957)+(4))|0);
- var $962=(($949+$_sum_i16_i)|0);
- var $963=$962;
- HEAP32[(($963)>>2)]=$961;
- var $_sum2_i17_i=((($948)+(4))|0);
- var $964=(($949+$_sum2_i17_i)|0);
- var $965=$964;
- HEAP32[(($965)>>2)]=40;
- var $966=HEAP32[((32)>>2)];
- HEAP32[((68)>>2)]=$966;
- label=338;break;
- case 218:
- var $967=HEAP32[((56)>>2)];
- var $968=($tbase_245_i>>>0)<($967>>>0);
- if($968){label=219;break;}else{label=220;break;}
- case 219:
- HEAP32[((56)>>2)]=$tbase_245_i;
- label=220;break;
- case 220:
- var $970=(($tbase_245_i+$tsize_244_i)|0);
- var $sp_166_i=488;label=221;break;
- case 221:
- var $sp_166_i;
- var $972=(($sp_166_i)|0);
- var $973=HEAP32[(($972)>>2)];
- var $974=($973|0)==($970|0);
- if($974){label=223;break;}else{label=222;break;}
- case 222:
- var $976=(($sp_166_i+8)|0);
- var $977=HEAP32[(($976)>>2)];
- var $978=($977|0)==0;
- if($978){label=304;break;}else{var $sp_166_i=$977;label=221;break;}
- case 223:
- var $979=(($sp_166_i+12)|0);
- var $980=HEAP32[(($979)>>2)];
- var $981=$980&8;
- var $982=($981|0)==0;
- if($982){label=224;break;}else{label=304;break;}
- case 224:
- HEAP32[(($972)>>2)]=$tbase_245_i;
- var $984=(($sp_166_i+4)|0);
- var $985=HEAP32[(($984)>>2)];
- var $986=((($985)+($tsize_244_i))|0);
- HEAP32[(($984)>>2)]=$986;
- var $987=(($tbase_245_i+8)|0);
- var $988=$987;
- var $989=$988&7;
- var $990=($989|0)==0;
- if($990){var $995=0;label=226;break;}else{label=225;break;}
- case 225:
- var $992=(((-$988))|0);
- var $993=$992&7;
- var $995=$993;label=226;break;
- case 226:
- var $995;
- var $996=(($tbase_245_i+$995)|0);
- var $_sum102_i=((($tsize_244_i)+(8))|0);
- var $997=(($tbase_245_i+$_sum102_i)|0);
- var $998=$997;
- var $999=$998&7;
- var $1000=($999|0)==0;
- if($1000){var $1005=0;label=228;break;}else{label=227;break;}
- case 227:
- var $1002=(((-$998))|0);
- var $1003=$1002&7;
- var $1005=$1003;label=228;break;
- case 228:
- var $1005;
- var $_sum103_i=((($1005)+($tsize_244_i))|0);
- var $1006=(($tbase_245_i+$_sum103_i)|0);
- var $1007=$1006;
- var $1008=$1006;
- var $1009=$996;
- var $1010=((($1008)-($1009))|0);
- var $_sum_i19_i=((($995)+($nb_0))|0);
- var $1011=(($tbase_245_i+$_sum_i19_i)|0);
- var $1012=$1011;
- var $1013=((($1010)-($nb_0))|0);
- var $1014=$nb_0|3;
- var $_sum1_i20_i=((($995)+(4))|0);
- var $1015=(($tbase_245_i+$_sum1_i20_i)|0);
- var $1016=$1015;
- HEAP32[(($1016)>>2)]=$1014;
- var $1017=HEAP32[((64)>>2)];
- var $1018=($1007|0)==($1017|0);
- if($1018){label=229;break;}else{label=230;break;}
- case 229:
- var $1020=HEAP32[((52)>>2)];
- var $1021=((($1020)+($1013))|0);
- HEAP32[((52)>>2)]=$1021;
- HEAP32[((64)>>2)]=$1012;
- var $1022=$1021|1;
- var $_sum46_i_i=((($_sum_i19_i)+(4))|0);
- var $1023=(($tbase_245_i+$_sum46_i_i)|0);
- var $1024=$1023;
- HEAP32[(($1024)>>2)]=$1022;
- label=303;break;
- case 230:
- var $1026=HEAP32[((60)>>2)];
- var $1027=($1007|0)==($1026|0);
- if($1027){label=231;break;}else{label=232;break;}
- case 231:
- var $1029=HEAP32[((48)>>2)];
- var $1030=((($1029)+($1013))|0);
- HEAP32[((48)>>2)]=$1030;
- HEAP32[((60)>>2)]=$1012;
- var $1031=$1030|1;
- var $_sum44_i_i=((($_sum_i19_i)+(4))|0);
- var $1032=(($tbase_245_i+$_sum44_i_i)|0);
- var $1033=$1032;
- HEAP32[(($1033)>>2)]=$1031;
- var $_sum45_i_i=((($1030)+($_sum_i19_i))|0);
- var $1034=(($tbase_245_i+$_sum45_i_i)|0);
- var $1035=$1034;
- HEAP32[(($1035)>>2)]=$1030;
- label=303;break;
- case 232:
- var $_sum2_i21_i=((($tsize_244_i)+(4))|0);
- var $_sum104_i=((($_sum2_i21_i)+($1005))|0);
- var $1037=(($tbase_245_i+$_sum104_i)|0);
- var $1038=$1037;
- var $1039=HEAP32[(($1038)>>2)];
- var $1040=$1039&3;
- var $1041=($1040|0)==1;
- if($1041){label=233;break;}else{var $oldfirst_0_i_i=$1007;var $qsize_0_i_i=$1013;label=280;break;}
- case 233:
- var $1043=$1039&-8;
- var $1044=$1039>>>3;
- var $1045=($1039>>>0)<256;
- if($1045){label=234;break;}else{label=246;break;}
- case 234:
- var $_sum3940_i_i=$1005|8;
- var $_sum114_i=((($_sum3940_i_i)+($tsize_244_i))|0);
- var $1047=(($tbase_245_i+$_sum114_i)|0);
- var $1048=$1047;
- var $1049=HEAP32[(($1048)>>2)];
- var $_sum41_i_i=((($tsize_244_i)+(12))|0);
- var $_sum115_i=((($_sum41_i_i)+($1005))|0);
- var $1050=(($tbase_245_i+$_sum115_i)|0);
- var $1051=$1050;
- var $1052=HEAP32[(($1051)>>2)];
- var $1053=$1044<<1;
- var $1054=((80+($1053<<2))|0);
- var $1055=$1054;
- var $1056=($1049|0)==($1055|0);
- if($1056){label=237;break;}else{label=235;break;}
- case 235:
- var $1058=$1049;
- var $1059=HEAP32[((56)>>2)];
- var $1060=($1058>>>0)<($1059>>>0);
- if($1060){label=245;break;}else{label=236;break;}
- case 236:
- var $1062=(($1049+12)|0);
- var $1063=HEAP32[(($1062)>>2)];
- var $1064=($1063|0)==($1007|0);
- if($1064){label=237;break;}else{label=245;break;}
- case 237:
- var $1065=($1052|0)==($1049|0);
- if($1065){label=238;break;}else{label=239;break;}
- case 238:
- var $1067=1<<$1044;
- var $1068=$1067^-1;
- var $1069=HEAP32[((40)>>2)];
- var $1070=$1069&$1068;
- HEAP32[((40)>>2)]=$1070;
- label=279;break;
- case 239:
- var $1072=($1052|0)==($1055|0);
- if($1072){label=240;break;}else{label=241;break;}
- case 240:
- var $_pre62_i_i=(($1052+8)|0);
- var $_pre_phi63_i_i=$_pre62_i_i;label=243;break;
- case 241:
- var $1074=$1052;
- var $1075=HEAP32[((56)>>2)];
- var $1076=($1074>>>0)<($1075>>>0);
- if($1076){label=244;break;}else{label=242;break;}
- case 242:
- var $1078=(($1052+8)|0);
- var $1079=HEAP32[(($1078)>>2)];
- var $1080=($1079|0)==($1007|0);
- if($1080){var $_pre_phi63_i_i=$1078;label=243;break;}else{label=244;break;}
- case 243:
- var $_pre_phi63_i_i;
- var $1081=(($1049+12)|0);
- HEAP32[(($1081)>>2)]=$1052;
- HEAP32[(($_pre_phi63_i_i)>>2)]=$1049;
- label=279;break;
- case 244:
- _abort();
- throw "Reached an unreachable!";
- case 245:
- _abort();
- throw "Reached an unreachable!";
- case 246:
- var $1083=$1006;
- var $_sum34_i_i=$1005|24;
- var $_sum105_i=((($_sum34_i_i)+($tsize_244_i))|0);
- var $1084=(($tbase_245_i+$_sum105_i)|0);
- var $1085=$1084;
- var $1086=HEAP32[(($1085)>>2)];
- var $_sum5_i_i=((($tsize_244_i)+(12))|0);
- var $_sum106_i=((($_sum5_i_i)+($1005))|0);
- var $1087=(($tbase_245_i+$_sum106_i)|0);
- var $1088=$1087;
- var $1089=HEAP32[(($1088)>>2)];
- var $1090=($1089|0)==($1083|0);
- if($1090){label=252;break;}else{label=247;break;}
- case 247:
- var $_sum3637_i_i=$1005|8;
- var $_sum107_i=((($_sum3637_i_i)+($tsize_244_i))|0);
- var $1092=(($tbase_245_i+$_sum107_i)|0);
- var $1093=$1092;
- var $1094=HEAP32[(($1093)>>2)];
- var $1095=$1094;
- var $1096=HEAP32[((56)>>2)];
- var $1097=($1095>>>0)<($1096>>>0);
- if($1097){label=251;break;}else{label=248;break;}
- case 248:
- var $1099=(($1094+12)|0);
- var $1100=HEAP32[(($1099)>>2)];
- var $1101=($1100|0)==($1083|0);
- if($1101){label=249;break;}else{label=251;break;}
- case 249:
- var $1103=(($1089+8)|0);
- var $1104=HEAP32[(($1103)>>2)];
- var $1105=($1104|0)==($1083|0);
- if($1105){label=250;break;}else{label=251;break;}
- case 250:
- HEAP32[(($1099)>>2)]=$1089;
- HEAP32[(($1103)>>2)]=$1094;
- var $R_1_i_i=$1089;label=259;break;
- case 251:
- _abort();
- throw "Reached an unreachable!";
- case 252:
- var $_sum67_i_i=$1005|16;
- var $_sum112_i=((($_sum2_i21_i)+($_sum67_i_i))|0);
- var $1108=(($tbase_245_i+$_sum112_i)|0);
- var $1109=$1108;
- var $1110=HEAP32[(($1109)>>2)];
- var $1111=($1110|0)==0;
- if($1111){label=253;break;}else{var $R_0_i_i=$1110;var $RP_0_i_i=$1109;label=254;break;}
- case 253:
- var $_sum113_i=((($_sum67_i_i)+($tsize_244_i))|0);
- var $1113=(($tbase_245_i+$_sum113_i)|0);
- var $1114=$1113;
- var $1115=HEAP32[(($1114)>>2)];
- var $1116=($1115|0)==0;
- if($1116){var $R_1_i_i=0;label=259;break;}else{var $R_0_i_i=$1115;var $RP_0_i_i=$1114;label=254;break;}
- case 254:
- var $RP_0_i_i;
- var $R_0_i_i;
- var $1117=(($R_0_i_i+20)|0);
- var $1118=HEAP32[(($1117)>>2)];
- var $1119=($1118|0)==0;
- if($1119){label=255;break;}else{var $R_0_i_i=$1118;var $RP_0_i_i=$1117;label=254;break;}
- case 255:
- var $1121=(($R_0_i_i+16)|0);
- var $1122=HEAP32[(($1121)>>2)];
- var $1123=($1122|0)==0;
- if($1123){label=256;break;}else{var $R_0_i_i=$1122;var $RP_0_i_i=$1121;label=254;break;}
- case 256:
- var $1125=$RP_0_i_i;
- var $1126=HEAP32[((56)>>2)];
- var $1127=($1125>>>0)<($1126>>>0);
- if($1127){label=258;break;}else{label=257;break;}
- case 257:
- HEAP32[(($RP_0_i_i)>>2)]=0;
- var $R_1_i_i=$R_0_i_i;label=259;break;
- case 258:
- _abort();
- throw "Reached an unreachable!";
- case 259:
- var $R_1_i_i;
- var $1131=($1086|0)==0;
- if($1131){label=279;break;}else{label=260;break;}
- case 260:
- var $_sum31_i_i=((($tsize_244_i)+(28))|0);
- var $_sum108_i=((($_sum31_i_i)+($1005))|0);
- var $1133=(($tbase_245_i+$_sum108_i)|0);
- var $1134=$1133;
- var $1135=HEAP32[(($1134)>>2)];
- var $1136=((344+($1135<<2))|0);
- var $1137=HEAP32[(($1136)>>2)];
- var $1138=($1083|0)==($1137|0);
- if($1138){label=261;break;}else{label=263;break;}
- case 261:
- HEAP32[(($1136)>>2)]=$R_1_i_i;
- var $cond_i_i=($R_1_i_i|0)==0;
- if($cond_i_i){label=262;break;}else{label=269;break;}
- case 262:
- var $1140=HEAP32[(($1134)>>2)];
- var $1141=1<<$1140;
- var $1142=$1141^-1;
- var $1143=HEAP32[((44)>>2)];
- var $1144=$1143&$1142;
- HEAP32[((44)>>2)]=$1144;
- label=279;break;
- case 263:
- var $1146=$1086;
- var $1147=HEAP32[((56)>>2)];
- var $1148=($1146>>>0)<($1147>>>0);
- if($1148){label=267;break;}else{label=264;break;}
- case 264:
- var $1150=(($1086+16)|0);
- var $1151=HEAP32[(($1150)>>2)];
- var $1152=($1151|0)==($1083|0);
- if($1152){label=265;break;}else{label=266;break;}
- case 265:
- HEAP32[(($1150)>>2)]=$R_1_i_i;
- label=268;break;
- case 266:
- var $1155=(($1086+20)|0);
- HEAP32[(($1155)>>2)]=$R_1_i_i;
- label=268;break;
- case 267:
- _abort();
- throw "Reached an unreachable!";
- case 268:
- var $1158=($R_1_i_i|0)==0;
- if($1158){label=279;break;}else{label=269;break;}
- case 269:
- var $1160=$R_1_i_i;
- var $1161=HEAP32[((56)>>2)];
- var $1162=($1160>>>0)<($1161>>>0);
- if($1162){label=278;break;}else{label=270;break;}
- case 270:
- var $1164=(($R_1_i_i+24)|0);
- HEAP32[(($1164)>>2)]=$1086;
- var $_sum3233_i_i=$1005|16;
- var $_sum109_i=((($_sum3233_i_i)+($tsize_244_i))|0);
- var $1165=(($tbase_245_i+$_sum109_i)|0);
- var $1166=$1165;
- var $1167=HEAP32[(($1166)>>2)];
- var $1168=($1167|0)==0;
- if($1168){label=274;break;}else{label=271;break;}
- case 271:
- var $1170=$1167;
- var $1171=HEAP32[((56)>>2)];
- var $1172=($1170>>>0)<($1171>>>0);
- if($1172){label=273;break;}else{label=272;break;}
- case 272:
- var $1174=(($R_1_i_i+16)|0);
- HEAP32[(($1174)>>2)]=$1167;
- var $1175=(($1167+24)|0);
- HEAP32[(($1175)>>2)]=$R_1_i_i;
- label=274;break;
- case 273:
- _abort();
- throw "Reached an unreachable!";
- case 274:
- var $_sum110_i=((($_sum2_i21_i)+($_sum3233_i_i))|0);
- var $1178=(($tbase_245_i+$_sum110_i)|0);
- var $1179=$1178;
- var $1180=HEAP32[(($1179)>>2)];
- var $1181=($1180|0)==0;
- if($1181){label=279;break;}else{label=275;break;}
- case 275:
- var $1183=$1180;
- var $1184=HEAP32[((56)>>2)];
- var $1185=($1183>>>0)<($1184>>>0);
- if($1185){label=277;break;}else{label=276;break;}
- case 276:
- var $1187=(($R_1_i_i+20)|0);
- HEAP32[(($1187)>>2)]=$1180;
- var $1188=(($1180+24)|0);
- HEAP32[(($1188)>>2)]=$R_1_i_i;
- label=279;break;
- case 277:
- _abort();
- throw "Reached an unreachable!";
- case 278:
- _abort();
- throw "Reached an unreachable!";
- case 279:
- var $_sum9_i_i=$1043|$1005;
- var $_sum111_i=((($_sum9_i_i)+($tsize_244_i))|0);
- var $1192=(($tbase_245_i+$_sum111_i)|0);
- var $1193=$1192;
- var $1194=((($1043)+($1013))|0);
- var $oldfirst_0_i_i=$1193;var $qsize_0_i_i=$1194;label=280;break;
- case 280:
- var $qsize_0_i_i;
- var $oldfirst_0_i_i;
- var $1196=(($oldfirst_0_i_i+4)|0);
- var $1197=HEAP32[(($1196)>>2)];
- var $1198=$1197&-2;
- HEAP32[(($1196)>>2)]=$1198;
- var $1199=$qsize_0_i_i|1;
- var $_sum10_i_i=((($_sum_i19_i)+(4))|0);
- var $1200=(($tbase_245_i+$_sum10_i_i)|0);
- var $1201=$1200;
- HEAP32[(($1201)>>2)]=$1199;
- var $_sum11_i_i=((($qsize_0_i_i)+($_sum_i19_i))|0);
- var $1202=(($tbase_245_i+$_sum11_i_i)|0);
- var $1203=$1202;
- HEAP32[(($1203)>>2)]=$qsize_0_i_i;
- var $1204=$qsize_0_i_i>>>3;
- var $1205=($qsize_0_i_i>>>0)<256;
- if($1205){label=281;break;}else{label=286;break;}
- case 281:
- var $1207=$1204<<1;
- var $1208=((80+($1207<<2))|0);
- var $1209=$1208;
- var $1210=HEAP32[((40)>>2)];
- var $1211=1<<$1204;
- var $1212=$1210&$1211;
- var $1213=($1212|0)==0;
- if($1213){label=282;break;}else{label=283;break;}
- case 282:
- var $1215=$1210|$1211;
- HEAP32[((40)>>2)]=$1215;
- var $_sum27_pre_i_i=((($1207)+(2))|0);
- var $_pre_i22_i=((80+($_sum27_pre_i_i<<2))|0);
- var $F4_0_i_i=$1209;var $_pre_phi_i23_i=$_pre_i22_i;label=285;break;
- case 283:
- var $_sum30_i_i=((($1207)+(2))|0);
- var $1217=((80+($_sum30_i_i<<2))|0);
- var $1218=HEAP32[(($1217)>>2)];
- var $1219=$1218;
- var $1220=HEAP32[((56)>>2)];
- var $1221=($1219>>>0)<($1220>>>0);
- if($1221){label=284;break;}else{var $F4_0_i_i=$1218;var $_pre_phi_i23_i=$1217;label=285;break;}
- case 284:
- _abort();
- throw "Reached an unreachable!";
- case 285:
- var $_pre_phi_i23_i;
- var $F4_0_i_i;
- HEAP32[(($_pre_phi_i23_i)>>2)]=$1012;
- var $1224=(($F4_0_i_i+12)|0);
- HEAP32[(($1224)>>2)]=$1012;
- var $_sum28_i_i=((($_sum_i19_i)+(8))|0);
- var $1225=(($tbase_245_i+$_sum28_i_i)|0);
- var $1226=$1225;
- HEAP32[(($1226)>>2)]=$F4_0_i_i;
- var $_sum29_i_i=((($_sum_i19_i)+(12))|0);
- var $1227=(($tbase_245_i+$_sum29_i_i)|0);
- var $1228=$1227;
- HEAP32[(($1228)>>2)]=$1209;
- label=303;break;
- case 286:
- var $1230=$1011;
- var $1231=$qsize_0_i_i>>>8;
- var $1232=($1231|0)==0;
- if($1232){var $I7_0_i_i=0;label=289;break;}else{label=287;break;}
- case 287:
- var $1234=($qsize_0_i_i>>>0)>16777215;
- if($1234){var $I7_0_i_i=31;label=289;break;}else{label=288;break;}
- case 288:
- var $1236=((($1231)+(1048320))|0);
- var $1237=$1236>>>16;
- var $1238=$1237&8;
- var $1239=$1231<<$1238;
- var $1240=((($1239)+(520192))|0);
- var $1241=$1240>>>16;
- var $1242=$1241&4;
- var $1243=$1242|$1238;
- var $1244=$1239<<$1242;
- var $1245=((($1244)+(245760))|0);
- var $1246=$1245>>>16;
- var $1247=$1246&2;
- var $1248=$1243|$1247;
- var $1249=(((14)-($1248))|0);
- var $1250=$1244<<$1247;
- var $1251=$1250>>>15;
- var $1252=((($1249)+($1251))|0);
- var $1253=$1252<<1;
- var $1254=((($1252)+(7))|0);
- var $1255=$qsize_0_i_i>>>($1254>>>0);
- var $1256=$1255&1;
- var $1257=$1256|$1253;
- var $I7_0_i_i=$1257;label=289;break;
- case 289:
- var $I7_0_i_i;
- var $1259=((344+($I7_0_i_i<<2))|0);
- var $_sum12_i24_i=((($_sum_i19_i)+(28))|0);
- var $1260=(($tbase_245_i+$_sum12_i24_i)|0);
- var $1261=$1260;
- HEAP32[(($1261)>>2)]=$I7_0_i_i;
- var $_sum13_i_i=((($_sum_i19_i)+(16))|0);
- var $1262=(($tbase_245_i+$_sum13_i_i)|0);
- var $_sum14_i_i=((($_sum_i19_i)+(20))|0);
- var $1263=(($tbase_245_i+$_sum14_i_i)|0);
- var $1264=$1263;
- HEAP32[(($1264)>>2)]=0;
- var $1265=$1262;
- HEAP32[(($1265)>>2)]=0;
- var $1266=HEAP32[((44)>>2)];
- var $1267=1<<$I7_0_i_i;
- var $1268=$1266&$1267;
- var $1269=($1268|0)==0;
- if($1269){label=290;break;}else{label=291;break;}
- case 290:
- var $1271=$1266|$1267;
- HEAP32[((44)>>2)]=$1271;
- HEAP32[(($1259)>>2)]=$1230;
- var $1272=$1259;
- var $_sum15_i_i=((($_sum_i19_i)+(24))|0);
- var $1273=(($tbase_245_i+$_sum15_i_i)|0);
- var $1274=$1273;
- HEAP32[(($1274)>>2)]=$1272;
- var $_sum16_i_i=((($_sum_i19_i)+(12))|0);
- var $1275=(($tbase_245_i+$_sum16_i_i)|0);
- var $1276=$1275;
- HEAP32[(($1276)>>2)]=$1230;
- var $_sum17_i_i=((($_sum_i19_i)+(8))|0);
- var $1277=(($tbase_245_i+$_sum17_i_i)|0);
- var $1278=$1277;
- HEAP32[(($1278)>>2)]=$1230;
- label=303;break;
- case 291:
- var $1280=HEAP32[(($1259)>>2)];
- var $1281=($I7_0_i_i|0)==31;
- if($1281){var $1286=0;label=293;break;}else{label=292;break;}
- case 292:
- var $1283=$I7_0_i_i>>>1;
- var $1284=(((25)-($1283))|0);
- var $1286=$1284;label=293;break;
- case 293:
- var $1286;
- var $1287=(($1280+4)|0);
- var $1288=HEAP32[(($1287)>>2)];
- var $1289=$1288&-8;
- var $1290=($1289|0)==($qsize_0_i_i|0);
- if($1290){var $T_0_lcssa_i26_i=$1280;label=300;break;}else{label=294;break;}
- case 294:
- var $1291=$qsize_0_i_i<<$1286;
- var $T_056_i_i=$1280;var $K8_057_i_i=$1291;label=296;break;
- case 295:
- var $1293=$K8_057_i_i<<1;
- var $1294=(($1301+4)|0);
- var $1295=HEAP32[(($1294)>>2)];
- var $1296=$1295&-8;
- var $1297=($1296|0)==($qsize_0_i_i|0);
- if($1297){var $T_0_lcssa_i26_i=$1301;label=300;break;}else{var $T_056_i_i=$1301;var $K8_057_i_i=$1293;label=296;break;}
- case 296:
- var $K8_057_i_i;
- var $T_056_i_i;
- var $1299=$K8_057_i_i>>>31;
- var $1300=(($T_056_i_i+16+($1299<<2))|0);
- var $1301=HEAP32[(($1300)>>2)];
- var $1302=($1301|0)==0;
- if($1302){label=297;break;}else{label=295;break;}
- case 297:
- var $1304=$1300;
- var $1305=HEAP32[((56)>>2)];
- var $1306=($1304>>>0)<($1305>>>0);
- if($1306){label=299;break;}else{label=298;break;}
- case 298:
- HEAP32[(($1300)>>2)]=$1230;
- var $_sum24_i_i=((($_sum_i19_i)+(24))|0);
- var $1308=(($tbase_245_i+$_sum24_i_i)|0);
- var $1309=$1308;
- HEAP32[(($1309)>>2)]=$T_056_i_i;
- var $_sum25_i_i=((($_sum_i19_i)+(12))|0);
- var $1310=(($tbase_245_i+$_sum25_i_i)|0);
- var $1311=$1310;
- HEAP32[(($1311)>>2)]=$1230;
- var $_sum26_i_i=((($_sum_i19_i)+(8))|0);
- var $1312=(($tbase_245_i+$_sum26_i_i)|0);
- var $1313=$1312;
- HEAP32[(($1313)>>2)]=$1230;
- label=303;break;
- case 299:
- _abort();
- throw "Reached an unreachable!";
- case 300:
- var $T_0_lcssa_i26_i;
- var $1315=(($T_0_lcssa_i26_i+8)|0);
- var $1316=HEAP32[(($1315)>>2)];
- var $1317=$T_0_lcssa_i26_i;
- var $1318=HEAP32[((56)>>2)];
- var $1319=($1317>>>0)>=($1318>>>0);
- var $1320=$1316;
- var $1321=($1320>>>0)>=($1318>>>0);
- var $or_cond_i27_i=$1319&$1321;
- if($or_cond_i27_i){label=301;break;}else{label=302;break;}
- case 301:
- var $1323=(($1316+12)|0);
- HEAP32[(($1323)>>2)]=$1230;
- HEAP32[(($1315)>>2)]=$1230;
- var $_sum21_i_i=((($_sum_i19_i)+(8))|0);
- var $1324=(($tbase_245_i+$_sum21_i_i)|0);
- var $1325=$1324;
- HEAP32[(($1325)>>2)]=$1316;
- var $_sum22_i_i=((($_sum_i19_i)+(12))|0);
- var $1326=(($tbase_245_i+$_sum22_i_i)|0);
- var $1327=$1326;
- HEAP32[(($1327)>>2)]=$T_0_lcssa_i26_i;
- var $_sum23_i_i=((($_sum_i19_i)+(24))|0);
- var $1328=(($tbase_245_i+$_sum23_i_i)|0);
- var $1329=$1328;
- HEAP32[(($1329)>>2)]=0;
- label=303;break;
- case 302:
- _abort();
- throw "Reached an unreachable!";
- case 303:
- var $_sum1819_i_i=$995|8;
- var $1330=(($tbase_245_i+$_sum1819_i_i)|0);
- var $mem_0=$1330;label=341;break;
- case 304:
- var $1331=$891;
- var $sp_0_i_i_i=488;label=305;break;
- case 305:
- var $sp_0_i_i_i;
- var $1333=(($sp_0_i_i_i)|0);
- var $1334=HEAP32[(($1333)>>2)];
- var $1335=($1334>>>0)>($1331>>>0);
- if($1335){label=307;break;}else{label=306;break;}
- case 306:
- var $1337=(($sp_0_i_i_i+4)|0);
- var $1338=HEAP32[(($1337)>>2)];
- var $1339=(($1334+$1338)|0);
- var $1340=($1339>>>0)>($1331>>>0);
- if($1340){label=308;break;}else{label=307;break;}
- case 307:
- var $1342=(($sp_0_i_i_i+8)|0);
- var $1343=HEAP32[(($1342)>>2)];
- var $sp_0_i_i_i=$1343;label=305;break;
- case 308:
- var $_sum_i13_i=((($1338)-(47))|0);
- var $_sum1_i14_i=((($1338)-(39))|0);
- var $1344=(($1334+$_sum1_i14_i)|0);
- var $1345=$1344;
- var $1346=$1345&7;
- var $1347=($1346|0)==0;
- if($1347){var $1352=0;label=310;break;}else{label=309;break;}
- case 309:
- var $1349=(((-$1345))|0);
- var $1350=$1349&7;
- var $1352=$1350;label=310;break;
- case 310:
- var $1352;
- var $_sum2_i15_i=((($_sum_i13_i)+($1352))|0);
- var $1353=(($1334+$_sum2_i15_i)|0);
- var $1354=(($891+16)|0);
- var $1355=$1354;
- var $1356=($1353>>>0)<($1355>>>0);
- var $1357=($1356?$1331:$1353);
- var $1358=(($1357+8)|0);
- var $1359=$1358;
- var $1360=((($tsize_244_i)-(40))|0);
- var $1361=(($tbase_245_i+8)|0);
- var $1362=$1361;
- var $1363=$1362&7;
- var $1364=($1363|0)==0;
- if($1364){var $1368=0;label=312;break;}else{label=311;break;}
- case 311:
- var $1366=(((-$1362))|0);
- var $1367=$1366&7;
- var $1368=$1367;label=312;break;
- case 312:
- var $1368;
- var $1369=(($tbase_245_i+$1368)|0);
- var $1370=$1369;
- var $1371=((($1360)-($1368))|0);
- HEAP32[((64)>>2)]=$1370;
- HEAP32[((52)>>2)]=$1371;
- var $1372=$1371|1;
- var $_sum_i_i_i=((($1368)+(4))|0);
- var $1373=(($tbase_245_i+$_sum_i_i_i)|0);
- var $1374=$1373;
- HEAP32[(($1374)>>2)]=$1372;
- var $_sum2_i_i_i=((($tsize_244_i)-(36))|0);
- var $1375=(($tbase_245_i+$_sum2_i_i_i)|0);
- var $1376=$1375;
- HEAP32[(($1376)>>2)]=40;
- var $1377=HEAP32[((32)>>2)];
- HEAP32[((68)>>2)]=$1377;
- var $1378=(($1357+4)|0);
- var $1379=$1378;
- HEAP32[(($1379)>>2)]=27;
- assert(16 % 1 === 0);HEAP32[(($1358)>>2)]=HEAP32[((488)>>2)];HEAP32[((($1358)+(4))>>2)]=HEAP32[((492)>>2)];HEAP32[((($1358)+(8))>>2)]=HEAP32[((496)>>2)];HEAP32[((($1358)+(12))>>2)]=HEAP32[((500)>>2)];
- HEAP32[((488)>>2)]=$tbase_245_i;
- HEAP32[((492)>>2)]=$tsize_244_i;
- HEAP32[((500)>>2)]=0;
- HEAP32[((496)>>2)]=$1359;
- var $1380=(($1357+28)|0);
- var $1381=$1380;
- HEAP32[(($1381)>>2)]=7;
- var $1382=(($1357+32)|0);
- var $1383=($1382>>>0)<($1339>>>0);
- if($1383){var $1384=$1381;label=313;break;}else{label=314;break;}
- case 313:
- var $1384;
- var $1385=(($1384+4)|0);
- HEAP32[(($1385)>>2)]=7;
- var $1386=(($1384+8)|0);
- var $1387=$1386;
- var $1388=($1387>>>0)<($1339>>>0);
- if($1388){var $1384=$1385;label=313;break;}else{label=314;break;}
- case 314:
- var $1389=($1357|0)==($1331|0);
- if($1389){label=338;break;}else{label=315;break;}
- case 315:
- var $1391=$1357;
- var $1392=$891;
- var $1393=((($1391)-($1392))|0);
- var $1394=(($1331+$1393)|0);
- var $_sum3_i_i=((($1393)+(4))|0);
- var $1395=(($1331+$_sum3_i_i)|0);
- var $1396=$1395;
- var $1397=HEAP32[(($1396)>>2)];
- var $1398=$1397&-2;
- HEAP32[(($1396)>>2)]=$1398;
- var $1399=$1393|1;
- var $1400=(($891+4)|0);
- HEAP32[(($1400)>>2)]=$1399;
- var $1401=$1394;
- HEAP32[(($1401)>>2)]=$1393;
- var $1402=$1393>>>3;
- var $1403=($1393>>>0)<256;
- if($1403){label=316;break;}else{label=321;break;}
- case 316:
- var $1405=$1402<<1;
- var $1406=((80+($1405<<2))|0);
- var $1407=$1406;
- var $1408=HEAP32[((40)>>2)];
- var $1409=1<<$1402;
- var $1410=$1408&$1409;
- var $1411=($1410|0)==0;
- if($1411){label=317;break;}else{label=318;break;}
- case 317:
- var $1413=$1408|$1409;
- HEAP32[((40)>>2)]=$1413;
- var $_sum11_pre_i_i=((($1405)+(2))|0);
- var $_pre_i_i=((80+($_sum11_pre_i_i<<2))|0);
- var $F_0_i_i=$1407;var $_pre_phi_i_i=$_pre_i_i;label=320;break;
- case 318:
- var $_sum12_i_i=((($1405)+(2))|0);
- var $1415=((80+($_sum12_i_i<<2))|0);
- var $1416=HEAP32[(($1415)>>2)];
- var $1417=$1416;
- var $1418=HEAP32[((56)>>2)];
- var $1419=($1417>>>0)<($1418>>>0);
- if($1419){label=319;break;}else{var $F_0_i_i=$1416;var $_pre_phi_i_i=$1415;label=320;break;}
- case 319:
- _abort();
- throw "Reached an unreachable!";
- case 320:
- var $_pre_phi_i_i;
- var $F_0_i_i;
- HEAP32[(($_pre_phi_i_i)>>2)]=$891;
- var $1422=(($F_0_i_i+12)|0);
- HEAP32[(($1422)>>2)]=$891;
- var $1423=(($891+8)|0);
- HEAP32[(($1423)>>2)]=$F_0_i_i;
- var $1424=(($891+12)|0);
- HEAP32[(($1424)>>2)]=$1407;
- label=338;break;
- case 321:
- var $1426=$891;
- var $1427=$1393>>>8;
- var $1428=($1427|0)==0;
- if($1428){var $I1_0_i_i=0;label=324;break;}else{label=322;break;}
- case 322:
- var $1430=($1393>>>0)>16777215;
- if($1430){var $I1_0_i_i=31;label=324;break;}else{label=323;break;}
- case 323:
- var $1432=((($1427)+(1048320))|0);
- var $1433=$1432>>>16;
- var $1434=$1433&8;
- var $1435=$1427<<$1434;
- var $1436=((($1435)+(520192))|0);
- var $1437=$1436>>>16;
- var $1438=$1437&4;
- var $1439=$1438|$1434;
- var $1440=$1435<<$1438;
- var $1441=((($1440)+(245760))|0);
- var $1442=$1441>>>16;
- var $1443=$1442&2;
- var $1444=$1439|$1443;
- var $1445=(((14)-($1444))|0);
- var $1446=$1440<<$1443;
- var $1447=$1446>>>15;
- var $1448=((($1445)+($1447))|0);
- var $1449=$1448<<1;
- var $1450=((($1448)+(7))|0);
- var $1451=$1393>>>($1450>>>0);
- var $1452=$1451&1;
- var $1453=$1452|$1449;
- var $I1_0_i_i=$1453;label=324;break;
- case 324:
- var $I1_0_i_i;
- var $1455=((344+($I1_0_i_i<<2))|0);
- var $1456=(($891+28)|0);
- var $I1_0_c_i_i=$I1_0_i_i;
- HEAP32[(($1456)>>2)]=$I1_0_c_i_i;
- var $1457=(($891+20)|0);
- HEAP32[(($1457)>>2)]=0;
- var $1458=(($891+16)|0);
- HEAP32[(($1458)>>2)]=0;
- var $1459=HEAP32[((44)>>2)];
- var $1460=1<<$I1_0_i_i;
- var $1461=$1459&$1460;
- var $1462=($1461|0)==0;
- if($1462){label=325;break;}else{label=326;break;}
- case 325:
- var $1464=$1459|$1460;
- HEAP32[((44)>>2)]=$1464;
- HEAP32[(($1455)>>2)]=$1426;
- var $1465=(($891+24)|0);
- var $_c_i_i=$1455;
- HEAP32[(($1465)>>2)]=$_c_i_i;
- var $1466=(($891+12)|0);
- HEAP32[(($1466)>>2)]=$891;
- var $1467=(($891+8)|0);
- HEAP32[(($1467)>>2)]=$891;
- label=338;break;
- case 326:
- var $1469=HEAP32[(($1455)>>2)];
- var $1470=($I1_0_i_i|0)==31;
- if($1470){var $1475=0;label=328;break;}else{label=327;break;}
- case 327:
- var $1472=$I1_0_i_i>>>1;
- var $1473=(((25)-($1472))|0);
- var $1475=$1473;label=328;break;
- case 328:
- var $1475;
- var $1476=(($1469+4)|0);
- var $1477=HEAP32[(($1476)>>2)];
- var $1478=$1477&-8;
- var $1479=($1478|0)==($1393|0);
- if($1479){var $T_0_lcssa_i_i=$1469;label=335;break;}else{label=329;break;}
- case 329:
- var $1480=$1393<<$1475;
- var $T_015_i_i=$1469;var $K2_016_i_i=$1480;label=331;break;
- case 330:
- var $1482=$K2_016_i_i<<1;
- var $1483=(($1490+4)|0);
- var $1484=HEAP32[(($1483)>>2)];
- var $1485=$1484&-8;
- var $1486=($1485|0)==($1393|0);
- if($1486){var $T_0_lcssa_i_i=$1490;label=335;break;}else{var $T_015_i_i=$1490;var $K2_016_i_i=$1482;label=331;break;}
- case 331:
- var $K2_016_i_i;
- var $T_015_i_i;
- var $1488=$K2_016_i_i>>>31;
- var $1489=(($T_015_i_i+16+($1488<<2))|0);
- var $1490=HEAP32[(($1489)>>2)];
- var $1491=($1490|0)==0;
- if($1491){label=332;break;}else{label=330;break;}
- case 332:
- var $1493=$1489;
- var $1494=HEAP32[((56)>>2)];
- var $1495=($1493>>>0)<($1494>>>0);
- if($1495){label=334;break;}else{label=333;break;}
- case 333:
- HEAP32[(($1489)>>2)]=$1426;
- var $1497=(($891+24)|0);
- var $T_0_c8_i_i=$T_015_i_i;
- HEAP32[(($1497)>>2)]=$T_0_c8_i_i;
- var $1498=(($891+12)|0);
- HEAP32[(($1498)>>2)]=$891;
- var $1499=(($891+8)|0);
- HEAP32[(($1499)>>2)]=$891;
- label=338;break;
- case 334:
- _abort();
- throw "Reached an unreachable!";
- case 335:
- var $T_0_lcssa_i_i;
- var $1501=(($T_0_lcssa_i_i+8)|0);
- var $1502=HEAP32[(($1501)>>2)];
- var $1503=$T_0_lcssa_i_i;
- var $1504=HEAP32[((56)>>2)];
- var $1505=($1503>>>0)>=($1504>>>0);
- var $1506=$1502;
- var $1507=($1506>>>0)>=($1504>>>0);
- var $or_cond_i_i=$1505&$1507;
- if($or_cond_i_i){label=336;break;}else{label=337;break;}
- case 336:
- var $1509=(($1502+12)|0);
- HEAP32[(($1509)>>2)]=$1426;
- HEAP32[(($1501)>>2)]=$1426;
- var $1510=(($891+8)|0);
- var $_c7_i_i=$1502;
- HEAP32[(($1510)>>2)]=$_c7_i_i;
- var $1511=(($891+12)|0);
- var $T_0_c_i_i=$T_0_lcssa_i_i;
- HEAP32[(($1511)>>2)]=$T_0_c_i_i;
- var $1512=(($891+24)|0);
- HEAP32[(($1512)>>2)]=0;
- label=338;break;
- case 337:
- _abort();
- throw "Reached an unreachable!";
- case 338:
- var $1513=HEAP32[((52)>>2)];
- var $1514=($1513>>>0)>($nb_0>>>0);
- if($1514){label=339;break;}else{label=340;break;}
- case 339:
- var $1516=((($1513)-($nb_0))|0);
- HEAP32[((52)>>2)]=$1516;
- var $1517=HEAP32[((64)>>2)];
- var $1518=$1517;
- var $1519=(($1518+$nb_0)|0);
- var $1520=$1519;
- HEAP32[((64)>>2)]=$1520;
- var $1521=$1516|1;
- var $_sum_i34=((($nb_0)+(4))|0);
- var $1522=(($1518+$_sum_i34)|0);
- var $1523=$1522;
- HEAP32[(($1523)>>2)]=$1521;
- var $1524=$nb_0|3;
- var $1525=(($1517+4)|0);
- HEAP32[(($1525)>>2)]=$1524;
- var $1526=(($1517+8)|0);
- var $1527=$1526;
- var $mem_0=$1527;label=341;break;
- case 340:
- var $1528=___errno_location();
- HEAP32[(($1528)>>2)]=12;
- var $mem_0=0;label=341;break;
- case 341:
- var $mem_0;
- return $mem_0;
- default: assert(0, "bad label: " + label);
- }
- }
- Module["_malloc"] = _malloc;
- function _free($mem){
- var label=0;
- label = 1;
- while(1)switch(label){
- case 1:
- var $1=($mem|0)==0;
- if($1){label=140;break;}else{label=2;break;}
- case 2:
- var $3=((($mem)-(8))|0);
- var $4=$3;
- var $5=HEAP32[((56)>>2)];
- var $6=($3>>>0)<($5>>>0);
- if($6){label=139;break;}else{label=3;break;}
- case 3:
- var $8=((($mem)-(4))|0);
- var $9=$8;
- var $10=HEAP32[(($9)>>2)];
- var $11=$10&3;
- var $12=($11|0)==1;
- if($12){label=139;break;}else{label=4;break;}
- case 4:
- var $14=$10&-8;
- var $_sum=((($14)-(8))|0);
- var $15=(($mem+$_sum)|0);
- var $16=$15;
- var $17=$10&1;
- var $18=($17|0)==0;
- if($18){label=5;break;}else{var $p_0=$4;var $psize_0=$14;label=56;break;}
- case 5:
- var $20=$3;
- var $21=HEAP32[(($20)>>2)];
- var $22=($11|0)==0;
- if($22){label=140;break;}else{label=6;break;}
- case 6:
- var $_sum3=(((-8)-($21))|0);
- var $24=(($mem+$_sum3)|0);
- var $25=$24;
- var $26=((($21)+($14))|0);
- var $27=($24>>>0)<($5>>>0);
- if($27){label=139;break;}else{label=7;break;}
- case 7:
- var $29=HEAP32[((60)>>2)];
- var $30=($25|0)==($29|0);
- if($30){label=54;break;}else{label=8;break;}
- case 8:
- var $32=$21>>>3;
- var $33=($21>>>0)<256;
- if($33){label=9;break;}else{label=21;break;}
- case 9:
- var $_sum47=((($_sum3)+(8))|0);
- var $35=(($mem+$_sum47)|0);
- var $36=$35;
- var $37=HEAP32[(($36)>>2)];
- var $_sum48=((($_sum3)+(12))|0);
- var $38=(($mem+$_sum48)|0);
- var $39=$38;
- var $40=HEAP32[(($39)>>2)];
- var $41=$32<<1;
- var $42=((80+($41<<2))|0);
- var $43=$42;
- var $44=($37|0)==($43|0);
- if($44){label=12;break;}else{label=10;break;}
- case 10:
- var $46=$37;
- var $47=($46>>>0)<($5>>>0);
- if($47){label=20;break;}else{label=11;break;}
- case 11:
- var $49=(($37+12)|0);
- var $50=HEAP32[(($49)>>2)];
- var $51=($50|0)==($25|0);
- if($51){label=12;break;}else{label=20;break;}
- case 12:
- var $52=($40|0)==($37|0);
- if($52){label=13;break;}else{label=14;break;}
- case 13:
- var $54=1<<$32;
- var $55=$54^-1;
- var $56=HEAP32[((40)>>2)];
- var $57=$56&$55;
- HEAP32[((40)>>2)]=$57;
- var $p_0=$25;var $psize_0=$26;label=56;break;
- case 14:
- var $59=($40|0)==($43|0);
- if($59){label=15;break;}else{label=16;break;}
- case 15:
- var $_pre82=(($40+8)|0);
- var $_pre_phi83=$_pre82;label=18;break;
- case 16:
- var $61=$40;
- var $62=($61>>>0)<($5>>>0);
- if($62){label=19;break;}else{label=17;break;}
- case 17:
- var $64=(($40+8)|0);
- var $65=HEAP32[(($64)>>2)];
- var $66=($65|0)==($25|0);
- if($66){var $_pre_phi83=$64;label=18;break;}else{label=19;break;}
- case 18:
- var $_pre_phi83;
- var $67=(($37+12)|0);
- HEAP32[(($67)>>2)]=$40;
- HEAP32[(($_pre_phi83)>>2)]=$37;
- var $p_0=$25;var $psize_0=$26;label=56;break;
- case 19:
- _abort();
- throw "Reached an unreachable!";
- case 20:
- _abort();
- throw "Reached an unreachable!";
- case 21:
- var $69=$24;
- var $_sum37=((($_sum3)+(24))|0);
- var $70=(($mem+$_sum37)|0);
- var $71=$70;
- var $72=HEAP32[(($71)>>2)];
- var $_sum38=((($_sum3)+(12))|0);
- var $73=(($mem+$_sum38)|0);
- var $74=$73;
- var $75=HEAP32[(($74)>>2)];
- var $76=($75|0)==($69|0);
- if($76){label=27;break;}else{label=22;break;}
- case 22:
- var $_sum44=((($_sum3)+(8))|0);
- var $78=(($mem+$_sum44)|0);
- var $79=$78;
- var $80=HEAP32[(($79)>>2)];
- var $81=$80;
- var $82=($81>>>0)<($5>>>0);
- if($82){label=26;break;}else{label=23;break;}
- case 23:
- var $84=(($80+12)|0);
- var $85=HEAP32[(($84)>>2)];
- var $86=($85|0)==($69|0);
- if($86){label=24;break;}else{label=26;break;}
- case 24:
- var $88=(($75+8)|0);
- var $89=HEAP32[(($88)>>2)];
- var $90=($89|0)==($69|0);
- if($90){label=25;break;}else{label=26;break;}
- case 25:
- HEAP32[(($84)>>2)]=$75;
- HEAP32[(($88)>>2)]=$80;
- var $R_1=$75;label=34;break;
- case 26:
- _abort();
- throw "Reached an unreachable!";
- case 27:
- var $_sum40=((($_sum3)+(20))|0);
- var $93=(($mem+$_sum40)|0);
- var $94=$93;
- var $95=HEAP32[(($94)>>2)];
- var $96=($95|0)==0;
- if($96){label=28;break;}else{var $R_0=$95;var $RP_0=$94;label=29;break;}
- case 28:
- var $_sum39=((($_sum3)+(16))|0);
- var $98=(($mem+$_sum39)|0);
- var $99=$98;
- var $100=HEAP32[(($99)>>2)];
- var $101=($100|0)==0;
- if($101){var $R_1=0;label=34;break;}else{var $R_0=$100;var $RP_0=$99;label=29;break;}
- case 29:
- var $RP_0;
- var $R_0;
- var $102=(($R_0+20)|0);
- var $103=HEAP32[(($102)>>2)];
- var $104=($103|0)==0;
- if($104){label=30;break;}else{var $R_0=$103;var $RP_0=$102;label=29;break;}
- case 30:
- var $106=(($R_0+16)|0);
- var $107=HEAP32[(($106)>>2)];
- var $108=($107|0)==0;
- if($108){label=31;break;}else{var $R_0=$107;var $RP_0=$106;label=29;break;}
- case 31:
- var $110=$RP_0;
- var $111=($110>>>0)<($5>>>0);
- if($111){label=33;break;}else{label=32;break;}
- case 32:
- HEAP32[(($RP_0)>>2)]=0;
- var $R_1=$R_0;label=34;break;
- case 33:
- _abort();
- throw "Reached an unreachable!";
- case 34:
- var $R_1;
- var $115=($72|0)==0;
- if($115){var $p_0=$25;var $psize_0=$26;label=56;break;}else{label=35;break;}
- case 35:
- var $_sum41=((($_sum3)+(28))|0);
- var $117=(($mem+$_sum41)|0);
- var $118=$117;
- var $119=HEAP32[(($118)>>2)];
- var $120=((344+($119<<2))|0);
- var $121=HEAP32[(($120)>>2)];
- var $122=($69|0)==($121|0);
- if($122){label=36;break;}else{label=38;break;}
- case 36:
- HEAP32[(($120)>>2)]=$R_1;
- var $cond=($R_1|0)==0;
- if($cond){label=37;break;}else{label=44;break;}
- case 37:
- var $124=HEAP32[(($118)>>2)];
- var $125=1<<$124;
- var $126=$125^-1;
- var $127=HEAP32[((44)>>2)];
- var $128=$127&$126;
- HEAP32[((44)>>2)]=$128;
- var $p_0=$25;var $psize_0=$26;label=56;break;
- case 38:
- var $130=$72;
- var $131=HEAP32[((56)>>2)];
- var $132=($130>>>0)<($131>>>0);
- if($132){label=42;break;}else{label=39;break;}
- case 39:
- var $134=(($72+16)|0);
- var $135=HEAP32[(($134)>>2)];
- var $136=($135|0)==($69|0);
- if($136){label=40;break;}else{label=41;break;}
- case 40:
- HEAP32[(($134)>>2)]=$R_1;
- label=43;break;
- case 41:
- var $139=(($72+20)|0);
- HEAP32[(($139)>>2)]=$R_1;
- label=43;break;
- case 42:
- _abort();
- throw "Reached an unreachable!";
- case 43:
- var $142=($R_1|0)==0;
- if($142){var $p_0=$25;var $psize_0=$26;label=56;break;}else{label=44;break;}
- case 44:
- var $144=$R_1;
- var $145=HEAP32[((56)>>2)];
- var $146=($144>>>0)<($145>>>0);
- if($146){label=53;break;}else{label=45;break;}
- case 45:
- var $148=(($R_1+24)|0);
- HEAP32[(($148)>>2)]=$72;
- var $_sum42=((($_sum3)+(16))|0);
- var $149=(($mem+$_sum42)|0);
- var $150=$149;
- var $151=HEAP32[(($150)>>2)];
- var $152=($151|0)==0;
- if($152){label=49;break;}else{label=46;break;}
- case 46:
- var $154=$151;
- var $155=HEAP32[((56)>>2)];
- var $156=($154>>>0)<($155>>>0);
- if($156){label=48;break;}else{label=47;break;}
- case 47:
- var $158=(($R_1+16)|0);
- HEAP32[(($158)>>2)]=$151;
- var $159=(($151+24)|0);
- HEAP32[(($159)>>2)]=$R_1;
- label=49;break;
- case 48:
- _abort();
- throw "Reached an unreachable!";
- case 49:
- var $_sum43=((($_sum3)+(20))|0);
- var $162=(($mem+$_sum43)|0);
- var $163=$162;
- var $164=HEAP32[(($163)>>2)];
- var $165=($164|0)==0;
- if($165){var $p_0=$25;var $psize_0=$26;label=56;break;}else{label=50;break;}
- case 50:
- var $167=$164;
- var $168=HEAP32[((56)>>2)];
- var $169=($167>>>0)<($168>>>0);
- if($169){label=52;break;}else{label=51;break;}
- case 51:
- var $171=(($R_1+20)|0);
- HEAP32[(($171)>>2)]=$164;
- var $172=(($164+24)|0);
- HEAP32[(($172)>>2)]=$R_1;
- var $p_0=$25;var $psize_0=$26;label=56;break;
- case 52:
- _abort();
- throw "Reached an unreachable!";
- case 53:
- _abort();
- throw "Reached an unreachable!";
- case 54:
- var $_sum4=((($14)-(4))|0);
- var $176=(($mem+$_sum4)|0);
- var $177=$176;
- var $178=HEAP32[(($177)>>2)];
- var $179=$178&3;
- var $180=($179|0)==3;
- if($180){label=55;break;}else{var $p_0=$25;var $psize_0=$26;label=56;break;}
- case 55:
- HEAP32[((48)>>2)]=$26;
- var $182=HEAP32[(($177)>>2)];
- var $183=$182&-2;
- HEAP32[(($177)>>2)]=$183;
- var $184=$26|1;
- var $_sum35=((($_sum3)+(4))|0);
- var $185=(($mem+$_sum35)|0);
- var $186=$185;
- HEAP32[(($186)>>2)]=$184;
- var $187=$15;
- HEAP32[(($187)>>2)]=$26;
- label=140;break;
- case 56:
- var $psize_0;
- var $p_0;
- var $189=$p_0;
- var $190=($189>>>0)<($15>>>0);
- if($190){label=57;break;}else{label=139;break;}
- case 57:
- var $_sum34=((($14)-(4))|0);
- var $192=(($mem+$_sum34)|0);
- var $193=$192;
- var $194=HEAP32[(($193)>>2)];
- var $195=$194&1;
- var $phitmp=($195|0)==0;
- if($phitmp){label=139;break;}else{label=58;break;}
- case 58:
- var $197=$194&2;
- var $198=($197|0)==0;
- if($198){label=59;break;}else{label=112;break;}
- case 59:
- var $200=HEAP32[((64)>>2)];
- var $201=($16|0)==($200|0);
- if($201){label=60;break;}else{label=62;break;}
- case 60:
- var $203=HEAP32[((52)>>2)];
- var $204=((($203)+($psize_0))|0);
- HEAP32[((52)>>2)]=$204;
- HEAP32[((64)>>2)]=$p_0;
- var $205=$204|1;
- var $206=(($p_0+4)|0);
- HEAP32[(($206)>>2)]=$205;
- var $207=HEAP32[((60)>>2)];
- var $208=($p_0|0)==($207|0);
- if($208){label=61;break;}else{label=140;break;}
- case 61:
- HEAP32[((60)>>2)]=0;
- HEAP32[((48)>>2)]=0;
- label=140;break;
- case 62:
- var $211=HEAP32[((60)>>2)];
- var $212=($16|0)==($211|0);
- if($212){label=63;break;}else{label=64;break;}
- case 63:
- var $214=HEAP32[((48)>>2)];
- var $215=((($214)+($psize_0))|0);
- HEAP32[((48)>>2)]=$215;
- HEAP32[((60)>>2)]=$p_0;
- var $216=$215|1;
- var $217=(($p_0+4)|0);
- HEAP32[(($217)>>2)]=$216;
- var $218=(($189+$215)|0);
- var $219=$218;
- HEAP32[(($219)>>2)]=$215;
- label=140;break;
- case 64:
- var $221=$194&-8;
- var $222=((($221)+($psize_0))|0);
- var $223=$194>>>3;
- var $224=($194>>>0)<256;
- if($224){label=65;break;}else{label=77;break;}
- case 65:
- var $226=(($mem+$14)|0);
- var $227=$226;
- var $228=HEAP32[(($227)>>2)];
- var $_sum2829=$14|4;
- var $229=(($mem+$_sum2829)|0);
- var $230=$229;
- var $231=HEAP32[(($230)>>2)];
- var $232=$223<<1;
- var $233=((80+($232<<2))|0);
- var $234=$233;
- var $235=($228|0)==($234|0);
- if($235){label=68;break;}else{label=66;break;}
- case 66:
- var $237=$228;
- var $238=HEAP32[((56)>>2)];
- var $239=($237>>>0)<($238>>>0);
- if($239){label=76;break;}else{label=67;break;}
- case 67:
- var $241=(($228+12)|0);
- var $242=HEAP32[(($241)>>2)];
- var $243=($242|0)==($16|0);
- if($243){label=68;break;}else{label=76;break;}
- case 68:
- var $244=($231|0)==($228|0);
- if($244){label=69;break;}else{label=70;break;}
- case 69:
- var $246=1<<$223;
- var $247=$246^-1;
- var $248=HEAP32[((40)>>2)];
- var $249=$248&$247;
- HEAP32[((40)>>2)]=$249;
- label=110;break;
- case 70:
- var $251=($231|0)==($234|0);
- if($251){label=71;break;}else{label=72;break;}
- case 71:
- var $_pre80=(($231+8)|0);
- var $_pre_phi81=$_pre80;label=74;break;
- case 72:
- var $253=$231;
- var $254=HEAP32[((56)>>2)];
- var $255=($253>>>0)<($254>>>0);
- if($255){label=75;break;}else{label=73;break;}
- case 73:
- var $257=(($231+8)|0);
- var $258=HEAP32[(($257)>>2)];
- var $259=($258|0)==($16|0);
- if($259){var $_pre_phi81=$257;label=74;break;}else{label=75;break;}
- case 74:
- var $_pre_phi81;
- var $260=(($228+12)|0);
- HEAP32[(($260)>>2)]=$231;
- HEAP32[(($_pre_phi81)>>2)]=$228;
- label=110;break;
- case 75:
- _abort();
- throw "Reached an unreachable!";
- case 76:
- _abort();
- throw "Reached an unreachable!";
- case 77:
- var $262=$15;
- var $_sum6=((($14)+(16))|0);
- var $263=(($mem+$_sum6)|0);
- var $264=$263;
- var $265=HEAP32[(($264)>>2)];
- var $_sum78=$14|4;
- var $266=(($mem+$_sum78)|0);
- var $267=$266;
- var $268=HEAP32[(($267)>>2)];
- var $269=($268|0)==($262|0);
- if($269){label=83;break;}else{label=78;break;}
- case 78:
- var $271=(($mem+$14)|0);
- var $272=$271;
- var $273=HEAP32[(($272)>>2)];
- var $274=$273;
- var $275=HEAP32[((56)>>2)];
- var $276=($274>>>0)<($275>>>0);
- if($276){label=82;break;}else{label=79;break;}
- case 79:
- var $278=(($273+12)|0);
- var $279=HEAP32[(($278)>>2)];
- var $280=($279|0)==($262|0);
- if($280){label=80;break;}else{label=82;break;}
- case 80:
- var $282=(($268+8)|0);
- var $283=HEAP32[(($282)>>2)];
- var $284=($283|0)==($262|0);
- if($284){label=81;break;}else{label=82;break;}
- case 81:
- HEAP32[(($278)>>2)]=$268;
- HEAP32[(($282)>>2)]=$273;
- var $R7_1=$268;label=90;break;
- case 82:
- _abort();
- throw "Reached an unreachable!";
- case 83:
- var $_sum10=((($14)+(12))|0);
- var $287=(($mem+$_sum10)|0);
- var $288=$287;
- var $289=HEAP32[(($288)>>2)];
- var $290=($289|0)==0;
- if($290){label=84;break;}else{var $R7_0=$289;var $RP9_0=$288;label=85;break;}
- case 84:
- var $_sum9=((($14)+(8))|0);
- var $292=(($mem+$_sum9)|0);
- var $293=$292;
- var $294=HEAP32[(($293)>>2)];
- var $295=($294|0)==0;
- if($295){var $R7_1=0;label=90;break;}else{var $R7_0=$294;var $RP9_0=$293;label=85;break;}
- case 85:
- var $RP9_0;
- var $R7_0;
- var $296=(($R7_0+20)|0);
- var $297=HEAP32[(($296)>>2)];
- var $298=($297|0)==0;
- if($298){label=86;break;}else{var $R7_0=$297;var $RP9_0=$296;label=85;break;}
- case 86:
- var $300=(($R7_0+16)|0);
- var $301=HEAP32[(($300)>>2)];
- var $302=($301|0)==0;
- if($302){label=87;break;}else{var $R7_0=$301;var $RP9_0=$300;label=85;break;}
- case 87:
- var $304=$RP9_0;
- var $305=HEAP32[((56)>>2)];
- var $306=($304>>>0)<($305>>>0);
- if($306){label=89;break;}else{label=88;break;}
- case 88:
- HEAP32[(($RP9_0)>>2)]=0;
- var $R7_1=$R7_0;label=90;break;
- case 89:
- _abort();
- throw "Reached an unreachable!";
- case 90:
- var $R7_1;
- var $310=($265|0)==0;
- if($310){label=110;break;}else{label=91;break;}
- case 91:
- var $_sum21=((($14)+(20))|0);
- var $312=(($mem+$_sum21)|0);
- var $313=$312;
- var $314=HEAP32[(($313)>>2)];
- var $315=((344+($314<<2))|0);
- var $316=HEAP32[(($315)>>2)];
- var $317=($262|0)==($316|0);
- if($317){label=92;break;}else{label=94;break;}
- case 92:
- HEAP32[(($315)>>2)]=$R7_1;
- var $cond69=($R7_1|0)==0;
- if($cond69){label=93;break;}else{label=100;break;}
- case 93:
- var $319=HEAP32[(($313)>>2)];
- var $320=1<<$319;
- var $321=$320^-1;
- var $322=HEAP32[((44)>>2)];
- var $323=$322&$321;
- HEAP32[((44)>>2)]=$323;
- label=110;break;
- case 94:
- var $325=$265;
- var $326=HEAP32[((56)>>2)];
- var $327=($325>>>0)<($326>>>0);
- if($327){label=98;break;}else{label=95;break;}
- case 95:
- var $329=(($265+16)|0);
- var $330=HEAP32[(($329)>>2)];
- var $331=($330|0)==($262|0);
- if($331){label=96;break;}else{label=97;break;}
- case 96:
- HEAP32[(($329)>>2)]=$R7_1;
- label=99;break;
- case 97:
- var $334=(($265+20)|0);
- HEAP32[(($334)>>2)]=$R7_1;
- label=99;break;
- case 98:
- _abort();
- throw "Reached an unreachable!";
- case 99:
- var $337=($R7_1|0)==0;
- if($337){label=110;break;}else{label=100;break;}
- case 100:
- var $339=$R7_1;
- var $340=HEAP32[((56)>>2)];
- var $341=($339>>>0)<($340>>>0);
- if($341){label=109;break;}else{label=101;break;}
- case 101:
- var $343=(($R7_1+24)|0);
- HEAP32[(($343)>>2)]=$265;
- var $_sum22=((($14)+(8))|0);
- var $344=(($mem+$_sum22)|0);
- var $345=$344;
- var $346=HEAP32[(($345)>>2)];
- var $347=($346|0)==0;
- if($347){label=105;break;}else{label=102;break;}
- case 102:
- var $349=$346;
- var $350=HEAP32[((56)>>2)];
- var $351=($349>>>0)<($350>>>0);
- if($351){label=104;break;}else{label=103;break;}
- case 103:
- var $353=(($R7_1+16)|0);
- HEAP32[(($353)>>2)]=$346;
- var $354=(($346+24)|0);
- HEAP32[(($354)>>2)]=$R7_1;
- label=105;break;
- case 104:
- _abort();
- throw "Reached an unreachable!";
- case 105:
- var $_sum23=((($14)+(12))|0);
- var $357=(($mem+$_sum23)|0);
- var $358=$357;
- var $359=HEAP32[(($358)>>2)];
- var $360=($359|0)==0;
- if($360){label=110;break;}else{label=106;break;}
- case 106:
- var $362=$359;
- var $363=HEAP32[((56)>>2)];
- var $364=($362>>>0)<($363>>>0);
- if($364){label=108;break;}else{label=107;break;}
- case 107:
- var $366=(($R7_1+20)|0);
- HEAP32[(($366)>>2)]=$359;
- var $367=(($359+24)|0);
- HEAP32[(($367)>>2)]=$R7_1;
- label=110;break;
- case 108:
- _abort();
- throw "Reached an unreachable!";
- case 109:
- _abort();
- throw "Reached an unreachable!";
- case 110:
- var $371=$222|1;
- var $372=(($p_0+4)|0);
- HEAP32[(($372)>>2)]=$371;
- var $373=(($189+$222)|0);
- var $374=$373;
- HEAP32[(($374)>>2)]=$222;
- var $375=HEAP32[((60)>>2)];
- var $376=($p_0|0)==($375|0);
- if($376){label=111;break;}else{var $psize_1=$222;label=113;break;}
- case 111:
- HEAP32[((48)>>2)]=$222;
- label=140;break;
- case 112:
- var $379=$194&-2;
- HEAP32[(($193)>>2)]=$379;
- var $380=$psize_0|1;
- var $381=(($p_0+4)|0);
- HEAP32[(($381)>>2)]=$380;
- var $382=(($189+$psize_0)|0);
- var $383=$382;
- HEAP32[(($383)>>2)]=$psize_0;
- var $psize_1=$psize_0;label=113;break;
- case 113:
- var $psize_1;
- var $385=$psize_1>>>3;
- var $386=($psize_1>>>0)<256;
- if($386){label=114;break;}else{label=119;break;}
- case 114:
- var $388=$385<<1;
- var $389=((80+($388<<2))|0);
- var $390=$389;
- var $391=HEAP32[((40)>>2)];
- var $392=1<<$385;
- var $393=$391&$392;
- var $394=($393|0)==0;
- if($394){label=115;break;}else{label=116;break;}
- case 115:
- var $396=$391|$392;
- HEAP32[((40)>>2)]=$396;
- var $_sum19_pre=((($388)+(2))|0);
- var $_pre=((80+($_sum19_pre<<2))|0);
- var $F16_0=$390;var $_pre_phi=$_pre;label=118;break;
- case 116:
- var $_sum20=((($388)+(2))|0);
- var $398=((80+($_sum20<<2))|0);
- var $399=HEAP32[(($398)>>2)];
- var $400=$399;
- var $401=HEAP32[((56)>>2)];
- var $402=($400>>>0)<($401>>>0);
- if($402){label=117;break;}else{var $F16_0=$399;var $_pre_phi=$398;label=118;break;}
- case 117:
- _abort();
- throw "Reached an unreachable!";
- case 118:
- var $_pre_phi;
- var $F16_0;
- HEAP32[(($_pre_phi)>>2)]=$p_0;
- var $405=(($F16_0+12)|0);
- HEAP32[(($405)>>2)]=$p_0;
- var $406=(($p_0+8)|0);
- HEAP32[(($406)>>2)]=$F16_0;
- var $407=(($p_0+12)|0);
- HEAP32[(($407)>>2)]=$390;
- label=140;break;
- case 119:
- var $409=$p_0;
- var $410=$psize_1>>>8;
- var $411=($410|0)==0;
- if($411){var $I18_0=0;label=122;break;}else{label=120;break;}
- case 120:
- var $413=($psize_1>>>0)>16777215;
- if($413){var $I18_0=31;label=122;break;}else{label=121;break;}
- case 121:
- var $415=((($410)+(1048320))|0);
- var $416=$415>>>16;
- var $417=$416&8;
- var $418=$410<<$417;
- var $419=((($418)+(520192))|0);
- var $420=$419>>>16;
- var $421=$420&4;
- var $422=$421|$417;
- var $423=$418<<$421;
- var $424=((($423)+(245760))|0);
- var $425=$424>>>16;
- var $426=$425&2;
- var $427=$422|$426;
- var $428=(((14)-($427))|0);
- var $429=$423<<$426;
- var $430=$429>>>15;
- var $431=((($428)+($430))|0);
- var $432=$431<<1;
- var $433=((($431)+(7))|0);
- var $434=$psize_1>>>($433>>>0);
- var $435=$434&1;
- var $436=$435|$432;
- var $I18_0=$436;label=122;break;
- case 122:
- var $I18_0;
- var $438=((344+($I18_0<<2))|0);
- var $439=(($p_0+28)|0);
- var $I18_0_c=$I18_0;
- HEAP32[(($439)>>2)]=$I18_0_c;
- var $440=(($p_0+20)|0);
- HEAP32[(($440)>>2)]=0;
- var $441=(($p_0+16)|0);
- HEAP32[(($441)>>2)]=0;
- var $442=HEAP32[((44)>>2)];
- var $443=1<<$I18_0;
- var $444=$442&$443;
- var $445=($444|0)==0;
- if($445){label=123;break;}else{label=124;break;}
- case 123:
- var $447=$442|$443;
- HEAP32[((44)>>2)]=$447;
- HEAP32[(($438)>>2)]=$409;
- var $448=(($p_0+24)|0);
- var $_c=$438;
- HEAP32[(($448)>>2)]=$_c;
- var $449=(($p_0+12)|0);
- HEAP32[(($449)>>2)]=$p_0;
- var $450=(($p_0+8)|0);
- HEAP32[(($450)>>2)]=$p_0;
- label=136;break;
- case 124:
- var $452=HEAP32[(($438)>>2)];
- var $453=($I18_0|0)==31;
- if($453){var $458=0;label=126;break;}else{label=125;break;}
- case 125:
- var $455=$I18_0>>>1;
- var $456=(((25)-($455))|0);
- var $458=$456;label=126;break;
- case 126:
- var $458;
- var $459=(($452+4)|0);
- var $460=HEAP32[(($459)>>2)];
- var $461=$460&-8;
- var $462=($461|0)==($psize_1|0);
- if($462){var $T_0_lcssa=$452;label=133;break;}else{label=127;break;}
- case 127:
- var $463=$psize_1<<$458;
- var $T_072=$452;var $K19_073=$463;label=129;break;
- case 128:
- var $465=$K19_073<<1;
- var $466=(($473+4)|0);
- var $467=HEAP32[(($466)>>2)];
- var $468=$467&-8;
- var $469=($468|0)==($psize_1|0);
- if($469){var $T_0_lcssa=$473;label=133;break;}else{var $T_072=$473;var $K19_073=$465;label=129;break;}
- case 129:
- var $K19_073;
- var $T_072;
- var $471=$K19_073>>>31;
- var $472=(($T_072+16+($471<<2))|0);
- var $473=HEAP32[(($472)>>2)];
- var $474=($473|0)==0;
- if($474){label=130;break;}else{label=128;break;}
- case 130:
- var $476=$472;
- var $477=HEAP32[((56)>>2)];
- var $478=($476>>>0)<($477>>>0);
- if($478){label=132;break;}else{label=131;break;}
- case 131:
- HEAP32[(($472)>>2)]=$409;
- var $480=(($p_0+24)|0);
- var $T_0_c16=$T_072;
- HEAP32[(($480)>>2)]=$T_0_c16;
- var $481=(($p_0+12)|0);
- HEAP32[(($481)>>2)]=$p_0;
- var $482=(($p_0+8)|0);
- HEAP32[(($482)>>2)]=$p_0;
- label=136;break;
- case 132:
- _abort();
- throw "Reached an unreachable!";
- case 133:
- var $T_0_lcssa;
- var $484=(($T_0_lcssa+8)|0);
- var $485=HEAP32[(($484)>>2)];
- var $486=$T_0_lcssa;
- var $487=HEAP32[((56)>>2)];
- var $488=($486>>>0)>=($487>>>0);
- var $489=$485;
- var $490=($489>>>0)>=($487>>>0);
- var $or_cond=$488&$490;
- if($or_cond){label=134;break;}else{label=135;break;}
- case 134:
- var $492=(($485+12)|0);
- HEAP32[(($492)>>2)]=$409;
- HEAP32[(($484)>>2)]=$409;
- var $493=(($p_0+8)|0);
- var $_c15=$485;
- HEAP32[(($493)>>2)]=$_c15;
- var $494=(($p_0+12)|0);
- var $T_0_c=$T_0_lcssa;
- HEAP32[(($494)>>2)]=$T_0_c;
- var $495=(($p_0+24)|0);
- HEAP32[(($495)>>2)]=0;
- label=136;break;
- case 135:
- _abort();
- throw "Reached an unreachable!";
- case 136:
- var $497=HEAP32[((72)>>2)];
- var $498=((($497)-(1))|0);
- HEAP32[((72)>>2)]=$498;
- var $499=($498|0)==0;
- if($499){var $sp_0_in_i=496;label=137;break;}else{label=140;break;}
- case 137:
- var $sp_0_in_i;
- var $sp_0_i=HEAP32[(($sp_0_in_i)>>2)];
- var $500=($sp_0_i|0)==0;
- var $501=(($sp_0_i+8)|0);
- if($500){label=138;break;}else{var $sp_0_in_i=$501;label=137;break;}
- case 138:
- HEAP32[((72)>>2)]=-1;
- label=140;break;
- case 139:
- _abort();
- throw "Reached an unreachable!";
- case 140:
- return;
- default: assert(0, "bad label: " + label);
- }
- }
- Module["_free"] = _free;
- // EMSCRIPTEN_END_FUNCS
- // EMSCRIPTEN_END_FUNCS
- // Warning: printing of i64 values may be slightly rounded! No deep i64 math used, so precise i64 code not included
- var i64Math = null;
- // === Auto-generated postamble setup entry stuff ===
- if (memoryInitializer) {
- function applyData(data) {
- HEAPU8.set(data, STATIC_BASE);
- }
- if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
- applyData(Module['readBinary'](memoryInitializer));
- } else {
- addRunDependency('memory initializer');
- Browser.asyncLoad(memoryInitializer, function(data) {
- applyData(data);
- removeRunDependency('memory initializer');
- }, function(data) {
- throw 'could not load memory initializer ' + memoryInitializer;
- });
- }
- }
- function ExitStatus(status) {
- this.name = "ExitStatus";
- this.message = "Program terminated with exit(" + status + ")";
- this.status = status;
- };
- ExitStatus.prototype = new Error();
- ExitStatus.prototype.constructor = ExitStatus;
- var initialStackTop;
- var preloadStartTime = null;
- var calledMain = false;
- dependenciesFulfilled = function runCaller() {
- // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)
- if (!Module['calledRun'] && shouldRunNow) run();
- if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled
- }
- Module['callMain'] = Module.callMain = function callMain(args) {
- assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)');
- assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called');
- args = args || [];
- if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) {
- Module.printErr('preload time: ' + (Date.now() - preloadStartTime) + ' ms');
- }
- ensureInitRuntime();
- var argc = args.length+1;
- function pad() {
- for (var i = 0; i < 4-1; i++) {
- argv.push(0);
- }
- }
- var argv = [allocate(intArrayFromString("/bin/this.program"), 'i8', ALLOC_NORMAL) ];
- pad();
- for (var i = 0; i < argc-1; i = i + 1) {
- argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL));
- pad();
- }
- argv.push(0);
- argv = allocate(argv, 'i32', ALLOC_NORMAL);
- initialStackTop = STACKTOP;
- try {
- var ret = Module['_main'](argc, argv, 0);
- // if we're not running an evented main loop, it's time to exit
- if (!Module['noExitRuntime']) {
- exit(ret);
- }
- }
- catch(e) {
- if (e instanceof ExitStatus) {
- // exit() throws this once it's done to make sure execution
- // has been stopped completely
- return;
- } else if (e == 'SimulateInfiniteLoop') {
- // running an evented main loop, don't immediately exit
- Module['noExitRuntime'] = true;
- return;
- } else {
- if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]);
- throw e;
- }
- } finally {
- calledMain = true;
- }
- }
- function run(args) {
- args = args || Module['arguments'];
- if (preloadStartTime === null) preloadStartTime = Date.now();
- if (runDependencies > 0) {
- Module.printErr('run() called, but dependencies remain, so not running');
- return;
- }
- preRun();
- if (runDependencies > 0) return; // a preRun added a dependency, run will be called later
- if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame
- function doRun() {
- if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening
- Module['calledRun'] = true;
- ensureInitRuntime();
- preMain();
- if (Module['_main'] && shouldRunNow) {
- Module['callMain'](args);
- }
- postRun();
- }
- if (Module['setStatus']) {
- Module['setStatus']('Running...');
- setTimeout(function() {
- setTimeout(function() {
- Module['setStatus']('');
- }, 1);
- if (!ABORT) doRun();
- }, 1);
- } else {
- doRun();
- }
- }
- Module['run'] = Module.run = run;
- function exit(status) {
- ABORT = true;
- EXITSTATUS = status;
- STACKTOP = initialStackTop;
- // exit the runtime
- exitRuntime();
- // TODO We should handle this differently based on environment.
- // In the browser, the best we can do is throw an exception
- // to halt execution, but in node we could process.exit and
- // I'd imagine SM shell would have something equivalent.
- // This would let us set a proper exit status (which
- // would be great for checking test exit statuses).
- // https://github.com/kripken/emscripten/issues/1371
- // throw an exception to halt the current execution
- throw new ExitStatus(status);
- }
- Module['exit'] = Module.exit = exit;
- function abort(text) {
- if (text) {
- Module.print(text);
- Module.printErr(text);
- }
- ABORT = true;
- EXITSTATUS = 1;
- throw 'abort() at ' + stackTrace();
- }
- Module['abort'] = Module.abort = abort;
- // {{PRE_RUN_ADDITIONS}}
- if (Module['preInit']) {
- if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];
- while (Module['preInit'].length > 0) {
- Module['preInit'].pop()();
- }
- }
- // shouldRunNow refers to calling main(), not run().
- var shouldRunNow = true;
- if (Module['noInitialRun']) {
- shouldRunNow = false;
- }
- run();
- // {{POST_RUN_ADDITIONS}}
- // {{MODULE_ADDITIONS}}
|