Interpreter_Execute.cpp 451 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364
  1. #include "Interpreter.h"
  2. #include <cmath>
  3. #include <algorithm>
  4. #include "vm/Object.h"
  5. #include "vm/Class.h"
  6. #include "vm/ClassInlines.h"
  7. #include "vm/Array.h"
  8. #include "vm/Image.h"
  9. #include "vm/Exception.h"
  10. #include "vm/Thread.h"
  11. #include "vm/Runtime.h"
  12. #include "vm/Reflection.h"
  13. #include "metadata/GenericMetadata.h"
  14. #if HYBRIDCLR_UNITY_2020_OR_NEW
  15. #include "vm-utils/icalls/mscorlib/System.Threading/Interlocked.h"
  16. #else
  17. #include "icalls/mscorlib/System.Threading/Interlocked.h"
  18. #endif
  19. #include "../metadata/MetadataModule.h"
  20. #include "Instruction.h"
  21. #include "MethodBridge.h"
  22. #include "InstrinctDef.h"
  23. #include "MemoryUtil.h"
  24. #include "InterpreterModule.h"
  25. #include "InterpreterUtil.h"
  26. #include "gc/WriteBarrier.h"
  27. using namespace hybridclr::metadata;
  28. namespace hybridclr
  29. {
  30. namespace interpreter
  31. {
  32. #pragma region memory
  33. #define LOCAL_ALLOC(size) interpFrameGroup.AllocLoc(size, imi->initLocals)
  34. #pragma endregion
  35. #pragma region arith
  36. inline bool CheckAddOverflow(int32_t a, int32_t b)
  37. {
  38. return b >= 0 ? (INT32_MAX - b < a) : (INT32_MIN - b > a);
  39. }
  40. inline bool CheckSubOverflow(int32_t a, int32_t b)
  41. {
  42. return b >= 0 ? (INT32_MAX - b < a) : (INT32_MIN - b > a);
  43. }
  44. inline bool CheckAddOverflowUn(uint32_t a, uint32_t b)
  45. {
  46. return UINT32_MAX - b < a;
  47. }
  48. inline bool CheckSubOverflowUn(uint32_t a, uint32_t b)
  49. {
  50. return a < b;
  51. }
  52. inline bool CheckAddOverflow64(int64_t a, int64_t b)
  53. {
  54. return b >= 0 ? (INT64_MAX - b < a) : (INT64_MIN - b > a);
  55. }
  56. inline bool CheckSubOverflow64(int64_t a, int64_t b)
  57. {
  58. return b < 0 ? (INT64_MAX + b < a) : (INT64_MIN + b > a);
  59. }
  60. inline bool CheckAddOverflow64Un(uint64_t a, uint64_t b)
  61. {
  62. return UINT64_MAX - b < a;
  63. }
  64. inline bool CheckSubOverflow64Un(uint64_t a, uint64_t b)
  65. {
  66. return a < b;
  67. }
  68. inline bool CheckMulOverflow(int32_t a, int32_t b)
  69. {
  70. int64_t c = (int64_t)a * (int64_t)b;
  71. return c <= INT32_MIN || c >= INT32_MAX;
  72. }
  73. inline bool CheckMulOverflowUn(uint32_t a, uint32_t b)
  74. {
  75. return (uint64_t)a * (uint64_t)b >= UINT32_MAX;
  76. }
  77. inline bool CheckMulOverflow64(int64_t a, int64_t b)
  78. {
  79. if (a == 0 || b == 0)
  80. {
  81. return false;
  82. }
  83. if (a > 0 && b == -1)
  84. {
  85. return false;
  86. }
  87. if (a < 0 && b == -1)
  88. {
  89. return a == INT64_MIN;
  90. }
  91. if (a > 0 && b > 0)
  92. {
  93. return a > INT64_MAX / b;
  94. }
  95. if (a > 0 && b < 0)
  96. {
  97. return a > INT64_MIN / b;
  98. }
  99. if (a < 0 && b > 0)
  100. {
  101. return a < INT64_MIN / b;
  102. }
  103. return a < INT64_MAX / b;
  104. }
  105. inline bool CheckMulOverflow64Un(uint64_t a, uint64_t b)
  106. {
  107. return a != 0 && b > UINT64_MAX / a;
  108. }
  109. inline bool CheckConvertOverflow_i4_i1(int32_t x)
  110. {
  111. return ((x < INT8_MIN) || (x > INT8_MAX));
  112. }
  113. inline bool CheckConvertOverflow_i4_u1(int32_t x)
  114. {
  115. return (uint32_t)x > UINT8_MAX;
  116. }
  117. inline bool CheckConvertOverflow_i4_i2(int32_t x)
  118. {
  119. return ((x < INT16_MIN) || (x > INT16_MAX));
  120. }
  121. inline bool CheckConvertOverflow_i4_u2(int32_t x)
  122. {
  123. return (uint32_t)x > UINT16_MAX;
  124. }
  125. inline bool CheckConvertOverflow_i4_i4(int32_t x)
  126. {
  127. return false;
  128. }
  129. inline bool CheckConvertOverflow_i4_u4(int32_t x)
  130. {
  131. return x < 0;
  132. }
  133. inline bool CheckConvertOverflow_i4_i8(int32_t x)
  134. {
  135. return false;
  136. }
  137. inline bool CheckConvertOverflow_i4_u8(int32_t x)
  138. {
  139. return x < 0;
  140. }
  141. inline bool CheckConvertOverflow_u4_i1(uint32_t x)
  142. {
  143. return x > INT8_MAX;
  144. }
  145. inline bool CheckConvertOverflow_u4_u1(uint32_t x)
  146. {
  147. return x > UINT8_MAX;
  148. }
  149. inline bool CheckConvertOverflow_u4_i2(uint32_t x)
  150. {
  151. return x > INT16_MAX;
  152. }
  153. inline bool CheckConvertOverflow_u4_u2(uint32_t x)
  154. {
  155. return x > UINT16_MAX;
  156. }
  157. inline bool CheckConvertOverflow_u4_i4(uint32_t x)
  158. {
  159. return x > INT32_MAX;
  160. }
  161. inline bool CheckConvertOverflow_u4_u4(uint32_t x)
  162. {
  163. return false;
  164. }
  165. inline bool CheckConvertOverflow_u4_i8(uint32_t x)
  166. {
  167. return false;
  168. }
  169. inline bool CheckConvertOverflow_u4_u8(uint32_t x)
  170. {
  171. return false;
  172. }
  173. inline bool CheckConvertOverflow_i8_i1(int64_t x)
  174. {
  175. return ((x < INT8_MIN) || (x > INT8_MAX));
  176. }
  177. inline bool CheckConvertOverflow_i8_u1(int64_t x)
  178. {
  179. return (uint64_t)x > UINT8_MAX;
  180. }
  181. inline bool CheckConvertOverflow_i8_i2(int64_t x)
  182. {
  183. return ((x < INT16_MIN) || (x > INT16_MAX));
  184. }
  185. inline bool CheckConvertOverflow_i8_u2(int64_t x)
  186. {
  187. return (uint64_t)x > UINT16_MAX;
  188. }
  189. inline bool CheckConvertOverflow_i8_i4(int64_t x)
  190. {
  191. return ((x < INT32_MIN) || (x > INT32_MAX));
  192. }
  193. inline bool CheckConvertOverflow_i8_u4(int64_t x)
  194. {
  195. return (uint64_t)x > UINT32_MAX;
  196. }
  197. inline bool CheckConvertOverflow_i8_i8(int64_t x)
  198. {
  199. return false;
  200. }
  201. inline bool CheckConvertOverflow_i8_u8(int64_t x)
  202. {
  203. return x < 0;
  204. }
  205. inline bool CheckConvertOverflow_u8_i1(uint64_t x)
  206. {
  207. return x > INT8_MAX;
  208. }
  209. inline bool CheckConvertOverflow_u8_u1(uint64_t x)
  210. {
  211. return x > UINT8_MAX;
  212. }
  213. inline bool CheckConvertOverflow_u8_i2(uint64_t x)
  214. {
  215. return x > INT16_MAX;
  216. }
  217. inline bool CheckConvertOverflow_u8_u2(uint64_t x)
  218. {
  219. return x > UINT16_MAX;
  220. }
  221. inline bool CheckConvertOverflow_u8_i4(uint64_t x)
  222. {
  223. return x > INT32_MAX;
  224. }
  225. inline bool CheckConvertOverflow_u8_u4(uint64_t x)
  226. {
  227. return x > UINT32_MAX;
  228. }
  229. inline bool CheckConvertOverflow_u8_i8(uint64_t x)
  230. {
  231. return x > INT64_MAX;
  232. }
  233. inline bool CheckConvertOverflow_u8_u8(uint64_t x)
  234. {
  235. return false;
  236. }
  237. inline bool CheckConvertOverflow_f4_i1(float x)
  238. {
  239. return x < INT8_MIN || x > INT8_MAX || isnan(x);
  240. }
  241. inline bool CheckConvertOverflow_f4_u1(float x)
  242. {
  243. return x < 0 || x > UINT8_MAX || isnan(x);
  244. }
  245. inline bool CheckConvertOverflow_f4_i2(float x)
  246. {
  247. return x < INT16_MIN || x > INT16_MAX || isnan(x);
  248. }
  249. inline bool CheckConvertOverflow_f4_u2(float x)
  250. {
  251. return x < 0 || x > UINT16_MAX || isnan(x);
  252. }
  253. inline bool CheckConvertOverflow_f4_i4(float x)
  254. {
  255. if (isnan(x))
  256. {
  257. return true;
  258. }
  259. float y = truncf(x);
  260. return y != (int32_t)x;
  261. }
  262. inline bool CheckConvertOverflow_f4_u4(float x)
  263. {
  264. if (isnan(x) || x < 0)
  265. {
  266. return true;
  267. }
  268. float y = truncf(x);
  269. return y != (uint32_t)x;
  270. }
  271. inline bool CheckConvertOverflow_f4_i8(float x)
  272. {
  273. if (isnan(x))
  274. {
  275. return true;
  276. }
  277. float y = truncf(x);
  278. return y != (int64_t)x;
  279. }
  280. inline bool CheckConvertOverflow_f4_u8(float x)
  281. {
  282. if (isnan(x) || x < 0)
  283. {
  284. return true;
  285. }
  286. float y = truncf(x);
  287. return y != (uint64_t)x;
  288. }
  289. inline bool CheckConvertOverflow_f8_i1(double x)
  290. {
  291. return x < INT8_MIN || x > INT8_MAX || isnan(x);
  292. }
  293. inline bool CheckConvertOverflow_f8_u1(double x)
  294. {
  295. return x < 0 || x > UINT8_MAX || isnan(x);
  296. }
  297. inline bool CheckConvertOverflow_f8_i2(double x)
  298. {
  299. return x < INT16_MIN || x > INT16_MAX || isnan(x);
  300. }
  301. inline bool CheckConvertOverflow_f8_u2(double x)
  302. {
  303. return x < 0 || x > UINT16_MAX || isnan(x);
  304. }
  305. inline bool CheckConvertOverflow_f8_i4(double x)
  306. {
  307. return x < INT32_MIN || x > INT32_MAX || isnan(x);
  308. }
  309. inline bool CheckConvertOverflow_f8_u4(double x)
  310. {
  311. return x < 0 || x > UINT32_MAX || isnan(x);
  312. }
  313. inline bool CheckConvertOverflow_f8_i8(double x)
  314. {
  315. if (isnan(x))
  316. {
  317. return true;
  318. }
  319. double y = trunc(x);
  320. return y != (int64_t)x;
  321. }
  322. inline bool CheckConvertOverflow_f8_u8(double x)
  323. {
  324. if (isnan(x) || x < 0)
  325. {
  326. return true;
  327. }
  328. double y = trunc(x);
  329. return y != (uint64_t)x;
  330. }
  331. inline int32_t HiDiv(int32_t a, int32_t b)
  332. {
  333. if (b == 0)
  334. {
  335. il2cpp::vm::Exception::RaiseDivideByZeroException();
  336. }
  337. else if (a == kIl2CppInt32Min && b == -1)
  338. {
  339. il2cpp::vm::Exception::RaiseOverflowException();
  340. }
  341. return a / b;
  342. }
  343. inline int64_t HiDiv(int64_t a, int64_t b)
  344. {
  345. if (b == 0)
  346. {
  347. il2cpp::vm::Exception::RaiseDivideByZeroException();
  348. }
  349. else if (a == kIl2CppInt64Min && b == -1)
  350. {
  351. il2cpp::vm::Exception::RaiseOverflowException();
  352. }
  353. return a / b;
  354. }
  355. inline float HiDiv(float a, float b)
  356. {
  357. return a / b;
  358. }
  359. inline double HiDiv(double a, double b)
  360. {
  361. return a / b;
  362. }
  363. inline int32_t HiMulUn(int32_t a, int32_t b)
  364. {
  365. return (uint32_t)a * (uint32_t)b;
  366. }
  367. inline int64_t HiMulUn(int64_t a, int64_t b)
  368. {
  369. return (uint64_t)a * (uint64_t)b;
  370. }
  371. inline int32_t HiDivUn(int32_t a, int32_t b)
  372. {
  373. if (b == 0)
  374. {
  375. il2cpp::vm::Exception::RaiseDivideByZeroException();
  376. }
  377. return (uint32_t)a / (uint32_t)b;
  378. }
  379. inline int64_t HiDivUn(int64_t a, int64_t b)
  380. {
  381. if (b == 0)
  382. {
  383. il2cpp::vm::Exception::RaiseDivideByZeroException();
  384. }
  385. return (uint64_t)a / (uint64_t)b;
  386. }
  387. inline float HiRem(float a, float b)
  388. {
  389. return std::fmod(a, b);
  390. }
  391. inline double HiRem(double a, double b)
  392. {
  393. return std::fmod(a, b);
  394. }
  395. inline int32_t HiRem(int32_t a, int32_t b)
  396. {
  397. if (b == 0)
  398. {
  399. il2cpp::vm::Exception::RaiseDivideByZeroException();
  400. }
  401. else if (a == kIl2CppInt32Min && b == -1)
  402. {
  403. il2cpp::vm::Exception::RaiseOverflowException();
  404. }
  405. return a % b;
  406. }
  407. inline int64_t HiRem(int64_t a, int64_t b)
  408. {
  409. if (b == 0)
  410. {
  411. il2cpp::vm::Exception::RaiseDivideByZeroException();
  412. }
  413. else if (a == kIl2CppInt64Min && b == -1)
  414. {
  415. il2cpp::vm::Exception::RaiseOverflowException();
  416. }
  417. return a % b;
  418. }
  419. inline uint32_t HiRemUn(int32_t a, int32_t b)
  420. {
  421. if (b == 0)
  422. {
  423. il2cpp::vm::Exception::RaiseDivideByZeroException();
  424. }
  425. return (uint32_t)a % (uint32_t)b;
  426. }
  427. inline uint64_t HiRemUn(int64_t a, int64_t b)
  428. {
  429. if (b == 0)
  430. {
  431. il2cpp::vm::Exception::RaiseDivideByZeroException();
  432. }
  433. return (uint64_t)a % (uint64_t)b;
  434. }
  435. inline uint32_t HiShrUn(int32_t a, int64_t b)
  436. {
  437. return (uint32_t)a >> b;
  438. }
  439. inline uint32_t HiShrUn(int32_t a, int32_t b)
  440. {
  441. return (uint32_t)a >> b;
  442. }
  443. inline uint64_t HiShrUn(int64_t a, int32_t b)
  444. {
  445. return (uint64_t)a >> b;
  446. }
  447. inline uint64_t HiShrUn(int64_t a, int64_t b)
  448. {
  449. return (uint64_t)a >> b;
  450. }
  451. inline void HiCheckFinite(float x)
  452. {
  453. if (std::isinf(x) || std::isnan(x))
  454. {
  455. il2cpp::vm::Exception::RaiseOverflowException();
  456. }
  457. }
  458. inline void HiCheckFinite(double x)
  459. {
  460. if (std::isinf(x) || std::isnan(x))
  461. {
  462. il2cpp::vm::Exception::RaiseOverflowException();
  463. }
  464. }
  465. template<typename T> bool CompareCeq(T a, T b) { return a == b; }
  466. template<typename T> bool CompareCne(T a, T b) { return a != b; }
  467. template<typename T> bool CompareCgt(T a, T b) { return a > b; }
  468. template<typename T> bool CompareCge(T a, T b) { return a >= b; }
  469. template<typename T> bool CompareClt(T a, T b) { return a < b; }
  470. template<typename T> bool CompareCle(T a, T b) { return a <= b; }
  471. inline bool CompareCneUn(int32_t a, int32_t b) { return (uint32_t)a != (uint32_t)b; }
  472. inline bool CompareCgtUn(int32_t a, int32_t b) { return (uint32_t)a > (uint32_t)b; }
  473. inline bool CompareCgeUn(int32_t a, int32_t b) { return (uint32_t)a >= (uint32_t)b; }
  474. inline bool CompareCltUn(int32_t a, int32_t b) { return (uint32_t)a < (uint32_t)b; }
  475. inline bool CompareCleUn(int32_t a, int32_t b) { return (uint32_t)a <= (uint32_t)b; }
  476. inline bool CompareCneUn(int64_t a, int64_t b) { return (uint64_t)a != (uint64_t)b; }
  477. inline bool CompareCgtUn(int64_t a, int64_t b) { return (uint64_t)a > (uint64_t)b; }
  478. inline bool CompareCgeUn(int64_t a, int64_t b) { return (uint64_t)a >= (uint64_t)b; }
  479. inline bool CompareCltUn(int64_t a, int64_t b) { return (uint64_t)a < (uint64_t)b; }
  480. inline bool CompareCleUn(int64_t a, int64_t b) { return (uint64_t)a <= (uint64_t)b; }
  481. inline bool CompareCneUn(float a, float b) { return a != b; }
  482. inline bool CompareCgtUn(float a, float b) { return a > b; }
  483. inline bool CompareCgeUn(float a, float b) { return a >= b; }
  484. inline bool CompareCltUn(float a, float b) { return a < b; }
  485. inline bool CompareCleUn(float a, float b) { return a <= b; }
  486. inline bool CompareCneUn(double a, double b) { return a != b; }
  487. inline bool CompareCgtUn(double a, double b) { return a > b; }
  488. inline bool CompareCgeUn(double a, double b) { return a >= b; }
  489. inline bool CompareCltUn(double a, double b) { return a < b; }
  490. inline bool CompareCleUn(double a, double b) { return a <= b; }
  491. #pragma endregion
  492. #pragma region object
  493. inline void INIT_CLASS(Il2CppClass* klass)
  494. {
  495. il2cpp::vm::ClassInlines::InitFromCodegen(klass);
  496. }
  497. inline void CHECK_NOT_NULL_THROW(const void* ptr)
  498. {
  499. if (!ptr)
  500. {
  501. il2cpp::vm::Exception::RaiseNullReferenceException();
  502. }
  503. }
  504. inline void CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(Il2CppArray* arr, int64_t index)
  505. {
  506. CHECK_NOT_NULL_THROW(arr);
  507. if (arr->max_length <= (il2cpp_array_size_t)index)
  508. {
  509. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetIndexOutOfRangeException());
  510. }
  511. }
  512. inline void CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(Il2CppArray* arr, int32_t startIndex, int32_t length)
  513. {
  514. CHECK_NOT_NULL_THROW(arr);
  515. if (arr->max_length <= (il2cpp_array_size_t)startIndex || arr->max_length - (il2cpp_array_size_t)startIndex < (il2cpp_array_size_t)length)
  516. {
  517. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetIndexOutOfRangeException());
  518. }
  519. }
  520. inline void CHECK_NOT_NULL_AND_ARRAY_BOUNDARY2(Il2CppArray* arr, int32_t startIndex, int32_t length)
  521. {
  522. CHECK_NOT_NULL_THROW(arr);
  523. if (arr->max_length <= (il2cpp_array_size_t)startIndex || arr->max_length - (il2cpp_array_size_t)startIndex < (il2cpp_array_size_t)length)
  524. {
  525. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetArgumentOutOfRangeException(""));
  526. }
  527. }
  528. inline void CHECK_TYPE_MATCH_ELSE_THROW(Il2CppClass* klass1, Il2CppClass* klass2)
  529. {
  530. if (klass1 != klass2)
  531. {
  532. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetArrayTypeMismatchException());
  533. }
  534. }
  535. inline void CheckArrayElementTypeMatch(Il2CppClass* arrKlass, Il2CppClass* eleKlass)
  536. {
  537. if (il2cpp::vm::Class::GetElementClass(arrKlass) != eleKlass)
  538. {
  539. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetArrayTypeMismatchException());
  540. }
  541. }
  542. inline void CheckArrayElementTypeCompatible(Il2CppArray* arr, Il2CppObject* ele)
  543. {
  544. if (ele && !il2cpp::vm::Class::IsAssignableFrom(arr->klass->element_class, ele->klass))
  545. {
  546. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetArrayTypeMismatchException());
  547. }
  548. }
  549. inline MethodInfo* GET_OBJECT_VIRTUAL_METHOD(Il2CppObject* obj, const MethodInfo* method)
  550. {
  551. CHECK_NOT_NULL_THROW(obj);
  552. const MethodInfo* result;
  553. if (hybridclr::metadata::IsVirtualMethod(method->flags))
  554. {
  555. if (hybridclr::metadata::IsInterface(method->klass->flags))
  556. {
  557. result = il2cpp_codegen_get_interface_invoke_data(method->slot, obj, method->klass).method;
  558. }
  559. else
  560. {
  561. result = il2cpp_codegen_get_virtual_invoke_data(method->slot, obj).method;
  562. }
  563. IL2CPP_ASSERT(!method->genericMethod || method->is_inflated);
  564. if (method->genericMethod && method->genericMethod->context.method_inst/* && method->genericMethod*/) // means it's genericInstance method 或generic method
  565. {
  566. result = GetGenericVirtualMethod(result, method);
  567. }
  568. }
  569. else
  570. {
  571. result = method;
  572. }
  573. return const_cast<MethodInfo*>(result);
  574. }
  575. #define GET_OBJECT_INTERFACE_METHOD(obj, intfKlass, slot) (MethodInfo*)nullptr
  576. inline void* HiUnbox(Il2CppObject* obj, Il2CppClass* klass)
  577. {
  578. if (il2cpp::vm::Class::IsNullable(klass))
  579. {
  580. if (!obj)
  581. {
  582. return nullptr;
  583. }
  584. klass = il2cpp::vm::Class::GetNullableArgument(klass);
  585. }
  586. return UnBox(obj, klass);
  587. }
  588. inline void CopyObjectData2StackDataByType(void* dst, void* src, Il2CppClass* klass)
  589. {
  590. IL2CPP_ASSERT(IS_CLASS_VALUE_TYPE(klass));
  591. Il2CppTypeEnum type = klass->enumtype ? klass->castClass->byval_arg.type : klass->byval_arg.type;
  592. switch (type)
  593. {
  594. case IL2CPP_TYPE_BOOLEAN:
  595. case IL2CPP_TYPE_I1:
  596. *(int32_t*)dst = *(int8_t*)src;
  597. break;
  598. case IL2CPP_TYPE_U1:
  599. *(int32_t*)dst = *(uint8_t*)src;
  600. break;
  601. case IL2CPP_TYPE_I2:
  602. *(int32_t*)dst = *(int16_t*)src;
  603. break;
  604. case IL2CPP_TYPE_U2:
  605. case IL2CPP_TYPE_CHAR:
  606. *(int32_t*)dst = *(uint16_t*)src;
  607. break;
  608. case IL2CPP_TYPE_I4:
  609. case IL2CPP_TYPE_U4:
  610. case IL2CPP_TYPE_R4:
  611. *(int32_t*)dst = *(int32_t*)src;
  612. break;
  613. case IL2CPP_TYPE_I8:
  614. case IL2CPP_TYPE_U8:
  615. case IL2CPP_TYPE_R8:
  616. *(int64_t*)dst = *(int64_t*)src;
  617. break;
  618. case IL2CPP_TYPE_I:
  619. case IL2CPP_TYPE_U:
  620. #if HYBRIDCLR_ARCH_64
  621. * (int64_t*)dst = *(int64_t*)src;
  622. #else
  623. * (int32_t*)dst = *(int32_t*)src;
  624. #endif
  625. break;
  626. default:
  627. int32_t dataSize = klass->instance_size - sizeof(Il2CppObject);
  628. if (dataSize <= sizeof(StackObject))
  629. {
  630. *(StackObject*)dst = *(StackObject*)src;
  631. }
  632. else
  633. {
  634. std::memmove(dst, src, dataSize);
  635. }
  636. break;
  637. }
  638. }
  639. inline void HiUnboxAny2StackObject(Il2CppObject* obj, Il2CppClass* klass, void* data)
  640. {
  641. if (il2cpp::vm::Class::IsNullable(klass))
  642. {
  643. #if HYBRIDCLR_UNITY_2021_OR_NEW
  644. // il2cpp modify argument meaning in 2021
  645. UnBoxNullable(obj, klass, data);
  646. #else
  647. UnBoxNullable(obj, klass->element_class, data);
  648. #endif
  649. }
  650. else
  651. {
  652. CopyObjectData2StackDataByType(data, UnBox(obj, klass), klass);
  653. }
  654. }
  655. inline void HiCastClass(Il2CppObject* obj, Il2CppClass* klass)
  656. {
  657. if (obj != nullptr && !il2cpp::vm::Class::IsAssignableFrom(klass, obj->klass))
  658. {
  659. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetInvalidCastException("cast fail"), nullptr);
  660. }
  661. }
  662. inline Il2CppTypedRef MAKE_TYPEDREFERENCE(Il2CppClass* klazz, void* ptr)
  663. {
  664. return Il2CppTypedRef{ &klazz->byval_arg, ptr, klazz };
  665. }
  666. inline void* RefAnyType(Il2CppTypedRef ref)
  667. {
  668. return (void*)ref.type;
  669. }
  670. inline void* RefAnyValue(Il2CppTypedRef ref, Il2CppClass* klass)
  671. {
  672. if (klass != ref.klass)
  673. {
  674. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetInvalidCastException(klass->name));
  675. }
  676. return ref.value;
  677. }
  678. #define MAX_DIMENSION 10
  679. inline void SetArrayElementWithSize(Il2CppArray* array, uint32_t elementSize, int32_t index, void* value)
  680. {
  681. void* __p = (void*) il2cpp_array_addr_with_size (array, elementSize, index);
  682. memcpy(__p, value, elementSize);
  683. }
  684. inline Il2CppArray* NewMdArray(Il2CppClass* fullArrKlass, StackObject* lengths, StackObject* lowerBounds)
  685. {
  686. il2cpp_array_size_t arrLengths[MAX_DIMENSION];
  687. il2cpp_array_size_t arrLowerBounds[MAX_DIMENSION];
  688. switch (fullArrKlass->rank)
  689. {
  690. case 1:
  691. {
  692. arrLengths[0] = lengths[0].i32;
  693. if (lowerBounds)
  694. {
  695. arrLowerBounds[0] = lowerBounds[0].i32;
  696. }
  697. break;
  698. }
  699. case 2:
  700. {
  701. arrLengths[0] = lengths[0].i32;
  702. arrLengths[1] = lengths[1].i32;
  703. if (lowerBounds)
  704. {
  705. arrLowerBounds[0] = lowerBounds[0].i32;
  706. arrLowerBounds[1] = lowerBounds[1].i32;
  707. }
  708. break;
  709. }
  710. default:
  711. {
  712. for (uint8_t i = 0; i < fullArrKlass->rank; i++)
  713. {
  714. arrLengths[i] = lengths[i].i32;
  715. if (lowerBounds)
  716. {
  717. arrLowerBounds[i] = lowerBounds[i].i32;
  718. }
  719. }
  720. break;
  721. }
  722. }
  723. return il2cpp::vm::Array::NewFull(fullArrKlass, arrLengths, lowerBounds ? arrLowerBounds : nullptr);
  724. }
  725. inline void* GetMdArrayElementAddress(Il2CppArray* arr, StackObject* indexs)
  726. {
  727. CHECK_NOT_NULL_THROW(arr);
  728. Il2CppClass* klass = arr->klass;
  729. uint32_t eleSize = klass->element_size;
  730. Il2CppArrayBounds* bounds = arr->bounds;
  731. char* arrayStart = il2cpp::vm::Array::GetFirstElementAddress(arr);
  732. switch (klass->rank)
  733. {
  734. case 1:
  735. {
  736. Il2CppArrayBounds& bound = bounds[0];
  737. il2cpp_array_size_t idx = (il2cpp_array_size_t)(indexs[0].i32 - bound.lower_bound);
  738. if (idx < bound.length)
  739. {
  740. return arrayStart + (idx * eleSize);
  741. }
  742. else
  743. {
  744. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetIndexOutOfRangeException());
  745. }
  746. break;
  747. }
  748. case 2:
  749. {
  750. Il2CppArrayBounds& bound0 = bounds[0];
  751. il2cpp_array_size_t idx0 = (il2cpp_array_size_t)(indexs[0].i32 - bound0.lower_bound);
  752. Il2CppArrayBounds& bound1 = bounds[1];
  753. il2cpp_array_size_t idx1 = (il2cpp_array_size_t)(indexs[1].i32 - bound1.lower_bound);
  754. if (idx0 < bound0.length && idx1 < bound1.length)
  755. {
  756. return arrayStart + ((idx0 * bound1.length) + idx1) * eleSize;
  757. }
  758. else
  759. {
  760. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetIndexOutOfRangeException());
  761. }
  762. break;
  763. }
  764. case 3:
  765. {
  766. Il2CppArrayBounds& bound0 = bounds[0];
  767. il2cpp_array_size_t idx0 = (il2cpp_array_size_t)(indexs[0].i32 - bound0.lower_bound);
  768. Il2CppArrayBounds& bound1 = bounds[1];
  769. il2cpp_array_size_t idx1 = (il2cpp_array_size_t)(indexs[1].i32 - bound1.lower_bound);
  770. Il2CppArrayBounds& bound2 = bounds[2];
  771. il2cpp_array_size_t idx2 = (il2cpp_array_size_t)(indexs[2].i32 - bound2.lower_bound);
  772. if (idx0 < bound0.length && idx1 < bound1.length && idx2 < bound2.length)
  773. {
  774. return arrayStart + ((idx0 * bound1.length + idx1) * bound2.length + idx2) * eleSize;
  775. }
  776. else
  777. {
  778. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetIndexOutOfRangeException());
  779. }
  780. break;
  781. }
  782. default:
  783. {
  784. IL2CPP_ASSERT(klass->rank > 0);
  785. il2cpp_array_size_t totalIdx = 0;
  786. for (uint8_t i = 0; i < klass->rank; i++)
  787. {
  788. Il2CppArrayBounds& bound = bounds[i];
  789. il2cpp_array_size_t idx = (il2cpp_array_size_t)(indexs[i].i32 - bound.lower_bound);
  790. if (idx < bound.length)
  791. {
  792. totalIdx = totalIdx * bound.length + idx;
  793. }
  794. else
  795. {
  796. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetIndexOutOfRangeException());
  797. }
  798. }
  799. return arrayStart + totalIdx * eleSize;
  800. }
  801. }
  802. }
  803. template<typename T> void GetMdArrayElementExpandToStack(Il2CppArray* arr, StackObject* indexs, void* value)
  804. {
  805. CHECK_NOT_NULL_THROW(arr);
  806. *(int32_t*)value = *(T*)GetMdArrayElementAddress(arr, indexs);
  807. }
  808. template<typename T> void GetMdArrayElementCopyToStack(Il2CppArray* arr, StackObject* indexs, void* value)
  809. {
  810. CHECK_NOT_NULL_THROW(arr);
  811. *(T*)value = *(T*)GetMdArrayElementAddress(arr, indexs);
  812. }
  813. inline void GetMdArrayElementBySize(Il2CppArray* arr, StackObject* indexs, void* value)
  814. {
  815. CopyBySize(value, GetMdArrayElementAddress(arr, indexs), arr->klass->element_size);
  816. }
  817. inline void SetMdArrayElement(Il2CppArray* arr, StackObject* indexs, void* value)
  818. {
  819. CopyBySize(GetMdArrayElementAddress(arr, indexs), value, arr->klass->element_size);
  820. }
  821. inline void SetMdArrayElementWriteBarrier(Il2CppArray* arr, StackObject* indexs, void* value)
  822. {
  823. void* dst = GetMdArrayElementAddress(arr, indexs);
  824. uint32_t eleSize = arr->klass->element_size;
  825. CopyBySize(dst, value, eleSize);
  826. HYBRIDCLR_SET_WRITE_BARRIER((void**)dst, eleSize);
  827. }
  828. #pragma endregion
  829. #pragma region nullable
  830. inline void InitNullableValueType(void* nullableValueTypeObj, void* data, Il2CppClass* klass)
  831. {
  832. IL2CPP_ASSERT(klass->castClass->size_inited);
  833. uint32_t size = klass->castClass->instance_size - sizeof(Il2CppObject);
  834. void* dataPtr = GetNulllableDataOffset(nullableValueTypeObj, klass);
  835. std::memmove(dataPtr, data, size);
  836. #if HYBRIDCLR_ENABLE_WRITE_BARRIERS
  837. if (klass->castClass->has_references)
  838. {
  839. HYBRIDCLR_SET_WRITE_BARRIER((void**)dataPtr, size);
  840. }
  841. #endif
  842. *GetNulllableHasValueOffset(nullableValueTypeObj, klass) = 1;
  843. }
  844. inline void NewNullableValueType(void* nullableValueTypeObj, void* data, Il2CppClass* klass)
  845. {
  846. IL2CPP_ASSERT(klass->castClass->size_inited);
  847. uint32_t size = klass->castClass->instance_size - sizeof(Il2CppObject);
  848. std::memmove(GetNulllableDataOffset(nullableValueTypeObj, klass), data, size);
  849. *GetNulllableHasValueOffset(nullableValueTypeObj, klass) = 1;
  850. }
  851. inline bool IsNullableHasValue(void* nullableValueObj, Il2CppClass* klass)
  852. {
  853. IL2CPP_ASSERT(klass->castClass->size_inited);
  854. return *(GetNulllableHasValueOffset(nullableValueObj, klass));
  855. }
  856. inline void GetNullableValueOrDefault2StackDataByType(void* dst, void* nullableValueObj, Il2CppClass* klass)
  857. {
  858. Il2CppClass* eleClass = klass->castClass;
  859. IL2CPP_ASSERT(eleClass->size_inited);
  860. uint32_t size = eleClass->instance_size - sizeof(Il2CppObject);
  861. bool notNull = *GetNulllableHasValueOffset(nullableValueObj, klass);
  862. void* srcData = GetNulllableDataOffset(nullableValueObj, klass);
  863. LabelGet:
  864. IL2CPP_ASSERT(IS_CLASS_VALUE_TYPE(eleClass));
  865. switch (eleClass->byval_arg.type)
  866. {
  867. case IL2CPP_TYPE_BOOLEAN:
  868. {
  869. *(int32_t*)dst = notNull ? *(uint8_t*)srcData : 0;
  870. break;
  871. }
  872. case IL2CPP_TYPE_I1:
  873. {
  874. *(int32_t*)dst = notNull ? *(int8_t*)srcData : 0;
  875. break;
  876. }
  877. case IL2CPP_TYPE_U1:
  878. {
  879. *(int32_t*)dst = notNull ? *(uint8_t*)srcData : 0;
  880. break;
  881. }
  882. case IL2CPP_TYPE_I2:
  883. {
  884. *(int32_t*)dst = notNull ? *(int16_t*)srcData : 0;
  885. break;
  886. }
  887. case IL2CPP_TYPE_U2:
  888. case IL2CPP_TYPE_CHAR:
  889. {
  890. *(int32_t*)dst = notNull ? *(uint16_t*)srcData : 0;
  891. break;
  892. }
  893. case IL2CPP_TYPE_I4:
  894. case IL2CPP_TYPE_U4:
  895. {
  896. *(int32_t*)dst = notNull ? *(int32_t*)srcData : 0;
  897. break;
  898. }
  899. case IL2CPP_TYPE_I8:
  900. case IL2CPP_TYPE_U8:
  901. {
  902. *(int64_t*)dst = notNull ? *(int64_t*)srcData : 0;
  903. break;
  904. }
  905. case IL2CPP_TYPE_R4:
  906. {
  907. *(float*)dst = notNull ? *(float*)srcData : 0;
  908. break;
  909. }
  910. case IL2CPP_TYPE_R8:
  911. {
  912. *(double*)dst = notNull ? *(double*)srcData : 0.0;
  913. break;
  914. }
  915. case IL2CPP_TYPE_I:
  916. case IL2CPP_TYPE_U:
  917. {
  918. #if HYBRIDCLR_ARCH_64
  919. * (int64_t*)dst = notNull ? *(int64_t*)srcData : 0;
  920. #else
  921. * (int32_t*)dst = notNull ? *(int32_t*)srcData : 0;
  922. #endif
  923. break;
  924. }
  925. case IL2CPP_TYPE_VALUETYPE:
  926. case IL2CPP_TYPE_GENERICINST:
  927. {
  928. if (eleClass->enumtype)
  929. {
  930. eleClass = eleClass->castClass;
  931. goto LabelGet;
  932. }
  933. if (notNull)
  934. {
  935. std::memmove(dst, srcData, size);
  936. }
  937. else
  938. {
  939. std::memset(dst, 0, size);
  940. }
  941. break;
  942. }
  943. default:
  944. {
  945. RaiseExecutionEngineException("GetNullableValueOrDefault2StackDataByType");
  946. }
  947. }
  948. }
  949. inline void GetNullableValueOrDefault2StackDataByType(void* dst, void* nullableValueObj, void* defaultData, Il2CppClass* klass)
  950. {
  951. Il2CppClass* eleClass = klass->castClass;
  952. IL2CPP_ASSERT(eleClass->size_inited);
  953. uint32_t size = eleClass->instance_size - sizeof(Il2CppObject);
  954. void* srcData;
  955. bool notNull = *GetNulllableHasValueOffset(nullableValueObj, klass);
  956. if (notNull)
  957. {
  958. srcData = GetNulllableDataOffset(nullableValueObj, klass);
  959. }
  960. else
  961. {
  962. if (defaultData == nullptr)
  963. {
  964. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetInvalidOperationException("Nullable object must have a value."));
  965. }
  966. srcData = defaultData;
  967. }
  968. LabelGet:
  969. switch (eleClass->byval_arg.type)
  970. {
  971. case IL2CPP_TYPE_BOOLEAN:
  972. {
  973. *(int32_t*)dst = *(uint8_t*)srcData;
  974. break;
  975. }
  976. case IL2CPP_TYPE_CHAR:
  977. {
  978. *(int32_t*)dst = *(uint16_t*)srcData;
  979. break;
  980. }
  981. case IL2CPP_TYPE_I1:
  982. {
  983. *(int32_t*)dst = *(int8_t*)srcData;
  984. break;
  985. }
  986. case IL2CPP_TYPE_U1:
  987. {
  988. *(int32_t*)dst = *(uint8_t*)srcData;
  989. break;
  990. }
  991. case IL2CPP_TYPE_I2:
  992. {
  993. *(int32_t*)dst = *(int16_t*)srcData;
  994. break;
  995. }
  996. case IL2CPP_TYPE_U2:
  997. {
  998. *(int32_t*)dst = *(uint16_t*)srcData;
  999. break;
  1000. }
  1001. case IL2CPP_TYPE_I4:
  1002. case IL2CPP_TYPE_U4:
  1003. {
  1004. *(int32_t*)dst = *(int32_t*)srcData;
  1005. break;
  1006. }
  1007. case IL2CPP_TYPE_I8:
  1008. case IL2CPP_TYPE_U8:
  1009. {
  1010. *(int64_t*)dst = *(int64_t*)srcData;
  1011. break;
  1012. }
  1013. case IL2CPP_TYPE_R4:
  1014. {
  1015. *(float*)dst = *(float*)srcData;
  1016. break;
  1017. }
  1018. case IL2CPP_TYPE_R8:
  1019. {
  1020. *(double*)dst = *(double*)srcData;
  1021. break;
  1022. }
  1023. case IL2CPP_TYPE_I:
  1024. case IL2CPP_TYPE_U:
  1025. {
  1026. #if HYBRIDCLR_ARCH_64
  1027. * (int64_t*)dst = *(int64_t*)srcData;
  1028. #else
  1029. * (int32_t*)dst = *(int32_t*)srcData;
  1030. #endif
  1031. break;
  1032. }
  1033. case IL2CPP_TYPE_VALUETYPE:
  1034. case IL2CPP_TYPE_GENERICINST:
  1035. {
  1036. if (eleClass->enumtype)
  1037. {
  1038. eleClass = eleClass->castClass;
  1039. goto LabelGet;
  1040. }
  1041. std::memmove(dst, srcData, size);
  1042. break;
  1043. }
  1044. default:
  1045. {
  1046. RaiseExecutionEngineException("GetNullableValue2StackDataByType");
  1047. }
  1048. }
  1049. }
  1050. #pragma endregion
  1051. #pragma region misc
  1052. // not boxed data
  1053. inline int32_t HiInterlockedCompareExchange(int32_t* location, int32_t newValue, int32_t oldValue)
  1054. {
  1055. return il2cpp::icalls::mscorlib::System::Threading::Interlocked::CompareExchange(location, newValue, oldValue);
  1056. }
  1057. inline int64_t HiInterlockedCompareExchange(int64_t* location, int64_t newValue, int64_t oldValue)
  1058. {
  1059. return il2cpp::icalls::mscorlib::System::Threading::Interlocked::CompareExchange64(location, newValue, oldValue);
  1060. }
  1061. inline void* HiInterlockedCompareExchange(void** location, void* newValue, void* oldValue)
  1062. {
  1063. return il2cpp::icalls::mscorlib::System::Threading::Interlocked::CompareExchange_T(location, newValue, oldValue);
  1064. }
  1065. inline int32_t HiInterlockedExchange(int32_t* location, int32_t newValue)
  1066. {
  1067. return il2cpp::icalls::mscorlib::System::Threading::Interlocked::Exchange(location, newValue);
  1068. }
  1069. inline int64_t HiInterlockedExchange(int64_t* location, int64_t newValue)
  1070. {
  1071. return il2cpp::icalls::mscorlib::System::Threading::Interlocked::Exchange64(location, newValue);
  1072. }
  1073. inline void* HiInterlockedExchange(void** location, void* newValue)
  1074. {
  1075. return il2cpp::icalls::mscorlib::System::Threading::Interlocked::ExchangePointer(location, newValue);
  1076. }
  1077. #define MEMORY_BARRIER() il2cpp::os::Atomic::FullMemoryBarrier()
  1078. inline int32_t UnsafeEnumCast(void* src, uint16_t type)
  1079. {
  1080. switch ((Il2CppTypeEnum)type)
  1081. {
  1082. case IL2CPP_TYPE_BOOLEAN: return *(int8_t*)src;
  1083. case IL2CPP_TYPE_CHAR: return *(uint16_t*)src;
  1084. case IL2CPP_TYPE_I1: return *(int8_t*)src;
  1085. case IL2CPP_TYPE_U1: return *(uint8_t*)src;
  1086. case IL2CPP_TYPE_I2: return *(int16_t*)src;
  1087. case IL2CPP_TYPE_U2: return *(uint16_t*)src;
  1088. case IL2CPP_TYPE_I4: return *(int32_t*)src;
  1089. case IL2CPP_TYPE_U4: return *(uint32_t*)src;
  1090. default: RaiseExecutionEngineException("UnsafeEnumCast not support type"); return -1;
  1091. }
  1092. }
  1093. // align with the implementation of Enum::get_hashcode
  1094. inline int32_t GetEnumLongHashCode(void* data)
  1095. {
  1096. int64_t value = *((int64_t*)data);
  1097. return (int32_t)(value & 0xffffffff) ^ (int32_t)(value >> 32);
  1098. }
  1099. inline void ConstructorDelegate2(MethodInfo* ctor, Il2CppDelegate* del, Il2CppObject* target, MethodInfo* method)
  1100. {
  1101. #if HYBRIDCLR_UNITY_2021_OR_NEW
  1102. void* ctorArgs[2] = { target, (void*)&method };
  1103. ctor->invoker_method(ctor->methodPointer, ctor, del, ctorArgs, NULL);
  1104. #else
  1105. RaiseNotSupportedException("ConstructorDelegate2");
  1106. #endif
  1107. }
  1108. #pragma endregion
  1109. #pragma region function
  1110. #define SAVE_CUR_FRAME(nextIp) { \
  1111. frame->ip = nextIp; \
  1112. }
  1113. #define LOAD_PREV_FRAME() { \
  1114. imi = (const InterpMethodInfo*)frame->method->interpData; \
  1115. ip = frame->ip; \
  1116. frame->ip = (byte*)&ip; \
  1117. ipBase = imi->codes; \
  1118. localVarBase = frame->stackBasePtr; \
  1119. }
  1120. #define PREPARE_NEW_FRAME_FROM_NATIVE(newMethodInfo, argBasePtr, retPtr) { \
  1121. imi = newMethodInfo->interpData ? (InterpMethodInfo*)newMethodInfo->interpData : InterpreterModule::GetInterpMethodInfo(newMethodInfo); \
  1122. frame = interpFrameGroup.EnterFrameFromNative(newMethodInfo, argBasePtr); \
  1123. frame->ret = retPtr; \
  1124. frame->ip = (byte*)&ip; \
  1125. ip = ipBase = imi->codes; \
  1126. localVarBase = frame->stackBasePtr; \
  1127. }
  1128. #define PREPARE_NEW_FRAME_FROM_INTERPRETER(newMethodInfo, argBasePtr, retPtr) { \
  1129. imi = newMethodInfo->interpData ? (InterpMethodInfo*)newMethodInfo->interpData : InterpreterModule::GetInterpMethodInfo(newMethodInfo); \
  1130. frame = interpFrameGroup.EnterFrameFromInterpreter(newMethodInfo, argBasePtr); \
  1131. frame->ret = retPtr; \
  1132. frame->ip = (byte*)&ip; \
  1133. ip = ipBase = imi->codes; \
  1134. localVarBase = frame->stackBasePtr; \
  1135. }
  1136. #define LEAVE_FRAME() { \
  1137. frame = interpFrameGroup.LeaveFrame(); \
  1138. if (frame) \
  1139. { \
  1140. LOAD_PREV_FRAME(); \
  1141. }\
  1142. else \
  1143. { \
  1144. goto ExitEvalLoop; \
  1145. } \
  1146. }
  1147. #define SET_RET_AND_LEAVE_FRAME(nativeSize, interpSize) { \
  1148. void* _curRet = frame->ret; \
  1149. frame = interpFrameGroup.LeaveFrame(); \
  1150. if (frame) \
  1151. { \
  1152. Copy##interpSize(_curRet, (void*)(localVarBase + __ret)); \
  1153. LOAD_PREV_FRAME(); \
  1154. }\
  1155. else \
  1156. { \
  1157. Copy##nativeSize(_curRet, (void*)(localVarBase + __ret)); \
  1158. goto ExitEvalLoop; \
  1159. } \
  1160. }
  1161. #define CALL_INTERP_VOID(nextIp, methodInfo, argBasePtr) { \
  1162. SAVE_CUR_FRAME(nextIp) \
  1163. PREPARE_NEW_FRAME_FROM_INTERPRETER(methodInfo, argBasePtr, nullptr); \
  1164. }
  1165. #define CALL_INTERP_RET(nextIp, methodInfo, argBasePtr, retPtr) { \
  1166. SAVE_CUR_FRAME(nextIp) \
  1167. PREPARE_NEW_FRAME_FROM_INTERPRETER(methodInfo, argBasePtr, retPtr); \
  1168. }
  1169. #pragma endregion
  1170. #pragma region delegate
  1171. inline void InvokeSingleDelegate(uint16_t invokeParamCount, const MethodInfo * method, Il2CppObject * obj, Managed2NativeCallMethod staticM2NMethod, Managed2NativeCallMethod instanceM2NMethod, uint16_t * argIdxs, StackObject * localVarBase, void* ret)
  1172. {
  1173. if (!InitAndGetInterpreterDirectlyCallMethodPointer(method))
  1174. {
  1175. RaiseAOTGenericMethodNotInstantiatedException(method);
  1176. }
  1177. if (!InterpreterModule::HasImplementCallNative2Managed(method))
  1178. {
  1179. instanceM2NMethod = staticM2NMethod = InterpreterModule::Managed2NativeCallByReflectionInvoke;
  1180. }
  1181. StackObject* target;
  1182. switch ((int32_t)invokeParamCount - (int32_t)method->parameters_count)
  1183. {
  1184. case 0:
  1185. {
  1186. if (hybridclr::metadata::IsInstanceMethod(method))
  1187. {
  1188. CHECK_NOT_NULL_THROW(obj);
  1189. target = localVarBase + argIdxs[0];
  1190. target->obj = obj + IS_CLASS_VALUE_TYPE(method->klass);
  1191. instanceM2NMethod(method, argIdxs, localVarBase, ret);
  1192. }
  1193. else
  1194. {
  1195. RuntimeInitClassCCtor(method);
  1196. staticM2NMethod(method, argIdxs + 1, localVarBase, ret);
  1197. }
  1198. break;
  1199. }
  1200. case -1:
  1201. {
  1202. IL2CPP_ASSERT(!hybridclr::metadata::IsInstanceMethod(method));
  1203. target = localVarBase + argIdxs[0];
  1204. target->obj = obj;
  1205. instanceM2NMethod(method, argIdxs, localVarBase, ret);
  1206. break;
  1207. }
  1208. case 1:
  1209. {
  1210. IL2CPP_ASSERT(invokeParamCount == method->parameters_count + 1);
  1211. IL2CPP_ASSERT(hybridclr::metadata::IsInstanceMethod(method));
  1212. target = localVarBase + argIdxs[1];
  1213. CHECK_NOT_NULL_THROW(target->obj);
  1214. staticM2NMethod(method, argIdxs + 1, localVarBase, ret);
  1215. break;
  1216. }
  1217. default:
  1218. {
  1219. RaiseExecutionEngineException("bad delegate");
  1220. }
  1221. }
  1222. }
  1223. inline Il2CppObject* InvokeDelegateBeginInvoke(const MethodInfo* method, uint16_t* argIdxs, StackObject* localVarBase)
  1224. {
  1225. int32_t paramCount = method->parameters_count;
  1226. RuntimeDelegate* del = (RuntimeDelegate*)localVarBase[argIdxs[0]].obj;
  1227. CHECK_NOT_NULL_THROW(del);
  1228. RuntimeDelegate* callBack = (RuntimeDelegate*)localVarBase[argIdxs[paramCount - 1]].obj;
  1229. RuntimeObject* ctx = (RuntimeObject*)localVarBase[argIdxs[paramCount]].obj;
  1230. void* newArgs[256];
  1231. newArgs[paramCount - 1] = {};
  1232. for (int i = 0; i < paramCount - 2; i++)
  1233. {
  1234. const Il2CppType* argType = GET_METHOD_PARAMETER_TYPE(method->parameters[i]);
  1235. StackObject* argSrc = localVarBase + argIdxs[i+1];
  1236. void** argDst = newArgs + i;
  1237. if (argType->byref)
  1238. {
  1239. argSrc = (StackObject*)argSrc->ptr;
  1240. }
  1241. if (hybridclr::metadata::IsValueType(argType))
  1242. {
  1243. *argDst = il2cpp::vm::Object::Box(il2cpp::vm::Class::FromIl2CppType(argType), argSrc);
  1244. }
  1245. else
  1246. {
  1247. *argDst = argSrc->ptr;
  1248. }
  1249. }
  1250. return (RuntimeObject*)il2cpp_codegen_delegate_begin_invoke((RuntimeDelegate*)del, (void**)newArgs, callBack, ctx);
  1251. }
  1252. inline void InvokeDelegateEndInvokeVoid(MethodInfo* method, Il2CppAsyncResult* asyncResult)
  1253. {
  1254. il2cpp_codegen_delegate_end_invoke(asyncResult, 0);
  1255. }
  1256. inline void InvokeDelegateEndInvokeRet(MethodInfo* method, Il2CppAsyncResult* asyncResult, void* ret)
  1257. {
  1258. Il2CppObject* result = il2cpp_codegen_delegate_end_invoke(asyncResult, 0);
  1259. Il2CppClass* retKlass = il2cpp::vm::Class::FromIl2CppType(method->return_type);
  1260. HiUnboxAny2StackObject(result, retKlass, ret);
  1261. }
  1262. #pragma endregion
  1263. #pragma region exception
  1264. constexpr int EXCEPTION_FLOW_INFO_ALLOC_BATCH_NUM = 3;
  1265. inline void PushExceptionFlowInfo(InterpFrame* frame, MachineState& machine, const ExceptionFlowInfo& newExFlowInfo)
  1266. {
  1267. if (frame->exFlowCount >= frame->exFlowCapaticy)
  1268. {
  1269. ExceptionFlowInfo* newEfi = machine.AllocExceptionFlow(EXCEPTION_FLOW_INFO_ALLOC_BATCH_NUM);
  1270. if (frame->exFlowBase == nullptr)
  1271. {
  1272. frame->exFlowBase = newEfi;
  1273. }
  1274. frame->exFlowCapaticy += EXCEPTION_FLOW_INFO_ALLOC_BATCH_NUM;
  1275. }
  1276. frame->exFlowBase[frame->exFlowCount++] = newExFlowInfo;
  1277. }
  1278. inline void PopPrevExceptionFlowInfo(InterpFrame* frame, ExceptionFlowInfo** curEx)
  1279. {
  1280. if (frame->exFlowCount >= 2)
  1281. {
  1282. frame->exFlowBase[frame->exFlowCount - 2] = frame->exFlowBase[frame->exFlowCount - 1];
  1283. --frame->exFlowCount;
  1284. if (curEx)
  1285. {
  1286. *curEx = frame->exFlowBase + frame->exFlowCount - 1;
  1287. }
  1288. }
  1289. }
  1290. inline void PopCurExceptionFlowInfo(InterpFrame* frame)
  1291. {
  1292. if (frame->exFlowCount >= 1)
  1293. {
  1294. --frame->exFlowCount;
  1295. }
  1296. }
  1297. #define PREPARE_EXCEPTION(_ex_, _firstHanlderIndex_) PushExceptionFlowInfo(frame, machine, {ExceptionFlowType::Exception, (int32_t)(ip - ipBase), _ex_, _firstHanlderIndex_, 0});
  1298. #define FIND_NEXT_EX_HANDLER_OR_UNWIND() \
  1299. while (true) \
  1300. { \
  1301. ExceptionFlowInfo* efi = frame->GetCurExFlow(); \
  1302. IL2CPP_ASSERT(efi && efi->exFlowType == ExceptionFlowType::Exception); \
  1303. IL2CPP_ASSERT(efi->ex); \
  1304. int32_t exClauseNum = (int32_t)imi->exClauseCount; \
  1305. for (; efi->nextExClauseIndex < exClauseNum; ) \
  1306. { \
  1307. for (ExceptionFlowInfo* prevExFlow; (prevExFlow = frame->GetPrevExFlow()) && efi->nextExClauseIndex >= prevExFlow->nextExClauseIndex ;) {\
  1308. const InterpExceptionClause* prevIec = &imi->exClauses[prevExFlow->nextExClauseIndex - 1]; \
  1309. if (!(prevIec->handlerBeginOffset <= efi->throwOffset && efi->throwOffset < prevIec->handlerEndOffset)) { \
  1310. PopPrevExceptionFlowInfo(frame, &efi);\
  1311. } \
  1312. else \
  1313. { \
  1314. break; \
  1315. } \
  1316. }\
  1317. const InterpExceptionClause* iec = &imi->exClauses[efi->nextExClauseIndex++]; \
  1318. if (iec->tryBeginOffset <= efi->throwOffset && efi->throwOffset < iec->tryEndOffset) \
  1319. { \
  1320. switch (iec->flags) \
  1321. { \
  1322. case CorILExceptionClauseType::Exception: \
  1323. { \
  1324. if (il2cpp::vm::Class::IsAssignableFrom(iec->exKlass, efi->ex->klass)) \
  1325. { \
  1326. ip = ipBase + iec->handlerBeginOffset; \
  1327. StackObject* exObj = localVarBase + imi->evalStackBaseOffset; \
  1328. exObj->obj = efi->ex; \
  1329. efi->exFlowType = ExceptionFlowType::Catch;\
  1330. goto LoopStart; \
  1331. } \
  1332. break; \
  1333. } \
  1334. case CorILExceptionClauseType::Filter: \
  1335. { \
  1336. ip = ipBase + iec->filterBeginOffset; \
  1337. StackObject* exObj = localVarBase + imi->evalStackBaseOffset; \
  1338. exObj->obj = efi->ex; \
  1339. goto LoopStart; \
  1340. } \
  1341. case CorILExceptionClauseType::Finally: \
  1342. { \
  1343. ip = ipBase + iec->handlerBeginOffset; \
  1344. goto LoopStart; \
  1345. } \
  1346. case CorILExceptionClauseType::Fault: \
  1347. { \
  1348. ip = ipBase + iec->handlerBeginOffset; \
  1349. goto LoopStart; \
  1350. } \
  1351. default: \
  1352. { \
  1353. RaiseExecutionEngineException(""); \
  1354. } \
  1355. } \
  1356. } \
  1357. } \
  1358. frame = interpFrameGroup.LeaveFrame(); \
  1359. if (frame) \
  1360. { \
  1361. LOAD_PREV_FRAME(); \
  1362. PREPARE_EXCEPTION(efi->ex, 0); \
  1363. }\
  1364. else \
  1365. { \
  1366. lastUnwindException = efi->ex; \
  1367. goto UnWindFail; \
  1368. } \
  1369. }
  1370. #define THROW_EX(_ex_, _firstHandlerIndex_) { \
  1371. Il2CppException* ex = _ex_; \
  1372. il2cpp::vm::Exception::PrepareExceptionForThrow(ex, const_cast<MethodInfo*>(frame->method));\
  1373. CHECK_NOT_NULL_THROW(ex); \
  1374. PREPARE_EXCEPTION(ex, _firstHandlerIndex_); \
  1375. FIND_NEXT_EX_HANDLER_OR_UNWIND(); \
  1376. }
  1377. #define RETHROW_EX() { \
  1378. ExceptionFlowInfo* curExFlow = frame->GetCurExFlow(); \
  1379. IL2CPP_ASSERT(curExFlow->exFlowType == ExceptionFlowType::Catch); \
  1380. il2cpp::vm::Exception::Raise(curExFlow->ex, const_cast<MethodInfo*>(frame->method)); \
  1381. }
  1382. #define CONTINUE_NEXT_FINALLY() { \
  1383. ExceptionFlowInfo* efi = frame->GetCurExFlow(); \
  1384. IL2CPP_ASSERT(efi && efi->exFlowType == ExceptionFlowType::Leave); \
  1385. int32_t exClauseNum = (int32_t)imi->exClauseCount; \
  1386. for (; efi->nextExClauseIndex < exClauseNum; ) \
  1387. { \
  1388. const InterpExceptionClause* iec = &imi->exClauses[efi->nextExClauseIndex++]; \
  1389. if (iec->tryBeginOffset <= efi->throwOffset && efi->throwOffset < iec->tryEndOffset) \
  1390. { \
  1391. if (iec->tryBeginOffset <= efi->leaveTarget && efi->leaveTarget < iec->tryEndOffset) \
  1392. { \
  1393. break; \
  1394. } \
  1395. switch (iec->flags) \
  1396. { \
  1397. case CorILExceptionClauseType::Finally: \
  1398. { \
  1399. ip = ipBase + iec->handlerBeginOffset; \
  1400. goto LoopStart; \
  1401. } \
  1402. case CorILExceptionClauseType::Exception: \
  1403. case CorILExceptionClauseType::Filter: \
  1404. case CorILExceptionClauseType::Fault: \
  1405. { \
  1406. break; \
  1407. } \
  1408. default: \
  1409. { \
  1410. RaiseExecutionEngineException(""); \
  1411. } \
  1412. } \
  1413. } \
  1414. } \
  1415. ip = ipBase + efi->leaveTarget; \
  1416. PopCurExceptionFlowInfo(frame); \
  1417. }
  1418. #define POP_PREV_CATCH_HANDLERS(leaveTarget)\
  1419. { \
  1420. for (ExceptionFlowInfo* prevExFlow; (prevExFlow = frame->GetPrevExFlow()) && prevExFlow->exFlowType == ExceptionFlowType::Catch ;) { \
  1421. const InterpExceptionClause* prevIec = &imi->exClauses[prevExFlow->nextExClauseIndex - 1]; \
  1422. if (!(prevIec->handlerBeginOffset <= leaveTarget && leaveTarget < prevIec->handlerEndOffset)) { \
  1423. PopPrevExceptionFlowInfo(frame, nullptr); \
  1424. } \
  1425. else \
  1426. { \
  1427. break; \
  1428. } \
  1429. }\
  1430. }
  1431. #define LEAVE_EX(target, firstHandlerIndex) { \
  1432. PushExceptionFlowInfo(frame, machine, {ExceptionFlowType::Leave, (int32_t)(ip - ipBase), nullptr, firstHandlerIndex + 1, target}); \
  1433. const InterpExceptionClause* iec = &imi->exClauses[firstHandlerIndex]; \
  1434. POP_PREV_CATCH_HANDLERS(target); \
  1435. ip = ipBase + iec->handlerBeginOffset; \
  1436. }
  1437. #define POP_CUR_CATCH_HANDLERS(leaveTarget)\
  1438. { \
  1439. for (ExceptionFlowInfo* prevExFlow; (prevExFlow = frame->GetCurExFlow()) && prevExFlow->exFlowType == ExceptionFlowType::Catch ;) { \
  1440. const InterpExceptionClause* prevIec = &imi->exClauses[prevExFlow->nextExClauseIndex - 1]; \
  1441. if (!(prevIec->handlerBeginOffset <= leaveTarget && leaveTarget < prevIec->handlerEndOffset)) { \
  1442. PopCurExceptionFlowInfo(frame); \
  1443. } \
  1444. else \
  1445. { \
  1446. break; \
  1447. } \
  1448. }\
  1449. }
  1450. #define LEAVE_EX_DIRECTLY(target) { \
  1451. POP_CUR_CATCH_HANDLERS(target); \
  1452. ip = ipBase + target; \
  1453. }
  1454. #define ENDFILTER_EX(value) {\
  1455. ExceptionFlowInfo* curExFlow = frame->GetCurExFlow(); \
  1456. IL2CPP_ASSERT(curExFlow->exFlowType == ExceptionFlowType::Exception); \
  1457. if(!(value)) \
  1458. {\
  1459. FIND_NEXT_EX_HANDLER_OR_UNWIND();\
  1460. } \
  1461. else \
  1462. { \
  1463. curExFlow->exFlowType = ExceptionFlowType::Catch;\
  1464. }\
  1465. }
  1466. #define ENDFINALLY_EX() {\
  1467. ExceptionFlowInfo* curExFlow = frame->GetCurExFlow(); \
  1468. if (curExFlow->exFlowType == ExceptionFlowType::Exception) \
  1469. { \
  1470. FIND_NEXT_EX_HANDLER_OR_UNWIND(); \
  1471. } \
  1472. else \
  1473. { \
  1474. CONTINUE_NEXT_FINALLY();\
  1475. }\
  1476. }
  1477. #pragma endregion
  1478. const int32_t kMaxRetValueTypeStackObjectSize = 1024;
  1479. void Interpreter::Execute(const MethodInfo* methodInfo, StackObject* args, void* ret)
  1480. {
  1481. MachineState& machine = InterpreterModule::GetCurrentThreadMachineState();
  1482. InterpFrameGroup interpFrameGroup(machine);
  1483. const InterpMethodInfo* imi;
  1484. InterpFrame* frame;
  1485. StackObject* localVarBase;
  1486. byte* ipBase;
  1487. byte* ip;
  1488. Il2CppException* lastUnwindException;
  1489. StackObject* tempRet = nullptr;
  1490. PREPARE_NEW_FRAME_FROM_NATIVE(methodInfo, args, ret);
  1491. LoopStart:
  1492. try
  1493. {
  1494. for (;;)
  1495. {
  1496. switch (*(HiOpcodeEnum*)ip)
  1497. {
  1498. #pragma region memory
  1499. //!!!{{MEMORY
  1500. case HiOpcodeEnum::InitLocals_n_2:
  1501. {
  1502. uint16_t __size = *(uint16_t*)(ip + 2);
  1503. InitDefaultN(localVarBase + imi->localVarBaseOffset, __size);
  1504. ip += 8;
  1505. continue;
  1506. }
  1507. case HiOpcodeEnum::InitLocals_n_4:
  1508. {
  1509. uint32_t __size = *(uint32_t*)(ip + 4);
  1510. InitDefaultN(localVarBase + imi->localVarBaseOffset, __size);
  1511. ip += 8;
  1512. continue;
  1513. }
  1514. case HiOpcodeEnum::InitInlineLocals_n_2:
  1515. {
  1516. uint16_t __size = *(uint16_t*)(ip + 2);
  1517. uint32_t __offset = *(uint32_t*)(ip + 4);
  1518. InitDefaultN(localVarBase + __offset, __size);
  1519. ip += 8;
  1520. continue;
  1521. }
  1522. case HiOpcodeEnum::InitInlineLocals_n_4:
  1523. {
  1524. uint32_t __size = *(uint32_t*)(ip + 4);
  1525. uint32_t __offset = *(uint32_t*)(ip + 8);
  1526. InitDefaultN(localVarBase + __offset, __size);
  1527. ip += 16;
  1528. continue;
  1529. }
  1530. case HiOpcodeEnum::LdlocVarVar:
  1531. {
  1532. uint16_t __dst = *(uint16_t*)(ip + 2);
  1533. uint16_t __src = *(uint16_t*)(ip + 4);
  1534. (*(uint64_t*)(localVarBase + __dst)) = (*(uint64_t*)(localVarBase + __src));
  1535. ip += 8;
  1536. continue;
  1537. }
  1538. case HiOpcodeEnum::LdlocExpandVarVar_i1:
  1539. {
  1540. uint16_t __dst = *(uint16_t*)(ip + 2);
  1541. uint16_t __src = *(uint16_t*)(ip + 4);
  1542. (*(int32_t*)(localVarBase + __dst)) = (*(int8_t*)(localVarBase + __src));
  1543. ip += 8;
  1544. continue;
  1545. }
  1546. case HiOpcodeEnum::LdlocExpandVarVar_u1:
  1547. {
  1548. uint16_t __dst = *(uint16_t*)(ip + 2);
  1549. uint16_t __src = *(uint16_t*)(ip + 4);
  1550. (*(int32_t*)(localVarBase + __dst)) = (*(uint8_t*)(localVarBase + __src));
  1551. ip += 8;
  1552. continue;
  1553. }
  1554. case HiOpcodeEnum::LdlocExpandVarVar_i2:
  1555. {
  1556. uint16_t __dst = *(uint16_t*)(ip + 2);
  1557. uint16_t __src = *(uint16_t*)(ip + 4);
  1558. (*(int32_t*)(localVarBase + __dst)) = (*(int16_t*)(localVarBase + __src));
  1559. ip += 8;
  1560. continue;
  1561. }
  1562. case HiOpcodeEnum::LdlocExpandVarVar_u2:
  1563. {
  1564. uint16_t __dst = *(uint16_t*)(ip + 2);
  1565. uint16_t __src = *(uint16_t*)(ip + 4);
  1566. (*(int32_t*)(localVarBase + __dst)) = (*(uint16_t*)(localVarBase + __src));
  1567. ip += 8;
  1568. continue;
  1569. }
  1570. case HiOpcodeEnum::LdlocVarVarSize:
  1571. {
  1572. uint16_t __dst = *(uint16_t*)(ip + 2);
  1573. uint16_t __src = *(uint16_t*)(ip + 4);
  1574. uint16_t __size = *(uint16_t*)(ip + 6);
  1575. std::memmove((void*)(localVarBase + __dst), (void*)(localVarBase + __src), __size);
  1576. ip += 8;
  1577. continue;
  1578. }
  1579. case HiOpcodeEnum::LdlocVarAddress:
  1580. {
  1581. uint16_t __dst = *(uint16_t*)(ip + 2);
  1582. uint16_t __src = *(uint16_t*)(ip + 4);
  1583. (*(void**)(localVarBase + __dst)) = (void*)(localVarBase + __src);
  1584. ip += 8;
  1585. continue;
  1586. }
  1587. case HiOpcodeEnum::LdcVarConst_1:
  1588. {
  1589. uint16_t __dst = *(uint16_t*)(ip + 4);
  1590. uint8_t __src = *(uint8_t*)(ip + 2);
  1591. (*(int32_t*)(localVarBase + __dst)) = __src;
  1592. ip += 8;
  1593. continue;
  1594. }
  1595. case HiOpcodeEnum::LdcVarConst_2:
  1596. {
  1597. uint16_t __dst = *(uint16_t*)(ip + 2);
  1598. uint16_t __src = *(uint16_t*)(ip + 4);
  1599. (*(int32_t*)(localVarBase + __dst)) = __src;
  1600. ip += 8;
  1601. continue;
  1602. }
  1603. case HiOpcodeEnum::LdcVarConst_4:
  1604. {
  1605. uint16_t __dst = *(uint16_t*)(ip + 2);
  1606. uint32_t __src = *(uint32_t*)(ip + 4);
  1607. (*(int32_t*)(localVarBase + __dst)) = __src;
  1608. ip += 8;
  1609. continue;
  1610. }
  1611. case HiOpcodeEnum::LdcVarConst_8:
  1612. {
  1613. uint16_t __dst = *(uint16_t*)(ip + 2);
  1614. uint64_t __src = *(uint64_t*)(ip + 8);
  1615. (*(uint64_t*)(localVarBase + __dst)) = __src;
  1616. ip += 16;
  1617. continue;
  1618. }
  1619. case HiOpcodeEnum::LdnullVar:
  1620. {
  1621. uint16_t __dst = *(uint16_t*)(ip + 2);
  1622. (*(void**)(localVarBase + __dst)) = nullptr;
  1623. ip += 8;
  1624. continue;
  1625. }
  1626. case HiOpcodeEnum::LdindVarVar_i1:
  1627. {
  1628. uint16_t __dst = *(uint16_t*)(ip + 2);
  1629. uint16_t __src = *(uint16_t*)(ip + 4);
  1630. (*(int32_t*)(localVarBase + __dst)) = (*(int8_t*)*(void**)(localVarBase + __src));
  1631. ip += 8;
  1632. continue;
  1633. }
  1634. case HiOpcodeEnum::LdindVarVar_u1:
  1635. {
  1636. uint16_t __dst = *(uint16_t*)(ip + 2);
  1637. uint16_t __src = *(uint16_t*)(ip + 4);
  1638. (*(int32_t*)(localVarBase + __dst)) = (*(uint8_t*)*(void**)(localVarBase + __src));
  1639. ip += 8;
  1640. continue;
  1641. }
  1642. case HiOpcodeEnum::LdindVarVar_i2:
  1643. {
  1644. uint16_t __dst = *(uint16_t*)(ip + 2);
  1645. uint16_t __src = *(uint16_t*)(ip + 4);
  1646. (*(int32_t*)(localVarBase + __dst)) = (*(int16_t*)*(void**)(localVarBase + __src));
  1647. ip += 8;
  1648. continue;
  1649. }
  1650. case HiOpcodeEnum::LdindVarVar_u2:
  1651. {
  1652. uint16_t __dst = *(uint16_t*)(ip + 2);
  1653. uint16_t __src = *(uint16_t*)(ip + 4);
  1654. (*(int32_t*)(localVarBase + __dst)) = (*(uint16_t*)*(void**)(localVarBase + __src));
  1655. ip += 8;
  1656. continue;
  1657. }
  1658. case HiOpcodeEnum::LdindVarVar_i4:
  1659. {
  1660. uint16_t __dst = *(uint16_t*)(ip + 2);
  1661. uint16_t __src = *(uint16_t*)(ip + 4);
  1662. (*(int32_t*)(localVarBase + __dst)) = (*(int32_t*)*(void**)(localVarBase + __src));
  1663. ip += 8;
  1664. continue;
  1665. }
  1666. case HiOpcodeEnum::LdindVarVar_u4:
  1667. {
  1668. uint16_t __dst = *(uint16_t*)(ip + 2);
  1669. uint16_t __src = *(uint16_t*)(ip + 4);
  1670. (*(int32_t*)(localVarBase + __dst)) = (*(uint32_t*)*(void**)(localVarBase + __src));
  1671. ip += 8;
  1672. continue;
  1673. }
  1674. case HiOpcodeEnum::LdindVarVar_i8:
  1675. {
  1676. uint16_t __dst = *(uint16_t*)(ip + 2);
  1677. uint16_t __src = *(uint16_t*)(ip + 4);
  1678. (*(int64_t*)(localVarBase + __dst)) = (*(int64_t*)*(void**)(localVarBase + __src));
  1679. ip += 8;
  1680. continue;
  1681. }
  1682. case HiOpcodeEnum::LdindVarVar_f4:
  1683. {
  1684. uint16_t __dst = *(uint16_t*)(ip + 2);
  1685. uint16_t __src = *(uint16_t*)(ip + 4);
  1686. (*(float*)(localVarBase + __dst)) = (*(float*)*(void**)(localVarBase + __src));
  1687. ip += 8;
  1688. continue;
  1689. }
  1690. case HiOpcodeEnum::LdindVarVar_f8:
  1691. {
  1692. uint16_t __dst = *(uint16_t*)(ip + 2);
  1693. uint16_t __src = *(uint16_t*)(ip + 4);
  1694. (*(double*)(localVarBase + __dst)) = (*(double*)*(void**)(localVarBase + __src));
  1695. ip += 8;
  1696. continue;
  1697. }
  1698. case HiOpcodeEnum::StindVarVar_i1:
  1699. {
  1700. uint16_t __dst = *(uint16_t*)(ip + 2);
  1701. uint16_t __src = *(uint16_t*)(ip + 4);
  1702. (*(int8_t*)*(void**)(localVarBase + __dst)) = (*(int8_t*)(localVarBase + __src));
  1703. ip += 8;
  1704. continue;
  1705. }
  1706. case HiOpcodeEnum::StindVarVar_i2:
  1707. {
  1708. uint16_t __dst = *(uint16_t*)(ip + 2);
  1709. uint16_t __src = *(uint16_t*)(ip + 4);
  1710. (*(int16_t*)*(void**)(localVarBase + __dst)) = (*(int16_t*)(localVarBase + __src));
  1711. ip += 8;
  1712. continue;
  1713. }
  1714. case HiOpcodeEnum::StindVarVar_i4:
  1715. {
  1716. uint16_t __dst = *(uint16_t*)(ip + 2);
  1717. uint16_t __src = *(uint16_t*)(ip + 4);
  1718. (*(int32_t*)*(void**)(localVarBase + __dst)) = (*(int32_t*)(localVarBase + __src));
  1719. ip += 8;
  1720. continue;
  1721. }
  1722. case HiOpcodeEnum::StindVarVar_i8:
  1723. {
  1724. uint16_t __dst = *(uint16_t*)(ip + 2);
  1725. uint16_t __src = *(uint16_t*)(ip + 4);
  1726. (*(int64_t*)*(void**)(localVarBase + __dst)) = (*(int64_t*)(localVarBase + __src));
  1727. ip += 8;
  1728. continue;
  1729. }
  1730. case HiOpcodeEnum::StindVarVar_f4:
  1731. {
  1732. uint16_t __dst = *(uint16_t*)(ip + 2);
  1733. uint16_t __src = *(uint16_t*)(ip + 4);
  1734. (*(float*)*(void**)(localVarBase + __dst)) = (*(float*)(localVarBase + __src));
  1735. ip += 8;
  1736. continue;
  1737. }
  1738. case HiOpcodeEnum::StindVarVar_f8:
  1739. {
  1740. uint16_t __dst = *(uint16_t*)(ip + 2);
  1741. uint16_t __src = *(uint16_t*)(ip + 4);
  1742. (*(double*)*(void**)(localVarBase + __dst)) = (*(double*)(localVarBase + __src));
  1743. ip += 8;
  1744. continue;
  1745. }
  1746. case HiOpcodeEnum::StindVarVar_ref:
  1747. {
  1748. uint16_t __dst = *(uint16_t*)(ip + 2);
  1749. uint16_t __src = *(uint16_t*)(ip + 4);
  1750. (*(Il2CppObject**)*(void**)(localVarBase + __dst)) = (*(Il2CppObject**)(localVarBase + __src)); HYBRIDCLR_SET_WRITE_BARRIER((void**)(*(void**)(localVarBase + __dst)));
  1751. ip += 8;
  1752. continue;
  1753. }
  1754. case HiOpcodeEnum::LocalAllocVarVar_n_2:
  1755. {
  1756. uint16_t __dst = *(uint16_t*)(ip + 2);
  1757. uint16_t __size = *(uint16_t*)(ip + 4);
  1758. (*(void**)(localVarBase + __dst)) = LOCAL_ALLOC((*(uint16_t*)(localVarBase + __size)));
  1759. ip += 8;
  1760. continue;
  1761. }
  1762. case HiOpcodeEnum::LocalAllocVarVar_n_4:
  1763. {
  1764. uint16_t __dst = *(uint16_t*)(ip + 2);
  1765. uint16_t __size = *(uint16_t*)(ip + 4);
  1766. (*(void**)(localVarBase + __dst)) = LOCAL_ALLOC((*(uint32_t*)(localVarBase + __size)));
  1767. ip += 8;
  1768. continue;
  1769. }
  1770. case HiOpcodeEnum::InitblkVarVarVar:
  1771. {
  1772. uint16_t __addr = *(uint16_t*)(ip + 2);
  1773. uint16_t __value = *(uint16_t*)(ip + 4);
  1774. uint16_t __size = *(uint16_t*)(ip + 6);
  1775. std::memset((*(void**)(localVarBase + __addr)), (*(uint8_t*)(localVarBase + __value)), (*(uint32_t*)(localVarBase + __size)));
  1776. ip += 8;
  1777. continue;
  1778. }
  1779. case HiOpcodeEnum::CpblkVarVar:
  1780. {
  1781. uint16_t __dst = *(uint16_t*)(ip + 2);
  1782. uint16_t __src = *(uint16_t*)(ip + 4);
  1783. uint16_t __size = *(uint16_t*)(ip + 6);
  1784. std::memmove((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)), (*(uint32_t*)(localVarBase + __size)));
  1785. ip += 8;
  1786. continue;
  1787. }
  1788. case HiOpcodeEnum::MemoryBarrier:
  1789. {
  1790. MEMORY_BARRIER();
  1791. ip += 8;
  1792. continue;
  1793. }
  1794. //!!!}}MEMORY
  1795. #pragma endregion
  1796. #pragma region CONVERT
  1797. //!!!{{CONVERT
  1798. case HiOpcodeEnum::ConvertVarVar_i4_i1:
  1799. {
  1800. uint16_t __dst = *(uint16_t*)(ip + 2);
  1801. uint16_t __src = *(uint16_t*)(ip + 4);
  1802. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(int32_t*)(localVarBase + __src)));
  1803. ip += 8;
  1804. continue;
  1805. }
  1806. case HiOpcodeEnum::ConvertVarVar_i4_u1:
  1807. {
  1808. uint16_t __dst = *(uint16_t*)(ip + 2);
  1809. uint16_t __src = *(uint16_t*)(ip + 4);
  1810. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  1811. ip += 8;
  1812. continue;
  1813. }
  1814. case HiOpcodeEnum::ConvertVarVar_i4_i2:
  1815. {
  1816. uint16_t __dst = *(uint16_t*)(ip + 2);
  1817. uint16_t __src = *(uint16_t*)(ip + 4);
  1818. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(int32_t*)(localVarBase + __src)));
  1819. ip += 8;
  1820. continue;
  1821. }
  1822. case HiOpcodeEnum::ConvertVarVar_i4_u2:
  1823. {
  1824. uint16_t __dst = *(uint16_t*)(ip + 2);
  1825. uint16_t __src = *(uint16_t*)(ip + 4);
  1826. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  1827. ip += 8;
  1828. continue;
  1829. }
  1830. case HiOpcodeEnum::ConvertVarVar_i4_i4:
  1831. {
  1832. uint16_t __dst = *(uint16_t*)(ip + 2);
  1833. uint16_t __src = *(uint16_t*)(ip + 4);
  1834. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(int32_t*)(localVarBase + __src)));
  1835. ip += 8;
  1836. continue;
  1837. }
  1838. case HiOpcodeEnum::ConvertVarVar_i4_u4:
  1839. {
  1840. uint16_t __dst = *(uint16_t*)(ip + 2);
  1841. uint16_t __src = *(uint16_t*)(ip + 4);
  1842. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  1843. ip += 8;
  1844. continue;
  1845. }
  1846. case HiOpcodeEnum::ConvertVarVar_i4_i8:
  1847. {
  1848. uint16_t __dst = *(uint16_t*)(ip + 2);
  1849. uint16_t __src = *(uint16_t*)(ip + 4);
  1850. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(int32_t*)(localVarBase + __src)));
  1851. ip += 8;
  1852. continue;
  1853. }
  1854. case HiOpcodeEnum::ConvertVarVar_i4_u8:
  1855. {
  1856. uint16_t __dst = *(uint16_t*)(ip + 2);
  1857. uint16_t __src = *(uint16_t*)(ip + 4);
  1858. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  1859. ip += 8;
  1860. continue;
  1861. }
  1862. case HiOpcodeEnum::ConvertVarVar_i4_f4:
  1863. {
  1864. uint16_t __dst = *(uint16_t*)(ip + 2);
  1865. uint16_t __src = *(uint16_t*)(ip + 4);
  1866. (*(float*)(localVarBase + __dst)) = (float)((*(int32_t*)(localVarBase + __src)));
  1867. ip += 8;
  1868. continue;
  1869. }
  1870. case HiOpcodeEnum::ConvertVarVar_i4_f8:
  1871. {
  1872. uint16_t __dst = *(uint16_t*)(ip + 2);
  1873. uint16_t __src = *(uint16_t*)(ip + 4);
  1874. (*(double*)(localVarBase + __dst)) = (double)((*(int32_t*)(localVarBase + __src)));
  1875. ip += 8;
  1876. continue;
  1877. }
  1878. case HiOpcodeEnum::ConvertVarVar_u4_i1:
  1879. {
  1880. uint16_t __dst = *(uint16_t*)(ip + 2);
  1881. uint16_t __src = *(uint16_t*)(ip + 4);
  1882. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(uint32_t*)(localVarBase + __src)));
  1883. ip += 8;
  1884. continue;
  1885. }
  1886. case HiOpcodeEnum::ConvertVarVar_u4_u1:
  1887. {
  1888. uint16_t __dst = *(uint16_t*)(ip + 2);
  1889. uint16_t __src = *(uint16_t*)(ip + 4);
  1890. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)((*(uint32_t*)(localVarBase + __src)));
  1891. ip += 8;
  1892. continue;
  1893. }
  1894. case HiOpcodeEnum::ConvertVarVar_u4_i2:
  1895. {
  1896. uint16_t __dst = *(uint16_t*)(ip + 2);
  1897. uint16_t __src = *(uint16_t*)(ip + 4);
  1898. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(uint32_t*)(localVarBase + __src)));
  1899. ip += 8;
  1900. continue;
  1901. }
  1902. case HiOpcodeEnum::ConvertVarVar_u4_u2:
  1903. {
  1904. uint16_t __dst = *(uint16_t*)(ip + 2);
  1905. uint16_t __src = *(uint16_t*)(ip + 4);
  1906. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)((*(uint32_t*)(localVarBase + __src)));
  1907. ip += 8;
  1908. continue;
  1909. }
  1910. case HiOpcodeEnum::ConvertVarVar_u4_i4:
  1911. {
  1912. uint16_t __dst = *(uint16_t*)(ip + 2);
  1913. uint16_t __src = *(uint16_t*)(ip + 4);
  1914. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(uint32_t*)(localVarBase + __src)));
  1915. ip += 8;
  1916. continue;
  1917. }
  1918. case HiOpcodeEnum::ConvertVarVar_u4_u4:
  1919. {
  1920. uint16_t __dst = *(uint16_t*)(ip + 2);
  1921. uint16_t __src = *(uint16_t*)(ip + 4);
  1922. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)((*(uint32_t*)(localVarBase + __src)));
  1923. ip += 8;
  1924. continue;
  1925. }
  1926. case HiOpcodeEnum::ConvertVarVar_u4_i8:
  1927. {
  1928. uint16_t __dst = *(uint16_t*)(ip + 2);
  1929. uint16_t __src = *(uint16_t*)(ip + 4);
  1930. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(uint32_t*)(localVarBase + __src)));
  1931. ip += 8;
  1932. continue;
  1933. }
  1934. case HiOpcodeEnum::ConvertVarVar_u4_u8:
  1935. {
  1936. uint16_t __dst = *(uint16_t*)(ip + 2);
  1937. uint16_t __src = *(uint16_t*)(ip + 4);
  1938. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)((*(uint32_t*)(localVarBase + __src)));
  1939. ip += 8;
  1940. continue;
  1941. }
  1942. case HiOpcodeEnum::ConvertVarVar_u4_f4:
  1943. {
  1944. uint16_t __dst = *(uint16_t*)(ip + 2);
  1945. uint16_t __src = *(uint16_t*)(ip + 4);
  1946. (*(float*)(localVarBase + __dst)) = (float)((*(uint32_t*)(localVarBase + __src)));
  1947. ip += 8;
  1948. continue;
  1949. }
  1950. case HiOpcodeEnum::ConvertVarVar_u4_f8:
  1951. {
  1952. uint16_t __dst = *(uint16_t*)(ip + 2);
  1953. uint16_t __src = *(uint16_t*)(ip + 4);
  1954. (*(double*)(localVarBase + __dst)) = (double)((*(uint32_t*)(localVarBase + __src)));
  1955. ip += 8;
  1956. continue;
  1957. }
  1958. case HiOpcodeEnum::ConvertVarVar_i8_i1:
  1959. {
  1960. uint16_t __dst = *(uint16_t*)(ip + 2);
  1961. uint16_t __src = *(uint16_t*)(ip + 4);
  1962. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(int64_t*)(localVarBase + __src)));
  1963. ip += 8;
  1964. continue;
  1965. }
  1966. case HiOpcodeEnum::ConvertVarVar_i8_u1:
  1967. {
  1968. uint16_t __dst = *(uint16_t*)(ip + 2);
  1969. uint16_t __src = *(uint16_t*)(ip + 4);
  1970. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  1971. ip += 8;
  1972. continue;
  1973. }
  1974. case HiOpcodeEnum::ConvertVarVar_i8_i2:
  1975. {
  1976. uint16_t __dst = *(uint16_t*)(ip + 2);
  1977. uint16_t __src = *(uint16_t*)(ip + 4);
  1978. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(int64_t*)(localVarBase + __src)));
  1979. ip += 8;
  1980. continue;
  1981. }
  1982. case HiOpcodeEnum::ConvertVarVar_i8_u2:
  1983. {
  1984. uint16_t __dst = *(uint16_t*)(ip + 2);
  1985. uint16_t __src = *(uint16_t*)(ip + 4);
  1986. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  1987. ip += 8;
  1988. continue;
  1989. }
  1990. case HiOpcodeEnum::ConvertVarVar_i8_i4:
  1991. {
  1992. uint16_t __dst = *(uint16_t*)(ip + 2);
  1993. uint16_t __src = *(uint16_t*)(ip + 4);
  1994. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(int64_t*)(localVarBase + __src)));
  1995. ip += 8;
  1996. continue;
  1997. }
  1998. case HiOpcodeEnum::ConvertVarVar_i8_u4:
  1999. {
  2000. uint16_t __dst = *(uint16_t*)(ip + 2);
  2001. uint16_t __src = *(uint16_t*)(ip + 4);
  2002. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  2003. ip += 8;
  2004. continue;
  2005. }
  2006. case HiOpcodeEnum::ConvertVarVar_i8_i8:
  2007. {
  2008. uint16_t __dst = *(uint16_t*)(ip + 2);
  2009. uint16_t __src = *(uint16_t*)(ip + 4);
  2010. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(int64_t*)(localVarBase + __src)));
  2011. ip += 8;
  2012. continue;
  2013. }
  2014. case HiOpcodeEnum::ConvertVarVar_i8_u8:
  2015. {
  2016. uint16_t __dst = *(uint16_t*)(ip + 2);
  2017. uint16_t __src = *(uint16_t*)(ip + 4);
  2018. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  2019. ip += 8;
  2020. continue;
  2021. }
  2022. case HiOpcodeEnum::ConvertVarVar_i8_f4:
  2023. {
  2024. uint16_t __dst = *(uint16_t*)(ip + 2);
  2025. uint16_t __src = *(uint16_t*)(ip + 4);
  2026. (*(float*)(localVarBase + __dst)) = (float)((*(int64_t*)(localVarBase + __src)));
  2027. ip += 8;
  2028. continue;
  2029. }
  2030. case HiOpcodeEnum::ConvertVarVar_i8_f8:
  2031. {
  2032. uint16_t __dst = *(uint16_t*)(ip + 2);
  2033. uint16_t __src = *(uint16_t*)(ip + 4);
  2034. (*(double*)(localVarBase + __dst)) = (double)((*(int64_t*)(localVarBase + __src)));
  2035. ip += 8;
  2036. continue;
  2037. }
  2038. case HiOpcodeEnum::ConvertVarVar_u8_i1:
  2039. {
  2040. uint16_t __dst = *(uint16_t*)(ip + 2);
  2041. uint16_t __src = *(uint16_t*)(ip + 4);
  2042. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(uint64_t*)(localVarBase + __src)));
  2043. ip += 8;
  2044. continue;
  2045. }
  2046. case HiOpcodeEnum::ConvertVarVar_u8_u1:
  2047. {
  2048. uint16_t __dst = *(uint16_t*)(ip + 2);
  2049. uint16_t __src = *(uint16_t*)(ip + 4);
  2050. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)((*(uint64_t*)(localVarBase + __src)));
  2051. ip += 8;
  2052. continue;
  2053. }
  2054. case HiOpcodeEnum::ConvertVarVar_u8_i2:
  2055. {
  2056. uint16_t __dst = *(uint16_t*)(ip + 2);
  2057. uint16_t __src = *(uint16_t*)(ip + 4);
  2058. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(uint64_t*)(localVarBase + __src)));
  2059. ip += 8;
  2060. continue;
  2061. }
  2062. case HiOpcodeEnum::ConvertVarVar_u8_u2:
  2063. {
  2064. uint16_t __dst = *(uint16_t*)(ip + 2);
  2065. uint16_t __src = *(uint16_t*)(ip + 4);
  2066. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)((*(uint64_t*)(localVarBase + __src)));
  2067. ip += 8;
  2068. continue;
  2069. }
  2070. case HiOpcodeEnum::ConvertVarVar_u8_i4:
  2071. {
  2072. uint16_t __dst = *(uint16_t*)(ip + 2);
  2073. uint16_t __src = *(uint16_t*)(ip + 4);
  2074. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(uint64_t*)(localVarBase + __src)));
  2075. ip += 8;
  2076. continue;
  2077. }
  2078. case HiOpcodeEnum::ConvertVarVar_u8_u4:
  2079. {
  2080. uint16_t __dst = *(uint16_t*)(ip + 2);
  2081. uint16_t __src = *(uint16_t*)(ip + 4);
  2082. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)((*(uint64_t*)(localVarBase + __src)));
  2083. ip += 8;
  2084. continue;
  2085. }
  2086. case HiOpcodeEnum::ConvertVarVar_u8_i8:
  2087. {
  2088. uint16_t __dst = *(uint16_t*)(ip + 2);
  2089. uint16_t __src = *(uint16_t*)(ip + 4);
  2090. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(uint64_t*)(localVarBase + __src)));
  2091. ip += 8;
  2092. continue;
  2093. }
  2094. case HiOpcodeEnum::ConvertVarVar_u8_u8:
  2095. {
  2096. uint16_t __dst = *(uint16_t*)(ip + 2);
  2097. uint16_t __src = *(uint16_t*)(ip + 4);
  2098. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)((*(uint64_t*)(localVarBase + __src)));
  2099. ip += 8;
  2100. continue;
  2101. }
  2102. case HiOpcodeEnum::ConvertVarVar_u8_f4:
  2103. {
  2104. uint16_t __dst = *(uint16_t*)(ip + 2);
  2105. uint16_t __src = *(uint16_t*)(ip + 4);
  2106. (*(float*)(localVarBase + __dst)) = (float)((*(uint64_t*)(localVarBase + __src)));
  2107. ip += 8;
  2108. continue;
  2109. }
  2110. case HiOpcodeEnum::ConvertVarVar_u8_f8:
  2111. {
  2112. uint16_t __dst = *(uint16_t*)(ip + 2);
  2113. uint16_t __src = *(uint16_t*)(ip + 4);
  2114. (*(double*)(localVarBase + __dst)) = (double)((*(uint64_t*)(localVarBase + __src)));
  2115. ip += 8;
  2116. continue;
  2117. }
  2118. case HiOpcodeEnum::ConvertVarVar_f4_i1:
  2119. {
  2120. uint16_t __dst = *(uint16_t*)(ip + 2);
  2121. uint16_t __src = *(uint16_t*)(ip + 4);
  2122. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int8_t>((*(float*)(localVarBase + __src)));
  2123. ip += 8;
  2124. continue;
  2125. }
  2126. case HiOpcodeEnum::ConvertVarVar_f4_u1:
  2127. {
  2128. uint16_t __dst = *(uint16_t*)(ip + 2);
  2129. uint16_t __src = *(uint16_t*)(ip + 4);
  2130. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint8_t, int32_t>((*(float*)(localVarBase + __src)));
  2131. ip += 8;
  2132. continue;
  2133. }
  2134. case HiOpcodeEnum::ConvertVarVar_f4_i2:
  2135. {
  2136. uint16_t __dst = *(uint16_t*)(ip + 2);
  2137. uint16_t __src = *(uint16_t*)(ip + 4);
  2138. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int16_t>((*(float*)(localVarBase + __src)));
  2139. ip += 8;
  2140. continue;
  2141. }
  2142. case HiOpcodeEnum::ConvertVarVar_f4_u2:
  2143. {
  2144. uint16_t __dst = *(uint16_t*)(ip + 2);
  2145. uint16_t __src = *(uint16_t*)(ip + 4);
  2146. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint16_t, int32_t>((*(float*)(localVarBase + __src)));
  2147. ip += 8;
  2148. continue;
  2149. }
  2150. case HiOpcodeEnum::ConvertVarVar_f4_i4:
  2151. {
  2152. uint16_t __dst = *(uint16_t*)(ip + 2);
  2153. uint16_t __src = *(uint16_t*)(ip + 4);
  2154. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int32_t>((*(float*)(localVarBase + __src)));
  2155. ip += 8;
  2156. continue;
  2157. }
  2158. case HiOpcodeEnum::ConvertVarVar_f4_u4:
  2159. {
  2160. uint16_t __dst = *(uint16_t*)(ip + 2);
  2161. uint16_t __src = *(uint16_t*)(ip + 4);
  2162. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint32_t, int32_t>((*(float*)(localVarBase + __src)));
  2163. ip += 8;
  2164. continue;
  2165. }
  2166. case HiOpcodeEnum::ConvertVarVar_f4_i8:
  2167. {
  2168. uint16_t __dst = *(uint16_t*)(ip + 2);
  2169. uint16_t __src = *(uint16_t*)(ip + 4);
  2170. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int64_t>((*(float*)(localVarBase + __src)));
  2171. ip += 8;
  2172. continue;
  2173. }
  2174. case HiOpcodeEnum::ConvertVarVar_f4_u8:
  2175. {
  2176. uint16_t __dst = *(uint16_t*)(ip + 2);
  2177. uint16_t __src = *(uint16_t*)(ip + 4);
  2178. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint64_t, int64_t>((*(float*)(localVarBase + __src)));
  2179. ip += 8;
  2180. continue;
  2181. }
  2182. case HiOpcodeEnum::ConvertVarVar_f4_f4:
  2183. {
  2184. uint16_t __dst = *(uint16_t*)(ip + 2);
  2185. uint16_t __src = *(uint16_t*)(ip + 4);
  2186. (*(float*)(localVarBase + __dst)) = (float)((*(float*)(localVarBase + __src)));
  2187. ip += 8;
  2188. continue;
  2189. }
  2190. case HiOpcodeEnum::ConvertVarVar_f4_f8:
  2191. {
  2192. uint16_t __dst = *(uint16_t*)(ip + 2);
  2193. uint16_t __src = *(uint16_t*)(ip + 4);
  2194. (*(double*)(localVarBase + __dst)) = (double)((*(float*)(localVarBase + __src)));
  2195. ip += 8;
  2196. continue;
  2197. }
  2198. case HiOpcodeEnum::ConvertVarVar_f8_i1:
  2199. {
  2200. uint16_t __dst = *(uint16_t*)(ip + 2);
  2201. uint16_t __src = *(uint16_t*)(ip + 4);
  2202. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int8_t>((*(double*)(localVarBase + __src)));
  2203. ip += 8;
  2204. continue;
  2205. }
  2206. case HiOpcodeEnum::ConvertVarVar_f8_u1:
  2207. {
  2208. uint16_t __dst = *(uint16_t*)(ip + 2);
  2209. uint16_t __src = *(uint16_t*)(ip + 4);
  2210. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint8_t, int32_t>((*(double*)(localVarBase + __src)));
  2211. ip += 8;
  2212. continue;
  2213. }
  2214. case HiOpcodeEnum::ConvertVarVar_f8_i2:
  2215. {
  2216. uint16_t __dst = *(uint16_t*)(ip + 2);
  2217. uint16_t __src = *(uint16_t*)(ip + 4);
  2218. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int16_t>((*(double*)(localVarBase + __src)));
  2219. ip += 8;
  2220. continue;
  2221. }
  2222. case HiOpcodeEnum::ConvertVarVar_f8_u2:
  2223. {
  2224. uint16_t __dst = *(uint16_t*)(ip + 2);
  2225. uint16_t __src = *(uint16_t*)(ip + 4);
  2226. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint16_t, int32_t>((*(double*)(localVarBase + __src)));
  2227. ip += 8;
  2228. continue;
  2229. }
  2230. case HiOpcodeEnum::ConvertVarVar_f8_i4:
  2231. {
  2232. uint16_t __dst = *(uint16_t*)(ip + 2);
  2233. uint16_t __src = *(uint16_t*)(ip + 4);
  2234. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int32_t>((*(double*)(localVarBase + __src)));
  2235. ip += 8;
  2236. continue;
  2237. }
  2238. case HiOpcodeEnum::ConvertVarVar_f8_u4:
  2239. {
  2240. uint16_t __dst = *(uint16_t*)(ip + 2);
  2241. uint16_t __src = *(uint16_t*)(ip + 4);
  2242. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint32_t, int32_t>((*(double*)(localVarBase + __src)));
  2243. ip += 8;
  2244. continue;
  2245. }
  2246. case HiOpcodeEnum::ConvertVarVar_f8_i8:
  2247. {
  2248. uint16_t __dst = *(uint16_t*)(ip + 2);
  2249. uint16_t __src = *(uint16_t*)(ip + 4);
  2250. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int64_t>((*(double*)(localVarBase + __src)));
  2251. ip += 8;
  2252. continue;
  2253. }
  2254. case HiOpcodeEnum::ConvertVarVar_f8_u8:
  2255. {
  2256. uint16_t __dst = *(uint16_t*)(ip + 2);
  2257. uint16_t __src = *(uint16_t*)(ip + 4);
  2258. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint64_t, int64_t>((*(double*)(localVarBase + __src)));
  2259. ip += 8;
  2260. continue;
  2261. }
  2262. case HiOpcodeEnum::ConvertVarVar_f8_f4:
  2263. {
  2264. uint16_t __dst = *(uint16_t*)(ip + 2);
  2265. uint16_t __src = *(uint16_t*)(ip + 4);
  2266. (*(float*)(localVarBase + __dst)) = (float)((*(double*)(localVarBase + __src)));
  2267. ip += 8;
  2268. continue;
  2269. }
  2270. case HiOpcodeEnum::ConvertVarVar_f8_f8:
  2271. {
  2272. uint16_t __dst = *(uint16_t*)(ip + 2);
  2273. uint16_t __src = *(uint16_t*)(ip + 4);
  2274. (*(double*)(localVarBase + __dst)) = (double)((*(double*)(localVarBase + __src)));
  2275. ip += 8;
  2276. continue;
  2277. }
  2278. case HiOpcodeEnum::ConvertOverflowVarVar_i4_i1:
  2279. {
  2280. uint16_t __dst = *(uint16_t*)(ip + 2);
  2281. uint16_t __src = *(uint16_t*)(ip + 4);
  2282. int32_t val = (*(int32_t*)(localVarBase + __src));
  2283. if (CheckConvertOverflow_i4_i1(*(int32_t*)(localVarBase + __src)))
  2284. {
  2285. il2cpp::vm::Exception::RaiseOverflowException();
  2286. }
  2287. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(int32_t*)(localVarBase + __src)));
  2288. ip += 8;
  2289. continue;
  2290. }
  2291. case HiOpcodeEnum::ConvertOverflowVarVar_i4_u1:
  2292. {
  2293. uint16_t __dst = *(uint16_t*)(ip + 2);
  2294. uint16_t __src = *(uint16_t*)(ip + 4);
  2295. int32_t val = (*(int32_t*)(localVarBase + __src));
  2296. if (CheckConvertOverflow_i4_u1(*(int32_t*)(localVarBase + __src)))
  2297. {
  2298. il2cpp::vm::Exception::RaiseOverflowException();
  2299. }
  2300. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  2301. ip += 8;
  2302. continue;
  2303. }
  2304. case HiOpcodeEnum::ConvertOverflowVarVar_i4_i2:
  2305. {
  2306. uint16_t __dst = *(uint16_t*)(ip + 2);
  2307. uint16_t __src = *(uint16_t*)(ip + 4);
  2308. int32_t val = (*(int32_t*)(localVarBase + __src));
  2309. if (CheckConvertOverflow_i4_i2(*(int32_t*)(localVarBase + __src)))
  2310. {
  2311. il2cpp::vm::Exception::RaiseOverflowException();
  2312. }
  2313. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(int32_t*)(localVarBase + __src)));
  2314. ip += 8;
  2315. continue;
  2316. }
  2317. case HiOpcodeEnum::ConvertOverflowVarVar_i4_u2:
  2318. {
  2319. uint16_t __dst = *(uint16_t*)(ip + 2);
  2320. uint16_t __src = *(uint16_t*)(ip + 4);
  2321. int32_t val = (*(int32_t*)(localVarBase + __src));
  2322. if (CheckConvertOverflow_i4_u2(*(int32_t*)(localVarBase + __src)))
  2323. {
  2324. il2cpp::vm::Exception::RaiseOverflowException();
  2325. }
  2326. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  2327. ip += 8;
  2328. continue;
  2329. }
  2330. case HiOpcodeEnum::ConvertOverflowVarVar_i4_i4:
  2331. {
  2332. uint16_t __dst = *(uint16_t*)(ip + 2);
  2333. uint16_t __src = *(uint16_t*)(ip + 4);
  2334. int32_t val = (*(int32_t*)(localVarBase + __src));
  2335. if (CheckConvertOverflow_i4_i4(*(int32_t*)(localVarBase + __src)))
  2336. {
  2337. il2cpp::vm::Exception::RaiseOverflowException();
  2338. }
  2339. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(int32_t*)(localVarBase + __src)));
  2340. ip += 8;
  2341. continue;
  2342. }
  2343. case HiOpcodeEnum::ConvertOverflowVarVar_i4_u4:
  2344. {
  2345. uint16_t __dst = *(uint16_t*)(ip + 2);
  2346. uint16_t __src = *(uint16_t*)(ip + 4);
  2347. int32_t val = (*(int32_t*)(localVarBase + __src));
  2348. if (CheckConvertOverflow_i4_u4(*(int32_t*)(localVarBase + __src)))
  2349. {
  2350. il2cpp::vm::Exception::RaiseOverflowException();
  2351. }
  2352. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  2353. ip += 8;
  2354. continue;
  2355. }
  2356. case HiOpcodeEnum::ConvertOverflowVarVar_i4_i8:
  2357. {
  2358. uint16_t __dst = *(uint16_t*)(ip + 2);
  2359. uint16_t __src = *(uint16_t*)(ip + 4);
  2360. int32_t val = (*(int32_t*)(localVarBase + __src));
  2361. if (CheckConvertOverflow_i4_i8(*(int32_t*)(localVarBase + __src)))
  2362. {
  2363. il2cpp::vm::Exception::RaiseOverflowException();
  2364. }
  2365. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(int32_t*)(localVarBase + __src)));
  2366. ip += 8;
  2367. continue;
  2368. }
  2369. case HiOpcodeEnum::ConvertOverflowVarVar_i4_u8:
  2370. {
  2371. uint16_t __dst = *(uint16_t*)(ip + 2);
  2372. uint16_t __src = *(uint16_t*)(ip + 4);
  2373. int32_t val = (*(int32_t*)(localVarBase + __src));
  2374. if (CheckConvertOverflow_i4_u8(*(int32_t*)(localVarBase + __src)))
  2375. {
  2376. il2cpp::vm::Exception::RaiseOverflowException();
  2377. }
  2378. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  2379. ip += 8;
  2380. continue;
  2381. }
  2382. case HiOpcodeEnum::ConvertOverflowVarVar_u4_i1:
  2383. {
  2384. uint16_t __dst = *(uint16_t*)(ip + 2);
  2385. uint16_t __src = *(uint16_t*)(ip + 4);
  2386. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2387. if (CheckConvertOverflow_u4_i1(*(uint32_t*)(localVarBase + __src)))
  2388. {
  2389. il2cpp::vm::Exception::RaiseOverflowException();
  2390. }
  2391. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(uint32_t*)(localVarBase + __src)));
  2392. ip += 8;
  2393. continue;
  2394. }
  2395. case HiOpcodeEnum::ConvertOverflowVarVar_u4_u1:
  2396. {
  2397. uint16_t __dst = *(uint16_t*)(ip + 2);
  2398. uint16_t __src = *(uint16_t*)(ip + 4);
  2399. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2400. if (CheckConvertOverflow_u4_u1(*(uint32_t*)(localVarBase + __src)))
  2401. {
  2402. il2cpp::vm::Exception::RaiseOverflowException();
  2403. }
  2404. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)((*(uint32_t*)(localVarBase + __src)));
  2405. ip += 8;
  2406. continue;
  2407. }
  2408. case HiOpcodeEnum::ConvertOverflowVarVar_u4_i2:
  2409. {
  2410. uint16_t __dst = *(uint16_t*)(ip + 2);
  2411. uint16_t __src = *(uint16_t*)(ip + 4);
  2412. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2413. if (CheckConvertOverflow_u4_i2(*(uint32_t*)(localVarBase + __src)))
  2414. {
  2415. il2cpp::vm::Exception::RaiseOverflowException();
  2416. }
  2417. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(uint32_t*)(localVarBase + __src)));
  2418. ip += 8;
  2419. continue;
  2420. }
  2421. case HiOpcodeEnum::ConvertOverflowVarVar_u4_u2:
  2422. {
  2423. uint16_t __dst = *(uint16_t*)(ip + 2);
  2424. uint16_t __src = *(uint16_t*)(ip + 4);
  2425. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2426. if (CheckConvertOverflow_u4_u2(*(uint32_t*)(localVarBase + __src)))
  2427. {
  2428. il2cpp::vm::Exception::RaiseOverflowException();
  2429. }
  2430. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)((*(uint32_t*)(localVarBase + __src)));
  2431. ip += 8;
  2432. continue;
  2433. }
  2434. case HiOpcodeEnum::ConvertOverflowVarVar_u4_i4:
  2435. {
  2436. uint16_t __dst = *(uint16_t*)(ip + 2);
  2437. uint16_t __src = *(uint16_t*)(ip + 4);
  2438. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2439. if (CheckConvertOverflow_u4_i4(*(uint32_t*)(localVarBase + __src)))
  2440. {
  2441. il2cpp::vm::Exception::RaiseOverflowException();
  2442. }
  2443. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(uint32_t*)(localVarBase + __src)));
  2444. ip += 8;
  2445. continue;
  2446. }
  2447. case HiOpcodeEnum::ConvertOverflowVarVar_u4_u4:
  2448. {
  2449. uint16_t __dst = *(uint16_t*)(ip + 2);
  2450. uint16_t __src = *(uint16_t*)(ip + 4);
  2451. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2452. if (CheckConvertOverflow_u4_u4(*(uint32_t*)(localVarBase + __src)))
  2453. {
  2454. il2cpp::vm::Exception::RaiseOverflowException();
  2455. }
  2456. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)((*(uint32_t*)(localVarBase + __src)));
  2457. ip += 8;
  2458. continue;
  2459. }
  2460. case HiOpcodeEnum::ConvertOverflowVarVar_u4_i8:
  2461. {
  2462. uint16_t __dst = *(uint16_t*)(ip + 2);
  2463. uint16_t __src = *(uint16_t*)(ip + 4);
  2464. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2465. if (CheckConvertOverflow_u4_i8(*(uint32_t*)(localVarBase + __src)))
  2466. {
  2467. il2cpp::vm::Exception::RaiseOverflowException();
  2468. }
  2469. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(uint32_t*)(localVarBase + __src)));
  2470. ip += 8;
  2471. continue;
  2472. }
  2473. case HiOpcodeEnum::ConvertOverflowVarVar_u4_u8:
  2474. {
  2475. uint16_t __dst = *(uint16_t*)(ip + 2);
  2476. uint16_t __src = *(uint16_t*)(ip + 4);
  2477. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2478. if (CheckConvertOverflow_u4_u8(*(uint32_t*)(localVarBase + __src)))
  2479. {
  2480. il2cpp::vm::Exception::RaiseOverflowException();
  2481. }
  2482. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)((*(uint32_t*)(localVarBase + __src)));
  2483. ip += 8;
  2484. continue;
  2485. }
  2486. case HiOpcodeEnum::ConvertOverflowVarVar_i8_i1:
  2487. {
  2488. uint16_t __dst = *(uint16_t*)(ip + 2);
  2489. uint16_t __src = *(uint16_t*)(ip + 4);
  2490. int64_t val = (*(int64_t*)(localVarBase + __src));
  2491. if (CheckConvertOverflow_i8_i1(*(int64_t*)(localVarBase + __src)))
  2492. {
  2493. il2cpp::vm::Exception::RaiseOverflowException();
  2494. }
  2495. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(int64_t*)(localVarBase + __src)));
  2496. ip += 8;
  2497. continue;
  2498. }
  2499. case HiOpcodeEnum::ConvertOverflowVarVar_i8_u1:
  2500. {
  2501. uint16_t __dst = *(uint16_t*)(ip + 2);
  2502. uint16_t __src = *(uint16_t*)(ip + 4);
  2503. int64_t val = (*(int64_t*)(localVarBase + __src));
  2504. if (CheckConvertOverflow_i8_u1(*(int64_t*)(localVarBase + __src)))
  2505. {
  2506. il2cpp::vm::Exception::RaiseOverflowException();
  2507. }
  2508. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  2509. ip += 8;
  2510. continue;
  2511. }
  2512. case HiOpcodeEnum::ConvertOverflowVarVar_i8_i2:
  2513. {
  2514. uint16_t __dst = *(uint16_t*)(ip + 2);
  2515. uint16_t __src = *(uint16_t*)(ip + 4);
  2516. int64_t val = (*(int64_t*)(localVarBase + __src));
  2517. if (CheckConvertOverflow_i8_i2(*(int64_t*)(localVarBase + __src)))
  2518. {
  2519. il2cpp::vm::Exception::RaiseOverflowException();
  2520. }
  2521. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(int64_t*)(localVarBase + __src)));
  2522. ip += 8;
  2523. continue;
  2524. }
  2525. case HiOpcodeEnum::ConvertOverflowVarVar_i8_u2:
  2526. {
  2527. uint16_t __dst = *(uint16_t*)(ip + 2);
  2528. uint16_t __src = *(uint16_t*)(ip + 4);
  2529. int64_t val = (*(int64_t*)(localVarBase + __src));
  2530. if (CheckConvertOverflow_i8_u2(*(int64_t*)(localVarBase + __src)))
  2531. {
  2532. il2cpp::vm::Exception::RaiseOverflowException();
  2533. }
  2534. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  2535. ip += 8;
  2536. continue;
  2537. }
  2538. case HiOpcodeEnum::ConvertOverflowVarVar_i8_i4:
  2539. {
  2540. uint16_t __dst = *(uint16_t*)(ip + 2);
  2541. uint16_t __src = *(uint16_t*)(ip + 4);
  2542. int64_t val = (*(int64_t*)(localVarBase + __src));
  2543. if (CheckConvertOverflow_i8_i4(*(int64_t*)(localVarBase + __src)))
  2544. {
  2545. il2cpp::vm::Exception::RaiseOverflowException();
  2546. }
  2547. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(int64_t*)(localVarBase + __src)));
  2548. ip += 8;
  2549. continue;
  2550. }
  2551. case HiOpcodeEnum::ConvertOverflowVarVar_i8_u4:
  2552. {
  2553. uint16_t __dst = *(uint16_t*)(ip + 2);
  2554. uint16_t __src = *(uint16_t*)(ip + 4);
  2555. int64_t val = (*(int64_t*)(localVarBase + __src));
  2556. if (CheckConvertOverflow_i8_u4(*(int64_t*)(localVarBase + __src)))
  2557. {
  2558. il2cpp::vm::Exception::RaiseOverflowException();
  2559. }
  2560. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  2561. ip += 8;
  2562. continue;
  2563. }
  2564. case HiOpcodeEnum::ConvertOverflowVarVar_i8_i8:
  2565. {
  2566. uint16_t __dst = *(uint16_t*)(ip + 2);
  2567. uint16_t __src = *(uint16_t*)(ip + 4);
  2568. int64_t val = (*(int64_t*)(localVarBase + __src));
  2569. if (CheckConvertOverflow_i8_i8(*(int64_t*)(localVarBase + __src)))
  2570. {
  2571. il2cpp::vm::Exception::RaiseOverflowException();
  2572. }
  2573. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(int64_t*)(localVarBase + __src)));
  2574. ip += 8;
  2575. continue;
  2576. }
  2577. case HiOpcodeEnum::ConvertOverflowVarVar_i8_u8:
  2578. {
  2579. uint16_t __dst = *(uint16_t*)(ip + 2);
  2580. uint16_t __src = *(uint16_t*)(ip + 4);
  2581. int64_t val = (*(int64_t*)(localVarBase + __src));
  2582. if (CheckConvertOverflow_i8_u8(*(int64_t*)(localVarBase + __src)))
  2583. {
  2584. il2cpp::vm::Exception::RaiseOverflowException();
  2585. }
  2586. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  2587. ip += 8;
  2588. continue;
  2589. }
  2590. case HiOpcodeEnum::ConvertOverflowVarVar_u8_i1:
  2591. {
  2592. uint16_t __dst = *(uint16_t*)(ip + 2);
  2593. uint16_t __src = *(uint16_t*)(ip + 4);
  2594. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2595. if (CheckConvertOverflow_u8_i1(*(uint64_t*)(localVarBase + __src)))
  2596. {
  2597. il2cpp::vm::Exception::RaiseOverflowException();
  2598. }
  2599. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(uint64_t*)(localVarBase + __src)));
  2600. ip += 8;
  2601. continue;
  2602. }
  2603. case HiOpcodeEnum::ConvertOverflowVarVar_u8_u1:
  2604. {
  2605. uint16_t __dst = *(uint16_t*)(ip + 2);
  2606. uint16_t __src = *(uint16_t*)(ip + 4);
  2607. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2608. if (CheckConvertOverflow_u8_u1(*(uint64_t*)(localVarBase + __src)))
  2609. {
  2610. il2cpp::vm::Exception::RaiseOverflowException();
  2611. }
  2612. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)((*(uint64_t*)(localVarBase + __src)));
  2613. ip += 8;
  2614. continue;
  2615. }
  2616. case HiOpcodeEnum::ConvertOverflowVarVar_u8_i2:
  2617. {
  2618. uint16_t __dst = *(uint16_t*)(ip + 2);
  2619. uint16_t __src = *(uint16_t*)(ip + 4);
  2620. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2621. if (CheckConvertOverflow_u8_i2(*(uint64_t*)(localVarBase + __src)))
  2622. {
  2623. il2cpp::vm::Exception::RaiseOverflowException();
  2624. }
  2625. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(uint64_t*)(localVarBase + __src)));
  2626. ip += 8;
  2627. continue;
  2628. }
  2629. case HiOpcodeEnum::ConvertOverflowVarVar_u8_u2:
  2630. {
  2631. uint16_t __dst = *(uint16_t*)(ip + 2);
  2632. uint16_t __src = *(uint16_t*)(ip + 4);
  2633. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2634. if (CheckConvertOverflow_u8_u2(*(uint64_t*)(localVarBase + __src)))
  2635. {
  2636. il2cpp::vm::Exception::RaiseOverflowException();
  2637. }
  2638. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)((*(uint64_t*)(localVarBase + __src)));
  2639. ip += 8;
  2640. continue;
  2641. }
  2642. case HiOpcodeEnum::ConvertOverflowVarVar_u8_i4:
  2643. {
  2644. uint16_t __dst = *(uint16_t*)(ip + 2);
  2645. uint16_t __src = *(uint16_t*)(ip + 4);
  2646. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2647. if (CheckConvertOverflow_u8_i4(*(uint64_t*)(localVarBase + __src)))
  2648. {
  2649. il2cpp::vm::Exception::RaiseOverflowException();
  2650. }
  2651. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(uint64_t*)(localVarBase + __src)));
  2652. ip += 8;
  2653. continue;
  2654. }
  2655. case HiOpcodeEnum::ConvertOverflowVarVar_u8_u4:
  2656. {
  2657. uint16_t __dst = *(uint16_t*)(ip + 2);
  2658. uint16_t __src = *(uint16_t*)(ip + 4);
  2659. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2660. if (CheckConvertOverflow_u8_u4(*(uint64_t*)(localVarBase + __src)))
  2661. {
  2662. il2cpp::vm::Exception::RaiseOverflowException();
  2663. }
  2664. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)((*(uint64_t*)(localVarBase + __src)));
  2665. ip += 8;
  2666. continue;
  2667. }
  2668. case HiOpcodeEnum::ConvertOverflowVarVar_u8_i8:
  2669. {
  2670. uint16_t __dst = *(uint16_t*)(ip + 2);
  2671. uint16_t __src = *(uint16_t*)(ip + 4);
  2672. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2673. if (CheckConvertOverflow_u8_i8(*(uint64_t*)(localVarBase + __src)))
  2674. {
  2675. il2cpp::vm::Exception::RaiseOverflowException();
  2676. }
  2677. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(uint64_t*)(localVarBase + __src)));
  2678. ip += 8;
  2679. continue;
  2680. }
  2681. case HiOpcodeEnum::ConvertOverflowVarVar_u8_u8:
  2682. {
  2683. uint16_t __dst = *(uint16_t*)(ip + 2);
  2684. uint16_t __src = *(uint16_t*)(ip + 4);
  2685. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2686. if (CheckConvertOverflow_u8_u8(*(uint64_t*)(localVarBase + __src)))
  2687. {
  2688. il2cpp::vm::Exception::RaiseOverflowException();
  2689. }
  2690. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)((*(uint64_t*)(localVarBase + __src)));
  2691. ip += 8;
  2692. continue;
  2693. }
  2694. case HiOpcodeEnum::ConvertOverflowVarVar_f4_i1:
  2695. {
  2696. uint16_t __dst = *(uint16_t*)(ip + 2);
  2697. uint16_t __src = *(uint16_t*)(ip + 4);
  2698. float val = (*(float*)(localVarBase + __src));
  2699. if (CheckConvertOverflow_f4_i1(*(float*)(localVarBase + __src)))
  2700. {
  2701. il2cpp::vm::Exception::RaiseOverflowException();
  2702. }
  2703. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int8_t>((*(float*)(localVarBase + __src)));
  2704. ip += 8;
  2705. continue;
  2706. }
  2707. case HiOpcodeEnum::ConvertOverflowVarVar_f4_u1:
  2708. {
  2709. uint16_t __dst = *(uint16_t*)(ip + 2);
  2710. uint16_t __src = *(uint16_t*)(ip + 4);
  2711. float val = (*(float*)(localVarBase + __src));
  2712. if (CheckConvertOverflow_f4_u1(*(float*)(localVarBase + __src)))
  2713. {
  2714. il2cpp::vm::Exception::RaiseOverflowException();
  2715. }
  2716. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint8_t, int32_t>((*(float*)(localVarBase + __src)));
  2717. ip += 8;
  2718. continue;
  2719. }
  2720. case HiOpcodeEnum::ConvertOverflowVarVar_f4_i2:
  2721. {
  2722. uint16_t __dst = *(uint16_t*)(ip + 2);
  2723. uint16_t __src = *(uint16_t*)(ip + 4);
  2724. float val = (*(float*)(localVarBase + __src));
  2725. if (CheckConvertOverflow_f4_i2(*(float*)(localVarBase + __src)))
  2726. {
  2727. il2cpp::vm::Exception::RaiseOverflowException();
  2728. }
  2729. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int16_t>((*(float*)(localVarBase + __src)));
  2730. ip += 8;
  2731. continue;
  2732. }
  2733. case HiOpcodeEnum::ConvertOverflowVarVar_f4_u2:
  2734. {
  2735. uint16_t __dst = *(uint16_t*)(ip + 2);
  2736. uint16_t __src = *(uint16_t*)(ip + 4);
  2737. float val = (*(float*)(localVarBase + __src));
  2738. if (CheckConvertOverflow_f4_u2(*(float*)(localVarBase + __src)))
  2739. {
  2740. il2cpp::vm::Exception::RaiseOverflowException();
  2741. }
  2742. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint16_t, int32_t>((*(float*)(localVarBase + __src)));
  2743. ip += 8;
  2744. continue;
  2745. }
  2746. case HiOpcodeEnum::ConvertOverflowVarVar_f4_i4:
  2747. {
  2748. uint16_t __dst = *(uint16_t*)(ip + 2);
  2749. uint16_t __src = *(uint16_t*)(ip + 4);
  2750. float val = (*(float*)(localVarBase + __src));
  2751. if (CheckConvertOverflow_f4_i4(*(float*)(localVarBase + __src)))
  2752. {
  2753. il2cpp::vm::Exception::RaiseOverflowException();
  2754. }
  2755. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int32_t>((*(float*)(localVarBase + __src)));
  2756. ip += 8;
  2757. continue;
  2758. }
  2759. case HiOpcodeEnum::ConvertOverflowVarVar_f4_u4:
  2760. {
  2761. uint16_t __dst = *(uint16_t*)(ip + 2);
  2762. uint16_t __src = *(uint16_t*)(ip + 4);
  2763. float val = (*(float*)(localVarBase + __src));
  2764. if (CheckConvertOverflow_f4_u4(*(float*)(localVarBase + __src)))
  2765. {
  2766. il2cpp::vm::Exception::RaiseOverflowException();
  2767. }
  2768. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint32_t, int32_t>((*(float*)(localVarBase + __src)));
  2769. ip += 8;
  2770. continue;
  2771. }
  2772. case HiOpcodeEnum::ConvertOverflowVarVar_f4_i8:
  2773. {
  2774. uint16_t __dst = *(uint16_t*)(ip + 2);
  2775. uint16_t __src = *(uint16_t*)(ip + 4);
  2776. float val = (*(float*)(localVarBase + __src));
  2777. if (CheckConvertOverflow_f4_i8(*(float*)(localVarBase + __src)))
  2778. {
  2779. il2cpp::vm::Exception::RaiseOverflowException();
  2780. }
  2781. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int64_t>((*(float*)(localVarBase + __src)));
  2782. ip += 8;
  2783. continue;
  2784. }
  2785. case HiOpcodeEnum::ConvertOverflowVarVar_f4_u8:
  2786. {
  2787. uint16_t __dst = *(uint16_t*)(ip + 2);
  2788. uint16_t __src = *(uint16_t*)(ip + 4);
  2789. float val = (*(float*)(localVarBase + __src));
  2790. if (CheckConvertOverflow_f4_u8(*(float*)(localVarBase + __src)))
  2791. {
  2792. il2cpp::vm::Exception::RaiseOverflowException();
  2793. }
  2794. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint64_t, int64_t>((*(float*)(localVarBase + __src)));
  2795. ip += 8;
  2796. continue;
  2797. }
  2798. case HiOpcodeEnum::ConvertOverflowVarVar_f8_i1:
  2799. {
  2800. uint16_t __dst = *(uint16_t*)(ip + 2);
  2801. uint16_t __src = *(uint16_t*)(ip + 4);
  2802. double val = (*(double*)(localVarBase + __src));
  2803. if (CheckConvertOverflow_f8_i1(*(double*)(localVarBase + __src)))
  2804. {
  2805. il2cpp::vm::Exception::RaiseOverflowException();
  2806. }
  2807. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int8_t>((*(double*)(localVarBase + __src)));
  2808. ip += 8;
  2809. continue;
  2810. }
  2811. case HiOpcodeEnum::ConvertOverflowVarVar_f8_u1:
  2812. {
  2813. uint16_t __dst = *(uint16_t*)(ip + 2);
  2814. uint16_t __src = *(uint16_t*)(ip + 4);
  2815. double val = (*(double*)(localVarBase + __src));
  2816. if (CheckConvertOverflow_f8_u1(*(double*)(localVarBase + __src)))
  2817. {
  2818. il2cpp::vm::Exception::RaiseOverflowException();
  2819. }
  2820. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint8_t, int32_t>((*(double*)(localVarBase + __src)));
  2821. ip += 8;
  2822. continue;
  2823. }
  2824. case HiOpcodeEnum::ConvertOverflowVarVar_f8_i2:
  2825. {
  2826. uint16_t __dst = *(uint16_t*)(ip + 2);
  2827. uint16_t __src = *(uint16_t*)(ip + 4);
  2828. double val = (*(double*)(localVarBase + __src));
  2829. if (CheckConvertOverflow_f8_i2(*(double*)(localVarBase + __src)))
  2830. {
  2831. il2cpp::vm::Exception::RaiseOverflowException();
  2832. }
  2833. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int16_t>((*(double*)(localVarBase + __src)));
  2834. ip += 8;
  2835. continue;
  2836. }
  2837. case HiOpcodeEnum::ConvertOverflowVarVar_f8_u2:
  2838. {
  2839. uint16_t __dst = *(uint16_t*)(ip + 2);
  2840. uint16_t __src = *(uint16_t*)(ip + 4);
  2841. double val = (*(double*)(localVarBase + __src));
  2842. if (CheckConvertOverflow_f8_u2(*(double*)(localVarBase + __src)))
  2843. {
  2844. il2cpp::vm::Exception::RaiseOverflowException();
  2845. }
  2846. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint16_t, int32_t>((*(double*)(localVarBase + __src)));
  2847. ip += 8;
  2848. continue;
  2849. }
  2850. case HiOpcodeEnum::ConvertOverflowVarVar_f8_i4:
  2851. {
  2852. uint16_t __dst = *(uint16_t*)(ip + 2);
  2853. uint16_t __src = *(uint16_t*)(ip + 4);
  2854. double val = (*(double*)(localVarBase + __src));
  2855. if (CheckConvertOverflow_f8_i4(*(double*)(localVarBase + __src)))
  2856. {
  2857. il2cpp::vm::Exception::RaiseOverflowException();
  2858. }
  2859. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int32_t>((*(double*)(localVarBase + __src)));
  2860. ip += 8;
  2861. continue;
  2862. }
  2863. case HiOpcodeEnum::ConvertOverflowVarVar_f8_u4:
  2864. {
  2865. uint16_t __dst = *(uint16_t*)(ip + 2);
  2866. uint16_t __src = *(uint16_t*)(ip + 4);
  2867. double val = (*(double*)(localVarBase + __src));
  2868. if (CheckConvertOverflow_f8_u4(*(double*)(localVarBase + __src)))
  2869. {
  2870. il2cpp::vm::Exception::RaiseOverflowException();
  2871. }
  2872. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint32_t, int32_t>((*(double*)(localVarBase + __src)));
  2873. ip += 8;
  2874. continue;
  2875. }
  2876. case HiOpcodeEnum::ConvertOverflowVarVar_f8_i8:
  2877. {
  2878. uint16_t __dst = *(uint16_t*)(ip + 2);
  2879. uint16_t __src = *(uint16_t*)(ip + 4);
  2880. double val = (*(double*)(localVarBase + __src));
  2881. if (CheckConvertOverflow_f8_i8(*(double*)(localVarBase + __src)))
  2882. {
  2883. il2cpp::vm::Exception::RaiseOverflowException();
  2884. }
  2885. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int64_t>((*(double*)(localVarBase + __src)));
  2886. ip += 8;
  2887. continue;
  2888. }
  2889. case HiOpcodeEnum::ConvertOverflowVarVar_f8_u8:
  2890. {
  2891. uint16_t __dst = *(uint16_t*)(ip + 2);
  2892. uint16_t __src = *(uint16_t*)(ip + 4);
  2893. double val = (*(double*)(localVarBase + __src));
  2894. if (CheckConvertOverflow_f8_u8(*(double*)(localVarBase + __src)))
  2895. {
  2896. il2cpp::vm::Exception::RaiseOverflowException();
  2897. }
  2898. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint64_t, int64_t>((*(double*)(localVarBase + __src)));
  2899. ip += 8;
  2900. continue;
  2901. }
  2902. //!!!}}CONVERT
  2903. #pragma endregion
  2904. #pragma region ARITH
  2905. //!!!{{ARITH
  2906. case HiOpcodeEnum::BinOpVarVarVar_Add_i4:
  2907. {
  2908. uint16_t __ret = *(uint16_t*)(ip + 2);
  2909. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2910. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2911. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __op1)) + (*(int32_t*)(localVarBase + __op2));
  2912. ip += 8;
  2913. continue;
  2914. }
  2915. case HiOpcodeEnum::BinOpVarVarVar_Sub_i4:
  2916. {
  2917. uint16_t __ret = *(uint16_t*)(ip + 2);
  2918. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2919. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2920. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __op1)) - (*(int32_t*)(localVarBase + __op2));
  2921. ip += 8;
  2922. continue;
  2923. }
  2924. case HiOpcodeEnum::BinOpVarVarVar_Mul_i4:
  2925. {
  2926. uint16_t __ret = *(uint16_t*)(ip + 2);
  2927. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2928. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2929. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __op1)) * (*(int32_t*)(localVarBase + __op2));
  2930. ip += 8;
  2931. continue;
  2932. }
  2933. case HiOpcodeEnum::BinOpVarVarVar_MulUn_i4:
  2934. {
  2935. uint16_t __ret = *(uint16_t*)(ip + 2);
  2936. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2937. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2938. (*(int32_t*)(localVarBase + __ret)) = HiMulUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2)));
  2939. ip += 8;
  2940. continue;
  2941. }
  2942. case HiOpcodeEnum::BinOpVarVarVar_Div_i4:
  2943. {
  2944. uint16_t __ret = *(uint16_t*)(ip + 2);
  2945. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2946. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2947. (*(int32_t*)(localVarBase + __ret)) = HiDiv((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2)));
  2948. ip += 8;
  2949. continue;
  2950. }
  2951. case HiOpcodeEnum::BinOpVarVarVar_DivUn_i4:
  2952. {
  2953. uint16_t __ret = *(uint16_t*)(ip + 2);
  2954. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2955. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2956. (*(int32_t*)(localVarBase + __ret)) = HiDivUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2)));
  2957. ip += 8;
  2958. continue;
  2959. }
  2960. case HiOpcodeEnum::BinOpVarVarVar_Rem_i4:
  2961. {
  2962. uint16_t __ret = *(uint16_t*)(ip + 2);
  2963. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2964. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2965. (*(int32_t*)(localVarBase + __ret)) = HiRem((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2)));
  2966. ip += 8;
  2967. continue;
  2968. }
  2969. case HiOpcodeEnum::BinOpVarVarVar_RemUn_i4:
  2970. {
  2971. uint16_t __ret = *(uint16_t*)(ip + 2);
  2972. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2973. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2974. (*(int32_t*)(localVarBase + __ret)) = HiRemUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2)));
  2975. ip += 8;
  2976. continue;
  2977. }
  2978. case HiOpcodeEnum::BinOpVarVarVar_And_i4:
  2979. {
  2980. uint16_t __ret = *(uint16_t*)(ip + 2);
  2981. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2982. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2983. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __op1)) & (*(int32_t*)(localVarBase + __op2));
  2984. ip += 8;
  2985. continue;
  2986. }
  2987. case HiOpcodeEnum::BinOpVarVarVar_Or_i4:
  2988. {
  2989. uint16_t __ret = *(uint16_t*)(ip + 2);
  2990. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2991. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2992. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __op1)) | (*(int32_t*)(localVarBase + __op2));
  2993. ip += 8;
  2994. continue;
  2995. }
  2996. case HiOpcodeEnum::BinOpVarVarVar_Xor_i4:
  2997. {
  2998. uint16_t __ret = *(uint16_t*)(ip + 2);
  2999. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3000. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3001. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __op1)) ^ (*(int32_t*)(localVarBase + __op2));
  3002. ip += 8;
  3003. continue;
  3004. }
  3005. case HiOpcodeEnum::BinOpVarVarVar_Add_i8:
  3006. {
  3007. uint16_t __ret = *(uint16_t*)(ip + 2);
  3008. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3009. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3010. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __op1)) + (*(int64_t*)(localVarBase + __op2));
  3011. ip += 8;
  3012. continue;
  3013. }
  3014. case HiOpcodeEnum::BinOpVarVarVar_Sub_i8:
  3015. {
  3016. uint16_t __ret = *(uint16_t*)(ip + 2);
  3017. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3018. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3019. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __op1)) - (*(int64_t*)(localVarBase + __op2));
  3020. ip += 8;
  3021. continue;
  3022. }
  3023. case HiOpcodeEnum::BinOpVarVarVar_Mul_i8:
  3024. {
  3025. uint16_t __ret = *(uint16_t*)(ip + 2);
  3026. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3027. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3028. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __op1)) * (*(int64_t*)(localVarBase + __op2));
  3029. ip += 8;
  3030. continue;
  3031. }
  3032. case HiOpcodeEnum::BinOpVarVarVar_MulUn_i8:
  3033. {
  3034. uint16_t __ret = *(uint16_t*)(ip + 2);
  3035. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3036. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3037. (*(int64_t*)(localVarBase + __ret)) = HiMulUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2)));
  3038. ip += 8;
  3039. continue;
  3040. }
  3041. case HiOpcodeEnum::BinOpVarVarVar_Div_i8:
  3042. {
  3043. uint16_t __ret = *(uint16_t*)(ip + 2);
  3044. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3045. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3046. (*(int64_t*)(localVarBase + __ret)) = HiDiv((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2)));
  3047. ip += 8;
  3048. continue;
  3049. }
  3050. case HiOpcodeEnum::BinOpVarVarVar_DivUn_i8:
  3051. {
  3052. uint16_t __ret = *(uint16_t*)(ip + 2);
  3053. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3054. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3055. (*(int64_t*)(localVarBase + __ret)) = HiDivUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2)));
  3056. ip += 8;
  3057. continue;
  3058. }
  3059. case HiOpcodeEnum::BinOpVarVarVar_Rem_i8:
  3060. {
  3061. uint16_t __ret = *(uint16_t*)(ip + 2);
  3062. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3063. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3064. (*(int64_t*)(localVarBase + __ret)) = HiRem((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2)));
  3065. ip += 8;
  3066. continue;
  3067. }
  3068. case HiOpcodeEnum::BinOpVarVarVar_RemUn_i8:
  3069. {
  3070. uint16_t __ret = *(uint16_t*)(ip + 2);
  3071. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3072. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3073. (*(int64_t*)(localVarBase + __ret)) = HiRemUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2)));
  3074. ip += 8;
  3075. continue;
  3076. }
  3077. case HiOpcodeEnum::BinOpVarVarVar_And_i8:
  3078. {
  3079. uint16_t __ret = *(uint16_t*)(ip + 2);
  3080. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3081. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3082. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __op1)) & (*(int64_t*)(localVarBase + __op2));
  3083. ip += 8;
  3084. continue;
  3085. }
  3086. case HiOpcodeEnum::BinOpVarVarVar_Or_i8:
  3087. {
  3088. uint16_t __ret = *(uint16_t*)(ip + 2);
  3089. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3090. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3091. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __op1)) | (*(int64_t*)(localVarBase + __op2));
  3092. ip += 8;
  3093. continue;
  3094. }
  3095. case HiOpcodeEnum::BinOpVarVarVar_Xor_i8:
  3096. {
  3097. uint16_t __ret = *(uint16_t*)(ip + 2);
  3098. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3099. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3100. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __op1)) ^ (*(int64_t*)(localVarBase + __op2));
  3101. ip += 8;
  3102. continue;
  3103. }
  3104. case HiOpcodeEnum::BinOpVarVarVar_Add_f4:
  3105. {
  3106. uint16_t __ret = *(uint16_t*)(ip + 2);
  3107. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3108. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3109. (*(float*)(localVarBase + __ret)) = (*(float*)(localVarBase + __op1)) + (*(float*)(localVarBase + __op2));
  3110. ip += 8;
  3111. continue;
  3112. }
  3113. case HiOpcodeEnum::BinOpVarVarVar_Sub_f4:
  3114. {
  3115. uint16_t __ret = *(uint16_t*)(ip + 2);
  3116. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3117. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3118. (*(float*)(localVarBase + __ret)) = (*(float*)(localVarBase + __op1)) - (*(float*)(localVarBase + __op2));
  3119. ip += 8;
  3120. continue;
  3121. }
  3122. case HiOpcodeEnum::BinOpVarVarVar_Mul_f4:
  3123. {
  3124. uint16_t __ret = *(uint16_t*)(ip + 2);
  3125. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3126. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3127. (*(float*)(localVarBase + __ret)) = (*(float*)(localVarBase + __op1)) * (*(float*)(localVarBase + __op2));
  3128. ip += 8;
  3129. continue;
  3130. }
  3131. case HiOpcodeEnum::BinOpVarVarVar_Div_f4:
  3132. {
  3133. uint16_t __ret = *(uint16_t*)(ip + 2);
  3134. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3135. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3136. (*(float*)(localVarBase + __ret)) = HiDiv((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2)));
  3137. ip += 8;
  3138. continue;
  3139. }
  3140. case HiOpcodeEnum::BinOpVarVarVar_Rem_f4:
  3141. {
  3142. uint16_t __ret = *(uint16_t*)(ip + 2);
  3143. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3144. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3145. (*(float*)(localVarBase + __ret)) = HiRem((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2)));
  3146. ip += 8;
  3147. continue;
  3148. }
  3149. case HiOpcodeEnum::BinOpVarVarVar_Add_f8:
  3150. {
  3151. uint16_t __ret = *(uint16_t*)(ip + 2);
  3152. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3153. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3154. (*(double*)(localVarBase + __ret)) = (*(double*)(localVarBase + __op1)) + (*(double*)(localVarBase + __op2));
  3155. ip += 8;
  3156. continue;
  3157. }
  3158. case HiOpcodeEnum::BinOpVarVarVar_Sub_f8:
  3159. {
  3160. uint16_t __ret = *(uint16_t*)(ip + 2);
  3161. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3162. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3163. (*(double*)(localVarBase + __ret)) = (*(double*)(localVarBase + __op1)) - (*(double*)(localVarBase + __op2));
  3164. ip += 8;
  3165. continue;
  3166. }
  3167. case HiOpcodeEnum::BinOpVarVarVar_Mul_f8:
  3168. {
  3169. uint16_t __ret = *(uint16_t*)(ip + 2);
  3170. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3171. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3172. (*(double*)(localVarBase + __ret)) = (*(double*)(localVarBase + __op1)) * (*(double*)(localVarBase + __op2));
  3173. ip += 8;
  3174. continue;
  3175. }
  3176. case HiOpcodeEnum::BinOpVarVarVar_Div_f8:
  3177. {
  3178. uint16_t __ret = *(uint16_t*)(ip + 2);
  3179. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3180. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3181. (*(double*)(localVarBase + __ret)) = HiDiv((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2)));
  3182. ip += 8;
  3183. continue;
  3184. }
  3185. case HiOpcodeEnum::BinOpVarVarVar_Rem_f8:
  3186. {
  3187. uint16_t __ret = *(uint16_t*)(ip + 2);
  3188. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3189. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3190. (*(double*)(localVarBase + __ret)) = HiRem((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2)));
  3191. ip += 8;
  3192. continue;
  3193. }
  3194. case HiOpcodeEnum::BinOpOverflowVarVarVar_Add_i4:
  3195. {
  3196. uint16_t __ret = *(uint16_t*)(ip + 2);
  3197. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3198. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3199. int32_t op1 = (*(int32_t*)(localVarBase + __op1));
  3200. int32_t op2 = (*(int32_t*)(localVarBase + __op2));
  3201. if ((CheckAddOverflow(op1, op2)) == 0)
  3202. {
  3203. (*(int32_t*)(localVarBase + __ret)) = op1 + op2;
  3204. }
  3205. else
  3206. {
  3207. il2cpp::vm::Exception::RaiseOverflowException();
  3208. }
  3209. ip += 8;
  3210. continue;
  3211. }
  3212. case HiOpcodeEnum::BinOpOverflowVarVarVar_Sub_i4:
  3213. {
  3214. uint16_t __ret = *(uint16_t*)(ip + 2);
  3215. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3216. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3217. int32_t op1 = (*(int32_t*)(localVarBase + __op1));
  3218. int32_t op2 = (*(int32_t*)(localVarBase + __op2));
  3219. if ((CheckSubOverflow(op1, op2)) == 0)
  3220. {
  3221. (*(int32_t*)(localVarBase + __ret)) = op1 - op2;
  3222. }
  3223. else
  3224. {
  3225. il2cpp::vm::Exception::RaiseOverflowException();
  3226. }
  3227. ip += 8;
  3228. continue;
  3229. }
  3230. case HiOpcodeEnum::BinOpOverflowVarVarVar_Mul_i4:
  3231. {
  3232. uint16_t __ret = *(uint16_t*)(ip + 2);
  3233. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3234. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3235. int32_t op1 = (*(int32_t*)(localVarBase + __op1));
  3236. int32_t op2 = (*(int32_t*)(localVarBase + __op2));
  3237. if ((CheckMulOverflow(op1, op2)) == 0)
  3238. {
  3239. (*(int32_t*)(localVarBase + __ret)) = op1 * op2;
  3240. }
  3241. else
  3242. {
  3243. il2cpp::vm::Exception::RaiseOverflowException();
  3244. }
  3245. ip += 8;
  3246. continue;
  3247. }
  3248. case HiOpcodeEnum::BinOpOverflowVarVarVar_Add_i8:
  3249. {
  3250. uint16_t __ret = *(uint16_t*)(ip + 2);
  3251. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3252. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3253. int64_t op1 = (*(int64_t*)(localVarBase + __op1));
  3254. int64_t op2 = (*(int64_t*)(localVarBase + __op2));
  3255. if ((CheckAddOverflow64(op1, op2)) == 0)
  3256. {
  3257. (*(int64_t*)(localVarBase + __ret)) = op1 + op2;
  3258. }
  3259. else
  3260. {
  3261. il2cpp::vm::Exception::RaiseOverflowException();
  3262. }
  3263. ip += 8;
  3264. continue;
  3265. }
  3266. case HiOpcodeEnum::BinOpOverflowVarVarVar_Sub_i8:
  3267. {
  3268. uint16_t __ret = *(uint16_t*)(ip + 2);
  3269. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3270. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3271. int64_t op1 = (*(int64_t*)(localVarBase + __op1));
  3272. int64_t op2 = (*(int64_t*)(localVarBase + __op2));
  3273. if ((CheckSubOverflow64(op1, op2)) == 0)
  3274. {
  3275. (*(int64_t*)(localVarBase + __ret)) = op1 - op2;
  3276. }
  3277. else
  3278. {
  3279. il2cpp::vm::Exception::RaiseOverflowException();
  3280. }
  3281. ip += 8;
  3282. continue;
  3283. }
  3284. case HiOpcodeEnum::BinOpOverflowVarVarVar_Mul_i8:
  3285. {
  3286. uint16_t __ret = *(uint16_t*)(ip + 2);
  3287. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3288. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3289. int64_t op1 = (*(int64_t*)(localVarBase + __op1));
  3290. int64_t op2 = (*(int64_t*)(localVarBase + __op2));
  3291. if ((CheckMulOverflow64(op1, op2)) == 0)
  3292. {
  3293. (*(int64_t*)(localVarBase + __ret)) = op1 * op2;
  3294. }
  3295. else
  3296. {
  3297. il2cpp::vm::Exception::RaiseOverflowException();
  3298. }
  3299. ip += 8;
  3300. continue;
  3301. }
  3302. case HiOpcodeEnum::BinOpOverflowVarVarVar_Add_u4:
  3303. {
  3304. uint16_t __ret = *(uint16_t*)(ip + 2);
  3305. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3306. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3307. uint32_t op1 = (*(uint32_t*)(localVarBase + __op1));
  3308. uint32_t op2 = (*(uint32_t*)(localVarBase + __op2));
  3309. if ((CheckAddOverflowUn(op1, op2)) == 0)
  3310. {
  3311. (*(uint32_t*)(localVarBase + __ret)) = op1 + op2;
  3312. }
  3313. else
  3314. {
  3315. il2cpp::vm::Exception::RaiseOverflowException();
  3316. }
  3317. ip += 8;
  3318. continue;
  3319. }
  3320. case HiOpcodeEnum::BinOpOverflowVarVarVar_Sub_u4:
  3321. {
  3322. uint16_t __ret = *(uint16_t*)(ip + 2);
  3323. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3324. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3325. uint32_t op1 = (*(uint32_t*)(localVarBase + __op1));
  3326. uint32_t op2 = (*(uint32_t*)(localVarBase + __op2));
  3327. if ((CheckSubOverflowUn(op1, op2)) == 0)
  3328. {
  3329. (*(uint32_t*)(localVarBase + __ret)) = op1 - op2;
  3330. }
  3331. else
  3332. {
  3333. il2cpp::vm::Exception::RaiseOverflowException();
  3334. }
  3335. ip += 8;
  3336. continue;
  3337. }
  3338. case HiOpcodeEnum::BinOpOverflowVarVarVar_Mul_u4:
  3339. {
  3340. uint16_t __ret = *(uint16_t*)(ip + 2);
  3341. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3342. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3343. uint32_t op1 = (*(uint32_t*)(localVarBase + __op1));
  3344. uint32_t op2 = (*(uint32_t*)(localVarBase + __op2));
  3345. if ((CheckMulOverflowUn(op1, op2)) == 0)
  3346. {
  3347. (*(uint32_t*)(localVarBase + __ret)) = op1 * op2;
  3348. }
  3349. else
  3350. {
  3351. il2cpp::vm::Exception::RaiseOverflowException();
  3352. }
  3353. ip += 8;
  3354. continue;
  3355. }
  3356. case HiOpcodeEnum::BinOpOverflowVarVarVar_Add_u8:
  3357. {
  3358. uint16_t __ret = *(uint16_t*)(ip + 2);
  3359. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3360. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3361. uint64_t op1 = (*(uint64_t*)(localVarBase + __op1));
  3362. uint64_t op2 = (*(uint64_t*)(localVarBase + __op2));
  3363. if ((CheckAddOverflow64Un(op1, op2)) == 0)
  3364. {
  3365. (*(uint64_t*)(localVarBase + __ret)) = op1 + op2;
  3366. }
  3367. else
  3368. {
  3369. il2cpp::vm::Exception::RaiseOverflowException();
  3370. }
  3371. ip += 8;
  3372. continue;
  3373. }
  3374. case HiOpcodeEnum::BinOpOverflowVarVarVar_Sub_u8:
  3375. {
  3376. uint16_t __ret = *(uint16_t*)(ip + 2);
  3377. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3378. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3379. uint64_t op1 = (*(uint64_t*)(localVarBase + __op1));
  3380. uint64_t op2 = (*(uint64_t*)(localVarBase + __op2));
  3381. if ((CheckSubOverflow64Un(op1, op2)) == 0)
  3382. {
  3383. (*(uint64_t*)(localVarBase + __ret)) = op1 - op2;
  3384. }
  3385. else
  3386. {
  3387. il2cpp::vm::Exception::RaiseOverflowException();
  3388. }
  3389. ip += 8;
  3390. continue;
  3391. }
  3392. case HiOpcodeEnum::BinOpOverflowVarVarVar_Mul_u8:
  3393. {
  3394. uint16_t __ret = *(uint16_t*)(ip + 2);
  3395. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3396. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3397. uint64_t op1 = (*(uint64_t*)(localVarBase + __op1));
  3398. uint64_t op2 = (*(uint64_t*)(localVarBase + __op2));
  3399. if ((CheckMulOverflow64Un(op1, op2)) == 0)
  3400. {
  3401. (*(uint64_t*)(localVarBase + __ret)) = op1 * op2;
  3402. }
  3403. else
  3404. {
  3405. il2cpp::vm::Exception::RaiseOverflowException();
  3406. }
  3407. ip += 8;
  3408. continue;
  3409. }
  3410. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shl_i4_i4:
  3411. {
  3412. uint16_t __ret = *(uint16_t*)(ip + 2);
  3413. uint16_t __value = *(uint16_t*)(ip + 4);
  3414. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3415. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __value)) << (*(int32_t*)(localVarBase + __shiftAmount));
  3416. ip += 8;
  3417. continue;
  3418. }
  3419. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shr_i4_i4:
  3420. {
  3421. uint16_t __ret = *(uint16_t*)(ip + 2);
  3422. uint16_t __value = *(uint16_t*)(ip + 4);
  3423. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3424. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __value)) >> (*(int32_t*)(localVarBase + __shiftAmount));
  3425. ip += 8;
  3426. continue;
  3427. }
  3428. case HiOpcodeEnum::BitShiftBinOpVarVarVar_ShrUn_i4_i4:
  3429. {
  3430. uint16_t __ret = *(uint16_t*)(ip + 2);
  3431. uint16_t __value = *(uint16_t*)(ip + 4);
  3432. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3433. (*(int32_t*)(localVarBase + __ret)) = HiShrUn((*(int32_t*)(localVarBase + __value)), (*(int32_t*)(localVarBase + __shiftAmount)));
  3434. ip += 8;
  3435. continue;
  3436. }
  3437. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shl_i4_i8:
  3438. {
  3439. uint16_t __ret = *(uint16_t*)(ip + 2);
  3440. uint16_t __value = *(uint16_t*)(ip + 4);
  3441. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3442. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __value)) << (*(int64_t*)(localVarBase + __shiftAmount));
  3443. ip += 8;
  3444. continue;
  3445. }
  3446. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shr_i4_i8:
  3447. {
  3448. uint16_t __ret = *(uint16_t*)(ip + 2);
  3449. uint16_t __value = *(uint16_t*)(ip + 4);
  3450. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3451. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __value)) >> (*(int64_t*)(localVarBase + __shiftAmount));
  3452. ip += 8;
  3453. continue;
  3454. }
  3455. case HiOpcodeEnum::BitShiftBinOpVarVarVar_ShrUn_i4_i8:
  3456. {
  3457. uint16_t __ret = *(uint16_t*)(ip + 2);
  3458. uint16_t __value = *(uint16_t*)(ip + 4);
  3459. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3460. (*(int32_t*)(localVarBase + __ret)) = HiShrUn((*(int32_t*)(localVarBase + __value)), (*(int64_t*)(localVarBase + __shiftAmount)));
  3461. ip += 8;
  3462. continue;
  3463. }
  3464. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shl_i8_i4:
  3465. {
  3466. uint16_t __ret = *(uint16_t*)(ip + 2);
  3467. uint16_t __value = *(uint16_t*)(ip + 4);
  3468. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3469. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __value)) << (*(int32_t*)(localVarBase + __shiftAmount));
  3470. ip += 8;
  3471. continue;
  3472. }
  3473. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shr_i8_i4:
  3474. {
  3475. uint16_t __ret = *(uint16_t*)(ip + 2);
  3476. uint16_t __value = *(uint16_t*)(ip + 4);
  3477. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3478. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __value)) >> (*(int32_t*)(localVarBase + __shiftAmount));
  3479. ip += 8;
  3480. continue;
  3481. }
  3482. case HiOpcodeEnum::BitShiftBinOpVarVarVar_ShrUn_i8_i4:
  3483. {
  3484. uint16_t __ret = *(uint16_t*)(ip + 2);
  3485. uint16_t __value = *(uint16_t*)(ip + 4);
  3486. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3487. (*(int64_t*)(localVarBase + __ret)) = HiShrUn((*(int64_t*)(localVarBase + __value)), (*(int32_t*)(localVarBase + __shiftAmount)));
  3488. ip += 8;
  3489. continue;
  3490. }
  3491. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shl_i8_i8:
  3492. {
  3493. uint16_t __ret = *(uint16_t*)(ip + 2);
  3494. uint16_t __value = *(uint16_t*)(ip + 4);
  3495. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3496. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __value)) << (*(int64_t*)(localVarBase + __shiftAmount));
  3497. ip += 8;
  3498. continue;
  3499. }
  3500. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shr_i8_i8:
  3501. {
  3502. uint16_t __ret = *(uint16_t*)(ip + 2);
  3503. uint16_t __value = *(uint16_t*)(ip + 4);
  3504. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3505. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __value)) >> (*(int64_t*)(localVarBase + __shiftAmount));
  3506. ip += 8;
  3507. continue;
  3508. }
  3509. case HiOpcodeEnum::BitShiftBinOpVarVarVar_ShrUn_i8_i8:
  3510. {
  3511. uint16_t __ret = *(uint16_t*)(ip + 2);
  3512. uint16_t __value = *(uint16_t*)(ip + 4);
  3513. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3514. (*(int64_t*)(localVarBase + __ret)) = HiShrUn((*(int64_t*)(localVarBase + __value)), (*(int64_t*)(localVarBase + __shiftAmount)));
  3515. ip += 8;
  3516. continue;
  3517. }
  3518. case HiOpcodeEnum::UnaryOpVarVar_Neg_i4:
  3519. {
  3520. uint16_t __dst = *(uint16_t*)(ip + 2);
  3521. uint16_t __src = *(uint16_t*)(ip + 4);
  3522. (*(int32_t*)(localVarBase + __dst)) = - (*(int32_t*)(localVarBase + __src));
  3523. ip += 8;
  3524. continue;
  3525. }
  3526. case HiOpcodeEnum::UnaryOpVarVar_Not_i4:
  3527. {
  3528. uint16_t __dst = *(uint16_t*)(ip + 2);
  3529. uint16_t __src = *(uint16_t*)(ip + 4);
  3530. (*(int32_t*)(localVarBase + __dst)) = ~ (*(int32_t*)(localVarBase + __src));
  3531. ip += 8;
  3532. continue;
  3533. }
  3534. case HiOpcodeEnum::UnaryOpVarVar_Neg_i8:
  3535. {
  3536. uint16_t __dst = *(uint16_t*)(ip + 2);
  3537. uint16_t __src = *(uint16_t*)(ip + 4);
  3538. (*(int64_t*)(localVarBase + __dst)) = - (*(int64_t*)(localVarBase + __src));
  3539. ip += 8;
  3540. continue;
  3541. }
  3542. case HiOpcodeEnum::UnaryOpVarVar_Not_i8:
  3543. {
  3544. uint16_t __dst = *(uint16_t*)(ip + 2);
  3545. uint16_t __src = *(uint16_t*)(ip + 4);
  3546. (*(int64_t*)(localVarBase + __dst)) = ~ (*(int64_t*)(localVarBase + __src));
  3547. ip += 8;
  3548. continue;
  3549. }
  3550. case HiOpcodeEnum::UnaryOpVarVar_Neg_f4:
  3551. {
  3552. uint16_t __dst = *(uint16_t*)(ip + 2);
  3553. uint16_t __src = *(uint16_t*)(ip + 4);
  3554. (*(float*)(localVarBase + __dst)) = - (*(float*)(localVarBase + __src));
  3555. ip += 8;
  3556. continue;
  3557. }
  3558. case HiOpcodeEnum::UnaryOpVarVar_Neg_f8:
  3559. {
  3560. uint16_t __dst = *(uint16_t*)(ip + 2);
  3561. uint16_t __src = *(uint16_t*)(ip + 4);
  3562. (*(double*)(localVarBase + __dst)) = - (*(double*)(localVarBase + __src));
  3563. ip += 8;
  3564. continue;
  3565. }
  3566. case HiOpcodeEnum::CheckFiniteVar_f4:
  3567. {
  3568. uint16_t __src = *(uint16_t*)(ip + 2);
  3569. HiCheckFinite((*(float*)(localVarBase + __src)));
  3570. ip += 8;
  3571. continue;
  3572. }
  3573. case HiOpcodeEnum::CheckFiniteVar_f8:
  3574. {
  3575. uint16_t __src = *(uint16_t*)(ip + 2);
  3576. HiCheckFinite((*(double*)(localVarBase + __src)));
  3577. ip += 8;
  3578. continue;
  3579. }
  3580. //!!!}}ARITH
  3581. #pragma endregion
  3582. #pragma region COMPARE
  3583. //!!!{{COMPARE
  3584. case HiOpcodeEnum::CompOpVarVarVar_Ceq_i4:
  3585. {
  3586. uint16_t __ret = *(uint16_t*)(ip + 2);
  3587. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3588. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3589. (*(int32_t*)(localVarBase + __ret)) = CompareCeq((*(int32_t*)(localVarBase + __c1)), (*(int32_t*)(localVarBase + __c2)));
  3590. ip += 8;
  3591. continue;
  3592. }
  3593. case HiOpcodeEnum::CompOpVarVarVar_Ceq_i8:
  3594. {
  3595. uint16_t __ret = *(uint16_t*)(ip + 2);
  3596. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3597. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3598. (*(int32_t*)(localVarBase + __ret)) = CompareCeq((*(int64_t*)(localVarBase + __c1)), (*(int64_t*)(localVarBase + __c2)));
  3599. ip += 8;
  3600. continue;
  3601. }
  3602. case HiOpcodeEnum::CompOpVarVarVar_Ceq_f4:
  3603. {
  3604. uint16_t __ret = *(uint16_t*)(ip + 2);
  3605. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3606. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3607. (*(int32_t*)(localVarBase + __ret)) = CompareCeq((*(float*)(localVarBase + __c1)), (*(float*)(localVarBase + __c2)));
  3608. ip += 8;
  3609. continue;
  3610. }
  3611. case HiOpcodeEnum::CompOpVarVarVar_Ceq_f8:
  3612. {
  3613. uint16_t __ret = *(uint16_t*)(ip + 2);
  3614. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3615. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3616. (*(int32_t*)(localVarBase + __ret)) = CompareCeq((*(double*)(localVarBase + __c1)), (*(double*)(localVarBase + __c2)));
  3617. ip += 8;
  3618. continue;
  3619. }
  3620. case HiOpcodeEnum::CompOpVarVarVar_Cgt_i4:
  3621. {
  3622. uint16_t __ret = *(uint16_t*)(ip + 2);
  3623. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3624. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3625. (*(int32_t*)(localVarBase + __ret)) = CompareCgt((*(int32_t*)(localVarBase + __c1)), (*(int32_t*)(localVarBase + __c2)));
  3626. ip += 8;
  3627. continue;
  3628. }
  3629. case HiOpcodeEnum::CompOpVarVarVar_Cgt_i8:
  3630. {
  3631. uint16_t __ret = *(uint16_t*)(ip + 2);
  3632. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3633. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3634. (*(int32_t*)(localVarBase + __ret)) = CompareCgt((*(int64_t*)(localVarBase + __c1)), (*(int64_t*)(localVarBase + __c2)));
  3635. ip += 8;
  3636. continue;
  3637. }
  3638. case HiOpcodeEnum::CompOpVarVarVar_Cgt_f4:
  3639. {
  3640. uint16_t __ret = *(uint16_t*)(ip + 2);
  3641. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3642. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3643. (*(int32_t*)(localVarBase + __ret)) = CompareCgt((*(float*)(localVarBase + __c1)), (*(float*)(localVarBase + __c2)));
  3644. ip += 8;
  3645. continue;
  3646. }
  3647. case HiOpcodeEnum::CompOpVarVarVar_Cgt_f8:
  3648. {
  3649. uint16_t __ret = *(uint16_t*)(ip + 2);
  3650. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3651. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3652. (*(int32_t*)(localVarBase + __ret)) = CompareCgt((*(double*)(localVarBase + __c1)), (*(double*)(localVarBase + __c2)));
  3653. ip += 8;
  3654. continue;
  3655. }
  3656. case HiOpcodeEnum::CompOpVarVarVar_CgtUn_i4:
  3657. {
  3658. uint16_t __ret = *(uint16_t*)(ip + 2);
  3659. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3660. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3661. (*(int32_t*)(localVarBase + __ret)) = CompareCgtUn((*(int32_t*)(localVarBase + __c1)), (*(int32_t*)(localVarBase + __c2)));
  3662. ip += 8;
  3663. continue;
  3664. }
  3665. case HiOpcodeEnum::CompOpVarVarVar_CgtUn_i8:
  3666. {
  3667. uint16_t __ret = *(uint16_t*)(ip + 2);
  3668. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3669. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3670. (*(int32_t*)(localVarBase + __ret)) = CompareCgtUn((*(int64_t*)(localVarBase + __c1)), (*(int64_t*)(localVarBase + __c2)));
  3671. ip += 8;
  3672. continue;
  3673. }
  3674. case HiOpcodeEnum::CompOpVarVarVar_CgtUn_f4:
  3675. {
  3676. uint16_t __ret = *(uint16_t*)(ip + 2);
  3677. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3678. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3679. (*(int32_t*)(localVarBase + __ret)) = CompareCgtUn((*(float*)(localVarBase + __c1)), (*(float*)(localVarBase + __c2)));
  3680. ip += 8;
  3681. continue;
  3682. }
  3683. case HiOpcodeEnum::CompOpVarVarVar_CgtUn_f8:
  3684. {
  3685. uint16_t __ret = *(uint16_t*)(ip + 2);
  3686. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3687. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3688. (*(int32_t*)(localVarBase + __ret)) = CompareCgtUn((*(double*)(localVarBase + __c1)), (*(double*)(localVarBase + __c2)));
  3689. ip += 8;
  3690. continue;
  3691. }
  3692. case HiOpcodeEnum::CompOpVarVarVar_Clt_i4:
  3693. {
  3694. uint16_t __ret = *(uint16_t*)(ip + 2);
  3695. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3696. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3697. (*(int32_t*)(localVarBase + __ret)) = CompareClt((*(int32_t*)(localVarBase + __c1)), (*(int32_t*)(localVarBase + __c2)));
  3698. ip += 8;
  3699. continue;
  3700. }
  3701. case HiOpcodeEnum::CompOpVarVarVar_Clt_i8:
  3702. {
  3703. uint16_t __ret = *(uint16_t*)(ip + 2);
  3704. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3705. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3706. (*(int32_t*)(localVarBase + __ret)) = CompareClt((*(int64_t*)(localVarBase + __c1)), (*(int64_t*)(localVarBase + __c2)));
  3707. ip += 8;
  3708. continue;
  3709. }
  3710. case HiOpcodeEnum::CompOpVarVarVar_Clt_f4:
  3711. {
  3712. uint16_t __ret = *(uint16_t*)(ip + 2);
  3713. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3714. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3715. (*(int32_t*)(localVarBase + __ret)) = CompareClt((*(float*)(localVarBase + __c1)), (*(float*)(localVarBase + __c2)));
  3716. ip += 8;
  3717. continue;
  3718. }
  3719. case HiOpcodeEnum::CompOpVarVarVar_Clt_f8:
  3720. {
  3721. uint16_t __ret = *(uint16_t*)(ip + 2);
  3722. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3723. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3724. (*(int32_t*)(localVarBase + __ret)) = CompareClt((*(double*)(localVarBase + __c1)), (*(double*)(localVarBase + __c2)));
  3725. ip += 8;
  3726. continue;
  3727. }
  3728. case HiOpcodeEnum::CompOpVarVarVar_CltUn_i4:
  3729. {
  3730. uint16_t __ret = *(uint16_t*)(ip + 2);
  3731. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3732. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3733. (*(int32_t*)(localVarBase + __ret)) = CompareCltUn((*(int32_t*)(localVarBase + __c1)), (*(int32_t*)(localVarBase + __c2)));
  3734. ip += 8;
  3735. continue;
  3736. }
  3737. case HiOpcodeEnum::CompOpVarVarVar_CltUn_i8:
  3738. {
  3739. uint16_t __ret = *(uint16_t*)(ip + 2);
  3740. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3741. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3742. (*(int32_t*)(localVarBase + __ret)) = CompareCltUn((*(int64_t*)(localVarBase + __c1)), (*(int64_t*)(localVarBase + __c2)));
  3743. ip += 8;
  3744. continue;
  3745. }
  3746. case HiOpcodeEnum::CompOpVarVarVar_CltUn_f4:
  3747. {
  3748. uint16_t __ret = *(uint16_t*)(ip + 2);
  3749. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3750. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3751. (*(int32_t*)(localVarBase + __ret)) = CompareCltUn((*(float*)(localVarBase + __c1)), (*(float*)(localVarBase + __c2)));
  3752. ip += 8;
  3753. continue;
  3754. }
  3755. case HiOpcodeEnum::CompOpVarVarVar_CltUn_f8:
  3756. {
  3757. uint16_t __ret = *(uint16_t*)(ip + 2);
  3758. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3759. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3760. (*(int32_t*)(localVarBase + __ret)) = CompareCltUn((*(double*)(localVarBase + __c1)), (*(double*)(localVarBase + __c2)));
  3761. ip += 8;
  3762. continue;
  3763. }
  3764. //!!!}}COMPARE
  3765. #pragma endregion
  3766. #pragma region BRANCH
  3767. //!!!{{BRANCH
  3768. case HiOpcodeEnum::BranchUncondition_4:
  3769. {
  3770. int32_t __offset = *(int32_t*)(ip + 4);
  3771. ip = ipBase + __offset;
  3772. continue;
  3773. }
  3774. case HiOpcodeEnum::BranchTrueVar_i4:
  3775. {
  3776. uint16_t __op = *(uint16_t*)(ip + 2);
  3777. int32_t __offset = *(int32_t*)(ip + 4);
  3778. if ((*(int32_t*)(localVarBase + __op)))
  3779. {
  3780. ip = ipBase + __offset;
  3781. }
  3782. else
  3783. {
  3784. ip += 8;
  3785. }
  3786. continue;
  3787. }
  3788. case HiOpcodeEnum::BranchTrueVar_i8:
  3789. {
  3790. uint16_t __op = *(uint16_t*)(ip + 2);
  3791. int32_t __offset = *(int32_t*)(ip + 4);
  3792. if ((*(int64_t*)(localVarBase + __op)))
  3793. {
  3794. ip = ipBase + __offset;
  3795. }
  3796. else
  3797. {
  3798. ip += 8;
  3799. }
  3800. continue;
  3801. }
  3802. case HiOpcodeEnum::BranchFalseVar_i4:
  3803. {
  3804. uint16_t __op = *(uint16_t*)(ip + 2);
  3805. int32_t __offset = *(int32_t*)(ip + 4);
  3806. if (!(*(int32_t*)(localVarBase + __op)))
  3807. {
  3808. ip = ipBase + __offset;
  3809. }
  3810. else
  3811. {
  3812. ip += 8;
  3813. }
  3814. continue;
  3815. }
  3816. case HiOpcodeEnum::BranchFalseVar_i8:
  3817. {
  3818. uint16_t __op = *(uint16_t*)(ip + 2);
  3819. int32_t __offset = *(int32_t*)(ip + 4);
  3820. if (!(*(int64_t*)(localVarBase + __op)))
  3821. {
  3822. ip = ipBase + __offset;
  3823. }
  3824. else
  3825. {
  3826. ip += 8;
  3827. }
  3828. continue;
  3829. }
  3830. case HiOpcodeEnum::BranchVarVar_Ceq_i4:
  3831. {
  3832. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3833. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3834. int32_t __offset = *(int32_t*)(ip + 8);
  3835. if (CompareCeq((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  3836. {
  3837. ip = ipBase + __offset;
  3838. }
  3839. else
  3840. {
  3841. ip += 16;
  3842. }
  3843. continue;
  3844. }
  3845. case HiOpcodeEnum::BranchVarVar_Ceq_i8:
  3846. {
  3847. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3848. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3849. int32_t __offset = *(int32_t*)(ip + 8);
  3850. if (CompareCeq((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  3851. {
  3852. ip = ipBase + __offset;
  3853. }
  3854. else
  3855. {
  3856. ip += 16;
  3857. }
  3858. continue;
  3859. }
  3860. case HiOpcodeEnum::BranchVarVar_Ceq_f4:
  3861. {
  3862. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3863. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3864. int32_t __offset = *(int32_t*)(ip + 8);
  3865. if (CompareCeq((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  3866. {
  3867. ip = ipBase + __offset;
  3868. }
  3869. else
  3870. {
  3871. ip += 16;
  3872. }
  3873. continue;
  3874. }
  3875. case HiOpcodeEnum::BranchVarVar_Ceq_f8:
  3876. {
  3877. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3878. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3879. int32_t __offset = *(int32_t*)(ip + 8);
  3880. if (CompareCeq((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  3881. {
  3882. ip = ipBase + __offset;
  3883. }
  3884. else
  3885. {
  3886. ip += 16;
  3887. }
  3888. continue;
  3889. }
  3890. case HiOpcodeEnum::BranchVarVar_CneUn_i4:
  3891. {
  3892. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3893. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3894. int32_t __offset = *(int32_t*)(ip + 8);
  3895. if (CompareCneUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  3896. {
  3897. ip = ipBase + __offset;
  3898. }
  3899. else
  3900. {
  3901. ip += 16;
  3902. }
  3903. continue;
  3904. }
  3905. case HiOpcodeEnum::BranchVarVar_CneUn_i8:
  3906. {
  3907. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3908. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3909. int32_t __offset = *(int32_t*)(ip + 8);
  3910. if (CompareCneUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  3911. {
  3912. ip = ipBase + __offset;
  3913. }
  3914. else
  3915. {
  3916. ip += 16;
  3917. }
  3918. continue;
  3919. }
  3920. case HiOpcodeEnum::BranchVarVar_CneUn_f4:
  3921. {
  3922. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3923. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3924. int32_t __offset = *(int32_t*)(ip + 8);
  3925. if (CompareCneUn((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  3926. {
  3927. ip = ipBase + __offset;
  3928. }
  3929. else
  3930. {
  3931. ip += 16;
  3932. }
  3933. continue;
  3934. }
  3935. case HiOpcodeEnum::BranchVarVar_CneUn_f8:
  3936. {
  3937. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3938. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3939. int32_t __offset = *(int32_t*)(ip + 8);
  3940. if (CompareCneUn((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  3941. {
  3942. ip = ipBase + __offset;
  3943. }
  3944. else
  3945. {
  3946. ip += 16;
  3947. }
  3948. continue;
  3949. }
  3950. case HiOpcodeEnum::BranchVarVar_Cgt_i4:
  3951. {
  3952. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3953. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3954. int32_t __offset = *(int32_t*)(ip + 8);
  3955. if (CompareCle((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  3956. {
  3957. ip += 16;
  3958. }
  3959. else
  3960. {
  3961. ip = ipBase + __offset;
  3962. }
  3963. continue;
  3964. }
  3965. case HiOpcodeEnum::BranchVarVar_Cgt_i8:
  3966. {
  3967. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3968. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3969. int32_t __offset = *(int32_t*)(ip + 8);
  3970. if (CompareCle((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  3971. {
  3972. ip += 16;
  3973. }
  3974. else
  3975. {
  3976. ip = ipBase + __offset;
  3977. }
  3978. continue;
  3979. }
  3980. case HiOpcodeEnum::BranchVarVar_Cgt_f4:
  3981. {
  3982. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3983. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3984. int32_t __offset = *(int32_t*)(ip + 8);
  3985. if (CompareCle((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  3986. {
  3987. ip += 16;
  3988. }
  3989. else
  3990. {
  3991. ip = ipBase + __offset;
  3992. }
  3993. continue;
  3994. }
  3995. case HiOpcodeEnum::BranchVarVar_Cgt_f8:
  3996. {
  3997. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3998. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3999. int32_t __offset = *(int32_t*)(ip + 8);
  4000. if (CompareCle((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4001. {
  4002. ip += 16;
  4003. }
  4004. else
  4005. {
  4006. ip = ipBase + __offset;
  4007. }
  4008. continue;
  4009. }
  4010. case HiOpcodeEnum::BranchVarVar_CgtUn_i4:
  4011. {
  4012. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4013. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4014. int32_t __offset = *(int32_t*)(ip + 8);
  4015. if (CompareCleUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  4016. {
  4017. ip += 16;
  4018. }
  4019. else
  4020. {
  4021. ip = ipBase + __offset;
  4022. }
  4023. continue;
  4024. }
  4025. case HiOpcodeEnum::BranchVarVar_CgtUn_i8:
  4026. {
  4027. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4028. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4029. int32_t __offset = *(int32_t*)(ip + 8);
  4030. if (CompareCleUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  4031. {
  4032. ip += 16;
  4033. }
  4034. else
  4035. {
  4036. ip = ipBase + __offset;
  4037. }
  4038. continue;
  4039. }
  4040. case HiOpcodeEnum::BranchVarVar_CgtUn_f4:
  4041. {
  4042. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4043. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4044. int32_t __offset = *(int32_t*)(ip + 8);
  4045. if (CompareCleUn((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  4046. {
  4047. ip += 16;
  4048. }
  4049. else
  4050. {
  4051. ip = ipBase + __offset;
  4052. }
  4053. continue;
  4054. }
  4055. case HiOpcodeEnum::BranchVarVar_CgtUn_f8:
  4056. {
  4057. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4058. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4059. int32_t __offset = *(int32_t*)(ip + 8);
  4060. if (CompareCleUn((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4061. {
  4062. ip += 16;
  4063. }
  4064. else
  4065. {
  4066. ip = ipBase + __offset;
  4067. }
  4068. continue;
  4069. }
  4070. case HiOpcodeEnum::BranchVarVar_Cge_i4:
  4071. {
  4072. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4073. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4074. int32_t __offset = *(int32_t*)(ip + 8);
  4075. if (CompareClt((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  4076. {
  4077. ip += 16;
  4078. }
  4079. else
  4080. {
  4081. ip = ipBase + __offset;
  4082. }
  4083. continue;
  4084. }
  4085. case HiOpcodeEnum::BranchVarVar_Cge_i8:
  4086. {
  4087. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4088. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4089. int32_t __offset = *(int32_t*)(ip + 8);
  4090. if (CompareClt((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  4091. {
  4092. ip += 16;
  4093. }
  4094. else
  4095. {
  4096. ip = ipBase + __offset;
  4097. }
  4098. continue;
  4099. }
  4100. case HiOpcodeEnum::BranchVarVar_Cge_f4:
  4101. {
  4102. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4103. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4104. int32_t __offset = *(int32_t*)(ip + 8);
  4105. if (CompareClt((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  4106. {
  4107. ip += 16;
  4108. }
  4109. else
  4110. {
  4111. ip = ipBase + __offset;
  4112. }
  4113. continue;
  4114. }
  4115. case HiOpcodeEnum::BranchVarVar_Cge_f8:
  4116. {
  4117. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4118. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4119. int32_t __offset = *(int32_t*)(ip + 8);
  4120. if (CompareClt((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4121. {
  4122. ip += 16;
  4123. }
  4124. else
  4125. {
  4126. ip = ipBase + __offset;
  4127. }
  4128. continue;
  4129. }
  4130. case HiOpcodeEnum::BranchVarVar_CgeUn_i4:
  4131. {
  4132. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4133. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4134. int32_t __offset = *(int32_t*)(ip + 8);
  4135. if (CompareCltUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  4136. {
  4137. ip += 16;
  4138. }
  4139. else
  4140. {
  4141. ip = ipBase + __offset;
  4142. }
  4143. continue;
  4144. }
  4145. case HiOpcodeEnum::BranchVarVar_CgeUn_i8:
  4146. {
  4147. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4148. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4149. int32_t __offset = *(int32_t*)(ip + 8);
  4150. if (CompareCltUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  4151. {
  4152. ip += 16;
  4153. }
  4154. else
  4155. {
  4156. ip = ipBase + __offset;
  4157. }
  4158. continue;
  4159. }
  4160. case HiOpcodeEnum::BranchVarVar_CgeUn_f4:
  4161. {
  4162. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4163. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4164. int32_t __offset = *(int32_t*)(ip + 8);
  4165. if (CompareCltUn((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  4166. {
  4167. ip += 16;
  4168. }
  4169. else
  4170. {
  4171. ip = ipBase + __offset;
  4172. }
  4173. continue;
  4174. }
  4175. case HiOpcodeEnum::BranchVarVar_CgeUn_f8:
  4176. {
  4177. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4178. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4179. int32_t __offset = *(int32_t*)(ip + 8);
  4180. if (CompareCltUn((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4181. {
  4182. ip += 16;
  4183. }
  4184. else
  4185. {
  4186. ip = ipBase + __offset;
  4187. }
  4188. continue;
  4189. }
  4190. case HiOpcodeEnum::BranchVarVar_Clt_i4:
  4191. {
  4192. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4193. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4194. int32_t __offset = *(int32_t*)(ip + 8);
  4195. if (CompareCge((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  4196. {
  4197. ip += 16;
  4198. }
  4199. else
  4200. {
  4201. ip = ipBase + __offset;
  4202. }
  4203. continue;
  4204. }
  4205. case HiOpcodeEnum::BranchVarVar_Clt_i8:
  4206. {
  4207. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4208. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4209. int32_t __offset = *(int32_t*)(ip + 8);
  4210. if (CompareCge((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  4211. {
  4212. ip += 16;
  4213. }
  4214. else
  4215. {
  4216. ip = ipBase + __offset;
  4217. }
  4218. continue;
  4219. }
  4220. case HiOpcodeEnum::BranchVarVar_Clt_f4:
  4221. {
  4222. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4223. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4224. int32_t __offset = *(int32_t*)(ip + 8);
  4225. if (CompareCge((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  4226. {
  4227. ip += 16;
  4228. }
  4229. else
  4230. {
  4231. ip = ipBase + __offset;
  4232. }
  4233. continue;
  4234. }
  4235. case HiOpcodeEnum::BranchVarVar_Clt_f8:
  4236. {
  4237. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4238. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4239. int32_t __offset = *(int32_t*)(ip + 8);
  4240. if (CompareCge((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4241. {
  4242. ip += 16;
  4243. }
  4244. else
  4245. {
  4246. ip = ipBase + __offset;
  4247. }
  4248. continue;
  4249. }
  4250. case HiOpcodeEnum::BranchVarVar_CltUn_i4:
  4251. {
  4252. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4253. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4254. int32_t __offset = *(int32_t*)(ip + 8);
  4255. if (CompareCgeUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  4256. {
  4257. ip += 16;
  4258. }
  4259. else
  4260. {
  4261. ip = ipBase + __offset;
  4262. }
  4263. continue;
  4264. }
  4265. case HiOpcodeEnum::BranchVarVar_CltUn_i8:
  4266. {
  4267. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4268. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4269. int32_t __offset = *(int32_t*)(ip + 8);
  4270. if (CompareCgeUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  4271. {
  4272. ip += 16;
  4273. }
  4274. else
  4275. {
  4276. ip = ipBase + __offset;
  4277. }
  4278. continue;
  4279. }
  4280. case HiOpcodeEnum::BranchVarVar_CltUn_f4:
  4281. {
  4282. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4283. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4284. int32_t __offset = *(int32_t*)(ip + 8);
  4285. if (CompareCgeUn((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  4286. {
  4287. ip += 16;
  4288. }
  4289. else
  4290. {
  4291. ip = ipBase + __offset;
  4292. }
  4293. continue;
  4294. }
  4295. case HiOpcodeEnum::BranchVarVar_CltUn_f8:
  4296. {
  4297. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4298. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4299. int32_t __offset = *(int32_t*)(ip + 8);
  4300. if (CompareCgeUn((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4301. {
  4302. ip += 16;
  4303. }
  4304. else
  4305. {
  4306. ip = ipBase + __offset;
  4307. }
  4308. continue;
  4309. }
  4310. case HiOpcodeEnum::BranchVarVar_Cle_i4:
  4311. {
  4312. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4313. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4314. int32_t __offset = *(int32_t*)(ip + 8);
  4315. if (CompareCgt((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  4316. {
  4317. ip += 16;
  4318. }
  4319. else
  4320. {
  4321. ip = ipBase + __offset;
  4322. }
  4323. continue;
  4324. }
  4325. case HiOpcodeEnum::BranchVarVar_Cle_i8:
  4326. {
  4327. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4328. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4329. int32_t __offset = *(int32_t*)(ip + 8);
  4330. if (CompareCgt((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  4331. {
  4332. ip += 16;
  4333. }
  4334. else
  4335. {
  4336. ip = ipBase + __offset;
  4337. }
  4338. continue;
  4339. }
  4340. case HiOpcodeEnum::BranchVarVar_Cle_f4:
  4341. {
  4342. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4343. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4344. int32_t __offset = *(int32_t*)(ip + 8);
  4345. if (CompareCgt((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  4346. {
  4347. ip += 16;
  4348. }
  4349. else
  4350. {
  4351. ip = ipBase + __offset;
  4352. }
  4353. continue;
  4354. }
  4355. case HiOpcodeEnum::BranchVarVar_Cle_f8:
  4356. {
  4357. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4358. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4359. int32_t __offset = *(int32_t*)(ip + 8);
  4360. if (CompareCgt((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4361. {
  4362. ip += 16;
  4363. }
  4364. else
  4365. {
  4366. ip = ipBase + __offset;
  4367. }
  4368. continue;
  4369. }
  4370. case HiOpcodeEnum::BranchVarVar_CleUn_i4:
  4371. {
  4372. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4373. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4374. int32_t __offset = *(int32_t*)(ip + 8);
  4375. if (CompareCgtUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  4376. {
  4377. ip += 16;
  4378. }
  4379. else
  4380. {
  4381. ip = ipBase + __offset;
  4382. }
  4383. continue;
  4384. }
  4385. case HiOpcodeEnum::BranchVarVar_CleUn_i8:
  4386. {
  4387. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4388. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4389. int32_t __offset = *(int32_t*)(ip + 8);
  4390. if (CompareCgtUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  4391. {
  4392. ip += 16;
  4393. }
  4394. else
  4395. {
  4396. ip = ipBase + __offset;
  4397. }
  4398. continue;
  4399. }
  4400. case HiOpcodeEnum::BranchVarVar_CleUn_f4:
  4401. {
  4402. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4403. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4404. int32_t __offset = *(int32_t*)(ip + 8);
  4405. if (CompareCgtUn((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  4406. {
  4407. ip += 16;
  4408. }
  4409. else
  4410. {
  4411. ip = ipBase + __offset;
  4412. }
  4413. continue;
  4414. }
  4415. case HiOpcodeEnum::BranchVarVar_CleUn_f8:
  4416. {
  4417. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4418. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4419. int32_t __offset = *(int32_t*)(ip + 8);
  4420. if (CompareCgtUn((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4421. {
  4422. ip += 16;
  4423. }
  4424. else
  4425. {
  4426. ip = ipBase + __offset;
  4427. }
  4428. continue;
  4429. }
  4430. case HiOpcodeEnum::BranchJump:
  4431. {
  4432. uint32_t __token = *(uint32_t*)(ip + 4);
  4433. IL2CPP_ASSERT(false);
  4434. ip += 8;
  4435. continue;
  4436. }
  4437. case HiOpcodeEnum::BranchSwitch:
  4438. {
  4439. uint16_t __value = *(uint16_t*)(ip + 2);
  4440. uint32_t __caseNum = *(uint32_t*)(ip + 4);
  4441. uint32_t __caseOffsets = *(uint32_t*)(ip + 8);
  4442. uint32_t __idx = (*(uint32_t*)(localVarBase + __value));
  4443. if (__idx < __caseNum)
  4444. {
  4445. ip = ipBase + ((uint32_t*)&imi->resolveDatas[__caseOffsets])[__idx];
  4446. }
  4447. else
  4448. {
  4449. ip += 16;
  4450. }
  4451. continue;
  4452. }
  4453. //!!!}}BRANCH
  4454. #pragma endregion
  4455. #pragma region FUNCTION
  4456. //!!!{{FUNCTION
  4457. case HiOpcodeEnum::NewClassVar:
  4458. {
  4459. uint16_t __obj = *(uint16_t*)(ip + 2);
  4460. void* __managed2NativeMethod = ((void*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  4461. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  4462. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4463. uint16_t* _argIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4464. Il2CppObject* _obj = il2cpp::vm::Object::New(__method->klass);
  4465. *(Il2CppObject**)(localVarBase + _argIdxs[0]) = _obj;
  4466. ((Managed2NativeCallMethod)__managed2NativeMethod)(__method, _argIdxs, localVarBase, nullptr);
  4467. (*(Il2CppObject**)(localVarBase + __obj)) = _obj;
  4468. ip += 16;
  4469. continue;
  4470. }
  4471. case HiOpcodeEnum::NewClassVar_Ctor_0:
  4472. {
  4473. uint16_t __obj = *(uint16_t*)(ip + 2);
  4474. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  4475. Il2CppObject* _obj = il2cpp::vm::Object::New(__method->klass);
  4476. ((NativeClassCtor0)(__method->methodPointerCallByInterp))(_obj, __method);
  4477. (*(Il2CppObject**)(localVarBase + __obj)) = _obj;
  4478. ip += 8;
  4479. continue;
  4480. }
  4481. case HiOpcodeEnum::NewClassVar_NotCtor:
  4482. {
  4483. uint16_t __obj = *(uint16_t*)(ip + 2);
  4484. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  4485. (*(Il2CppObject**)(localVarBase + __obj)) = il2cpp::vm::Object::New(__klass);
  4486. ip += 8;
  4487. continue;
  4488. }
  4489. case HiOpcodeEnum::NewValueTypeVar:
  4490. {
  4491. uint16_t __obj = *(uint16_t*)(ip + 2);
  4492. void* __managed2NativeMethod = ((void*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  4493. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  4494. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4495. uint16_t* _argIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4496. int32_t _typeSize = GetTypeValueSize(__method->klass);
  4497. // arg1, arg2, ..., argN, value type, __this
  4498. StackObject* _frameBasePtr = localVarBase + _argIdxs[0];
  4499. Il2CppObject* _this = (Il2CppObject*)(_frameBasePtr - GetStackSizeByByteSize(_typeSize));
  4500. _frameBasePtr->ptr = _this;
  4501. ((Managed2NativeCallMethod)__managed2NativeMethod)(__method, _argIdxs, localVarBase, nullptr);
  4502. std::memmove((void*)(localVarBase + __obj), _this, _typeSize);
  4503. ip += 16;
  4504. continue;
  4505. }
  4506. case HiOpcodeEnum::NewClassInterpVar:
  4507. {
  4508. uint16_t __obj = *(uint16_t*)(ip + 2);
  4509. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 12)]);
  4510. uint16_t __argBase = *(uint16_t*)(ip + 4);
  4511. uint16_t __argStackObjectNum = *(uint16_t*)(ip + 6);
  4512. uint16_t __ctorFrameBase = *(uint16_t*)(ip + 8);
  4513. IL2CPP_ASSERT(__obj < __ctorFrameBase);
  4514. Il2CppObject* _newObj = il2cpp::vm::Object::New(__method->klass);
  4515. StackObject* _frameBasePtr = (StackObject*)(void*)(localVarBase + __ctorFrameBase);
  4516. std::memmove(_frameBasePtr + 1, (void*)(localVarBase + __argBase), __argStackObjectNum * sizeof(StackObject)); // move arg
  4517. _frameBasePtr->obj = _newObj; // prepare this
  4518. (*(Il2CppObject**)(localVarBase + __obj)) = _newObj; // set must after move
  4519. CALL_INTERP_VOID((ip + 16), __method, _frameBasePtr);
  4520. continue;
  4521. }
  4522. case HiOpcodeEnum::NewClassInterpVar_Ctor_0:
  4523. {
  4524. uint16_t __obj = *(uint16_t*)(ip + 2);
  4525. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  4526. uint16_t __ctorFrameBase = *(uint16_t*)(ip + 4);
  4527. IL2CPP_ASSERT(__obj < __ctorFrameBase);
  4528. Il2CppObject* _newObj = il2cpp::vm::Object::New(__method->klass);
  4529. StackObject* _frameBasePtr = (StackObject*)(void*)(localVarBase + __ctorFrameBase);
  4530. _frameBasePtr->obj = _newObj; // prepare this
  4531. (*(Il2CppObject**)(localVarBase + __obj)) = _newObj;
  4532. CALL_INTERP_VOID((ip + 16), __method, _frameBasePtr);
  4533. continue;
  4534. }
  4535. case HiOpcodeEnum::NewValueTypeInterpVar:
  4536. {
  4537. uint16_t __obj = *(uint16_t*)(ip + 2);
  4538. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 12)]);
  4539. uint16_t __argBase = *(uint16_t*)(ip + 4);
  4540. uint16_t __argStackObjectNum = *(uint16_t*)(ip + 6);
  4541. uint16_t __ctorFrameBase = *(uint16_t*)(ip + 8);
  4542. IL2CPP_ASSERT(__obj < __ctorFrameBase);
  4543. StackObject* _frameBasePtr = (StackObject*)(void*)(localVarBase + __ctorFrameBase);
  4544. std::memmove(_frameBasePtr + 1, (void*)(localVarBase + __argBase), __argStackObjectNum * sizeof(StackObject)); // move arg
  4545. _frameBasePtr->ptr = (StackObject*)(void*)(localVarBase + __obj);
  4546. int32_t _typeSize = GetTypeValueSize(__method->klass);
  4547. CALL_INTERP_VOID((ip + 16), __method, _frameBasePtr);
  4548. continue;
  4549. }
  4550. case HiOpcodeEnum::AdjustValueTypeRefVar:
  4551. {
  4552. uint16_t __data = *(uint16_t*)(ip + 2);
  4553. // ref => fake value type boxed object value. // fake obj = ref(value_type) - sizeof(Il2CppObject)
  4554. StackObject* _thisSo = ((StackObject*)((void*)(localVarBase + __data)));
  4555. _thisSo->obj -= 1;
  4556. ip += 8;
  4557. continue;
  4558. }
  4559. case HiOpcodeEnum::BoxRefVarVar:
  4560. {
  4561. uint16_t __dst = *(uint16_t*)(ip + 2);
  4562. uint16_t __src = *(uint16_t*)(ip + 4);
  4563. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  4564. (*(Il2CppObject**)(localVarBase + __dst)) = il2cpp::vm::Object::Box(__klass, (*(void**)(localVarBase + __src)));
  4565. ip += 16;
  4566. continue;
  4567. }
  4568. case HiOpcodeEnum::LdvirftnVarVar:
  4569. {
  4570. uint16_t __resultMethod = *(uint16_t*)(ip + 2);
  4571. uint16_t __obj = *(uint16_t*)(ip + 4);
  4572. MethodInfo* __virtualMethod = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  4573. (*(MethodInfo**)(localVarBase + __resultMethod)) = GET_OBJECT_VIRTUAL_METHOD((*(Il2CppObject**)(localVarBase + __obj)), __virtualMethod);
  4574. ip += 16;
  4575. continue;
  4576. }
  4577. case HiOpcodeEnum::RetVar_ret_1:
  4578. {
  4579. uint16_t __ret = *(uint16_t*)(ip + 2);
  4580. SET_RET_AND_LEAVE_FRAME(1, 8);
  4581. continue;
  4582. }
  4583. case HiOpcodeEnum::RetVar_ret_2:
  4584. {
  4585. uint16_t __ret = *(uint16_t*)(ip + 2);
  4586. SET_RET_AND_LEAVE_FRAME(2, 8);
  4587. continue;
  4588. }
  4589. case HiOpcodeEnum::RetVar_ret_4:
  4590. {
  4591. uint16_t __ret = *(uint16_t*)(ip + 2);
  4592. SET_RET_AND_LEAVE_FRAME(4, 8);
  4593. continue;
  4594. }
  4595. case HiOpcodeEnum::RetVar_ret_8:
  4596. {
  4597. uint16_t __ret = *(uint16_t*)(ip + 2);
  4598. SET_RET_AND_LEAVE_FRAME(8, 8);
  4599. continue;
  4600. }
  4601. case HiOpcodeEnum::RetVar_ret_12:
  4602. {
  4603. uint16_t __ret = *(uint16_t*)(ip + 2);
  4604. SET_RET_AND_LEAVE_FRAME(12, 12);
  4605. continue;
  4606. }
  4607. case HiOpcodeEnum::RetVar_ret_16:
  4608. {
  4609. uint16_t __ret = *(uint16_t*)(ip + 2);
  4610. SET_RET_AND_LEAVE_FRAME(16, 16);
  4611. continue;
  4612. }
  4613. case HiOpcodeEnum::RetVar_ret_20:
  4614. {
  4615. uint16_t __ret = *(uint16_t*)(ip + 2);
  4616. SET_RET_AND_LEAVE_FRAME(20, 20);
  4617. continue;
  4618. }
  4619. case HiOpcodeEnum::RetVar_ret_24:
  4620. {
  4621. uint16_t __ret = *(uint16_t*)(ip + 2);
  4622. SET_RET_AND_LEAVE_FRAME(24, 24);
  4623. continue;
  4624. }
  4625. case HiOpcodeEnum::RetVar_ret_28:
  4626. {
  4627. uint16_t __ret = *(uint16_t*)(ip + 2);
  4628. SET_RET_AND_LEAVE_FRAME(28, 28);
  4629. continue;
  4630. }
  4631. case HiOpcodeEnum::RetVar_ret_32:
  4632. {
  4633. uint16_t __ret = *(uint16_t*)(ip + 2);
  4634. SET_RET_AND_LEAVE_FRAME(32, 32);
  4635. continue;
  4636. }
  4637. case HiOpcodeEnum::RetVar_ret_n:
  4638. {
  4639. uint16_t __ret = *(uint16_t*)(ip + 2);
  4640. uint32_t __size = *(uint32_t*)(ip + 4);
  4641. std::memmove(frame->ret, (void*)(localVarBase + __ret), __size);
  4642. LEAVE_FRAME();
  4643. continue;
  4644. }
  4645. case HiOpcodeEnum::RetVar_void:
  4646. {
  4647. LEAVE_FRAME();
  4648. continue;
  4649. }
  4650. case HiOpcodeEnum::CallNativeInstance_void:
  4651. {
  4652. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4653. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4654. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4655. uint16_t* _resolvedArgIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4656. CHECK_NOT_NULL_THROW((localVarBase + _resolvedArgIdxs[0])->obj);
  4657. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(((MethodInfo*)imi->resolveDatas[__methodInfo]), _resolvedArgIdxs, localVarBase, nullptr);
  4658. ip += 16;
  4659. continue;
  4660. }
  4661. case HiOpcodeEnum::CallNativeInstance_ret:
  4662. {
  4663. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4664. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4665. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4666. uint16_t __ret = *(uint16_t*)(ip + 2);
  4667. uint16_t* _resolvedArgIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4668. CHECK_NOT_NULL_THROW((localVarBase + _resolvedArgIdxs[0])->obj);
  4669. void* _ret = (void*)(localVarBase + __ret);
  4670. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(((MethodInfo*)imi->resolveDatas[__methodInfo]), _resolvedArgIdxs, localVarBase, _ret);
  4671. ip += 16;
  4672. continue;
  4673. }
  4674. case HiOpcodeEnum::CallNativeInstance_ret_expand:
  4675. {
  4676. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 8);
  4677. uint32_t __methodInfo = *(uint32_t*)(ip + 12);
  4678. uint32_t __argIdxs = *(uint32_t*)(ip + 16);
  4679. uint16_t __ret = *(uint16_t*)(ip + 4);
  4680. uint8_t __retLocationType = *(uint8_t*)(ip + 2);
  4681. uint16_t* _resolvedArgIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4682. CHECK_NOT_NULL_THROW((localVarBase + _resolvedArgIdxs[0])->obj);
  4683. void* _ret = (void*)(localVarBase + __ret);
  4684. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(((MethodInfo*)imi->resolveDatas[__methodInfo]), _resolvedArgIdxs, localVarBase, _ret);
  4685. ExpandLocationData2StackDataByType(_ret, (LocationDataType)__retLocationType);
  4686. ip += 24;
  4687. continue;
  4688. }
  4689. case HiOpcodeEnum::CallNativeStatic_void:
  4690. {
  4691. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4692. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4693. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4694. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__methodInfo]);
  4695. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  4696. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(_resolvedMethod, ((uint16_t*)&imi->resolveDatas[__argIdxs]), localVarBase, nullptr);
  4697. ip += 16;
  4698. continue;
  4699. }
  4700. case HiOpcodeEnum::CallNativeStatic_ret:
  4701. {
  4702. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4703. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4704. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4705. uint16_t __ret = *(uint16_t*)(ip + 2);
  4706. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__methodInfo]);
  4707. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  4708. void* _ret = (void*)(localVarBase + __ret);
  4709. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(_resolvedMethod, ((uint16_t*)&imi->resolveDatas[__argIdxs]), localVarBase, _ret);
  4710. ip += 16;
  4711. continue;
  4712. }
  4713. case HiOpcodeEnum::CallNativeStatic_ret_expand:
  4714. {
  4715. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 8);
  4716. uint32_t __methodInfo = *(uint32_t*)(ip + 12);
  4717. uint32_t __argIdxs = *(uint32_t*)(ip + 16);
  4718. uint16_t __ret = *(uint16_t*)(ip + 4);
  4719. uint8_t __retLocationType = *(uint8_t*)(ip + 2);
  4720. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__methodInfo]);
  4721. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  4722. void* _ret = (void*)(localVarBase + __ret);
  4723. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(_resolvedMethod, ((uint16_t*)&imi->resolveDatas[__argIdxs]), localVarBase, _ret);
  4724. ExpandLocationData2StackDataByType(_ret, (LocationDataType)__retLocationType);
  4725. ip += 24;
  4726. continue;
  4727. }
  4728. case HiOpcodeEnum::CallInterp_void:
  4729. {
  4730. MethodInfo* __methodInfo = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  4731. uint16_t __argBase = *(uint16_t*)(ip + 2);
  4732. if (metadata::IsInstanceMethod(__methodInfo))
  4733. {
  4734. CHECK_NOT_NULL_THROW((localVarBase + __argBase)->obj);
  4735. }
  4736. CALL_INTERP_VOID((ip + 8), __methodInfo, (StackObject*)(void*)(localVarBase + __argBase));
  4737. continue;
  4738. }
  4739. case HiOpcodeEnum::CallInterp_ret:
  4740. {
  4741. MethodInfo* __methodInfo = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  4742. uint16_t __argBase = *(uint16_t*)(ip + 2);
  4743. uint16_t __ret = *(uint16_t*)(ip + 4);
  4744. if (metadata::IsInstanceMethod(__methodInfo))
  4745. {
  4746. CHECK_NOT_NULL_THROW((localVarBase + __argBase)->obj);
  4747. }
  4748. CALL_INTERP_RET((ip + 16), __methodInfo, (StackObject*)(void*)(localVarBase + __argBase), (void*)(localVarBase + __ret));
  4749. continue;
  4750. }
  4751. case HiOpcodeEnum::CallVirtual_void:
  4752. {
  4753. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4754. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4755. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4756. uint16_t* _argIdxData = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4757. StackObject* _objPtr = localVarBase + _argIdxData[0];
  4758. MethodInfo* _actualMethod = GET_OBJECT_VIRTUAL_METHOD( _objPtr->obj, ((MethodInfo*)imi->resolveDatas[__methodInfo]));
  4759. if (IS_CLASS_VALUE_TYPE(_actualMethod->klass))
  4760. {
  4761. _objPtr->obj += 1;
  4762. }
  4763. if (hybridclr::metadata::IsInterpreterImplement(_actualMethod))
  4764. {
  4765. CALL_INTERP_VOID((ip + 16), _actualMethod, _objPtr);
  4766. }
  4767. else
  4768. {
  4769. if (!InitAndGetInterpreterDirectlyCallMethodPointer(_actualMethod))
  4770. {
  4771. RaiseAOTGenericMethodNotInstantiatedException(_actualMethod);
  4772. }
  4773. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(_actualMethod, _argIdxData, localVarBase, nullptr);
  4774. ip += 16;
  4775. }
  4776. continue;
  4777. }
  4778. case HiOpcodeEnum::CallVirtual_ret:
  4779. {
  4780. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4781. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4782. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4783. uint16_t __ret = *(uint16_t*)(ip + 2);
  4784. uint16_t* _argIdxData = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4785. StackObject* _objPtr = localVarBase + _argIdxData[0];
  4786. MethodInfo* _actualMethod = GET_OBJECT_VIRTUAL_METHOD(_objPtr->obj, ((MethodInfo*)imi->resolveDatas[__methodInfo]));
  4787. void* _ret = (void*)(localVarBase + __ret);
  4788. if (IS_CLASS_VALUE_TYPE(_actualMethod->klass))
  4789. {
  4790. _objPtr->obj += 1;
  4791. }
  4792. if (hybridclr::metadata::IsInterpreterImplement(_actualMethod))
  4793. {
  4794. CALL_INTERP_RET((ip + 16), _actualMethod, _objPtr, _ret);
  4795. }
  4796. else
  4797. {
  4798. if (!InitAndGetInterpreterDirectlyCallMethodPointer(_actualMethod))
  4799. {
  4800. RaiseAOTGenericMethodNotInstantiatedException(_actualMethod);
  4801. }
  4802. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(_actualMethod, _argIdxData, localVarBase, _ret);
  4803. ip += 16;
  4804. }
  4805. continue;
  4806. }
  4807. case HiOpcodeEnum::CallVirtual_ret_expand:
  4808. {
  4809. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 8);
  4810. uint32_t __methodInfo = *(uint32_t*)(ip + 12);
  4811. uint32_t __argIdxs = *(uint32_t*)(ip + 16);
  4812. uint16_t __ret = *(uint16_t*)(ip + 4);
  4813. uint8_t __retLocationType = *(uint8_t*)(ip + 2);
  4814. uint16_t* _argIdxData = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4815. StackObject* _objPtr = localVarBase + _argIdxData[0];
  4816. MethodInfo* _actualMethod = GET_OBJECT_VIRTUAL_METHOD(_objPtr->obj, ((MethodInfo*)imi->resolveDatas[__methodInfo]));
  4817. void* _ret = (void*)(localVarBase + __ret);
  4818. if (IS_CLASS_VALUE_TYPE(_actualMethod->klass))
  4819. {
  4820. _objPtr->obj += 1;
  4821. }
  4822. if (hybridclr::metadata::IsInterpreterImplement(_actualMethod))
  4823. {
  4824. CALL_INTERP_RET((ip + 24), _actualMethod, _objPtr, _ret);
  4825. }
  4826. else
  4827. {
  4828. if (!InitAndGetInterpreterDirectlyCallMethodPointer(_actualMethod))
  4829. {
  4830. RaiseAOTGenericMethodNotInstantiatedException(_actualMethod);
  4831. }
  4832. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(_actualMethod, _argIdxData, localVarBase, _ret);
  4833. ExpandLocationData2StackDataByType(_ret, (LocationDataType)__retLocationType);
  4834. ip += 24;
  4835. }
  4836. continue;
  4837. }
  4838. case HiOpcodeEnum::CallInterpVirtual_void:
  4839. {
  4840. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  4841. uint16_t __argBase = *(uint16_t*)(ip + 2);
  4842. StackObject* _argBasePtr = (StackObject*)(void*)(localVarBase + __argBase);
  4843. MethodInfo* _actualMethod = GET_OBJECT_VIRTUAL_METHOD(_argBasePtr->obj, __method);
  4844. if (IS_CLASS_VALUE_TYPE(_actualMethod->klass))
  4845. {
  4846. _argBasePtr->obj += 1;
  4847. }
  4848. CALL_INTERP_VOID((ip + 8), _actualMethod, _argBasePtr);
  4849. continue;
  4850. }
  4851. case HiOpcodeEnum::CallInterpVirtual_ret:
  4852. {
  4853. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  4854. uint16_t __argBase = *(uint16_t*)(ip + 2);
  4855. uint16_t __ret = *(uint16_t*)(ip + 4);
  4856. StackObject* _argBasePtr = (StackObject*)(void*)(localVarBase + __argBase);
  4857. MethodInfo* _actualMethod = GET_OBJECT_VIRTUAL_METHOD(_argBasePtr->obj, __method);
  4858. if (IS_CLASS_VALUE_TYPE(_actualMethod->klass))
  4859. {
  4860. _argBasePtr->obj += 1;
  4861. }
  4862. CALL_INTERP_RET((ip + 16), _actualMethod, _argBasePtr, (void*)(localVarBase + __ret));
  4863. continue;
  4864. }
  4865. case HiOpcodeEnum::CallInd_void:
  4866. {
  4867. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4868. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4869. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4870. Managed2NativeCallMethod _nativeMethodPointer = ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod]);
  4871. uint16_t* _argIdxsPtr = (uint16_t*)&imi->resolveDatas[__argIdxs];
  4872. StackObject* _argBasePtr = localVarBase + _argIdxsPtr[0];
  4873. MethodInfo* _method = (MethodInfo*)(localVarBase + __methodInfo)->ptr;
  4874. if (metadata::IsInstanceMethod(_method))
  4875. {
  4876. CHECK_NOT_NULL_THROW(_argBasePtr->obj);
  4877. }
  4878. if (IsInterpreterImplement(_method))
  4879. {
  4880. CALL_INTERP_VOID((ip + 16), _method, _argBasePtr);
  4881. continue;
  4882. }
  4883. if (!InitAndGetInterpreterDirectlyCallMethodPointer(_method))
  4884. {
  4885. RaiseAOTGenericMethodNotInstantiatedException(_method);
  4886. }
  4887. _nativeMethodPointer(_method, _argIdxsPtr, localVarBase, nullptr);
  4888. ip += 16;
  4889. continue;
  4890. }
  4891. case HiOpcodeEnum::CallInd_ret:
  4892. {
  4893. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4894. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4895. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4896. uint16_t __ret = *(uint16_t*)(ip + 2);
  4897. void* _ret = (void*)(localVarBase + __ret);
  4898. Managed2NativeCallMethod _nativeMethodPointer = ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod]);
  4899. uint16_t* _argIdxsPtr = (uint16_t*)&imi->resolveDatas[__argIdxs];
  4900. StackObject* _argBasePtr = localVarBase + _argIdxsPtr[0];
  4901. MethodInfo* _method = (MethodInfo*)(localVarBase + __methodInfo)->ptr;
  4902. if (metadata::IsInstanceMethod(_method))
  4903. {
  4904. CHECK_NOT_NULL_THROW(_argBasePtr->obj);
  4905. }
  4906. if (IsInterpreterImplement(_method))
  4907. {
  4908. CALL_INTERP_RET((ip + 16), _method, _argBasePtr, _ret);
  4909. continue;
  4910. }
  4911. if (!InitAndGetInterpreterDirectlyCallMethodPointer(_method))
  4912. {
  4913. RaiseAOTGenericMethodNotInstantiatedException(_method);
  4914. }
  4915. _nativeMethodPointer(_method, _argIdxsPtr, localVarBase, _ret);
  4916. ip += 16;
  4917. continue;
  4918. }
  4919. case HiOpcodeEnum::CallInd_ret_expand:
  4920. {
  4921. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 8);
  4922. uint32_t __methodInfo = *(uint32_t*)(ip + 12);
  4923. uint32_t __argIdxs = *(uint32_t*)(ip + 16);
  4924. uint16_t __ret = *(uint16_t*)(ip + 4);
  4925. uint8_t __retLocationType = *(uint8_t*)(ip + 2);
  4926. void* _ret = (void*)(localVarBase + __ret);
  4927. Managed2NativeCallMethod _nativeMethodPointer = ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod]);
  4928. uint16_t* _argIdxsPtr = (uint16_t*)&imi->resolveDatas[__argIdxs];
  4929. StackObject* _argBasePtr = localVarBase + _argIdxsPtr[0];
  4930. MethodInfo* _method = (MethodInfo*)(localVarBase + __methodInfo)->ptr;
  4931. if (metadata::IsInstanceMethod(_method))
  4932. {
  4933. CHECK_NOT_NULL_THROW(_argBasePtr->obj);
  4934. }
  4935. if (IsInterpreterImplement(_method))
  4936. {
  4937. CALL_INTERP_RET((ip + 24), _method, _argBasePtr, _ret);
  4938. continue;
  4939. }
  4940. if (!InitAndGetInterpreterDirectlyCallMethodPointer(_method))
  4941. {
  4942. RaiseAOTGenericMethodNotInstantiatedException(_method);
  4943. }
  4944. _nativeMethodPointer(_method, _argIdxsPtr, localVarBase, _ret);
  4945. ExpandLocationData2StackDataByType(_ret, (LocationDataType)__retLocationType);
  4946. ip += 24;
  4947. continue;
  4948. }
  4949. case HiOpcodeEnum::CallDelegateInvoke_void:
  4950. {
  4951. uint32_t __managed2NativeStaticMethod = *(uint32_t*)(ip + 4);
  4952. uint32_t __managed2NativeInstanceMethod = *(uint32_t*)(ip + 8);
  4953. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4954. uint16_t __invokeParamCount = *(uint16_t*)(ip + 2);
  4955. void* _ret = nullptr;
  4956. uint16_t* _resolvedArgIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4957. StackObject* _argBasePtr = localVarBase + _resolvedArgIdxs[0];
  4958. Il2CppMulticastDelegate* _del = (Il2CppMulticastDelegate*)_argBasePtr->obj;
  4959. CHECK_NOT_NULL_THROW(_del);
  4960. if (_del->delegates == nullptr)
  4961. {
  4962. const MethodInfo* method = _del->delegate.method;
  4963. Il2CppObject* target = _del->delegate.target;
  4964. if (hybridclr::metadata::IsInterpreterImplement(method))
  4965. {
  4966. switch ((int32_t)__invokeParamCount - (int32_t)method->parameters_count)
  4967. {
  4968. case 0:
  4969. {
  4970. if (hybridclr::metadata::IsInstanceMethod(method))
  4971. {
  4972. CHECK_NOT_NULL_THROW(target);
  4973. target += IS_CLASS_VALUE_TYPE(method->klass);
  4974. _argBasePtr->obj = target;
  4975. }
  4976. else
  4977. {
  4978. _argBasePtr = __invokeParamCount == 0 ? _argBasePtr + 1 : localVarBase + _resolvedArgIdxs[1];
  4979. }
  4980. break;
  4981. }
  4982. case -1:
  4983. {
  4984. _argBasePtr->obj = target;
  4985. break;
  4986. }
  4987. case 1:
  4988. {
  4989. _argBasePtr = localVarBase + _resolvedArgIdxs[1];
  4990. CHECK_NOT_NULL_THROW(_argBasePtr->obj);
  4991. break;
  4992. }
  4993. default:
  4994. {
  4995. RaiseExecutionEngineException("CallInterpDelegate");
  4996. }
  4997. }
  4998. CALL_INTERP_RET((ip + 16), method, _argBasePtr, _ret);
  4999. continue;
  5000. }
  5001. else
  5002. {
  5003. Managed2NativeCallMethod _staticM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeStaticMethod];
  5004. Managed2NativeCallMethod _instanceM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeInstanceMethod];
  5005. InvokeSingleDelegate(__invokeParamCount, method, target, _staticM2NMethod, _instanceM2NMethod, _resolvedArgIdxs, localVarBase, _ret);
  5006. }
  5007. }
  5008. else
  5009. {
  5010. Il2CppArray* dels = _del->delegates;
  5011. Managed2NativeCallMethod _staticM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeStaticMethod];
  5012. Managed2NativeCallMethod _instanceM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeInstanceMethod];
  5013. for (il2cpp_array_size_t i = 0; i < dels->max_length; i++)
  5014. {
  5015. Il2CppMulticastDelegate* subDel = il2cpp_array_get(dels, Il2CppMulticastDelegate *, i);
  5016. IL2CPP_ASSERT(subDel);
  5017. IL2CPP_ASSERT(subDel->delegates == nullptr);
  5018. const MethodInfo* method = subDel->delegate.method;
  5019. Il2CppObject* target = subDel->delegate.target;
  5020. InvokeSingleDelegate(__invokeParamCount, method, target, _staticM2NMethod, _instanceM2NMethod, _resolvedArgIdxs, localVarBase, _ret);
  5021. }
  5022. }
  5023. ip += 16;
  5024. continue;
  5025. }
  5026. case HiOpcodeEnum::CallDelegateInvoke_ret:
  5027. {
  5028. uint32_t __managed2NativeStaticMethod = *(uint32_t*)(ip + 8);
  5029. uint32_t __managed2NativeInstanceMethod = *(uint32_t*)(ip + 12);
  5030. uint32_t __argIdxs = *(uint32_t*)(ip + 16);
  5031. uint16_t __ret = *(uint16_t*)(ip + 2);
  5032. uint16_t __invokeParamCount = *(uint16_t*)(ip + 4);
  5033. uint16_t __retTypeStackObjectSize = *(uint16_t*)(ip + 6);
  5034. void* _ret = (void*)(localVarBase + __ret);
  5035. IL2CPP_ASSERT(__retTypeStackObjectSize <= kMaxRetValueTypeStackObjectSize);
  5036. StackObject* _tempRet = tempRet ? tempRet : (tempRet = (StackObject*)alloca(sizeof(StackObject) * kMaxRetValueTypeStackObjectSize));
  5037. uint16_t* _resolvedArgIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  5038. StackObject* _argBasePtr = localVarBase + _resolvedArgIdxs[0];
  5039. Il2CppMulticastDelegate* _del = (Il2CppMulticastDelegate*)_argBasePtr->obj;
  5040. CHECK_NOT_NULL_THROW(_del);
  5041. if (_del->delegates == nullptr)
  5042. {
  5043. const MethodInfo* method = _del->delegate.method;
  5044. Il2CppObject* target = _del->delegate.target;
  5045. if (hybridclr::metadata::IsInterpreterImplement(method))
  5046. {
  5047. switch ((int32_t)__invokeParamCount - (int32_t)method->parameters_count)
  5048. {
  5049. case 0:
  5050. {
  5051. if (hybridclr::metadata::IsInstanceMethod(method))
  5052. {
  5053. CHECK_NOT_NULL_THROW(target);
  5054. target += IS_CLASS_VALUE_TYPE(method->klass);
  5055. _argBasePtr->obj = target;
  5056. }
  5057. else
  5058. {
  5059. _argBasePtr = __invokeParamCount == 0 ? _argBasePtr + 1 : localVarBase + _resolvedArgIdxs[1];
  5060. }
  5061. break;
  5062. }
  5063. case -1:
  5064. {
  5065. _argBasePtr->obj = target;
  5066. break;
  5067. }
  5068. case 1:
  5069. {
  5070. _argBasePtr = localVarBase + _resolvedArgIdxs[1];
  5071. CHECK_NOT_NULL_THROW(_argBasePtr->obj);
  5072. break;
  5073. }
  5074. default:
  5075. {
  5076. RaiseExecutionEngineException("CallInterpDelegate");
  5077. }
  5078. }
  5079. CALL_INTERP_RET((ip + 24), method, _argBasePtr, _ret);
  5080. continue;
  5081. }
  5082. else
  5083. {
  5084. Managed2NativeCallMethod _staticM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeStaticMethod];
  5085. Managed2NativeCallMethod _instanceM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeInstanceMethod];
  5086. InvokeSingleDelegate(__invokeParamCount, method, target, _staticM2NMethod, _instanceM2NMethod, _resolvedArgIdxs, localVarBase, _tempRet);
  5087. }
  5088. }
  5089. else
  5090. {
  5091. Il2CppArray* dels = _del->delegates;
  5092. Managed2NativeCallMethod _staticM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeStaticMethod];
  5093. Managed2NativeCallMethod _instanceM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeInstanceMethod];
  5094. for (il2cpp_array_size_t i = 0; i < dels->max_length; i++)
  5095. {
  5096. Il2CppMulticastDelegate* subDel = il2cpp_array_get(dels, Il2CppMulticastDelegate *, i);
  5097. IL2CPP_ASSERT(subDel);
  5098. IL2CPP_ASSERT(subDel->delegates == nullptr);
  5099. const MethodInfo* method = subDel->delegate.method;
  5100. Il2CppObject* target = subDel->delegate.target;
  5101. InvokeSingleDelegate(__invokeParamCount, method, target, _staticM2NMethod, _instanceM2NMethod, _resolvedArgIdxs, localVarBase, _tempRet);
  5102. }
  5103. }
  5104. CopyStackObject((StackObject*)_ret, _tempRet, __retTypeStackObjectSize);
  5105. ip += 24;
  5106. continue;
  5107. }
  5108. case HiOpcodeEnum::CallDelegateInvoke_ret_expand:
  5109. {
  5110. uint32_t __managed2NativeStaticMethod = *(uint32_t*)(ip + 8);
  5111. uint32_t __managed2NativeInstanceMethod = *(uint32_t*)(ip + 12);
  5112. uint32_t __argIdxs = *(uint32_t*)(ip + 16);
  5113. uint16_t __ret = *(uint16_t*)(ip + 4);
  5114. uint16_t __invokeParamCount = *(uint16_t*)(ip + 6);
  5115. uint8_t __retLocationType = *(uint8_t*)(ip + 2);
  5116. void* _ret = (void*)(localVarBase + __ret);
  5117. StackObject _tempRet[1];
  5118. uint16_t* _resolvedArgIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  5119. StackObject* _argBasePtr = localVarBase + _resolvedArgIdxs[0];
  5120. Il2CppMulticastDelegate* _del = (Il2CppMulticastDelegate*)_argBasePtr->obj;
  5121. CHECK_NOT_NULL_THROW(_del);
  5122. if (_del->delegates == nullptr)
  5123. {
  5124. const MethodInfo* method = _del->delegate.method;
  5125. Il2CppObject* target = _del->delegate.target;
  5126. if (hybridclr::metadata::IsInterpreterImplement(method))
  5127. {
  5128. switch ((int32_t)__invokeParamCount - (int32_t)method->parameters_count)
  5129. {
  5130. case 0:
  5131. {
  5132. if (hybridclr::metadata::IsInstanceMethod(method))
  5133. {
  5134. CHECK_NOT_NULL_THROW(target);
  5135. target += IS_CLASS_VALUE_TYPE(method->klass);
  5136. _argBasePtr->obj = target;
  5137. }
  5138. else
  5139. {
  5140. _argBasePtr = __invokeParamCount == 0 ? _argBasePtr + 1 : localVarBase + _resolvedArgIdxs[1];
  5141. }
  5142. break;
  5143. }
  5144. case -1:
  5145. {
  5146. _argBasePtr->obj = target;
  5147. break;
  5148. }
  5149. case 1:
  5150. {
  5151. _argBasePtr = localVarBase + _resolvedArgIdxs[1];
  5152. CHECK_NOT_NULL_THROW(_argBasePtr->obj);
  5153. break;
  5154. }
  5155. default:
  5156. {
  5157. RaiseExecutionEngineException("CallInterpDelegate");
  5158. }
  5159. }
  5160. CALL_INTERP_RET((ip + 24), method, _argBasePtr, _ret);
  5161. continue;
  5162. }
  5163. else
  5164. {
  5165. Managed2NativeCallMethod _staticM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeStaticMethod];
  5166. Managed2NativeCallMethod _instanceM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeInstanceMethod];
  5167. InvokeSingleDelegate(__invokeParamCount, method, target, _staticM2NMethod, _instanceM2NMethod, _resolvedArgIdxs, localVarBase, _tempRet);
  5168. }
  5169. }
  5170. else
  5171. {
  5172. Il2CppArray* dels = _del->delegates;
  5173. Managed2NativeCallMethod _staticM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeStaticMethod];
  5174. Managed2NativeCallMethod _instanceM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeInstanceMethod];
  5175. for (il2cpp_array_size_t i = 0; i < dels->max_length; i++)
  5176. {
  5177. Il2CppMulticastDelegate* subDel = il2cpp_array_get(dels, Il2CppMulticastDelegate *, i);
  5178. IL2CPP_ASSERT(subDel);
  5179. IL2CPP_ASSERT(subDel->delegates == nullptr);
  5180. const MethodInfo* method = subDel->delegate.method;
  5181. Il2CppObject* target = subDel->delegate.target;
  5182. InvokeSingleDelegate(__invokeParamCount, method, target, _staticM2NMethod, _instanceM2NMethod, _resolvedArgIdxs, localVarBase, _tempRet);
  5183. }
  5184. }
  5185. CopyLocationData2StackDataByType((StackObject*)_ret, _tempRet, (LocationDataType)__retLocationType);
  5186. ip += 24;
  5187. continue;
  5188. }
  5189. case HiOpcodeEnum::CallDelegateBeginInvoke:
  5190. {
  5191. uint16_t __result = *(uint16_t*)(ip + 2);
  5192. uint32_t __methodInfo = *(uint32_t*)(ip + 4);
  5193. uint32_t __argIdxs = *(uint32_t*)(ip + 8);
  5194. (*(Il2CppObject**)(localVarBase + __result)) = InvokeDelegateBeginInvoke(((MethodInfo*)imi->resolveDatas[__methodInfo]), ((uint16_t*)&imi->resolveDatas[__argIdxs]), localVarBase);
  5195. ip += 16;
  5196. continue;
  5197. }
  5198. case HiOpcodeEnum::CallDelegateEndInvoke_void:
  5199. {
  5200. uint32_t __methodInfo = *(uint32_t*)(ip + 4);
  5201. uint16_t __asyncResult = *(uint16_t*)(ip + 2);
  5202. InvokeDelegateEndInvokeVoid(((MethodInfo*)imi->resolveDatas[__methodInfo]), (Il2CppAsyncResult*)(*(Il2CppObject**)(localVarBase + __asyncResult)));
  5203. ip += 8;
  5204. continue;
  5205. }
  5206. case HiOpcodeEnum::CallDelegateEndInvoke_ret:
  5207. {
  5208. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  5209. uint16_t __asyncResult = *(uint16_t*)(ip + 2);
  5210. uint16_t __ret = *(uint16_t*)(ip + 4);
  5211. InvokeDelegateEndInvokeRet(((MethodInfo*)imi->resolveDatas[__methodInfo]), (Il2CppAsyncResult*)(*(Il2CppObject**)(localVarBase + __asyncResult)), (void*)(localVarBase + __ret));
  5212. ip += 16;
  5213. continue;
  5214. }
  5215. case HiOpcodeEnum::NewDelegate:
  5216. {
  5217. uint16_t __dst = *(uint16_t*)(ip + 2);
  5218. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  5219. uint16_t __obj = *(uint16_t*)(ip + 4);
  5220. uint16_t __method = *(uint16_t*)(ip + 6);
  5221. Il2CppDelegate* del = (Il2CppDelegate*)il2cpp::vm::Object::New(__klass);
  5222. ConstructDelegate(del, (*(Il2CppObject**)(localVarBase + __obj)), (*(MethodInfo**)(localVarBase + __method)));
  5223. (*(Il2CppObject**)(localVarBase + __dst)) = (Il2CppObject*)del;
  5224. ip += 16;
  5225. continue;
  5226. }
  5227. case HiOpcodeEnum::CtorDelegate:
  5228. {
  5229. uint16_t __dst = *(uint16_t*)(ip + 2);
  5230. MethodInfo* __ctor = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  5231. uint16_t __obj = *(uint16_t*)(ip + 4);
  5232. uint16_t __method = *(uint16_t*)(ip + 6);
  5233. Il2CppDelegate* _del = (Il2CppDelegate*)il2cpp::vm::Object::New(__ctor->klass);
  5234. ConstructorDelegate2(__ctor, _del, (*(Il2CppObject**)(localVarBase + __obj)), (*(MethodInfo**)(localVarBase + __method)));
  5235. (*(Il2CppObject**)(localVarBase + __dst)) = (Il2CppObject*)_del;
  5236. ip += 16;
  5237. continue;
  5238. }
  5239. case HiOpcodeEnum::CallCommonNativeInstance_v_0:
  5240. {
  5241. uint32_t __method = *(uint32_t*)(ip + 4);
  5242. uint16_t __self = *(uint16_t*)(ip + 2);
  5243. void* _self = (*(void**)(localVarBase + __self));
  5244. CHECK_NOT_NULL_THROW(_self);
  5245. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5246. typedef void(*_NativeMethod_)(void*, MethodInfo*);
  5247. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5248. ip += 8;
  5249. continue;
  5250. }
  5251. case HiOpcodeEnum::CallCommonNativeInstance_i1_0:
  5252. {
  5253. uint32_t __method = *(uint32_t*)(ip + 8);
  5254. uint16_t __self = *(uint16_t*)(ip + 2);
  5255. uint16_t __ret = *(uint16_t*)(ip + 4);
  5256. void* _self = (*(void**)(localVarBase + __self));
  5257. CHECK_NOT_NULL_THROW(_self);
  5258. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5259. typedef int8_t(*_NativeMethod_)(void*, MethodInfo*);
  5260. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5261. ip += 16;
  5262. continue;
  5263. }
  5264. case HiOpcodeEnum::CallCommonNativeInstance_u1_0:
  5265. {
  5266. uint32_t __method = *(uint32_t*)(ip + 8);
  5267. uint16_t __self = *(uint16_t*)(ip + 2);
  5268. uint16_t __ret = *(uint16_t*)(ip + 4);
  5269. void* _self = (*(void**)(localVarBase + __self));
  5270. CHECK_NOT_NULL_THROW(_self);
  5271. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5272. typedef uint8_t(*_NativeMethod_)(void*, MethodInfo*);
  5273. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5274. ip += 16;
  5275. continue;
  5276. }
  5277. case HiOpcodeEnum::CallCommonNativeInstance_i2_0:
  5278. {
  5279. uint32_t __method = *(uint32_t*)(ip + 8);
  5280. uint16_t __self = *(uint16_t*)(ip + 2);
  5281. uint16_t __ret = *(uint16_t*)(ip + 4);
  5282. void* _self = (*(void**)(localVarBase + __self));
  5283. CHECK_NOT_NULL_THROW(_self);
  5284. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5285. typedef int16_t(*_NativeMethod_)(void*, MethodInfo*);
  5286. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5287. ip += 16;
  5288. continue;
  5289. }
  5290. case HiOpcodeEnum::CallCommonNativeInstance_u2_0:
  5291. {
  5292. uint32_t __method = *(uint32_t*)(ip + 8);
  5293. uint16_t __self = *(uint16_t*)(ip + 2);
  5294. uint16_t __ret = *(uint16_t*)(ip + 4);
  5295. void* _self = (*(void**)(localVarBase + __self));
  5296. CHECK_NOT_NULL_THROW(_self);
  5297. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5298. typedef uint16_t(*_NativeMethod_)(void*, MethodInfo*);
  5299. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5300. ip += 16;
  5301. continue;
  5302. }
  5303. case HiOpcodeEnum::CallCommonNativeInstance_i4_0:
  5304. {
  5305. uint32_t __method = *(uint32_t*)(ip + 8);
  5306. uint16_t __self = *(uint16_t*)(ip + 2);
  5307. uint16_t __ret = *(uint16_t*)(ip + 4);
  5308. void* _self = (*(void**)(localVarBase + __self));
  5309. CHECK_NOT_NULL_THROW(_self);
  5310. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5311. typedef int32_t(*_NativeMethod_)(void*, MethodInfo*);
  5312. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5313. ip += 16;
  5314. continue;
  5315. }
  5316. case HiOpcodeEnum::CallCommonNativeInstance_i8_0:
  5317. {
  5318. uint32_t __method = *(uint32_t*)(ip + 8);
  5319. uint16_t __self = *(uint16_t*)(ip + 2);
  5320. uint16_t __ret = *(uint16_t*)(ip + 4);
  5321. void* _self = (*(void**)(localVarBase + __self));
  5322. CHECK_NOT_NULL_THROW(_self);
  5323. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5324. typedef int64_t(*_NativeMethod_)(void*, MethodInfo*);
  5325. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5326. ip += 16;
  5327. continue;
  5328. }
  5329. case HiOpcodeEnum::CallCommonNativeInstance_f4_0:
  5330. {
  5331. uint32_t __method = *(uint32_t*)(ip + 8);
  5332. uint16_t __self = *(uint16_t*)(ip + 2);
  5333. uint16_t __ret = *(uint16_t*)(ip + 4);
  5334. void* _self = (*(void**)(localVarBase + __self));
  5335. CHECK_NOT_NULL_THROW(_self);
  5336. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5337. typedef float(*_NativeMethod_)(void*, MethodInfo*);
  5338. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5339. ip += 16;
  5340. continue;
  5341. }
  5342. case HiOpcodeEnum::CallCommonNativeInstance_f8_0:
  5343. {
  5344. uint32_t __method = *(uint32_t*)(ip + 8);
  5345. uint16_t __self = *(uint16_t*)(ip + 2);
  5346. uint16_t __ret = *(uint16_t*)(ip + 4);
  5347. void* _self = (*(void**)(localVarBase + __self));
  5348. CHECK_NOT_NULL_THROW(_self);
  5349. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5350. typedef double(*_NativeMethod_)(void*, MethodInfo*);
  5351. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5352. ip += 16;
  5353. continue;
  5354. }
  5355. case HiOpcodeEnum::CallCommonNativeInstance_v_i4_1:
  5356. {
  5357. uint32_t __method = *(uint32_t*)(ip + 8);
  5358. uint16_t __self = *(uint16_t*)(ip + 2);
  5359. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5360. void* _self = (*(void**)(localVarBase + __self));
  5361. CHECK_NOT_NULL_THROW(_self);
  5362. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5363. typedef void(*_NativeMethod_)(void*, int32_t, MethodInfo*);
  5364. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  5365. ip += 16;
  5366. continue;
  5367. }
  5368. case HiOpcodeEnum::CallCommonNativeInstance_v_i4_2:
  5369. {
  5370. uint32_t __method = *(uint32_t*)(ip + 8);
  5371. uint16_t __self = *(uint16_t*)(ip + 2);
  5372. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5373. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5374. void* _self = (*(void**)(localVarBase + __self));
  5375. CHECK_NOT_NULL_THROW(_self);
  5376. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5377. typedef void(*_NativeMethod_)(void*, int32_t, int32_t, MethodInfo*);
  5378. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  5379. ip += 16;
  5380. continue;
  5381. }
  5382. case HiOpcodeEnum::CallCommonNativeInstance_v_i4_3:
  5383. {
  5384. uint32_t __method = *(uint32_t*)(ip + 12);
  5385. uint16_t __self = *(uint16_t*)(ip + 2);
  5386. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5387. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5388. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5389. void* _self = (*(void**)(localVarBase + __self));
  5390. CHECK_NOT_NULL_THROW(_self);
  5391. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5392. typedef void(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, MethodInfo*);
  5393. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  5394. ip += 16;
  5395. continue;
  5396. }
  5397. case HiOpcodeEnum::CallCommonNativeInstance_v_i4_4:
  5398. {
  5399. uint32_t __method = *(uint32_t*)(ip + 12);
  5400. uint16_t __self = *(uint16_t*)(ip + 2);
  5401. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5402. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5403. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5404. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5405. void* _self = (*(void**)(localVarBase + __self));
  5406. CHECK_NOT_NULL_THROW(_self);
  5407. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5408. typedef void(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  5409. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  5410. ip += 16;
  5411. continue;
  5412. }
  5413. case HiOpcodeEnum::CallCommonNativeInstance_v_i8_1:
  5414. {
  5415. uint32_t __method = *(uint32_t*)(ip + 8);
  5416. uint16_t __self = *(uint16_t*)(ip + 2);
  5417. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5418. void* _self = (*(void**)(localVarBase + __self));
  5419. CHECK_NOT_NULL_THROW(_self);
  5420. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5421. typedef void(*_NativeMethod_)(void*, int64_t, MethodInfo*);
  5422. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  5423. ip += 16;
  5424. continue;
  5425. }
  5426. case HiOpcodeEnum::CallCommonNativeInstance_v_i8_2:
  5427. {
  5428. uint32_t __method = *(uint32_t*)(ip + 8);
  5429. uint16_t __self = *(uint16_t*)(ip + 2);
  5430. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5431. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5432. void* _self = (*(void**)(localVarBase + __self));
  5433. CHECK_NOT_NULL_THROW(_self);
  5434. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5435. typedef void(*_NativeMethod_)(void*, int64_t, int64_t, MethodInfo*);
  5436. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  5437. ip += 16;
  5438. continue;
  5439. }
  5440. case HiOpcodeEnum::CallCommonNativeInstance_v_i8_3:
  5441. {
  5442. uint32_t __method = *(uint32_t*)(ip + 12);
  5443. uint16_t __self = *(uint16_t*)(ip + 2);
  5444. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5445. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5446. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5447. void* _self = (*(void**)(localVarBase + __self));
  5448. CHECK_NOT_NULL_THROW(_self);
  5449. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5450. typedef void(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, MethodInfo*);
  5451. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  5452. ip += 16;
  5453. continue;
  5454. }
  5455. case HiOpcodeEnum::CallCommonNativeInstance_v_i8_4:
  5456. {
  5457. uint32_t __method = *(uint32_t*)(ip + 12);
  5458. uint16_t __self = *(uint16_t*)(ip + 2);
  5459. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5460. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5461. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5462. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5463. void* _self = (*(void**)(localVarBase + __self));
  5464. CHECK_NOT_NULL_THROW(_self);
  5465. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5466. typedef void(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  5467. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  5468. ip += 16;
  5469. continue;
  5470. }
  5471. case HiOpcodeEnum::CallCommonNativeInstance_v_f4_1:
  5472. {
  5473. uint32_t __method = *(uint32_t*)(ip + 8);
  5474. uint16_t __self = *(uint16_t*)(ip + 2);
  5475. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5476. void* _self = (*(void**)(localVarBase + __self));
  5477. CHECK_NOT_NULL_THROW(_self);
  5478. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5479. typedef void(*_NativeMethod_)(void*, float, MethodInfo*);
  5480. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), _resolvedMethod);
  5481. ip += 16;
  5482. continue;
  5483. }
  5484. case HiOpcodeEnum::CallCommonNativeInstance_v_f4_2:
  5485. {
  5486. uint32_t __method = *(uint32_t*)(ip + 8);
  5487. uint16_t __self = *(uint16_t*)(ip + 2);
  5488. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5489. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5490. void* _self = (*(void**)(localVarBase + __self));
  5491. CHECK_NOT_NULL_THROW(_self);
  5492. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5493. typedef void(*_NativeMethod_)(void*, float, float, MethodInfo*);
  5494. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  5495. ip += 16;
  5496. continue;
  5497. }
  5498. case HiOpcodeEnum::CallCommonNativeInstance_v_f4_3:
  5499. {
  5500. uint32_t __method = *(uint32_t*)(ip + 12);
  5501. uint16_t __self = *(uint16_t*)(ip + 2);
  5502. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5503. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5504. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5505. void* _self = (*(void**)(localVarBase + __self));
  5506. CHECK_NOT_NULL_THROW(_self);
  5507. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5508. typedef void(*_NativeMethod_)(void*, float, float, float, MethodInfo*);
  5509. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  5510. ip += 16;
  5511. continue;
  5512. }
  5513. case HiOpcodeEnum::CallCommonNativeInstance_v_f4_4:
  5514. {
  5515. uint32_t __method = *(uint32_t*)(ip + 12);
  5516. uint16_t __self = *(uint16_t*)(ip + 2);
  5517. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5518. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5519. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5520. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5521. void* _self = (*(void**)(localVarBase + __self));
  5522. CHECK_NOT_NULL_THROW(_self);
  5523. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5524. typedef void(*_NativeMethod_)(void*, float, float, float, float, MethodInfo*);
  5525. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  5526. ip += 16;
  5527. continue;
  5528. }
  5529. case HiOpcodeEnum::CallCommonNativeInstance_v_f8_1:
  5530. {
  5531. uint32_t __method = *(uint32_t*)(ip + 8);
  5532. uint16_t __self = *(uint16_t*)(ip + 2);
  5533. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5534. void* _self = (*(void**)(localVarBase + __self));
  5535. CHECK_NOT_NULL_THROW(_self);
  5536. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5537. typedef void(*_NativeMethod_)(void*, double, MethodInfo*);
  5538. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), _resolvedMethod);
  5539. ip += 16;
  5540. continue;
  5541. }
  5542. case HiOpcodeEnum::CallCommonNativeInstance_v_f8_2:
  5543. {
  5544. uint32_t __method = *(uint32_t*)(ip + 8);
  5545. uint16_t __self = *(uint16_t*)(ip + 2);
  5546. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5547. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5548. void* _self = (*(void**)(localVarBase + __self));
  5549. CHECK_NOT_NULL_THROW(_self);
  5550. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5551. typedef void(*_NativeMethod_)(void*, double, double, MethodInfo*);
  5552. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  5553. ip += 16;
  5554. continue;
  5555. }
  5556. case HiOpcodeEnum::CallCommonNativeInstance_v_f8_3:
  5557. {
  5558. uint32_t __method = *(uint32_t*)(ip + 12);
  5559. uint16_t __self = *(uint16_t*)(ip + 2);
  5560. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5561. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5562. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5563. void* _self = (*(void**)(localVarBase + __self));
  5564. CHECK_NOT_NULL_THROW(_self);
  5565. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5566. typedef void(*_NativeMethod_)(void*, double, double, double, MethodInfo*);
  5567. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  5568. ip += 16;
  5569. continue;
  5570. }
  5571. case HiOpcodeEnum::CallCommonNativeInstance_v_f8_4:
  5572. {
  5573. uint32_t __method = *(uint32_t*)(ip + 12);
  5574. uint16_t __self = *(uint16_t*)(ip + 2);
  5575. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5576. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5577. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5578. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5579. void* _self = (*(void**)(localVarBase + __self));
  5580. CHECK_NOT_NULL_THROW(_self);
  5581. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5582. typedef void(*_NativeMethod_)(void*, double, double, double, double, MethodInfo*);
  5583. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  5584. ip += 16;
  5585. continue;
  5586. }
  5587. case HiOpcodeEnum::CallCommonNativeInstance_u1_i4_1:
  5588. {
  5589. uint32_t __method = *(uint32_t*)(ip + 8);
  5590. uint16_t __self = *(uint16_t*)(ip + 2);
  5591. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5592. uint16_t __ret = *(uint16_t*)(ip + 6);
  5593. void* _self = (*(void**)(localVarBase + __self));
  5594. CHECK_NOT_NULL_THROW(_self);
  5595. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5596. typedef uint8_t(*_NativeMethod_)(void*, int32_t, MethodInfo*);
  5597. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  5598. ip += 16;
  5599. continue;
  5600. }
  5601. case HiOpcodeEnum::CallCommonNativeInstance_u1_i4_2:
  5602. {
  5603. uint32_t __method = *(uint32_t*)(ip + 12);
  5604. uint16_t __self = *(uint16_t*)(ip + 2);
  5605. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5606. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5607. uint16_t __ret = *(uint16_t*)(ip + 8);
  5608. void* _self = (*(void**)(localVarBase + __self));
  5609. CHECK_NOT_NULL_THROW(_self);
  5610. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5611. typedef uint8_t(*_NativeMethod_)(void*, int32_t, int32_t, MethodInfo*);
  5612. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  5613. ip += 16;
  5614. continue;
  5615. }
  5616. case HiOpcodeEnum::CallCommonNativeInstance_u1_i4_3:
  5617. {
  5618. uint32_t __method = *(uint32_t*)(ip + 12);
  5619. uint16_t __self = *(uint16_t*)(ip + 2);
  5620. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5621. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5622. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5623. uint16_t __ret = *(uint16_t*)(ip + 10);
  5624. void* _self = (*(void**)(localVarBase + __self));
  5625. CHECK_NOT_NULL_THROW(_self);
  5626. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5627. typedef uint8_t(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, MethodInfo*);
  5628. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  5629. ip += 16;
  5630. continue;
  5631. }
  5632. case HiOpcodeEnum::CallCommonNativeInstance_u1_i4_4:
  5633. {
  5634. uint32_t __method = *(uint32_t*)(ip + 16);
  5635. uint16_t __self = *(uint16_t*)(ip + 2);
  5636. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5637. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5638. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5639. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5640. uint16_t __ret = *(uint16_t*)(ip + 12);
  5641. void* _self = (*(void**)(localVarBase + __self));
  5642. CHECK_NOT_NULL_THROW(_self);
  5643. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5644. typedef uint8_t(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  5645. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  5646. ip += 24;
  5647. continue;
  5648. }
  5649. case HiOpcodeEnum::CallCommonNativeInstance_u1_i8_1:
  5650. {
  5651. uint32_t __method = *(uint32_t*)(ip + 8);
  5652. uint16_t __self = *(uint16_t*)(ip + 2);
  5653. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5654. uint16_t __ret = *(uint16_t*)(ip + 6);
  5655. void* _self = (*(void**)(localVarBase + __self));
  5656. CHECK_NOT_NULL_THROW(_self);
  5657. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5658. typedef uint8_t(*_NativeMethod_)(void*, int64_t, MethodInfo*);
  5659. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  5660. ip += 16;
  5661. continue;
  5662. }
  5663. case HiOpcodeEnum::CallCommonNativeInstance_u1_i8_2:
  5664. {
  5665. uint32_t __method = *(uint32_t*)(ip + 12);
  5666. uint16_t __self = *(uint16_t*)(ip + 2);
  5667. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5668. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5669. uint16_t __ret = *(uint16_t*)(ip + 8);
  5670. void* _self = (*(void**)(localVarBase + __self));
  5671. CHECK_NOT_NULL_THROW(_self);
  5672. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5673. typedef uint8_t(*_NativeMethod_)(void*, int64_t, int64_t, MethodInfo*);
  5674. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  5675. ip += 16;
  5676. continue;
  5677. }
  5678. case HiOpcodeEnum::CallCommonNativeInstance_u1_i8_3:
  5679. {
  5680. uint32_t __method = *(uint32_t*)(ip + 12);
  5681. uint16_t __self = *(uint16_t*)(ip + 2);
  5682. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5683. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5684. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5685. uint16_t __ret = *(uint16_t*)(ip + 10);
  5686. void* _self = (*(void**)(localVarBase + __self));
  5687. CHECK_NOT_NULL_THROW(_self);
  5688. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5689. typedef uint8_t(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, MethodInfo*);
  5690. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  5691. ip += 16;
  5692. continue;
  5693. }
  5694. case HiOpcodeEnum::CallCommonNativeInstance_u1_i8_4:
  5695. {
  5696. uint32_t __method = *(uint32_t*)(ip + 16);
  5697. uint16_t __self = *(uint16_t*)(ip + 2);
  5698. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5699. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5700. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5701. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5702. uint16_t __ret = *(uint16_t*)(ip + 12);
  5703. void* _self = (*(void**)(localVarBase + __self));
  5704. CHECK_NOT_NULL_THROW(_self);
  5705. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5706. typedef uint8_t(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  5707. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  5708. ip += 24;
  5709. continue;
  5710. }
  5711. case HiOpcodeEnum::CallCommonNativeInstance_u1_f4_1:
  5712. {
  5713. uint32_t __method = *(uint32_t*)(ip + 8);
  5714. uint16_t __self = *(uint16_t*)(ip + 2);
  5715. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5716. uint16_t __ret = *(uint16_t*)(ip + 6);
  5717. void* _self = (*(void**)(localVarBase + __self));
  5718. CHECK_NOT_NULL_THROW(_self);
  5719. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5720. typedef uint8_t(*_NativeMethod_)(void*, float, MethodInfo*);
  5721. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), _resolvedMethod);
  5722. ip += 16;
  5723. continue;
  5724. }
  5725. case HiOpcodeEnum::CallCommonNativeInstance_u1_f4_2:
  5726. {
  5727. uint32_t __method = *(uint32_t*)(ip + 12);
  5728. uint16_t __self = *(uint16_t*)(ip + 2);
  5729. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5730. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5731. uint16_t __ret = *(uint16_t*)(ip + 8);
  5732. void* _self = (*(void**)(localVarBase + __self));
  5733. CHECK_NOT_NULL_THROW(_self);
  5734. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5735. typedef uint8_t(*_NativeMethod_)(void*, float, float, MethodInfo*);
  5736. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  5737. ip += 16;
  5738. continue;
  5739. }
  5740. case HiOpcodeEnum::CallCommonNativeInstance_u1_f4_3:
  5741. {
  5742. uint32_t __method = *(uint32_t*)(ip + 12);
  5743. uint16_t __self = *(uint16_t*)(ip + 2);
  5744. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5745. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5746. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5747. uint16_t __ret = *(uint16_t*)(ip + 10);
  5748. void* _self = (*(void**)(localVarBase + __self));
  5749. CHECK_NOT_NULL_THROW(_self);
  5750. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5751. typedef uint8_t(*_NativeMethod_)(void*, float, float, float, MethodInfo*);
  5752. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  5753. ip += 16;
  5754. continue;
  5755. }
  5756. case HiOpcodeEnum::CallCommonNativeInstance_u1_f4_4:
  5757. {
  5758. uint32_t __method = *(uint32_t*)(ip + 16);
  5759. uint16_t __self = *(uint16_t*)(ip + 2);
  5760. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5761. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5762. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5763. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5764. uint16_t __ret = *(uint16_t*)(ip + 12);
  5765. void* _self = (*(void**)(localVarBase + __self));
  5766. CHECK_NOT_NULL_THROW(_self);
  5767. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5768. typedef uint8_t(*_NativeMethod_)(void*, float, float, float, float, MethodInfo*);
  5769. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  5770. ip += 24;
  5771. continue;
  5772. }
  5773. case HiOpcodeEnum::CallCommonNativeInstance_u1_f8_1:
  5774. {
  5775. uint32_t __method = *(uint32_t*)(ip + 8);
  5776. uint16_t __self = *(uint16_t*)(ip + 2);
  5777. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5778. uint16_t __ret = *(uint16_t*)(ip + 6);
  5779. void* _self = (*(void**)(localVarBase + __self));
  5780. CHECK_NOT_NULL_THROW(_self);
  5781. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5782. typedef uint8_t(*_NativeMethod_)(void*, double, MethodInfo*);
  5783. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), _resolvedMethod);
  5784. ip += 16;
  5785. continue;
  5786. }
  5787. case HiOpcodeEnum::CallCommonNativeInstance_u1_f8_2:
  5788. {
  5789. uint32_t __method = *(uint32_t*)(ip + 12);
  5790. uint16_t __self = *(uint16_t*)(ip + 2);
  5791. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5792. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5793. uint16_t __ret = *(uint16_t*)(ip + 8);
  5794. void* _self = (*(void**)(localVarBase + __self));
  5795. CHECK_NOT_NULL_THROW(_self);
  5796. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5797. typedef uint8_t(*_NativeMethod_)(void*, double, double, MethodInfo*);
  5798. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  5799. ip += 16;
  5800. continue;
  5801. }
  5802. case HiOpcodeEnum::CallCommonNativeInstance_u1_f8_3:
  5803. {
  5804. uint32_t __method = *(uint32_t*)(ip + 12);
  5805. uint16_t __self = *(uint16_t*)(ip + 2);
  5806. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5807. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5808. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5809. uint16_t __ret = *(uint16_t*)(ip + 10);
  5810. void* _self = (*(void**)(localVarBase + __self));
  5811. CHECK_NOT_NULL_THROW(_self);
  5812. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5813. typedef uint8_t(*_NativeMethod_)(void*, double, double, double, MethodInfo*);
  5814. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  5815. ip += 16;
  5816. continue;
  5817. }
  5818. case HiOpcodeEnum::CallCommonNativeInstance_u1_f8_4:
  5819. {
  5820. uint32_t __method = *(uint32_t*)(ip + 16);
  5821. uint16_t __self = *(uint16_t*)(ip + 2);
  5822. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5823. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5824. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5825. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5826. uint16_t __ret = *(uint16_t*)(ip + 12);
  5827. void* _self = (*(void**)(localVarBase + __self));
  5828. CHECK_NOT_NULL_THROW(_self);
  5829. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5830. typedef uint8_t(*_NativeMethod_)(void*, double, double, double, double, MethodInfo*);
  5831. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  5832. ip += 24;
  5833. continue;
  5834. }
  5835. case HiOpcodeEnum::CallCommonNativeInstance_i4_i4_1:
  5836. {
  5837. uint32_t __method = *(uint32_t*)(ip + 8);
  5838. uint16_t __self = *(uint16_t*)(ip + 2);
  5839. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5840. uint16_t __ret = *(uint16_t*)(ip + 6);
  5841. void* _self = (*(void**)(localVarBase + __self));
  5842. CHECK_NOT_NULL_THROW(_self);
  5843. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5844. typedef int32_t(*_NativeMethod_)(void*, int32_t, MethodInfo*);
  5845. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  5846. ip += 16;
  5847. continue;
  5848. }
  5849. case HiOpcodeEnum::CallCommonNativeInstance_i4_i4_2:
  5850. {
  5851. uint32_t __method = *(uint32_t*)(ip + 12);
  5852. uint16_t __self = *(uint16_t*)(ip + 2);
  5853. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5854. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5855. uint16_t __ret = *(uint16_t*)(ip + 8);
  5856. void* _self = (*(void**)(localVarBase + __self));
  5857. CHECK_NOT_NULL_THROW(_self);
  5858. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5859. typedef int32_t(*_NativeMethod_)(void*, int32_t, int32_t, MethodInfo*);
  5860. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  5861. ip += 16;
  5862. continue;
  5863. }
  5864. case HiOpcodeEnum::CallCommonNativeInstance_i4_i4_3:
  5865. {
  5866. uint32_t __method = *(uint32_t*)(ip + 12);
  5867. uint16_t __self = *(uint16_t*)(ip + 2);
  5868. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5869. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5870. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5871. uint16_t __ret = *(uint16_t*)(ip + 10);
  5872. void* _self = (*(void**)(localVarBase + __self));
  5873. CHECK_NOT_NULL_THROW(_self);
  5874. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5875. typedef int32_t(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, MethodInfo*);
  5876. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  5877. ip += 16;
  5878. continue;
  5879. }
  5880. case HiOpcodeEnum::CallCommonNativeInstance_i4_i4_4:
  5881. {
  5882. uint32_t __method = *(uint32_t*)(ip + 16);
  5883. uint16_t __self = *(uint16_t*)(ip + 2);
  5884. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5885. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5886. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5887. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5888. uint16_t __ret = *(uint16_t*)(ip + 12);
  5889. void* _self = (*(void**)(localVarBase + __self));
  5890. CHECK_NOT_NULL_THROW(_self);
  5891. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5892. typedef int32_t(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  5893. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  5894. ip += 24;
  5895. continue;
  5896. }
  5897. case HiOpcodeEnum::CallCommonNativeInstance_i4_i8_1:
  5898. {
  5899. uint32_t __method = *(uint32_t*)(ip + 8);
  5900. uint16_t __self = *(uint16_t*)(ip + 2);
  5901. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5902. uint16_t __ret = *(uint16_t*)(ip + 6);
  5903. void* _self = (*(void**)(localVarBase + __self));
  5904. CHECK_NOT_NULL_THROW(_self);
  5905. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5906. typedef int32_t(*_NativeMethod_)(void*, int64_t, MethodInfo*);
  5907. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  5908. ip += 16;
  5909. continue;
  5910. }
  5911. case HiOpcodeEnum::CallCommonNativeInstance_i4_i8_2:
  5912. {
  5913. uint32_t __method = *(uint32_t*)(ip + 12);
  5914. uint16_t __self = *(uint16_t*)(ip + 2);
  5915. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5916. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5917. uint16_t __ret = *(uint16_t*)(ip + 8);
  5918. void* _self = (*(void**)(localVarBase + __self));
  5919. CHECK_NOT_NULL_THROW(_self);
  5920. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5921. typedef int32_t(*_NativeMethod_)(void*, int64_t, int64_t, MethodInfo*);
  5922. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  5923. ip += 16;
  5924. continue;
  5925. }
  5926. case HiOpcodeEnum::CallCommonNativeInstance_i4_i8_3:
  5927. {
  5928. uint32_t __method = *(uint32_t*)(ip + 12);
  5929. uint16_t __self = *(uint16_t*)(ip + 2);
  5930. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5931. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5932. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5933. uint16_t __ret = *(uint16_t*)(ip + 10);
  5934. void* _self = (*(void**)(localVarBase + __self));
  5935. CHECK_NOT_NULL_THROW(_self);
  5936. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5937. typedef int32_t(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, MethodInfo*);
  5938. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  5939. ip += 16;
  5940. continue;
  5941. }
  5942. case HiOpcodeEnum::CallCommonNativeInstance_i4_i8_4:
  5943. {
  5944. uint32_t __method = *(uint32_t*)(ip + 16);
  5945. uint16_t __self = *(uint16_t*)(ip + 2);
  5946. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5947. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5948. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5949. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5950. uint16_t __ret = *(uint16_t*)(ip + 12);
  5951. void* _self = (*(void**)(localVarBase + __self));
  5952. CHECK_NOT_NULL_THROW(_self);
  5953. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5954. typedef int32_t(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  5955. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  5956. ip += 24;
  5957. continue;
  5958. }
  5959. case HiOpcodeEnum::CallCommonNativeInstance_i4_f4_1:
  5960. {
  5961. uint32_t __method = *(uint32_t*)(ip + 8);
  5962. uint16_t __self = *(uint16_t*)(ip + 2);
  5963. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5964. uint16_t __ret = *(uint16_t*)(ip + 6);
  5965. void* _self = (*(void**)(localVarBase + __self));
  5966. CHECK_NOT_NULL_THROW(_self);
  5967. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5968. typedef int32_t(*_NativeMethod_)(void*, float, MethodInfo*);
  5969. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), _resolvedMethod);
  5970. ip += 16;
  5971. continue;
  5972. }
  5973. case HiOpcodeEnum::CallCommonNativeInstance_i4_f4_2:
  5974. {
  5975. uint32_t __method = *(uint32_t*)(ip + 12);
  5976. uint16_t __self = *(uint16_t*)(ip + 2);
  5977. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5978. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5979. uint16_t __ret = *(uint16_t*)(ip + 8);
  5980. void* _self = (*(void**)(localVarBase + __self));
  5981. CHECK_NOT_NULL_THROW(_self);
  5982. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5983. typedef int32_t(*_NativeMethod_)(void*, float, float, MethodInfo*);
  5984. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  5985. ip += 16;
  5986. continue;
  5987. }
  5988. case HiOpcodeEnum::CallCommonNativeInstance_i4_f4_3:
  5989. {
  5990. uint32_t __method = *(uint32_t*)(ip + 12);
  5991. uint16_t __self = *(uint16_t*)(ip + 2);
  5992. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5993. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5994. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5995. uint16_t __ret = *(uint16_t*)(ip + 10);
  5996. void* _self = (*(void**)(localVarBase + __self));
  5997. CHECK_NOT_NULL_THROW(_self);
  5998. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5999. typedef int32_t(*_NativeMethod_)(void*, float, float, float, MethodInfo*);
  6000. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  6001. ip += 16;
  6002. continue;
  6003. }
  6004. case HiOpcodeEnum::CallCommonNativeInstance_i4_f4_4:
  6005. {
  6006. uint32_t __method = *(uint32_t*)(ip + 16);
  6007. uint16_t __self = *(uint16_t*)(ip + 2);
  6008. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6009. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6010. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6011. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6012. uint16_t __ret = *(uint16_t*)(ip + 12);
  6013. void* _self = (*(void**)(localVarBase + __self));
  6014. CHECK_NOT_NULL_THROW(_self);
  6015. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6016. typedef int32_t(*_NativeMethod_)(void*, float, float, float, float, MethodInfo*);
  6017. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  6018. ip += 24;
  6019. continue;
  6020. }
  6021. case HiOpcodeEnum::CallCommonNativeInstance_i4_f8_1:
  6022. {
  6023. uint32_t __method = *(uint32_t*)(ip + 8);
  6024. uint16_t __self = *(uint16_t*)(ip + 2);
  6025. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6026. uint16_t __ret = *(uint16_t*)(ip + 6);
  6027. void* _self = (*(void**)(localVarBase + __self));
  6028. CHECK_NOT_NULL_THROW(_self);
  6029. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6030. typedef int32_t(*_NativeMethod_)(void*, double, MethodInfo*);
  6031. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), _resolvedMethod);
  6032. ip += 16;
  6033. continue;
  6034. }
  6035. case HiOpcodeEnum::CallCommonNativeInstance_i4_f8_2:
  6036. {
  6037. uint32_t __method = *(uint32_t*)(ip + 12);
  6038. uint16_t __self = *(uint16_t*)(ip + 2);
  6039. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6040. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6041. uint16_t __ret = *(uint16_t*)(ip + 8);
  6042. void* _self = (*(void**)(localVarBase + __self));
  6043. CHECK_NOT_NULL_THROW(_self);
  6044. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6045. typedef int32_t(*_NativeMethod_)(void*, double, double, MethodInfo*);
  6046. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  6047. ip += 16;
  6048. continue;
  6049. }
  6050. case HiOpcodeEnum::CallCommonNativeInstance_i4_f8_3:
  6051. {
  6052. uint32_t __method = *(uint32_t*)(ip + 12);
  6053. uint16_t __self = *(uint16_t*)(ip + 2);
  6054. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6055. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6056. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6057. uint16_t __ret = *(uint16_t*)(ip + 10);
  6058. void* _self = (*(void**)(localVarBase + __self));
  6059. CHECK_NOT_NULL_THROW(_self);
  6060. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6061. typedef int32_t(*_NativeMethod_)(void*, double, double, double, MethodInfo*);
  6062. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  6063. ip += 16;
  6064. continue;
  6065. }
  6066. case HiOpcodeEnum::CallCommonNativeInstance_i4_f8_4:
  6067. {
  6068. uint32_t __method = *(uint32_t*)(ip + 16);
  6069. uint16_t __self = *(uint16_t*)(ip + 2);
  6070. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6071. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6072. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6073. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6074. uint16_t __ret = *(uint16_t*)(ip + 12);
  6075. void* _self = (*(void**)(localVarBase + __self));
  6076. CHECK_NOT_NULL_THROW(_self);
  6077. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6078. typedef int32_t(*_NativeMethod_)(void*, double, double, double, double, MethodInfo*);
  6079. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  6080. ip += 24;
  6081. continue;
  6082. }
  6083. case HiOpcodeEnum::CallCommonNativeInstance_i8_i4_1:
  6084. {
  6085. uint32_t __method = *(uint32_t*)(ip + 8);
  6086. uint16_t __self = *(uint16_t*)(ip + 2);
  6087. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6088. uint16_t __ret = *(uint16_t*)(ip + 6);
  6089. void* _self = (*(void**)(localVarBase + __self));
  6090. CHECK_NOT_NULL_THROW(_self);
  6091. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6092. typedef int64_t(*_NativeMethod_)(void*, int32_t, MethodInfo*);
  6093. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  6094. ip += 16;
  6095. continue;
  6096. }
  6097. case HiOpcodeEnum::CallCommonNativeInstance_i8_i4_2:
  6098. {
  6099. uint32_t __method = *(uint32_t*)(ip + 12);
  6100. uint16_t __self = *(uint16_t*)(ip + 2);
  6101. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6102. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6103. uint16_t __ret = *(uint16_t*)(ip + 8);
  6104. void* _self = (*(void**)(localVarBase + __self));
  6105. CHECK_NOT_NULL_THROW(_self);
  6106. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6107. typedef int64_t(*_NativeMethod_)(void*, int32_t, int32_t, MethodInfo*);
  6108. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  6109. ip += 16;
  6110. continue;
  6111. }
  6112. case HiOpcodeEnum::CallCommonNativeInstance_i8_i4_3:
  6113. {
  6114. uint32_t __method = *(uint32_t*)(ip + 12);
  6115. uint16_t __self = *(uint16_t*)(ip + 2);
  6116. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6117. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6118. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6119. uint16_t __ret = *(uint16_t*)(ip + 10);
  6120. void* _self = (*(void**)(localVarBase + __self));
  6121. CHECK_NOT_NULL_THROW(_self);
  6122. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6123. typedef int64_t(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, MethodInfo*);
  6124. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  6125. ip += 16;
  6126. continue;
  6127. }
  6128. case HiOpcodeEnum::CallCommonNativeInstance_i8_i4_4:
  6129. {
  6130. uint32_t __method = *(uint32_t*)(ip + 16);
  6131. uint16_t __self = *(uint16_t*)(ip + 2);
  6132. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6133. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6134. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6135. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6136. uint16_t __ret = *(uint16_t*)(ip + 12);
  6137. void* _self = (*(void**)(localVarBase + __self));
  6138. CHECK_NOT_NULL_THROW(_self);
  6139. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6140. typedef int64_t(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  6141. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  6142. ip += 24;
  6143. continue;
  6144. }
  6145. case HiOpcodeEnum::CallCommonNativeInstance_i8_i8_1:
  6146. {
  6147. uint32_t __method = *(uint32_t*)(ip + 8);
  6148. uint16_t __self = *(uint16_t*)(ip + 2);
  6149. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6150. uint16_t __ret = *(uint16_t*)(ip + 6);
  6151. void* _self = (*(void**)(localVarBase + __self));
  6152. CHECK_NOT_NULL_THROW(_self);
  6153. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6154. typedef int64_t(*_NativeMethod_)(void*, int64_t, MethodInfo*);
  6155. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  6156. ip += 16;
  6157. continue;
  6158. }
  6159. case HiOpcodeEnum::CallCommonNativeInstance_i8_i8_2:
  6160. {
  6161. uint32_t __method = *(uint32_t*)(ip + 12);
  6162. uint16_t __self = *(uint16_t*)(ip + 2);
  6163. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6164. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6165. uint16_t __ret = *(uint16_t*)(ip + 8);
  6166. void* _self = (*(void**)(localVarBase + __self));
  6167. CHECK_NOT_NULL_THROW(_self);
  6168. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6169. typedef int64_t(*_NativeMethod_)(void*, int64_t, int64_t, MethodInfo*);
  6170. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  6171. ip += 16;
  6172. continue;
  6173. }
  6174. case HiOpcodeEnum::CallCommonNativeInstance_i8_i8_3:
  6175. {
  6176. uint32_t __method = *(uint32_t*)(ip + 12);
  6177. uint16_t __self = *(uint16_t*)(ip + 2);
  6178. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6179. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6180. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6181. uint16_t __ret = *(uint16_t*)(ip + 10);
  6182. void* _self = (*(void**)(localVarBase + __self));
  6183. CHECK_NOT_NULL_THROW(_self);
  6184. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6185. typedef int64_t(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, MethodInfo*);
  6186. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  6187. ip += 16;
  6188. continue;
  6189. }
  6190. case HiOpcodeEnum::CallCommonNativeInstance_i8_i8_4:
  6191. {
  6192. uint32_t __method = *(uint32_t*)(ip + 16);
  6193. uint16_t __self = *(uint16_t*)(ip + 2);
  6194. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6195. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6196. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6197. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6198. uint16_t __ret = *(uint16_t*)(ip + 12);
  6199. void* _self = (*(void**)(localVarBase + __self));
  6200. CHECK_NOT_NULL_THROW(_self);
  6201. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6202. typedef int64_t(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  6203. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  6204. ip += 24;
  6205. continue;
  6206. }
  6207. case HiOpcodeEnum::CallCommonNativeInstance_i8_f4_1:
  6208. {
  6209. uint32_t __method = *(uint32_t*)(ip + 8);
  6210. uint16_t __self = *(uint16_t*)(ip + 2);
  6211. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6212. uint16_t __ret = *(uint16_t*)(ip + 6);
  6213. void* _self = (*(void**)(localVarBase + __self));
  6214. CHECK_NOT_NULL_THROW(_self);
  6215. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6216. typedef int64_t(*_NativeMethod_)(void*, float, MethodInfo*);
  6217. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), _resolvedMethod);
  6218. ip += 16;
  6219. continue;
  6220. }
  6221. case HiOpcodeEnum::CallCommonNativeInstance_i8_f4_2:
  6222. {
  6223. uint32_t __method = *(uint32_t*)(ip + 12);
  6224. uint16_t __self = *(uint16_t*)(ip + 2);
  6225. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6226. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6227. uint16_t __ret = *(uint16_t*)(ip + 8);
  6228. void* _self = (*(void**)(localVarBase + __self));
  6229. CHECK_NOT_NULL_THROW(_self);
  6230. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6231. typedef int64_t(*_NativeMethod_)(void*, float, float, MethodInfo*);
  6232. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  6233. ip += 16;
  6234. continue;
  6235. }
  6236. case HiOpcodeEnum::CallCommonNativeInstance_i8_f4_3:
  6237. {
  6238. uint32_t __method = *(uint32_t*)(ip + 12);
  6239. uint16_t __self = *(uint16_t*)(ip + 2);
  6240. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6241. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6242. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6243. uint16_t __ret = *(uint16_t*)(ip + 10);
  6244. void* _self = (*(void**)(localVarBase + __self));
  6245. CHECK_NOT_NULL_THROW(_self);
  6246. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6247. typedef int64_t(*_NativeMethod_)(void*, float, float, float, MethodInfo*);
  6248. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  6249. ip += 16;
  6250. continue;
  6251. }
  6252. case HiOpcodeEnum::CallCommonNativeInstance_i8_f4_4:
  6253. {
  6254. uint32_t __method = *(uint32_t*)(ip + 16);
  6255. uint16_t __self = *(uint16_t*)(ip + 2);
  6256. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6257. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6258. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6259. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6260. uint16_t __ret = *(uint16_t*)(ip + 12);
  6261. void* _self = (*(void**)(localVarBase + __self));
  6262. CHECK_NOT_NULL_THROW(_self);
  6263. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6264. typedef int64_t(*_NativeMethod_)(void*, float, float, float, float, MethodInfo*);
  6265. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  6266. ip += 24;
  6267. continue;
  6268. }
  6269. case HiOpcodeEnum::CallCommonNativeInstance_i8_f8_1:
  6270. {
  6271. uint32_t __method = *(uint32_t*)(ip + 8);
  6272. uint16_t __self = *(uint16_t*)(ip + 2);
  6273. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6274. uint16_t __ret = *(uint16_t*)(ip + 6);
  6275. void* _self = (*(void**)(localVarBase + __self));
  6276. CHECK_NOT_NULL_THROW(_self);
  6277. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6278. typedef int64_t(*_NativeMethod_)(void*, double, MethodInfo*);
  6279. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), _resolvedMethod);
  6280. ip += 16;
  6281. continue;
  6282. }
  6283. case HiOpcodeEnum::CallCommonNativeInstance_i8_f8_2:
  6284. {
  6285. uint32_t __method = *(uint32_t*)(ip + 12);
  6286. uint16_t __self = *(uint16_t*)(ip + 2);
  6287. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6288. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6289. uint16_t __ret = *(uint16_t*)(ip + 8);
  6290. void* _self = (*(void**)(localVarBase + __self));
  6291. CHECK_NOT_NULL_THROW(_self);
  6292. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6293. typedef int64_t(*_NativeMethod_)(void*, double, double, MethodInfo*);
  6294. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  6295. ip += 16;
  6296. continue;
  6297. }
  6298. case HiOpcodeEnum::CallCommonNativeInstance_i8_f8_3:
  6299. {
  6300. uint32_t __method = *(uint32_t*)(ip + 12);
  6301. uint16_t __self = *(uint16_t*)(ip + 2);
  6302. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6303. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6304. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6305. uint16_t __ret = *(uint16_t*)(ip + 10);
  6306. void* _self = (*(void**)(localVarBase + __self));
  6307. CHECK_NOT_NULL_THROW(_self);
  6308. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6309. typedef int64_t(*_NativeMethod_)(void*, double, double, double, MethodInfo*);
  6310. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  6311. ip += 16;
  6312. continue;
  6313. }
  6314. case HiOpcodeEnum::CallCommonNativeInstance_i8_f8_4:
  6315. {
  6316. uint32_t __method = *(uint32_t*)(ip + 16);
  6317. uint16_t __self = *(uint16_t*)(ip + 2);
  6318. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6319. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6320. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6321. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6322. uint16_t __ret = *(uint16_t*)(ip + 12);
  6323. void* _self = (*(void**)(localVarBase + __self));
  6324. CHECK_NOT_NULL_THROW(_self);
  6325. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6326. typedef int64_t(*_NativeMethod_)(void*, double, double, double, double, MethodInfo*);
  6327. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  6328. ip += 24;
  6329. continue;
  6330. }
  6331. case HiOpcodeEnum::CallCommonNativeInstance_f4_i4_1:
  6332. {
  6333. uint32_t __method = *(uint32_t*)(ip + 8);
  6334. uint16_t __self = *(uint16_t*)(ip + 2);
  6335. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6336. uint16_t __ret = *(uint16_t*)(ip + 6);
  6337. void* _self = (*(void**)(localVarBase + __self));
  6338. CHECK_NOT_NULL_THROW(_self);
  6339. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6340. typedef float(*_NativeMethod_)(void*, int32_t, MethodInfo*);
  6341. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  6342. ip += 16;
  6343. continue;
  6344. }
  6345. case HiOpcodeEnum::CallCommonNativeInstance_f4_i4_2:
  6346. {
  6347. uint32_t __method = *(uint32_t*)(ip + 12);
  6348. uint16_t __self = *(uint16_t*)(ip + 2);
  6349. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6350. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6351. uint16_t __ret = *(uint16_t*)(ip + 8);
  6352. void* _self = (*(void**)(localVarBase + __self));
  6353. CHECK_NOT_NULL_THROW(_self);
  6354. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6355. typedef float(*_NativeMethod_)(void*, int32_t, int32_t, MethodInfo*);
  6356. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  6357. ip += 16;
  6358. continue;
  6359. }
  6360. case HiOpcodeEnum::CallCommonNativeInstance_f4_i4_3:
  6361. {
  6362. uint32_t __method = *(uint32_t*)(ip + 12);
  6363. uint16_t __self = *(uint16_t*)(ip + 2);
  6364. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6365. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6366. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6367. uint16_t __ret = *(uint16_t*)(ip + 10);
  6368. void* _self = (*(void**)(localVarBase + __self));
  6369. CHECK_NOT_NULL_THROW(_self);
  6370. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6371. typedef float(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, MethodInfo*);
  6372. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  6373. ip += 16;
  6374. continue;
  6375. }
  6376. case HiOpcodeEnum::CallCommonNativeInstance_f4_i4_4:
  6377. {
  6378. uint32_t __method = *(uint32_t*)(ip + 16);
  6379. uint16_t __self = *(uint16_t*)(ip + 2);
  6380. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6381. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6382. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6383. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6384. uint16_t __ret = *(uint16_t*)(ip + 12);
  6385. void* _self = (*(void**)(localVarBase + __self));
  6386. CHECK_NOT_NULL_THROW(_self);
  6387. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6388. typedef float(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  6389. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  6390. ip += 24;
  6391. continue;
  6392. }
  6393. case HiOpcodeEnum::CallCommonNativeInstance_f4_i8_1:
  6394. {
  6395. uint32_t __method = *(uint32_t*)(ip + 8);
  6396. uint16_t __self = *(uint16_t*)(ip + 2);
  6397. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6398. uint16_t __ret = *(uint16_t*)(ip + 6);
  6399. void* _self = (*(void**)(localVarBase + __self));
  6400. CHECK_NOT_NULL_THROW(_self);
  6401. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6402. typedef float(*_NativeMethod_)(void*, int64_t, MethodInfo*);
  6403. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  6404. ip += 16;
  6405. continue;
  6406. }
  6407. case HiOpcodeEnum::CallCommonNativeInstance_f4_i8_2:
  6408. {
  6409. uint32_t __method = *(uint32_t*)(ip + 12);
  6410. uint16_t __self = *(uint16_t*)(ip + 2);
  6411. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6412. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6413. uint16_t __ret = *(uint16_t*)(ip + 8);
  6414. void* _self = (*(void**)(localVarBase + __self));
  6415. CHECK_NOT_NULL_THROW(_self);
  6416. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6417. typedef float(*_NativeMethod_)(void*, int64_t, int64_t, MethodInfo*);
  6418. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  6419. ip += 16;
  6420. continue;
  6421. }
  6422. case HiOpcodeEnum::CallCommonNativeInstance_f4_i8_3:
  6423. {
  6424. uint32_t __method = *(uint32_t*)(ip + 12);
  6425. uint16_t __self = *(uint16_t*)(ip + 2);
  6426. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6427. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6428. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6429. uint16_t __ret = *(uint16_t*)(ip + 10);
  6430. void* _self = (*(void**)(localVarBase + __self));
  6431. CHECK_NOT_NULL_THROW(_self);
  6432. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6433. typedef float(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, MethodInfo*);
  6434. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  6435. ip += 16;
  6436. continue;
  6437. }
  6438. case HiOpcodeEnum::CallCommonNativeInstance_f4_i8_4:
  6439. {
  6440. uint32_t __method = *(uint32_t*)(ip + 16);
  6441. uint16_t __self = *(uint16_t*)(ip + 2);
  6442. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6443. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6444. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6445. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6446. uint16_t __ret = *(uint16_t*)(ip + 12);
  6447. void* _self = (*(void**)(localVarBase + __self));
  6448. CHECK_NOT_NULL_THROW(_self);
  6449. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6450. typedef float(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  6451. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  6452. ip += 24;
  6453. continue;
  6454. }
  6455. case HiOpcodeEnum::CallCommonNativeInstance_f4_f4_1:
  6456. {
  6457. uint32_t __method = *(uint32_t*)(ip + 8);
  6458. uint16_t __self = *(uint16_t*)(ip + 2);
  6459. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6460. uint16_t __ret = *(uint16_t*)(ip + 6);
  6461. void* _self = (*(void**)(localVarBase + __self));
  6462. CHECK_NOT_NULL_THROW(_self);
  6463. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6464. typedef float(*_NativeMethod_)(void*, float, MethodInfo*);
  6465. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), _resolvedMethod);
  6466. ip += 16;
  6467. continue;
  6468. }
  6469. case HiOpcodeEnum::CallCommonNativeInstance_f4_f4_2:
  6470. {
  6471. uint32_t __method = *(uint32_t*)(ip + 12);
  6472. uint16_t __self = *(uint16_t*)(ip + 2);
  6473. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6474. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6475. uint16_t __ret = *(uint16_t*)(ip + 8);
  6476. void* _self = (*(void**)(localVarBase + __self));
  6477. CHECK_NOT_NULL_THROW(_self);
  6478. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6479. typedef float(*_NativeMethod_)(void*, float, float, MethodInfo*);
  6480. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  6481. ip += 16;
  6482. continue;
  6483. }
  6484. case HiOpcodeEnum::CallCommonNativeInstance_f4_f4_3:
  6485. {
  6486. uint32_t __method = *(uint32_t*)(ip + 12);
  6487. uint16_t __self = *(uint16_t*)(ip + 2);
  6488. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6489. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6490. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6491. uint16_t __ret = *(uint16_t*)(ip + 10);
  6492. void* _self = (*(void**)(localVarBase + __self));
  6493. CHECK_NOT_NULL_THROW(_self);
  6494. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6495. typedef float(*_NativeMethod_)(void*, float, float, float, MethodInfo*);
  6496. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  6497. ip += 16;
  6498. continue;
  6499. }
  6500. case HiOpcodeEnum::CallCommonNativeInstance_f4_f4_4:
  6501. {
  6502. uint32_t __method = *(uint32_t*)(ip + 16);
  6503. uint16_t __self = *(uint16_t*)(ip + 2);
  6504. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6505. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6506. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6507. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6508. uint16_t __ret = *(uint16_t*)(ip + 12);
  6509. void* _self = (*(void**)(localVarBase + __self));
  6510. CHECK_NOT_NULL_THROW(_self);
  6511. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6512. typedef float(*_NativeMethod_)(void*, float, float, float, float, MethodInfo*);
  6513. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  6514. ip += 24;
  6515. continue;
  6516. }
  6517. case HiOpcodeEnum::CallCommonNativeInstance_f4_f8_1:
  6518. {
  6519. uint32_t __method = *(uint32_t*)(ip + 8);
  6520. uint16_t __self = *(uint16_t*)(ip + 2);
  6521. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6522. uint16_t __ret = *(uint16_t*)(ip + 6);
  6523. void* _self = (*(void**)(localVarBase + __self));
  6524. CHECK_NOT_NULL_THROW(_self);
  6525. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6526. typedef float(*_NativeMethod_)(void*, double, MethodInfo*);
  6527. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), _resolvedMethod);
  6528. ip += 16;
  6529. continue;
  6530. }
  6531. case HiOpcodeEnum::CallCommonNativeInstance_f4_f8_2:
  6532. {
  6533. uint32_t __method = *(uint32_t*)(ip + 12);
  6534. uint16_t __self = *(uint16_t*)(ip + 2);
  6535. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6536. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6537. uint16_t __ret = *(uint16_t*)(ip + 8);
  6538. void* _self = (*(void**)(localVarBase + __self));
  6539. CHECK_NOT_NULL_THROW(_self);
  6540. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6541. typedef float(*_NativeMethod_)(void*, double, double, MethodInfo*);
  6542. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  6543. ip += 16;
  6544. continue;
  6545. }
  6546. case HiOpcodeEnum::CallCommonNativeInstance_f4_f8_3:
  6547. {
  6548. uint32_t __method = *(uint32_t*)(ip + 12);
  6549. uint16_t __self = *(uint16_t*)(ip + 2);
  6550. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6551. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6552. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6553. uint16_t __ret = *(uint16_t*)(ip + 10);
  6554. void* _self = (*(void**)(localVarBase + __self));
  6555. CHECK_NOT_NULL_THROW(_self);
  6556. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6557. typedef float(*_NativeMethod_)(void*, double, double, double, MethodInfo*);
  6558. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  6559. ip += 16;
  6560. continue;
  6561. }
  6562. case HiOpcodeEnum::CallCommonNativeInstance_f4_f8_4:
  6563. {
  6564. uint32_t __method = *(uint32_t*)(ip + 16);
  6565. uint16_t __self = *(uint16_t*)(ip + 2);
  6566. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6567. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6568. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6569. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6570. uint16_t __ret = *(uint16_t*)(ip + 12);
  6571. void* _self = (*(void**)(localVarBase + __self));
  6572. CHECK_NOT_NULL_THROW(_self);
  6573. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6574. typedef float(*_NativeMethod_)(void*, double, double, double, double, MethodInfo*);
  6575. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  6576. ip += 24;
  6577. continue;
  6578. }
  6579. case HiOpcodeEnum::CallCommonNativeInstance_f8_i4_1:
  6580. {
  6581. uint32_t __method = *(uint32_t*)(ip + 8);
  6582. uint16_t __self = *(uint16_t*)(ip + 2);
  6583. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6584. uint16_t __ret = *(uint16_t*)(ip + 6);
  6585. void* _self = (*(void**)(localVarBase + __self));
  6586. CHECK_NOT_NULL_THROW(_self);
  6587. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6588. typedef double(*_NativeMethod_)(void*, int32_t, MethodInfo*);
  6589. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  6590. ip += 16;
  6591. continue;
  6592. }
  6593. case HiOpcodeEnum::CallCommonNativeInstance_f8_i4_2:
  6594. {
  6595. uint32_t __method = *(uint32_t*)(ip + 12);
  6596. uint16_t __self = *(uint16_t*)(ip + 2);
  6597. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6598. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6599. uint16_t __ret = *(uint16_t*)(ip + 8);
  6600. void* _self = (*(void**)(localVarBase + __self));
  6601. CHECK_NOT_NULL_THROW(_self);
  6602. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6603. typedef double(*_NativeMethod_)(void*, int32_t, int32_t, MethodInfo*);
  6604. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  6605. ip += 16;
  6606. continue;
  6607. }
  6608. case HiOpcodeEnum::CallCommonNativeInstance_f8_i4_3:
  6609. {
  6610. uint32_t __method = *(uint32_t*)(ip + 12);
  6611. uint16_t __self = *(uint16_t*)(ip + 2);
  6612. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6613. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6614. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6615. uint16_t __ret = *(uint16_t*)(ip + 10);
  6616. void* _self = (*(void**)(localVarBase + __self));
  6617. CHECK_NOT_NULL_THROW(_self);
  6618. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6619. typedef double(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, MethodInfo*);
  6620. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  6621. ip += 16;
  6622. continue;
  6623. }
  6624. case HiOpcodeEnum::CallCommonNativeInstance_f8_i4_4:
  6625. {
  6626. uint32_t __method = *(uint32_t*)(ip + 16);
  6627. uint16_t __self = *(uint16_t*)(ip + 2);
  6628. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6629. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6630. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6631. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6632. uint16_t __ret = *(uint16_t*)(ip + 12);
  6633. void* _self = (*(void**)(localVarBase + __self));
  6634. CHECK_NOT_NULL_THROW(_self);
  6635. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6636. typedef double(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  6637. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  6638. ip += 24;
  6639. continue;
  6640. }
  6641. case HiOpcodeEnum::CallCommonNativeInstance_f8_i8_1:
  6642. {
  6643. uint32_t __method = *(uint32_t*)(ip + 8);
  6644. uint16_t __self = *(uint16_t*)(ip + 2);
  6645. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6646. uint16_t __ret = *(uint16_t*)(ip + 6);
  6647. void* _self = (*(void**)(localVarBase + __self));
  6648. CHECK_NOT_NULL_THROW(_self);
  6649. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6650. typedef double(*_NativeMethod_)(void*, int64_t, MethodInfo*);
  6651. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  6652. ip += 16;
  6653. continue;
  6654. }
  6655. case HiOpcodeEnum::CallCommonNativeInstance_f8_i8_2:
  6656. {
  6657. uint32_t __method = *(uint32_t*)(ip + 12);
  6658. uint16_t __self = *(uint16_t*)(ip + 2);
  6659. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6660. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6661. uint16_t __ret = *(uint16_t*)(ip + 8);
  6662. void* _self = (*(void**)(localVarBase + __self));
  6663. CHECK_NOT_NULL_THROW(_self);
  6664. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6665. typedef double(*_NativeMethod_)(void*, int64_t, int64_t, MethodInfo*);
  6666. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  6667. ip += 16;
  6668. continue;
  6669. }
  6670. case HiOpcodeEnum::CallCommonNativeInstance_f8_i8_3:
  6671. {
  6672. uint32_t __method = *(uint32_t*)(ip + 12);
  6673. uint16_t __self = *(uint16_t*)(ip + 2);
  6674. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6675. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6676. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6677. uint16_t __ret = *(uint16_t*)(ip + 10);
  6678. void* _self = (*(void**)(localVarBase + __self));
  6679. CHECK_NOT_NULL_THROW(_self);
  6680. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6681. typedef double(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, MethodInfo*);
  6682. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  6683. ip += 16;
  6684. continue;
  6685. }
  6686. case HiOpcodeEnum::CallCommonNativeInstance_f8_i8_4:
  6687. {
  6688. uint32_t __method = *(uint32_t*)(ip + 16);
  6689. uint16_t __self = *(uint16_t*)(ip + 2);
  6690. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6691. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6692. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6693. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6694. uint16_t __ret = *(uint16_t*)(ip + 12);
  6695. void* _self = (*(void**)(localVarBase + __self));
  6696. CHECK_NOT_NULL_THROW(_self);
  6697. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6698. typedef double(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  6699. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  6700. ip += 24;
  6701. continue;
  6702. }
  6703. case HiOpcodeEnum::CallCommonNativeInstance_f8_f4_1:
  6704. {
  6705. uint32_t __method = *(uint32_t*)(ip + 8);
  6706. uint16_t __self = *(uint16_t*)(ip + 2);
  6707. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6708. uint16_t __ret = *(uint16_t*)(ip + 6);
  6709. void* _self = (*(void**)(localVarBase + __self));
  6710. CHECK_NOT_NULL_THROW(_self);
  6711. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6712. typedef double(*_NativeMethod_)(void*, float, MethodInfo*);
  6713. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), _resolvedMethod);
  6714. ip += 16;
  6715. continue;
  6716. }
  6717. case HiOpcodeEnum::CallCommonNativeInstance_f8_f4_2:
  6718. {
  6719. uint32_t __method = *(uint32_t*)(ip + 12);
  6720. uint16_t __self = *(uint16_t*)(ip + 2);
  6721. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6722. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6723. uint16_t __ret = *(uint16_t*)(ip + 8);
  6724. void* _self = (*(void**)(localVarBase + __self));
  6725. CHECK_NOT_NULL_THROW(_self);
  6726. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6727. typedef double(*_NativeMethod_)(void*, float, float, MethodInfo*);
  6728. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  6729. ip += 16;
  6730. continue;
  6731. }
  6732. case HiOpcodeEnum::CallCommonNativeInstance_f8_f4_3:
  6733. {
  6734. uint32_t __method = *(uint32_t*)(ip + 12);
  6735. uint16_t __self = *(uint16_t*)(ip + 2);
  6736. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6737. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6738. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6739. uint16_t __ret = *(uint16_t*)(ip + 10);
  6740. void* _self = (*(void**)(localVarBase + __self));
  6741. CHECK_NOT_NULL_THROW(_self);
  6742. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6743. typedef double(*_NativeMethod_)(void*, float, float, float, MethodInfo*);
  6744. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  6745. ip += 16;
  6746. continue;
  6747. }
  6748. case HiOpcodeEnum::CallCommonNativeInstance_f8_f4_4:
  6749. {
  6750. uint32_t __method = *(uint32_t*)(ip + 16);
  6751. uint16_t __self = *(uint16_t*)(ip + 2);
  6752. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6753. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6754. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6755. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6756. uint16_t __ret = *(uint16_t*)(ip + 12);
  6757. void* _self = (*(void**)(localVarBase + __self));
  6758. CHECK_NOT_NULL_THROW(_self);
  6759. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6760. typedef double(*_NativeMethod_)(void*, float, float, float, float, MethodInfo*);
  6761. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  6762. ip += 24;
  6763. continue;
  6764. }
  6765. case HiOpcodeEnum::CallCommonNativeInstance_f8_f8_1:
  6766. {
  6767. uint32_t __method = *(uint32_t*)(ip + 8);
  6768. uint16_t __self = *(uint16_t*)(ip + 2);
  6769. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6770. uint16_t __ret = *(uint16_t*)(ip + 6);
  6771. void* _self = (*(void**)(localVarBase + __self));
  6772. CHECK_NOT_NULL_THROW(_self);
  6773. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6774. typedef double(*_NativeMethod_)(void*, double, MethodInfo*);
  6775. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), _resolvedMethod);
  6776. ip += 16;
  6777. continue;
  6778. }
  6779. case HiOpcodeEnum::CallCommonNativeInstance_f8_f8_2:
  6780. {
  6781. uint32_t __method = *(uint32_t*)(ip + 12);
  6782. uint16_t __self = *(uint16_t*)(ip + 2);
  6783. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6784. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6785. uint16_t __ret = *(uint16_t*)(ip + 8);
  6786. void* _self = (*(void**)(localVarBase + __self));
  6787. CHECK_NOT_NULL_THROW(_self);
  6788. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6789. typedef double(*_NativeMethod_)(void*, double, double, MethodInfo*);
  6790. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  6791. ip += 16;
  6792. continue;
  6793. }
  6794. case HiOpcodeEnum::CallCommonNativeInstance_f8_f8_3:
  6795. {
  6796. uint32_t __method = *(uint32_t*)(ip + 12);
  6797. uint16_t __self = *(uint16_t*)(ip + 2);
  6798. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6799. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6800. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6801. uint16_t __ret = *(uint16_t*)(ip + 10);
  6802. void* _self = (*(void**)(localVarBase + __self));
  6803. CHECK_NOT_NULL_THROW(_self);
  6804. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6805. typedef double(*_NativeMethod_)(void*, double, double, double, MethodInfo*);
  6806. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  6807. ip += 16;
  6808. continue;
  6809. }
  6810. case HiOpcodeEnum::CallCommonNativeInstance_f8_f8_4:
  6811. {
  6812. uint32_t __method = *(uint32_t*)(ip + 16);
  6813. uint16_t __self = *(uint16_t*)(ip + 2);
  6814. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6815. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6816. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6817. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6818. uint16_t __ret = *(uint16_t*)(ip + 12);
  6819. void* _self = (*(void**)(localVarBase + __self));
  6820. CHECK_NOT_NULL_THROW(_self);
  6821. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6822. typedef double(*_NativeMethod_)(void*, double, double, double, double, MethodInfo*);
  6823. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  6824. ip += 24;
  6825. continue;
  6826. }
  6827. case HiOpcodeEnum::CallCommonNativeStatic_v_0:
  6828. {
  6829. uint32_t __method = *(uint32_t*)(ip + 4);
  6830. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6831. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6832. typedef void(*_NativeMethod_)(MethodInfo*);
  6833. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6834. ip += 8;
  6835. continue;
  6836. }
  6837. case HiOpcodeEnum::CallCommonNativeStatic_i1_0:
  6838. {
  6839. uint32_t __method = *(uint32_t*)(ip + 4);
  6840. uint16_t __ret = *(uint16_t*)(ip + 2);
  6841. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6842. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6843. typedef int8_t(*_NativeMethod_)(MethodInfo*);
  6844. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6845. ip += 8;
  6846. continue;
  6847. }
  6848. case HiOpcodeEnum::CallCommonNativeStatic_u1_0:
  6849. {
  6850. uint32_t __method = *(uint32_t*)(ip + 4);
  6851. uint16_t __ret = *(uint16_t*)(ip + 2);
  6852. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6853. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6854. typedef uint8_t(*_NativeMethod_)(MethodInfo*);
  6855. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6856. ip += 8;
  6857. continue;
  6858. }
  6859. case HiOpcodeEnum::CallCommonNativeStatic_i2_0:
  6860. {
  6861. uint32_t __method = *(uint32_t*)(ip + 4);
  6862. uint16_t __ret = *(uint16_t*)(ip + 2);
  6863. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6864. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6865. typedef int16_t(*_NativeMethod_)(MethodInfo*);
  6866. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6867. ip += 8;
  6868. continue;
  6869. }
  6870. case HiOpcodeEnum::CallCommonNativeStatic_u2_0:
  6871. {
  6872. uint32_t __method = *(uint32_t*)(ip + 4);
  6873. uint16_t __ret = *(uint16_t*)(ip + 2);
  6874. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6875. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6876. typedef uint16_t(*_NativeMethod_)(MethodInfo*);
  6877. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6878. ip += 8;
  6879. continue;
  6880. }
  6881. case HiOpcodeEnum::CallCommonNativeStatic_i4_0:
  6882. {
  6883. uint32_t __method = *(uint32_t*)(ip + 4);
  6884. uint16_t __ret = *(uint16_t*)(ip + 2);
  6885. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6886. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6887. typedef int32_t(*_NativeMethod_)(MethodInfo*);
  6888. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6889. ip += 8;
  6890. continue;
  6891. }
  6892. case HiOpcodeEnum::CallCommonNativeStatic_i8_0:
  6893. {
  6894. uint32_t __method = *(uint32_t*)(ip + 4);
  6895. uint16_t __ret = *(uint16_t*)(ip + 2);
  6896. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6897. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6898. typedef int64_t(*_NativeMethod_)(MethodInfo*);
  6899. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6900. ip += 8;
  6901. continue;
  6902. }
  6903. case HiOpcodeEnum::CallCommonNativeStatic_f4_0:
  6904. {
  6905. uint32_t __method = *(uint32_t*)(ip + 4);
  6906. uint16_t __ret = *(uint16_t*)(ip + 2);
  6907. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6908. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6909. typedef float(*_NativeMethod_)(MethodInfo*);
  6910. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6911. ip += 8;
  6912. continue;
  6913. }
  6914. case HiOpcodeEnum::CallCommonNativeStatic_f8_0:
  6915. {
  6916. uint32_t __method = *(uint32_t*)(ip + 4);
  6917. uint16_t __ret = *(uint16_t*)(ip + 2);
  6918. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6919. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6920. typedef double(*_NativeMethod_)(MethodInfo*);
  6921. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6922. ip += 8;
  6923. continue;
  6924. }
  6925. case HiOpcodeEnum::CallCommonNativeStatic_v_i4_1:
  6926. {
  6927. uint32_t __method = *(uint32_t*)(ip + 4);
  6928. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6929. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6930. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6931. typedef void(*_NativeMethod_)(int32_t, MethodInfo*);
  6932. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  6933. ip += 8;
  6934. continue;
  6935. }
  6936. case HiOpcodeEnum::CallCommonNativeStatic_v_i4_2:
  6937. {
  6938. uint32_t __method = *(uint32_t*)(ip + 8);
  6939. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6940. uint16_t __param1 = *(uint16_t*)(ip + 4);
  6941. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6942. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6943. typedef void(*_NativeMethod_)(int32_t, int32_t, MethodInfo*);
  6944. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  6945. ip += 16;
  6946. continue;
  6947. }
  6948. case HiOpcodeEnum::CallCommonNativeStatic_v_i4_3:
  6949. {
  6950. uint32_t __method = *(uint32_t*)(ip + 8);
  6951. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6952. uint16_t __param1 = *(uint16_t*)(ip + 4);
  6953. uint16_t __param2 = *(uint16_t*)(ip + 6);
  6954. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6955. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6956. typedef void(*_NativeMethod_)(int32_t, int32_t, int32_t, MethodInfo*);
  6957. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  6958. ip += 16;
  6959. continue;
  6960. }
  6961. case HiOpcodeEnum::CallCommonNativeStatic_v_i4_4:
  6962. {
  6963. uint32_t __method = *(uint32_t*)(ip + 12);
  6964. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6965. uint16_t __param1 = *(uint16_t*)(ip + 4);
  6966. uint16_t __param2 = *(uint16_t*)(ip + 6);
  6967. uint16_t __param3 = *(uint16_t*)(ip + 8);
  6968. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6969. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6970. typedef void(*_NativeMethod_)(int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  6971. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  6972. ip += 16;
  6973. continue;
  6974. }
  6975. case HiOpcodeEnum::CallCommonNativeStatic_v_i8_1:
  6976. {
  6977. uint32_t __method = *(uint32_t*)(ip + 4);
  6978. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6979. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6980. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6981. typedef void(*_NativeMethod_)(int64_t, MethodInfo*);
  6982. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  6983. ip += 8;
  6984. continue;
  6985. }
  6986. case HiOpcodeEnum::CallCommonNativeStatic_v_i8_2:
  6987. {
  6988. uint32_t __method = *(uint32_t*)(ip + 8);
  6989. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6990. uint16_t __param1 = *(uint16_t*)(ip + 4);
  6991. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6992. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6993. typedef void(*_NativeMethod_)(int64_t, int64_t, MethodInfo*);
  6994. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  6995. ip += 16;
  6996. continue;
  6997. }
  6998. case HiOpcodeEnum::CallCommonNativeStatic_v_i8_3:
  6999. {
  7000. uint32_t __method = *(uint32_t*)(ip + 8);
  7001. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7002. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7003. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7004. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7005. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7006. typedef void(*_NativeMethod_)(int64_t, int64_t, int64_t, MethodInfo*);
  7007. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  7008. ip += 16;
  7009. continue;
  7010. }
  7011. case HiOpcodeEnum::CallCommonNativeStatic_v_i8_4:
  7012. {
  7013. uint32_t __method = *(uint32_t*)(ip + 12);
  7014. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7015. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7016. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7017. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7018. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7019. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7020. typedef void(*_NativeMethod_)(int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  7021. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  7022. ip += 16;
  7023. continue;
  7024. }
  7025. case HiOpcodeEnum::CallCommonNativeStatic_v_f4_1:
  7026. {
  7027. uint32_t __method = *(uint32_t*)(ip + 4);
  7028. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7029. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7030. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7031. typedef void(*_NativeMethod_)(float, MethodInfo*);
  7032. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), _resolvedMethod);
  7033. ip += 8;
  7034. continue;
  7035. }
  7036. case HiOpcodeEnum::CallCommonNativeStatic_v_f4_2:
  7037. {
  7038. uint32_t __method = *(uint32_t*)(ip + 8);
  7039. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7040. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7041. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7042. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7043. typedef void(*_NativeMethod_)(float, float, MethodInfo*);
  7044. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  7045. ip += 16;
  7046. continue;
  7047. }
  7048. case HiOpcodeEnum::CallCommonNativeStatic_v_f4_3:
  7049. {
  7050. uint32_t __method = *(uint32_t*)(ip + 8);
  7051. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7052. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7053. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7054. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7055. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7056. typedef void(*_NativeMethod_)(float, float, float, MethodInfo*);
  7057. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  7058. ip += 16;
  7059. continue;
  7060. }
  7061. case HiOpcodeEnum::CallCommonNativeStatic_v_f4_4:
  7062. {
  7063. uint32_t __method = *(uint32_t*)(ip + 12);
  7064. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7065. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7066. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7067. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7068. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7069. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7070. typedef void(*_NativeMethod_)(float, float, float, float, MethodInfo*);
  7071. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  7072. ip += 16;
  7073. continue;
  7074. }
  7075. case HiOpcodeEnum::CallCommonNativeStatic_v_f8_1:
  7076. {
  7077. uint32_t __method = *(uint32_t*)(ip + 4);
  7078. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7079. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7080. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7081. typedef void(*_NativeMethod_)(double, MethodInfo*);
  7082. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), _resolvedMethod);
  7083. ip += 8;
  7084. continue;
  7085. }
  7086. case HiOpcodeEnum::CallCommonNativeStatic_v_f8_2:
  7087. {
  7088. uint32_t __method = *(uint32_t*)(ip + 8);
  7089. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7090. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7091. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7092. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7093. typedef void(*_NativeMethod_)(double, double, MethodInfo*);
  7094. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  7095. ip += 16;
  7096. continue;
  7097. }
  7098. case HiOpcodeEnum::CallCommonNativeStatic_v_f8_3:
  7099. {
  7100. uint32_t __method = *(uint32_t*)(ip + 8);
  7101. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7102. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7103. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7104. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7105. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7106. typedef void(*_NativeMethod_)(double, double, double, MethodInfo*);
  7107. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  7108. ip += 16;
  7109. continue;
  7110. }
  7111. case HiOpcodeEnum::CallCommonNativeStatic_v_f8_4:
  7112. {
  7113. uint32_t __method = *(uint32_t*)(ip + 12);
  7114. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7115. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7116. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7117. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7118. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7119. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7120. typedef void(*_NativeMethod_)(double, double, double, double, MethodInfo*);
  7121. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  7122. ip += 16;
  7123. continue;
  7124. }
  7125. case HiOpcodeEnum::CallCommonNativeStatic_u1_i4_1:
  7126. {
  7127. uint32_t __method = *(uint32_t*)(ip + 8);
  7128. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7129. uint16_t __ret = *(uint16_t*)(ip + 4);
  7130. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7131. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7132. typedef uint8_t(*_NativeMethod_)(int32_t, MethodInfo*);
  7133. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  7134. ip += 16;
  7135. continue;
  7136. }
  7137. case HiOpcodeEnum::CallCommonNativeStatic_u1_i4_2:
  7138. {
  7139. uint32_t __method = *(uint32_t*)(ip + 8);
  7140. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7141. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7142. uint16_t __ret = *(uint16_t*)(ip + 6);
  7143. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7144. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7145. typedef uint8_t(*_NativeMethod_)(int32_t, int32_t, MethodInfo*);
  7146. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  7147. ip += 16;
  7148. continue;
  7149. }
  7150. case HiOpcodeEnum::CallCommonNativeStatic_u1_i4_3:
  7151. {
  7152. uint32_t __method = *(uint32_t*)(ip + 12);
  7153. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7154. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7155. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7156. uint16_t __ret = *(uint16_t*)(ip + 8);
  7157. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7158. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7159. typedef uint8_t(*_NativeMethod_)(int32_t, int32_t, int32_t, MethodInfo*);
  7160. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  7161. ip += 16;
  7162. continue;
  7163. }
  7164. case HiOpcodeEnum::CallCommonNativeStatic_u1_i4_4:
  7165. {
  7166. uint32_t __method = *(uint32_t*)(ip + 12);
  7167. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7168. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7169. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7170. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7171. uint16_t __ret = *(uint16_t*)(ip + 10);
  7172. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7173. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7174. typedef uint8_t(*_NativeMethod_)(int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  7175. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  7176. ip += 16;
  7177. continue;
  7178. }
  7179. case HiOpcodeEnum::CallCommonNativeStatic_u1_i8_1:
  7180. {
  7181. uint32_t __method = *(uint32_t*)(ip + 8);
  7182. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7183. uint16_t __ret = *(uint16_t*)(ip + 4);
  7184. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7185. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7186. typedef uint8_t(*_NativeMethod_)(int64_t, MethodInfo*);
  7187. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  7188. ip += 16;
  7189. continue;
  7190. }
  7191. case HiOpcodeEnum::CallCommonNativeStatic_u1_i8_2:
  7192. {
  7193. uint32_t __method = *(uint32_t*)(ip + 8);
  7194. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7195. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7196. uint16_t __ret = *(uint16_t*)(ip + 6);
  7197. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7198. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7199. typedef uint8_t(*_NativeMethod_)(int64_t, int64_t, MethodInfo*);
  7200. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  7201. ip += 16;
  7202. continue;
  7203. }
  7204. case HiOpcodeEnum::CallCommonNativeStatic_u1_i8_3:
  7205. {
  7206. uint32_t __method = *(uint32_t*)(ip + 12);
  7207. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7208. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7209. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7210. uint16_t __ret = *(uint16_t*)(ip + 8);
  7211. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7212. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7213. typedef uint8_t(*_NativeMethod_)(int64_t, int64_t, int64_t, MethodInfo*);
  7214. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  7215. ip += 16;
  7216. continue;
  7217. }
  7218. case HiOpcodeEnum::CallCommonNativeStatic_u1_i8_4:
  7219. {
  7220. uint32_t __method = *(uint32_t*)(ip + 12);
  7221. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7222. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7223. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7224. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7225. uint16_t __ret = *(uint16_t*)(ip + 10);
  7226. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7227. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7228. typedef uint8_t(*_NativeMethod_)(int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  7229. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  7230. ip += 16;
  7231. continue;
  7232. }
  7233. case HiOpcodeEnum::CallCommonNativeStatic_u1_f4_1:
  7234. {
  7235. uint32_t __method = *(uint32_t*)(ip + 8);
  7236. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7237. uint16_t __ret = *(uint16_t*)(ip + 4);
  7238. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7239. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7240. typedef uint8_t(*_NativeMethod_)(float, MethodInfo*);
  7241. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), _resolvedMethod);
  7242. ip += 16;
  7243. continue;
  7244. }
  7245. case HiOpcodeEnum::CallCommonNativeStatic_u1_f4_2:
  7246. {
  7247. uint32_t __method = *(uint32_t*)(ip + 8);
  7248. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7249. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7250. uint16_t __ret = *(uint16_t*)(ip + 6);
  7251. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7252. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7253. typedef uint8_t(*_NativeMethod_)(float, float, MethodInfo*);
  7254. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  7255. ip += 16;
  7256. continue;
  7257. }
  7258. case HiOpcodeEnum::CallCommonNativeStatic_u1_f4_3:
  7259. {
  7260. uint32_t __method = *(uint32_t*)(ip + 12);
  7261. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7262. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7263. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7264. uint16_t __ret = *(uint16_t*)(ip + 8);
  7265. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7266. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7267. typedef uint8_t(*_NativeMethod_)(float, float, float, MethodInfo*);
  7268. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  7269. ip += 16;
  7270. continue;
  7271. }
  7272. case HiOpcodeEnum::CallCommonNativeStatic_u1_f4_4:
  7273. {
  7274. uint32_t __method = *(uint32_t*)(ip + 12);
  7275. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7276. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7277. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7278. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7279. uint16_t __ret = *(uint16_t*)(ip + 10);
  7280. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7281. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7282. typedef uint8_t(*_NativeMethod_)(float, float, float, float, MethodInfo*);
  7283. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  7284. ip += 16;
  7285. continue;
  7286. }
  7287. case HiOpcodeEnum::CallCommonNativeStatic_u1_f8_1:
  7288. {
  7289. uint32_t __method = *(uint32_t*)(ip + 8);
  7290. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7291. uint16_t __ret = *(uint16_t*)(ip + 4);
  7292. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7293. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7294. typedef uint8_t(*_NativeMethod_)(double, MethodInfo*);
  7295. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), _resolvedMethod);
  7296. ip += 16;
  7297. continue;
  7298. }
  7299. case HiOpcodeEnum::CallCommonNativeStatic_u1_f8_2:
  7300. {
  7301. uint32_t __method = *(uint32_t*)(ip + 8);
  7302. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7303. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7304. uint16_t __ret = *(uint16_t*)(ip + 6);
  7305. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7306. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7307. typedef uint8_t(*_NativeMethod_)(double, double, MethodInfo*);
  7308. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  7309. ip += 16;
  7310. continue;
  7311. }
  7312. case HiOpcodeEnum::CallCommonNativeStatic_u1_f8_3:
  7313. {
  7314. uint32_t __method = *(uint32_t*)(ip + 12);
  7315. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7316. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7317. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7318. uint16_t __ret = *(uint16_t*)(ip + 8);
  7319. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7320. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7321. typedef uint8_t(*_NativeMethod_)(double, double, double, MethodInfo*);
  7322. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  7323. ip += 16;
  7324. continue;
  7325. }
  7326. case HiOpcodeEnum::CallCommonNativeStatic_u1_f8_4:
  7327. {
  7328. uint32_t __method = *(uint32_t*)(ip + 12);
  7329. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7330. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7331. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7332. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7333. uint16_t __ret = *(uint16_t*)(ip + 10);
  7334. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7335. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7336. typedef uint8_t(*_NativeMethod_)(double, double, double, double, MethodInfo*);
  7337. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  7338. ip += 16;
  7339. continue;
  7340. }
  7341. case HiOpcodeEnum::CallCommonNativeStatic_i4_i4_1:
  7342. {
  7343. uint32_t __method = *(uint32_t*)(ip + 8);
  7344. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7345. uint16_t __ret = *(uint16_t*)(ip + 4);
  7346. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7347. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7348. typedef int32_t(*_NativeMethod_)(int32_t, MethodInfo*);
  7349. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  7350. ip += 16;
  7351. continue;
  7352. }
  7353. case HiOpcodeEnum::CallCommonNativeStatic_i4_i4_2:
  7354. {
  7355. uint32_t __method = *(uint32_t*)(ip + 8);
  7356. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7357. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7358. uint16_t __ret = *(uint16_t*)(ip + 6);
  7359. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7360. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7361. typedef int32_t(*_NativeMethod_)(int32_t, int32_t, MethodInfo*);
  7362. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  7363. ip += 16;
  7364. continue;
  7365. }
  7366. case HiOpcodeEnum::CallCommonNativeStatic_i4_i4_3:
  7367. {
  7368. uint32_t __method = *(uint32_t*)(ip + 12);
  7369. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7370. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7371. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7372. uint16_t __ret = *(uint16_t*)(ip + 8);
  7373. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7374. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7375. typedef int32_t(*_NativeMethod_)(int32_t, int32_t, int32_t, MethodInfo*);
  7376. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  7377. ip += 16;
  7378. continue;
  7379. }
  7380. case HiOpcodeEnum::CallCommonNativeStatic_i4_i4_4:
  7381. {
  7382. uint32_t __method = *(uint32_t*)(ip + 12);
  7383. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7384. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7385. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7386. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7387. uint16_t __ret = *(uint16_t*)(ip + 10);
  7388. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7389. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7390. typedef int32_t(*_NativeMethod_)(int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  7391. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  7392. ip += 16;
  7393. continue;
  7394. }
  7395. case HiOpcodeEnum::CallCommonNativeStatic_i4_i8_1:
  7396. {
  7397. uint32_t __method = *(uint32_t*)(ip + 8);
  7398. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7399. uint16_t __ret = *(uint16_t*)(ip + 4);
  7400. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7401. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7402. typedef int32_t(*_NativeMethod_)(int64_t, MethodInfo*);
  7403. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  7404. ip += 16;
  7405. continue;
  7406. }
  7407. case HiOpcodeEnum::CallCommonNativeStatic_i4_i8_2:
  7408. {
  7409. uint32_t __method = *(uint32_t*)(ip + 8);
  7410. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7411. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7412. uint16_t __ret = *(uint16_t*)(ip + 6);
  7413. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7414. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7415. typedef int32_t(*_NativeMethod_)(int64_t, int64_t, MethodInfo*);
  7416. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  7417. ip += 16;
  7418. continue;
  7419. }
  7420. case HiOpcodeEnum::CallCommonNativeStatic_i4_i8_3:
  7421. {
  7422. uint32_t __method = *(uint32_t*)(ip + 12);
  7423. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7424. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7425. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7426. uint16_t __ret = *(uint16_t*)(ip + 8);
  7427. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7428. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7429. typedef int32_t(*_NativeMethod_)(int64_t, int64_t, int64_t, MethodInfo*);
  7430. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  7431. ip += 16;
  7432. continue;
  7433. }
  7434. case HiOpcodeEnum::CallCommonNativeStatic_i4_i8_4:
  7435. {
  7436. uint32_t __method = *(uint32_t*)(ip + 12);
  7437. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7438. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7439. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7440. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7441. uint16_t __ret = *(uint16_t*)(ip + 10);
  7442. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7443. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7444. typedef int32_t(*_NativeMethod_)(int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  7445. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  7446. ip += 16;
  7447. continue;
  7448. }
  7449. case HiOpcodeEnum::CallCommonNativeStatic_i4_f4_1:
  7450. {
  7451. uint32_t __method = *(uint32_t*)(ip + 8);
  7452. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7453. uint16_t __ret = *(uint16_t*)(ip + 4);
  7454. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7455. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7456. typedef int32_t(*_NativeMethod_)(float, MethodInfo*);
  7457. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), _resolvedMethod);
  7458. ip += 16;
  7459. continue;
  7460. }
  7461. case HiOpcodeEnum::CallCommonNativeStatic_i4_f4_2:
  7462. {
  7463. uint32_t __method = *(uint32_t*)(ip + 8);
  7464. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7465. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7466. uint16_t __ret = *(uint16_t*)(ip + 6);
  7467. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7468. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7469. typedef int32_t(*_NativeMethod_)(float, float, MethodInfo*);
  7470. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  7471. ip += 16;
  7472. continue;
  7473. }
  7474. case HiOpcodeEnum::CallCommonNativeStatic_i4_f4_3:
  7475. {
  7476. uint32_t __method = *(uint32_t*)(ip + 12);
  7477. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7478. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7479. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7480. uint16_t __ret = *(uint16_t*)(ip + 8);
  7481. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7482. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7483. typedef int32_t(*_NativeMethod_)(float, float, float, MethodInfo*);
  7484. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  7485. ip += 16;
  7486. continue;
  7487. }
  7488. case HiOpcodeEnum::CallCommonNativeStatic_i4_f4_4:
  7489. {
  7490. uint32_t __method = *(uint32_t*)(ip + 12);
  7491. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7492. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7493. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7494. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7495. uint16_t __ret = *(uint16_t*)(ip + 10);
  7496. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7497. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7498. typedef int32_t(*_NativeMethod_)(float, float, float, float, MethodInfo*);
  7499. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  7500. ip += 16;
  7501. continue;
  7502. }
  7503. case HiOpcodeEnum::CallCommonNativeStatic_i4_f8_1:
  7504. {
  7505. uint32_t __method = *(uint32_t*)(ip + 8);
  7506. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7507. uint16_t __ret = *(uint16_t*)(ip + 4);
  7508. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7509. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7510. typedef int32_t(*_NativeMethod_)(double, MethodInfo*);
  7511. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), _resolvedMethod);
  7512. ip += 16;
  7513. continue;
  7514. }
  7515. case HiOpcodeEnum::CallCommonNativeStatic_i4_f8_2:
  7516. {
  7517. uint32_t __method = *(uint32_t*)(ip + 8);
  7518. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7519. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7520. uint16_t __ret = *(uint16_t*)(ip + 6);
  7521. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7522. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7523. typedef int32_t(*_NativeMethod_)(double, double, MethodInfo*);
  7524. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  7525. ip += 16;
  7526. continue;
  7527. }
  7528. case HiOpcodeEnum::CallCommonNativeStatic_i4_f8_3:
  7529. {
  7530. uint32_t __method = *(uint32_t*)(ip + 12);
  7531. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7532. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7533. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7534. uint16_t __ret = *(uint16_t*)(ip + 8);
  7535. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7536. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7537. typedef int32_t(*_NativeMethod_)(double, double, double, MethodInfo*);
  7538. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  7539. ip += 16;
  7540. continue;
  7541. }
  7542. case HiOpcodeEnum::CallCommonNativeStatic_i4_f8_4:
  7543. {
  7544. uint32_t __method = *(uint32_t*)(ip + 12);
  7545. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7546. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7547. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7548. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7549. uint16_t __ret = *(uint16_t*)(ip + 10);
  7550. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7551. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7552. typedef int32_t(*_NativeMethod_)(double, double, double, double, MethodInfo*);
  7553. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  7554. ip += 16;
  7555. continue;
  7556. }
  7557. case HiOpcodeEnum::CallCommonNativeStatic_i8_i4_1:
  7558. {
  7559. uint32_t __method = *(uint32_t*)(ip + 8);
  7560. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7561. uint16_t __ret = *(uint16_t*)(ip + 4);
  7562. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7563. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7564. typedef int64_t(*_NativeMethod_)(int32_t, MethodInfo*);
  7565. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  7566. ip += 16;
  7567. continue;
  7568. }
  7569. case HiOpcodeEnum::CallCommonNativeStatic_i8_i4_2:
  7570. {
  7571. uint32_t __method = *(uint32_t*)(ip + 8);
  7572. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7573. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7574. uint16_t __ret = *(uint16_t*)(ip + 6);
  7575. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7576. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7577. typedef int64_t(*_NativeMethod_)(int32_t, int32_t, MethodInfo*);
  7578. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  7579. ip += 16;
  7580. continue;
  7581. }
  7582. case HiOpcodeEnum::CallCommonNativeStatic_i8_i4_3:
  7583. {
  7584. uint32_t __method = *(uint32_t*)(ip + 12);
  7585. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7586. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7587. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7588. uint16_t __ret = *(uint16_t*)(ip + 8);
  7589. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7590. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7591. typedef int64_t(*_NativeMethod_)(int32_t, int32_t, int32_t, MethodInfo*);
  7592. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  7593. ip += 16;
  7594. continue;
  7595. }
  7596. case HiOpcodeEnum::CallCommonNativeStatic_i8_i4_4:
  7597. {
  7598. uint32_t __method = *(uint32_t*)(ip + 12);
  7599. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7600. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7601. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7602. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7603. uint16_t __ret = *(uint16_t*)(ip + 10);
  7604. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7605. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7606. typedef int64_t(*_NativeMethod_)(int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  7607. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  7608. ip += 16;
  7609. continue;
  7610. }
  7611. case HiOpcodeEnum::CallCommonNativeStatic_i8_i8_1:
  7612. {
  7613. uint32_t __method = *(uint32_t*)(ip + 8);
  7614. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7615. uint16_t __ret = *(uint16_t*)(ip + 4);
  7616. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7617. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7618. typedef int64_t(*_NativeMethod_)(int64_t, MethodInfo*);
  7619. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  7620. ip += 16;
  7621. continue;
  7622. }
  7623. case HiOpcodeEnum::CallCommonNativeStatic_i8_i8_2:
  7624. {
  7625. uint32_t __method = *(uint32_t*)(ip + 8);
  7626. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7627. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7628. uint16_t __ret = *(uint16_t*)(ip + 6);
  7629. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7630. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7631. typedef int64_t(*_NativeMethod_)(int64_t, int64_t, MethodInfo*);
  7632. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  7633. ip += 16;
  7634. continue;
  7635. }
  7636. case HiOpcodeEnum::CallCommonNativeStatic_i8_i8_3:
  7637. {
  7638. uint32_t __method = *(uint32_t*)(ip + 12);
  7639. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7640. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7641. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7642. uint16_t __ret = *(uint16_t*)(ip + 8);
  7643. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7644. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7645. typedef int64_t(*_NativeMethod_)(int64_t, int64_t, int64_t, MethodInfo*);
  7646. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  7647. ip += 16;
  7648. continue;
  7649. }
  7650. case HiOpcodeEnum::CallCommonNativeStatic_i8_i8_4:
  7651. {
  7652. uint32_t __method = *(uint32_t*)(ip + 12);
  7653. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7654. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7655. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7656. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7657. uint16_t __ret = *(uint16_t*)(ip + 10);
  7658. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7659. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7660. typedef int64_t(*_NativeMethod_)(int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  7661. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  7662. ip += 16;
  7663. continue;
  7664. }
  7665. case HiOpcodeEnum::CallCommonNativeStatic_i8_f4_1:
  7666. {
  7667. uint32_t __method = *(uint32_t*)(ip + 8);
  7668. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7669. uint16_t __ret = *(uint16_t*)(ip + 4);
  7670. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7671. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7672. typedef int64_t(*_NativeMethod_)(float, MethodInfo*);
  7673. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), _resolvedMethod);
  7674. ip += 16;
  7675. continue;
  7676. }
  7677. case HiOpcodeEnum::CallCommonNativeStatic_i8_f4_2:
  7678. {
  7679. uint32_t __method = *(uint32_t*)(ip + 8);
  7680. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7681. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7682. uint16_t __ret = *(uint16_t*)(ip + 6);
  7683. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7684. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7685. typedef int64_t(*_NativeMethod_)(float, float, MethodInfo*);
  7686. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  7687. ip += 16;
  7688. continue;
  7689. }
  7690. case HiOpcodeEnum::CallCommonNativeStatic_i8_f4_3:
  7691. {
  7692. uint32_t __method = *(uint32_t*)(ip + 12);
  7693. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7694. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7695. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7696. uint16_t __ret = *(uint16_t*)(ip + 8);
  7697. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7698. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7699. typedef int64_t(*_NativeMethod_)(float, float, float, MethodInfo*);
  7700. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  7701. ip += 16;
  7702. continue;
  7703. }
  7704. case HiOpcodeEnum::CallCommonNativeStatic_i8_f4_4:
  7705. {
  7706. uint32_t __method = *(uint32_t*)(ip + 12);
  7707. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7708. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7709. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7710. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7711. uint16_t __ret = *(uint16_t*)(ip + 10);
  7712. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7713. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7714. typedef int64_t(*_NativeMethod_)(float, float, float, float, MethodInfo*);
  7715. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  7716. ip += 16;
  7717. continue;
  7718. }
  7719. case HiOpcodeEnum::CallCommonNativeStatic_i8_f8_1:
  7720. {
  7721. uint32_t __method = *(uint32_t*)(ip + 8);
  7722. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7723. uint16_t __ret = *(uint16_t*)(ip + 4);
  7724. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7725. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7726. typedef int64_t(*_NativeMethod_)(double, MethodInfo*);
  7727. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), _resolvedMethod);
  7728. ip += 16;
  7729. continue;
  7730. }
  7731. case HiOpcodeEnum::CallCommonNativeStatic_i8_f8_2:
  7732. {
  7733. uint32_t __method = *(uint32_t*)(ip + 8);
  7734. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7735. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7736. uint16_t __ret = *(uint16_t*)(ip + 6);
  7737. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7738. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7739. typedef int64_t(*_NativeMethod_)(double, double, MethodInfo*);
  7740. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  7741. ip += 16;
  7742. continue;
  7743. }
  7744. case HiOpcodeEnum::CallCommonNativeStatic_i8_f8_3:
  7745. {
  7746. uint32_t __method = *(uint32_t*)(ip + 12);
  7747. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7748. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7749. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7750. uint16_t __ret = *(uint16_t*)(ip + 8);
  7751. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7752. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7753. typedef int64_t(*_NativeMethod_)(double, double, double, MethodInfo*);
  7754. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  7755. ip += 16;
  7756. continue;
  7757. }
  7758. case HiOpcodeEnum::CallCommonNativeStatic_i8_f8_4:
  7759. {
  7760. uint32_t __method = *(uint32_t*)(ip + 12);
  7761. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7762. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7763. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7764. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7765. uint16_t __ret = *(uint16_t*)(ip + 10);
  7766. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7767. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7768. typedef int64_t(*_NativeMethod_)(double, double, double, double, MethodInfo*);
  7769. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  7770. ip += 16;
  7771. continue;
  7772. }
  7773. case HiOpcodeEnum::CallCommonNativeStatic_f4_i4_1:
  7774. {
  7775. uint32_t __method = *(uint32_t*)(ip + 8);
  7776. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7777. uint16_t __ret = *(uint16_t*)(ip + 4);
  7778. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7779. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7780. typedef float(*_NativeMethod_)(int32_t, MethodInfo*);
  7781. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  7782. ip += 16;
  7783. continue;
  7784. }
  7785. case HiOpcodeEnum::CallCommonNativeStatic_f4_i4_2:
  7786. {
  7787. uint32_t __method = *(uint32_t*)(ip + 8);
  7788. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7789. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7790. uint16_t __ret = *(uint16_t*)(ip + 6);
  7791. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7792. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7793. typedef float(*_NativeMethod_)(int32_t, int32_t, MethodInfo*);
  7794. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  7795. ip += 16;
  7796. continue;
  7797. }
  7798. case HiOpcodeEnum::CallCommonNativeStatic_f4_i4_3:
  7799. {
  7800. uint32_t __method = *(uint32_t*)(ip + 12);
  7801. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7802. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7803. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7804. uint16_t __ret = *(uint16_t*)(ip + 8);
  7805. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7806. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7807. typedef float(*_NativeMethod_)(int32_t, int32_t, int32_t, MethodInfo*);
  7808. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  7809. ip += 16;
  7810. continue;
  7811. }
  7812. case HiOpcodeEnum::CallCommonNativeStatic_f4_i4_4:
  7813. {
  7814. uint32_t __method = *(uint32_t*)(ip + 12);
  7815. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7816. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7817. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7818. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7819. uint16_t __ret = *(uint16_t*)(ip + 10);
  7820. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7821. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7822. typedef float(*_NativeMethod_)(int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  7823. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  7824. ip += 16;
  7825. continue;
  7826. }
  7827. case HiOpcodeEnum::CallCommonNativeStatic_f4_i8_1:
  7828. {
  7829. uint32_t __method = *(uint32_t*)(ip + 8);
  7830. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7831. uint16_t __ret = *(uint16_t*)(ip + 4);
  7832. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7833. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7834. typedef float(*_NativeMethod_)(int64_t, MethodInfo*);
  7835. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  7836. ip += 16;
  7837. continue;
  7838. }
  7839. case HiOpcodeEnum::CallCommonNativeStatic_f4_i8_2:
  7840. {
  7841. uint32_t __method = *(uint32_t*)(ip + 8);
  7842. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7843. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7844. uint16_t __ret = *(uint16_t*)(ip + 6);
  7845. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7846. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7847. typedef float(*_NativeMethod_)(int64_t, int64_t, MethodInfo*);
  7848. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  7849. ip += 16;
  7850. continue;
  7851. }
  7852. case HiOpcodeEnum::CallCommonNativeStatic_f4_i8_3:
  7853. {
  7854. uint32_t __method = *(uint32_t*)(ip + 12);
  7855. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7856. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7857. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7858. uint16_t __ret = *(uint16_t*)(ip + 8);
  7859. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7860. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7861. typedef float(*_NativeMethod_)(int64_t, int64_t, int64_t, MethodInfo*);
  7862. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  7863. ip += 16;
  7864. continue;
  7865. }
  7866. case HiOpcodeEnum::CallCommonNativeStatic_f4_i8_4:
  7867. {
  7868. uint32_t __method = *(uint32_t*)(ip + 12);
  7869. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7870. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7871. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7872. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7873. uint16_t __ret = *(uint16_t*)(ip + 10);
  7874. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7875. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7876. typedef float(*_NativeMethod_)(int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  7877. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  7878. ip += 16;
  7879. continue;
  7880. }
  7881. case HiOpcodeEnum::CallCommonNativeStatic_f4_f4_1:
  7882. {
  7883. uint32_t __method = *(uint32_t*)(ip + 8);
  7884. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7885. uint16_t __ret = *(uint16_t*)(ip + 4);
  7886. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7887. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7888. typedef float(*_NativeMethod_)(float, MethodInfo*);
  7889. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), _resolvedMethod);
  7890. ip += 16;
  7891. continue;
  7892. }
  7893. case HiOpcodeEnum::CallCommonNativeStatic_f4_f4_2:
  7894. {
  7895. uint32_t __method = *(uint32_t*)(ip + 8);
  7896. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7897. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7898. uint16_t __ret = *(uint16_t*)(ip + 6);
  7899. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7900. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7901. typedef float(*_NativeMethod_)(float, float, MethodInfo*);
  7902. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  7903. ip += 16;
  7904. continue;
  7905. }
  7906. case HiOpcodeEnum::CallCommonNativeStatic_f4_f4_3:
  7907. {
  7908. uint32_t __method = *(uint32_t*)(ip + 12);
  7909. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7910. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7911. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7912. uint16_t __ret = *(uint16_t*)(ip + 8);
  7913. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7914. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7915. typedef float(*_NativeMethod_)(float, float, float, MethodInfo*);
  7916. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  7917. ip += 16;
  7918. continue;
  7919. }
  7920. case HiOpcodeEnum::CallCommonNativeStatic_f4_f4_4:
  7921. {
  7922. uint32_t __method = *(uint32_t*)(ip + 12);
  7923. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7924. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7925. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7926. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7927. uint16_t __ret = *(uint16_t*)(ip + 10);
  7928. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7929. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7930. typedef float(*_NativeMethod_)(float, float, float, float, MethodInfo*);
  7931. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  7932. ip += 16;
  7933. continue;
  7934. }
  7935. case HiOpcodeEnum::CallCommonNativeStatic_f4_f8_1:
  7936. {
  7937. uint32_t __method = *(uint32_t*)(ip + 8);
  7938. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7939. uint16_t __ret = *(uint16_t*)(ip + 4);
  7940. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7941. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7942. typedef float(*_NativeMethod_)(double, MethodInfo*);
  7943. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), _resolvedMethod);
  7944. ip += 16;
  7945. continue;
  7946. }
  7947. case HiOpcodeEnum::CallCommonNativeStatic_f4_f8_2:
  7948. {
  7949. uint32_t __method = *(uint32_t*)(ip + 8);
  7950. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7951. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7952. uint16_t __ret = *(uint16_t*)(ip + 6);
  7953. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7954. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7955. typedef float(*_NativeMethod_)(double, double, MethodInfo*);
  7956. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  7957. ip += 16;
  7958. continue;
  7959. }
  7960. case HiOpcodeEnum::CallCommonNativeStatic_f4_f8_3:
  7961. {
  7962. uint32_t __method = *(uint32_t*)(ip + 12);
  7963. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7964. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7965. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7966. uint16_t __ret = *(uint16_t*)(ip + 8);
  7967. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7968. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7969. typedef float(*_NativeMethod_)(double, double, double, MethodInfo*);
  7970. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  7971. ip += 16;
  7972. continue;
  7973. }
  7974. case HiOpcodeEnum::CallCommonNativeStatic_f4_f8_4:
  7975. {
  7976. uint32_t __method = *(uint32_t*)(ip + 12);
  7977. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7978. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7979. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7980. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7981. uint16_t __ret = *(uint16_t*)(ip + 10);
  7982. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7983. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7984. typedef float(*_NativeMethod_)(double, double, double, double, MethodInfo*);
  7985. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  7986. ip += 16;
  7987. continue;
  7988. }
  7989. case HiOpcodeEnum::CallCommonNativeStatic_f8_i4_1:
  7990. {
  7991. uint32_t __method = *(uint32_t*)(ip + 8);
  7992. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7993. uint16_t __ret = *(uint16_t*)(ip + 4);
  7994. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7995. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7996. typedef double(*_NativeMethod_)(int32_t, MethodInfo*);
  7997. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  7998. ip += 16;
  7999. continue;
  8000. }
  8001. case HiOpcodeEnum::CallCommonNativeStatic_f8_i4_2:
  8002. {
  8003. uint32_t __method = *(uint32_t*)(ip + 8);
  8004. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8005. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8006. uint16_t __ret = *(uint16_t*)(ip + 6);
  8007. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8008. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8009. typedef double(*_NativeMethod_)(int32_t, int32_t, MethodInfo*);
  8010. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  8011. ip += 16;
  8012. continue;
  8013. }
  8014. case HiOpcodeEnum::CallCommonNativeStatic_f8_i4_3:
  8015. {
  8016. uint32_t __method = *(uint32_t*)(ip + 12);
  8017. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8018. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8019. uint16_t __param2 = *(uint16_t*)(ip + 6);
  8020. uint16_t __ret = *(uint16_t*)(ip + 8);
  8021. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8022. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8023. typedef double(*_NativeMethod_)(int32_t, int32_t, int32_t, MethodInfo*);
  8024. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  8025. ip += 16;
  8026. continue;
  8027. }
  8028. case HiOpcodeEnum::CallCommonNativeStatic_f8_i4_4:
  8029. {
  8030. uint32_t __method = *(uint32_t*)(ip + 12);
  8031. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8032. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8033. uint16_t __param2 = *(uint16_t*)(ip + 6);
  8034. uint16_t __param3 = *(uint16_t*)(ip + 8);
  8035. uint16_t __ret = *(uint16_t*)(ip + 10);
  8036. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8037. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8038. typedef double(*_NativeMethod_)(int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  8039. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  8040. ip += 16;
  8041. continue;
  8042. }
  8043. case HiOpcodeEnum::CallCommonNativeStatic_f8_i8_1:
  8044. {
  8045. uint32_t __method = *(uint32_t*)(ip + 8);
  8046. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8047. uint16_t __ret = *(uint16_t*)(ip + 4);
  8048. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8049. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8050. typedef double(*_NativeMethod_)(int64_t, MethodInfo*);
  8051. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  8052. ip += 16;
  8053. continue;
  8054. }
  8055. case HiOpcodeEnum::CallCommonNativeStatic_f8_i8_2:
  8056. {
  8057. uint32_t __method = *(uint32_t*)(ip + 8);
  8058. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8059. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8060. uint16_t __ret = *(uint16_t*)(ip + 6);
  8061. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8062. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8063. typedef double(*_NativeMethod_)(int64_t, int64_t, MethodInfo*);
  8064. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  8065. ip += 16;
  8066. continue;
  8067. }
  8068. case HiOpcodeEnum::CallCommonNativeStatic_f8_i8_3:
  8069. {
  8070. uint32_t __method = *(uint32_t*)(ip + 12);
  8071. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8072. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8073. uint16_t __param2 = *(uint16_t*)(ip + 6);
  8074. uint16_t __ret = *(uint16_t*)(ip + 8);
  8075. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8076. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8077. typedef double(*_NativeMethod_)(int64_t, int64_t, int64_t, MethodInfo*);
  8078. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  8079. ip += 16;
  8080. continue;
  8081. }
  8082. case HiOpcodeEnum::CallCommonNativeStatic_f8_i8_4:
  8083. {
  8084. uint32_t __method = *(uint32_t*)(ip + 12);
  8085. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8086. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8087. uint16_t __param2 = *(uint16_t*)(ip + 6);
  8088. uint16_t __param3 = *(uint16_t*)(ip + 8);
  8089. uint16_t __ret = *(uint16_t*)(ip + 10);
  8090. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8091. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8092. typedef double(*_NativeMethod_)(int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  8093. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  8094. ip += 16;
  8095. continue;
  8096. }
  8097. case HiOpcodeEnum::CallCommonNativeStatic_f8_f4_1:
  8098. {
  8099. uint32_t __method = *(uint32_t*)(ip + 8);
  8100. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8101. uint16_t __ret = *(uint16_t*)(ip + 4);
  8102. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8103. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8104. typedef double(*_NativeMethod_)(float, MethodInfo*);
  8105. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), _resolvedMethod);
  8106. ip += 16;
  8107. continue;
  8108. }
  8109. case HiOpcodeEnum::CallCommonNativeStatic_f8_f4_2:
  8110. {
  8111. uint32_t __method = *(uint32_t*)(ip + 8);
  8112. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8113. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8114. uint16_t __ret = *(uint16_t*)(ip + 6);
  8115. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8116. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8117. typedef double(*_NativeMethod_)(float, float, MethodInfo*);
  8118. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  8119. ip += 16;
  8120. continue;
  8121. }
  8122. case HiOpcodeEnum::CallCommonNativeStatic_f8_f4_3:
  8123. {
  8124. uint32_t __method = *(uint32_t*)(ip + 12);
  8125. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8126. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8127. uint16_t __param2 = *(uint16_t*)(ip + 6);
  8128. uint16_t __ret = *(uint16_t*)(ip + 8);
  8129. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8130. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8131. typedef double(*_NativeMethod_)(float, float, float, MethodInfo*);
  8132. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  8133. ip += 16;
  8134. continue;
  8135. }
  8136. case HiOpcodeEnum::CallCommonNativeStatic_f8_f4_4:
  8137. {
  8138. uint32_t __method = *(uint32_t*)(ip + 12);
  8139. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8140. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8141. uint16_t __param2 = *(uint16_t*)(ip + 6);
  8142. uint16_t __param3 = *(uint16_t*)(ip + 8);
  8143. uint16_t __ret = *(uint16_t*)(ip + 10);
  8144. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8145. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8146. typedef double(*_NativeMethod_)(float, float, float, float, MethodInfo*);
  8147. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  8148. ip += 16;
  8149. continue;
  8150. }
  8151. case HiOpcodeEnum::CallCommonNativeStatic_f8_f8_1:
  8152. {
  8153. uint32_t __method = *(uint32_t*)(ip + 8);
  8154. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8155. uint16_t __ret = *(uint16_t*)(ip + 4);
  8156. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8157. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8158. typedef double(*_NativeMethod_)(double, MethodInfo*);
  8159. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), _resolvedMethod);
  8160. ip += 16;
  8161. continue;
  8162. }
  8163. case HiOpcodeEnum::CallCommonNativeStatic_f8_f8_2:
  8164. {
  8165. uint32_t __method = *(uint32_t*)(ip + 8);
  8166. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8167. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8168. uint16_t __ret = *(uint16_t*)(ip + 6);
  8169. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8170. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8171. typedef double(*_NativeMethod_)(double, double, MethodInfo*);
  8172. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  8173. ip += 16;
  8174. continue;
  8175. }
  8176. case HiOpcodeEnum::CallCommonNativeStatic_f8_f8_3:
  8177. {
  8178. uint32_t __method = *(uint32_t*)(ip + 12);
  8179. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8180. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8181. uint16_t __param2 = *(uint16_t*)(ip + 6);
  8182. uint16_t __ret = *(uint16_t*)(ip + 8);
  8183. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8184. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8185. typedef double(*_NativeMethod_)(double, double, double, MethodInfo*);
  8186. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  8187. ip += 16;
  8188. continue;
  8189. }
  8190. case HiOpcodeEnum::CallCommonNativeStatic_f8_f8_4:
  8191. {
  8192. uint32_t __method = *(uint32_t*)(ip + 12);
  8193. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8194. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8195. uint16_t __param2 = *(uint16_t*)(ip + 6);
  8196. uint16_t __param3 = *(uint16_t*)(ip + 8);
  8197. uint16_t __ret = *(uint16_t*)(ip + 10);
  8198. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8199. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8200. typedef double(*_NativeMethod_)(double, double, double, double, MethodInfo*);
  8201. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  8202. ip += 16;
  8203. continue;
  8204. }
  8205. //!!!}}FUNCTION
  8206. #pragma endregion
  8207. #pragma region OBJECT
  8208. //!!!{{OBJECT
  8209. case HiOpcodeEnum::BoxVarVar:
  8210. {
  8211. uint16_t __dst = *(uint16_t*)(ip + 2);
  8212. uint16_t __data = *(uint16_t*)(ip + 4);
  8213. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  8214. (*(Il2CppObject**)(localVarBase + __dst)) = il2cpp::vm::Object::Box(__klass, (void*)(localVarBase + __data));
  8215. ip += 16;
  8216. continue;
  8217. }
  8218. case HiOpcodeEnum::UnBoxVarVar:
  8219. {
  8220. uint16_t __addr = *(uint16_t*)(ip + 2);
  8221. uint16_t __obj = *(uint16_t*)(ip + 4);
  8222. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  8223. (*(void**)(localVarBase + __addr)) = HiUnbox((*(Il2CppObject**)(localVarBase + __obj)), __klass);
  8224. ip += 16;
  8225. continue;
  8226. }
  8227. case HiOpcodeEnum::UnBoxAnyVarVar:
  8228. {
  8229. uint16_t __dst = *(uint16_t*)(ip + 2);
  8230. uint16_t __obj = *(uint16_t*)(ip + 4);
  8231. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  8232. HiUnboxAny2StackObject((*(Il2CppObject**)(localVarBase + __obj)), __klass, (void*)(localVarBase + __dst));
  8233. ip += 16;
  8234. continue;
  8235. }
  8236. case HiOpcodeEnum::CastclassVar:
  8237. {
  8238. uint16_t __obj = *(uint16_t*)(ip + 2);
  8239. uint32_t __klass = *(uint32_t*)(ip + 4);
  8240. HiCastClass((*(Il2CppObject**)(localVarBase + __obj)), ((Il2CppClass*)imi->resolveDatas[__klass]));
  8241. ip += 8;
  8242. continue;
  8243. }
  8244. case HiOpcodeEnum::IsInstVar:
  8245. {
  8246. uint16_t __obj = *(uint16_t*)(ip + 2);
  8247. uint32_t __klass = *(uint32_t*)(ip + 4);
  8248. (*(Il2CppObject**)(localVarBase + __obj)) = il2cpp::vm::Object::IsInst((*(Il2CppObject**)(localVarBase + __obj)), ((Il2CppClass*)imi->resolveDatas[__klass]));
  8249. ip += 8;
  8250. continue;
  8251. }
  8252. case HiOpcodeEnum::LdtokenVar:
  8253. {
  8254. uint16_t __runtimeHandle = *(uint16_t*)(ip + 2);
  8255. void* __token = ((void*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  8256. (*(void**)(localVarBase + __runtimeHandle)) = __token;
  8257. ip += 8;
  8258. continue;
  8259. }
  8260. case HiOpcodeEnum::MakeRefVarVar:
  8261. {
  8262. uint16_t __dst = *(uint16_t*)(ip + 2);
  8263. uint16_t __data = *(uint16_t*)(ip + 4);
  8264. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  8265. (*(Il2CppTypedRef*)(localVarBase + __dst)) = MAKE_TYPEDREFERENCE(__klass, (*(void**)(localVarBase + __data)));
  8266. ip += 16;
  8267. continue;
  8268. }
  8269. case HiOpcodeEnum::RefAnyTypeVarVar:
  8270. {
  8271. uint16_t __dst = *(uint16_t*)(ip + 2);
  8272. uint16_t __typedRef = *(uint16_t*)(ip + 4);
  8273. (*(void**)(localVarBase + __dst)) = RefAnyType((*(Il2CppTypedRef*)(localVarBase + __typedRef)));
  8274. ip += 8;
  8275. continue;
  8276. }
  8277. case HiOpcodeEnum::RefAnyValueVarVar:
  8278. {
  8279. uint16_t __addr = *(uint16_t*)(ip + 2);
  8280. uint16_t __typedRef = *(uint16_t*)(ip + 4);
  8281. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  8282. (*(void**)(localVarBase + __addr)) = RefAnyValue((*(Il2CppTypedRef*)(localVarBase + __typedRef)), __klass);
  8283. ip += 16;
  8284. continue;
  8285. }
  8286. case HiOpcodeEnum::CpobjVarVar_ref:
  8287. {
  8288. uint16_t __dst = *(uint16_t*)(ip + 2);
  8289. uint16_t __src = *(uint16_t*)(ip + 4);
  8290. void** _dstAddr_ = (void**)((*(void**)(localVarBase + __dst)));
  8291. *_dstAddr_ = *(void**)(*(void**)(localVarBase + __src));
  8292. HYBRIDCLR_SET_WRITE_BARRIER(_dstAddr_);
  8293. ip += 8;
  8294. continue;
  8295. }
  8296. case HiOpcodeEnum::CpobjVarVar_1:
  8297. {
  8298. uint16_t __dst = *(uint16_t*)(ip + 2);
  8299. uint16_t __src = *(uint16_t*)(ip + 4);
  8300. Copy1((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8301. ip += 8;
  8302. continue;
  8303. }
  8304. case HiOpcodeEnum::CpobjVarVar_2:
  8305. {
  8306. uint16_t __dst = *(uint16_t*)(ip + 2);
  8307. uint16_t __src = *(uint16_t*)(ip + 4);
  8308. Copy2((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8309. ip += 8;
  8310. continue;
  8311. }
  8312. case HiOpcodeEnum::CpobjVarVar_4:
  8313. {
  8314. uint16_t __dst = *(uint16_t*)(ip + 2);
  8315. uint16_t __src = *(uint16_t*)(ip + 4);
  8316. Copy4((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8317. ip += 8;
  8318. continue;
  8319. }
  8320. case HiOpcodeEnum::CpobjVarVar_8:
  8321. {
  8322. uint16_t __dst = *(uint16_t*)(ip + 2);
  8323. uint16_t __src = *(uint16_t*)(ip + 4);
  8324. Copy8((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8325. ip += 8;
  8326. continue;
  8327. }
  8328. case HiOpcodeEnum::CpobjVarVar_12:
  8329. {
  8330. uint16_t __dst = *(uint16_t*)(ip + 2);
  8331. uint16_t __src = *(uint16_t*)(ip + 4);
  8332. Copy12((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8333. ip += 8;
  8334. continue;
  8335. }
  8336. case HiOpcodeEnum::CpobjVarVar_16:
  8337. {
  8338. uint16_t __dst = *(uint16_t*)(ip + 2);
  8339. uint16_t __src = *(uint16_t*)(ip + 4);
  8340. Copy16((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8341. ip += 8;
  8342. continue;
  8343. }
  8344. case HiOpcodeEnum::CpobjVarVar_20:
  8345. {
  8346. uint16_t __dst = *(uint16_t*)(ip + 2);
  8347. uint16_t __src = *(uint16_t*)(ip + 4);
  8348. Copy20((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8349. ip += 8;
  8350. continue;
  8351. }
  8352. case HiOpcodeEnum::CpobjVarVar_24:
  8353. {
  8354. uint16_t __dst = *(uint16_t*)(ip + 2);
  8355. uint16_t __src = *(uint16_t*)(ip + 4);
  8356. Copy24((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8357. ip += 8;
  8358. continue;
  8359. }
  8360. case HiOpcodeEnum::CpobjVarVar_28:
  8361. {
  8362. uint16_t __dst = *(uint16_t*)(ip + 2);
  8363. uint16_t __src = *(uint16_t*)(ip + 4);
  8364. Copy28((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8365. ip += 8;
  8366. continue;
  8367. }
  8368. case HiOpcodeEnum::CpobjVarVar_32:
  8369. {
  8370. uint16_t __dst = *(uint16_t*)(ip + 2);
  8371. uint16_t __src = *(uint16_t*)(ip + 4);
  8372. Copy32((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8373. ip += 8;
  8374. continue;
  8375. }
  8376. case HiOpcodeEnum::CpobjVarVar_n_2:
  8377. {
  8378. uint16_t __dst = *(uint16_t*)(ip + 2);
  8379. uint16_t __src = *(uint16_t*)(ip + 4);
  8380. uint16_t __size = *(uint16_t*)(ip + 6);
  8381. std::memmove((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)), __size);
  8382. ip += 8;
  8383. continue;
  8384. }
  8385. case HiOpcodeEnum::CpobjVarVar_n_4:
  8386. {
  8387. uint16_t __dst = *(uint16_t*)(ip + 2);
  8388. uint16_t __src = *(uint16_t*)(ip + 4);
  8389. uint32_t __size = *(uint32_t*)(ip + 8);
  8390. std::memmove((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)), __size);
  8391. ip += 16;
  8392. continue;
  8393. }
  8394. case HiOpcodeEnum::CpobjVarVar_WriteBarrier_n_2:
  8395. {
  8396. uint16_t __dst = *(uint16_t*)(ip + 2);
  8397. uint16_t __src = *(uint16_t*)(ip + 4);
  8398. uint16_t __size = *(uint16_t*)(ip + 6);
  8399. void* _dstAddr_ = (void*)((*(void**)(localVarBase + __dst)));
  8400. std::memmove(_dstAddr_, (*(void**)(localVarBase + __src)), __size);
  8401. HYBRIDCLR_SET_WRITE_BARRIER((void**)_dstAddr_, __size);
  8402. ip += 8;
  8403. continue;
  8404. }
  8405. case HiOpcodeEnum::CpobjVarVar_WriteBarrier_n_4:
  8406. {
  8407. uint16_t __dst = *(uint16_t*)(ip + 2);
  8408. uint16_t __src = *(uint16_t*)(ip + 4);
  8409. uint32_t __size = *(uint32_t*)(ip + 8);
  8410. void* _dstAddr_ = (void*)((*(void**)(localVarBase + __dst)));
  8411. std::memmove(_dstAddr_, (*(void**)(localVarBase + __src)), __size);
  8412. HYBRIDCLR_SET_WRITE_BARRIER((void**)_dstAddr_, __size);
  8413. ip += 16;
  8414. continue;
  8415. }
  8416. case HiOpcodeEnum::LdobjVarVar_ref:
  8417. {
  8418. uint16_t __dst = *(uint16_t*)(ip + 2);
  8419. uint16_t __src = *(uint16_t*)(ip + 4);
  8420. *(void**)(void*)(localVarBase + __dst) = (*(void**)*(void**)(localVarBase + __src));
  8421. ip += 8;
  8422. continue;
  8423. }
  8424. case HiOpcodeEnum::LdobjVarVar_1:
  8425. {
  8426. uint16_t __dst = *(uint16_t*)(ip + 2);
  8427. uint16_t __src = *(uint16_t*)(ip + 4);
  8428. Copy1((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8429. ip += 8;
  8430. continue;
  8431. }
  8432. case HiOpcodeEnum::LdobjVarVar_2:
  8433. {
  8434. uint16_t __dst = *(uint16_t*)(ip + 2);
  8435. uint16_t __src = *(uint16_t*)(ip + 4);
  8436. Copy2((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8437. ip += 8;
  8438. continue;
  8439. }
  8440. case HiOpcodeEnum::LdobjVarVar_4:
  8441. {
  8442. uint16_t __dst = *(uint16_t*)(ip + 2);
  8443. uint16_t __src = *(uint16_t*)(ip + 4);
  8444. Copy4((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8445. ip += 8;
  8446. continue;
  8447. }
  8448. case HiOpcodeEnum::LdobjVarVar_8:
  8449. {
  8450. uint16_t __dst = *(uint16_t*)(ip + 2);
  8451. uint16_t __src = *(uint16_t*)(ip + 4);
  8452. Copy8((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8453. ip += 8;
  8454. continue;
  8455. }
  8456. case HiOpcodeEnum::LdobjVarVar_12:
  8457. {
  8458. uint16_t __dst = *(uint16_t*)(ip + 2);
  8459. uint16_t __src = *(uint16_t*)(ip + 4);
  8460. Copy12((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8461. ip += 8;
  8462. continue;
  8463. }
  8464. case HiOpcodeEnum::LdobjVarVar_16:
  8465. {
  8466. uint16_t __dst = *(uint16_t*)(ip + 2);
  8467. uint16_t __src = *(uint16_t*)(ip + 4);
  8468. Copy16((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8469. ip += 8;
  8470. continue;
  8471. }
  8472. case HiOpcodeEnum::LdobjVarVar_20:
  8473. {
  8474. uint16_t __dst = *(uint16_t*)(ip + 2);
  8475. uint16_t __src = *(uint16_t*)(ip + 4);
  8476. Copy20((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8477. ip += 8;
  8478. continue;
  8479. }
  8480. case HiOpcodeEnum::LdobjVarVar_24:
  8481. {
  8482. uint16_t __dst = *(uint16_t*)(ip + 2);
  8483. uint16_t __src = *(uint16_t*)(ip + 4);
  8484. Copy24((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8485. ip += 8;
  8486. continue;
  8487. }
  8488. case HiOpcodeEnum::LdobjVarVar_28:
  8489. {
  8490. uint16_t __dst = *(uint16_t*)(ip + 2);
  8491. uint16_t __src = *(uint16_t*)(ip + 4);
  8492. Copy28((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8493. ip += 8;
  8494. continue;
  8495. }
  8496. case HiOpcodeEnum::LdobjVarVar_32:
  8497. {
  8498. uint16_t __dst = *(uint16_t*)(ip + 2);
  8499. uint16_t __src = *(uint16_t*)(ip + 4);
  8500. Copy32((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8501. ip += 8;
  8502. continue;
  8503. }
  8504. case HiOpcodeEnum::LdobjVarVar_n_4:
  8505. {
  8506. uint16_t __dst = *(uint16_t*)(ip + 2);
  8507. uint16_t __src = *(uint16_t*)(ip + 4);
  8508. uint32_t __size = *(uint32_t*)(ip + 8);
  8509. std::memmove((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)), __size);
  8510. ip += 16;
  8511. continue;
  8512. }
  8513. case HiOpcodeEnum::StobjVarVar_ref:
  8514. {
  8515. uint16_t __dst = *(uint16_t*)(ip + 2);
  8516. uint16_t __src = *(uint16_t*)(ip + 4);
  8517. void** _dstAddr_ = (void**)((*(void**)(localVarBase + __dst)));
  8518. *_dstAddr_ = (*(Il2CppObject**)(localVarBase + __src));
  8519. HYBRIDCLR_SET_WRITE_BARRIER(_dstAddr_);
  8520. ip += 8;
  8521. continue;
  8522. }
  8523. case HiOpcodeEnum::StobjVarVar_1:
  8524. {
  8525. uint16_t __dst = *(uint16_t*)(ip + 2);
  8526. uint16_t __src = *(uint16_t*)(ip + 4);
  8527. Copy1((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8528. ip += 8;
  8529. continue;
  8530. }
  8531. case HiOpcodeEnum::StobjVarVar_2:
  8532. {
  8533. uint16_t __dst = *(uint16_t*)(ip + 2);
  8534. uint16_t __src = *(uint16_t*)(ip + 4);
  8535. Copy2((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8536. ip += 8;
  8537. continue;
  8538. }
  8539. case HiOpcodeEnum::StobjVarVar_4:
  8540. {
  8541. uint16_t __dst = *(uint16_t*)(ip + 2);
  8542. uint16_t __src = *(uint16_t*)(ip + 4);
  8543. Copy4((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8544. ip += 8;
  8545. continue;
  8546. }
  8547. case HiOpcodeEnum::StobjVarVar_8:
  8548. {
  8549. uint16_t __dst = *(uint16_t*)(ip + 2);
  8550. uint16_t __src = *(uint16_t*)(ip + 4);
  8551. Copy8((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8552. ip += 8;
  8553. continue;
  8554. }
  8555. case HiOpcodeEnum::StobjVarVar_12:
  8556. {
  8557. uint16_t __dst = *(uint16_t*)(ip + 2);
  8558. uint16_t __src = *(uint16_t*)(ip + 4);
  8559. Copy12((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8560. ip += 8;
  8561. continue;
  8562. }
  8563. case HiOpcodeEnum::StobjVarVar_16:
  8564. {
  8565. uint16_t __dst = *(uint16_t*)(ip + 2);
  8566. uint16_t __src = *(uint16_t*)(ip + 4);
  8567. Copy16((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8568. ip += 8;
  8569. continue;
  8570. }
  8571. case HiOpcodeEnum::StobjVarVar_20:
  8572. {
  8573. uint16_t __dst = *(uint16_t*)(ip + 2);
  8574. uint16_t __src = *(uint16_t*)(ip + 4);
  8575. Copy20((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8576. ip += 8;
  8577. continue;
  8578. }
  8579. case HiOpcodeEnum::StobjVarVar_24:
  8580. {
  8581. uint16_t __dst = *(uint16_t*)(ip + 2);
  8582. uint16_t __src = *(uint16_t*)(ip + 4);
  8583. Copy24((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8584. ip += 8;
  8585. continue;
  8586. }
  8587. case HiOpcodeEnum::StobjVarVar_28:
  8588. {
  8589. uint16_t __dst = *(uint16_t*)(ip + 2);
  8590. uint16_t __src = *(uint16_t*)(ip + 4);
  8591. Copy28((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8592. ip += 8;
  8593. continue;
  8594. }
  8595. case HiOpcodeEnum::StobjVarVar_32:
  8596. {
  8597. uint16_t __dst = *(uint16_t*)(ip + 2);
  8598. uint16_t __src = *(uint16_t*)(ip + 4);
  8599. Copy32((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8600. ip += 8;
  8601. continue;
  8602. }
  8603. case HiOpcodeEnum::StobjVarVar_n_4:
  8604. {
  8605. uint16_t __dst = *(uint16_t*)(ip + 2);
  8606. uint16_t __src = *(uint16_t*)(ip + 4);
  8607. uint32_t __size = *(uint32_t*)(ip + 8);
  8608. std::memmove((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src), __size);
  8609. ip += 16;
  8610. continue;
  8611. }
  8612. case HiOpcodeEnum::StobjVarVar_WriteBarrier_n_4:
  8613. {
  8614. uint16_t __dst = *(uint16_t*)(ip + 2);
  8615. uint16_t __src = *(uint16_t*)(ip + 4);
  8616. uint32_t __size = *(uint32_t*)(ip + 8);
  8617. void* _dstAddr_ = (*(void**)(localVarBase + __dst));
  8618. std::memmove(_dstAddr_, (void*)(localVarBase + __src), __size);
  8619. HYBRIDCLR_SET_WRITE_BARRIER((void**)_dstAddr_, __size);
  8620. ip += 16;
  8621. continue;
  8622. }
  8623. case HiOpcodeEnum::InitobjVar_ref:
  8624. {
  8625. uint16_t __obj = *(uint16_t*)(ip + 2);
  8626. void* _objAddr_ = (*(void**)(localVarBase + __obj));
  8627. CHECK_NOT_NULL_THROW(_objAddr_);
  8628. *(void**)_objAddr_ = nullptr;
  8629. HYBRIDCLR_SET_WRITE_BARRIER((void**)_objAddr_);
  8630. ip += 8;
  8631. continue;
  8632. }
  8633. case HiOpcodeEnum::InitobjVar_1:
  8634. {
  8635. uint16_t __obj = *(uint16_t*)(ip + 2);
  8636. InitDefault1((*(void**)(localVarBase + __obj)));
  8637. ip += 8;
  8638. continue;
  8639. }
  8640. case HiOpcodeEnum::InitobjVar_2:
  8641. {
  8642. uint16_t __obj = *(uint16_t*)(ip + 2);
  8643. InitDefault2((*(void**)(localVarBase + __obj)));
  8644. ip += 8;
  8645. continue;
  8646. }
  8647. case HiOpcodeEnum::InitobjVar_4:
  8648. {
  8649. uint16_t __obj = *(uint16_t*)(ip + 2);
  8650. InitDefault4((*(void**)(localVarBase + __obj)));
  8651. ip += 8;
  8652. continue;
  8653. }
  8654. case HiOpcodeEnum::InitobjVar_8:
  8655. {
  8656. uint16_t __obj = *(uint16_t*)(ip + 2);
  8657. InitDefault8((*(void**)(localVarBase + __obj)));
  8658. ip += 8;
  8659. continue;
  8660. }
  8661. case HiOpcodeEnum::InitobjVar_12:
  8662. {
  8663. uint16_t __obj = *(uint16_t*)(ip + 2);
  8664. InitDefault12((*(void**)(localVarBase + __obj)));
  8665. ip += 8;
  8666. continue;
  8667. }
  8668. case HiOpcodeEnum::InitobjVar_16:
  8669. {
  8670. uint16_t __obj = *(uint16_t*)(ip + 2);
  8671. InitDefault16((*(void**)(localVarBase + __obj)));
  8672. ip += 8;
  8673. continue;
  8674. }
  8675. case HiOpcodeEnum::InitobjVar_20:
  8676. {
  8677. uint16_t __obj = *(uint16_t*)(ip + 2);
  8678. InitDefault20((*(void**)(localVarBase + __obj)));
  8679. ip += 8;
  8680. continue;
  8681. }
  8682. case HiOpcodeEnum::InitobjVar_24:
  8683. {
  8684. uint16_t __obj = *(uint16_t*)(ip + 2);
  8685. InitDefault24((*(void**)(localVarBase + __obj)));
  8686. ip += 8;
  8687. continue;
  8688. }
  8689. case HiOpcodeEnum::InitobjVar_28:
  8690. {
  8691. uint16_t __obj = *(uint16_t*)(ip + 2);
  8692. InitDefault28((*(void**)(localVarBase + __obj)));
  8693. ip += 8;
  8694. continue;
  8695. }
  8696. case HiOpcodeEnum::InitobjVar_32:
  8697. {
  8698. uint16_t __obj = *(uint16_t*)(ip + 2);
  8699. InitDefault32((*(void**)(localVarBase + __obj)));
  8700. ip += 8;
  8701. continue;
  8702. }
  8703. case HiOpcodeEnum::InitobjVar_n_2:
  8704. {
  8705. uint16_t __obj = *(uint16_t*)(ip + 2);
  8706. uint16_t __size = *(uint16_t*)(ip + 4);
  8707. InitDefaultN((*(void**)(localVarBase + __obj)), __size);
  8708. ip += 8;
  8709. continue;
  8710. }
  8711. case HiOpcodeEnum::InitobjVar_n_4:
  8712. {
  8713. uint16_t __obj = *(uint16_t*)(ip + 2);
  8714. uint32_t __size = *(uint32_t*)(ip + 4);
  8715. InitDefaultN((*(void**)(localVarBase + __obj)), __size);
  8716. ip += 8;
  8717. continue;
  8718. }
  8719. case HiOpcodeEnum::InitobjVar_WriteBarrier_n_2:
  8720. {
  8721. uint16_t __obj = *(uint16_t*)(ip + 2);
  8722. uint16_t __size = *(uint16_t*)(ip + 4);
  8723. void* _objAddr_ = (*(void**)(localVarBase + __obj));
  8724. InitDefaultN(_objAddr_, __size);
  8725. HYBRIDCLR_SET_WRITE_BARRIER((void**)_objAddr_, __size);
  8726. ip += 8;
  8727. continue;
  8728. }
  8729. case HiOpcodeEnum::InitobjVar_WriteBarrier_n_4:
  8730. {
  8731. uint16_t __obj = *(uint16_t*)(ip + 2);
  8732. uint32_t __size = *(uint32_t*)(ip + 4);
  8733. void* _objAddr_ = (*(void**)(localVarBase + __obj));
  8734. InitDefaultN(_objAddr_, __size);
  8735. HYBRIDCLR_SET_WRITE_BARRIER((void**)_objAddr_, __size);
  8736. ip += 8;
  8737. continue;
  8738. }
  8739. case HiOpcodeEnum::LdstrVar:
  8740. {
  8741. uint16_t __dst = *(uint16_t*)(ip + 2);
  8742. uint32_t __str = *(uint32_t*)(ip + 4);
  8743. (*(Il2CppString**)(localVarBase + __dst)) = ((Il2CppString*)imi->resolveDatas[__str]);
  8744. ip += 8;
  8745. continue;
  8746. }
  8747. case HiOpcodeEnum::LdfldVarVar_i1:
  8748. {
  8749. uint16_t __dst = *(uint16_t*)(ip + 2);
  8750. uint16_t __obj = *(uint16_t*)(ip + 4);
  8751. uint16_t __offset = *(uint16_t*)(ip + 6);
  8752. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8753. (*(int32_t*)(localVarBase + __dst)) = *(int8_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8754. ip += 8;
  8755. continue;
  8756. }
  8757. case HiOpcodeEnum::LdfldVarVar_u1:
  8758. {
  8759. uint16_t __dst = *(uint16_t*)(ip + 2);
  8760. uint16_t __obj = *(uint16_t*)(ip + 4);
  8761. uint16_t __offset = *(uint16_t*)(ip + 6);
  8762. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8763. (*(int32_t*)(localVarBase + __dst)) = *(uint8_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8764. ip += 8;
  8765. continue;
  8766. }
  8767. case HiOpcodeEnum::LdfldVarVar_i2:
  8768. {
  8769. uint16_t __dst = *(uint16_t*)(ip + 2);
  8770. uint16_t __obj = *(uint16_t*)(ip + 4);
  8771. uint16_t __offset = *(uint16_t*)(ip + 6);
  8772. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8773. (*(int32_t*)(localVarBase + __dst)) = *(int16_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8774. ip += 8;
  8775. continue;
  8776. }
  8777. case HiOpcodeEnum::LdfldVarVar_u2:
  8778. {
  8779. uint16_t __dst = *(uint16_t*)(ip + 2);
  8780. uint16_t __obj = *(uint16_t*)(ip + 4);
  8781. uint16_t __offset = *(uint16_t*)(ip + 6);
  8782. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8783. (*(int32_t*)(localVarBase + __dst)) = *(uint16_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8784. ip += 8;
  8785. continue;
  8786. }
  8787. case HiOpcodeEnum::LdfldVarVar_i4:
  8788. {
  8789. uint16_t __dst = *(uint16_t*)(ip + 2);
  8790. uint16_t __obj = *(uint16_t*)(ip + 4);
  8791. uint16_t __offset = *(uint16_t*)(ip + 6);
  8792. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8793. (*(int32_t*)(localVarBase + __dst)) = *(int32_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8794. ip += 8;
  8795. continue;
  8796. }
  8797. case HiOpcodeEnum::LdfldVarVar_u4:
  8798. {
  8799. uint16_t __dst = *(uint16_t*)(ip + 2);
  8800. uint16_t __obj = *(uint16_t*)(ip + 4);
  8801. uint16_t __offset = *(uint16_t*)(ip + 6);
  8802. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8803. (*(int32_t*)(localVarBase + __dst)) = *(uint32_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8804. ip += 8;
  8805. continue;
  8806. }
  8807. case HiOpcodeEnum::LdfldVarVar_i8:
  8808. {
  8809. uint16_t __dst = *(uint16_t*)(ip + 2);
  8810. uint16_t __obj = *(uint16_t*)(ip + 4);
  8811. uint16_t __offset = *(uint16_t*)(ip + 6);
  8812. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8813. (*(int64_t*)(localVarBase + __dst)) = *(int64_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8814. ip += 8;
  8815. continue;
  8816. }
  8817. case HiOpcodeEnum::LdfldVarVar_u8:
  8818. {
  8819. uint16_t __dst = *(uint16_t*)(ip + 2);
  8820. uint16_t __obj = *(uint16_t*)(ip + 4);
  8821. uint16_t __offset = *(uint16_t*)(ip + 6);
  8822. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8823. (*(int64_t*)(localVarBase + __dst)) = *(uint64_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8824. ip += 8;
  8825. continue;
  8826. }
  8827. case HiOpcodeEnum::LdfldVarVar_size_8:
  8828. {
  8829. uint16_t __dst = *(uint16_t*)(ip + 2);
  8830. uint16_t __obj = *(uint16_t*)(ip + 4);
  8831. uint16_t __offset = *(uint16_t*)(ip + 6);
  8832. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8833. Copy8((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8834. ip += 8;
  8835. continue;
  8836. }
  8837. case HiOpcodeEnum::LdfldVarVar_size_12:
  8838. {
  8839. uint16_t __dst = *(uint16_t*)(ip + 2);
  8840. uint16_t __obj = *(uint16_t*)(ip + 4);
  8841. uint16_t __offset = *(uint16_t*)(ip + 6);
  8842. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8843. Copy12((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8844. ip += 8;
  8845. continue;
  8846. }
  8847. case HiOpcodeEnum::LdfldVarVar_size_16:
  8848. {
  8849. uint16_t __dst = *(uint16_t*)(ip + 2);
  8850. uint16_t __obj = *(uint16_t*)(ip + 4);
  8851. uint16_t __offset = *(uint16_t*)(ip + 6);
  8852. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8853. Copy16((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8854. ip += 8;
  8855. continue;
  8856. }
  8857. case HiOpcodeEnum::LdfldVarVar_size_20:
  8858. {
  8859. uint16_t __dst = *(uint16_t*)(ip + 2);
  8860. uint16_t __obj = *(uint16_t*)(ip + 4);
  8861. uint16_t __offset = *(uint16_t*)(ip + 6);
  8862. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8863. Copy20((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8864. ip += 8;
  8865. continue;
  8866. }
  8867. case HiOpcodeEnum::LdfldVarVar_size_24:
  8868. {
  8869. uint16_t __dst = *(uint16_t*)(ip + 2);
  8870. uint16_t __obj = *(uint16_t*)(ip + 4);
  8871. uint16_t __offset = *(uint16_t*)(ip + 6);
  8872. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8873. Copy24((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8874. ip += 8;
  8875. continue;
  8876. }
  8877. case HiOpcodeEnum::LdfldVarVar_size_28:
  8878. {
  8879. uint16_t __dst = *(uint16_t*)(ip + 2);
  8880. uint16_t __obj = *(uint16_t*)(ip + 4);
  8881. uint16_t __offset = *(uint16_t*)(ip + 6);
  8882. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8883. Copy28((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8884. ip += 8;
  8885. continue;
  8886. }
  8887. case HiOpcodeEnum::LdfldVarVar_size_32:
  8888. {
  8889. uint16_t __dst = *(uint16_t*)(ip + 2);
  8890. uint16_t __obj = *(uint16_t*)(ip + 4);
  8891. uint16_t __offset = *(uint16_t*)(ip + 6);
  8892. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8893. Copy32((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8894. ip += 8;
  8895. continue;
  8896. }
  8897. case HiOpcodeEnum::LdfldVarVar_n_2:
  8898. {
  8899. uint16_t __dst = *(uint16_t*)(ip + 2);
  8900. uint16_t __obj = *(uint16_t*)(ip + 4);
  8901. uint16_t __offset = *(uint16_t*)(ip + 6);
  8902. uint16_t __size = *(uint16_t*)(ip + 8);
  8903. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8904. std::memmove((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, __size);
  8905. ip += 16;
  8906. continue;
  8907. }
  8908. case HiOpcodeEnum::LdfldVarVar_n_4:
  8909. {
  8910. uint16_t __dst = *(uint16_t*)(ip + 2);
  8911. uint16_t __obj = *(uint16_t*)(ip + 4);
  8912. uint16_t __offset = *(uint16_t*)(ip + 6);
  8913. uint32_t __size = *(uint32_t*)(ip + 8);
  8914. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8915. std::memmove((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, __size);
  8916. ip += 16;
  8917. continue;
  8918. }
  8919. case HiOpcodeEnum::LdfldValueTypeVarVar_i1:
  8920. {
  8921. uint16_t __dst = *(uint16_t*)(ip + 2);
  8922. uint16_t __obj = *(uint16_t*)(ip + 4);
  8923. uint16_t __offset = *(uint16_t*)(ip + 6);
  8924. (*(int32_t*)(localVarBase + __dst)) = *(int8_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8925. ip += 8;
  8926. continue;
  8927. }
  8928. case HiOpcodeEnum::LdfldValueTypeVarVar_u1:
  8929. {
  8930. uint16_t __dst = *(uint16_t*)(ip + 2);
  8931. uint16_t __obj = *(uint16_t*)(ip + 4);
  8932. uint16_t __offset = *(uint16_t*)(ip + 6);
  8933. (*(int32_t*)(localVarBase + __dst)) = *(uint8_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8934. ip += 8;
  8935. continue;
  8936. }
  8937. case HiOpcodeEnum::LdfldValueTypeVarVar_i2:
  8938. {
  8939. uint16_t __dst = *(uint16_t*)(ip + 2);
  8940. uint16_t __obj = *(uint16_t*)(ip + 4);
  8941. uint16_t __offset = *(uint16_t*)(ip + 6);
  8942. (*(int32_t*)(localVarBase + __dst)) = *(int16_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8943. ip += 8;
  8944. continue;
  8945. }
  8946. case HiOpcodeEnum::LdfldValueTypeVarVar_u2:
  8947. {
  8948. uint16_t __dst = *(uint16_t*)(ip + 2);
  8949. uint16_t __obj = *(uint16_t*)(ip + 4);
  8950. uint16_t __offset = *(uint16_t*)(ip + 6);
  8951. (*(int32_t*)(localVarBase + __dst)) = *(uint16_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8952. ip += 8;
  8953. continue;
  8954. }
  8955. case HiOpcodeEnum::LdfldValueTypeVarVar_i4:
  8956. {
  8957. uint16_t __dst = *(uint16_t*)(ip + 2);
  8958. uint16_t __obj = *(uint16_t*)(ip + 4);
  8959. uint16_t __offset = *(uint16_t*)(ip + 6);
  8960. (*(int32_t*)(localVarBase + __dst)) = *(int32_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8961. ip += 8;
  8962. continue;
  8963. }
  8964. case HiOpcodeEnum::LdfldValueTypeVarVar_u4:
  8965. {
  8966. uint16_t __dst = *(uint16_t*)(ip + 2);
  8967. uint16_t __obj = *(uint16_t*)(ip + 4);
  8968. uint16_t __offset = *(uint16_t*)(ip + 6);
  8969. (*(int32_t*)(localVarBase + __dst)) = *(uint32_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8970. ip += 8;
  8971. continue;
  8972. }
  8973. case HiOpcodeEnum::LdfldValueTypeVarVar_i8:
  8974. {
  8975. uint16_t __dst = *(uint16_t*)(ip + 2);
  8976. uint16_t __obj = *(uint16_t*)(ip + 4);
  8977. uint16_t __offset = *(uint16_t*)(ip + 6);
  8978. (*(int64_t*)(localVarBase + __dst)) = *(int64_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8979. ip += 8;
  8980. continue;
  8981. }
  8982. case HiOpcodeEnum::LdfldValueTypeVarVar_u8:
  8983. {
  8984. uint16_t __dst = *(uint16_t*)(ip + 2);
  8985. uint16_t __obj = *(uint16_t*)(ip + 4);
  8986. uint16_t __offset = *(uint16_t*)(ip + 6);
  8987. (*(int64_t*)(localVarBase + __dst)) = *(uint64_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8988. ip += 8;
  8989. continue;
  8990. }
  8991. case HiOpcodeEnum::LdfldValueTypeVarVar_size_8:
  8992. {
  8993. uint16_t __dst = *(uint16_t*)(ip + 2);
  8994. uint16_t __obj = *(uint16_t*)(ip + 4);
  8995. uint16_t __offset = *(uint16_t*)(ip + 6);
  8996. Copy8((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset);
  8997. ip += 8;
  8998. continue;
  8999. }
  9000. case HiOpcodeEnum::LdfldValueTypeVarVar_size_12:
  9001. {
  9002. uint16_t __dst = *(uint16_t*)(ip + 2);
  9003. uint16_t __obj = *(uint16_t*)(ip + 4);
  9004. uint16_t __offset = *(uint16_t*)(ip + 6);
  9005. Copy12((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset);
  9006. ip += 8;
  9007. continue;
  9008. }
  9009. case HiOpcodeEnum::LdfldValueTypeVarVar_size_16:
  9010. {
  9011. uint16_t __dst = *(uint16_t*)(ip + 2);
  9012. uint16_t __obj = *(uint16_t*)(ip + 4);
  9013. uint16_t __offset = *(uint16_t*)(ip + 6);
  9014. Copy16((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset);
  9015. ip += 8;
  9016. continue;
  9017. }
  9018. case HiOpcodeEnum::LdfldValueTypeVarVar_size_20:
  9019. {
  9020. uint16_t __dst = *(uint16_t*)(ip + 2);
  9021. uint16_t __obj = *(uint16_t*)(ip + 4);
  9022. uint16_t __offset = *(uint16_t*)(ip + 6);
  9023. Copy20((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset);
  9024. ip += 8;
  9025. continue;
  9026. }
  9027. case HiOpcodeEnum::LdfldValueTypeVarVar_size_24:
  9028. {
  9029. uint16_t __dst = *(uint16_t*)(ip + 2);
  9030. uint16_t __obj = *(uint16_t*)(ip + 4);
  9031. uint16_t __offset = *(uint16_t*)(ip + 6);
  9032. Copy24((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset);
  9033. ip += 8;
  9034. continue;
  9035. }
  9036. case HiOpcodeEnum::LdfldValueTypeVarVar_size_28:
  9037. {
  9038. uint16_t __dst = *(uint16_t*)(ip + 2);
  9039. uint16_t __obj = *(uint16_t*)(ip + 4);
  9040. uint16_t __offset = *(uint16_t*)(ip + 6);
  9041. Copy28((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset);
  9042. ip += 8;
  9043. continue;
  9044. }
  9045. case HiOpcodeEnum::LdfldValueTypeVarVar_size_32:
  9046. {
  9047. uint16_t __dst = *(uint16_t*)(ip + 2);
  9048. uint16_t __obj = *(uint16_t*)(ip + 4);
  9049. uint16_t __offset = *(uint16_t*)(ip + 6);
  9050. Copy32((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset);
  9051. ip += 8;
  9052. continue;
  9053. }
  9054. case HiOpcodeEnum::LdfldValueTypeVarVar_n_2:
  9055. {
  9056. uint16_t __dst = *(uint16_t*)(ip + 2);
  9057. uint16_t __obj = *(uint16_t*)(ip + 4);
  9058. uint16_t __offset = *(uint16_t*)(ip + 6);
  9059. uint16_t __size = *(uint16_t*)(ip + 8);
  9060. std::memmove((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset, __size);
  9061. ip += 16;
  9062. continue;
  9063. }
  9064. case HiOpcodeEnum::LdfldValueTypeVarVar_n_4:
  9065. {
  9066. uint16_t __dst = *(uint16_t*)(ip + 2);
  9067. uint16_t __obj = *(uint16_t*)(ip + 4);
  9068. uint16_t __offset = *(uint16_t*)(ip + 6);
  9069. uint32_t __size = *(uint32_t*)(ip + 8);
  9070. std::memmove((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset, __size);
  9071. ip += 16;
  9072. continue;
  9073. }
  9074. case HiOpcodeEnum::LdfldaVarVar:
  9075. {
  9076. uint16_t __dst = *(uint16_t*)(ip + 2);
  9077. uint16_t __obj = *(uint16_t*)(ip + 4);
  9078. uint16_t __offset = *(uint16_t*)(ip + 6);
  9079. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9080. (*(void**)(localVarBase + __dst)) = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9081. ip += 8;
  9082. continue;
  9083. }
  9084. case HiOpcodeEnum::StfldVarVar_i1:
  9085. {
  9086. uint16_t __obj = *(uint16_t*)(ip + 2);
  9087. uint16_t __offset = *(uint16_t*)(ip + 4);
  9088. uint16_t __data = *(uint16_t*)(ip + 6);
  9089. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9090. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9091. *(int8_t*)(_fieldAddr_) = (*(int8_t*)(localVarBase + __data));
  9092. ip += 8;
  9093. continue;
  9094. }
  9095. case HiOpcodeEnum::StfldVarVar_u1:
  9096. {
  9097. uint16_t __obj = *(uint16_t*)(ip + 2);
  9098. uint16_t __offset = *(uint16_t*)(ip + 4);
  9099. uint16_t __data = *(uint16_t*)(ip + 6);
  9100. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9101. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9102. *(uint8_t*)(_fieldAddr_) = (*(uint8_t*)(localVarBase + __data));
  9103. ip += 8;
  9104. continue;
  9105. }
  9106. case HiOpcodeEnum::StfldVarVar_i2:
  9107. {
  9108. uint16_t __obj = *(uint16_t*)(ip + 2);
  9109. uint16_t __offset = *(uint16_t*)(ip + 4);
  9110. uint16_t __data = *(uint16_t*)(ip + 6);
  9111. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9112. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9113. *(int16_t*)(_fieldAddr_) = (*(int16_t*)(localVarBase + __data));
  9114. ip += 8;
  9115. continue;
  9116. }
  9117. case HiOpcodeEnum::StfldVarVar_u2:
  9118. {
  9119. uint16_t __obj = *(uint16_t*)(ip + 2);
  9120. uint16_t __offset = *(uint16_t*)(ip + 4);
  9121. uint16_t __data = *(uint16_t*)(ip + 6);
  9122. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9123. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9124. *(uint16_t*)(_fieldAddr_) = (*(uint16_t*)(localVarBase + __data));
  9125. ip += 8;
  9126. continue;
  9127. }
  9128. case HiOpcodeEnum::StfldVarVar_i4:
  9129. {
  9130. uint16_t __obj = *(uint16_t*)(ip + 2);
  9131. uint16_t __offset = *(uint16_t*)(ip + 4);
  9132. uint16_t __data = *(uint16_t*)(ip + 6);
  9133. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9134. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9135. *(int32_t*)(_fieldAddr_) = (*(int32_t*)(localVarBase + __data));
  9136. ip += 8;
  9137. continue;
  9138. }
  9139. case HiOpcodeEnum::StfldVarVar_u4:
  9140. {
  9141. uint16_t __obj = *(uint16_t*)(ip + 2);
  9142. uint16_t __offset = *(uint16_t*)(ip + 4);
  9143. uint16_t __data = *(uint16_t*)(ip + 6);
  9144. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9145. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9146. *(uint32_t*)(_fieldAddr_) = (*(uint32_t*)(localVarBase + __data));
  9147. ip += 8;
  9148. continue;
  9149. }
  9150. case HiOpcodeEnum::StfldVarVar_i8:
  9151. {
  9152. uint16_t __obj = *(uint16_t*)(ip + 2);
  9153. uint16_t __offset = *(uint16_t*)(ip + 4);
  9154. uint16_t __data = *(uint16_t*)(ip + 6);
  9155. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9156. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9157. *(int64_t*)(_fieldAddr_) = (*(int64_t*)(localVarBase + __data));
  9158. ip += 8;
  9159. continue;
  9160. }
  9161. case HiOpcodeEnum::StfldVarVar_u8:
  9162. {
  9163. uint16_t __obj = *(uint16_t*)(ip + 2);
  9164. uint16_t __offset = *(uint16_t*)(ip + 4);
  9165. uint16_t __data = *(uint16_t*)(ip + 6);
  9166. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9167. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9168. *(uint64_t*)(_fieldAddr_) = (*(uint64_t*)(localVarBase + __data));
  9169. ip += 8;
  9170. continue;
  9171. }
  9172. case HiOpcodeEnum::StfldVarVar_ref:
  9173. {
  9174. uint16_t __obj = *(uint16_t*)(ip + 2);
  9175. uint16_t __offset = *(uint16_t*)(ip + 4);
  9176. uint16_t __data = *(uint16_t*)(ip + 6);
  9177. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9178. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9179. *(Il2CppObject**)(_fieldAddr_) = (*(Il2CppObject**)(localVarBase + __data));HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_);
  9180. ip += 8;
  9181. continue;
  9182. }
  9183. case HiOpcodeEnum::StfldVarVar_size_8:
  9184. {
  9185. uint16_t __obj = *(uint16_t*)(ip + 2);
  9186. uint16_t __offset = *(uint16_t*)(ip + 4);
  9187. uint16_t __data = *(uint16_t*)(ip + 6);
  9188. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9189. Copy8((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data));
  9190. ip += 8;
  9191. continue;
  9192. }
  9193. case HiOpcodeEnum::StfldVarVar_size_12:
  9194. {
  9195. uint16_t __obj = *(uint16_t*)(ip + 2);
  9196. uint16_t __offset = *(uint16_t*)(ip + 4);
  9197. uint16_t __data = *(uint16_t*)(ip + 6);
  9198. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9199. Copy12((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data));
  9200. ip += 8;
  9201. continue;
  9202. }
  9203. case HiOpcodeEnum::StfldVarVar_size_16:
  9204. {
  9205. uint16_t __obj = *(uint16_t*)(ip + 2);
  9206. uint16_t __offset = *(uint16_t*)(ip + 4);
  9207. uint16_t __data = *(uint16_t*)(ip + 6);
  9208. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9209. Copy16((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data));
  9210. ip += 8;
  9211. continue;
  9212. }
  9213. case HiOpcodeEnum::StfldVarVar_size_20:
  9214. {
  9215. uint16_t __obj = *(uint16_t*)(ip + 2);
  9216. uint16_t __offset = *(uint16_t*)(ip + 4);
  9217. uint16_t __data = *(uint16_t*)(ip + 6);
  9218. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9219. Copy20((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data));
  9220. ip += 8;
  9221. continue;
  9222. }
  9223. case HiOpcodeEnum::StfldVarVar_size_24:
  9224. {
  9225. uint16_t __obj = *(uint16_t*)(ip + 2);
  9226. uint16_t __offset = *(uint16_t*)(ip + 4);
  9227. uint16_t __data = *(uint16_t*)(ip + 6);
  9228. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9229. Copy24((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data));
  9230. ip += 8;
  9231. continue;
  9232. }
  9233. case HiOpcodeEnum::StfldVarVar_size_28:
  9234. {
  9235. uint16_t __obj = *(uint16_t*)(ip + 2);
  9236. uint16_t __offset = *(uint16_t*)(ip + 4);
  9237. uint16_t __data = *(uint16_t*)(ip + 6);
  9238. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9239. Copy28((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data));
  9240. ip += 8;
  9241. continue;
  9242. }
  9243. case HiOpcodeEnum::StfldVarVar_size_32:
  9244. {
  9245. uint16_t __obj = *(uint16_t*)(ip + 2);
  9246. uint16_t __offset = *(uint16_t*)(ip + 4);
  9247. uint16_t __data = *(uint16_t*)(ip + 6);
  9248. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9249. Copy32((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data));
  9250. ip += 8;
  9251. continue;
  9252. }
  9253. case HiOpcodeEnum::StfldVarVar_n_2:
  9254. {
  9255. uint16_t __obj = *(uint16_t*)(ip + 2);
  9256. uint16_t __offset = *(uint16_t*)(ip + 4);
  9257. uint16_t __data = *(uint16_t*)(ip + 6);
  9258. uint16_t __size = *(uint16_t*)(ip + 8);
  9259. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9260. std::memmove((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data), __size);
  9261. ip += 16;
  9262. continue;
  9263. }
  9264. case HiOpcodeEnum::StfldVarVar_n_4:
  9265. {
  9266. uint16_t __obj = *(uint16_t*)(ip + 2);
  9267. uint16_t __offset = *(uint16_t*)(ip + 4);
  9268. uint16_t __data = *(uint16_t*)(ip + 6);
  9269. uint32_t __size = *(uint32_t*)(ip + 8);
  9270. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9271. std::memmove((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data), __size);
  9272. ip += 16;
  9273. continue;
  9274. }
  9275. case HiOpcodeEnum::StfldVarVar_WriteBarrier_n_2:
  9276. {
  9277. uint16_t __obj = *(uint16_t*)(ip + 2);
  9278. uint16_t __offset = *(uint16_t*)(ip + 4);
  9279. uint16_t __data = *(uint16_t*)(ip + 6);
  9280. uint16_t __size = *(uint16_t*)(ip + 8);
  9281. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9282. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9283. std::memmove(_fieldAddr_, (void*)(localVarBase + __data), __size);
  9284. HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_, (size_t)__size);
  9285. ip += 16;
  9286. continue;
  9287. }
  9288. case HiOpcodeEnum::StfldVarVar_WriteBarrier_n_4:
  9289. {
  9290. uint16_t __obj = *(uint16_t*)(ip + 2);
  9291. uint16_t __offset = *(uint16_t*)(ip + 4);
  9292. uint16_t __data = *(uint16_t*)(ip + 6);
  9293. uint32_t __size = *(uint32_t*)(ip + 8);
  9294. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9295. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9296. std::memmove(_fieldAddr_, (void*)(localVarBase + __data), __size);
  9297. HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_, (size_t)__size);
  9298. ip += 16;
  9299. continue;
  9300. }
  9301. case HiOpcodeEnum::LdsfldVarVar_i1:
  9302. {
  9303. uint16_t __dst = *(uint16_t*)(ip + 2);
  9304. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9305. uint16_t __offset = *(uint16_t*)(ip + 4);
  9306. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9307. (*(int32_t*)(localVarBase + __dst)) = *(int8_t*)(((byte*)__klass->static_fields) + __offset);
  9308. ip += 16;
  9309. continue;
  9310. }
  9311. case HiOpcodeEnum::LdsfldVarVar_u1:
  9312. {
  9313. uint16_t __dst = *(uint16_t*)(ip + 2);
  9314. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9315. uint16_t __offset = *(uint16_t*)(ip + 4);
  9316. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9317. (*(int32_t*)(localVarBase + __dst)) = *(uint8_t*)(((byte*)__klass->static_fields) + __offset);
  9318. ip += 16;
  9319. continue;
  9320. }
  9321. case HiOpcodeEnum::LdsfldVarVar_i2:
  9322. {
  9323. uint16_t __dst = *(uint16_t*)(ip + 2);
  9324. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9325. uint16_t __offset = *(uint16_t*)(ip + 4);
  9326. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9327. (*(int32_t*)(localVarBase + __dst)) = *(int16_t*)(((byte*)__klass->static_fields) + __offset);
  9328. ip += 16;
  9329. continue;
  9330. }
  9331. case HiOpcodeEnum::LdsfldVarVar_u2:
  9332. {
  9333. uint16_t __dst = *(uint16_t*)(ip + 2);
  9334. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9335. uint16_t __offset = *(uint16_t*)(ip + 4);
  9336. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9337. (*(int32_t*)(localVarBase + __dst)) = *(uint16_t*)(((byte*)__klass->static_fields) + __offset);
  9338. ip += 16;
  9339. continue;
  9340. }
  9341. case HiOpcodeEnum::LdsfldVarVar_i4:
  9342. {
  9343. uint16_t __dst = *(uint16_t*)(ip + 2);
  9344. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9345. uint16_t __offset = *(uint16_t*)(ip + 4);
  9346. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9347. (*(int32_t*)(localVarBase + __dst)) = *(int32_t*)(((byte*)__klass->static_fields) + __offset);
  9348. ip += 16;
  9349. continue;
  9350. }
  9351. case HiOpcodeEnum::LdsfldVarVar_u4:
  9352. {
  9353. uint16_t __dst = *(uint16_t*)(ip + 2);
  9354. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9355. uint16_t __offset = *(uint16_t*)(ip + 4);
  9356. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9357. (*(int32_t*)(localVarBase + __dst)) = *(uint32_t*)(((byte*)__klass->static_fields) + __offset);
  9358. ip += 16;
  9359. continue;
  9360. }
  9361. case HiOpcodeEnum::LdsfldVarVar_i8:
  9362. {
  9363. uint16_t __dst = *(uint16_t*)(ip + 2);
  9364. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9365. uint16_t __offset = *(uint16_t*)(ip + 4);
  9366. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9367. (*(int64_t*)(localVarBase + __dst)) = *(int64_t*)(((byte*)__klass->static_fields) + __offset);
  9368. ip += 16;
  9369. continue;
  9370. }
  9371. case HiOpcodeEnum::LdsfldVarVar_u8:
  9372. {
  9373. uint16_t __dst = *(uint16_t*)(ip + 2);
  9374. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9375. uint16_t __offset = *(uint16_t*)(ip + 4);
  9376. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9377. (*(int64_t*)(localVarBase + __dst)) = *(uint64_t*)(((byte*)__klass->static_fields) + __offset);
  9378. ip += 16;
  9379. continue;
  9380. }
  9381. case HiOpcodeEnum::LdsfldVarVar_size_8:
  9382. {
  9383. uint16_t __dst = *(uint16_t*)(ip + 2);
  9384. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9385. uint16_t __offset = *(uint16_t*)(ip + 4);
  9386. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9387. Copy8((void*)(localVarBase + __dst), ((byte*)__klass->static_fields) + __offset);
  9388. ip += 16;
  9389. continue;
  9390. }
  9391. case HiOpcodeEnum::LdsfldVarVar_size_12:
  9392. {
  9393. uint16_t __dst = *(uint16_t*)(ip + 2);
  9394. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9395. uint16_t __offset = *(uint16_t*)(ip + 4);
  9396. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9397. Copy12((void*)(localVarBase + __dst), ((byte*)__klass->static_fields) + __offset);
  9398. ip += 16;
  9399. continue;
  9400. }
  9401. case HiOpcodeEnum::LdsfldVarVar_size_16:
  9402. {
  9403. uint16_t __dst = *(uint16_t*)(ip + 2);
  9404. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9405. uint16_t __offset = *(uint16_t*)(ip + 4);
  9406. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9407. Copy16((void*)(localVarBase + __dst), ((byte*)__klass->static_fields) + __offset);
  9408. ip += 16;
  9409. continue;
  9410. }
  9411. case HiOpcodeEnum::LdsfldVarVar_size_20:
  9412. {
  9413. uint16_t __dst = *(uint16_t*)(ip + 2);
  9414. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9415. uint16_t __offset = *(uint16_t*)(ip + 4);
  9416. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9417. Copy20((void*)(localVarBase + __dst), ((byte*)__klass->static_fields) + __offset);
  9418. ip += 16;
  9419. continue;
  9420. }
  9421. case HiOpcodeEnum::LdsfldVarVar_size_24:
  9422. {
  9423. uint16_t __dst = *(uint16_t*)(ip + 2);
  9424. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9425. uint16_t __offset = *(uint16_t*)(ip + 4);
  9426. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9427. Copy24((void*)(localVarBase + __dst), ((byte*)__klass->static_fields) + __offset);
  9428. ip += 16;
  9429. continue;
  9430. }
  9431. case HiOpcodeEnum::LdsfldVarVar_size_28:
  9432. {
  9433. uint16_t __dst = *(uint16_t*)(ip + 2);
  9434. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9435. uint16_t __offset = *(uint16_t*)(ip + 4);
  9436. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9437. Copy28((void*)(localVarBase + __dst), ((byte*)__klass->static_fields) + __offset);
  9438. ip += 16;
  9439. continue;
  9440. }
  9441. case HiOpcodeEnum::LdsfldVarVar_size_32:
  9442. {
  9443. uint16_t __dst = *(uint16_t*)(ip + 2);
  9444. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9445. uint16_t __offset = *(uint16_t*)(ip + 4);
  9446. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9447. Copy32((void*)(localVarBase + __dst), ((byte*)__klass->static_fields) + __offset);
  9448. ip += 16;
  9449. continue;
  9450. }
  9451. case HiOpcodeEnum::LdsfldVarVar_n_2:
  9452. {
  9453. uint16_t __dst = *(uint16_t*)(ip + 2);
  9454. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9455. uint16_t __offset = *(uint16_t*)(ip + 4);
  9456. uint16_t __size = *(uint16_t*)(ip + 6);
  9457. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9458. std::memmove((void*)(localVarBase + __dst), (((byte*)__klass->static_fields) + __offset), __size);
  9459. ip += 16;
  9460. continue;
  9461. }
  9462. case HiOpcodeEnum::LdsfldVarVar_n_4:
  9463. {
  9464. uint16_t __dst = *(uint16_t*)(ip + 2);
  9465. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9466. uint16_t __offset = *(uint16_t*)(ip + 4);
  9467. uint32_t __size = *(uint32_t*)(ip + 12);
  9468. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9469. std::memmove((void*)(localVarBase + __dst), (((byte*)__klass->static_fields) + __offset), __size);
  9470. ip += 16;
  9471. continue;
  9472. }
  9473. case HiOpcodeEnum::StsfldVarVar_i1:
  9474. {
  9475. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9476. uint16_t __offset = *(uint16_t*)(ip + 2);
  9477. uint16_t __data = *(uint16_t*)(ip + 4);
  9478. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9479. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9480. *(int8_t*)(_fieldAddr_) = (*(int8_t*)(localVarBase + __data));
  9481. ip += 16;
  9482. continue;
  9483. }
  9484. case HiOpcodeEnum::StsfldVarVar_u1:
  9485. {
  9486. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9487. uint16_t __offset = *(uint16_t*)(ip + 2);
  9488. uint16_t __data = *(uint16_t*)(ip + 4);
  9489. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9490. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9491. *(uint8_t*)(_fieldAddr_) = (*(uint8_t*)(localVarBase + __data));
  9492. ip += 16;
  9493. continue;
  9494. }
  9495. case HiOpcodeEnum::StsfldVarVar_i2:
  9496. {
  9497. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9498. uint16_t __offset = *(uint16_t*)(ip + 2);
  9499. uint16_t __data = *(uint16_t*)(ip + 4);
  9500. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9501. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9502. *(int16_t*)(_fieldAddr_) = (*(int16_t*)(localVarBase + __data));
  9503. ip += 16;
  9504. continue;
  9505. }
  9506. case HiOpcodeEnum::StsfldVarVar_u2:
  9507. {
  9508. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9509. uint16_t __offset = *(uint16_t*)(ip + 2);
  9510. uint16_t __data = *(uint16_t*)(ip + 4);
  9511. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9512. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9513. *(uint16_t*)(_fieldAddr_) = (*(uint16_t*)(localVarBase + __data));
  9514. ip += 16;
  9515. continue;
  9516. }
  9517. case HiOpcodeEnum::StsfldVarVar_i4:
  9518. {
  9519. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9520. uint16_t __offset = *(uint16_t*)(ip + 2);
  9521. uint16_t __data = *(uint16_t*)(ip + 4);
  9522. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9523. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9524. *(int32_t*)(_fieldAddr_) = (*(int32_t*)(localVarBase + __data));
  9525. ip += 16;
  9526. continue;
  9527. }
  9528. case HiOpcodeEnum::StsfldVarVar_u4:
  9529. {
  9530. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9531. uint16_t __offset = *(uint16_t*)(ip + 2);
  9532. uint16_t __data = *(uint16_t*)(ip + 4);
  9533. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9534. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9535. *(uint32_t*)(_fieldAddr_) = (*(uint32_t*)(localVarBase + __data));
  9536. ip += 16;
  9537. continue;
  9538. }
  9539. case HiOpcodeEnum::StsfldVarVar_i8:
  9540. {
  9541. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9542. uint16_t __offset = *(uint16_t*)(ip + 2);
  9543. uint16_t __data = *(uint16_t*)(ip + 4);
  9544. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9545. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9546. *(int64_t*)(_fieldAddr_) = (*(int64_t*)(localVarBase + __data));
  9547. ip += 16;
  9548. continue;
  9549. }
  9550. case HiOpcodeEnum::StsfldVarVar_u8:
  9551. {
  9552. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9553. uint16_t __offset = *(uint16_t*)(ip + 2);
  9554. uint16_t __data = *(uint16_t*)(ip + 4);
  9555. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9556. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9557. *(uint64_t*)(_fieldAddr_) = (*(uint64_t*)(localVarBase + __data));
  9558. ip += 16;
  9559. continue;
  9560. }
  9561. case HiOpcodeEnum::StsfldVarVar_ref:
  9562. {
  9563. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9564. uint16_t __offset = *(uint16_t*)(ip + 2);
  9565. uint16_t __data = *(uint16_t*)(ip + 4);
  9566. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9567. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9568. *(Il2CppObject**)(_fieldAddr_) = (*(Il2CppObject**)(localVarBase + __data));HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_);
  9569. ip += 16;
  9570. continue;
  9571. }
  9572. case HiOpcodeEnum::StsfldVarVar_size_8:
  9573. {
  9574. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9575. uint16_t __offset = *(uint16_t*)(ip + 2);
  9576. uint16_t __data = *(uint16_t*)(ip + 4);
  9577. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9578. Copy8(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data));
  9579. ip += 16;
  9580. continue;
  9581. }
  9582. case HiOpcodeEnum::StsfldVarVar_size_12:
  9583. {
  9584. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9585. uint16_t __offset = *(uint16_t*)(ip + 2);
  9586. uint16_t __data = *(uint16_t*)(ip + 4);
  9587. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9588. Copy12(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data));
  9589. ip += 16;
  9590. continue;
  9591. }
  9592. case HiOpcodeEnum::StsfldVarVar_size_16:
  9593. {
  9594. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9595. uint16_t __offset = *(uint16_t*)(ip + 2);
  9596. uint16_t __data = *(uint16_t*)(ip + 4);
  9597. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9598. Copy16(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data));
  9599. ip += 16;
  9600. continue;
  9601. }
  9602. case HiOpcodeEnum::StsfldVarVar_size_20:
  9603. {
  9604. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9605. uint16_t __offset = *(uint16_t*)(ip + 2);
  9606. uint16_t __data = *(uint16_t*)(ip + 4);
  9607. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9608. Copy20(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data));
  9609. ip += 16;
  9610. continue;
  9611. }
  9612. case HiOpcodeEnum::StsfldVarVar_size_24:
  9613. {
  9614. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9615. uint16_t __offset = *(uint16_t*)(ip + 2);
  9616. uint16_t __data = *(uint16_t*)(ip + 4);
  9617. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9618. Copy24(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data));
  9619. ip += 16;
  9620. continue;
  9621. }
  9622. case HiOpcodeEnum::StsfldVarVar_size_28:
  9623. {
  9624. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9625. uint16_t __offset = *(uint16_t*)(ip + 2);
  9626. uint16_t __data = *(uint16_t*)(ip + 4);
  9627. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9628. Copy28(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data));
  9629. ip += 16;
  9630. continue;
  9631. }
  9632. case HiOpcodeEnum::StsfldVarVar_size_32:
  9633. {
  9634. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9635. uint16_t __offset = *(uint16_t*)(ip + 2);
  9636. uint16_t __data = *(uint16_t*)(ip + 4);
  9637. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9638. Copy32(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data));
  9639. ip += 16;
  9640. continue;
  9641. }
  9642. case HiOpcodeEnum::StsfldVarVar_n_2:
  9643. {
  9644. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9645. uint16_t __offset = *(uint16_t*)(ip + 2);
  9646. uint16_t __data = *(uint16_t*)(ip + 4);
  9647. uint16_t __size = *(uint16_t*)(ip + 6);
  9648. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9649. std::memmove(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data), __size);
  9650. ip += 16;
  9651. continue;
  9652. }
  9653. case HiOpcodeEnum::StsfldVarVar_n_4:
  9654. {
  9655. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9656. uint16_t __offset = *(uint16_t*)(ip + 2);
  9657. uint16_t __data = *(uint16_t*)(ip + 4);
  9658. uint32_t __size = *(uint32_t*)(ip + 12);
  9659. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9660. std::memmove(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data), __size);
  9661. ip += 16;
  9662. continue;
  9663. }
  9664. case HiOpcodeEnum::StsfldVarVar_WriteBarrier_n_2:
  9665. {
  9666. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9667. uint16_t __offset = *(uint16_t*)(ip + 2);
  9668. uint16_t __data = *(uint16_t*)(ip + 4);
  9669. uint16_t __size = *(uint16_t*)(ip + 6);
  9670. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9671. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9672. std::memmove(_fieldAddr_, (void*)(localVarBase + __data), __size);
  9673. HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_, (size_t)__size);
  9674. ip += 16;
  9675. continue;
  9676. }
  9677. case HiOpcodeEnum::StsfldVarVar_WriteBarrier_n_4:
  9678. {
  9679. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9680. uint16_t __offset = *(uint16_t*)(ip + 2);
  9681. uint16_t __data = *(uint16_t*)(ip + 4);
  9682. uint32_t __size = *(uint32_t*)(ip + 12);
  9683. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9684. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9685. std::memmove(_fieldAddr_, (void*)(localVarBase + __data), __size);
  9686. HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_, (size_t)__size);
  9687. ip += 16;
  9688. continue;
  9689. }
  9690. case HiOpcodeEnum::LdsfldaVarVar:
  9691. {
  9692. uint16_t __dst = *(uint16_t*)(ip + 2);
  9693. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9694. uint16_t __offset = *(uint16_t*)(ip + 4);
  9695. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9696. (*(void**)(localVarBase + __dst)) = ((byte*)__klass->static_fields) + __offset;
  9697. ip += 16;
  9698. continue;
  9699. }
  9700. case HiOpcodeEnum::LdsfldaFromFieldDataVarVar:
  9701. {
  9702. uint16_t __dst = *(uint16_t*)(ip + 2);
  9703. void* __src = ((void*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9704. (*(void**)(localVarBase + __dst)) = __src;
  9705. ip += 8;
  9706. continue;
  9707. }
  9708. case HiOpcodeEnum::LdthreadlocalaVarVar:
  9709. {
  9710. uint16_t __dst = *(uint16_t*)(ip + 2);
  9711. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9712. int32_t __offset = *(int32_t*)(ip + 8);
  9713. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9714. (*(void**)(localVarBase + __dst)) = (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset;
  9715. ip += 16;
  9716. continue;
  9717. }
  9718. case HiOpcodeEnum::LdthreadlocalVarVar_i1:
  9719. {
  9720. uint16_t __dst = *(uint16_t*)(ip + 2);
  9721. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9722. int32_t __offset = *(int32_t*)(ip + 8);
  9723. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9724. (*(int32_t*)(localVarBase + __dst)) = *(int8_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9725. ip += 16;
  9726. continue;
  9727. }
  9728. case HiOpcodeEnum::LdthreadlocalVarVar_u1:
  9729. {
  9730. uint16_t __dst = *(uint16_t*)(ip + 2);
  9731. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9732. int32_t __offset = *(int32_t*)(ip + 8);
  9733. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9734. (*(int32_t*)(localVarBase + __dst)) = *(uint8_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9735. ip += 16;
  9736. continue;
  9737. }
  9738. case HiOpcodeEnum::LdthreadlocalVarVar_i2:
  9739. {
  9740. uint16_t __dst = *(uint16_t*)(ip + 2);
  9741. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9742. int32_t __offset = *(int32_t*)(ip + 8);
  9743. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9744. (*(int32_t*)(localVarBase + __dst)) = *(int16_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9745. ip += 16;
  9746. continue;
  9747. }
  9748. case HiOpcodeEnum::LdthreadlocalVarVar_u2:
  9749. {
  9750. uint16_t __dst = *(uint16_t*)(ip + 2);
  9751. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9752. int32_t __offset = *(int32_t*)(ip + 8);
  9753. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9754. (*(int32_t*)(localVarBase + __dst)) = *(uint16_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9755. ip += 16;
  9756. continue;
  9757. }
  9758. case HiOpcodeEnum::LdthreadlocalVarVar_i4:
  9759. {
  9760. uint16_t __dst = *(uint16_t*)(ip + 2);
  9761. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9762. int32_t __offset = *(int32_t*)(ip + 8);
  9763. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9764. (*(int32_t*)(localVarBase + __dst)) = *(int32_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9765. ip += 16;
  9766. continue;
  9767. }
  9768. case HiOpcodeEnum::LdthreadlocalVarVar_u4:
  9769. {
  9770. uint16_t __dst = *(uint16_t*)(ip + 2);
  9771. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9772. int32_t __offset = *(int32_t*)(ip + 8);
  9773. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9774. (*(int32_t*)(localVarBase + __dst)) = *(uint32_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9775. ip += 16;
  9776. continue;
  9777. }
  9778. case HiOpcodeEnum::LdthreadlocalVarVar_i8:
  9779. {
  9780. uint16_t __dst = *(uint16_t*)(ip + 2);
  9781. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9782. int32_t __offset = *(int32_t*)(ip + 8);
  9783. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9784. (*(int64_t*)(localVarBase + __dst)) = *(int64_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9785. ip += 16;
  9786. continue;
  9787. }
  9788. case HiOpcodeEnum::LdthreadlocalVarVar_u8:
  9789. {
  9790. uint16_t __dst = *(uint16_t*)(ip + 2);
  9791. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9792. int32_t __offset = *(int32_t*)(ip + 8);
  9793. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9794. (*(int64_t*)(localVarBase + __dst)) = *(uint64_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9795. ip += 16;
  9796. continue;
  9797. }
  9798. case HiOpcodeEnum::LdthreadlocalVarVar_size_8:
  9799. {
  9800. uint16_t __dst = *(uint16_t*)(ip + 2);
  9801. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9802. int32_t __offset = *(int32_t*)(ip + 8);
  9803. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9804. Copy8((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9805. ip += 16;
  9806. continue;
  9807. }
  9808. case HiOpcodeEnum::LdthreadlocalVarVar_size_12:
  9809. {
  9810. uint16_t __dst = *(uint16_t*)(ip + 2);
  9811. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9812. int32_t __offset = *(int32_t*)(ip + 8);
  9813. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9814. Copy12((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9815. ip += 16;
  9816. continue;
  9817. }
  9818. case HiOpcodeEnum::LdthreadlocalVarVar_size_16:
  9819. {
  9820. uint16_t __dst = *(uint16_t*)(ip + 2);
  9821. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9822. int32_t __offset = *(int32_t*)(ip + 8);
  9823. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9824. Copy16((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9825. ip += 16;
  9826. continue;
  9827. }
  9828. case HiOpcodeEnum::LdthreadlocalVarVar_size_20:
  9829. {
  9830. uint16_t __dst = *(uint16_t*)(ip + 2);
  9831. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9832. int32_t __offset = *(int32_t*)(ip + 8);
  9833. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9834. Copy20((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9835. ip += 16;
  9836. continue;
  9837. }
  9838. case HiOpcodeEnum::LdthreadlocalVarVar_size_24:
  9839. {
  9840. uint16_t __dst = *(uint16_t*)(ip + 2);
  9841. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9842. int32_t __offset = *(int32_t*)(ip + 8);
  9843. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9844. Copy24((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9845. ip += 16;
  9846. continue;
  9847. }
  9848. case HiOpcodeEnum::LdthreadlocalVarVar_size_28:
  9849. {
  9850. uint16_t __dst = *(uint16_t*)(ip + 2);
  9851. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9852. int32_t __offset = *(int32_t*)(ip + 8);
  9853. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9854. Copy28((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9855. ip += 16;
  9856. continue;
  9857. }
  9858. case HiOpcodeEnum::LdthreadlocalVarVar_size_32:
  9859. {
  9860. uint16_t __dst = *(uint16_t*)(ip + 2);
  9861. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9862. int32_t __offset = *(int32_t*)(ip + 8);
  9863. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9864. Copy32((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9865. ip += 16;
  9866. continue;
  9867. }
  9868. case HiOpcodeEnum::LdthreadlocalVarVar_n_2:
  9869. {
  9870. uint16_t __dst = *(uint16_t*)(ip + 2);
  9871. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9872. int32_t __offset = *(int32_t*)(ip + 12);
  9873. uint16_t __size = *(uint16_t*)(ip + 4);
  9874. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9875. std::memmove((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset, __size);
  9876. ip += 16;
  9877. continue;
  9878. }
  9879. case HiOpcodeEnum::LdthreadlocalVarVar_n_4:
  9880. {
  9881. uint16_t __dst = *(uint16_t*)(ip + 2);
  9882. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9883. int32_t __offset = *(int32_t*)(ip + 8);
  9884. uint32_t __size = *(uint32_t*)(ip + 12);
  9885. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9886. std::memmove((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset, __size);
  9887. ip += 16;
  9888. continue;
  9889. }
  9890. case HiOpcodeEnum::StthreadlocalVarVar_i1:
  9891. {
  9892. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9893. uint16_t __offset = *(uint16_t*)(ip + 2);
  9894. uint16_t __data = *(uint16_t*)(ip + 4);
  9895. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9896. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9897. *(int8_t*)_fieldAddr_ = (*(int8_t*)(localVarBase + __data));
  9898. ip += 16;
  9899. continue;
  9900. }
  9901. case HiOpcodeEnum::StthreadlocalVarVar_u1:
  9902. {
  9903. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9904. uint16_t __offset = *(uint16_t*)(ip + 2);
  9905. uint16_t __data = *(uint16_t*)(ip + 4);
  9906. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9907. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9908. *(uint8_t*)_fieldAddr_ = (*(uint8_t*)(localVarBase + __data));
  9909. ip += 16;
  9910. continue;
  9911. }
  9912. case HiOpcodeEnum::StthreadlocalVarVar_i2:
  9913. {
  9914. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9915. uint16_t __offset = *(uint16_t*)(ip + 2);
  9916. uint16_t __data = *(uint16_t*)(ip + 4);
  9917. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9918. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9919. *(int16_t*)_fieldAddr_ = (*(int16_t*)(localVarBase + __data));
  9920. ip += 16;
  9921. continue;
  9922. }
  9923. case HiOpcodeEnum::StthreadlocalVarVar_u2:
  9924. {
  9925. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9926. uint16_t __offset = *(uint16_t*)(ip + 2);
  9927. uint16_t __data = *(uint16_t*)(ip + 4);
  9928. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9929. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9930. *(uint16_t*)_fieldAddr_ = (*(uint16_t*)(localVarBase + __data));
  9931. ip += 16;
  9932. continue;
  9933. }
  9934. case HiOpcodeEnum::StthreadlocalVarVar_i4:
  9935. {
  9936. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9937. uint16_t __offset = *(uint16_t*)(ip + 2);
  9938. uint16_t __data = *(uint16_t*)(ip + 4);
  9939. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9940. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9941. *(int32_t*)_fieldAddr_ = (*(int32_t*)(localVarBase + __data));
  9942. ip += 16;
  9943. continue;
  9944. }
  9945. case HiOpcodeEnum::StthreadlocalVarVar_u4:
  9946. {
  9947. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9948. uint16_t __offset = *(uint16_t*)(ip + 2);
  9949. uint16_t __data = *(uint16_t*)(ip + 4);
  9950. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9951. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9952. *(uint32_t*)_fieldAddr_ = (*(uint32_t*)(localVarBase + __data));
  9953. ip += 16;
  9954. continue;
  9955. }
  9956. case HiOpcodeEnum::StthreadlocalVarVar_i8:
  9957. {
  9958. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9959. uint16_t __offset = *(uint16_t*)(ip + 2);
  9960. uint16_t __data = *(uint16_t*)(ip + 4);
  9961. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9962. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9963. *(int64_t*)_fieldAddr_ = (*(int64_t*)(localVarBase + __data));
  9964. ip += 16;
  9965. continue;
  9966. }
  9967. case HiOpcodeEnum::StthreadlocalVarVar_u8:
  9968. {
  9969. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9970. uint16_t __offset = *(uint16_t*)(ip + 2);
  9971. uint16_t __data = *(uint16_t*)(ip + 4);
  9972. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9973. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9974. *(uint64_t*)_fieldAddr_ = (*(uint64_t*)(localVarBase + __data));
  9975. ip += 16;
  9976. continue;
  9977. }
  9978. case HiOpcodeEnum::StthreadlocalVarVar_ref:
  9979. {
  9980. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9981. uint16_t __offset = *(uint16_t*)(ip + 2);
  9982. uint16_t __data = *(uint16_t*)(ip + 4);
  9983. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9984. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9985. *(Il2CppObject**)_fieldAddr_ = (*(Il2CppObject**)(localVarBase + __data));HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_);
  9986. ip += 16;
  9987. continue;
  9988. }
  9989. case HiOpcodeEnum::StthreadlocalVarVar_size_8:
  9990. {
  9991. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9992. uint16_t __offset = *(uint16_t*)(ip + 2);
  9993. uint16_t __data = *(uint16_t*)(ip + 4);
  9994. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9995. Copy8((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset)) + __offset, (void*)(localVarBase + __data));
  9996. ip += 16;
  9997. continue;
  9998. }
  9999. case HiOpcodeEnum::StthreadlocalVarVar_size_12:
  10000. {
  10001. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10002. uint16_t __offset = *(uint16_t*)(ip + 2);
  10003. uint16_t __data = *(uint16_t*)(ip + 4);
  10004. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10005. Copy12((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset)) + __offset, (void*)(localVarBase + __data));
  10006. ip += 16;
  10007. continue;
  10008. }
  10009. case HiOpcodeEnum::StthreadlocalVarVar_size_16:
  10010. {
  10011. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10012. uint16_t __offset = *(uint16_t*)(ip + 2);
  10013. uint16_t __data = *(uint16_t*)(ip + 4);
  10014. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10015. Copy16((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset)) + __offset, (void*)(localVarBase + __data));
  10016. ip += 16;
  10017. continue;
  10018. }
  10019. case HiOpcodeEnum::StthreadlocalVarVar_size_20:
  10020. {
  10021. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10022. uint16_t __offset = *(uint16_t*)(ip + 2);
  10023. uint16_t __data = *(uint16_t*)(ip + 4);
  10024. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10025. Copy20((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset)) + __offset, (void*)(localVarBase + __data));
  10026. ip += 16;
  10027. continue;
  10028. }
  10029. case HiOpcodeEnum::StthreadlocalVarVar_size_24:
  10030. {
  10031. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10032. uint16_t __offset = *(uint16_t*)(ip + 2);
  10033. uint16_t __data = *(uint16_t*)(ip + 4);
  10034. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10035. Copy24((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset)) + __offset, (void*)(localVarBase + __data));
  10036. ip += 16;
  10037. continue;
  10038. }
  10039. case HiOpcodeEnum::StthreadlocalVarVar_size_28:
  10040. {
  10041. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10042. uint16_t __offset = *(uint16_t*)(ip + 2);
  10043. uint16_t __data = *(uint16_t*)(ip + 4);
  10044. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10045. Copy28((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset)) + __offset, (void*)(localVarBase + __data));
  10046. ip += 16;
  10047. continue;
  10048. }
  10049. case HiOpcodeEnum::StthreadlocalVarVar_size_32:
  10050. {
  10051. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10052. uint16_t __offset = *(uint16_t*)(ip + 2);
  10053. uint16_t __data = *(uint16_t*)(ip + 4);
  10054. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10055. Copy32((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset)) + __offset, (void*)(localVarBase + __data));
  10056. ip += 16;
  10057. continue;
  10058. }
  10059. case HiOpcodeEnum::StthreadlocalVarVar_n_2:
  10060. {
  10061. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10062. uint16_t __offset = *(uint16_t*)(ip + 2);
  10063. uint16_t __data = *(uint16_t*)(ip + 4);
  10064. uint16_t __size = *(uint16_t*)(ip + 6);
  10065. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10066. std::memmove((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset, (void*)(localVarBase + __data), __size);
  10067. ip += 16;
  10068. continue;
  10069. }
  10070. case HiOpcodeEnum::StthreadlocalVarVar_n_4:
  10071. {
  10072. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10073. uint16_t __offset = *(uint16_t*)(ip + 2);
  10074. uint16_t __data = *(uint16_t*)(ip + 4);
  10075. uint32_t __size = *(uint32_t*)(ip + 12);
  10076. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10077. std::memmove((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset, (void*)(localVarBase + __data), __size);
  10078. ip += 16;
  10079. continue;
  10080. }
  10081. case HiOpcodeEnum::StthreadlocalVarVar_WriteBarrier_n_2:
  10082. {
  10083. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10084. uint16_t __offset = *(uint16_t*)(ip + 2);
  10085. uint16_t __data = *(uint16_t*)(ip + 4);
  10086. uint16_t __size = *(uint16_t*)(ip + 6);
  10087. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10088. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  10089. std::memmove(_fieldAddr_, (void*)(localVarBase + __data), __size);
  10090. HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_, (size_t)__size);
  10091. ip += 16;
  10092. continue;
  10093. }
  10094. case HiOpcodeEnum::StthreadlocalVarVar_WriteBarrier_n_4:
  10095. {
  10096. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10097. uint16_t __offset = *(uint16_t*)(ip + 2);
  10098. uint16_t __data = *(uint16_t*)(ip + 4);
  10099. uint32_t __size = *(uint32_t*)(ip + 12);
  10100. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10101. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  10102. std::memmove(_fieldAddr_, (void*)(localVarBase + __data), __size);
  10103. HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_, (size_t)__size);
  10104. ip += 16;
  10105. continue;
  10106. }
  10107. case HiOpcodeEnum::CheckThrowIfNullVar:
  10108. {
  10109. uint16_t __obj = *(uint16_t*)(ip + 2);
  10110. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  10111. ip += 8;
  10112. continue;
  10113. }
  10114. case HiOpcodeEnum::InitClassStaticCtor:
  10115. {
  10116. uint64_t __klass = *(uint64_t*)(ip + 8);
  10117. RuntimeInitClassCCtorWithoutInitClass((Il2CppClass*)(__klass));
  10118. ip += 16;
  10119. continue;
  10120. }
  10121. //!!!}}OBJECT
  10122. #pragma endregion
  10123. #pragma region ARRAY
  10124. //!!!{{ARRAY
  10125. case HiOpcodeEnum::NewArrVarVar:
  10126. {
  10127. uint16_t __arr = *(uint16_t*)(ip + 2);
  10128. uint16_t __size = *(uint16_t*)(ip + 4);
  10129. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10130. (*(Il2CppArray**)(localVarBase + __arr)) = il2cpp::vm::Array::NewSpecific(__klass, (*(int32_t*)(localVarBase + __size)));
  10131. ip += 16;
  10132. continue;
  10133. }
  10134. case HiOpcodeEnum::GetArrayLengthVarVar:
  10135. {
  10136. uint16_t __len = *(uint16_t*)(ip + 2);
  10137. uint16_t __arr = *(uint16_t*)(ip + 4);
  10138. CHECK_NOT_NULL_THROW((*(Il2CppArray**)(localVarBase + __arr)));
  10139. (*(int64_t*)(localVarBase + __len)) = (int64_t)il2cpp::vm::Array::GetLength((*(Il2CppArray**)(localVarBase + __arr)));
  10140. ip += 8;
  10141. continue;
  10142. }
  10143. case HiOpcodeEnum::GetArrayElementAddressAddrVarVar:
  10144. {
  10145. uint16_t __addr = *(uint16_t*)(ip + 2);
  10146. uint16_t __arr = *(uint16_t*)(ip + 4);
  10147. uint16_t __index = *(uint16_t*)(ip + 6);
  10148. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10149. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10150. (*(void**)(localVarBase + __addr)) = GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), il2cpp::vm::Array::GetElementSize(arr->klass));
  10151. ip += 8;
  10152. continue;
  10153. }
  10154. case HiOpcodeEnum::GetArrayElementAddressCheckAddrVarVar:
  10155. {
  10156. uint16_t __addr = *(uint16_t*)(ip + 2);
  10157. uint16_t __arr = *(uint16_t*)(ip + 4);
  10158. uint16_t __index = *(uint16_t*)(ip + 6);
  10159. Il2CppClass* __eleKlass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10160. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10161. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10162. CheckArrayElementTypeMatch(arr->klass, __eleKlass);
  10163. (*(void**)(localVarBase + __addr)) = GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), il2cpp::vm::Array::GetElementSize(arr->klass));
  10164. ip += 16;
  10165. continue;
  10166. }
  10167. case HiOpcodeEnum::GetArrayElementVarVar_i1:
  10168. {
  10169. uint16_t __dst = *(uint16_t*)(ip + 2);
  10170. uint16_t __arr = *(uint16_t*)(ip + 4);
  10171. uint16_t __index = *(uint16_t*)(ip + 6);
  10172. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10173. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10174. (*(int32_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, int8_t, (*(int32_t*)(localVarBase + __index)));
  10175. ip += 8;
  10176. continue;
  10177. }
  10178. case HiOpcodeEnum::GetArrayElementVarVar_u1:
  10179. {
  10180. uint16_t __dst = *(uint16_t*)(ip + 2);
  10181. uint16_t __arr = *(uint16_t*)(ip + 4);
  10182. uint16_t __index = *(uint16_t*)(ip + 6);
  10183. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10184. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10185. (*(int32_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, uint8_t, (*(int32_t*)(localVarBase + __index)));
  10186. ip += 8;
  10187. continue;
  10188. }
  10189. case HiOpcodeEnum::GetArrayElementVarVar_i2:
  10190. {
  10191. uint16_t __dst = *(uint16_t*)(ip + 2);
  10192. uint16_t __arr = *(uint16_t*)(ip + 4);
  10193. uint16_t __index = *(uint16_t*)(ip + 6);
  10194. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10195. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10196. (*(int32_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, int16_t, (*(int32_t*)(localVarBase + __index)));
  10197. ip += 8;
  10198. continue;
  10199. }
  10200. case HiOpcodeEnum::GetArrayElementVarVar_u2:
  10201. {
  10202. uint16_t __dst = *(uint16_t*)(ip + 2);
  10203. uint16_t __arr = *(uint16_t*)(ip + 4);
  10204. uint16_t __index = *(uint16_t*)(ip + 6);
  10205. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10206. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10207. (*(int32_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, uint16_t, (*(int32_t*)(localVarBase + __index)));
  10208. ip += 8;
  10209. continue;
  10210. }
  10211. case HiOpcodeEnum::GetArrayElementVarVar_i4:
  10212. {
  10213. uint16_t __dst = *(uint16_t*)(ip + 2);
  10214. uint16_t __arr = *(uint16_t*)(ip + 4);
  10215. uint16_t __index = *(uint16_t*)(ip + 6);
  10216. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10217. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10218. (*(int32_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, int32_t, (*(int32_t*)(localVarBase + __index)));
  10219. ip += 8;
  10220. continue;
  10221. }
  10222. case HiOpcodeEnum::GetArrayElementVarVar_u4:
  10223. {
  10224. uint16_t __dst = *(uint16_t*)(ip + 2);
  10225. uint16_t __arr = *(uint16_t*)(ip + 4);
  10226. uint16_t __index = *(uint16_t*)(ip + 6);
  10227. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10228. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10229. (*(int32_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, uint32_t, (*(int32_t*)(localVarBase + __index)));
  10230. ip += 8;
  10231. continue;
  10232. }
  10233. case HiOpcodeEnum::GetArrayElementVarVar_i8:
  10234. {
  10235. uint16_t __dst = *(uint16_t*)(ip + 2);
  10236. uint16_t __arr = *(uint16_t*)(ip + 4);
  10237. uint16_t __index = *(uint16_t*)(ip + 6);
  10238. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10239. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10240. (*(int64_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, int64_t, (*(int32_t*)(localVarBase + __index)));
  10241. ip += 8;
  10242. continue;
  10243. }
  10244. case HiOpcodeEnum::GetArrayElementVarVar_u8:
  10245. {
  10246. uint16_t __dst = *(uint16_t*)(ip + 2);
  10247. uint16_t __arr = *(uint16_t*)(ip + 4);
  10248. uint16_t __index = *(uint16_t*)(ip + 6);
  10249. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10250. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10251. (*(int64_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, uint64_t, (*(int32_t*)(localVarBase + __index)));
  10252. ip += 8;
  10253. continue;
  10254. }
  10255. case HiOpcodeEnum::GetArrayElementVarVar_size_1:
  10256. {
  10257. uint16_t __dst = *(uint16_t*)(ip + 2);
  10258. uint16_t __arr = *(uint16_t*)(ip + 4);
  10259. uint16_t __index = *(uint16_t*)(ip + 6);
  10260. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10261. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10262. Copy1((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 1));
  10263. ip += 8;
  10264. continue;
  10265. }
  10266. case HiOpcodeEnum::GetArrayElementVarVar_size_2:
  10267. {
  10268. uint16_t __dst = *(uint16_t*)(ip + 2);
  10269. uint16_t __arr = *(uint16_t*)(ip + 4);
  10270. uint16_t __index = *(uint16_t*)(ip + 6);
  10271. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10272. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10273. Copy2((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 2));
  10274. ip += 8;
  10275. continue;
  10276. }
  10277. case HiOpcodeEnum::GetArrayElementVarVar_size_4:
  10278. {
  10279. uint16_t __dst = *(uint16_t*)(ip + 2);
  10280. uint16_t __arr = *(uint16_t*)(ip + 4);
  10281. uint16_t __index = *(uint16_t*)(ip + 6);
  10282. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10283. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10284. Copy4((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 4));
  10285. ip += 8;
  10286. continue;
  10287. }
  10288. case HiOpcodeEnum::GetArrayElementVarVar_size_8:
  10289. {
  10290. uint16_t __dst = *(uint16_t*)(ip + 2);
  10291. uint16_t __arr = *(uint16_t*)(ip + 4);
  10292. uint16_t __index = *(uint16_t*)(ip + 6);
  10293. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10294. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10295. Copy8((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 8));
  10296. ip += 8;
  10297. continue;
  10298. }
  10299. case HiOpcodeEnum::GetArrayElementVarVar_size_12:
  10300. {
  10301. uint16_t __dst = *(uint16_t*)(ip + 2);
  10302. uint16_t __arr = *(uint16_t*)(ip + 4);
  10303. uint16_t __index = *(uint16_t*)(ip + 6);
  10304. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10305. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10306. Copy12((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 12));
  10307. ip += 8;
  10308. continue;
  10309. }
  10310. case HiOpcodeEnum::GetArrayElementVarVar_size_16:
  10311. {
  10312. uint16_t __dst = *(uint16_t*)(ip + 2);
  10313. uint16_t __arr = *(uint16_t*)(ip + 4);
  10314. uint16_t __index = *(uint16_t*)(ip + 6);
  10315. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10316. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10317. Copy16((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 16));
  10318. ip += 8;
  10319. continue;
  10320. }
  10321. case HiOpcodeEnum::GetArrayElementVarVar_size_20:
  10322. {
  10323. uint16_t __dst = *(uint16_t*)(ip + 2);
  10324. uint16_t __arr = *(uint16_t*)(ip + 4);
  10325. uint16_t __index = *(uint16_t*)(ip + 6);
  10326. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10327. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10328. Copy20((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 20));
  10329. ip += 8;
  10330. continue;
  10331. }
  10332. case HiOpcodeEnum::GetArrayElementVarVar_size_24:
  10333. {
  10334. uint16_t __dst = *(uint16_t*)(ip + 2);
  10335. uint16_t __arr = *(uint16_t*)(ip + 4);
  10336. uint16_t __index = *(uint16_t*)(ip + 6);
  10337. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10338. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10339. Copy24((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 24));
  10340. ip += 8;
  10341. continue;
  10342. }
  10343. case HiOpcodeEnum::GetArrayElementVarVar_size_28:
  10344. {
  10345. uint16_t __dst = *(uint16_t*)(ip + 2);
  10346. uint16_t __arr = *(uint16_t*)(ip + 4);
  10347. uint16_t __index = *(uint16_t*)(ip + 6);
  10348. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10349. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10350. Copy28((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 28));
  10351. ip += 8;
  10352. continue;
  10353. }
  10354. case HiOpcodeEnum::GetArrayElementVarVar_size_32:
  10355. {
  10356. uint16_t __dst = *(uint16_t*)(ip + 2);
  10357. uint16_t __arr = *(uint16_t*)(ip + 4);
  10358. uint16_t __index = *(uint16_t*)(ip + 6);
  10359. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10360. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10361. Copy32((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 32));
  10362. ip += 8;
  10363. continue;
  10364. }
  10365. case HiOpcodeEnum::GetArrayElementVarVar_n:
  10366. {
  10367. uint16_t __dst = *(uint16_t*)(ip + 2);
  10368. uint16_t __arr = *(uint16_t*)(ip + 4);
  10369. uint16_t __index = *(uint16_t*)(ip + 6);
  10370. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10371. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10372. int32_t eleSize = il2cpp::vm::Array::GetElementSize(arr->klass);
  10373. std::memmove((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), eleSize), eleSize);
  10374. ip += 8;
  10375. continue;
  10376. }
  10377. case HiOpcodeEnum::SetArrayElementVarVar_i1:
  10378. {
  10379. uint16_t __arr = *(uint16_t*)(ip + 2);
  10380. uint16_t __index = *(uint16_t*)(ip + 4);
  10381. uint16_t __ele = *(uint16_t*)(ip + 6);
  10382. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10383. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10384. il2cpp_array_set((*(Il2CppArray**)(localVarBase + __arr)), int8_t, (*(int32_t*)(localVarBase + __index)), (*(int8_t*)(localVarBase + __ele)));
  10385. ip += 8;
  10386. continue;
  10387. }
  10388. case HiOpcodeEnum::SetArrayElementVarVar_u1:
  10389. {
  10390. uint16_t __arr = *(uint16_t*)(ip + 2);
  10391. uint16_t __index = *(uint16_t*)(ip + 4);
  10392. uint16_t __ele = *(uint16_t*)(ip + 6);
  10393. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10394. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10395. il2cpp_array_set((*(Il2CppArray**)(localVarBase + __arr)), uint8_t, (*(int32_t*)(localVarBase + __index)), (*(uint8_t*)(localVarBase + __ele)));
  10396. ip += 8;
  10397. continue;
  10398. }
  10399. case HiOpcodeEnum::SetArrayElementVarVar_i2:
  10400. {
  10401. uint16_t __arr = *(uint16_t*)(ip + 2);
  10402. uint16_t __index = *(uint16_t*)(ip + 4);
  10403. uint16_t __ele = *(uint16_t*)(ip + 6);
  10404. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10405. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10406. il2cpp_array_set((*(Il2CppArray**)(localVarBase + __arr)), int16_t, (*(int32_t*)(localVarBase + __index)), (*(int16_t*)(localVarBase + __ele)));
  10407. ip += 8;
  10408. continue;
  10409. }
  10410. case HiOpcodeEnum::SetArrayElementVarVar_u2:
  10411. {
  10412. uint16_t __arr = *(uint16_t*)(ip + 2);
  10413. uint16_t __index = *(uint16_t*)(ip + 4);
  10414. uint16_t __ele = *(uint16_t*)(ip + 6);
  10415. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10416. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10417. il2cpp_array_set((*(Il2CppArray**)(localVarBase + __arr)), uint16_t, (*(int32_t*)(localVarBase + __index)), (*(uint16_t*)(localVarBase + __ele)));
  10418. ip += 8;
  10419. continue;
  10420. }
  10421. case HiOpcodeEnum::SetArrayElementVarVar_i4:
  10422. {
  10423. uint16_t __arr = *(uint16_t*)(ip + 2);
  10424. uint16_t __index = *(uint16_t*)(ip + 4);
  10425. uint16_t __ele = *(uint16_t*)(ip + 6);
  10426. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10427. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10428. il2cpp_array_set((*(Il2CppArray**)(localVarBase + __arr)), int32_t, (*(int32_t*)(localVarBase + __index)), (*(int32_t*)(localVarBase + __ele)));
  10429. ip += 8;
  10430. continue;
  10431. }
  10432. case HiOpcodeEnum::SetArrayElementVarVar_u4:
  10433. {
  10434. uint16_t __arr = *(uint16_t*)(ip + 2);
  10435. uint16_t __index = *(uint16_t*)(ip + 4);
  10436. uint16_t __ele = *(uint16_t*)(ip + 6);
  10437. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10438. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10439. il2cpp_array_set((*(Il2CppArray**)(localVarBase + __arr)), uint32_t, (*(int32_t*)(localVarBase + __index)), (*(uint32_t*)(localVarBase + __ele)));
  10440. ip += 8;
  10441. continue;
  10442. }
  10443. case HiOpcodeEnum::SetArrayElementVarVar_i8:
  10444. {
  10445. uint16_t __arr = *(uint16_t*)(ip + 2);
  10446. uint16_t __index = *(uint16_t*)(ip + 4);
  10447. uint16_t __ele = *(uint16_t*)(ip + 6);
  10448. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10449. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10450. il2cpp_array_set((*(Il2CppArray**)(localVarBase + __arr)), int64_t, (*(int32_t*)(localVarBase + __index)), (*(int64_t*)(localVarBase + __ele)));
  10451. ip += 8;
  10452. continue;
  10453. }
  10454. case HiOpcodeEnum::SetArrayElementVarVar_u8:
  10455. {
  10456. uint16_t __arr = *(uint16_t*)(ip + 2);
  10457. uint16_t __index = *(uint16_t*)(ip + 4);
  10458. uint16_t __ele = *(uint16_t*)(ip + 6);
  10459. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10460. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10461. il2cpp_array_set((*(Il2CppArray**)(localVarBase + __arr)), uint64_t, (*(int32_t*)(localVarBase + __index)), (*(uint64_t*)(localVarBase + __ele)));
  10462. ip += 8;
  10463. continue;
  10464. }
  10465. case HiOpcodeEnum::SetArrayElementVarVar_ref:
  10466. {
  10467. uint16_t __arr = *(uint16_t*)(ip + 2);
  10468. uint16_t __index = *(uint16_t*)(ip + 4);
  10469. uint16_t __ele = *(uint16_t*)(ip + 6);
  10470. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10471. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10472. CheckArrayElementTypeCompatible((*(Il2CppArray**)(localVarBase + __arr)), (*(Il2CppObject**)(localVarBase + __ele)));
  10473. il2cpp_array_setref((*(Il2CppArray**)(localVarBase + __arr)), (*(int32_t*)(localVarBase + __index)), (*(Il2CppObject**)(localVarBase + __ele)));
  10474. ip += 8;
  10475. continue;
  10476. }
  10477. case HiOpcodeEnum::SetArrayElementVarVar_size_12:
  10478. {
  10479. uint16_t __arr = *(uint16_t*)(ip + 2);
  10480. uint16_t __index = *(uint16_t*)(ip + 4);
  10481. uint16_t __ele = *(uint16_t*)(ip + 6);
  10482. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10483. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10484. Copy12(GET_ARRAY_ELEMENT_ADDRESS(_arr, (*(int32_t*)(localVarBase + __index)), 12), (void*)(localVarBase + __ele));
  10485. ip += 8;
  10486. continue;
  10487. }
  10488. case HiOpcodeEnum::SetArrayElementVarVar_size_16:
  10489. {
  10490. uint16_t __arr = *(uint16_t*)(ip + 2);
  10491. uint16_t __index = *(uint16_t*)(ip + 4);
  10492. uint16_t __ele = *(uint16_t*)(ip + 6);
  10493. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10494. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10495. Copy16(GET_ARRAY_ELEMENT_ADDRESS(_arr, (*(int32_t*)(localVarBase + __index)), 16), (void*)(localVarBase + __ele));
  10496. ip += 8;
  10497. continue;
  10498. }
  10499. case HiOpcodeEnum::SetArrayElementVarVar_n:
  10500. {
  10501. uint16_t __arr = *(uint16_t*)(ip + 2);
  10502. uint16_t __index = *(uint16_t*)(ip + 4);
  10503. uint16_t __ele = *(uint16_t*)(ip + 6);
  10504. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10505. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10506. int32_t _eleSize = il2cpp::vm::Array::GetElementSize(_arr->klass);
  10507. SetArrayElementWithSize(_arr, _eleSize, (*(int32_t*)(localVarBase + __index)), (void*)(localVarBase + __ele));
  10508. ip += 8;
  10509. continue;
  10510. }
  10511. case HiOpcodeEnum::SetArrayElementVarVar_WriteBarrier_n:
  10512. {
  10513. uint16_t __arr = *(uint16_t*)(ip + 2);
  10514. uint16_t __index = *(uint16_t*)(ip + 4);
  10515. uint16_t __ele = *(uint16_t*)(ip + 6);
  10516. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10517. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10518. int32_t _eleSize = il2cpp::vm::Array::GetElementSize(_arr->klass);
  10519. il2cpp_array_setrefwithsize(_arr, _eleSize, (*(int32_t*)(localVarBase + __index)), (void*)(localVarBase + __ele));
  10520. ip += 8;
  10521. continue;
  10522. }
  10523. case HiOpcodeEnum::NewMdArrVarVar_length:
  10524. {
  10525. uint16_t __arr = *(uint16_t*)(ip + 2);
  10526. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10527. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10528. (*(Il2CppArray**)(localVarBase + __arr)) = NewMdArray(__klass, (StackObject*)(void*)(localVarBase + __lengthIdxs), nullptr);
  10529. ip += 16;
  10530. continue;
  10531. }
  10532. case HiOpcodeEnum::NewMdArrVarVar_length_bound:
  10533. {
  10534. uint16_t __arr = *(uint16_t*)(ip + 2);
  10535. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10536. uint16_t __lowerBoundIdxs = *(uint16_t*)(ip + 6);
  10537. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10538. (*(Il2CppArray**)(localVarBase + __arr)) = NewMdArray(__klass, (StackObject*)(void*)(localVarBase + __lengthIdxs), (StackObject*)(void*)(localVarBase + __lowerBoundIdxs));
  10539. ip += 16;
  10540. continue;
  10541. }
  10542. case HiOpcodeEnum::GetMdArrElementVarVar_i1:
  10543. {
  10544. uint16_t __arr = *(uint16_t*)(ip + 2);
  10545. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10546. uint16_t __value = *(uint16_t*)(ip + 6);
  10547. GetMdArrayElementExpandToStack<int8_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10548. ip += 8;
  10549. continue;
  10550. }
  10551. case HiOpcodeEnum::GetMdArrElementVarVar_u1:
  10552. {
  10553. uint16_t __arr = *(uint16_t*)(ip + 2);
  10554. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10555. uint16_t __value = *(uint16_t*)(ip + 6);
  10556. GetMdArrayElementExpandToStack<uint8_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10557. ip += 8;
  10558. continue;
  10559. }
  10560. case HiOpcodeEnum::GetMdArrElementVarVar_i2:
  10561. {
  10562. uint16_t __arr = *(uint16_t*)(ip + 2);
  10563. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10564. uint16_t __value = *(uint16_t*)(ip + 6);
  10565. GetMdArrayElementExpandToStack<int16_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10566. ip += 8;
  10567. continue;
  10568. }
  10569. case HiOpcodeEnum::GetMdArrElementVarVar_u2:
  10570. {
  10571. uint16_t __arr = *(uint16_t*)(ip + 2);
  10572. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10573. uint16_t __value = *(uint16_t*)(ip + 6);
  10574. GetMdArrayElementExpandToStack<uint16_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10575. ip += 8;
  10576. continue;
  10577. }
  10578. case HiOpcodeEnum::GetMdArrElementVarVar_i4:
  10579. {
  10580. uint16_t __arr = *(uint16_t*)(ip + 2);
  10581. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10582. uint16_t __value = *(uint16_t*)(ip + 6);
  10583. GetMdArrayElementCopyToStack<int32_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10584. ip += 8;
  10585. continue;
  10586. }
  10587. case HiOpcodeEnum::GetMdArrElementVarVar_u4:
  10588. {
  10589. uint16_t __arr = *(uint16_t*)(ip + 2);
  10590. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10591. uint16_t __value = *(uint16_t*)(ip + 6);
  10592. GetMdArrayElementCopyToStack<uint32_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10593. ip += 8;
  10594. continue;
  10595. }
  10596. case HiOpcodeEnum::GetMdArrElementVarVar_i8:
  10597. {
  10598. uint16_t __arr = *(uint16_t*)(ip + 2);
  10599. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10600. uint16_t __value = *(uint16_t*)(ip + 6);
  10601. GetMdArrayElementCopyToStack<int64_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10602. ip += 8;
  10603. continue;
  10604. }
  10605. case HiOpcodeEnum::GetMdArrElementVarVar_u8:
  10606. {
  10607. uint16_t __arr = *(uint16_t*)(ip + 2);
  10608. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10609. uint16_t __value = *(uint16_t*)(ip + 6);
  10610. GetMdArrayElementCopyToStack<uint64_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10611. ip += 8;
  10612. continue;
  10613. }
  10614. case HiOpcodeEnum::GetMdArrElementVarVar_n:
  10615. {
  10616. uint16_t __arr = *(uint16_t*)(ip + 2);
  10617. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10618. uint16_t __value = *(uint16_t*)(ip + 6);
  10619. GetMdArrayElementBySize((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10620. ip += 8;
  10621. continue;
  10622. }
  10623. case HiOpcodeEnum::GetMdArrElementAddressVarVar:
  10624. {
  10625. uint16_t __addr = *(uint16_t*)(ip + 2);
  10626. uint16_t __arr = *(uint16_t*)(ip + 4);
  10627. uint16_t __lengthIdxs = *(uint16_t*)(ip + 6);
  10628. (*(void**)(localVarBase + __addr)) = GetMdArrayElementAddress((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10629. ip += 8;
  10630. continue;
  10631. }
  10632. case HiOpcodeEnum::SetMdArrElementVarVar_i1:
  10633. {
  10634. uint16_t __arr = *(uint16_t*)(ip + 2);
  10635. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10636. uint16_t __ele = *(uint16_t*)(ip + 6);
  10637. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10638. void* _addr = GetMdArrayElementAddress(_arr, (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10639. *(int8_t*)_addr = (*(int8_t*)(localVarBase + __ele));
  10640. ip += 8;
  10641. continue;
  10642. }
  10643. case HiOpcodeEnum::SetMdArrElementVarVar_u1:
  10644. {
  10645. uint16_t __arr = *(uint16_t*)(ip + 2);
  10646. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10647. uint16_t __ele = *(uint16_t*)(ip + 6);
  10648. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10649. void* _addr = GetMdArrayElementAddress(_arr, (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10650. *(uint8_t*)_addr = (*(uint8_t*)(localVarBase + __ele));
  10651. ip += 8;
  10652. continue;
  10653. }
  10654. case HiOpcodeEnum::SetMdArrElementVarVar_i2:
  10655. {
  10656. uint16_t __arr = *(uint16_t*)(ip + 2);
  10657. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10658. uint16_t __ele = *(uint16_t*)(ip + 6);
  10659. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10660. void* _addr = GetMdArrayElementAddress(_arr, (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10661. *(int16_t*)_addr = (*(int16_t*)(localVarBase + __ele));
  10662. ip += 8;
  10663. continue;
  10664. }
  10665. case HiOpcodeEnum::SetMdArrElementVarVar_u2:
  10666. {
  10667. uint16_t __arr = *(uint16_t*)(ip + 2);
  10668. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10669. uint16_t __ele = *(uint16_t*)(ip + 6);
  10670. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10671. void* _addr = GetMdArrayElementAddress(_arr, (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10672. *(uint16_t*)_addr = (*(uint16_t*)(localVarBase + __ele));
  10673. ip += 8;
  10674. continue;
  10675. }
  10676. case HiOpcodeEnum::SetMdArrElementVarVar_i4:
  10677. {
  10678. uint16_t __arr = *(uint16_t*)(ip + 2);
  10679. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10680. uint16_t __ele = *(uint16_t*)(ip + 6);
  10681. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10682. void* _addr = GetMdArrayElementAddress(_arr, (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10683. *(int32_t*)_addr = (*(int32_t*)(localVarBase + __ele));
  10684. ip += 8;
  10685. continue;
  10686. }
  10687. case HiOpcodeEnum::SetMdArrElementVarVar_u4:
  10688. {
  10689. uint16_t __arr = *(uint16_t*)(ip + 2);
  10690. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10691. uint16_t __ele = *(uint16_t*)(ip + 6);
  10692. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10693. void* _addr = GetMdArrayElementAddress(_arr, (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10694. *(uint32_t*)_addr = (*(uint32_t*)(localVarBase + __ele));
  10695. ip += 8;
  10696. continue;
  10697. }
  10698. case HiOpcodeEnum::SetMdArrElementVarVar_i8:
  10699. {
  10700. uint16_t __arr = *(uint16_t*)(ip + 2);
  10701. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10702. uint16_t __ele = *(uint16_t*)(ip + 6);
  10703. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10704. void* _addr = GetMdArrayElementAddress(_arr, (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10705. *(int64_t*)_addr = (*(int64_t*)(localVarBase + __ele));
  10706. ip += 8;
  10707. continue;
  10708. }
  10709. case HiOpcodeEnum::SetMdArrElementVarVar_u8:
  10710. {
  10711. uint16_t __arr = *(uint16_t*)(ip + 2);
  10712. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10713. uint16_t __ele = *(uint16_t*)(ip + 6);
  10714. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10715. void* _addr = GetMdArrayElementAddress(_arr, (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10716. *(uint64_t*)_addr = (*(uint64_t*)(localVarBase + __ele));
  10717. ip += 8;
  10718. continue;
  10719. }
  10720. case HiOpcodeEnum::SetMdArrElementVarVar_ref:
  10721. {
  10722. uint16_t __arr = *(uint16_t*)(ip + 2);
  10723. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10724. uint16_t __ele = *(uint16_t*)(ip + 6);
  10725. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10726. void* _addr = GetMdArrayElementAddress(_arr, (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10727. CheckArrayElementTypeCompatible(_arr, (*(Il2CppObject**)(localVarBase + __ele)));
  10728. *(Il2CppObject**)_addr = (*(Il2CppObject**)(localVarBase + __ele));
  10729. HYBRIDCLR_SET_WRITE_BARRIER((void**)_addr);
  10730. ip += 8;
  10731. continue;
  10732. }
  10733. case HiOpcodeEnum::SetMdArrElementVarVar_n:
  10734. {
  10735. uint16_t __arr = *(uint16_t*)(ip + 2);
  10736. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10737. uint16_t __ele = *(uint16_t*)(ip + 6);
  10738. SetMdArrayElement((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __ele));
  10739. ip += 8;
  10740. continue;
  10741. }
  10742. case HiOpcodeEnum::SetMdArrElementVarVar_WriteBarrier_n:
  10743. {
  10744. uint16_t __arr = *(uint16_t*)(ip + 2);
  10745. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10746. uint16_t __ele = *(uint16_t*)(ip + 6);
  10747. SetMdArrayElementWriteBarrier((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __ele));
  10748. ip += 8;
  10749. continue;
  10750. }
  10751. //!!!}}ARRAY
  10752. #pragma endregion
  10753. #pragma region EXCEPTION
  10754. //!!!{{EXCEPTION
  10755. case HiOpcodeEnum::ThrowEx:
  10756. {
  10757. uint16_t __exceptionObj = *(uint16_t*)(ip + 2);
  10758. uint16_t __firstHandlerIndex = *(uint16_t*)(ip + 4);
  10759. THROW_EX((Il2CppException*)(*(Il2CppObject**)(localVarBase + __exceptionObj)), __firstHandlerIndex);
  10760. continue;
  10761. }
  10762. case HiOpcodeEnum::RethrowEx:
  10763. {
  10764. RETHROW_EX();
  10765. continue;
  10766. }
  10767. case HiOpcodeEnum::LeaveEx:
  10768. {
  10769. int32_t __target = *(int32_t*)(ip + 4);
  10770. uint16_t __firstHandlerIndex = *(uint16_t*)(ip + 2);
  10771. LEAVE_EX(__target, __firstHandlerIndex);
  10772. continue;
  10773. }
  10774. case HiOpcodeEnum::LeaveEx_Directly:
  10775. {
  10776. int32_t __target = *(int32_t*)(ip + 4);
  10777. LEAVE_EX_DIRECTLY(__target);
  10778. continue;
  10779. }
  10780. case HiOpcodeEnum::EndFilterEx:
  10781. {
  10782. uint16_t __value = *(uint16_t*)(ip + 2);
  10783. ENDFILTER_EX((*(bool*)(localVarBase + __value)));
  10784. ip += 8;
  10785. continue;
  10786. }
  10787. case HiOpcodeEnum::EndFinallyEx:
  10788. {
  10789. ENDFINALLY_EX();
  10790. continue;
  10791. }
  10792. //!!!}}EXCEPTION
  10793. #pragma endregion
  10794. #pragma region instrinct
  10795. //!!!{{INSTRINCT
  10796. case HiOpcodeEnum::NullableNewVarVar:
  10797. {
  10798. uint16_t __dst = *(uint16_t*)(ip + 2);
  10799. uint16_t __data = *(uint16_t*)(ip + 4);
  10800. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10801. NewNullableValueType((void*)(localVarBase + __dst), (void*)(localVarBase + __data), __klass);
  10802. ip += 16;
  10803. continue;
  10804. }
  10805. case HiOpcodeEnum::NullableCtorVarVar:
  10806. {
  10807. uint16_t __dst = *(uint16_t*)(ip + 2);
  10808. uint16_t __data = *(uint16_t*)(ip + 4);
  10809. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10810. InitNullableValueType((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __data), __klass);
  10811. ip += 16;
  10812. continue;
  10813. }
  10814. case HiOpcodeEnum::NullableHasValueVar:
  10815. {
  10816. uint16_t __result = *(uint16_t*)(ip + 2);
  10817. uint16_t __obj = *(uint16_t*)(ip + 4);
  10818. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10819. (*(uint32_t*)(localVarBase + __result)) = IsNullableHasValue((*(void**)(localVarBase + __obj)), __klass);
  10820. ip += 16;
  10821. continue;
  10822. }
  10823. case HiOpcodeEnum::NullableGetValueOrDefaultVarVar:
  10824. {
  10825. uint16_t __dst = *(uint16_t*)(ip + 2);
  10826. uint16_t __obj = *(uint16_t*)(ip + 4);
  10827. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10828. GetNullableValueOrDefault2StackDataByType((void*)(localVarBase + __dst), (*(void**)(localVarBase + __obj)), __klass);
  10829. ip += 16;
  10830. continue;
  10831. }
  10832. case HiOpcodeEnum::NullableGetValueOrDefaultVarVar_1:
  10833. {
  10834. uint16_t __dst = *(uint16_t*)(ip + 2);
  10835. uint16_t __obj = *(uint16_t*)(ip + 4);
  10836. uint16_t __defaultValue = *(uint16_t*)(ip + 6);
  10837. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10838. GetNullableValueOrDefault2StackDataByType((void*)(localVarBase + __dst), (*(void**)(localVarBase + __obj)), (void*)(localVarBase + __defaultValue), __klass);
  10839. ip += 16;
  10840. continue;
  10841. }
  10842. case HiOpcodeEnum::NullableGetValueVarVar:
  10843. {
  10844. uint16_t __dst = *(uint16_t*)(ip + 2);
  10845. uint16_t __obj = *(uint16_t*)(ip + 4);
  10846. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10847. GetNullableValueOrDefault2StackDataByType((void*)(localVarBase + __dst), (*(void**)(localVarBase + __obj)), nullptr, __klass);
  10848. ip += 16;
  10849. continue;
  10850. }
  10851. case HiOpcodeEnum::InterlockedCompareExchangeVarVarVarVar_i4:
  10852. {
  10853. uint16_t __ret = *(uint16_t*)(ip + 2);
  10854. uint16_t __location = *(uint16_t*)(ip + 4);
  10855. uint16_t __value = *(uint16_t*)(ip + 6);
  10856. uint16_t __comparand = *(uint16_t*)(ip + 8);
  10857. (*(int32_t*)(localVarBase + __ret)) = HiInterlockedCompareExchange((int32_t*)(*(void**)(localVarBase + __location)), (*(int32_t*)(localVarBase + __value)), (*(int32_t*)(localVarBase + __comparand)));
  10858. ip += 16;
  10859. continue;
  10860. }
  10861. case HiOpcodeEnum::InterlockedCompareExchangeVarVarVarVar_i8:
  10862. {
  10863. uint16_t __ret = *(uint16_t*)(ip + 2);
  10864. uint16_t __location = *(uint16_t*)(ip + 4);
  10865. uint16_t __value = *(uint16_t*)(ip + 6);
  10866. uint16_t __comparand = *(uint16_t*)(ip + 8);
  10867. (*(int64_t*)(localVarBase + __ret)) = HiInterlockedCompareExchange((int64_t*)(*(void**)(localVarBase + __location)), (*(int64_t*)(localVarBase + __value)), (*(int64_t*)(localVarBase + __comparand)));
  10868. ip += 16;
  10869. continue;
  10870. }
  10871. case HiOpcodeEnum::InterlockedCompareExchangeVarVarVarVar_pointer:
  10872. {
  10873. uint16_t __ret = *(uint16_t*)(ip + 2);
  10874. uint16_t __location = *(uint16_t*)(ip + 4);
  10875. uint16_t __value = *(uint16_t*)(ip + 6);
  10876. uint16_t __comparand = *(uint16_t*)(ip + 8);
  10877. (*(void**)(localVarBase + __ret)) = HiInterlockedCompareExchange((void**)(*(void**)(localVarBase + __location)), (*(void**)(localVarBase + __value)), (*(void**)(localVarBase + __comparand)));
  10878. ip += 16;
  10879. continue;
  10880. }
  10881. case HiOpcodeEnum::InterlockedExchangeVarVarVar_i4:
  10882. {
  10883. uint16_t __ret = *(uint16_t*)(ip + 2);
  10884. uint16_t __location = *(uint16_t*)(ip + 4);
  10885. uint16_t __value = *(uint16_t*)(ip + 6);
  10886. (*(int32_t*)(localVarBase + __ret)) = HiInterlockedExchange((int32_t*)(*(void**)(localVarBase + __location)), (*(int32_t*)(localVarBase + __value)));
  10887. ip += 8;
  10888. continue;
  10889. }
  10890. case HiOpcodeEnum::InterlockedExchangeVarVarVar_i8:
  10891. {
  10892. uint16_t __ret = *(uint16_t*)(ip + 2);
  10893. uint16_t __location = *(uint16_t*)(ip + 4);
  10894. uint16_t __value = *(uint16_t*)(ip + 6);
  10895. (*(int64_t*)(localVarBase + __ret)) = HiInterlockedExchange((int64_t*)(*(void**)(localVarBase + __location)), (*(int64_t*)(localVarBase + __value)));
  10896. ip += 8;
  10897. continue;
  10898. }
  10899. case HiOpcodeEnum::InterlockedExchangeVarVarVar_pointer:
  10900. {
  10901. uint16_t __ret = *(uint16_t*)(ip + 2);
  10902. uint16_t __location = *(uint16_t*)(ip + 4);
  10903. uint16_t __value = *(uint16_t*)(ip + 6);
  10904. (*(void**)(localVarBase + __ret)) = HiInterlockedExchange((void**)(*(void**)(localVarBase + __location)), (*(void**)(localVarBase + __value)));
  10905. ip += 8;
  10906. continue;
  10907. }
  10908. case HiOpcodeEnum::NewSystemObjectVar:
  10909. {
  10910. uint16_t __obj = *(uint16_t*)(ip + 2);
  10911. (*(Il2CppObject**)(localVarBase + __obj)) = il2cpp::vm::Object::New(il2cpp_defaults.object_class);
  10912. ip += 8;
  10913. continue;
  10914. }
  10915. case HiOpcodeEnum::NewVector2:
  10916. {
  10917. uint16_t __obj = *(uint16_t*)(ip + 2);
  10918. uint16_t __x = *(uint16_t*)(ip + 4);
  10919. uint16_t __y = *(uint16_t*)(ip + 6);
  10920. *(HtVector2f*)(void*)(localVarBase + __obj) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y))};
  10921. ip += 8;
  10922. continue;
  10923. }
  10924. case HiOpcodeEnum::NewVector3_2:
  10925. {
  10926. uint16_t __obj = *(uint16_t*)(ip + 2);
  10927. uint16_t __x = *(uint16_t*)(ip + 4);
  10928. uint16_t __y = *(uint16_t*)(ip + 6);
  10929. *(HtVector3f*)(void*)(localVarBase + __obj) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), 0};
  10930. ip += 8;
  10931. continue;
  10932. }
  10933. case HiOpcodeEnum::NewVector3_3:
  10934. {
  10935. uint16_t __obj = *(uint16_t*)(ip + 2);
  10936. uint16_t __x = *(uint16_t*)(ip + 4);
  10937. uint16_t __y = *(uint16_t*)(ip + 6);
  10938. uint16_t __z = *(uint16_t*)(ip + 8);
  10939. *(HtVector3f*)(void*)(localVarBase + __obj) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), (*(float*)(localVarBase + __z))};
  10940. ip += 16;
  10941. continue;
  10942. }
  10943. case HiOpcodeEnum::NewVector4_2:
  10944. {
  10945. uint16_t __obj = *(uint16_t*)(ip + 2);
  10946. uint16_t __x = *(uint16_t*)(ip + 4);
  10947. uint16_t __y = *(uint16_t*)(ip + 6);
  10948. *(HtVector4f*)(void*)(localVarBase + __obj) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), 0, 0};
  10949. ip += 8;
  10950. continue;
  10951. }
  10952. case HiOpcodeEnum::NewVector4_3:
  10953. {
  10954. uint16_t __obj = *(uint16_t*)(ip + 2);
  10955. uint16_t __x = *(uint16_t*)(ip + 4);
  10956. uint16_t __y = *(uint16_t*)(ip + 6);
  10957. uint16_t __z = *(uint16_t*)(ip + 8);
  10958. *(HtVector4f*)(void*)(localVarBase + __obj) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), (*(float*)(localVarBase + __z)), 0};
  10959. ip += 16;
  10960. continue;
  10961. }
  10962. case HiOpcodeEnum::NewVector4_4:
  10963. {
  10964. uint16_t __obj = *(uint16_t*)(ip + 2);
  10965. uint16_t __x = *(uint16_t*)(ip + 4);
  10966. uint16_t __y = *(uint16_t*)(ip + 6);
  10967. uint16_t __z = *(uint16_t*)(ip + 8);
  10968. uint16_t __w = *(uint16_t*)(ip + 10);
  10969. *(HtVector4f*)(void*)(localVarBase + __obj) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), (*(float*)(localVarBase + __z)), (*(float*)(localVarBase + __w))};
  10970. ip += 16;
  10971. continue;
  10972. }
  10973. case HiOpcodeEnum::CtorVector2:
  10974. {
  10975. uint16_t __obj = *(uint16_t*)(ip + 2);
  10976. uint16_t __x = *(uint16_t*)(ip + 4);
  10977. uint16_t __y = *(uint16_t*)(ip + 6);
  10978. *(HtVector2f*)(*(void**)(localVarBase + __obj)) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y))};
  10979. ip += 8;
  10980. continue;
  10981. }
  10982. case HiOpcodeEnum::CtorVector3_2:
  10983. {
  10984. uint16_t __obj = *(uint16_t*)(ip + 2);
  10985. uint16_t __x = *(uint16_t*)(ip + 4);
  10986. uint16_t __y = *(uint16_t*)(ip + 6);
  10987. *(HtVector3f*)(*(void**)(localVarBase + __obj)) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), 0};
  10988. ip += 8;
  10989. continue;
  10990. }
  10991. case HiOpcodeEnum::CtorVector3_3:
  10992. {
  10993. uint16_t __obj = *(uint16_t*)(ip + 2);
  10994. uint16_t __x = *(uint16_t*)(ip + 4);
  10995. uint16_t __y = *(uint16_t*)(ip + 6);
  10996. uint16_t __z = *(uint16_t*)(ip + 8);
  10997. *(HtVector3f*)(*(void**)(localVarBase + __obj)) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), (*(float*)(localVarBase + __z))};
  10998. ip += 16;
  10999. continue;
  11000. }
  11001. case HiOpcodeEnum::CtorVector4_2:
  11002. {
  11003. uint16_t __obj = *(uint16_t*)(ip + 2);
  11004. uint16_t __x = *(uint16_t*)(ip + 4);
  11005. uint16_t __y = *(uint16_t*)(ip + 6);
  11006. *(HtVector4f*)(*(void**)(localVarBase + __obj)) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), 0, 0};
  11007. ip += 8;
  11008. continue;
  11009. }
  11010. case HiOpcodeEnum::CtorVector4_3:
  11011. {
  11012. uint16_t __obj = *(uint16_t*)(ip + 2);
  11013. uint16_t __x = *(uint16_t*)(ip + 4);
  11014. uint16_t __y = *(uint16_t*)(ip + 6);
  11015. uint16_t __z = *(uint16_t*)(ip + 8);
  11016. *(HtVector4f*)(*(void**)(localVarBase + __obj)) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), (*(float*)(localVarBase + __z)), 0};
  11017. ip += 16;
  11018. continue;
  11019. }
  11020. case HiOpcodeEnum::CtorVector4_4:
  11021. {
  11022. uint16_t __obj = *(uint16_t*)(ip + 2);
  11023. uint16_t __x = *(uint16_t*)(ip + 4);
  11024. uint16_t __y = *(uint16_t*)(ip + 6);
  11025. uint16_t __z = *(uint16_t*)(ip + 8);
  11026. uint16_t __w = *(uint16_t*)(ip + 10);
  11027. *(HtVector4f*)(*(void**)(localVarBase + __obj)) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), (*(float*)(localVarBase + __z)), (*(float*)(localVarBase + __w))};
  11028. ip += 16;
  11029. continue;
  11030. }
  11031. case HiOpcodeEnum::ArrayGetGenericValueImpl:
  11032. {
  11033. uint16_t __arr = *(uint16_t*)(ip + 2);
  11034. uint16_t __index = *(uint16_t*)(ip + 4);
  11035. uint16_t __value = *(uint16_t*)(ip + 6);
  11036. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  11037. int32_t _index = (*(int32_t*)(localVarBase + __index));
  11038. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, _index);
  11039. int32_t _eleSize = il2cpp::vm::Array::GetElementSize(_arr->klass);
  11040. std::memmove((*(void**)(localVarBase + __value)), GET_ARRAY_ELEMENT_ADDRESS(_arr, _index, _eleSize), _eleSize);
  11041. ip += 8;
  11042. continue;
  11043. }
  11044. case HiOpcodeEnum::ArraySetGenericValueImpl:
  11045. {
  11046. uint16_t __arr = *(uint16_t*)(ip + 2);
  11047. uint16_t __index = *(uint16_t*)(ip + 4);
  11048. uint16_t __value = *(uint16_t*)(ip + 6);
  11049. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  11050. int32_t _index = (*(int32_t*)(localVarBase + __index));
  11051. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, _index);
  11052. int32_t _eleSize = il2cpp::vm::Array::GetElementSize(_arr->klass);
  11053. il2cpp_array_setrefwithsize(_arr, _eleSize, _index, (*(void**)(localVarBase + __value)));
  11054. ip += 8;
  11055. continue;
  11056. }
  11057. case HiOpcodeEnum::NewString:
  11058. {
  11059. uint16_t __str = *(uint16_t*)(ip + 2);
  11060. uint16_t __chars = *(uint16_t*)(ip + 4);
  11061. Il2CppArray* _chars = (*(Il2CppArray**)(localVarBase + __chars));
  11062. CHECK_NOT_NULL_THROW(_chars);
  11063. (*(Il2CppString**)(localVarBase + __str)) = il2cpp::vm::String::NewUtf16((const Il2CppChar*)il2cpp::vm::Array::GetFirstElementAddress(_chars), il2cpp::vm::Array::GetLength(_chars));
  11064. ip += 8;
  11065. continue;
  11066. }
  11067. case HiOpcodeEnum::NewString_2:
  11068. {
  11069. uint16_t __str = *(uint16_t*)(ip + 2);
  11070. uint16_t __chars = *(uint16_t*)(ip + 4);
  11071. uint16_t __startIndex = *(uint16_t*)(ip + 6);
  11072. uint16_t __length = *(uint16_t*)(ip + 8);
  11073. Il2CppArray* _chars = (*(Il2CppArray**)(localVarBase + __chars));
  11074. int32_t _startIndex = (*(uint32_t*)(localVarBase + __startIndex));
  11075. int32_t _length = (*(uint32_t*)(localVarBase + __length));
  11076. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY2(_chars, _startIndex, _length);
  11077. (*(Il2CppString**)(localVarBase + __str)) = il2cpp::vm::String::NewUtf16(((const Il2CppChar*)il2cpp::vm::Array::GetFirstElementAddress(_chars)) + _startIndex, _length);
  11078. ip += 16;
  11079. continue;
  11080. }
  11081. case HiOpcodeEnum::NewString_3:
  11082. {
  11083. uint16_t __str = *(uint16_t*)(ip + 2);
  11084. uint16_t __c = *(uint16_t*)(ip + 4);
  11085. uint16_t __count = *(uint16_t*)(ip + 6);
  11086. int32_t _count = (*(int32_t*)(localVarBase + __count));
  11087. if (_count < 0)
  11088. {
  11089. il2cpp::vm::Exception::RaiseArgumentOutOfRangeException("new string(char c, int count)");
  11090. }
  11091. Il2CppChar _c = (Il2CppChar)(*(uint16_t*)(localVarBase + __c));
  11092. Il2CppString* _str = (*(Il2CppString**)(localVarBase + __str)) = il2cpp::vm::String::NewSize(_count);
  11093. std::fill_n(_str->chars, _count, _c);
  11094. ip += 8;
  11095. continue;
  11096. }
  11097. case HiOpcodeEnum::UnsafeEnumCast:
  11098. {
  11099. uint16_t __dst = *(uint16_t*)(ip + 2);
  11100. uint16_t __src = *(uint16_t*)(ip + 4);
  11101. uint16_t __srcType = *(uint16_t*)(ip + 6);
  11102. (*(int32_t*)(localVarBase + __dst)) = UnsafeEnumCast((void*)(localVarBase + __src), __srcType);
  11103. ip += 8;
  11104. continue;
  11105. }
  11106. case HiOpcodeEnum::GetEnumHashCode:
  11107. {
  11108. uint16_t __dst = *(uint16_t*)(ip + 2);
  11109. uint16_t __src = *(uint16_t*)(ip + 4);
  11110. (*(int32_t*)(localVarBase + __dst)) = GetEnumLongHashCode({(*(void**)(localVarBase + __src))});
  11111. ip += 8;
  11112. continue;
  11113. }
  11114. case HiOpcodeEnum::AssemblyGetExecutingAssembly:
  11115. {
  11116. uint16_t __ret = *(uint16_t*)(ip + 2);
  11117. (*(Il2CppObject**)(localVarBase + __ret)) = (Il2CppObject*)il2cpp::vm::Reflection::GetAssemblyObject(frame->method->klass->image->assembly);
  11118. ip += 8;
  11119. continue;
  11120. }
  11121. case HiOpcodeEnum::MethodBaseGetCurrentMethod:
  11122. {
  11123. uint16_t __ret = *(uint16_t*)(ip + 2);
  11124. (*(Il2CppObject**)(localVarBase + __ret)) = (Il2CppObject*)il2cpp::vm::Reflection::GetMethodObject(frame->method, nullptr);
  11125. ip += 8;
  11126. continue;
  11127. }
  11128. //!!!}}INSTRINCT
  11129. #pragma endregion
  11130. default:
  11131. RaiseExecutionEngineException("");
  11132. break;
  11133. }
  11134. }
  11135. ExitEvalLoop:;
  11136. }
  11137. catch (Il2CppExceptionWrapper ex)
  11138. {
  11139. PREPARE_EXCEPTION(ex.ex, 0);
  11140. FIND_NEXT_EX_HANDLER_OR_UNWIND();
  11141. }
  11142. return;
  11143. UnWindFail:
  11144. IL2CPP_ASSERT(lastUnwindException);
  11145. IL2CPP_ASSERT(interpFrameGroup.GetFrameCount() == 0);
  11146. il2cpp::vm::Exception::Raise(lastUnwindException);
  11147. }
  11148. }
  11149. }