Interpreter_Execute.cpp 448 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293
  1. #include "Interpreter.h"
  2. #include <cmath>
  3. #include <algorithm>
  4. #include "codegen/il2cpp-codegen-il2cpp.h"
  5. #include "vm/Object.h"
  6. #include "vm/Class.h"
  7. #include "vm/ClassInlines.h"
  8. #include "vm/Array.h"
  9. #include "vm/Image.h"
  10. #include "vm/Exception.h"
  11. #include "vm/Thread.h"
  12. #include "vm/Runtime.h"
  13. #include "vm/Reflection.h"
  14. #include "metadata/GenericMetadata.h"
  15. #if HYBRIDCLR_UNITY_2020_OR_NEW
  16. #include "vm-utils/icalls/mscorlib/System.Threading/Interlocked.h"
  17. #else
  18. #include "icalls/mscorlib/System.Threading/Interlocked.h"
  19. #endif
  20. #include "../metadata/MetadataModule.h"
  21. #include "Instruction.h"
  22. #include "MethodBridge.h"
  23. #include "InstrinctDef.h"
  24. #include "MemoryUtil.h"
  25. #include "InterpreterModule.h"
  26. #include "InterpreterUtil.h"
  27. #include "gc/WriteBarrier.h"
  28. using namespace hybridclr::metadata;
  29. namespace hybridclr
  30. {
  31. namespace interpreter
  32. {
  33. #pragma region memory
  34. #define LOCAL_ALLOC(size) interpFrameGroup.AllocLoc(size, imi->initLocals)
  35. #pragma endregion
  36. #pragma region arith
  37. inline bool CheckAddOverflow(int32_t a, int32_t b)
  38. {
  39. return b >= 0 ? (INT32_MAX - b < a) : (INT32_MIN - b > a);
  40. }
  41. inline bool CheckSubOverflow(int32_t a, int32_t b)
  42. {
  43. return b >= 0 ? (INT32_MAX - b < a) : (INT32_MIN - b > a);
  44. }
  45. inline bool CheckAddOverflowUn(uint32_t a, uint32_t b)
  46. {
  47. return UINT32_MAX - b < a;
  48. }
  49. inline bool CheckSubOverflowUn(uint32_t a, uint32_t b)
  50. {
  51. return a < b;
  52. }
  53. inline bool CheckAddOverflow64(int64_t a, int64_t b)
  54. {
  55. return b >= 0 ? (INT64_MAX - b < a) : (INT64_MIN - b > a);
  56. }
  57. inline bool CheckSubOverflow64(int64_t a, int64_t b)
  58. {
  59. return b < 0 ? (INT64_MAX + b < a) : (INT64_MIN + b > a);
  60. }
  61. inline bool CheckAddOverflow64Un(uint64_t a, uint64_t b)
  62. {
  63. return UINT64_MAX - b < a;
  64. }
  65. inline bool CheckSubOverflow64Un(uint64_t a, uint64_t b)
  66. {
  67. return a < b;
  68. }
  69. inline bool CheckMulOverflow(int32_t a, int32_t b)
  70. {
  71. int64_t c = (int64_t)a * (int64_t)b;
  72. return c <= INT32_MIN || c >= INT32_MAX;
  73. }
  74. inline bool CheckMulOverflowUn(uint32_t a, uint32_t b)
  75. {
  76. return (uint64_t)a * (uint64_t)b >= UINT32_MAX;
  77. }
  78. inline bool CheckMulOverflow64(int64_t a, int64_t b)
  79. {
  80. if (a == 0 || b == 0)
  81. {
  82. return false;
  83. }
  84. if (a > 0 && b == -1)
  85. {
  86. return false;
  87. }
  88. if (a < 0 && b == -1)
  89. {
  90. return a == INT64_MIN;
  91. }
  92. if (a > 0 && b > 0)
  93. {
  94. return a > INT64_MAX / b;
  95. }
  96. if (a > 0 && b < 0)
  97. {
  98. return a > INT64_MIN / b;
  99. }
  100. if (a < 0 && b > 0)
  101. {
  102. return a < INT64_MIN / b;
  103. }
  104. return a < INT64_MAX / b;
  105. }
  106. inline bool CheckMulOverflow64Un(uint64_t a, uint64_t b)
  107. {
  108. return a != 0 && b > UINT64_MAX / a;
  109. }
  110. inline bool CheckConvertOverflow_i4_i1(int32_t x)
  111. {
  112. return ((x < INT8_MIN) || (x > INT8_MAX));
  113. }
  114. inline bool CheckConvertOverflow_i4_u1(int32_t x)
  115. {
  116. return (uint32_t)x > UINT8_MAX;
  117. }
  118. inline bool CheckConvertOverflow_i4_i2(int32_t x)
  119. {
  120. return ((x < INT16_MIN) || (x > INT16_MAX));
  121. }
  122. inline bool CheckConvertOverflow_i4_u2(int32_t x)
  123. {
  124. return (uint32_t)x > UINT16_MAX;
  125. }
  126. inline bool CheckConvertOverflow_i4_i4(int32_t x)
  127. {
  128. return false;
  129. }
  130. inline bool CheckConvertOverflow_i4_u4(int32_t x)
  131. {
  132. return x < 0;
  133. }
  134. inline bool CheckConvertOverflow_i4_i8(int32_t x)
  135. {
  136. return false;
  137. }
  138. inline bool CheckConvertOverflow_i4_u8(int32_t x)
  139. {
  140. return x < 0;
  141. }
  142. inline bool CheckConvertOverflow_u4_i1(uint32_t x)
  143. {
  144. return x > INT8_MAX;
  145. }
  146. inline bool CheckConvertOverflow_u4_u1(uint32_t x)
  147. {
  148. return x > UINT8_MAX;
  149. }
  150. inline bool CheckConvertOverflow_u4_i2(uint32_t x)
  151. {
  152. return x > INT16_MAX;
  153. }
  154. inline bool CheckConvertOverflow_u4_u2(uint32_t x)
  155. {
  156. return x > UINT16_MAX;
  157. }
  158. inline bool CheckConvertOverflow_u4_i4(uint32_t x)
  159. {
  160. return x > INT32_MAX;
  161. }
  162. inline bool CheckConvertOverflow_u4_u4(uint32_t x)
  163. {
  164. return false;
  165. }
  166. inline bool CheckConvertOverflow_u4_i8(uint32_t x)
  167. {
  168. return false;
  169. }
  170. inline bool CheckConvertOverflow_u4_u8(uint32_t x)
  171. {
  172. return false;
  173. }
  174. inline bool CheckConvertOverflow_i8_i1(int64_t x)
  175. {
  176. return ((x < INT8_MIN) || (x > INT8_MAX));
  177. }
  178. inline bool CheckConvertOverflow_i8_u1(int64_t x)
  179. {
  180. return (uint64_t)x > UINT8_MAX;
  181. }
  182. inline bool CheckConvertOverflow_i8_i2(int64_t x)
  183. {
  184. return ((x < INT16_MIN) || (x > INT16_MAX));
  185. }
  186. inline bool CheckConvertOverflow_i8_u2(int64_t x)
  187. {
  188. return (uint64_t)x > UINT16_MAX;
  189. }
  190. inline bool CheckConvertOverflow_i8_i4(int64_t x)
  191. {
  192. return ((x < INT32_MIN) || (x > INT32_MAX));
  193. }
  194. inline bool CheckConvertOverflow_i8_u4(int64_t x)
  195. {
  196. return (uint64_t)x > UINT32_MAX;
  197. }
  198. inline bool CheckConvertOverflow_i8_i8(int64_t x)
  199. {
  200. return false;
  201. }
  202. inline bool CheckConvertOverflow_i8_u8(int64_t x)
  203. {
  204. return x < 0;
  205. }
  206. inline bool CheckConvertOverflow_u8_i1(uint64_t x)
  207. {
  208. return x > INT8_MAX;
  209. }
  210. inline bool CheckConvertOverflow_u8_u1(uint64_t x)
  211. {
  212. return x > UINT8_MAX;
  213. }
  214. inline bool CheckConvertOverflow_u8_i2(uint64_t x)
  215. {
  216. return x > INT16_MAX;
  217. }
  218. inline bool CheckConvertOverflow_u8_u2(uint64_t x)
  219. {
  220. return x > UINT16_MAX;
  221. }
  222. inline bool CheckConvertOverflow_u8_i4(uint64_t x)
  223. {
  224. return x > INT32_MAX;
  225. }
  226. inline bool CheckConvertOverflow_u8_u4(uint64_t x)
  227. {
  228. return x > UINT32_MAX;
  229. }
  230. inline bool CheckConvertOverflow_u8_i8(uint64_t x)
  231. {
  232. return x > INT64_MAX;
  233. }
  234. inline bool CheckConvertOverflow_u8_u8(uint64_t x)
  235. {
  236. return false;
  237. }
  238. inline bool CheckConvertOverflow_f4_i1(float x)
  239. {
  240. return x < INT8_MIN || x > INT8_MAX || isnan(x);
  241. }
  242. inline bool CheckConvertOverflow_f4_u1(float x)
  243. {
  244. return x < 0 || x > UINT8_MAX || isnan(x);
  245. }
  246. inline bool CheckConvertOverflow_f4_i2(float x)
  247. {
  248. return x < INT16_MIN || x > INT16_MAX || isnan(x);
  249. }
  250. inline bool CheckConvertOverflow_f4_u2(float x)
  251. {
  252. return x < 0 || x > UINT16_MAX || isnan(x);
  253. }
  254. inline bool CheckConvertOverflow_f4_i4(float x)
  255. {
  256. if (isnan(x))
  257. {
  258. return true;
  259. }
  260. float y = truncf(x);
  261. return y != (int32_t)x;
  262. }
  263. inline bool CheckConvertOverflow_f4_u4(float x)
  264. {
  265. if (isnan(x) || x < 0)
  266. {
  267. return true;
  268. }
  269. float y = truncf(x);
  270. return y != (uint32_t)x;
  271. }
  272. inline bool CheckConvertOverflow_f4_i8(float x)
  273. {
  274. if (isnan(x))
  275. {
  276. return true;
  277. }
  278. float y = truncf(x);
  279. return y != (int64_t)x;
  280. }
  281. inline bool CheckConvertOverflow_f4_u8(float x)
  282. {
  283. if (isnan(x) || x < 0)
  284. {
  285. return true;
  286. }
  287. float y = truncf(x);
  288. return y != (uint64_t)x;
  289. }
  290. inline bool CheckConvertOverflow_f8_i1(double x)
  291. {
  292. return x < INT8_MIN || x > INT8_MAX || isnan(x);
  293. }
  294. inline bool CheckConvertOverflow_f8_u1(double x)
  295. {
  296. return x < 0 || x > UINT8_MAX || isnan(x);
  297. }
  298. inline bool CheckConvertOverflow_f8_i2(double x)
  299. {
  300. return x < INT16_MIN || x > INT16_MAX || isnan(x);
  301. }
  302. inline bool CheckConvertOverflow_f8_u2(double x)
  303. {
  304. return x < 0 || x > UINT16_MAX || isnan(x);
  305. }
  306. inline bool CheckConvertOverflow_f8_i4(double x)
  307. {
  308. return x < INT32_MIN || x > INT32_MAX || isnan(x);
  309. }
  310. inline bool CheckConvertOverflow_f8_u4(double x)
  311. {
  312. return x < 0 || x > UINT32_MAX || isnan(x);
  313. }
  314. inline bool CheckConvertOverflow_f8_i8(double x)
  315. {
  316. if (isnan(x))
  317. {
  318. return true;
  319. }
  320. double y = trunc(x);
  321. return y != (int64_t)x;
  322. }
  323. inline bool CheckConvertOverflow_f8_u8(double x)
  324. {
  325. if (isnan(x) || x < 0)
  326. {
  327. return true;
  328. }
  329. double y = trunc(x);
  330. return y != (uint64_t)x;
  331. }
  332. inline int32_t HiDiv(int32_t a, int32_t b)
  333. {
  334. if (b == 0)
  335. {
  336. il2cpp::vm::Exception::RaiseDivideByZeroException();
  337. }
  338. else if (a == kIl2CppInt32Min && b == -1)
  339. {
  340. il2cpp::vm::Exception::RaiseOverflowException();
  341. }
  342. return a / b;
  343. }
  344. inline int64_t HiDiv(int64_t a, int64_t b)
  345. {
  346. if (b == 0)
  347. {
  348. il2cpp::vm::Exception::RaiseDivideByZeroException();
  349. }
  350. else if (a == kIl2CppInt64Min && b == -1)
  351. {
  352. il2cpp::vm::Exception::RaiseOverflowException();
  353. }
  354. return a / b;
  355. }
  356. inline float HiDiv(float a, float b)
  357. {
  358. return a / b;
  359. }
  360. inline double HiDiv(double a, double b)
  361. {
  362. return a / b;
  363. }
  364. inline int32_t HiMulUn(int32_t a, int32_t b)
  365. {
  366. return (uint32_t)a * (uint32_t)b;
  367. }
  368. inline int64_t HiMulUn(int64_t a, int64_t b)
  369. {
  370. return (uint64_t)a * (uint64_t)b;
  371. }
  372. inline int32_t HiDivUn(int32_t a, int32_t b)
  373. {
  374. if (b == 0)
  375. {
  376. il2cpp::vm::Exception::RaiseDivideByZeroException();
  377. }
  378. return (uint32_t)a / (uint32_t)b;
  379. }
  380. inline int64_t HiDivUn(int64_t a, int64_t b)
  381. {
  382. if (b == 0)
  383. {
  384. il2cpp::vm::Exception::RaiseDivideByZeroException();
  385. }
  386. return (uint64_t)a / (uint64_t)b;
  387. }
  388. inline float HiRem(float a, float b)
  389. {
  390. return std::fmod(a, b);
  391. }
  392. inline double HiRem(double a, double b)
  393. {
  394. return std::fmod(a, b);
  395. }
  396. inline int32_t HiRem(int32_t a, int32_t b)
  397. {
  398. if (b == 0)
  399. {
  400. il2cpp::vm::Exception::RaiseDivideByZeroException();
  401. }
  402. else if (a == kIl2CppInt32Min && b == -1)
  403. {
  404. il2cpp::vm::Exception::RaiseOverflowException();
  405. }
  406. return a % b;
  407. }
  408. inline int64_t HiRem(int64_t a, int64_t b)
  409. {
  410. if (b == 0)
  411. {
  412. il2cpp::vm::Exception::RaiseDivideByZeroException();
  413. }
  414. else if (a == kIl2CppInt64Min && b == -1)
  415. {
  416. il2cpp::vm::Exception::RaiseOverflowException();
  417. }
  418. return a % b;
  419. }
  420. inline uint32_t HiRemUn(int32_t a, int32_t b)
  421. {
  422. if (b == 0)
  423. {
  424. il2cpp::vm::Exception::RaiseDivideByZeroException();
  425. }
  426. return (uint32_t)a % (uint32_t)b;
  427. }
  428. inline uint64_t HiRemUn(int64_t a, int64_t b)
  429. {
  430. if (b == 0)
  431. {
  432. il2cpp::vm::Exception::RaiseDivideByZeroException();
  433. }
  434. return (uint64_t)a % (uint64_t)b;
  435. }
  436. inline uint32_t HiShrUn(int32_t a, int64_t b)
  437. {
  438. return (uint32_t)a >> b;
  439. }
  440. inline uint32_t HiShrUn(int32_t a, int32_t b)
  441. {
  442. return (uint32_t)a >> b;
  443. }
  444. inline uint64_t HiShrUn(int64_t a, int32_t b)
  445. {
  446. return (uint64_t)a >> b;
  447. }
  448. inline uint64_t HiShrUn(int64_t a, int64_t b)
  449. {
  450. return (uint64_t)a >> b;
  451. }
  452. inline void HiCheckFinite(float x)
  453. {
  454. if (std::isinf(x) || std::isnan(x))
  455. {
  456. il2cpp::vm::Exception::RaiseOverflowException();
  457. }
  458. }
  459. inline void HiCheckFinite(double x)
  460. {
  461. if (std::isinf(x) || std::isnan(x))
  462. {
  463. il2cpp::vm::Exception::RaiseOverflowException();
  464. }
  465. }
  466. template<typename T> bool CompareCeq(T a, T b) { return a == b; }
  467. template<typename T> bool CompareCne(T a, T b) { return a != b; }
  468. template<typename T> bool CompareCgt(T a, T b) { return a > b; }
  469. template<typename T> bool CompareCge(T a, T b) { return a >= b; }
  470. template<typename T> bool CompareClt(T a, T b) { return a < b; }
  471. template<typename T> bool CompareCle(T a, T b) { return a <= b; }
  472. inline bool CompareCneUn(int32_t a, int32_t b) { return (uint32_t)a != (uint32_t)b; }
  473. inline bool CompareCgtUn(int32_t a, int32_t b) { return (uint32_t)a > (uint32_t)b; }
  474. inline bool CompareCgeUn(int32_t a, int32_t b) { return (uint32_t)a >= (uint32_t)b; }
  475. inline bool CompareCltUn(int32_t a, int32_t b) { return (uint32_t)a < (uint32_t)b; }
  476. inline bool CompareCleUn(int32_t a, int32_t b) { return (uint32_t)a <= (uint32_t)b; }
  477. inline bool CompareCneUn(int64_t a, int64_t b) { return (uint64_t)a != (uint64_t)b; }
  478. inline bool CompareCgtUn(int64_t a, int64_t b) { return (uint64_t)a > (uint64_t)b; }
  479. inline bool CompareCgeUn(int64_t a, int64_t b) { return (uint64_t)a >= (uint64_t)b; }
  480. inline bool CompareCltUn(int64_t a, int64_t b) { return (uint64_t)a < (uint64_t)b; }
  481. inline bool CompareCleUn(int64_t a, int64_t b) { return (uint64_t)a <= (uint64_t)b; }
  482. inline bool CompareCneUn(float a, float b) { return a != b; }
  483. inline bool CompareCgtUn(float a, float b) { return a > b; }
  484. inline bool CompareCgeUn(float a, float b) { return a >= b; }
  485. inline bool CompareCltUn(float a, float b) { return a < b; }
  486. inline bool CompareCleUn(float a, float b) { return a <= b; }
  487. inline bool CompareCneUn(double a, double b) { return a != b; }
  488. inline bool CompareCgtUn(double a, double b) { return a > b; }
  489. inline bool CompareCgeUn(double a, double b) { return a >= b; }
  490. inline bool CompareCltUn(double a, double b) { return a < b; }
  491. inline bool CompareCleUn(double a, double b) { return a <= b; }
  492. #pragma endregion
  493. #pragma region object
  494. inline void INIT_CLASS(Il2CppClass* klass)
  495. {
  496. il2cpp::vm::ClassInlines::InitFromCodegen(klass);
  497. }
  498. inline void CHECK_NOT_NULL_THROW(const void* ptr)
  499. {
  500. if (!ptr)
  501. {
  502. il2cpp::vm::Exception::RaiseNullReferenceException();
  503. }
  504. }
  505. inline void CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(Il2CppArray* arr, int64_t index)
  506. {
  507. CHECK_NOT_NULL_THROW(arr);
  508. if (arr->max_length <= (il2cpp_array_size_t)index)
  509. {
  510. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetIndexOutOfRangeException());
  511. }
  512. }
  513. inline void CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(Il2CppArray* arr, int32_t startIndex, int32_t length)
  514. {
  515. CHECK_NOT_NULL_THROW(arr);
  516. if (arr->max_length <= (il2cpp_array_size_t)startIndex || arr->max_length - (il2cpp_array_size_t)startIndex < (il2cpp_array_size_t)length)
  517. {
  518. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetIndexOutOfRangeException());
  519. }
  520. }
  521. inline void CHECK_NOT_NULL_AND_ARRAY_BOUNDARY2(Il2CppArray* arr, int32_t startIndex, int32_t length)
  522. {
  523. CHECK_NOT_NULL_THROW(arr);
  524. if (arr->max_length <= (il2cpp_array_size_t)startIndex || arr->max_length - (il2cpp_array_size_t)startIndex < (il2cpp_array_size_t)length)
  525. {
  526. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetArgumentOutOfRangeException(""));
  527. }
  528. }
  529. inline void CHECK_TYPE_MATCH_ELSE_THROW(Il2CppClass* klass1, Il2CppClass* klass2)
  530. {
  531. if (klass1 != klass2)
  532. {
  533. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetArrayTypeMismatchException());
  534. }
  535. }
  536. inline void CheckArrayElementTypeMatch(Il2CppClass* arrKlass, Il2CppClass* eleKlass)
  537. {
  538. if (il2cpp::vm::Class::GetElementClass(arrKlass) != eleKlass)
  539. {
  540. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetArrayTypeMismatchException());
  541. }
  542. }
  543. inline void CheckArrayElementTypeCompatible(Il2CppArray* arr, Il2CppObject* ele)
  544. {
  545. if (ele && !il2cpp::vm::Class::IsAssignableFrom(arr->klass->element_class, ele->klass))
  546. {
  547. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetArrayTypeMismatchException());
  548. }
  549. }
  550. inline MethodInfo* GET_OBJECT_VIRTUAL_METHOD(Il2CppObject* obj, const MethodInfo* method)
  551. {
  552. CHECK_NOT_NULL_THROW(obj);
  553. const MethodInfo* result;
  554. if (hybridclr::metadata::IsVirtualMethod(method->flags))
  555. {
  556. if (hybridclr::metadata::IsInterface(method->klass->flags))
  557. {
  558. result = il2cpp_codegen_get_interface_invoke_data(method->slot, obj, method->klass).method;
  559. }
  560. else
  561. {
  562. result = il2cpp_codegen_get_virtual_invoke_data(method->slot, obj).method;
  563. }
  564. IL2CPP_ASSERT(!method->genericMethod || method->is_inflated);
  565. if (method->genericMethod && method->genericMethod->context.method_inst/* && method->genericMethod*/) // means it's genericInstance method 或generic method
  566. {
  567. result = GetGenericVirtualMethod(result, method);
  568. }
  569. }
  570. else
  571. {
  572. result = method;
  573. }
  574. return const_cast<MethodInfo*>(result);
  575. }
  576. #define GET_OBJECT_INTERFACE_METHOD(obj, intfKlass, slot) (MethodInfo*)nullptr
  577. inline void* HiUnbox(Il2CppObject* obj, Il2CppClass* klass)
  578. {
  579. if (il2cpp::vm::Class::IsNullable(klass))
  580. {
  581. if (!obj)
  582. {
  583. return nullptr;
  584. }
  585. klass = il2cpp::vm::Class::GetNullableArgument(klass);
  586. }
  587. return UnBox(obj, klass);
  588. }
  589. inline void CopyObjectData2StackDataByType(void* dst, void* src, Il2CppClass* klass)
  590. {
  591. IL2CPP_ASSERT(IS_CLASS_VALUE_TYPE(klass));
  592. Il2CppTypeEnum type = klass->enumtype ? klass->castClass->byval_arg.type : klass->byval_arg.type;
  593. switch (type)
  594. {
  595. case IL2CPP_TYPE_BOOLEAN:
  596. case IL2CPP_TYPE_I1:
  597. *(int32_t*)dst = *(int8_t*)src;
  598. break;
  599. case IL2CPP_TYPE_U1:
  600. *(int32_t*)dst = *(uint8_t*)src;
  601. break;
  602. case IL2CPP_TYPE_I2:
  603. *(int32_t*)dst = *(int16_t*)src;
  604. break;
  605. case IL2CPP_TYPE_U2:
  606. case IL2CPP_TYPE_CHAR:
  607. *(int32_t*)dst = *(uint16_t*)src;
  608. break;
  609. case IL2CPP_TYPE_I4:
  610. case IL2CPP_TYPE_U4:
  611. case IL2CPP_TYPE_R4:
  612. *(int32_t*)dst = *(int32_t*)src;
  613. break;
  614. case IL2CPP_TYPE_I8:
  615. case IL2CPP_TYPE_U8:
  616. case IL2CPP_TYPE_R8:
  617. *(int64_t*)dst = *(int64_t*)src;
  618. break;
  619. case IL2CPP_TYPE_I:
  620. case IL2CPP_TYPE_U:
  621. #if HYBRIDCLR_ARCH_64
  622. * (int64_t*)dst = *(int64_t*)src;
  623. #else
  624. * (int32_t*)dst = *(int32_t*)src;
  625. #endif
  626. break;
  627. default:
  628. int32_t dataSize = klass->instance_size - sizeof(Il2CppObject);
  629. if (dataSize <= sizeof(StackObject))
  630. {
  631. *(StackObject*)dst = *(StackObject*)src;
  632. }
  633. else
  634. {
  635. std::memmove(dst, src, dataSize);
  636. }
  637. break;
  638. }
  639. }
  640. inline void HiUnboxAny2StackObject(Il2CppObject* obj, Il2CppClass* klass, void* data)
  641. {
  642. if (il2cpp::vm::Class::IsNullable(klass))
  643. {
  644. #if HYBRIDCLR_UNITY_2021_OR_NEW
  645. // il2cpp modify argument meaning in 2021
  646. UnBoxNullable(obj, klass, data);
  647. #else
  648. UnBoxNullable(obj, klass->element_class, data);
  649. #endif
  650. }
  651. else
  652. {
  653. CopyObjectData2StackDataByType(data, UnBox(obj, klass), klass);
  654. }
  655. }
  656. inline void HiCastClass(Il2CppObject* obj, Il2CppClass* klass)
  657. {
  658. if (obj != nullptr && !il2cpp::vm::Class::IsAssignableFrom(klass, obj->klass))
  659. {
  660. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetInvalidCastException("cast fail"), nullptr);
  661. }
  662. }
  663. inline Il2CppTypedRef MAKE_TYPEDREFERENCE(Il2CppClass* klazz, void* ptr)
  664. {
  665. return Il2CppTypedRef{ &klazz->byval_arg, ptr, klazz };
  666. }
  667. inline void* RefAnyType(Il2CppTypedRef ref)
  668. {
  669. return (void*)ref.type;
  670. }
  671. inline void* RefAnyValue(Il2CppTypedRef ref, Il2CppClass* klass)
  672. {
  673. if (klass != ref.klass)
  674. {
  675. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetInvalidCastException(klass->name));
  676. }
  677. return ref.value;
  678. }
  679. #define MAX_DIMENSION 10
  680. inline void SetArrayElementWithSize(Il2CppArray* array, uint32_t elementSize, int32_t index, void* value)
  681. {
  682. void* __p = (void*) il2cpp_array_addr_with_size (array, elementSize, index);
  683. memcpy(__p, value, elementSize);
  684. }
  685. inline Il2CppArray* NewMdArray(Il2CppClass* fullArrKlass, StackObject* lengths, StackObject* lowerBounds)
  686. {
  687. il2cpp_array_size_t arrLengths[MAX_DIMENSION];
  688. il2cpp_array_size_t arrLowerBounds[MAX_DIMENSION];
  689. switch (fullArrKlass->rank)
  690. {
  691. case 1:
  692. {
  693. arrLengths[0] = lengths[0].i32;
  694. if (lowerBounds)
  695. {
  696. arrLowerBounds[0] = lowerBounds[0].i32;
  697. }
  698. break;
  699. }
  700. case 2:
  701. {
  702. arrLengths[0] = lengths[0].i32;
  703. arrLengths[1] = lengths[1].i32;
  704. if (lowerBounds)
  705. {
  706. arrLowerBounds[0] = lowerBounds[0].i32;
  707. arrLowerBounds[1] = lowerBounds[1].i32;
  708. }
  709. break;
  710. }
  711. default:
  712. {
  713. for (uint8_t i = 0; i < fullArrKlass->rank; i++)
  714. {
  715. arrLengths[i] = lengths[i].i32;
  716. if (lowerBounds)
  717. {
  718. arrLowerBounds[i] = lowerBounds[i].i32;
  719. }
  720. }
  721. break;
  722. }
  723. }
  724. return il2cpp::vm::Array::NewFull(fullArrKlass, arrLengths, lowerBounds ? arrLowerBounds : nullptr);
  725. }
  726. inline void* GetMdArrayElementAddress(Il2CppArray* arr, StackObject* indexs)
  727. {
  728. CHECK_NOT_NULL_THROW(arr);
  729. Il2CppClass* klass = arr->klass;
  730. uint32_t eleSize = klass->element_size;
  731. Il2CppArrayBounds* bounds = arr->bounds;
  732. char* arrayStart = il2cpp::vm::Array::GetFirstElementAddress(arr);
  733. switch (klass->rank)
  734. {
  735. case 1:
  736. {
  737. Il2CppArrayBounds& bound = bounds[0];
  738. il2cpp_array_size_t idx = (il2cpp_array_size_t)(indexs[0].i32 - bound.lower_bound);
  739. if (idx < bound.length)
  740. {
  741. return arrayStart + (idx * eleSize);
  742. }
  743. else
  744. {
  745. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetIndexOutOfRangeException());
  746. }
  747. break;
  748. }
  749. case 2:
  750. {
  751. Il2CppArrayBounds& bound0 = bounds[0];
  752. il2cpp_array_size_t idx0 = (il2cpp_array_size_t)(indexs[0].i32 - bound0.lower_bound);
  753. Il2CppArrayBounds& bound1 = bounds[1];
  754. il2cpp_array_size_t idx1 = (il2cpp_array_size_t)(indexs[1].i32 - bound1.lower_bound);
  755. if (idx0 < bound0.length && idx1 < bound1.length)
  756. {
  757. return arrayStart + ((idx0 * bound1.length) + idx1) * eleSize;
  758. }
  759. else
  760. {
  761. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetIndexOutOfRangeException());
  762. }
  763. break;
  764. }
  765. case 3:
  766. {
  767. Il2CppArrayBounds& bound0 = bounds[0];
  768. il2cpp_array_size_t idx0 = (il2cpp_array_size_t)(indexs[0].i32 - bound0.lower_bound);
  769. Il2CppArrayBounds& bound1 = bounds[1];
  770. il2cpp_array_size_t idx1 = (il2cpp_array_size_t)(indexs[1].i32 - bound1.lower_bound);
  771. Il2CppArrayBounds& bound2 = bounds[2];
  772. il2cpp_array_size_t idx2 = (il2cpp_array_size_t)(indexs[2].i32 - bound2.lower_bound);
  773. if (idx0 < bound0.length && idx1 < bound1.length && idx2 < bound2.length)
  774. {
  775. return arrayStart + ((idx0 * bound1.length + idx1) * bound2.length + idx2) * eleSize;
  776. }
  777. else
  778. {
  779. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetIndexOutOfRangeException());
  780. }
  781. break;
  782. }
  783. default:
  784. {
  785. IL2CPP_ASSERT(klass->rank > 0);
  786. il2cpp_array_size_t totalIdx = 0;
  787. for (uint8_t i = 0; i < klass->rank; i++)
  788. {
  789. Il2CppArrayBounds& bound = bounds[i];
  790. il2cpp_array_size_t idx = (il2cpp_array_size_t)(indexs[i].i32 - bound.lower_bound);
  791. if (idx < bound.length)
  792. {
  793. totalIdx = totalIdx * bound.length + idx;
  794. }
  795. else
  796. {
  797. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetIndexOutOfRangeException());
  798. }
  799. }
  800. return arrayStart + totalIdx * eleSize;
  801. }
  802. }
  803. }
  804. template<typename T> void GetMdArrayElementExpandToStack(Il2CppArray* arr, StackObject* indexs, void* value)
  805. {
  806. CHECK_NOT_NULL_THROW(arr);
  807. *(int32_t*)value = *(T*)GetMdArrayElementAddress(arr, indexs);
  808. }
  809. template<typename T> void GetMdArrayElementCopyToStack(Il2CppArray* arr, StackObject* indexs, void* value)
  810. {
  811. CHECK_NOT_NULL_THROW(arr);
  812. *(T*)value = *(T*)GetMdArrayElementAddress(arr, indexs);
  813. }
  814. inline void GetMdArrayElementBySize(Il2CppArray* arr, StackObject* indexs, void* value)
  815. {
  816. CopyBySize(value, GetMdArrayElementAddress(arr, indexs), arr->klass->element_size);
  817. }
  818. inline void SetMdArrayElement(Il2CppArray* arr, StackObject* indexs, void* value)
  819. {
  820. CopyBySize(GetMdArrayElementAddress(arr, indexs), value, arr->klass->element_size);
  821. }
  822. inline void SetMdArrayElementWriteBarrier(Il2CppArray* arr, StackObject* indexs, void* value)
  823. {
  824. void* dst = GetMdArrayElementAddress(arr, indexs);
  825. uint32_t eleSize = arr->klass->element_size;
  826. CopyBySize(dst, value, eleSize);
  827. HYBRIDCLR_SET_WRITE_BARRIER((void**)dst, eleSize);
  828. }
  829. #pragma endregion
  830. #pragma region nullable
  831. inline void InitNullableValueType(void* nullableValueTypeObj, void* data, Il2CppClass* klass)
  832. {
  833. IL2CPP_ASSERT(klass->castClass->size_inited);
  834. uint32_t size = klass->castClass->instance_size - sizeof(Il2CppObject);
  835. std::memmove(GetNulllableDataOffset(nullableValueTypeObj, klass), data, size);
  836. *GetNulllableHasValueOffset(nullableValueTypeObj, klass) = 1;
  837. }
  838. inline void NewNullableValueType(void* nullableValueTypeObj, void* data, Il2CppClass* klass)
  839. {
  840. InitNullableValueType(nullableValueTypeObj, data, klass);
  841. }
  842. inline bool IsNullableHasValue(void* nullableValueObj, Il2CppClass* klass)
  843. {
  844. IL2CPP_ASSERT(klass->castClass->size_inited);
  845. return *(GetNulllableHasValueOffset(nullableValueObj, klass));
  846. }
  847. inline void GetNullableValueOrDefault2StackDataByType(void* dst, void* nullableValueObj, Il2CppClass* klass)
  848. {
  849. Il2CppClass* eleClass = klass->castClass;
  850. IL2CPP_ASSERT(eleClass->size_inited);
  851. uint32_t size = eleClass->instance_size - sizeof(Il2CppObject);
  852. bool notNull = *GetNulllableHasValueOffset(nullableValueObj, klass);
  853. void* srcData = GetNulllableDataOffset(nullableValueObj, klass);
  854. LabelGet:
  855. IL2CPP_ASSERT(IS_CLASS_VALUE_TYPE(eleClass));
  856. switch (eleClass->byval_arg.type)
  857. {
  858. case IL2CPP_TYPE_BOOLEAN:
  859. {
  860. *(int32_t*)dst = notNull ? *(uint8_t*)srcData : 0;
  861. break;
  862. }
  863. case IL2CPP_TYPE_I1:
  864. {
  865. *(int32_t*)dst = notNull ? *(int8_t*)srcData : 0;
  866. break;
  867. }
  868. case IL2CPP_TYPE_U1:
  869. {
  870. *(int32_t*)dst = notNull ? *(uint8_t*)srcData : 0;
  871. break;
  872. }
  873. case IL2CPP_TYPE_I2:
  874. {
  875. *(int32_t*)dst = notNull ? *(int16_t*)srcData : 0;
  876. break;
  877. }
  878. case IL2CPP_TYPE_U2:
  879. case IL2CPP_TYPE_CHAR:
  880. {
  881. *(int32_t*)dst = notNull ? *(uint16_t*)srcData : 0;
  882. break;
  883. }
  884. case IL2CPP_TYPE_I4:
  885. case IL2CPP_TYPE_U4:
  886. {
  887. *(int32_t*)dst = notNull ? *(int32_t*)srcData : 0;
  888. break;
  889. }
  890. case IL2CPP_TYPE_I8:
  891. case IL2CPP_TYPE_U8:
  892. {
  893. *(int64_t*)dst = notNull ? *(int64_t*)srcData : 0;
  894. break;
  895. }
  896. case IL2CPP_TYPE_R4:
  897. {
  898. *(float*)dst = notNull ? *(float*)srcData : 0;
  899. break;
  900. }
  901. case IL2CPP_TYPE_R8:
  902. {
  903. *(double*)dst = notNull ? *(double*)srcData : 0.0;
  904. break;
  905. }
  906. case IL2CPP_TYPE_I:
  907. case IL2CPP_TYPE_U:
  908. {
  909. #if HYBRIDCLR_ARCH_64
  910. * (int64_t*)dst = notNull ? *(int64_t*)srcData : 0;
  911. #else
  912. * (int32_t*)dst = notNull ? *(int32_t*)srcData : 0;
  913. #endif
  914. break;
  915. }
  916. case IL2CPP_TYPE_VALUETYPE:
  917. case IL2CPP_TYPE_GENERICINST:
  918. {
  919. if (eleClass->enumtype)
  920. {
  921. eleClass = eleClass->castClass;
  922. goto LabelGet;
  923. }
  924. if (notNull)
  925. {
  926. std::memmove(dst, srcData, size);
  927. }
  928. else
  929. {
  930. std::memset(dst, 0, size);
  931. }
  932. break;
  933. }
  934. default:
  935. {
  936. RaiseExecutionEngineException("GetNullableValueOrDefault2StackDataByType");
  937. }
  938. }
  939. }
  940. inline void GetNullableValueOrDefault2StackDataByType(void* dst, void* nullableValueObj, void* defaultData, Il2CppClass* klass)
  941. {
  942. Il2CppClass* eleClass = klass->castClass;
  943. IL2CPP_ASSERT(eleClass->size_inited);
  944. uint32_t size = eleClass->instance_size - sizeof(Il2CppObject);
  945. void* srcData;
  946. bool notNull = *GetNulllableHasValueOffset(nullableValueObj, klass);
  947. if (notNull)
  948. {
  949. srcData = GetNulllableDataOffset(nullableValueObj, klass);
  950. }
  951. else
  952. {
  953. if (defaultData == nullptr)
  954. {
  955. il2cpp::vm::Exception::Raise(il2cpp::vm::Exception::GetInvalidOperationException("Nullable object must have a value."));
  956. }
  957. srcData = defaultData;
  958. }
  959. LabelGet:
  960. switch (eleClass->byval_arg.type)
  961. {
  962. case IL2CPP_TYPE_BOOLEAN:
  963. {
  964. *(int32_t*)dst = *(uint8_t*)srcData;
  965. break;
  966. }
  967. case IL2CPP_TYPE_CHAR:
  968. {
  969. *(int32_t*)dst = *(uint16_t*)srcData;
  970. break;
  971. }
  972. case IL2CPP_TYPE_I1:
  973. {
  974. *(int32_t*)dst = *(int8_t*)srcData;
  975. break;
  976. }
  977. case IL2CPP_TYPE_U1:
  978. {
  979. *(int32_t*)dst = *(uint8_t*)srcData;
  980. break;
  981. }
  982. case IL2CPP_TYPE_I2:
  983. {
  984. *(int32_t*)dst = *(int16_t*)srcData;
  985. break;
  986. }
  987. case IL2CPP_TYPE_U2:
  988. {
  989. *(int32_t*)dst = *(uint16_t*)srcData;
  990. break;
  991. }
  992. case IL2CPP_TYPE_I4:
  993. case IL2CPP_TYPE_U4:
  994. {
  995. *(int32_t*)dst = *(int32_t*)srcData;
  996. break;
  997. }
  998. case IL2CPP_TYPE_I8:
  999. case IL2CPP_TYPE_U8:
  1000. {
  1001. *(int64_t*)dst = *(int64_t*)srcData;
  1002. break;
  1003. }
  1004. case IL2CPP_TYPE_R4:
  1005. {
  1006. *(float*)dst = *(float*)srcData;
  1007. break;
  1008. }
  1009. case IL2CPP_TYPE_R8:
  1010. {
  1011. *(double*)dst = *(double*)srcData;
  1012. break;
  1013. }
  1014. case IL2CPP_TYPE_I:
  1015. case IL2CPP_TYPE_U:
  1016. {
  1017. #if HYBRIDCLR_ARCH_64
  1018. * (int64_t*)dst = *(int64_t*)srcData;
  1019. #else
  1020. * (int32_t*)dst = *(int32_t*)srcData;
  1021. #endif
  1022. break;
  1023. }
  1024. case IL2CPP_TYPE_VALUETYPE:
  1025. case IL2CPP_TYPE_GENERICINST:
  1026. {
  1027. if (eleClass->enumtype)
  1028. {
  1029. eleClass = eleClass->castClass;
  1030. goto LabelGet;
  1031. }
  1032. std::memmove(dst, srcData, size);
  1033. break;
  1034. }
  1035. default:
  1036. {
  1037. RaiseExecutionEngineException("GetNullableValue2StackDataByType");
  1038. }
  1039. }
  1040. }
  1041. #pragma endregion
  1042. #pragma region misc
  1043. // not boxed data
  1044. inline int32_t HiInterlockedCompareExchange(int32_t* location, int32_t newValue, int32_t oldValue)
  1045. {
  1046. return il2cpp::icalls::mscorlib::System::Threading::Interlocked::CompareExchange(location, newValue, oldValue);
  1047. }
  1048. inline int64_t HiInterlockedCompareExchange(int64_t* location, int64_t newValue, int64_t oldValue)
  1049. {
  1050. return il2cpp::icalls::mscorlib::System::Threading::Interlocked::CompareExchange64(location, newValue, oldValue);
  1051. }
  1052. inline void* HiInterlockedCompareExchange(void** location, void* newValue, void* oldValue)
  1053. {
  1054. return il2cpp::icalls::mscorlib::System::Threading::Interlocked::CompareExchange_T(location, newValue, oldValue);
  1055. }
  1056. inline int32_t HiInterlockedExchange(int32_t* location, int32_t newValue)
  1057. {
  1058. return il2cpp::icalls::mscorlib::System::Threading::Interlocked::Exchange(location, newValue);
  1059. }
  1060. inline int64_t HiInterlockedExchange(int64_t* location, int64_t newValue)
  1061. {
  1062. return il2cpp::icalls::mscorlib::System::Threading::Interlocked::Exchange64(location, newValue);
  1063. }
  1064. inline void* HiInterlockedExchange(void** location, void* newValue)
  1065. {
  1066. return il2cpp::icalls::mscorlib::System::Threading::Interlocked::ExchangePointer(location, newValue);
  1067. }
  1068. #define MEMORY_BARRIER() il2cpp::os::Atomic::FullMemoryBarrier()
  1069. inline int32_t UnsafeEnumCast(void* src, uint16_t type)
  1070. {
  1071. switch ((Il2CppTypeEnum)type)
  1072. {
  1073. case IL2CPP_TYPE_BOOLEAN: return *(int8_t*)src;
  1074. case IL2CPP_TYPE_CHAR: return *(uint16_t*)src;
  1075. case IL2CPP_TYPE_I1: return *(int8_t*)src;
  1076. case IL2CPP_TYPE_U1: return *(uint8_t*)src;
  1077. case IL2CPP_TYPE_I2: return *(int16_t*)src;
  1078. case IL2CPP_TYPE_U2: return *(uint16_t*)src;
  1079. case IL2CPP_TYPE_I4: return *(int32_t*)src;
  1080. case IL2CPP_TYPE_U4: return *(uint32_t*)src;
  1081. default: RaiseExecutionEngineException("UnsafeEnumCast not support type"); return -1;
  1082. }
  1083. }
  1084. inline void ConstructorDelegate2(MethodInfo* ctor, Il2CppDelegate* del, Il2CppObject* target, MethodInfo* method)
  1085. {
  1086. #if HYBRIDCLR_UNITY_2021_OR_NEW
  1087. void* ctorArgs[2] = { target, (void*)&method };
  1088. ctor->invoker_method(ctor->methodPointer, ctor, del, ctorArgs, NULL);
  1089. #else
  1090. RaiseNotSupportedException("ConstructorDelegate2");
  1091. #endif
  1092. }
  1093. #pragma endregion
  1094. #pragma region function
  1095. #define SAVE_CUR_FRAME(nextIp) { \
  1096. frame->ip = nextIp; \
  1097. }
  1098. #define LOAD_PREV_FRAME() { \
  1099. imi = frame->method; \
  1100. ip = frame->ip; \
  1101. ipBase = imi->codes; \
  1102. localVarBase = frame->stackBasePtr; \
  1103. }
  1104. // maxStackSize包含 arg + local + eval,对于解释器栈来说,可能多余
  1105. #define PREPARE_NEW_FRAME_FROM_NATIVE(newMethodInfo, argBasePtr, retPtr) { \
  1106. imi = newMethodInfo->interpData ? (InterpMethodInfo*)newMethodInfo->interpData : InterpreterModule::GetInterpMethodInfo(newMethodInfo); \
  1107. frame = interpFrameGroup.EnterFrameFromNative(imi, argBasePtr); \
  1108. frame->ret = retPtr; \
  1109. ip = ipBase = imi->codes; \
  1110. localVarBase = frame->stackBasePtr; \
  1111. }
  1112. #define PREPARE_NEW_FRAME_FROM_INTERPRETER(newMethodInfo, argBasePtr, retPtr) { \
  1113. imi = newMethodInfo->interpData ? (InterpMethodInfo*)newMethodInfo->interpData : InterpreterModule::GetInterpMethodInfo(newMethodInfo); \
  1114. frame = interpFrameGroup.EnterFrameFromInterpreter(imi, argBasePtr); \
  1115. frame->ret = retPtr; \
  1116. ip = ipBase = imi->codes; \
  1117. localVarBase = frame->stackBasePtr; \
  1118. }
  1119. #define LEAVE_FRAME() { \
  1120. frame = interpFrameGroup.LeaveFrame(); \
  1121. if (frame) \
  1122. { \
  1123. LOAD_PREV_FRAME(); \
  1124. }\
  1125. else \
  1126. { \
  1127. goto ExitEvalLoop; \
  1128. } \
  1129. }
  1130. #define SET_RET_AND_LEAVE_FRAME(nativeSize, interpSize) { \
  1131. void* _curRet = frame->ret; \
  1132. frame = interpFrameGroup.LeaveFrame(); \
  1133. if (frame) \
  1134. { \
  1135. Copy##interpSize(_curRet, (void*)(localVarBase + __ret)); \
  1136. LOAD_PREV_FRAME(); \
  1137. }\
  1138. else \
  1139. { \
  1140. Copy##nativeSize(_curRet, (void*)(localVarBase + __ret)); \
  1141. goto ExitEvalLoop; \
  1142. } \
  1143. }
  1144. #define CALL_INTERP_VOID(nextIp, methodInfo, argBasePtr) { \
  1145. SAVE_CUR_FRAME(nextIp) \
  1146. PREPARE_NEW_FRAME_FROM_INTERPRETER(methodInfo, argBasePtr, nullptr); \
  1147. }
  1148. #define CALL_INTERP_RET(nextIp, methodInfo, argBasePtr, retPtr) { \
  1149. SAVE_CUR_FRAME(nextIp) \
  1150. PREPARE_NEW_FRAME_FROM_INTERPRETER(methodInfo, argBasePtr, retPtr); \
  1151. }
  1152. #pragma endregion
  1153. #pragma region delegate
  1154. inline void InvokeSingleDelegate(uint16_t invokeParamCount, const MethodInfo * method, Il2CppObject * obj, Managed2NativeCallMethod staticM2NMethod, Managed2NativeCallMethod instanceM2NMethod, uint16_t * argIdxs, StackObject * localVarBase, void* ret)
  1155. {
  1156. if (!InterpreterModule::HasImplementCallNative2Managed(method))
  1157. {
  1158. instanceM2NMethod = staticM2NMethod = InterpreterModule::Managed2NativeCallByReflectionInvoke;
  1159. }
  1160. StackObject* target;
  1161. switch ((int32_t)invokeParamCount - (int32_t)method->parameters_count)
  1162. {
  1163. case 0:
  1164. {
  1165. if (hybridclr::metadata::IsInstanceMethod(method))
  1166. {
  1167. CHECK_NOT_NULL_THROW(obj);
  1168. target = localVarBase + argIdxs[0];
  1169. target->obj = obj + IS_CLASS_VALUE_TYPE(method->klass);
  1170. instanceM2NMethod(method, argIdxs, localVarBase, ret);
  1171. }
  1172. else
  1173. {
  1174. RuntimeInitClassCCtor(method);
  1175. staticM2NMethod(method, argIdxs + 1, localVarBase, ret);
  1176. }
  1177. break;
  1178. }
  1179. case -1:
  1180. {
  1181. IL2CPP_ASSERT(!hybridclr::metadata::IsInstanceMethod(method));
  1182. target = localVarBase + argIdxs[0];
  1183. target->obj = obj;
  1184. instanceM2NMethod(method, argIdxs, localVarBase, ret);
  1185. break;
  1186. }
  1187. case 1:
  1188. {
  1189. IL2CPP_ASSERT(invokeParamCount == method->parameters_count + 1);
  1190. IL2CPP_ASSERT(hybridclr::metadata::IsInstanceMethod(method));
  1191. target = localVarBase + argIdxs[1];
  1192. CHECK_NOT_NULL_THROW(target->obj);
  1193. staticM2NMethod(method, argIdxs + 1, localVarBase, ret);
  1194. break;
  1195. }
  1196. default:
  1197. {
  1198. RaiseExecutionEngineException("bad delegate");
  1199. }
  1200. }
  1201. }
  1202. inline Il2CppObject* InvokeDelegateBeginInvoke(const MethodInfo* method, uint16_t* argIdxs, StackObject* localVarBase)
  1203. {
  1204. int32_t paramCount = method->parameters_count;
  1205. RuntimeDelegate* del = (RuntimeDelegate*)localVarBase[argIdxs[0]].obj;
  1206. CHECK_NOT_NULL_THROW(del);
  1207. RuntimeDelegate* callBack = (RuntimeDelegate*)localVarBase[argIdxs[paramCount - 1]].obj;
  1208. RuntimeObject* ctx = (RuntimeObject*)localVarBase[argIdxs[paramCount]].obj;
  1209. void* newArgs[256];
  1210. newArgs[paramCount - 1] = {};
  1211. for (int i = 0; i < paramCount - 2; i++)
  1212. {
  1213. const Il2CppType* argType = GET_METHOD_PARAMETER_TYPE(method->parameters[i]);
  1214. StackObject* argSrc = localVarBase + argIdxs[i+1];
  1215. void** argDst = newArgs + i;
  1216. if (argType->byref)
  1217. {
  1218. argSrc = (StackObject*)argSrc->ptr;
  1219. }
  1220. if (hybridclr::metadata::IsValueType(argType))
  1221. {
  1222. *argDst = il2cpp::vm::Object::Box(il2cpp::vm::Class::FromIl2CppType(argType), argSrc);
  1223. }
  1224. else
  1225. {
  1226. *argDst = argSrc->ptr;
  1227. }
  1228. }
  1229. return (RuntimeObject*)il2cpp_codegen_delegate_begin_invoke((RuntimeDelegate*)del, (void**)newArgs, callBack, ctx);
  1230. }
  1231. inline void InvokeDelegateEndInvokeVoid(MethodInfo* method, Il2CppAsyncResult* asyncResult)
  1232. {
  1233. il2cpp_codegen_delegate_end_invoke(asyncResult, 0);
  1234. }
  1235. inline void InvokeDelegateEndInvokeRet(MethodInfo* method, Il2CppAsyncResult* asyncResult, void* ret)
  1236. {
  1237. Il2CppObject* result = il2cpp_codegen_delegate_end_invoke(asyncResult, 0);
  1238. Il2CppClass* retKlass = il2cpp::vm::Class::FromIl2CppType(method->return_type);
  1239. HiUnboxAny2StackObject(result, retKlass, ret);
  1240. }
  1241. #pragma endregion
  1242. #pragma region exception
  1243. constexpr int EXCEPTION_FLOW_INFO_ALLOC_BATCH_NUM = 3;
  1244. inline void PushExceptionFlowInfo(InterpFrame* frame, MachineState& machine, const ExceptionFlowInfo& newExFlowInfo)
  1245. {
  1246. if (frame->exFlowCount >= frame->exFlowCapaticy)
  1247. {
  1248. ExceptionFlowInfo* newEfi = machine.AllocExceptionFlow(EXCEPTION_FLOW_INFO_ALLOC_BATCH_NUM);
  1249. if (frame->exFlowBase == nullptr)
  1250. {
  1251. frame->exFlowBase = newEfi;
  1252. }
  1253. frame->exFlowCapaticy += EXCEPTION_FLOW_INFO_ALLOC_BATCH_NUM;
  1254. }
  1255. frame->exFlowBase[frame->exFlowCount++] = newExFlowInfo;
  1256. }
  1257. inline void PopPrevExceptionFlowInfo(InterpFrame* frame, ExceptionFlowInfo** curEx)
  1258. {
  1259. if (frame->exFlowCount >= 2)
  1260. {
  1261. frame->exFlowBase[frame->exFlowCount - 2] = frame->exFlowBase[frame->exFlowCount - 1];
  1262. --frame->exFlowCount;
  1263. if (curEx)
  1264. {
  1265. *curEx = frame->exFlowBase + frame->exFlowCount - 1;
  1266. }
  1267. }
  1268. }
  1269. inline void PopCurExceptionFlowInfo(InterpFrame* frame)
  1270. {
  1271. if (frame->exFlowCount >= 1)
  1272. {
  1273. --frame->exFlowCount;
  1274. }
  1275. }
  1276. #define PREPARE_EXCEPTION(_ex_, _firstHanlderIndex_) PushExceptionFlowInfo(frame, machine, {ExceptionFlowType::Exception, (int32_t)(ip - ipBase), _ex_, _firstHanlderIndex_, 0});
  1277. #define FIND_NEXT_EX_HANDLER_OR_UNWIND() \
  1278. while (true) \
  1279. { \
  1280. ExceptionFlowInfo* efi = frame->GetCurExFlow(); \
  1281. IL2CPP_ASSERT(efi && efi->exFlowType == ExceptionFlowType::Exception); \
  1282. IL2CPP_ASSERT(efi->ex); \
  1283. int32_t exClauseNum = (int32_t)imi->exClauses.size(); \
  1284. for (; efi->nextExClauseIndex < exClauseNum; ) \
  1285. { \
  1286. for (ExceptionFlowInfo* prevExFlow; (prevExFlow = frame->GetPrevExFlow()) && efi->nextExClauseIndex >= prevExFlow->nextExClauseIndex ;) {\
  1287. InterpExceptionClause* prevIec = imi->exClauses[prevExFlow->nextExClauseIndex - 1]; \
  1288. if (!(prevIec->handlerBeginOffset <= efi->throwOffset && efi->throwOffset < prevIec->handlerEndOffset)) { \
  1289. PopPrevExceptionFlowInfo(frame, &efi);\
  1290. } \
  1291. else \
  1292. { \
  1293. break; \
  1294. } \
  1295. }\
  1296. InterpExceptionClause* iec = imi->exClauses[efi->nextExClauseIndex++]; \
  1297. if (iec->tryBeginOffset <= efi->throwOffset && efi->throwOffset < iec->tryEndOffset) \
  1298. { \
  1299. switch (iec->flags) \
  1300. { \
  1301. case CorILExceptionClauseType::Exception: \
  1302. { \
  1303. if (il2cpp::vm::Class::IsAssignableFrom(iec->exKlass, efi->ex->klass)) \
  1304. { \
  1305. ip = ipBase + iec->handlerBeginOffset; \
  1306. StackObject* exObj = localVarBase + imi->evalStackBaseOffset; \
  1307. exObj->obj = efi->ex; \
  1308. efi->exFlowType = ExceptionFlowType::Catch;\
  1309. goto LoopStart; \
  1310. } \
  1311. break; \
  1312. } \
  1313. case CorILExceptionClauseType::Filter: \
  1314. { \
  1315. ip = ipBase + iec->filterBeginOffset; \
  1316. StackObject* exObj = localVarBase + imi->evalStackBaseOffset; \
  1317. exObj->obj = efi->ex; \
  1318. goto LoopStart; \
  1319. } \
  1320. case CorILExceptionClauseType::Finally: \
  1321. { \
  1322. ip = ipBase + iec->handlerBeginOffset; \
  1323. goto LoopStart; \
  1324. } \
  1325. case CorILExceptionClauseType::Fault: \
  1326. { \
  1327. ip = ipBase + iec->handlerBeginOffset; \
  1328. goto LoopStart; \
  1329. } \
  1330. default: \
  1331. { \
  1332. RaiseExecutionEngineException(""); \
  1333. } \
  1334. } \
  1335. } \
  1336. } \
  1337. frame = interpFrameGroup.LeaveFrame(); \
  1338. if (frame) \
  1339. { \
  1340. LOAD_PREV_FRAME(); \
  1341. PREPARE_EXCEPTION(efi->ex, 0); \
  1342. }\
  1343. else \
  1344. { \
  1345. lastUnwindException = efi->ex; \
  1346. goto UnWindFail; \
  1347. } \
  1348. }
  1349. #define THROW_EX(_ex_, _firstHandlerIndex_) { \
  1350. Il2CppException* ex = _ex_; \
  1351. CHECK_NOT_NULL_THROW(ex); \
  1352. PREPARE_EXCEPTION(ex, _firstHandlerIndex_); \
  1353. FIND_NEXT_EX_HANDLER_OR_UNWIND(); \
  1354. }
  1355. #define RETHROW_EX() { \
  1356. ExceptionFlowInfo* curExFlow = frame->GetCurExFlow(); \
  1357. IL2CPP_ASSERT(curExFlow->exFlowType == ExceptionFlowType::Catch); \
  1358. il2cpp::vm::Exception::Raise(curExFlow->ex, const_cast<MethodInfo*>(imi->method)); \
  1359. }
  1360. #define CONTINUE_NEXT_FINALLY() { \
  1361. ExceptionFlowInfo* efi = frame->GetCurExFlow(); \
  1362. IL2CPP_ASSERT(efi && efi->exFlowType == ExceptionFlowType::Leave); \
  1363. int32_t exClauseNum = (int32_t)imi->exClauses.size(); \
  1364. for (; efi->nextExClauseIndex < exClauseNum; ) \
  1365. { \
  1366. InterpExceptionClause* iec = imi->exClauses[efi->nextExClauseIndex++]; \
  1367. if (iec->tryBeginOffset <= efi->throwOffset && efi->throwOffset < iec->tryEndOffset) \
  1368. { \
  1369. if (iec->tryBeginOffset <= efi->leaveTarget && efi->leaveTarget < iec->tryEndOffset) \
  1370. { \
  1371. break; \
  1372. } \
  1373. switch (iec->flags) \
  1374. { \
  1375. case CorILExceptionClauseType::Finally: \
  1376. { \
  1377. ip = ipBase + iec->handlerBeginOffset; \
  1378. goto LoopStart; \
  1379. } \
  1380. case CorILExceptionClauseType::Exception: \
  1381. case CorILExceptionClauseType::Filter: \
  1382. case CorILExceptionClauseType::Fault: \
  1383. { \
  1384. break; \
  1385. } \
  1386. default: \
  1387. { \
  1388. RaiseExecutionEngineException(""); \
  1389. } \
  1390. } \
  1391. } \
  1392. } \
  1393. ip = ipBase + efi->leaveTarget; \
  1394. PopCurExceptionFlowInfo(frame); \
  1395. }
  1396. #define POP_PREV_CATCH_HANDLERS(leaveTarget)\
  1397. { \
  1398. for (ExceptionFlowInfo* prevExFlow; (prevExFlow = frame->GetPrevExFlow()) && prevExFlow->exFlowType == ExceptionFlowType::Catch ;) { \
  1399. InterpExceptionClause* prevIec = imi->exClauses[prevExFlow->nextExClauseIndex - 1]; \
  1400. if (!(prevIec->handlerBeginOffset <= leaveTarget && leaveTarget < prevIec->handlerEndOffset)) { \
  1401. PopPrevExceptionFlowInfo(frame, nullptr); \
  1402. } \
  1403. else \
  1404. { \
  1405. break; \
  1406. } \
  1407. }\
  1408. }
  1409. #define LEAVE_EX(target, firstHandlerIndex) { \
  1410. PushExceptionFlowInfo(frame, machine, {ExceptionFlowType::Leave, (int32_t)(ip - ipBase), nullptr, firstHandlerIndex + 1, target}); \
  1411. InterpExceptionClause* iec = imi->exClauses[firstHandlerIndex]; \
  1412. POP_PREV_CATCH_HANDLERS(target); \
  1413. ip = ipBase + iec->handlerBeginOffset; \
  1414. }
  1415. #define POP_CUR_CATCH_HANDLERS(leaveTarget)\
  1416. { \
  1417. for (ExceptionFlowInfo* prevExFlow; (prevExFlow = frame->GetCurExFlow()) && prevExFlow->exFlowType == ExceptionFlowType::Catch ;) { \
  1418. InterpExceptionClause* prevIec = imi->exClauses[prevExFlow->nextExClauseIndex - 1]; \
  1419. if (!(prevIec->handlerBeginOffset <= leaveTarget && leaveTarget < prevIec->handlerEndOffset)) { \
  1420. PopCurExceptionFlowInfo(frame); \
  1421. } \
  1422. else \
  1423. { \
  1424. break; \
  1425. } \
  1426. }\
  1427. }
  1428. #define LEAVE_EX_DIRECTLY(target) { \
  1429. POP_CUR_CATCH_HANDLERS(target); \
  1430. ip = ipBase + target; \
  1431. }
  1432. #define ENDFILTER_EX(value) {\
  1433. ExceptionFlowInfo* curExFlow = frame->GetCurExFlow(); \
  1434. IL2CPP_ASSERT(curExFlow->exFlowType == ExceptionFlowType::Exception); \
  1435. if(!(value)) \
  1436. {\
  1437. FIND_NEXT_EX_HANDLER_OR_UNWIND();\
  1438. } \
  1439. else \
  1440. { \
  1441. curExFlow->exFlowType = ExceptionFlowType::Catch;\
  1442. }\
  1443. }
  1444. #define ENDFINALLY_EX() {\
  1445. ExceptionFlowInfo* curExFlow = frame->GetCurExFlow(); \
  1446. if (curExFlow->exFlowType == ExceptionFlowType::Exception) \
  1447. { \
  1448. FIND_NEXT_EX_HANDLER_OR_UNWIND(); \
  1449. } \
  1450. else \
  1451. { \
  1452. CONTINUE_NEXT_FINALLY();\
  1453. }\
  1454. }
  1455. #pragma endregion
  1456. void Interpreter::Execute(const MethodInfo* methodInfo, StackObject* args, void* ret)
  1457. {
  1458. INIT_CLASS(methodInfo->klass);
  1459. MachineState& machine = InterpreterModule::GetCurrentThreadMachineState();
  1460. InterpFrameGroup interpFrameGroup(machine);
  1461. const InterpMethodInfo* imi;
  1462. InterpFrame* frame;
  1463. StackObject* localVarBase;
  1464. byte* ipBase;
  1465. byte* ip;
  1466. Il2CppException* lastUnwindException;
  1467. PREPARE_NEW_FRAME_FROM_NATIVE(methodInfo, args, ret);
  1468. StackObject tempRet[kMaxRetValueTypeStackObjectSize];
  1469. LoopStart:
  1470. try
  1471. {
  1472. for (;;)
  1473. {
  1474. switch (*(HiOpcodeEnum*)ip)
  1475. {
  1476. #pragma region memory
  1477. //!!!{{MEMORY
  1478. case HiOpcodeEnum::InitLocals_n_2:
  1479. {
  1480. uint16_t __size = *(uint16_t*)(ip + 2);
  1481. InitDefaultN(localVarBase + imi->localVarBaseOffset, __size);
  1482. ip += 8;
  1483. continue;
  1484. }
  1485. case HiOpcodeEnum::InitLocals_n_4:
  1486. {
  1487. uint32_t __size = *(uint32_t*)(ip + 4);
  1488. InitDefaultN(localVarBase + imi->localVarBaseOffset, __size);
  1489. ip += 8;
  1490. continue;
  1491. }
  1492. case HiOpcodeEnum::LdlocVarVar:
  1493. {
  1494. uint16_t __dst = *(uint16_t*)(ip + 2);
  1495. uint16_t __src = *(uint16_t*)(ip + 4);
  1496. (*(uint64_t*)(localVarBase + __dst)) = (*(uint64_t*)(localVarBase + __src));
  1497. ip += 8;
  1498. continue;
  1499. }
  1500. case HiOpcodeEnum::LdlocExpandVarVar_i1:
  1501. {
  1502. uint16_t __dst = *(uint16_t*)(ip + 2);
  1503. uint16_t __src = *(uint16_t*)(ip + 4);
  1504. (*(int32_t*)(localVarBase + __dst)) = (*(int8_t*)(localVarBase + __src));
  1505. ip += 8;
  1506. continue;
  1507. }
  1508. case HiOpcodeEnum::LdlocExpandVarVar_u1:
  1509. {
  1510. uint16_t __dst = *(uint16_t*)(ip + 2);
  1511. uint16_t __src = *(uint16_t*)(ip + 4);
  1512. (*(int32_t*)(localVarBase + __dst)) = (*(uint8_t*)(localVarBase + __src));
  1513. ip += 8;
  1514. continue;
  1515. }
  1516. case HiOpcodeEnum::LdlocExpandVarVar_i2:
  1517. {
  1518. uint16_t __dst = *(uint16_t*)(ip + 2);
  1519. uint16_t __src = *(uint16_t*)(ip + 4);
  1520. (*(int32_t*)(localVarBase + __dst)) = (*(int16_t*)(localVarBase + __src));
  1521. ip += 8;
  1522. continue;
  1523. }
  1524. case HiOpcodeEnum::LdlocExpandVarVar_u2:
  1525. {
  1526. uint16_t __dst = *(uint16_t*)(ip + 2);
  1527. uint16_t __src = *(uint16_t*)(ip + 4);
  1528. (*(int32_t*)(localVarBase + __dst)) = (*(uint16_t*)(localVarBase + __src));
  1529. ip += 8;
  1530. continue;
  1531. }
  1532. case HiOpcodeEnum::LdlocVarVarSize:
  1533. {
  1534. uint16_t __dst = *(uint16_t*)(ip + 2);
  1535. uint16_t __src = *(uint16_t*)(ip + 4);
  1536. uint16_t __size = *(uint16_t*)(ip + 6);
  1537. std::memmove((void*)(localVarBase + __dst), (void*)(localVarBase + __src), __size);
  1538. ip += 8;
  1539. continue;
  1540. }
  1541. case HiOpcodeEnum::LdlocVarAddress:
  1542. {
  1543. uint16_t __dst = *(uint16_t*)(ip + 2);
  1544. uint16_t __src = *(uint16_t*)(ip + 4);
  1545. (*(void**)(localVarBase + __dst)) = (void*)(localVarBase + __src);
  1546. ip += 8;
  1547. continue;
  1548. }
  1549. case HiOpcodeEnum::LdcVarConst_1:
  1550. {
  1551. uint16_t __dst = *(uint16_t*)(ip + 4);
  1552. uint8_t __src = *(uint8_t*)(ip + 2);
  1553. (*(int32_t*)(localVarBase + __dst)) = __src;
  1554. ip += 8;
  1555. continue;
  1556. }
  1557. case HiOpcodeEnum::LdcVarConst_2:
  1558. {
  1559. uint16_t __dst = *(uint16_t*)(ip + 2);
  1560. uint16_t __src = *(uint16_t*)(ip + 4);
  1561. (*(int32_t*)(localVarBase + __dst)) = __src;
  1562. ip += 8;
  1563. continue;
  1564. }
  1565. case HiOpcodeEnum::LdcVarConst_4:
  1566. {
  1567. uint16_t __dst = *(uint16_t*)(ip + 2);
  1568. uint32_t __src = *(uint32_t*)(ip + 4);
  1569. (*(int32_t*)(localVarBase + __dst)) = __src;
  1570. ip += 8;
  1571. continue;
  1572. }
  1573. case HiOpcodeEnum::LdcVarConst_8:
  1574. {
  1575. uint16_t __dst = *(uint16_t*)(ip + 2);
  1576. uint64_t __src = *(uint64_t*)(ip + 8);
  1577. (*(uint64_t*)(localVarBase + __dst)) = __src;
  1578. ip += 16;
  1579. continue;
  1580. }
  1581. case HiOpcodeEnum::LdnullVar:
  1582. {
  1583. uint16_t __dst = *(uint16_t*)(ip + 2);
  1584. (*(void**)(localVarBase + __dst)) = nullptr;
  1585. ip += 8;
  1586. continue;
  1587. }
  1588. case HiOpcodeEnum::LdindVarVar_i1:
  1589. {
  1590. uint16_t __dst = *(uint16_t*)(ip + 2);
  1591. uint16_t __src = *(uint16_t*)(ip + 4);
  1592. (*(int32_t*)(localVarBase + __dst)) = (*(int8_t*)*(void**)(localVarBase + __src));
  1593. ip += 8;
  1594. continue;
  1595. }
  1596. case HiOpcodeEnum::LdindVarVar_u1:
  1597. {
  1598. uint16_t __dst = *(uint16_t*)(ip + 2);
  1599. uint16_t __src = *(uint16_t*)(ip + 4);
  1600. (*(int32_t*)(localVarBase + __dst)) = (*(uint8_t*)*(void**)(localVarBase + __src));
  1601. ip += 8;
  1602. continue;
  1603. }
  1604. case HiOpcodeEnum::LdindVarVar_i2:
  1605. {
  1606. uint16_t __dst = *(uint16_t*)(ip + 2);
  1607. uint16_t __src = *(uint16_t*)(ip + 4);
  1608. (*(int32_t*)(localVarBase + __dst)) = (*(int16_t*)*(void**)(localVarBase + __src));
  1609. ip += 8;
  1610. continue;
  1611. }
  1612. case HiOpcodeEnum::LdindVarVar_u2:
  1613. {
  1614. uint16_t __dst = *(uint16_t*)(ip + 2);
  1615. uint16_t __src = *(uint16_t*)(ip + 4);
  1616. (*(int32_t*)(localVarBase + __dst)) = (*(uint16_t*)*(void**)(localVarBase + __src));
  1617. ip += 8;
  1618. continue;
  1619. }
  1620. case HiOpcodeEnum::LdindVarVar_i4:
  1621. {
  1622. uint16_t __dst = *(uint16_t*)(ip + 2);
  1623. uint16_t __src = *(uint16_t*)(ip + 4);
  1624. (*(int32_t*)(localVarBase + __dst)) = (*(int32_t*)*(void**)(localVarBase + __src));
  1625. ip += 8;
  1626. continue;
  1627. }
  1628. case HiOpcodeEnum::LdindVarVar_u4:
  1629. {
  1630. uint16_t __dst = *(uint16_t*)(ip + 2);
  1631. uint16_t __src = *(uint16_t*)(ip + 4);
  1632. (*(int32_t*)(localVarBase + __dst)) = (*(uint32_t*)*(void**)(localVarBase + __src));
  1633. ip += 8;
  1634. continue;
  1635. }
  1636. case HiOpcodeEnum::LdindVarVar_i8:
  1637. {
  1638. uint16_t __dst = *(uint16_t*)(ip + 2);
  1639. uint16_t __src = *(uint16_t*)(ip + 4);
  1640. (*(int64_t*)(localVarBase + __dst)) = (*(int64_t*)*(void**)(localVarBase + __src));
  1641. ip += 8;
  1642. continue;
  1643. }
  1644. case HiOpcodeEnum::LdindVarVar_f4:
  1645. {
  1646. uint16_t __dst = *(uint16_t*)(ip + 2);
  1647. uint16_t __src = *(uint16_t*)(ip + 4);
  1648. (*(float*)(localVarBase + __dst)) = (*(float*)*(void**)(localVarBase + __src));
  1649. ip += 8;
  1650. continue;
  1651. }
  1652. case HiOpcodeEnum::LdindVarVar_f8:
  1653. {
  1654. uint16_t __dst = *(uint16_t*)(ip + 2);
  1655. uint16_t __src = *(uint16_t*)(ip + 4);
  1656. (*(double*)(localVarBase + __dst)) = (*(double*)*(void**)(localVarBase + __src));
  1657. ip += 8;
  1658. continue;
  1659. }
  1660. case HiOpcodeEnum::StindVarVar_i1:
  1661. {
  1662. uint16_t __dst = *(uint16_t*)(ip + 2);
  1663. uint16_t __src = *(uint16_t*)(ip + 4);
  1664. (*(int8_t*)*(void**)(localVarBase + __dst)) = (*(int8_t*)(localVarBase + __src));
  1665. ip += 8;
  1666. continue;
  1667. }
  1668. case HiOpcodeEnum::StindVarVar_i2:
  1669. {
  1670. uint16_t __dst = *(uint16_t*)(ip + 2);
  1671. uint16_t __src = *(uint16_t*)(ip + 4);
  1672. (*(int16_t*)*(void**)(localVarBase + __dst)) = (*(int16_t*)(localVarBase + __src));
  1673. ip += 8;
  1674. continue;
  1675. }
  1676. case HiOpcodeEnum::StindVarVar_i4:
  1677. {
  1678. uint16_t __dst = *(uint16_t*)(ip + 2);
  1679. uint16_t __src = *(uint16_t*)(ip + 4);
  1680. (*(int32_t*)*(void**)(localVarBase + __dst)) = (*(int32_t*)(localVarBase + __src));
  1681. ip += 8;
  1682. continue;
  1683. }
  1684. case HiOpcodeEnum::StindVarVar_i8:
  1685. {
  1686. uint16_t __dst = *(uint16_t*)(ip + 2);
  1687. uint16_t __src = *(uint16_t*)(ip + 4);
  1688. (*(int64_t*)*(void**)(localVarBase + __dst)) = (*(int64_t*)(localVarBase + __src));
  1689. ip += 8;
  1690. continue;
  1691. }
  1692. case HiOpcodeEnum::StindVarVar_f4:
  1693. {
  1694. uint16_t __dst = *(uint16_t*)(ip + 2);
  1695. uint16_t __src = *(uint16_t*)(ip + 4);
  1696. (*(float*)*(void**)(localVarBase + __dst)) = (*(float*)(localVarBase + __src));
  1697. ip += 8;
  1698. continue;
  1699. }
  1700. case HiOpcodeEnum::StindVarVar_f8:
  1701. {
  1702. uint16_t __dst = *(uint16_t*)(ip + 2);
  1703. uint16_t __src = *(uint16_t*)(ip + 4);
  1704. (*(double*)*(void**)(localVarBase + __dst)) = (*(double*)(localVarBase + __src));
  1705. ip += 8;
  1706. continue;
  1707. }
  1708. case HiOpcodeEnum::StindVarVar_ref:
  1709. {
  1710. uint16_t __dst = *(uint16_t*)(ip + 2);
  1711. uint16_t __src = *(uint16_t*)(ip + 4);
  1712. (*(Il2CppObject**)*(void**)(localVarBase + __dst)) = (*(Il2CppObject**)(localVarBase + __src)); HYBRIDCLR_SET_WRITE_BARRIER((void**)(*(void**)(localVarBase + __dst)));
  1713. ip += 8;
  1714. continue;
  1715. }
  1716. case HiOpcodeEnum::LocalAllocVarVar_n_2:
  1717. {
  1718. uint16_t __dst = *(uint16_t*)(ip + 2);
  1719. uint16_t __size = *(uint16_t*)(ip + 4);
  1720. (*(void**)(localVarBase + __dst)) = LOCAL_ALLOC((*(uint16_t*)(localVarBase + __size)));
  1721. ip += 8;
  1722. continue;
  1723. }
  1724. case HiOpcodeEnum::LocalAllocVarVar_n_4:
  1725. {
  1726. uint16_t __dst = *(uint16_t*)(ip + 2);
  1727. uint16_t __size = *(uint16_t*)(ip + 4);
  1728. (*(void**)(localVarBase + __dst)) = LOCAL_ALLOC((*(uint32_t*)(localVarBase + __size)));
  1729. ip += 8;
  1730. continue;
  1731. }
  1732. case HiOpcodeEnum::InitblkVarVarVar:
  1733. {
  1734. uint16_t __addr = *(uint16_t*)(ip + 2);
  1735. uint16_t __value = *(uint16_t*)(ip + 4);
  1736. uint16_t __size = *(uint16_t*)(ip + 6);
  1737. std::memset((*(void**)(localVarBase + __addr)), (*(uint8_t*)(localVarBase + __value)), (*(uint32_t*)(localVarBase + __size)));
  1738. ip += 8;
  1739. continue;
  1740. }
  1741. case HiOpcodeEnum::CpblkVarVar:
  1742. {
  1743. uint16_t __dst = *(uint16_t*)(ip + 2);
  1744. uint16_t __src = *(uint16_t*)(ip + 4);
  1745. uint16_t __size = *(uint16_t*)(ip + 6);
  1746. std::memmove((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)), (*(uint32_t*)(localVarBase + __size)));
  1747. ip += 8;
  1748. continue;
  1749. }
  1750. case HiOpcodeEnum::MemoryBarrier:
  1751. {
  1752. MEMORY_BARRIER();
  1753. ip += 8;
  1754. continue;
  1755. }
  1756. //!!!}}MEMORY
  1757. #pragma endregion
  1758. #pragma region CONVERT
  1759. //!!!{{CONVERT
  1760. case HiOpcodeEnum::ConvertVarVar_i4_i1:
  1761. {
  1762. uint16_t __dst = *(uint16_t*)(ip + 2);
  1763. uint16_t __src = *(uint16_t*)(ip + 4);
  1764. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(int32_t*)(localVarBase + __src)));
  1765. ip += 8;
  1766. continue;
  1767. }
  1768. case HiOpcodeEnum::ConvertVarVar_i4_u1:
  1769. {
  1770. uint16_t __dst = *(uint16_t*)(ip + 2);
  1771. uint16_t __src = *(uint16_t*)(ip + 4);
  1772. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  1773. ip += 8;
  1774. continue;
  1775. }
  1776. case HiOpcodeEnum::ConvertVarVar_i4_i2:
  1777. {
  1778. uint16_t __dst = *(uint16_t*)(ip + 2);
  1779. uint16_t __src = *(uint16_t*)(ip + 4);
  1780. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(int32_t*)(localVarBase + __src)));
  1781. ip += 8;
  1782. continue;
  1783. }
  1784. case HiOpcodeEnum::ConvertVarVar_i4_u2:
  1785. {
  1786. uint16_t __dst = *(uint16_t*)(ip + 2);
  1787. uint16_t __src = *(uint16_t*)(ip + 4);
  1788. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  1789. ip += 8;
  1790. continue;
  1791. }
  1792. case HiOpcodeEnum::ConvertVarVar_i4_i4:
  1793. {
  1794. uint16_t __dst = *(uint16_t*)(ip + 2);
  1795. uint16_t __src = *(uint16_t*)(ip + 4);
  1796. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(int32_t*)(localVarBase + __src)));
  1797. ip += 8;
  1798. continue;
  1799. }
  1800. case HiOpcodeEnum::ConvertVarVar_i4_u4:
  1801. {
  1802. uint16_t __dst = *(uint16_t*)(ip + 2);
  1803. uint16_t __src = *(uint16_t*)(ip + 4);
  1804. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  1805. ip += 8;
  1806. continue;
  1807. }
  1808. case HiOpcodeEnum::ConvertVarVar_i4_i8:
  1809. {
  1810. uint16_t __dst = *(uint16_t*)(ip + 2);
  1811. uint16_t __src = *(uint16_t*)(ip + 4);
  1812. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(int32_t*)(localVarBase + __src)));
  1813. ip += 8;
  1814. continue;
  1815. }
  1816. case HiOpcodeEnum::ConvertVarVar_i4_u8:
  1817. {
  1818. uint16_t __dst = *(uint16_t*)(ip + 2);
  1819. uint16_t __src = *(uint16_t*)(ip + 4);
  1820. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  1821. ip += 8;
  1822. continue;
  1823. }
  1824. case HiOpcodeEnum::ConvertVarVar_i4_f4:
  1825. {
  1826. uint16_t __dst = *(uint16_t*)(ip + 2);
  1827. uint16_t __src = *(uint16_t*)(ip + 4);
  1828. (*(float*)(localVarBase + __dst)) = (float)((*(int32_t*)(localVarBase + __src)));
  1829. ip += 8;
  1830. continue;
  1831. }
  1832. case HiOpcodeEnum::ConvertVarVar_i4_f8:
  1833. {
  1834. uint16_t __dst = *(uint16_t*)(ip + 2);
  1835. uint16_t __src = *(uint16_t*)(ip + 4);
  1836. (*(double*)(localVarBase + __dst)) = (double)((*(int32_t*)(localVarBase + __src)));
  1837. ip += 8;
  1838. continue;
  1839. }
  1840. case HiOpcodeEnum::ConvertVarVar_u4_i1:
  1841. {
  1842. uint16_t __dst = *(uint16_t*)(ip + 2);
  1843. uint16_t __src = *(uint16_t*)(ip + 4);
  1844. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(uint32_t*)(localVarBase + __src)));
  1845. ip += 8;
  1846. continue;
  1847. }
  1848. case HiOpcodeEnum::ConvertVarVar_u4_u1:
  1849. {
  1850. uint16_t __dst = *(uint16_t*)(ip + 2);
  1851. uint16_t __src = *(uint16_t*)(ip + 4);
  1852. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)((*(uint32_t*)(localVarBase + __src)));
  1853. ip += 8;
  1854. continue;
  1855. }
  1856. case HiOpcodeEnum::ConvertVarVar_u4_i2:
  1857. {
  1858. uint16_t __dst = *(uint16_t*)(ip + 2);
  1859. uint16_t __src = *(uint16_t*)(ip + 4);
  1860. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(uint32_t*)(localVarBase + __src)));
  1861. ip += 8;
  1862. continue;
  1863. }
  1864. case HiOpcodeEnum::ConvertVarVar_u4_u2:
  1865. {
  1866. uint16_t __dst = *(uint16_t*)(ip + 2);
  1867. uint16_t __src = *(uint16_t*)(ip + 4);
  1868. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)((*(uint32_t*)(localVarBase + __src)));
  1869. ip += 8;
  1870. continue;
  1871. }
  1872. case HiOpcodeEnum::ConvertVarVar_u4_i4:
  1873. {
  1874. uint16_t __dst = *(uint16_t*)(ip + 2);
  1875. uint16_t __src = *(uint16_t*)(ip + 4);
  1876. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(uint32_t*)(localVarBase + __src)));
  1877. ip += 8;
  1878. continue;
  1879. }
  1880. case HiOpcodeEnum::ConvertVarVar_u4_u4:
  1881. {
  1882. uint16_t __dst = *(uint16_t*)(ip + 2);
  1883. uint16_t __src = *(uint16_t*)(ip + 4);
  1884. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)((*(uint32_t*)(localVarBase + __src)));
  1885. ip += 8;
  1886. continue;
  1887. }
  1888. case HiOpcodeEnum::ConvertVarVar_u4_i8:
  1889. {
  1890. uint16_t __dst = *(uint16_t*)(ip + 2);
  1891. uint16_t __src = *(uint16_t*)(ip + 4);
  1892. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(uint32_t*)(localVarBase + __src)));
  1893. ip += 8;
  1894. continue;
  1895. }
  1896. case HiOpcodeEnum::ConvertVarVar_u4_u8:
  1897. {
  1898. uint16_t __dst = *(uint16_t*)(ip + 2);
  1899. uint16_t __src = *(uint16_t*)(ip + 4);
  1900. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)((*(uint32_t*)(localVarBase + __src)));
  1901. ip += 8;
  1902. continue;
  1903. }
  1904. case HiOpcodeEnum::ConvertVarVar_u4_f4:
  1905. {
  1906. uint16_t __dst = *(uint16_t*)(ip + 2);
  1907. uint16_t __src = *(uint16_t*)(ip + 4);
  1908. (*(float*)(localVarBase + __dst)) = (float)((*(uint32_t*)(localVarBase + __src)));
  1909. ip += 8;
  1910. continue;
  1911. }
  1912. case HiOpcodeEnum::ConvertVarVar_u4_f8:
  1913. {
  1914. uint16_t __dst = *(uint16_t*)(ip + 2);
  1915. uint16_t __src = *(uint16_t*)(ip + 4);
  1916. (*(double*)(localVarBase + __dst)) = (double)((*(uint32_t*)(localVarBase + __src)));
  1917. ip += 8;
  1918. continue;
  1919. }
  1920. case HiOpcodeEnum::ConvertVarVar_i8_i1:
  1921. {
  1922. uint16_t __dst = *(uint16_t*)(ip + 2);
  1923. uint16_t __src = *(uint16_t*)(ip + 4);
  1924. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(int64_t*)(localVarBase + __src)));
  1925. ip += 8;
  1926. continue;
  1927. }
  1928. case HiOpcodeEnum::ConvertVarVar_i8_u1:
  1929. {
  1930. uint16_t __dst = *(uint16_t*)(ip + 2);
  1931. uint16_t __src = *(uint16_t*)(ip + 4);
  1932. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  1933. ip += 8;
  1934. continue;
  1935. }
  1936. case HiOpcodeEnum::ConvertVarVar_i8_i2:
  1937. {
  1938. uint16_t __dst = *(uint16_t*)(ip + 2);
  1939. uint16_t __src = *(uint16_t*)(ip + 4);
  1940. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(int64_t*)(localVarBase + __src)));
  1941. ip += 8;
  1942. continue;
  1943. }
  1944. case HiOpcodeEnum::ConvertVarVar_i8_u2:
  1945. {
  1946. uint16_t __dst = *(uint16_t*)(ip + 2);
  1947. uint16_t __src = *(uint16_t*)(ip + 4);
  1948. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  1949. ip += 8;
  1950. continue;
  1951. }
  1952. case HiOpcodeEnum::ConvertVarVar_i8_i4:
  1953. {
  1954. uint16_t __dst = *(uint16_t*)(ip + 2);
  1955. uint16_t __src = *(uint16_t*)(ip + 4);
  1956. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(int64_t*)(localVarBase + __src)));
  1957. ip += 8;
  1958. continue;
  1959. }
  1960. case HiOpcodeEnum::ConvertVarVar_i8_u4:
  1961. {
  1962. uint16_t __dst = *(uint16_t*)(ip + 2);
  1963. uint16_t __src = *(uint16_t*)(ip + 4);
  1964. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  1965. ip += 8;
  1966. continue;
  1967. }
  1968. case HiOpcodeEnum::ConvertVarVar_i8_i8:
  1969. {
  1970. uint16_t __dst = *(uint16_t*)(ip + 2);
  1971. uint16_t __src = *(uint16_t*)(ip + 4);
  1972. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(int64_t*)(localVarBase + __src)));
  1973. ip += 8;
  1974. continue;
  1975. }
  1976. case HiOpcodeEnum::ConvertVarVar_i8_u8:
  1977. {
  1978. uint16_t __dst = *(uint16_t*)(ip + 2);
  1979. uint16_t __src = *(uint16_t*)(ip + 4);
  1980. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  1981. ip += 8;
  1982. continue;
  1983. }
  1984. case HiOpcodeEnum::ConvertVarVar_i8_f4:
  1985. {
  1986. uint16_t __dst = *(uint16_t*)(ip + 2);
  1987. uint16_t __src = *(uint16_t*)(ip + 4);
  1988. (*(float*)(localVarBase + __dst)) = (float)((*(int64_t*)(localVarBase + __src)));
  1989. ip += 8;
  1990. continue;
  1991. }
  1992. case HiOpcodeEnum::ConvertVarVar_i8_f8:
  1993. {
  1994. uint16_t __dst = *(uint16_t*)(ip + 2);
  1995. uint16_t __src = *(uint16_t*)(ip + 4);
  1996. (*(double*)(localVarBase + __dst)) = (double)((*(int64_t*)(localVarBase + __src)));
  1997. ip += 8;
  1998. continue;
  1999. }
  2000. case HiOpcodeEnum::ConvertVarVar_u8_i1:
  2001. {
  2002. uint16_t __dst = *(uint16_t*)(ip + 2);
  2003. uint16_t __src = *(uint16_t*)(ip + 4);
  2004. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(uint64_t*)(localVarBase + __src)));
  2005. ip += 8;
  2006. continue;
  2007. }
  2008. case HiOpcodeEnum::ConvertVarVar_u8_u1:
  2009. {
  2010. uint16_t __dst = *(uint16_t*)(ip + 2);
  2011. uint16_t __src = *(uint16_t*)(ip + 4);
  2012. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)((*(uint64_t*)(localVarBase + __src)));
  2013. ip += 8;
  2014. continue;
  2015. }
  2016. case HiOpcodeEnum::ConvertVarVar_u8_i2:
  2017. {
  2018. uint16_t __dst = *(uint16_t*)(ip + 2);
  2019. uint16_t __src = *(uint16_t*)(ip + 4);
  2020. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(uint64_t*)(localVarBase + __src)));
  2021. ip += 8;
  2022. continue;
  2023. }
  2024. case HiOpcodeEnum::ConvertVarVar_u8_u2:
  2025. {
  2026. uint16_t __dst = *(uint16_t*)(ip + 2);
  2027. uint16_t __src = *(uint16_t*)(ip + 4);
  2028. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)((*(uint64_t*)(localVarBase + __src)));
  2029. ip += 8;
  2030. continue;
  2031. }
  2032. case HiOpcodeEnum::ConvertVarVar_u8_i4:
  2033. {
  2034. uint16_t __dst = *(uint16_t*)(ip + 2);
  2035. uint16_t __src = *(uint16_t*)(ip + 4);
  2036. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(uint64_t*)(localVarBase + __src)));
  2037. ip += 8;
  2038. continue;
  2039. }
  2040. case HiOpcodeEnum::ConvertVarVar_u8_u4:
  2041. {
  2042. uint16_t __dst = *(uint16_t*)(ip + 2);
  2043. uint16_t __src = *(uint16_t*)(ip + 4);
  2044. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)((*(uint64_t*)(localVarBase + __src)));
  2045. ip += 8;
  2046. continue;
  2047. }
  2048. case HiOpcodeEnum::ConvertVarVar_u8_i8:
  2049. {
  2050. uint16_t __dst = *(uint16_t*)(ip + 2);
  2051. uint16_t __src = *(uint16_t*)(ip + 4);
  2052. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(uint64_t*)(localVarBase + __src)));
  2053. ip += 8;
  2054. continue;
  2055. }
  2056. case HiOpcodeEnum::ConvertVarVar_u8_u8:
  2057. {
  2058. uint16_t __dst = *(uint16_t*)(ip + 2);
  2059. uint16_t __src = *(uint16_t*)(ip + 4);
  2060. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)((*(uint64_t*)(localVarBase + __src)));
  2061. ip += 8;
  2062. continue;
  2063. }
  2064. case HiOpcodeEnum::ConvertVarVar_u8_f4:
  2065. {
  2066. uint16_t __dst = *(uint16_t*)(ip + 2);
  2067. uint16_t __src = *(uint16_t*)(ip + 4);
  2068. (*(float*)(localVarBase + __dst)) = (float)((*(uint64_t*)(localVarBase + __src)));
  2069. ip += 8;
  2070. continue;
  2071. }
  2072. case HiOpcodeEnum::ConvertVarVar_u8_f8:
  2073. {
  2074. uint16_t __dst = *(uint16_t*)(ip + 2);
  2075. uint16_t __src = *(uint16_t*)(ip + 4);
  2076. (*(double*)(localVarBase + __dst)) = (double)((*(uint64_t*)(localVarBase + __src)));
  2077. ip += 8;
  2078. continue;
  2079. }
  2080. case HiOpcodeEnum::ConvertVarVar_f4_i1:
  2081. {
  2082. uint16_t __dst = *(uint16_t*)(ip + 2);
  2083. uint16_t __src = *(uint16_t*)(ip + 4);
  2084. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int8_t>((*(float*)(localVarBase + __src)));
  2085. ip += 8;
  2086. continue;
  2087. }
  2088. case HiOpcodeEnum::ConvertVarVar_f4_u1:
  2089. {
  2090. uint16_t __dst = *(uint16_t*)(ip + 2);
  2091. uint16_t __src = *(uint16_t*)(ip + 4);
  2092. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint8_t, int32_t>((*(float*)(localVarBase + __src)));
  2093. ip += 8;
  2094. continue;
  2095. }
  2096. case HiOpcodeEnum::ConvertVarVar_f4_i2:
  2097. {
  2098. uint16_t __dst = *(uint16_t*)(ip + 2);
  2099. uint16_t __src = *(uint16_t*)(ip + 4);
  2100. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int16_t>((*(float*)(localVarBase + __src)));
  2101. ip += 8;
  2102. continue;
  2103. }
  2104. case HiOpcodeEnum::ConvertVarVar_f4_u2:
  2105. {
  2106. uint16_t __dst = *(uint16_t*)(ip + 2);
  2107. uint16_t __src = *(uint16_t*)(ip + 4);
  2108. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint16_t, int32_t>((*(float*)(localVarBase + __src)));
  2109. ip += 8;
  2110. continue;
  2111. }
  2112. case HiOpcodeEnum::ConvertVarVar_f4_i4:
  2113. {
  2114. uint16_t __dst = *(uint16_t*)(ip + 2);
  2115. uint16_t __src = *(uint16_t*)(ip + 4);
  2116. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int32_t>((*(float*)(localVarBase + __src)));
  2117. ip += 8;
  2118. continue;
  2119. }
  2120. case HiOpcodeEnum::ConvertVarVar_f4_u4:
  2121. {
  2122. uint16_t __dst = *(uint16_t*)(ip + 2);
  2123. uint16_t __src = *(uint16_t*)(ip + 4);
  2124. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint32_t, int32_t>((*(float*)(localVarBase + __src)));
  2125. ip += 8;
  2126. continue;
  2127. }
  2128. case HiOpcodeEnum::ConvertVarVar_f4_i8:
  2129. {
  2130. uint16_t __dst = *(uint16_t*)(ip + 2);
  2131. uint16_t __src = *(uint16_t*)(ip + 4);
  2132. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int64_t>((*(float*)(localVarBase + __src)));
  2133. ip += 8;
  2134. continue;
  2135. }
  2136. case HiOpcodeEnum::ConvertVarVar_f4_u8:
  2137. {
  2138. uint16_t __dst = *(uint16_t*)(ip + 2);
  2139. uint16_t __src = *(uint16_t*)(ip + 4);
  2140. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint64_t, int64_t>((*(float*)(localVarBase + __src)));
  2141. ip += 8;
  2142. continue;
  2143. }
  2144. case HiOpcodeEnum::ConvertVarVar_f4_f4:
  2145. {
  2146. uint16_t __dst = *(uint16_t*)(ip + 2);
  2147. uint16_t __src = *(uint16_t*)(ip + 4);
  2148. (*(float*)(localVarBase + __dst)) = (float)((*(float*)(localVarBase + __src)));
  2149. ip += 8;
  2150. continue;
  2151. }
  2152. case HiOpcodeEnum::ConvertVarVar_f4_f8:
  2153. {
  2154. uint16_t __dst = *(uint16_t*)(ip + 2);
  2155. uint16_t __src = *(uint16_t*)(ip + 4);
  2156. (*(double*)(localVarBase + __dst)) = (double)((*(float*)(localVarBase + __src)));
  2157. ip += 8;
  2158. continue;
  2159. }
  2160. case HiOpcodeEnum::ConvertVarVar_f8_i1:
  2161. {
  2162. uint16_t __dst = *(uint16_t*)(ip + 2);
  2163. uint16_t __src = *(uint16_t*)(ip + 4);
  2164. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int8_t>((*(double*)(localVarBase + __src)));
  2165. ip += 8;
  2166. continue;
  2167. }
  2168. case HiOpcodeEnum::ConvertVarVar_f8_u1:
  2169. {
  2170. uint16_t __dst = *(uint16_t*)(ip + 2);
  2171. uint16_t __src = *(uint16_t*)(ip + 4);
  2172. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint8_t, int32_t>((*(double*)(localVarBase + __src)));
  2173. ip += 8;
  2174. continue;
  2175. }
  2176. case HiOpcodeEnum::ConvertVarVar_f8_i2:
  2177. {
  2178. uint16_t __dst = *(uint16_t*)(ip + 2);
  2179. uint16_t __src = *(uint16_t*)(ip + 4);
  2180. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int16_t>((*(double*)(localVarBase + __src)));
  2181. ip += 8;
  2182. continue;
  2183. }
  2184. case HiOpcodeEnum::ConvertVarVar_f8_u2:
  2185. {
  2186. uint16_t __dst = *(uint16_t*)(ip + 2);
  2187. uint16_t __src = *(uint16_t*)(ip + 4);
  2188. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint16_t, int32_t>((*(double*)(localVarBase + __src)));
  2189. ip += 8;
  2190. continue;
  2191. }
  2192. case HiOpcodeEnum::ConvertVarVar_f8_i4:
  2193. {
  2194. uint16_t __dst = *(uint16_t*)(ip + 2);
  2195. uint16_t __src = *(uint16_t*)(ip + 4);
  2196. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int32_t>((*(double*)(localVarBase + __src)));
  2197. ip += 8;
  2198. continue;
  2199. }
  2200. case HiOpcodeEnum::ConvertVarVar_f8_u4:
  2201. {
  2202. uint16_t __dst = *(uint16_t*)(ip + 2);
  2203. uint16_t __src = *(uint16_t*)(ip + 4);
  2204. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint32_t, int32_t>((*(double*)(localVarBase + __src)));
  2205. ip += 8;
  2206. continue;
  2207. }
  2208. case HiOpcodeEnum::ConvertVarVar_f8_i8:
  2209. {
  2210. uint16_t __dst = *(uint16_t*)(ip + 2);
  2211. uint16_t __src = *(uint16_t*)(ip + 4);
  2212. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int64_t>((*(double*)(localVarBase + __src)));
  2213. ip += 8;
  2214. continue;
  2215. }
  2216. case HiOpcodeEnum::ConvertVarVar_f8_u8:
  2217. {
  2218. uint16_t __dst = *(uint16_t*)(ip + 2);
  2219. uint16_t __src = *(uint16_t*)(ip + 4);
  2220. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint64_t, int64_t>((*(double*)(localVarBase + __src)));
  2221. ip += 8;
  2222. continue;
  2223. }
  2224. case HiOpcodeEnum::ConvertVarVar_f8_f4:
  2225. {
  2226. uint16_t __dst = *(uint16_t*)(ip + 2);
  2227. uint16_t __src = *(uint16_t*)(ip + 4);
  2228. (*(float*)(localVarBase + __dst)) = (float)((*(double*)(localVarBase + __src)));
  2229. ip += 8;
  2230. continue;
  2231. }
  2232. case HiOpcodeEnum::ConvertVarVar_f8_f8:
  2233. {
  2234. uint16_t __dst = *(uint16_t*)(ip + 2);
  2235. uint16_t __src = *(uint16_t*)(ip + 4);
  2236. (*(double*)(localVarBase + __dst)) = (double)((*(double*)(localVarBase + __src)));
  2237. ip += 8;
  2238. continue;
  2239. }
  2240. case HiOpcodeEnum::ConvertOverflowVarVar_i4_i1:
  2241. {
  2242. uint16_t __dst = *(uint16_t*)(ip + 2);
  2243. uint16_t __src = *(uint16_t*)(ip + 4);
  2244. int32_t val = (*(int32_t*)(localVarBase + __src));
  2245. if (CheckConvertOverflow_i4_i1(*(int32_t*)(localVarBase + __src)))
  2246. {
  2247. il2cpp::vm::Exception::RaiseOverflowException();
  2248. }
  2249. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(int32_t*)(localVarBase + __src)));
  2250. ip += 8;
  2251. continue;
  2252. }
  2253. case HiOpcodeEnum::ConvertOverflowVarVar_i4_u1:
  2254. {
  2255. uint16_t __dst = *(uint16_t*)(ip + 2);
  2256. uint16_t __src = *(uint16_t*)(ip + 4);
  2257. int32_t val = (*(int32_t*)(localVarBase + __src));
  2258. if (CheckConvertOverflow_i4_u1(*(int32_t*)(localVarBase + __src)))
  2259. {
  2260. il2cpp::vm::Exception::RaiseOverflowException();
  2261. }
  2262. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  2263. ip += 8;
  2264. continue;
  2265. }
  2266. case HiOpcodeEnum::ConvertOverflowVarVar_i4_i2:
  2267. {
  2268. uint16_t __dst = *(uint16_t*)(ip + 2);
  2269. uint16_t __src = *(uint16_t*)(ip + 4);
  2270. int32_t val = (*(int32_t*)(localVarBase + __src));
  2271. if (CheckConvertOverflow_i4_i2(*(int32_t*)(localVarBase + __src)))
  2272. {
  2273. il2cpp::vm::Exception::RaiseOverflowException();
  2274. }
  2275. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(int32_t*)(localVarBase + __src)));
  2276. ip += 8;
  2277. continue;
  2278. }
  2279. case HiOpcodeEnum::ConvertOverflowVarVar_i4_u2:
  2280. {
  2281. uint16_t __dst = *(uint16_t*)(ip + 2);
  2282. uint16_t __src = *(uint16_t*)(ip + 4);
  2283. int32_t val = (*(int32_t*)(localVarBase + __src));
  2284. if (CheckConvertOverflow_i4_u2(*(int32_t*)(localVarBase + __src)))
  2285. {
  2286. il2cpp::vm::Exception::RaiseOverflowException();
  2287. }
  2288. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  2289. ip += 8;
  2290. continue;
  2291. }
  2292. case HiOpcodeEnum::ConvertOverflowVarVar_i4_i4:
  2293. {
  2294. uint16_t __dst = *(uint16_t*)(ip + 2);
  2295. uint16_t __src = *(uint16_t*)(ip + 4);
  2296. int32_t val = (*(int32_t*)(localVarBase + __src));
  2297. if (CheckConvertOverflow_i4_i4(*(int32_t*)(localVarBase + __src)))
  2298. {
  2299. il2cpp::vm::Exception::RaiseOverflowException();
  2300. }
  2301. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(int32_t*)(localVarBase + __src)));
  2302. ip += 8;
  2303. continue;
  2304. }
  2305. case HiOpcodeEnum::ConvertOverflowVarVar_i4_u4:
  2306. {
  2307. uint16_t __dst = *(uint16_t*)(ip + 2);
  2308. uint16_t __src = *(uint16_t*)(ip + 4);
  2309. int32_t val = (*(int32_t*)(localVarBase + __src));
  2310. if (CheckConvertOverflow_i4_u4(*(int32_t*)(localVarBase + __src)))
  2311. {
  2312. il2cpp::vm::Exception::RaiseOverflowException();
  2313. }
  2314. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  2315. ip += 8;
  2316. continue;
  2317. }
  2318. case HiOpcodeEnum::ConvertOverflowVarVar_i4_i8:
  2319. {
  2320. uint16_t __dst = *(uint16_t*)(ip + 2);
  2321. uint16_t __src = *(uint16_t*)(ip + 4);
  2322. int32_t val = (*(int32_t*)(localVarBase + __src));
  2323. if (CheckConvertOverflow_i4_i8(*(int32_t*)(localVarBase + __src)))
  2324. {
  2325. il2cpp::vm::Exception::RaiseOverflowException();
  2326. }
  2327. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(int32_t*)(localVarBase + __src)));
  2328. ip += 8;
  2329. continue;
  2330. }
  2331. case HiOpcodeEnum::ConvertOverflowVarVar_i4_u8:
  2332. {
  2333. uint16_t __dst = *(uint16_t*)(ip + 2);
  2334. uint16_t __src = *(uint16_t*)(ip + 4);
  2335. int32_t val = (*(int32_t*)(localVarBase + __src));
  2336. if (CheckConvertOverflow_i4_u8(*(int32_t*)(localVarBase + __src)))
  2337. {
  2338. il2cpp::vm::Exception::RaiseOverflowException();
  2339. }
  2340. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)(uint32_t)((*(int32_t*)(localVarBase + __src)));
  2341. ip += 8;
  2342. continue;
  2343. }
  2344. case HiOpcodeEnum::ConvertOverflowVarVar_u4_i1:
  2345. {
  2346. uint16_t __dst = *(uint16_t*)(ip + 2);
  2347. uint16_t __src = *(uint16_t*)(ip + 4);
  2348. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2349. if (CheckConvertOverflow_u4_i1(*(uint32_t*)(localVarBase + __src)))
  2350. {
  2351. il2cpp::vm::Exception::RaiseOverflowException();
  2352. }
  2353. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(uint32_t*)(localVarBase + __src)));
  2354. ip += 8;
  2355. continue;
  2356. }
  2357. case HiOpcodeEnum::ConvertOverflowVarVar_u4_u1:
  2358. {
  2359. uint16_t __dst = *(uint16_t*)(ip + 2);
  2360. uint16_t __src = *(uint16_t*)(ip + 4);
  2361. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2362. if (CheckConvertOverflow_u4_u1(*(uint32_t*)(localVarBase + __src)))
  2363. {
  2364. il2cpp::vm::Exception::RaiseOverflowException();
  2365. }
  2366. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)((*(uint32_t*)(localVarBase + __src)));
  2367. ip += 8;
  2368. continue;
  2369. }
  2370. case HiOpcodeEnum::ConvertOverflowVarVar_u4_i2:
  2371. {
  2372. uint16_t __dst = *(uint16_t*)(ip + 2);
  2373. uint16_t __src = *(uint16_t*)(ip + 4);
  2374. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2375. if (CheckConvertOverflow_u4_i2(*(uint32_t*)(localVarBase + __src)))
  2376. {
  2377. il2cpp::vm::Exception::RaiseOverflowException();
  2378. }
  2379. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(uint32_t*)(localVarBase + __src)));
  2380. ip += 8;
  2381. continue;
  2382. }
  2383. case HiOpcodeEnum::ConvertOverflowVarVar_u4_u2:
  2384. {
  2385. uint16_t __dst = *(uint16_t*)(ip + 2);
  2386. uint16_t __src = *(uint16_t*)(ip + 4);
  2387. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2388. if (CheckConvertOverflow_u4_u2(*(uint32_t*)(localVarBase + __src)))
  2389. {
  2390. il2cpp::vm::Exception::RaiseOverflowException();
  2391. }
  2392. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)((*(uint32_t*)(localVarBase + __src)));
  2393. ip += 8;
  2394. continue;
  2395. }
  2396. case HiOpcodeEnum::ConvertOverflowVarVar_u4_i4:
  2397. {
  2398. uint16_t __dst = *(uint16_t*)(ip + 2);
  2399. uint16_t __src = *(uint16_t*)(ip + 4);
  2400. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2401. if (CheckConvertOverflow_u4_i4(*(uint32_t*)(localVarBase + __src)))
  2402. {
  2403. il2cpp::vm::Exception::RaiseOverflowException();
  2404. }
  2405. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(uint32_t*)(localVarBase + __src)));
  2406. ip += 8;
  2407. continue;
  2408. }
  2409. case HiOpcodeEnum::ConvertOverflowVarVar_u4_u4:
  2410. {
  2411. uint16_t __dst = *(uint16_t*)(ip + 2);
  2412. uint16_t __src = *(uint16_t*)(ip + 4);
  2413. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2414. if (CheckConvertOverflow_u4_u4(*(uint32_t*)(localVarBase + __src)))
  2415. {
  2416. il2cpp::vm::Exception::RaiseOverflowException();
  2417. }
  2418. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)((*(uint32_t*)(localVarBase + __src)));
  2419. ip += 8;
  2420. continue;
  2421. }
  2422. case HiOpcodeEnum::ConvertOverflowVarVar_u4_i8:
  2423. {
  2424. uint16_t __dst = *(uint16_t*)(ip + 2);
  2425. uint16_t __src = *(uint16_t*)(ip + 4);
  2426. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2427. if (CheckConvertOverflow_u4_i8(*(uint32_t*)(localVarBase + __src)))
  2428. {
  2429. il2cpp::vm::Exception::RaiseOverflowException();
  2430. }
  2431. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(uint32_t*)(localVarBase + __src)));
  2432. ip += 8;
  2433. continue;
  2434. }
  2435. case HiOpcodeEnum::ConvertOverflowVarVar_u4_u8:
  2436. {
  2437. uint16_t __dst = *(uint16_t*)(ip + 2);
  2438. uint16_t __src = *(uint16_t*)(ip + 4);
  2439. uint32_t val = (*(uint32_t*)(localVarBase + __src));
  2440. if (CheckConvertOverflow_u4_u8(*(uint32_t*)(localVarBase + __src)))
  2441. {
  2442. il2cpp::vm::Exception::RaiseOverflowException();
  2443. }
  2444. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)((*(uint32_t*)(localVarBase + __src)));
  2445. ip += 8;
  2446. continue;
  2447. }
  2448. case HiOpcodeEnum::ConvertOverflowVarVar_i8_i1:
  2449. {
  2450. uint16_t __dst = *(uint16_t*)(ip + 2);
  2451. uint16_t __src = *(uint16_t*)(ip + 4);
  2452. int64_t val = (*(int64_t*)(localVarBase + __src));
  2453. if (CheckConvertOverflow_i8_i1(*(int64_t*)(localVarBase + __src)))
  2454. {
  2455. il2cpp::vm::Exception::RaiseOverflowException();
  2456. }
  2457. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(int64_t*)(localVarBase + __src)));
  2458. ip += 8;
  2459. continue;
  2460. }
  2461. case HiOpcodeEnum::ConvertOverflowVarVar_i8_u1:
  2462. {
  2463. uint16_t __dst = *(uint16_t*)(ip + 2);
  2464. uint16_t __src = *(uint16_t*)(ip + 4);
  2465. int64_t val = (*(int64_t*)(localVarBase + __src));
  2466. if (CheckConvertOverflow_i8_u1(*(int64_t*)(localVarBase + __src)))
  2467. {
  2468. il2cpp::vm::Exception::RaiseOverflowException();
  2469. }
  2470. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  2471. ip += 8;
  2472. continue;
  2473. }
  2474. case HiOpcodeEnum::ConvertOverflowVarVar_i8_i2:
  2475. {
  2476. uint16_t __dst = *(uint16_t*)(ip + 2);
  2477. uint16_t __src = *(uint16_t*)(ip + 4);
  2478. int64_t val = (*(int64_t*)(localVarBase + __src));
  2479. if (CheckConvertOverflow_i8_i2(*(int64_t*)(localVarBase + __src)))
  2480. {
  2481. il2cpp::vm::Exception::RaiseOverflowException();
  2482. }
  2483. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(int64_t*)(localVarBase + __src)));
  2484. ip += 8;
  2485. continue;
  2486. }
  2487. case HiOpcodeEnum::ConvertOverflowVarVar_i8_u2:
  2488. {
  2489. uint16_t __dst = *(uint16_t*)(ip + 2);
  2490. uint16_t __src = *(uint16_t*)(ip + 4);
  2491. int64_t val = (*(int64_t*)(localVarBase + __src));
  2492. if (CheckConvertOverflow_i8_u2(*(int64_t*)(localVarBase + __src)))
  2493. {
  2494. il2cpp::vm::Exception::RaiseOverflowException();
  2495. }
  2496. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  2497. ip += 8;
  2498. continue;
  2499. }
  2500. case HiOpcodeEnum::ConvertOverflowVarVar_i8_i4:
  2501. {
  2502. uint16_t __dst = *(uint16_t*)(ip + 2);
  2503. uint16_t __src = *(uint16_t*)(ip + 4);
  2504. int64_t val = (*(int64_t*)(localVarBase + __src));
  2505. if (CheckConvertOverflow_i8_i4(*(int64_t*)(localVarBase + __src)))
  2506. {
  2507. il2cpp::vm::Exception::RaiseOverflowException();
  2508. }
  2509. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(int64_t*)(localVarBase + __src)));
  2510. ip += 8;
  2511. continue;
  2512. }
  2513. case HiOpcodeEnum::ConvertOverflowVarVar_i8_u4:
  2514. {
  2515. uint16_t __dst = *(uint16_t*)(ip + 2);
  2516. uint16_t __src = *(uint16_t*)(ip + 4);
  2517. int64_t val = (*(int64_t*)(localVarBase + __src));
  2518. if (CheckConvertOverflow_i8_u4(*(int64_t*)(localVarBase + __src)))
  2519. {
  2520. il2cpp::vm::Exception::RaiseOverflowException();
  2521. }
  2522. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  2523. ip += 8;
  2524. continue;
  2525. }
  2526. case HiOpcodeEnum::ConvertOverflowVarVar_i8_i8:
  2527. {
  2528. uint16_t __dst = *(uint16_t*)(ip + 2);
  2529. uint16_t __src = *(uint16_t*)(ip + 4);
  2530. int64_t val = (*(int64_t*)(localVarBase + __src));
  2531. if (CheckConvertOverflow_i8_i8(*(int64_t*)(localVarBase + __src)))
  2532. {
  2533. il2cpp::vm::Exception::RaiseOverflowException();
  2534. }
  2535. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(int64_t*)(localVarBase + __src)));
  2536. ip += 8;
  2537. continue;
  2538. }
  2539. case HiOpcodeEnum::ConvertOverflowVarVar_i8_u8:
  2540. {
  2541. uint16_t __dst = *(uint16_t*)(ip + 2);
  2542. uint16_t __src = *(uint16_t*)(ip + 4);
  2543. int64_t val = (*(int64_t*)(localVarBase + __src));
  2544. if (CheckConvertOverflow_i8_u8(*(int64_t*)(localVarBase + __src)))
  2545. {
  2546. il2cpp::vm::Exception::RaiseOverflowException();
  2547. }
  2548. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)(uint64_t)((*(int64_t*)(localVarBase + __src)));
  2549. ip += 8;
  2550. continue;
  2551. }
  2552. case HiOpcodeEnum::ConvertOverflowVarVar_u8_i1:
  2553. {
  2554. uint16_t __dst = *(uint16_t*)(ip + 2);
  2555. uint16_t __src = *(uint16_t*)(ip + 4);
  2556. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2557. if (CheckConvertOverflow_u8_i1(*(uint64_t*)(localVarBase + __src)))
  2558. {
  2559. il2cpp::vm::Exception::RaiseOverflowException();
  2560. }
  2561. (*(int32_t*)(localVarBase + __dst)) = (int8_t)((*(uint64_t*)(localVarBase + __src)));
  2562. ip += 8;
  2563. continue;
  2564. }
  2565. case HiOpcodeEnum::ConvertOverflowVarVar_u8_u1:
  2566. {
  2567. uint16_t __dst = *(uint16_t*)(ip + 2);
  2568. uint16_t __src = *(uint16_t*)(ip + 4);
  2569. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2570. if (CheckConvertOverflow_u8_u1(*(uint64_t*)(localVarBase + __src)))
  2571. {
  2572. il2cpp::vm::Exception::RaiseOverflowException();
  2573. }
  2574. (*(int32_t*)(localVarBase + __dst)) = (uint8_t)((*(uint64_t*)(localVarBase + __src)));
  2575. ip += 8;
  2576. continue;
  2577. }
  2578. case HiOpcodeEnum::ConvertOverflowVarVar_u8_i2:
  2579. {
  2580. uint16_t __dst = *(uint16_t*)(ip + 2);
  2581. uint16_t __src = *(uint16_t*)(ip + 4);
  2582. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2583. if (CheckConvertOverflow_u8_i2(*(uint64_t*)(localVarBase + __src)))
  2584. {
  2585. il2cpp::vm::Exception::RaiseOverflowException();
  2586. }
  2587. (*(int32_t*)(localVarBase + __dst)) = (int16_t)((*(uint64_t*)(localVarBase + __src)));
  2588. ip += 8;
  2589. continue;
  2590. }
  2591. case HiOpcodeEnum::ConvertOverflowVarVar_u8_u2:
  2592. {
  2593. uint16_t __dst = *(uint16_t*)(ip + 2);
  2594. uint16_t __src = *(uint16_t*)(ip + 4);
  2595. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2596. if (CheckConvertOverflow_u8_u2(*(uint64_t*)(localVarBase + __src)))
  2597. {
  2598. il2cpp::vm::Exception::RaiseOverflowException();
  2599. }
  2600. (*(int32_t*)(localVarBase + __dst)) = (uint16_t)((*(uint64_t*)(localVarBase + __src)));
  2601. ip += 8;
  2602. continue;
  2603. }
  2604. case HiOpcodeEnum::ConvertOverflowVarVar_u8_i4:
  2605. {
  2606. uint16_t __dst = *(uint16_t*)(ip + 2);
  2607. uint16_t __src = *(uint16_t*)(ip + 4);
  2608. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2609. if (CheckConvertOverflow_u8_i4(*(uint64_t*)(localVarBase + __src)))
  2610. {
  2611. il2cpp::vm::Exception::RaiseOverflowException();
  2612. }
  2613. (*(int32_t*)(localVarBase + __dst)) = (int32_t)((*(uint64_t*)(localVarBase + __src)));
  2614. ip += 8;
  2615. continue;
  2616. }
  2617. case HiOpcodeEnum::ConvertOverflowVarVar_u8_u4:
  2618. {
  2619. uint16_t __dst = *(uint16_t*)(ip + 2);
  2620. uint16_t __src = *(uint16_t*)(ip + 4);
  2621. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2622. if (CheckConvertOverflow_u8_u4(*(uint64_t*)(localVarBase + __src)))
  2623. {
  2624. il2cpp::vm::Exception::RaiseOverflowException();
  2625. }
  2626. (*(int32_t*)(localVarBase + __dst)) = (uint32_t)((*(uint64_t*)(localVarBase + __src)));
  2627. ip += 8;
  2628. continue;
  2629. }
  2630. case HiOpcodeEnum::ConvertOverflowVarVar_u8_i8:
  2631. {
  2632. uint16_t __dst = *(uint16_t*)(ip + 2);
  2633. uint16_t __src = *(uint16_t*)(ip + 4);
  2634. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2635. if (CheckConvertOverflow_u8_i8(*(uint64_t*)(localVarBase + __src)))
  2636. {
  2637. il2cpp::vm::Exception::RaiseOverflowException();
  2638. }
  2639. (*(int64_t*)(localVarBase + __dst)) = (int64_t)((*(uint64_t*)(localVarBase + __src)));
  2640. ip += 8;
  2641. continue;
  2642. }
  2643. case HiOpcodeEnum::ConvertOverflowVarVar_u8_u8:
  2644. {
  2645. uint16_t __dst = *(uint16_t*)(ip + 2);
  2646. uint16_t __src = *(uint16_t*)(ip + 4);
  2647. uint64_t val = (*(uint64_t*)(localVarBase + __src));
  2648. if (CheckConvertOverflow_u8_u8(*(uint64_t*)(localVarBase + __src)))
  2649. {
  2650. il2cpp::vm::Exception::RaiseOverflowException();
  2651. }
  2652. (*(int64_t*)(localVarBase + __dst)) = (uint64_t)((*(uint64_t*)(localVarBase + __src)));
  2653. ip += 8;
  2654. continue;
  2655. }
  2656. case HiOpcodeEnum::ConvertOverflowVarVar_f4_i1:
  2657. {
  2658. uint16_t __dst = *(uint16_t*)(ip + 2);
  2659. uint16_t __src = *(uint16_t*)(ip + 4);
  2660. float val = (*(float*)(localVarBase + __src));
  2661. if (CheckConvertOverflow_f4_i1(*(float*)(localVarBase + __src)))
  2662. {
  2663. il2cpp::vm::Exception::RaiseOverflowException();
  2664. }
  2665. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int8_t>((*(float*)(localVarBase + __src)));
  2666. ip += 8;
  2667. continue;
  2668. }
  2669. case HiOpcodeEnum::ConvertOverflowVarVar_f4_u1:
  2670. {
  2671. uint16_t __dst = *(uint16_t*)(ip + 2);
  2672. uint16_t __src = *(uint16_t*)(ip + 4);
  2673. float val = (*(float*)(localVarBase + __src));
  2674. if (CheckConvertOverflow_f4_u1(*(float*)(localVarBase + __src)))
  2675. {
  2676. il2cpp::vm::Exception::RaiseOverflowException();
  2677. }
  2678. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint8_t, int32_t>((*(float*)(localVarBase + __src)));
  2679. ip += 8;
  2680. continue;
  2681. }
  2682. case HiOpcodeEnum::ConvertOverflowVarVar_f4_i2:
  2683. {
  2684. uint16_t __dst = *(uint16_t*)(ip + 2);
  2685. uint16_t __src = *(uint16_t*)(ip + 4);
  2686. float val = (*(float*)(localVarBase + __src));
  2687. if (CheckConvertOverflow_f4_i2(*(float*)(localVarBase + __src)))
  2688. {
  2689. il2cpp::vm::Exception::RaiseOverflowException();
  2690. }
  2691. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int16_t>((*(float*)(localVarBase + __src)));
  2692. ip += 8;
  2693. continue;
  2694. }
  2695. case HiOpcodeEnum::ConvertOverflowVarVar_f4_u2:
  2696. {
  2697. uint16_t __dst = *(uint16_t*)(ip + 2);
  2698. uint16_t __src = *(uint16_t*)(ip + 4);
  2699. float val = (*(float*)(localVarBase + __src));
  2700. if (CheckConvertOverflow_f4_u2(*(float*)(localVarBase + __src)))
  2701. {
  2702. il2cpp::vm::Exception::RaiseOverflowException();
  2703. }
  2704. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint16_t, int32_t>((*(float*)(localVarBase + __src)));
  2705. ip += 8;
  2706. continue;
  2707. }
  2708. case HiOpcodeEnum::ConvertOverflowVarVar_f4_i4:
  2709. {
  2710. uint16_t __dst = *(uint16_t*)(ip + 2);
  2711. uint16_t __src = *(uint16_t*)(ip + 4);
  2712. float val = (*(float*)(localVarBase + __src));
  2713. if (CheckConvertOverflow_f4_i4(*(float*)(localVarBase + __src)))
  2714. {
  2715. il2cpp::vm::Exception::RaiseOverflowException();
  2716. }
  2717. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int32_t>((*(float*)(localVarBase + __src)));
  2718. ip += 8;
  2719. continue;
  2720. }
  2721. case HiOpcodeEnum::ConvertOverflowVarVar_f4_u4:
  2722. {
  2723. uint16_t __dst = *(uint16_t*)(ip + 2);
  2724. uint16_t __src = *(uint16_t*)(ip + 4);
  2725. float val = (*(float*)(localVarBase + __src));
  2726. if (CheckConvertOverflow_f4_u4(*(float*)(localVarBase + __src)))
  2727. {
  2728. il2cpp::vm::Exception::RaiseOverflowException();
  2729. }
  2730. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint32_t, int32_t>((*(float*)(localVarBase + __src)));
  2731. ip += 8;
  2732. continue;
  2733. }
  2734. case HiOpcodeEnum::ConvertOverflowVarVar_f4_i8:
  2735. {
  2736. uint16_t __dst = *(uint16_t*)(ip + 2);
  2737. uint16_t __src = *(uint16_t*)(ip + 4);
  2738. float val = (*(float*)(localVarBase + __src));
  2739. if (CheckConvertOverflow_f4_i8(*(float*)(localVarBase + __src)))
  2740. {
  2741. il2cpp::vm::Exception::RaiseOverflowException();
  2742. }
  2743. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int64_t>((*(float*)(localVarBase + __src)));
  2744. ip += 8;
  2745. continue;
  2746. }
  2747. case HiOpcodeEnum::ConvertOverflowVarVar_f4_u8:
  2748. {
  2749. uint16_t __dst = *(uint16_t*)(ip + 2);
  2750. uint16_t __src = *(uint16_t*)(ip + 4);
  2751. float val = (*(float*)(localVarBase + __src));
  2752. if (CheckConvertOverflow_f4_u8(*(float*)(localVarBase + __src)))
  2753. {
  2754. il2cpp::vm::Exception::RaiseOverflowException();
  2755. }
  2756. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint64_t, int64_t>((*(float*)(localVarBase + __src)));
  2757. ip += 8;
  2758. continue;
  2759. }
  2760. case HiOpcodeEnum::ConvertOverflowVarVar_f8_i1:
  2761. {
  2762. uint16_t __dst = *(uint16_t*)(ip + 2);
  2763. uint16_t __src = *(uint16_t*)(ip + 4);
  2764. double val = (*(double*)(localVarBase + __src));
  2765. if (CheckConvertOverflow_f8_i1(*(double*)(localVarBase + __src)))
  2766. {
  2767. il2cpp::vm::Exception::RaiseOverflowException();
  2768. }
  2769. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int8_t>((*(double*)(localVarBase + __src)));
  2770. ip += 8;
  2771. continue;
  2772. }
  2773. case HiOpcodeEnum::ConvertOverflowVarVar_f8_u1:
  2774. {
  2775. uint16_t __dst = *(uint16_t*)(ip + 2);
  2776. uint16_t __src = *(uint16_t*)(ip + 4);
  2777. double val = (*(double*)(localVarBase + __src));
  2778. if (CheckConvertOverflow_f8_u1(*(double*)(localVarBase + __src)))
  2779. {
  2780. il2cpp::vm::Exception::RaiseOverflowException();
  2781. }
  2782. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint8_t, int32_t>((*(double*)(localVarBase + __src)));
  2783. ip += 8;
  2784. continue;
  2785. }
  2786. case HiOpcodeEnum::ConvertOverflowVarVar_f8_i2:
  2787. {
  2788. uint16_t __dst = *(uint16_t*)(ip + 2);
  2789. uint16_t __src = *(uint16_t*)(ip + 4);
  2790. double val = (*(double*)(localVarBase + __src));
  2791. if (CheckConvertOverflow_f8_i2(*(double*)(localVarBase + __src)))
  2792. {
  2793. il2cpp::vm::Exception::RaiseOverflowException();
  2794. }
  2795. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int16_t>((*(double*)(localVarBase + __src)));
  2796. ip += 8;
  2797. continue;
  2798. }
  2799. case HiOpcodeEnum::ConvertOverflowVarVar_f8_u2:
  2800. {
  2801. uint16_t __dst = *(uint16_t*)(ip + 2);
  2802. uint16_t __src = *(uint16_t*)(ip + 4);
  2803. double val = (*(double*)(localVarBase + __src));
  2804. if (CheckConvertOverflow_f8_u2(*(double*)(localVarBase + __src)))
  2805. {
  2806. il2cpp::vm::Exception::RaiseOverflowException();
  2807. }
  2808. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint16_t, int32_t>((*(double*)(localVarBase + __src)));
  2809. ip += 8;
  2810. continue;
  2811. }
  2812. case HiOpcodeEnum::ConvertOverflowVarVar_f8_i4:
  2813. {
  2814. uint16_t __dst = *(uint16_t*)(ip + 2);
  2815. uint16_t __src = *(uint16_t*)(ip + 4);
  2816. double val = (*(double*)(localVarBase + __src));
  2817. if (CheckConvertOverflow_f8_i4(*(double*)(localVarBase + __src)))
  2818. {
  2819. il2cpp::vm::Exception::RaiseOverflowException();
  2820. }
  2821. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int32_t>((*(double*)(localVarBase + __src)));
  2822. ip += 8;
  2823. continue;
  2824. }
  2825. case HiOpcodeEnum::ConvertOverflowVarVar_f8_u4:
  2826. {
  2827. uint16_t __dst = *(uint16_t*)(ip + 2);
  2828. uint16_t __src = *(uint16_t*)(ip + 4);
  2829. double val = (*(double*)(localVarBase + __src));
  2830. if (CheckConvertOverflow_f8_u4(*(double*)(localVarBase + __src)))
  2831. {
  2832. il2cpp::vm::Exception::RaiseOverflowException();
  2833. }
  2834. (*(int32_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint32_t, int32_t>((*(double*)(localVarBase + __src)));
  2835. ip += 8;
  2836. continue;
  2837. }
  2838. case HiOpcodeEnum::ConvertOverflowVarVar_f8_i8:
  2839. {
  2840. uint16_t __dst = *(uint16_t*)(ip + 2);
  2841. uint16_t __src = *(uint16_t*)(ip + 4);
  2842. double val = (*(double*)(localVarBase + __src));
  2843. if (CheckConvertOverflow_f8_i8(*(double*)(localVarBase + __src)))
  2844. {
  2845. il2cpp::vm::Exception::RaiseOverflowException();
  2846. }
  2847. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_double_to_int<int64_t>((*(double*)(localVarBase + __src)));
  2848. ip += 8;
  2849. continue;
  2850. }
  2851. case HiOpcodeEnum::ConvertOverflowVarVar_f8_u8:
  2852. {
  2853. uint16_t __dst = *(uint16_t*)(ip + 2);
  2854. uint16_t __src = *(uint16_t*)(ip + 4);
  2855. double val = (*(double*)(localVarBase + __src));
  2856. if (CheckConvertOverflow_f8_u8(*(double*)(localVarBase + __src)))
  2857. {
  2858. il2cpp::vm::Exception::RaiseOverflowException();
  2859. }
  2860. (*(int64_t*)(localVarBase + __dst)) = il2cpp_codegen_cast_floating_point<uint64_t, int64_t>((*(double*)(localVarBase + __src)));
  2861. ip += 8;
  2862. continue;
  2863. }
  2864. //!!!}}CONVERT
  2865. #pragma endregion
  2866. #pragma region ARITH
  2867. //!!!{{ARITH
  2868. case HiOpcodeEnum::BinOpVarVarVar_Add_i4:
  2869. {
  2870. uint16_t __ret = *(uint16_t*)(ip + 2);
  2871. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2872. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2873. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __op1)) + (*(int32_t*)(localVarBase + __op2));
  2874. ip += 8;
  2875. continue;
  2876. }
  2877. case HiOpcodeEnum::BinOpVarVarVar_Sub_i4:
  2878. {
  2879. uint16_t __ret = *(uint16_t*)(ip + 2);
  2880. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2881. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2882. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __op1)) - (*(int32_t*)(localVarBase + __op2));
  2883. ip += 8;
  2884. continue;
  2885. }
  2886. case HiOpcodeEnum::BinOpVarVarVar_Mul_i4:
  2887. {
  2888. uint16_t __ret = *(uint16_t*)(ip + 2);
  2889. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2890. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2891. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __op1)) * (*(int32_t*)(localVarBase + __op2));
  2892. ip += 8;
  2893. continue;
  2894. }
  2895. case HiOpcodeEnum::BinOpVarVarVar_MulUn_i4:
  2896. {
  2897. uint16_t __ret = *(uint16_t*)(ip + 2);
  2898. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2899. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2900. (*(int32_t*)(localVarBase + __ret)) = HiMulUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2)));
  2901. ip += 8;
  2902. continue;
  2903. }
  2904. case HiOpcodeEnum::BinOpVarVarVar_Div_i4:
  2905. {
  2906. uint16_t __ret = *(uint16_t*)(ip + 2);
  2907. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2908. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2909. (*(int32_t*)(localVarBase + __ret)) = HiDiv((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2)));
  2910. ip += 8;
  2911. continue;
  2912. }
  2913. case HiOpcodeEnum::BinOpVarVarVar_DivUn_i4:
  2914. {
  2915. uint16_t __ret = *(uint16_t*)(ip + 2);
  2916. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2917. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2918. (*(int32_t*)(localVarBase + __ret)) = HiDivUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2)));
  2919. ip += 8;
  2920. continue;
  2921. }
  2922. case HiOpcodeEnum::BinOpVarVarVar_Rem_i4:
  2923. {
  2924. uint16_t __ret = *(uint16_t*)(ip + 2);
  2925. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2926. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2927. (*(int32_t*)(localVarBase + __ret)) = HiRem((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2)));
  2928. ip += 8;
  2929. continue;
  2930. }
  2931. case HiOpcodeEnum::BinOpVarVarVar_RemUn_i4:
  2932. {
  2933. uint16_t __ret = *(uint16_t*)(ip + 2);
  2934. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2935. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2936. (*(int32_t*)(localVarBase + __ret)) = HiRemUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2)));
  2937. ip += 8;
  2938. continue;
  2939. }
  2940. case HiOpcodeEnum::BinOpVarVarVar_And_i4:
  2941. {
  2942. uint16_t __ret = *(uint16_t*)(ip + 2);
  2943. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2944. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2945. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __op1)) & (*(int32_t*)(localVarBase + __op2));
  2946. ip += 8;
  2947. continue;
  2948. }
  2949. case HiOpcodeEnum::BinOpVarVarVar_Or_i4:
  2950. {
  2951. uint16_t __ret = *(uint16_t*)(ip + 2);
  2952. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2953. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2954. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __op1)) | (*(int32_t*)(localVarBase + __op2));
  2955. ip += 8;
  2956. continue;
  2957. }
  2958. case HiOpcodeEnum::BinOpVarVarVar_Xor_i4:
  2959. {
  2960. uint16_t __ret = *(uint16_t*)(ip + 2);
  2961. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2962. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2963. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __op1)) ^ (*(int32_t*)(localVarBase + __op2));
  2964. ip += 8;
  2965. continue;
  2966. }
  2967. case HiOpcodeEnum::BinOpVarVarVar_Add_i8:
  2968. {
  2969. uint16_t __ret = *(uint16_t*)(ip + 2);
  2970. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2971. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2972. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __op1)) + (*(int64_t*)(localVarBase + __op2));
  2973. ip += 8;
  2974. continue;
  2975. }
  2976. case HiOpcodeEnum::BinOpVarVarVar_Sub_i8:
  2977. {
  2978. uint16_t __ret = *(uint16_t*)(ip + 2);
  2979. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2980. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2981. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __op1)) - (*(int64_t*)(localVarBase + __op2));
  2982. ip += 8;
  2983. continue;
  2984. }
  2985. case HiOpcodeEnum::BinOpVarVarVar_Mul_i8:
  2986. {
  2987. uint16_t __ret = *(uint16_t*)(ip + 2);
  2988. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2989. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2990. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __op1)) * (*(int64_t*)(localVarBase + __op2));
  2991. ip += 8;
  2992. continue;
  2993. }
  2994. case HiOpcodeEnum::BinOpVarVarVar_MulUn_i8:
  2995. {
  2996. uint16_t __ret = *(uint16_t*)(ip + 2);
  2997. uint16_t __op1 = *(uint16_t*)(ip + 4);
  2998. uint16_t __op2 = *(uint16_t*)(ip + 6);
  2999. (*(int64_t*)(localVarBase + __ret)) = HiMulUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2)));
  3000. ip += 8;
  3001. continue;
  3002. }
  3003. case HiOpcodeEnum::BinOpVarVarVar_Div_i8:
  3004. {
  3005. uint16_t __ret = *(uint16_t*)(ip + 2);
  3006. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3007. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3008. (*(int64_t*)(localVarBase + __ret)) = HiDiv((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2)));
  3009. ip += 8;
  3010. continue;
  3011. }
  3012. case HiOpcodeEnum::BinOpVarVarVar_DivUn_i8:
  3013. {
  3014. uint16_t __ret = *(uint16_t*)(ip + 2);
  3015. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3016. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3017. (*(int64_t*)(localVarBase + __ret)) = HiDivUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2)));
  3018. ip += 8;
  3019. continue;
  3020. }
  3021. case HiOpcodeEnum::BinOpVarVarVar_Rem_i8:
  3022. {
  3023. uint16_t __ret = *(uint16_t*)(ip + 2);
  3024. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3025. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3026. (*(int64_t*)(localVarBase + __ret)) = HiRem((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2)));
  3027. ip += 8;
  3028. continue;
  3029. }
  3030. case HiOpcodeEnum::BinOpVarVarVar_RemUn_i8:
  3031. {
  3032. uint16_t __ret = *(uint16_t*)(ip + 2);
  3033. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3034. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3035. (*(int64_t*)(localVarBase + __ret)) = HiRemUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2)));
  3036. ip += 8;
  3037. continue;
  3038. }
  3039. case HiOpcodeEnum::BinOpVarVarVar_And_i8:
  3040. {
  3041. uint16_t __ret = *(uint16_t*)(ip + 2);
  3042. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3043. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3044. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __op1)) & (*(int64_t*)(localVarBase + __op2));
  3045. ip += 8;
  3046. continue;
  3047. }
  3048. case HiOpcodeEnum::BinOpVarVarVar_Or_i8:
  3049. {
  3050. uint16_t __ret = *(uint16_t*)(ip + 2);
  3051. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3052. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3053. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __op1)) | (*(int64_t*)(localVarBase + __op2));
  3054. ip += 8;
  3055. continue;
  3056. }
  3057. case HiOpcodeEnum::BinOpVarVarVar_Xor_i8:
  3058. {
  3059. uint16_t __ret = *(uint16_t*)(ip + 2);
  3060. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3061. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3062. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __op1)) ^ (*(int64_t*)(localVarBase + __op2));
  3063. ip += 8;
  3064. continue;
  3065. }
  3066. case HiOpcodeEnum::BinOpVarVarVar_Add_f4:
  3067. {
  3068. uint16_t __ret = *(uint16_t*)(ip + 2);
  3069. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3070. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3071. (*(float*)(localVarBase + __ret)) = (*(float*)(localVarBase + __op1)) + (*(float*)(localVarBase + __op2));
  3072. ip += 8;
  3073. continue;
  3074. }
  3075. case HiOpcodeEnum::BinOpVarVarVar_Sub_f4:
  3076. {
  3077. uint16_t __ret = *(uint16_t*)(ip + 2);
  3078. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3079. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3080. (*(float*)(localVarBase + __ret)) = (*(float*)(localVarBase + __op1)) - (*(float*)(localVarBase + __op2));
  3081. ip += 8;
  3082. continue;
  3083. }
  3084. case HiOpcodeEnum::BinOpVarVarVar_Mul_f4:
  3085. {
  3086. uint16_t __ret = *(uint16_t*)(ip + 2);
  3087. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3088. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3089. (*(float*)(localVarBase + __ret)) = (*(float*)(localVarBase + __op1)) * (*(float*)(localVarBase + __op2));
  3090. ip += 8;
  3091. continue;
  3092. }
  3093. case HiOpcodeEnum::BinOpVarVarVar_Div_f4:
  3094. {
  3095. uint16_t __ret = *(uint16_t*)(ip + 2);
  3096. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3097. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3098. (*(float*)(localVarBase + __ret)) = HiDiv((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2)));
  3099. ip += 8;
  3100. continue;
  3101. }
  3102. case HiOpcodeEnum::BinOpVarVarVar_Rem_f4:
  3103. {
  3104. uint16_t __ret = *(uint16_t*)(ip + 2);
  3105. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3106. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3107. (*(float*)(localVarBase + __ret)) = HiRem((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2)));
  3108. ip += 8;
  3109. continue;
  3110. }
  3111. case HiOpcodeEnum::BinOpVarVarVar_Add_f8:
  3112. {
  3113. uint16_t __ret = *(uint16_t*)(ip + 2);
  3114. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3115. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3116. (*(double*)(localVarBase + __ret)) = (*(double*)(localVarBase + __op1)) + (*(double*)(localVarBase + __op2));
  3117. ip += 8;
  3118. continue;
  3119. }
  3120. case HiOpcodeEnum::BinOpVarVarVar_Sub_f8:
  3121. {
  3122. uint16_t __ret = *(uint16_t*)(ip + 2);
  3123. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3124. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3125. (*(double*)(localVarBase + __ret)) = (*(double*)(localVarBase + __op1)) - (*(double*)(localVarBase + __op2));
  3126. ip += 8;
  3127. continue;
  3128. }
  3129. case HiOpcodeEnum::BinOpVarVarVar_Mul_f8:
  3130. {
  3131. uint16_t __ret = *(uint16_t*)(ip + 2);
  3132. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3133. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3134. (*(double*)(localVarBase + __ret)) = (*(double*)(localVarBase + __op1)) * (*(double*)(localVarBase + __op2));
  3135. ip += 8;
  3136. continue;
  3137. }
  3138. case HiOpcodeEnum::BinOpVarVarVar_Div_f8:
  3139. {
  3140. uint16_t __ret = *(uint16_t*)(ip + 2);
  3141. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3142. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3143. (*(double*)(localVarBase + __ret)) = HiDiv((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2)));
  3144. ip += 8;
  3145. continue;
  3146. }
  3147. case HiOpcodeEnum::BinOpVarVarVar_Rem_f8:
  3148. {
  3149. uint16_t __ret = *(uint16_t*)(ip + 2);
  3150. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3151. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3152. (*(double*)(localVarBase + __ret)) = HiRem((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2)));
  3153. ip += 8;
  3154. continue;
  3155. }
  3156. case HiOpcodeEnum::BinOpOverflowVarVarVar_Add_i4:
  3157. {
  3158. uint16_t __ret = *(uint16_t*)(ip + 2);
  3159. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3160. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3161. int32_t op1 = (*(int32_t*)(localVarBase + __op1));
  3162. int32_t op2 = (*(int32_t*)(localVarBase + __op2));
  3163. if ((CheckAddOverflow(op1, op2)) == 0)
  3164. {
  3165. (*(int32_t*)(localVarBase + __ret)) = op1 + op2;
  3166. }
  3167. else
  3168. {
  3169. il2cpp::vm::Exception::RaiseOverflowException();
  3170. }
  3171. ip += 8;
  3172. continue;
  3173. }
  3174. case HiOpcodeEnum::BinOpOverflowVarVarVar_Sub_i4:
  3175. {
  3176. uint16_t __ret = *(uint16_t*)(ip + 2);
  3177. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3178. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3179. int32_t op1 = (*(int32_t*)(localVarBase + __op1));
  3180. int32_t op2 = (*(int32_t*)(localVarBase + __op2));
  3181. if ((CheckSubOverflow(op1, op2)) == 0)
  3182. {
  3183. (*(int32_t*)(localVarBase + __ret)) = op1 - op2;
  3184. }
  3185. else
  3186. {
  3187. il2cpp::vm::Exception::RaiseOverflowException();
  3188. }
  3189. ip += 8;
  3190. continue;
  3191. }
  3192. case HiOpcodeEnum::BinOpOverflowVarVarVar_Mul_i4:
  3193. {
  3194. uint16_t __ret = *(uint16_t*)(ip + 2);
  3195. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3196. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3197. int32_t op1 = (*(int32_t*)(localVarBase + __op1));
  3198. int32_t op2 = (*(int32_t*)(localVarBase + __op2));
  3199. if ((CheckMulOverflow(op1, op2)) == 0)
  3200. {
  3201. (*(int32_t*)(localVarBase + __ret)) = op1 * op2;
  3202. }
  3203. else
  3204. {
  3205. il2cpp::vm::Exception::RaiseOverflowException();
  3206. }
  3207. ip += 8;
  3208. continue;
  3209. }
  3210. case HiOpcodeEnum::BinOpOverflowVarVarVar_Add_i8:
  3211. {
  3212. uint16_t __ret = *(uint16_t*)(ip + 2);
  3213. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3214. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3215. int64_t op1 = (*(int64_t*)(localVarBase + __op1));
  3216. int64_t op2 = (*(int64_t*)(localVarBase + __op2));
  3217. if ((CheckAddOverflow64(op1, op2)) == 0)
  3218. {
  3219. (*(int64_t*)(localVarBase + __ret)) = op1 + op2;
  3220. }
  3221. else
  3222. {
  3223. il2cpp::vm::Exception::RaiseOverflowException();
  3224. }
  3225. ip += 8;
  3226. continue;
  3227. }
  3228. case HiOpcodeEnum::BinOpOverflowVarVarVar_Sub_i8:
  3229. {
  3230. uint16_t __ret = *(uint16_t*)(ip + 2);
  3231. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3232. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3233. int64_t op1 = (*(int64_t*)(localVarBase + __op1));
  3234. int64_t op2 = (*(int64_t*)(localVarBase + __op2));
  3235. if ((CheckSubOverflow64(op1, op2)) == 0)
  3236. {
  3237. (*(int64_t*)(localVarBase + __ret)) = op1 - op2;
  3238. }
  3239. else
  3240. {
  3241. il2cpp::vm::Exception::RaiseOverflowException();
  3242. }
  3243. ip += 8;
  3244. continue;
  3245. }
  3246. case HiOpcodeEnum::BinOpOverflowVarVarVar_Mul_i8:
  3247. {
  3248. uint16_t __ret = *(uint16_t*)(ip + 2);
  3249. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3250. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3251. int64_t op1 = (*(int64_t*)(localVarBase + __op1));
  3252. int64_t op2 = (*(int64_t*)(localVarBase + __op2));
  3253. if ((CheckMulOverflow64(op1, op2)) == 0)
  3254. {
  3255. (*(int64_t*)(localVarBase + __ret)) = op1 * op2;
  3256. }
  3257. else
  3258. {
  3259. il2cpp::vm::Exception::RaiseOverflowException();
  3260. }
  3261. ip += 8;
  3262. continue;
  3263. }
  3264. case HiOpcodeEnum::BinOpOverflowVarVarVar_Add_u4:
  3265. {
  3266. uint16_t __ret = *(uint16_t*)(ip + 2);
  3267. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3268. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3269. uint32_t op1 = (*(uint32_t*)(localVarBase + __op1));
  3270. uint32_t op2 = (*(uint32_t*)(localVarBase + __op2));
  3271. if ((CheckAddOverflowUn(op1, op2)) == 0)
  3272. {
  3273. (*(uint32_t*)(localVarBase + __ret)) = op1 + op2;
  3274. }
  3275. else
  3276. {
  3277. il2cpp::vm::Exception::RaiseOverflowException();
  3278. }
  3279. ip += 8;
  3280. continue;
  3281. }
  3282. case HiOpcodeEnum::BinOpOverflowVarVarVar_Sub_u4:
  3283. {
  3284. uint16_t __ret = *(uint16_t*)(ip + 2);
  3285. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3286. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3287. uint32_t op1 = (*(uint32_t*)(localVarBase + __op1));
  3288. uint32_t op2 = (*(uint32_t*)(localVarBase + __op2));
  3289. if ((CheckSubOverflowUn(op1, op2)) == 0)
  3290. {
  3291. (*(uint32_t*)(localVarBase + __ret)) = op1 - op2;
  3292. }
  3293. else
  3294. {
  3295. il2cpp::vm::Exception::RaiseOverflowException();
  3296. }
  3297. ip += 8;
  3298. continue;
  3299. }
  3300. case HiOpcodeEnum::BinOpOverflowVarVarVar_Mul_u4:
  3301. {
  3302. uint16_t __ret = *(uint16_t*)(ip + 2);
  3303. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3304. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3305. uint32_t op1 = (*(uint32_t*)(localVarBase + __op1));
  3306. uint32_t op2 = (*(uint32_t*)(localVarBase + __op2));
  3307. if ((CheckMulOverflowUn(op1, op2)) == 0)
  3308. {
  3309. (*(uint32_t*)(localVarBase + __ret)) = op1 * op2;
  3310. }
  3311. else
  3312. {
  3313. il2cpp::vm::Exception::RaiseOverflowException();
  3314. }
  3315. ip += 8;
  3316. continue;
  3317. }
  3318. case HiOpcodeEnum::BinOpOverflowVarVarVar_Add_u8:
  3319. {
  3320. uint16_t __ret = *(uint16_t*)(ip + 2);
  3321. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3322. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3323. uint64_t op1 = (*(uint64_t*)(localVarBase + __op1));
  3324. uint64_t op2 = (*(uint64_t*)(localVarBase + __op2));
  3325. if ((CheckAddOverflow64Un(op1, op2)) == 0)
  3326. {
  3327. (*(uint64_t*)(localVarBase + __ret)) = op1 + op2;
  3328. }
  3329. else
  3330. {
  3331. il2cpp::vm::Exception::RaiseOverflowException();
  3332. }
  3333. ip += 8;
  3334. continue;
  3335. }
  3336. case HiOpcodeEnum::BinOpOverflowVarVarVar_Sub_u8:
  3337. {
  3338. uint16_t __ret = *(uint16_t*)(ip + 2);
  3339. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3340. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3341. uint64_t op1 = (*(uint64_t*)(localVarBase + __op1));
  3342. uint64_t op2 = (*(uint64_t*)(localVarBase + __op2));
  3343. if ((CheckSubOverflow64Un(op1, op2)) == 0)
  3344. {
  3345. (*(uint64_t*)(localVarBase + __ret)) = op1 - op2;
  3346. }
  3347. else
  3348. {
  3349. il2cpp::vm::Exception::RaiseOverflowException();
  3350. }
  3351. ip += 8;
  3352. continue;
  3353. }
  3354. case HiOpcodeEnum::BinOpOverflowVarVarVar_Mul_u8:
  3355. {
  3356. uint16_t __ret = *(uint16_t*)(ip + 2);
  3357. uint16_t __op1 = *(uint16_t*)(ip + 4);
  3358. uint16_t __op2 = *(uint16_t*)(ip + 6);
  3359. uint64_t op1 = (*(uint64_t*)(localVarBase + __op1));
  3360. uint64_t op2 = (*(uint64_t*)(localVarBase + __op2));
  3361. if ((CheckMulOverflow64Un(op1, op2)) == 0)
  3362. {
  3363. (*(uint64_t*)(localVarBase + __ret)) = op1 * op2;
  3364. }
  3365. else
  3366. {
  3367. il2cpp::vm::Exception::RaiseOverflowException();
  3368. }
  3369. ip += 8;
  3370. continue;
  3371. }
  3372. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shl_i4_i4:
  3373. {
  3374. uint16_t __ret = *(uint16_t*)(ip + 2);
  3375. uint16_t __value = *(uint16_t*)(ip + 4);
  3376. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3377. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __value)) << (*(int32_t*)(localVarBase + __shiftAmount));
  3378. ip += 8;
  3379. continue;
  3380. }
  3381. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shr_i4_i4:
  3382. {
  3383. uint16_t __ret = *(uint16_t*)(ip + 2);
  3384. uint16_t __value = *(uint16_t*)(ip + 4);
  3385. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3386. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __value)) >> (*(int32_t*)(localVarBase + __shiftAmount));
  3387. ip += 8;
  3388. continue;
  3389. }
  3390. case HiOpcodeEnum::BitShiftBinOpVarVarVar_ShrUn_i4_i4:
  3391. {
  3392. uint16_t __ret = *(uint16_t*)(ip + 2);
  3393. uint16_t __value = *(uint16_t*)(ip + 4);
  3394. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3395. (*(int32_t*)(localVarBase + __ret)) = HiShrUn((*(int32_t*)(localVarBase + __value)), (*(int32_t*)(localVarBase + __shiftAmount)));
  3396. ip += 8;
  3397. continue;
  3398. }
  3399. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shl_i4_i8:
  3400. {
  3401. uint16_t __ret = *(uint16_t*)(ip + 2);
  3402. uint16_t __value = *(uint16_t*)(ip + 4);
  3403. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3404. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __value)) << (*(int64_t*)(localVarBase + __shiftAmount));
  3405. ip += 8;
  3406. continue;
  3407. }
  3408. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shr_i4_i8:
  3409. {
  3410. uint16_t __ret = *(uint16_t*)(ip + 2);
  3411. uint16_t __value = *(uint16_t*)(ip + 4);
  3412. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3413. (*(int32_t*)(localVarBase + __ret)) = (*(int32_t*)(localVarBase + __value)) >> (*(int64_t*)(localVarBase + __shiftAmount));
  3414. ip += 8;
  3415. continue;
  3416. }
  3417. case HiOpcodeEnum::BitShiftBinOpVarVarVar_ShrUn_i4_i8:
  3418. {
  3419. uint16_t __ret = *(uint16_t*)(ip + 2);
  3420. uint16_t __value = *(uint16_t*)(ip + 4);
  3421. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3422. (*(int32_t*)(localVarBase + __ret)) = HiShrUn((*(int32_t*)(localVarBase + __value)), (*(int64_t*)(localVarBase + __shiftAmount)));
  3423. ip += 8;
  3424. continue;
  3425. }
  3426. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shl_i8_i4:
  3427. {
  3428. uint16_t __ret = *(uint16_t*)(ip + 2);
  3429. uint16_t __value = *(uint16_t*)(ip + 4);
  3430. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3431. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __value)) << (*(int32_t*)(localVarBase + __shiftAmount));
  3432. ip += 8;
  3433. continue;
  3434. }
  3435. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shr_i8_i4:
  3436. {
  3437. uint16_t __ret = *(uint16_t*)(ip + 2);
  3438. uint16_t __value = *(uint16_t*)(ip + 4);
  3439. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3440. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __value)) >> (*(int32_t*)(localVarBase + __shiftAmount));
  3441. ip += 8;
  3442. continue;
  3443. }
  3444. case HiOpcodeEnum::BitShiftBinOpVarVarVar_ShrUn_i8_i4:
  3445. {
  3446. uint16_t __ret = *(uint16_t*)(ip + 2);
  3447. uint16_t __value = *(uint16_t*)(ip + 4);
  3448. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3449. (*(int64_t*)(localVarBase + __ret)) = HiShrUn((*(int64_t*)(localVarBase + __value)), (*(int32_t*)(localVarBase + __shiftAmount)));
  3450. ip += 8;
  3451. continue;
  3452. }
  3453. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shl_i8_i8:
  3454. {
  3455. uint16_t __ret = *(uint16_t*)(ip + 2);
  3456. uint16_t __value = *(uint16_t*)(ip + 4);
  3457. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3458. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __value)) << (*(int64_t*)(localVarBase + __shiftAmount));
  3459. ip += 8;
  3460. continue;
  3461. }
  3462. case HiOpcodeEnum::BitShiftBinOpVarVarVar_Shr_i8_i8:
  3463. {
  3464. uint16_t __ret = *(uint16_t*)(ip + 2);
  3465. uint16_t __value = *(uint16_t*)(ip + 4);
  3466. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3467. (*(int64_t*)(localVarBase + __ret)) = (*(int64_t*)(localVarBase + __value)) >> (*(int64_t*)(localVarBase + __shiftAmount));
  3468. ip += 8;
  3469. continue;
  3470. }
  3471. case HiOpcodeEnum::BitShiftBinOpVarVarVar_ShrUn_i8_i8:
  3472. {
  3473. uint16_t __ret = *(uint16_t*)(ip + 2);
  3474. uint16_t __value = *(uint16_t*)(ip + 4);
  3475. uint16_t __shiftAmount = *(uint16_t*)(ip + 6);
  3476. (*(int64_t*)(localVarBase + __ret)) = HiShrUn((*(int64_t*)(localVarBase + __value)), (*(int64_t*)(localVarBase + __shiftAmount)));
  3477. ip += 8;
  3478. continue;
  3479. }
  3480. case HiOpcodeEnum::UnaryOpVarVar_Neg_i4:
  3481. {
  3482. uint16_t __dst = *(uint16_t*)(ip + 2);
  3483. uint16_t __src = *(uint16_t*)(ip + 4);
  3484. (*(int32_t*)(localVarBase + __dst)) = - (*(int32_t*)(localVarBase + __src));
  3485. ip += 8;
  3486. continue;
  3487. }
  3488. case HiOpcodeEnum::UnaryOpVarVar_Not_i4:
  3489. {
  3490. uint16_t __dst = *(uint16_t*)(ip + 2);
  3491. uint16_t __src = *(uint16_t*)(ip + 4);
  3492. (*(int32_t*)(localVarBase + __dst)) = ~ (*(int32_t*)(localVarBase + __src));
  3493. ip += 8;
  3494. continue;
  3495. }
  3496. case HiOpcodeEnum::UnaryOpVarVar_Neg_i8:
  3497. {
  3498. uint16_t __dst = *(uint16_t*)(ip + 2);
  3499. uint16_t __src = *(uint16_t*)(ip + 4);
  3500. (*(int64_t*)(localVarBase + __dst)) = - (*(int64_t*)(localVarBase + __src));
  3501. ip += 8;
  3502. continue;
  3503. }
  3504. case HiOpcodeEnum::UnaryOpVarVar_Not_i8:
  3505. {
  3506. uint16_t __dst = *(uint16_t*)(ip + 2);
  3507. uint16_t __src = *(uint16_t*)(ip + 4);
  3508. (*(int64_t*)(localVarBase + __dst)) = ~ (*(int64_t*)(localVarBase + __src));
  3509. ip += 8;
  3510. continue;
  3511. }
  3512. case HiOpcodeEnum::UnaryOpVarVar_Neg_f4:
  3513. {
  3514. uint16_t __dst = *(uint16_t*)(ip + 2);
  3515. uint16_t __src = *(uint16_t*)(ip + 4);
  3516. (*(float*)(localVarBase + __dst)) = - (*(float*)(localVarBase + __src));
  3517. ip += 8;
  3518. continue;
  3519. }
  3520. case HiOpcodeEnum::UnaryOpVarVar_Neg_f8:
  3521. {
  3522. uint16_t __dst = *(uint16_t*)(ip + 2);
  3523. uint16_t __src = *(uint16_t*)(ip + 4);
  3524. (*(double*)(localVarBase + __dst)) = - (*(double*)(localVarBase + __src));
  3525. ip += 8;
  3526. continue;
  3527. }
  3528. case HiOpcodeEnum::CheckFiniteVar_f4:
  3529. {
  3530. uint16_t __src = *(uint16_t*)(ip + 2);
  3531. HiCheckFinite((*(float*)(localVarBase + __src)));
  3532. ip += 8;
  3533. continue;
  3534. }
  3535. case HiOpcodeEnum::CheckFiniteVar_f8:
  3536. {
  3537. uint16_t __src = *(uint16_t*)(ip + 2);
  3538. HiCheckFinite((*(double*)(localVarBase + __src)));
  3539. ip += 8;
  3540. continue;
  3541. }
  3542. //!!!}}ARITH
  3543. #pragma endregion
  3544. #pragma region COMPARE
  3545. //!!!{{COMPARE
  3546. case HiOpcodeEnum::CompOpVarVarVar_Ceq_i4:
  3547. {
  3548. uint16_t __ret = *(uint16_t*)(ip + 2);
  3549. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3550. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3551. (*(int32_t*)(localVarBase + __ret)) = CompareCeq((*(int32_t*)(localVarBase + __c1)), (*(int32_t*)(localVarBase + __c2)));
  3552. ip += 8;
  3553. continue;
  3554. }
  3555. case HiOpcodeEnum::CompOpVarVarVar_Ceq_i8:
  3556. {
  3557. uint16_t __ret = *(uint16_t*)(ip + 2);
  3558. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3559. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3560. (*(int32_t*)(localVarBase + __ret)) = CompareCeq((*(int64_t*)(localVarBase + __c1)), (*(int64_t*)(localVarBase + __c2)));
  3561. ip += 8;
  3562. continue;
  3563. }
  3564. case HiOpcodeEnum::CompOpVarVarVar_Ceq_f4:
  3565. {
  3566. uint16_t __ret = *(uint16_t*)(ip + 2);
  3567. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3568. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3569. (*(int32_t*)(localVarBase + __ret)) = CompareCeq((*(float*)(localVarBase + __c1)), (*(float*)(localVarBase + __c2)));
  3570. ip += 8;
  3571. continue;
  3572. }
  3573. case HiOpcodeEnum::CompOpVarVarVar_Ceq_f8:
  3574. {
  3575. uint16_t __ret = *(uint16_t*)(ip + 2);
  3576. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3577. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3578. (*(int32_t*)(localVarBase + __ret)) = CompareCeq((*(double*)(localVarBase + __c1)), (*(double*)(localVarBase + __c2)));
  3579. ip += 8;
  3580. continue;
  3581. }
  3582. case HiOpcodeEnum::CompOpVarVarVar_Cgt_i4:
  3583. {
  3584. uint16_t __ret = *(uint16_t*)(ip + 2);
  3585. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3586. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3587. (*(int32_t*)(localVarBase + __ret)) = CompareCgt((*(int32_t*)(localVarBase + __c1)), (*(int32_t*)(localVarBase + __c2)));
  3588. ip += 8;
  3589. continue;
  3590. }
  3591. case HiOpcodeEnum::CompOpVarVarVar_Cgt_i8:
  3592. {
  3593. uint16_t __ret = *(uint16_t*)(ip + 2);
  3594. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3595. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3596. (*(int32_t*)(localVarBase + __ret)) = CompareCgt((*(int64_t*)(localVarBase + __c1)), (*(int64_t*)(localVarBase + __c2)));
  3597. ip += 8;
  3598. continue;
  3599. }
  3600. case HiOpcodeEnum::CompOpVarVarVar_Cgt_f4:
  3601. {
  3602. uint16_t __ret = *(uint16_t*)(ip + 2);
  3603. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3604. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3605. (*(int32_t*)(localVarBase + __ret)) = CompareCgt((*(float*)(localVarBase + __c1)), (*(float*)(localVarBase + __c2)));
  3606. ip += 8;
  3607. continue;
  3608. }
  3609. case HiOpcodeEnum::CompOpVarVarVar_Cgt_f8:
  3610. {
  3611. uint16_t __ret = *(uint16_t*)(ip + 2);
  3612. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3613. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3614. (*(int32_t*)(localVarBase + __ret)) = CompareCgt((*(double*)(localVarBase + __c1)), (*(double*)(localVarBase + __c2)));
  3615. ip += 8;
  3616. continue;
  3617. }
  3618. case HiOpcodeEnum::CompOpVarVarVar_CgtUn_i4:
  3619. {
  3620. uint16_t __ret = *(uint16_t*)(ip + 2);
  3621. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3622. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3623. (*(int32_t*)(localVarBase + __ret)) = CompareCgtUn((*(int32_t*)(localVarBase + __c1)), (*(int32_t*)(localVarBase + __c2)));
  3624. ip += 8;
  3625. continue;
  3626. }
  3627. case HiOpcodeEnum::CompOpVarVarVar_CgtUn_i8:
  3628. {
  3629. uint16_t __ret = *(uint16_t*)(ip + 2);
  3630. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3631. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3632. (*(int32_t*)(localVarBase + __ret)) = CompareCgtUn((*(int64_t*)(localVarBase + __c1)), (*(int64_t*)(localVarBase + __c2)));
  3633. ip += 8;
  3634. continue;
  3635. }
  3636. case HiOpcodeEnum::CompOpVarVarVar_CgtUn_f4:
  3637. {
  3638. uint16_t __ret = *(uint16_t*)(ip + 2);
  3639. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3640. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3641. (*(int32_t*)(localVarBase + __ret)) = CompareCgtUn((*(float*)(localVarBase + __c1)), (*(float*)(localVarBase + __c2)));
  3642. ip += 8;
  3643. continue;
  3644. }
  3645. case HiOpcodeEnum::CompOpVarVarVar_CgtUn_f8:
  3646. {
  3647. uint16_t __ret = *(uint16_t*)(ip + 2);
  3648. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3649. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3650. (*(int32_t*)(localVarBase + __ret)) = CompareCgtUn((*(double*)(localVarBase + __c1)), (*(double*)(localVarBase + __c2)));
  3651. ip += 8;
  3652. continue;
  3653. }
  3654. case HiOpcodeEnum::CompOpVarVarVar_Clt_i4:
  3655. {
  3656. uint16_t __ret = *(uint16_t*)(ip + 2);
  3657. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3658. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3659. (*(int32_t*)(localVarBase + __ret)) = CompareClt((*(int32_t*)(localVarBase + __c1)), (*(int32_t*)(localVarBase + __c2)));
  3660. ip += 8;
  3661. continue;
  3662. }
  3663. case HiOpcodeEnum::CompOpVarVarVar_Clt_i8:
  3664. {
  3665. uint16_t __ret = *(uint16_t*)(ip + 2);
  3666. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3667. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3668. (*(int32_t*)(localVarBase + __ret)) = CompareClt((*(int64_t*)(localVarBase + __c1)), (*(int64_t*)(localVarBase + __c2)));
  3669. ip += 8;
  3670. continue;
  3671. }
  3672. case HiOpcodeEnum::CompOpVarVarVar_Clt_f4:
  3673. {
  3674. uint16_t __ret = *(uint16_t*)(ip + 2);
  3675. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3676. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3677. (*(int32_t*)(localVarBase + __ret)) = CompareClt((*(float*)(localVarBase + __c1)), (*(float*)(localVarBase + __c2)));
  3678. ip += 8;
  3679. continue;
  3680. }
  3681. case HiOpcodeEnum::CompOpVarVarVar_Clt_f8:
  3682. {
  3683. uint16_t __ret = *(uint16_t*)(ip + 2);
  3684. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3685. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3686. (*(int32_t*)(localVarBase + __ret)) = CompareClt((*(double*)(localVarBase + __c1)), (*(double*)(localVarBase + __c2)));
  3687. ip += 8;
  3688. continue;
  3689. }
  3690. case HiOpcodeEnum::CompOpVarVarVar_CltUn_i4:
  3691. {
  3692. uint16_t __ret = *(uint16_t*)(ip + 2);
  3693. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3694. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3695. (*(int32_t*)(localVarBase + __ret)) = CompareCltUn((*(int32_t*)(localVarBase + __c1)), (*(int32_t*)(localVarBase + __c2)));
  3696. ip += 8;
  3697. continue;
  3698. }
  3699. case HiOpcodeEnum::CompOpVarVarVar_CltUn_i8:
  3700. {
  3701. uint16_t __ret = *(uint16_t*)(ip + 2);
  3702. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3703. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3704. (*(int32_t*)(localVarBase + __ret)) = CompareCltUn((*(int64_t*)(localVarBase + __c1)), (*(int64_t*)(localVarBase + __c2)));
  3705. ip += 8;
  3706. continue;
  3707. }
  3708. case HiOpcodeEnum::CompOpVarVarVar_CltUn_f4:
  3709. {
  3710. uint16_t __ret = *(uint16_t*)(ip + 2);
  3711. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3712. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3713. (*(int32_t*)(localVarBase + __ret)) = CompareCltUn((*(float*)(localVarBase + __c1)), (*(float*)(localVarBase + __c2)));
  3714. ip += 8;
  3715. continue;
  3716. }
  3717. case HiOpcodeEnum::CompOpVarVarVar_CltUn_f8:
  3718. {
  3719. uint16_t __ret = *(uint16_t*)(ip + 2);
  3720. uint16_t __c1 = *(uint16_t*)(ip + 4);
  3721. uint16_t __c2 = *(uint16_t*)(ip + 6);
  3722. (*(int32_t*)(localVarBase + __ret)) = CompareCltUn((*(double*)(localVarBase + __c1)), (*(double*)(localVarBase + __c2)));
  3723. ip += 8;
  3724. continue;
  3725. }
  3726. //!!!}}COMPARE
  3727. #pragma endregion
  3728. #pragma region BRANCH
  3729. //!!!{{BRANCH
  3730. case HiOpcodeEnum::BranchUncondition_4:
  3731. {
  3732. int32_t __offset = *(int32_t*)(ip + 4);
  3733. ip = ipBase + __offset;
  3734. continue;
  3735. }
  3736. case HiOpcodeEnum::BranchTrueVar_i4:
  3737. {
  3738. uint16_t __op = *(uint16_t*)(ip + 2);
  3739. int32_t __offset = *(int32_t*)(ip + 4);
  3740. if ((*(int32_t*)(localVarBase + __op)))
  3741. {
  3742. ip = ipBase + __offset;
  3743. }
  3744. else
  3745. {
  3746. ip += 8;
  3747. }
  3748. continue;
  3749. }
  3750. case HiOpcodeEnum::BranchTrueVar_i8:
  3751. {
  3752. uint16_t __op = *(uint16_t*)(ip + 2);
  3753. int32_t __offset = *(int32_t*)(ip + 4);
  3754. if ((*(int64_t*)(localVarBase + __op)))
  3755. {
  3756. ip = ipBase + __offset;
  3757. }
  3758. else
  3759. {
  3760. ip += 8;
  3761. }
  3762. continue;
  3763. }
  3764. case HiOpcodeEnum::BranchFalseVar_i4:
  3765. {
  3766. uint16_t __op = *(uint16_t*)(ip + 2);
  3767. int32_t __offset = *(int32_t*)(ip + 4);
  3768. if (!(*(int32_t*)(localVarBase + __op)))
  3769. {
  3770. ip = ipBase + __offset;
  3771. }
  3772. else
  3773. {
  3774. ip += 8;
  3775. }
  3776. continue;
  3777. }
  3778. case HiOpcodeEnum::BranchFalseVar_i8:
  3779. {
  3780. uint16_t __op = *(uint16_t*)(ip + 2);
  3781. int32_t __offset = *(int32_t*)(ip + 4);
  3782. if (!(*(int64_t*)(localVarBase + __op)))
  3783. {
  3784. ip = ipBase + __offset;
  3785. }
  3786. else
  3787. {
  3788. ip += 8;
  3789. }
  3790. continue;
  3791. }
  3792. case HiOpcodeEnum::BranchVarVar_Ceq_i4:
  3793. {
  3794. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3795. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3796. int32_t __offset = *(int32_t*)(ip + 8);
  3797. if (CompareCeq((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  3798. {
  3799. ip = ipBase + __offset;
  3800. }
  3801. else
  3802. {
  3803. ip += 16;
  3804. }
  3805. continue;
  3806. }
  3807. case HiOpcodeEnum::BranchVarVar_Ceq_i8:
  3808. {
  3809. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3810. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3811. int32_t __offset = *(int32_t*)(ip + 8);
  3812. if (CompareCeq((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  3813. {
  3814. ip = ipBase + __offset;
  3815. }
  3816. else
  3817. {
  3818. ip += 16;
  3819. }
  3820. continue;
  3821. }
  3822. case HiOpcodeEnum::BranchVarVar_Ceq_f4:
  3823. {
  3824. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3825. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3826. int32_t __offset = *(int32_t*)(ip + 8);
  3827. if (CompareCeq((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  3828. {
  3829. ip = ipBase + __offset;
  3830. }
  3831. else
  3832. {
  3833. ip += 16;
  3834. }
  3835. continue;
  3836. }
  3837. case HiOpcodeEnum::BranchVarVar_Ceq_f8:
  3838. {
  3839. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3840. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3841. int32_t __offset = *(int32_t*)(ip + 8);
  3842. if (CompareCeq((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  3843. {
  3844. ip = ipBase + __offset;
  3845. }
  3846. else
  3847. {
  3848. ip += 16;
  3849. }
  3850. continue;
  3851. }
  3852. case HiOpcodeEnum::BranchVarVar_CneUn_i4:
  3853. {
  3854. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3855. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3856. int32_t __offset = *(int32_t*)(ip + 8);
  3857. if (CompareCneUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  3858. {
  3859. ip = ipBase + __offset;
  3860. }
  3861. else
  3862. {
  3863. ip += 16;
  3864. }
  3865. continue;
  3866. }
  3867. case HiOpcodeEnum::BranchVarVar_CneUn_i8:
  3868. {
  3869. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3870. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3871. int32_t __offset = *(int32_t*)(ip + 8);
  3872. if (CompareCneUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  3873. {
  3874. ip = ipBase + __offset;
  3875. }
  3876. else
  3877. {
  3878. ip += 16;
  3879. }
  3880. continue;
  3881. }
  3882. case HiOpcodeEnum::BranchVarVar_CneUn_f4:
  3883. {
  3884. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3885. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3886. int32_t __offset = *(int32_t*)(ip + 8);
  3887. if (CompareCneUn((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  3888. {
  3889. ip = ipBase + __offset;
  3890. }
  3891. else
  3892. {
  3893. ip += 16;
  3894. }
  3895. continue;
  3896. }
  3897. case HiOpcodeEnum::BranchVarVar_CneUn_f8:
  3898. {
  3899. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3900. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3901. int32_t __offset = *(int32_t*)(ip + 8);
  3902. if (CompareCneUn((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  3903. {
  3904. ip = ipBase + __offset;
  3905. }
  3906. else
  3907. {
  3908. ip += 16;
  3909. }
  3910. continue;
  3911. }
  3912. case HiOpcodeEnum::BranchVarVar_Cgt_i4:
  3913. {
  3914. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3915. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3916. int32_t __offset = *(int32_t*)(ip + 8);
  3917. if (CompareCle((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  3918. {
  3919. ip += 16;
  3920. }
  3921. else
  3922. {
  3923. ip = ipBase + __offset;
  3924. }
  3925. continue;
  3926. }
  3927. case HiOpcodeEnum::BranchVarVar_Cgt_i8:
  3928. {
  3929. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3930. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3931. int32_t __offset = *(int32_t*)(ip + 8);
  3932. if (CompareCle((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  3933. {
  3934. ip += 16;
  3935. }
  3936. else
  3937. {
  3938. ip = ipBase + __offset;
  3939. }
  3940. continue;
  3941. }
  3942. case HiOpcodeEnum::BranchVarVar_Cgt_f4:
  3943. {
  3944. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3945. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3946. int32_t __offset = *(int32_t*)(ip + 8);
  3947. if (CompareCle((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  3948. {
  3949. ip += 16;
  3950. }
  3951. else
  3952. {
  3953. ip = ipBase + __offset;
  3954. }
  3955. continue;
  3956. }
  3957. case HiOpcodeEnum::BranchVarVar_Cgt_f8:
  3958. {
  3959. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3960. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3961. int32_t __offset = *(int32_t*)(ip + 8);
  3962. if (CompareCle((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  3963. {
  3964. ip += 16;
  3965. }
  3966. else
  3967. {
  3968. ip = ipBase + __offset;
  3969. }
  3970. continue;
  3971. }
  3972. case HiOpcodeEnum::BranchVarVar_CgtUn_i4:
  3973. {
  3974. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3975. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3976. int32_t __offset = *(int32_t*)(ip + 8);
  3977. if (CompareCleUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  3978. {
  3979. ip += 16;
  3980. }
  3981. else
  3982. {
  3983. ip = ipBase + __offset;
  3984. }
  3985. continue;
  3986. }
  3987. case HiOpcodeEnum::BranchVarVar_CgtUn_i8:
  3988. {
  3989. uint16_t __op1 = *(uint16_t*)(ip + 2);
  3990. uint16_t __op2 = *(uint16_t*)(ip + 4);
  3991. int32_t __offset = *(int32_t*)(ip + 8);
  3992. if (CompareCleUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  3993. {
  3994. ip += 16;
  3995. }
  3996. else
  3997. {
  3998. ip = ipBase + __offset;
  3999. }
  4000. continue;
  4001. }
  4002. case HiOpcodeEnum::BranchVarVar_CgtUn_f4:
  4003. {
  4004. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4005. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4006. int32_t __offset = *(int32_t*)(ip + 8);
  4007. if (CompareCleUn((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  4008. {
  4009. ip += 16;
  4010. }
  4011. else
  4012. {
  4013. ip = ipBase + __offset;
  4014. }
  4015. continue;
  4016. }
  4017. case HiOpcodeEnum::BranchVarVar_CgtUn_f8:
  4018. {
  4019. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4020. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4021. int32_t __offset = *(int32_t*)(ip + 8);
  4022. if (CompareCleUn((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4023. {
  4024. ip += 16;
  4025. }
  4026. else
  4027. {
  4028. ip = ipBase + __offset;
  4029. }
  4030. continue;
  4031. }
  4032. case HiOpcodeEnum::BranchVarVar_Cge_i4:
  4033. {
  4034. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4035. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4036. int32_t __offset = *(int32_t*)(ip + 8);
  4037. if (CompareClt((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  4038. {
  4039. ip += 16;
  4040. }
  4041. else
  4042. {
  4043. ip = ipBase + __offset;
  4044. }
  4045. continue;
  4046. }
  4047. case HiOpcodeEnum::BranchVarVar_Cge_i8:
  4048. {
  4049. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4050. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4051. int32_t __offset = *(int32_t*)(ip + 8);
  4052. if (CompareClt((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  4053. {
  4054. ip += 16;
  4055. }
  4056. else
  4057. {
  4058. ip = ipBase + __offset;
  4059. }
  4060. continue;
  4061. }
  4062. case HiOpcodeEnum::BranchVarVar_Cge_f4:
  4063. {
  4064. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4065. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4066. int32_t __offset = *(int32_t*)(ip + 8);
  4067. if (CompareClt((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  4068. {
  4069. ip += 16;
  4070. }
  4071. else
  4072. {
  4073. ip = ipBase + __offset;
  4074. }
  4075. continue;
  4076. }
  4077. case HiOpcodeEnum::BranchVarVar_Cge_f8:
  4078. {
  4079. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4080. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4081. int32_t __offset = *(int32_t*)(ip + 8);
  4082. if (CompareClt((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4083. {
  4084. ip += 16;
  4085. }
  4086. else
  4087. {
  4088. ip = ipBase + __offset;
  4089. }
  4090. continue;
  4091. }
  4092. case HiOpcodeEnum::BranchVarVar_CgeUn_i4:
  4093. {
  4094. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4095. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4096. int32_t __offset = *(int32_t*)(ip + 8);
  4097. if (CompareCltUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  4098. {
  4099. ip += 16;
  4100. }
  4101. else
  4102. {
  4103. ip = ipBase + __offset;
  4104. }
  4105. continue;
  4106. }
  4107. case HiOpcodeEnum::BranchVarVar_CgeUn_i8:
  4108. {
  4109. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4110. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4111. int32_t __offset = *(int32_t*)(ip + 8);
  4112. if (CompareCltUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  4113. {
  4114. ip += 16;
  4115. }
  4116. else
  4117. {
  4118. ip = ipBase + __offset;
  4119. }
  4120. continue;
  4121. }
  4122. case HiOpcodeEnum::BranchVarVar_CgeUn_f4:
  4123. {
  4124. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4125. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4126. int32_t __offset = *(int32_t*)(ip + 8);
  4127. if (CompareCltUn((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  4128. {
  4129. ip += 16;
  4130. }
  4131. else
  4132. {
  4133. ip = ipBase + __offset;
  4134. }
  4135. continue;
  4136. }
  4137. case HiOpcodeEnum::BranchVarVar_CgeUn_f8:
  4138. {
  4139. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4140. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4141. int32_t __offset = *(int32_t*)(ip + 8);
  4142. if (CompareCltUn((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4143. {
  4144. ip += 16;
  4145. }
  4146. else
  4147. {
  4148. ip = ipBase + __offset;
  4149. }
  4150. continue;
  4151. }
  4152. case HiOpcodeEnum::BranchVarVar_Clt_i4:
  4153. {
  4154. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4155. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4156. int32_t __offset = *(int32_t*)(ip + 8);
  4157. if (CompareCge((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  4158. {
  4159. ip += 16;
  4160. }
  4161. else
  4162. {
  4163. ip = ipBase + __offset;
  4164. }
  4165. continue;
  4166. }
  4167. case HiOpcodeEnum::BranchVarVar_Clt_i8:
  4168. {
  4169. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4170. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4171. int32_t __offset = *(int32_t*)(ip + 8);
  4172. if (CompareCge((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  4173. {
  4174. ip += 16;
  4175. }
  4176. else
  4177. {
  4178. ip = ipBase + __offset;
  4179. }
  4180. continue;
  4181. }
  4182. case HiOpcodeEnum::BranchVarVar_Clt_f4:
  4183. {
  4184. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4185. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4186. int32_t __offset = *(int32_t*)(ip + 8);
  4187. if (CompareCge((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  4188. {
  4189. ip += 16;
  4190. }
  4191. else
  4192. {
  4193. ip = ipBase + __offset;
  4194. }
  4195. continue;
  4196. }
  4197. case HiOpcodeEnum::BranchVarVar_Clt_f8:
  4198. {
  4199. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4200. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4201. int32_t __offset = *(int32_t*)(ip + 8);
  4202. if (CompareCge((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4203. {
  4204. ip += 16;
  4205. }
  4206. else
  4207. {
  4208. ip = ipBase + __offset;
  4209. }
  4210. continue;
  4211. }
  4212. case HiOpcodeEnum::BranchVarVar_CltUn_i4:
  4213. {
  4214. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4215. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4216. int32_t __offset = *(int32_t*)(ip + 8);
  4217. if (CompareCgeUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  4218. {
  4219. ip += 16;
  4220. }
  4221. else
  4222. {
  4223. ip = ipBase + __offset;
  4224. }
  4225. continue;
  4226. }
  4227. case HiOpcodeEnum::BranchVarVar_CltUn_i8:
  4228. {
  4229. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4230. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4231. int32_t __offset = *(int32_t*)(ip + 8);
  4232. if (CompareCgeUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  4233. {
  4234. ip += 16;
  4235. }
  4236. else
  4237. {
  4238. ip = ipBase + __offset;
  4239. }
  4240. continue;
  4241. }
  4242. case HiOpcodeEnum::BranchVarVar_CltUn_f4:
  4243. {
  4244. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4245. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4246. int32_t __offset = *(int32_t*)(ip + 8);
  4247. if (CompareCgeUn((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  4248. {
  4249. ip += 16;
  4250. }
  4251. else
  4252. {
  4253. ip = ipBase + __offset;
  4254. }
  4255. continue;
  4256. }
  4257. case HiOpcodeEnum::BranchVarVar_CltUn_f8:
  4258. {
  4259. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4260. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4261. int32_t __offset = *(int32_t*)(ip + 8);
  4262. if (CompareCgeUn((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4263. {
  4264. ip += 16;
  4265. }
  4266. else
  4267. {
  4268. ip = ipBase + __offset;
  4269. }
  4270. continue;
  4271. }
  4272. case HiOpcodeEnum::BranchVarVar_Cle_i4:
  4273. {
  4274. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4275. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4276. int32_t __offset = *(int32_t*)(ip + 8);
  4277. if (CompareCgt((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  4278. {
  4279. ip += 16;
  4280. }
  4281. else
  4282. {
  4283. ip = ipBase + __offset;
  4284. }
  4285. continue;
  4286. }
  4287. case HiOpcodeEnum::BranchVarVar_Cle_i8:
  4288. {
  4289. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4290. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4291. int32_t __offset = *(int32_t*)(ip + 8);
  4292. if (CompareCgt((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  4293. {
  4294. ip += 16;
  4295. }
  4296. else
  4297. {
  4298. ip = ipBase + __offset;
  4299. }
  4300. continue;
  4301. }
  4302. case HiOpcodeEnum::BranchVarVar_Cle_f4:
  4303. {
  4304. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4305. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4306. int32_t __offset = *(int32_t*)(ip + 8);
  4307. if (CompareCgt((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  4308. {
  4309. ip += 16;
  4310. }
  4311. else
  4312. {
  4313. ip = ipBase + __offset;
  4314. }
  4315. continue;
  4316. }
  4317. case HiOpcodeEnum::BranchVarVar_Cle_f8:
  4318. {
  4319. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4320. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4321. int32_t __offset = *(int32_t*)(ip + 8);
  4322. if (CompareCgt((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4323. {
  4324. ip += 16;
  4325. }
  4326. else
  4327. {
  4328. ip = ipBase + __offset;
  4329. }
  4330. continue;
  4331. }
  4332. case HiOpcodeEnum::BranchVarVar_CleUn_i4:
  4333. {
  4334. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4335. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4336. int32_t __offset = *(int32_t*)(ip + 8);
  4337. if (CompareCgtUn((*(int32_t*)(localVarBase + __op1)), (*(int32_t*)(localVarBase + __op2))))
  4338. {
  4339. ip += 16;
  4340. }
  4341. else
  4342. {
  4343. ip = ipBase + __offset;
  4344. }
  4345. continue;
  4346. }
  4347. case HiOpcodeEnum::BranchVarVar_CleUn_i8:
  4348. {
  4349. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4350. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4351. int32_t __offset = *(int32_t*)(ip + 8);
  4352. if (CompareCgtUn((*(int64_t*)(localVarBase + __op1)), (*(int64_t*)(localVarBase + __op2))))
  4353. {
  4354. ip += 16;
  4355. }
  4356. else
  4357. {
  4358. ip = ipBase + __offset;
  4359. }
  4360. continue;
  4361. }
  4362. case HiOpcodeEnum::BranchVarVar_CleUn_f4:
  4363. {
  4364. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4365. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4366. int32_t __offset = *(int32_t*)(ip + 8);
  4367. if (CompareCgtUn((*(float*)(localVarBase + __op1)), (*(float*)(localVarBase + __op2))))
  4368. {
  4369. ip += 16;
  4370. }
  4371. else
  4372. {
  4373. ip = ipBase + __offset;
  4374. }
  4375. continue;
  4376. }
  4377. case HiOpcodeEnum::BranchVarVar_CleUn_f8:
  4378. {
  4379. uint16_t __op1 = *(uint16_t*)(ip + 2);
  4380. uint16_t __op2 = *(uint16_t*)(ip + 4);
  4381. int32_t __offset = *(int32_t*)(ip + 8);
  4382. if (CompareCgtUn((*(double*)(localVarBase + __op1)), (*(double*)(localVarBase + __op2))))
  4383. {
  4384. ip += 16;
  4385. }
  4386. else
  4387. {
  4388. ip = ipBase + __offset;
  4389. }
  4390. continue;
  4391. }
  4392. case HiOpcodeEnum::BranchJump:
  4393. {
  4394. uint32_t __token = *(uint32_t*)(ip + 4);
  4395. IL2CPP_ASSERT(false);
  4396. ip += 8;
  4397. continue;
  4398. }
  4399. case HiOpcodeEnum::BranchSwitch:
  4400. {
  4401. uint16_t __value = *(uint16_t*)(ip + 2);
  4402. uint32_t __caseNum = *(uint32_t*)(ip + 4);
  4403. uint32_t __caseOffsets = *(uint32_t*)(ip + 8);
  4404. uint32_t __idx = (*(uint32_t*)(localVarBase + __value));
  4405. if (__idx < __caseNum)
  4406. {
  4407. ip = ipBase + ((uint32_t*)&imi->resolveDatas[__caseOffsets])[__idx];
  4408. }
  4409. else
  4410. {
  4411. ip += 16;
  4412. }
  4413. continue;
  4414. }
  4415. //!!!}}BRANCH
  4416. #pragma endregion
  4417. #pragma region FUNCTION
  4418. //!!!{{FUNCTION
  4419. case HiOpcodeEnum::NewClassVar:
  4420. {
  4421. uint16_t __obj = *(uint16_t*)(ip + 2);
  4422. void* __managed2NativeMethod = ((void*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  4423. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  4424. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4425. uint16_t* _argIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4426. Il2CppObject* _obj = il2cpp::vm::Object::New(__method->klass);
  4427. *(Il2CppObject**)(localVarBase + _argIdxs[0]) = _obj;
  4428. ((Managed2NativeCallMethod)__managed2NativeMethod)(__method, _argIdxs, localVarBase, nullptr);
  4429. (*(Il2CppObject**)(localVarBase + __obj)) = _obj;
  4430. ip += 16;
  4431. continue;
  4432. }
  4433. case HiOpcodeEnum::NewClassVar_Ctor_0:
  4434. {
  4435. uint16_t __obj = *(uint16_t*)(ip + 2);
  4436. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  4437. Il2CppObject* _obj = il2cpp::vm::Object::New(__method->klass);
  4438. ((NativeClassCtor0)(__method->methodPointerCallByInterp))(_obj, __method);
  4439. (*(Il2CppObject**)(localVarBase + __obj)) = _obj;
  4440. ip += 8;
  4441. continue;
  4442. }
  4443. case HiOpcodeEnum::NewClassVar_NotCtor:
  4444. {
  4445. uint16_t __obj = *(uint16_t*)(ip + 2);
  4446. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  4447. (*(Il2CppObject**)(localVarBase + __obj)) = il2cpp::vm::Object::New(__klass);
  4448. ip += 8;
  4449. continue;
  4450. }
  4451. case HiOpcodeEnum::NewValueTypeVar:
  4452. {
  4453. uint16_t __obj = *(uint16_t*)(ip + 2);
  4454. void* __managed2NativeMethod = ((void*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  4455. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  4456. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4457. uint16_t* _argIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4458. int32_t _typeSize = GetTypeValueSize(__method->klass);
  4459. // arg1, arg2, ..., argN, value type, __this
  4460. StackObject* _frameBasePtr = localVarBase + _argIdxs[0];
  4461. Il2CppObject* _this = (Il2CppObject*)(_frameBasePtr - GetStackSizeByByteSize(_typeSize));
  4462. _frameBasePtr->ptr = _this;
  4463. ((Managed2NativeCallMethod)__managed2NativeMethod)(__method, _argIdxs, localVarBase, nullptr);
  4464. std::memmove((void*)(localVarBase + __obj), _this, _typeSize);
  4465. ip += 16;
  4466. continue;
  4467. }
  4468. case HiOpcodeEnum::NewClassInterpVar:
  4469. {
  4470. uint16_t __obj = *(uint16_t*)(ip + 2);
  4471. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 12)]);
  4472. uint16_t __argBase = *(uint16_t*)(ip + 4);
  4473. uint16_t __argStackObjectNum = *(uint16_t*)(ip + 6);
  4474. uint16_t __ctorFrameBase = *(uint16_t*)(ip + 8);
  4475. IL2CPP_ASSERT(__obj < __ctorFrameBase);
  4476. Il2CppObject* _newObj = il2cpp::vm::Object::New(__method->klass);
  4477. StackObject* _frameBasePtr = (StackObject*)(void*)(localVarBase + __ctorFrameBase);
  4478. std::memmove(_frameBasePtr + 1, (void*)(localVarBase + __argBase), __argStackObjectNum * sizeof(StackObject)); // move arg
  4479. _frameBasePtr->obj = _newObj; // prepare this
  4480. (*(Il2CppObject**)(localVarBase + __obj)) = _newObj; // set must after move
  4481. CALL_INTERP_VOID((ip + 16), __method, _frameBasePtr);
  4482. continue;
  4483. }
  4484. case HiOpcodeEnum::NewClassInterpVar_Ctor_0:
  4485. {
  4486. uint16_t __obj = *(uint16_t*)(ip + 2);
  4487. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  4488. uint16_t __ctorFrameBase = *(uint16_t*)(ip + 4);
  4489. IL2CPP_ASSERT(__obj < __ctorFrameBase);
  4490. Il2CppObject* _newObj = il2cpp::vm::Object::New(__method->klass);
  4491. StackObject* _frameBasePtr = (StackObject*)(void*)(localVarBase + __ctorFrameBase);
  4492. _frameBasePtr->obj = _newObj; // prepare this
  4493. (*(Il2CppObject**)(localVarBase + __obj)) = _newObj;
  4494. CALL_INTERP_VOID((ip + 16), __method, _frameBasePtr);
  4495. continue;
  4496. }
  4497. case HiOpcodeEnum::NewValueTypeInterpVar:
  4498. {
  4499. uint16_t __obj = *(uint16_t*)(ip + 2);
  4500. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 12)]);
  4501. uint16_t __argBase = *(uint16_t*)(ip + 4);
  4502. uint16_t __argStackObjectNum = *(uint16_t*)(ip + 6);
  4503. uint16_t __ctorFrameBase = *(uint16_t*)(ip + 8);
  4504. IL2CPP_ASSERT(__obj < __ctorFrameBase);
  4505. StackObject* _frameBasePtr = (StackObject*)(void*)(localVarBase + __ctorFrameBase);
  4506. std::memmove(_frameBasePtr + 1, (void*)(localVarBase + __argBase), __argStackObjectNum * sizeof(StackObject)); // move arg
  4507. _frameBasePtr->ptr = (StackObject*)(void*)(localVarBase + __obj);
  4508. int32_t _typeSize = GetTypeValueSize(__method->klass);
  4509. CALL_INTERP_VOID((ip + 16), __method, _frameBasePtr);
  4510. continue;
  4511. }
  4512. case HiOpcodeEnum::AdjustValueTypeRefVar:
  4513. {
  4514. uint16_t __data = *(uint16_t*)(ip + 2);
  4515. // ref => fake value type boxed object value. // fake obj = ref(value_type) - sizeof(Il2CppObject)
  4516. StackObject* _thisSo = ((StackObject*)((void*)(localVarBase + __data)));
  4517. _thisSo->obj -= 1;
  4518. ip += 8;
  4519. continue;
  4520. }
  4521. case HiOpcodeEnum::BoxRefVarVar:
  4522. {
  4523. uint16_t __dst = *(uint16_t*)(ip + 2);
  4524. uint16_t __src = *(uint16_t*)(ip + 4);
  4525. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  4526. (*(Il2CppObject**)(localVarBase + __dst)) = il2cpp::vm::Object::Box(__klass, (*(void**)(localVarBase + __src)));
  4527. ip += 16;
  4528. continue;
  4529. }
  4530. case HiOpcodeEnum::LdvirftnVarVar:
  4531. {
  4532. uint16_t __resultMethod = *(uint16_t*)(ip + 2);
  4533. uint16_t __obj = *(uint16_t*)(ip + 4);
  4534. MethodInfo* __virtualMethod = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  4535. (*(MethodInfo**)(localVarBase + __resultMethod)) = GET_OBJECT_VIRTUAL_METHOD((*(Il2CppObject**)(localVarBase + __obj)), __virtualMethod);
  4536. ip += 16;
  4537. continue;
  4538. }
  4539. case HiOpcodeEnum::RetVar_ret_1:
  4540. {
  4541. uint16_t __ret = *(uint16_t*)(ip + 2);
  4542. SET_RET_AND_LEAVE_FRAME(1, 8);
  4543. continue;
  4544. }
  4545. case HiOpcodeEnum::RetVar_ret_2:
  4546. {
  4547. uint16_t __ret = *(uint16_t*)(ip + 2);
  4548. SET_RET_AND_LEAVE_FRAME(2, 8);
  4549. continue;
  4550. }
  4551. case HiOpcodeEnum::RetVar_ret_4:
  4552. {
  4553. uint16_t __ret = *(uint16_t*)(ip + 2);
  4554. SET_RET_AND_LEAVE_FRAME(4, 8);
  4555. continue;
  4556. }
  4557. case HiOpcodeEnum::RetVar_ret_8:
  4558. {
  4559. uint16_t __ret = *(uint16_t*)(ip + 2);
  4560. SET_RET_AND_LEAVE_FRAME(8, 8);
  4561. continue;
  4562. }
  4563. case HiOpcodeEnum::RetVar_ret_12:
  4564. {
  4565. uint16_t __ret = *(uint16_t*)(ip + 2);
  4566. SET_RET_AND_LEAVE_FRAME(12, 12);
  4567. continue;
  4568. }
  4569. case HiOpcodeEnum::RetVar_ret_16:
  4570. {
  4571. uint16_t __ret = *(uint16_t*)(ip + 2);
  4572. SET_RET_AND_LEAVE_FRAME(16, 16);
  4573. continue;
  4574. }
  4575. case HiOpcodeEnum::RetVar_ret_20:
  4576. {
  4577. uint16_t __ret = *(uint16_t*)(ip + 2);
  4578. SET_RET_AND_LEAVE_FRAME(20, 20);
  4579. continue;
  4580. }
  4581. case HiOpcodeEnum::RetVar_ret_24:
  4582. {
  4583. uint16_t __ret = *(uint16_t*)(ip + 2);
  4584. SET_RET_AND_LEAVE_FRAME(24, 24);
  4585. continue;
  4586. }
  4587. case HiOpcodeEnum::RetVar_ret_28:
  4588. {
  4589. uint16_t __ret = *(uint16_t*)(ip + 2);
  4590. SET_RET_AND_LEAVE_FRAME(28, 28);
  4591. continue;
  4592. }
  4593. case HiOpcodeEnum::RetVar_ret_32:
  4594. {
  4595. uint16_t __ret = *(uint16_t*)(ip + 2);
  4596. SET_RET_AND_LEAVE_FRAME(32, 32);
  4597. continue;
  4598. }
  4599. case HiOpcodeEnum::RetVar_ret_n:
  4600. {
  4601. uint16_t __ret = *(uint16_t*)(ip + 2);
  4602. uint32_t __size = *(uint32_t*)(ip + 4);
  4603. std::memmove(frame->ret, (void*)(localVarBase + __ret), __size);
  4604. LEAVE_FRAME();
  4605. continue;
  4606. }
  4607. case HiOpcodeEnum::RetVar_void:
  4608. {
  4609. LEAVE_FRAME();
  4610. continue;
  4611. }
  4612. case HiOpcodeEnum::CallNativeInstance_void:
  4613. {
  4614. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4615. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4616. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4617. uint16_t* _resolvedArgIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4618. CHECK_NOT_NULL_THROW((localVarBase + _resolvedArgIdxs[0])->obj);
  4619. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(((MethodInfo*)imi->resolveDatas[__methodInfo]), _resolvedArgIdxs, localVarBase, nullptr);
  4620. ip += 16;
  4621. continue;
  4622. }
  4623. case HiOpcodeEnum::CallNativeInstance_ret:
  4624. {
  4625. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4626. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4627. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4628. uint16_t __ret = *(uint16_t*)(ip + 2);
  4629. uint16_t* _resolvedArgIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4630. CHECK_NOT_NULL_THROW((localVarBase + _resolvedArgIdxs[0])->obj);
  4631. void* _ret = (void*)(localVarBase + __ret);
  4632. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(((MethodInfo*)imi->resolveDatas[__methodInfo]), _resolvedArgIdxs, localVarBase, _ret);
  4633. ip += 16;
  4634. continue;
  4635. }
  4636. case HiOpcodeEnum::CallNativeInstance_ret_expand:
  4637. {
  4638. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 8);
  4639. uint32_t __methodInfo = *(uint32_t*)(ip + 12);
  4640. uint32_t __argIdxs = *(uint32_t*)(ip + 16);
  4641. uint16_t __ret = *(uint16_t*)(ip + 4);
  4642. uint8_t __retLocationType = *(uint8_t*)(ip + 2);
  4643. uint16_t* _resolvedArgIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4644. CHECK_NOT_NULL_THROW((localVarBase + _resolvedArgIdxs[0])->obj);
  4645. void* _ret = (void*)(localVarBase + __ret);
  4646. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(((MethodInfo*)imi->resolveDatas[__methodInfo]), _resolvedArgIdxs, localVarBase, _ret);
  4647. ExpandLocationData2StackDataByType(_ret, (LocationDataType)__retLocationType);
  4648. ip += 24;
  4649. continue;
  4650. }
  4651. case HiOpcodeEnum::CallNativeStatic_void:
  4652. {
  4653. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4654. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4655. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4656. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__methodInfo]);
  4657. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  4658. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(_resolvedMethod, ((uint16_t*)&imi->resolveDatas[__argIdxs]), localVarBase, nullptr);
  4659. ip += 16;
  4660. continue;
  4661. }
  4662. case HiOpcodeEnum::CallNativeStatic_ret:
  4663. {
  4664. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4665. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4666. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4667. uint16_t __ret = *(uint16_t*)(ip + 2);
  4668. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__methodInfo]);
  4669. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  4670. void* _ret = (void*)(localVarBase + __ret);
  4671. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(_resolvedMethod, ((uint16_t*)&imi->resolveDatas[__argIdxs]), localVarBase, _ret);
  4672. ip += 16;
  4673. continue;
  4674. }
  4675. case HiOpcodeEnum::CallNativeStatic_ret_expand:
  4676. {
  4677. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 8);
  4678. uint32_t __methodInfo = *(uint32_t*)(ip + 12);
  4679. uint32_t __argIdxs = *(uint32_t*)(ip + 16);
  4680. uint16_t __ret = *(uint16_t*)(ip + 4);
  4681. uint8_t __retLocationType = *(uint8_t*)(ip + 2);
  4682. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__methodInfo]);
  4683. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  4684. void* _ret = (void*)(localVarBase + __ret);
  4685. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(_resolvedMethod, ((uint16_t*)&imi->resolveDatas[__argIdxs]), localVarBase, _ret);
  4686. ExpandLocationData2StackDataByType(_ret, (LocationDataType)__retLocationType);
  4687. ip += 24;
  4688. continue;
  4689. }
  4690. case HiOpcodeEnum::CallInterp_void:
  4691. {
  4692. MethodInfo* __methodInfo = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  4693. uint16_t __argBase = *(uint16_t*)(ip + 2);
  4694. if (metadata::IsInstanceMethod(__methodInfo))
  4695. {
  4696. CHECK_NOT_NULL_THROW((localVarBase + __argBase)->obj);
  4697. }
  4698. CALL_INTERP_VOID((ip + 8), __methodInfo, (StackObject*)(void*)(localVarBase + __argBase));
  4699. continue;
  4700. }
  4701. case HiOpcodeEnum::CallInterp_ret:
  4702. {
  4703. MethodInfo* __methodInfo = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  4704. uint16_t __argBase = *(uint16_t*)(ip + 2);
  4705. uint16_t __ret = *(uint16_t*)(ip + 4);
  4706. if (metadata::IsInstanceMethod(__methodInfo))
  4707. {
  4708. CHECK_NOT_NULL_THROW((localVarBase + __argBase)->obj);
  4709. }
  4710. CALL_INTERP_RET((ip + 16), __methodInfo, (StackObject*)(void*)(localVarBase + __argBase), (void*)(localVarBase + __ret));
  4711. continue;
  4712. }
  4713. case HiOpcodeEnum::CallVirtual_void:
  4714. {
  4715. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4716. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4717. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4718. uint16_t* _argIdxData = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4719. StackObject* _objPtr = localVarBase + _argIdxData[0];
  4720. MethodInfo* _actualMethod = GET_OBJECT_VIRTUAL_METHOD( _objPtr->obj, ((MethodInfo*)imi->resolveDatas[__methodInfo]));
  4721. if (IS_CLASS_VALUE_TYPE(_actualMethod->klass))
  4722. {
  4723. _objPtr->obj += 1;
  4724. }
  4725. if (hybridclr::metadata::IsInterpreterImplement(_actualMethod))
  4726. {
  4727. CALL_INTERP_VOID((ip + 16), _actualMethod, _objPtr);
  4728. }
  4729. else
  4730. {
  4731. if (!InitAndGetInterpreterDirectlyCallMethodPointer(_actualMethod))
  4732. {
  4733. RaiseAOTGenericMethodNotInstantiatedException(_actualMethod);
  4734. }
  4735. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(_actualMethod, _argIdxData, localVarBase, nullptr);
  4736. ip += 16;
  4737. }
  4738. continue;
  4739. }
  4740. case HiOpcodeEnum::CallVirtual_ret:
  4741. {
  4742. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4743. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4744. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4745. uint16_t __ret = *(uint16_t*)(ip + 2);
  4746. uint16_t* _argIdxData = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4747. StackObject* _objPtr = localVarBase + _argIdxData[0];
  4748. MethodInfo* _actualMethod = GET_OBJECT_VIRTUAL_METHOD(_objPtr->obj, ((MethodInfo*)imi->resolveDatas[__methodInfo]));
  4749. void* _ret = (void*)(localVarBase + __ret);
  4750. if (IS_CLASS_VALUE_TYPE(_actualMethod->klass))
  4751. {
  4752. _objPtr->obj += 1;
  4753. }
  4754. if (hybridclr::metadata::IsInterpreterImplement(_actualMethod))
  4755. {
  4756. CALL_INTERP_RET((ip + 16), _actualMethod, _objPtr, _ret);
  4757. }
  4758. else
  4759. {
  4760. if (!InitAndGetInterpreterDirectlyCallMethodPointer(_actualMethod))
  4761. {
  4762. RaiseAOTGenericMethodNotInstantiatedException(_actualMethod);
  4763. }
  4764. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(_actualMethod, _argIdxData, localVarBase, _ret);
  4765. ip += 16;
  4766. }
  4767. continue;
  4768. }
  4769. case HiOpcodeEnum::CallVirtual_ret_expand:
  4770. {
  4771. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 8);
  4772. uint32_t __methodInfo = *(uint32_t*)(ip + 12);
  4773. uint32_t __argIdxs = *(uint32_t*)(ip + 16);
  4774. uint16_t __ret = *(uint16_t*)(ip + 4);
  4775. uint8_t __retLocationType = *(uint8_t*)(ip + 2);
  4776. uint16_t* _argIdxData = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4777. StackObject* _objPtr = localVarBase + _argIdxData[0];
  4778. MethodInfo* _actualMethod = GET_OBJECT_VIRTUAL_METHOD(_objPtr->obj, ((MethodInfo*)imi->resolveDatas[__methodInfo]));
  4779. void* _ret = (void*)(localVarBase + __ret);
  4780. if (IS_CLASS_VALUE_TYPE(_actualMethod->klass))
  4781. {
  4782. _objPtr->obj += 1;
  4783. }
  4784. if (hybridclr::metadata::IsInterpreterImplement(_actualMethod))
  4785. {
  4786. CALL_INTERP_RET((ip + 24), _actualMethod, _objPtr, _ret);
  4787. }
  4788. else
  4789. {
  4790. if (!InitAndGetInterpreterDirectlyCallMethodPointer(_actualMethod))
  4791. {
  4792. RaiseAOTGenericMethodNotInstantiatedException(_actualMethod);
  4793. }
  4794. ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod])(_actualMethod, _argIdxData, localVarBase, _ret);
  4795. ExpandLocationData2StackDataByType(_ret, (LocationDataType)__retLocationType);
  4796. ip += 24;
  4797. }
  4798. continue;
  4799. }
  4800. case HiOpcodeEnum::CallInterpVirtual_void:
  4801. {
  4802. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  4803. uint16_t __argBase = *(uint16_t*)(ip + 2);
  4804. StackObject* _argBasePtr = (StackObject*)(void*)(localVarBase + __argBase);
  4805. MethodInfo* _actualMethod = GET_OBJECT_VIRTUAL_METHOD(_argBasePtr->obj, __method);
  4806. if (IS_CLASS_VALUE_TYPE(_actualMethod->klass))
  4807. {
  4808. _argBasePtr->obj += 1;
  4809. }
  4810. CALL_INTERP_VOID((ip + 8), _actualMethod, _argBasePtr);
  4811. continue;
  4812. }
  4813. case HiOpcodeEnum::CallInterpVirtual_ret:
  4814. {
  4815. MethodInfo* __method = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  4816. uint16_t __argBase = *(uint16_t*)(ip + 2);
  4817. uint16_t __ret = *(uint16_t*)(ip + 4);
  4818. StackObject* _argBasePtr = (StackObject*)(void*)(localVarBase + __argBase);
  4819. MethodInfo* _actualMethod = GET_OBJECT_VIRTUAL_METHOD(_argBasePtr->obj, __method);
  4820. if (IS_CLASS_VALUE_TYPE(_actualMethod->klass))
  4821. {
  4822. _argBasePtr->obj += 1;
  4823. }
  4824. CALL_INTERP_RET((ip + 16), _actualMethod, _argBasePtr, (void*)(localVarBase + __ret));
  4825. continue;
  4826. }
  4827. case HiOpcodeEnum::CallInd_void:
  4828. {
  4829. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4830. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4831. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4832. Managed2NativeCallMethod _nativeMethodPointer = ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod]);
  4833. uint16_t* _argIdxsPtr = (uint16_t*)&imi->resolveDatas[__argIdxs];
  4834. StackObject* _argBasePtr = localVarBase + _argIdxsPtr[0];
  4835. MethodInfo* _method = (MethodInfo*)(localVarBase + __methodInfo)->ptr;
  4836. if (metadata::IsInstanceMethod(_method))
  4837. {
  4838. CHECK_NOT_NULL_THROW(_argBasePtr->obj);
  4839. }
  4840. if (IsInterpreterImplement(_method))
  4841. {
  4842. CALL_INTERP_VOID((ip + 16), _method, _argBasePtr);
  4843. continue;
  4844. }
  4845. if (!InitAndGetInterpreterDirectlyCallMethodPointer(_method))
  4846. {
  4847. RaiseAOTGenericMethodNotInstantiatedException(_method);
  4848. }
  4849. _nativeMethodPointer(_method, _argIdxsPtr, localVarBase, nullptr);
  4850. ip += 16;
  4851. continue;
  4852. }
  4853. case HiOpcodeEnum::CallInd_ret:
  4854. {
  4855. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 4);
  4856. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  4857. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4858. uint16_t __ret = *(uint16_t*)(ip + 2);
  4859. void* _ret = (void*)(localVarBase + __ret);
  4860. Managed2NativeCallMethod _nativeMethodPointer = ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod]);
  4861. uint16_t* _argIdxsPtr = (uint16_t*)&imi->resolveDatas[__argIdxs];
  4862. StackObject* _argBasePtr = localVarBase + _argIdxsPtr[0];
  4863. MethodInfo* _method = (MethodInfo*)(localVarBase + __methodInfo)->ptr;
  4864. if (metadata::IsInstanceMethod(_method))
  4865. {
  4866. CHECK_NOT_NULL_THROW(_argBasePtr->obj);
  4867. }
  4868. if (IsInterpreterImplement(_method))
  4869. {
  4870. CALL_INTERP_RET((ip + 16), _method, _argBasePtr, _ret);
  4871. continue;
  4872. }
  4873. if (!InitAndGetInterpreterDirectlyCallMethodPointer(_method))
  4874. {
  4875. RaiseAOTGenericMethodNotInstantiatedException(_method);
  4876. }
  4877. _nativeMethodPointer(_method, _argIdxsPtr, localVarBase, _ret);
  4878. ip += 16;
  4879. continue;
  4880. }
  4881. case HiOpcodeEnum::CallInd_ret_expand:
  4882. {
  4883. uint32_t __managed2NativeMethod = *(uint32_t*)(ip + 8);
  4884. uint32_t __methodInfo = *(uint32_t*)(ip + 12);
  4885. uint32_t __argIdxs = *(uint32_t*)(ip + 16);
  4886. uint16_t __ret = *(uint16_t*)(ip + 4);
  4887. uint8_t __retLocationType = *(uint8_t*)(ip + 2);
  4888. void* _ret = (void*)(localVarBase + __ret);
  4889. Managed2NativeCallMethod _nativeMethodPointer = ((Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeMethod]);
  4890. uint16_t* _argIdxsPtr = (uint16_t*)&imi->resolveDatas[__argIdxs];
  4891. StackObject* _argBasePtr = localVarBase + _argIdxsPtr[0];
  4892. MethodInfo* _method = (MethodInfo*)(localVarBase + __methodInfo)->ptr;
  4893. if (metadata::IsInstanceMethod(_method))
  4894. {
  4895. CHECK_NOT_NULL_THROW(_argBasePtr->obj);
  4896. }
  4897. if (IsInterpreterImplement(_method))
  4898. {
  4899. CALL_INTERP_RET((ip + 24), _method, _argBasePtr, _ret);
  4900. continue;
  4901. }
  4902. if (!InitAndGetInterpreterDirectlyCallMethodPointer(_method))
  4903. {
  4904. RaiseAOTGenericMethodNotInstantiatedException(_method);
  4905. }
  4906. _nativeMethodPointer(_method, _argIdxsPtr, localVarBase, _ret);
  4907. ExpandLocationData2StackDataByType(_ret, (LocationDataType)__retLocationType);
  4908. ip += 24;
  4909. continue;
  4910. }
  4911. case HiOpcodeEnum::CallDelegateInvoke_void:
  4912. {
  4913. uint32_t __managed2NativeStaticMethod = *(uint32_t*)(ip + 4);
  4914. uint32_t __managed2NativeInstanceMethod = *(uint32_t*)(ip + 8);
  4915. uint32_t __argIdxs = *(uint32_t*)(ip + 12);
  4916. uint16_t __invokeParamCount = *(uint16_t*)(ip + 2);
  4917. void* _ret = nullptr;
  4918. uint16_t* _resolvedArgIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4919. StackObject* _argBasePtr = localVarBase + _resolvedArgIdxs[0];
  4920. Il2CppMulticastDelegate* _del = (Il2CppMulticastDelegate*)_argBasePtr->obj;
  4921. CHECK_NOT_NULL_THROW(_del);
  4922. if (_del->delegates == nullptr)
  4923. {
  4924. const MethodInfo* method = _del->delegate.method;
  4925. Il2CppObject* target = _del->delegate.target;
  4926. if (hybridclr::metadata::IsInterpreterImplement(method))
  4927. {
  4928. switch ((int32_t)__invokeParamCount - (int32_t)method->parameters_count)
  4929. {
  4930. case 0:
  4931. {
  4932. if (hybridclr::metadata::IsInstanceMethod(method))
  4933. {
  4934. CHECK_NOT_NULL_THROW(target);
  4935. target += IS_CLASS_VALUE_TYPE(method->klass);
  4936. _argBasePtr->obj = target;
  4937. }
  4938. else
  4939. {
  4940. _argBasePtr = __invokeParamCount == 0 ? _argBasePtr + 1 : localVarBase + _resolvedArgIdxs[1];
  4941. }
  4942. break;
  4943. }
  4944. case -1:
  4945. {
  4946. _argBasePtr->obj = target;
  4947. break;
  4948. }
  4949. case 1:
  4950. {
  4951. _argBasePtr = localVarBase + _resolvedArgIdxs[1];
  4952. CHECK_NOT_NULL_THROW(_argBasePtr->obj);
  4953. break;
  4954. }
  4955. default:
  4956. {
  4957. RaiseExecutionEngineException("CallInterpDelegate");
  4958. }
  4959. }
  4960. CALL_INTERP_RET((ip + 16), method, _argBasePtr, _ret);
  4961. continue;
  4962. }
  4963. else
  4964. {
  4965. Managed2NativeCallMethod _staticM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeStaticMethod];
  4966. Managed2NativeCallMethod _instanceM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeInstanceMethod];
  4967. InvokeSingleDelegate(__invokeParamCount, method, target, _staticM2NMethod, _instanceM2NMethod, _resolvedArgIdxs, localVarBase, tempRet);
  4968. }
  4969. }
  4970. else
  4971. {
  4972. Il2CppArray* dels = _del->delegates;
  4973. Managed2NativeCallMethod _staticM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeStaticMethod];
  4974. Managed2NativeCallMethod _instanceM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeInstanceMethod];
  4975. for (il2cpp_array_size_t i = 0; i < dels->max_length; i++)
  4976. {
  4977. Il2CppMulticastDelegate* subDel = il2cpp_array_get(dels, Il2CppMulticastDelegate *, i);
  4978. IL2CPP_ASSERT(subDel);
  4979. IL2CPP_ASSERT(subDel->delegates == nullptr);
  4980. const MethodInfo* method = subDel->delegate.method;
  4981. Il2CppObject* target = subDel->delegate.target;
  4982. InvokeSingleDelegate(__invokeParamCount, method, target, _staticM2NMethod, _instanceM2NMethod, _resolvedArgIdxs, localVarBase, tempRet);
  4983. }
  4984. }
  4985. ip += 16;
  4986. continue;
  4987. }
  4988. case HiOpcodeEnum::CallDelegateInvoke_ret:
  4989. {
  4990. uint32_t __managed2NativeStaticMethod = *(uint32_t*)(ip + 8);
  4991. uint32_t __managed2NativeInstanceMethod = *(uint32_t*)(ip + 12);
  4992. uint32_t __argIdxs = *(uint32_t*)(ip + 16);
  4993. uint16_t __ret = *(uint16_t*)(ip + 2);
  4994. uint16_t __invokeParamCount = *(uint16_t*)(ip + 4);
  4995. uint16_t __retTypeStackObjectSize = *(uint16_t*)(ip + 6);
  4996. void* _ret = (void*)(localVarBase + __ret);
  4997. uint16_t* _resolvedArgIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  4998. StackObject* _argBasePtr = localVarBase + _resolvedArgIdxs[0];
  4999. Il2CppMulticastDelegate* _del = (Il2CppMulticastDelegate*)_argBasePtr->obj;
  5000. CHECK_NOT_NULL_THROW(_del);
  5001. if (_del->delegates == nullptr)
  5002. {
  5003. const MethodInfo* method = _del->delegate.method;
  5004. Il2CppObject* target = _del->delegate.target;
  5005. if (hybridclr::metadata::IsInterpreterImplement(method))
  5006. {
  5007. switch ((int32_t)__invokeParamCount - (int32_t)method->parameters_count)
  5008. {
  5009. case 0:
  5010. {
  5011. if (hybridclr::metadata::IsInstanceMethod(method))
  5012. {
  5013. CHECK_NOT_NULL_THROW(target);
  5014. target += IS_CLASS_VALUE_TYPE(method->klass);
  5015. _argBasePtr->obj = target;
  5016. }
  5017. else
  5018. {
  5019. _argBasePtr = __invokeParamCount == 0 ? _argBasePtr + 1 : localVarBase + _resolvedArgIdxs[1];
  5020. }
  5021. break;
  5022. }
  5023. case -1:
  5024. {
  5025. _argBasePtr->obj = target;
  5026. break;
  5027. }
  5028. case 1:
  5029. {
  5030. _argBasePtr = localVarBase + _resolvedArgIdxs[1];
  5031. CHECK_NOT_NULL_THROW(_argBasePtr->obj);
  5032. break;
  5033. }
  5034. default:
  5035. {
  5036. RaiseExecutionEngineException("CallInterpDelegate");
  5037. }
  5038. }
  5039. CALL_INTERP_RET((ip + 24), method, _argBasePtr, _ret);
  5040. continue;
  5041. }
  5042. else
  5043. {
  5044. Managed2NativeCallMethod _staticM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeStaticMethod];
  5045. Managed2NativeCallMethod _instanceM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeInstanceMethod];
  5046. InvokeSingleDelegate(__invokeParamCount, method, target, _staticM2NMethod, _instanceM2NMethod, _resolvedArgIdxs, localVarBase, tempRet);
  5047. }
  5048. }
  5049. else
  5050. {
  5051. Il2CppArray* dels = _del->delegates;
  5052. Managed2NativeCallMethod _staticM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeStaticMethod];
  5053. Managed2NativeCallMethod _instanceM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeInstanceMethod];
  5054. for (il2cpp_array_size_t i = 0; i < dels->max_length; i++)
  5055. {
  5056. Il2CppMulticastDelegate* subDel = il2cpp_array_get(dels, Il2CppMulticastDelegate *, i);
  5057. IL2CPP_ASSERT(subDel);
  5058. IL2CPP_ASSERT(subDel->delegates == nullptr);
  5059. const MethodInfo* method = subDel->delegate.method;
  5060. Il2CppObject* target = subDel->delegate.target;
  5061. InvokeSingleDelegate(__invokeParamCount, method, target, _staticM2NMethod, _instanceM2NMethod, _resolvedArgIdxs, localVarBase, tempRet);
  5062. }
  5063. }
  5064. CopyStackObject((StackObject*)_ret, tempRet, __retTypeStackObjectSize);
  5065. ip += 24;
  5066. continue;
  5067. }
  5068. case HiOpcodeEnum::CallDelegateInvoke_ret_expand:
  5069. {
  5070. uint32_t __managed2NativeStaticMethod = *(uint32_t*)(ip + 8);
  5071. uint32_t __managed2NativeInstanceMethod = *(uint32_t*)(ip + 12);
  5072. uint32_t __argIdxs = *(uint32_t*)(ip + 16);
  5073. uint16_t __ret = *(uint16_t*)(ip + 4);
  5074. uint16_t __invokeParamCount = *(uint16_t*)(ip + 6);
  5075. uint8_t __retLocationType = *(uint8_t*)(ip + 2);
  5076. void* _ret = (void*)(localVarBase + __ret);
  5077. uint16_t* _resolvedArgIdxs = ((uint16_t*)&imi->resolveDatas[__argIdxs]);
  5078. StackObject* _argBasePtr = localVarBase + _resolvedArgIdxs[0];
  5079. Il2CppMulticastDelegate* _del = (Il2CppMulticastDelegate*)_argBasePtr->obj;
  5080. CHECK_NOT_NULL_THROW(_del);
  5081. if (_del->delegates == nullptr)
  5082. {
  5083. const MethodInfo* method = _del->delegate.method;
  5084. Il2CppObject* target = _del->delegate.target;
  5085. if (hybridclr::metadata::IsInterpreterImplement(method))
  5086. {
  5087. switch ((int32_t)__invokeParamCount - (int32_t)method->parameters_count)
  5088. {
  5089. case 0:
  5090. {
  5091. if (hybridclr::metadata::IsInstanceMethod(method))
  5092. {
  5093. CHECK_NOT_NULL_THROW(target);
  5094. target += IS_CLASS_VALUE_TYPE(method->klass);
  5095. _argBasePtr->obj = target;
  5096. }
  5097. else
  5098. {
  5099. _argBasePtr = __invokeParamCount == 0 ? _argBasePtr + 1 : localVarBase + _resolvedArgIdxs[1];
  5100. }
  5101. break;
  5102. }
  5103. case -1:
  5104. {
  5105. _argBasePtr->obj = target;
  5106. break;
  5107. }
  5108. case 1:
  5109. {
  5110. _argBasePtr = localVarBase + _resolvedArgIdxs[1];
  5111. CHECK_NOT_NULL_THROW(_argBasePtr->obj);
  5112. break;
  5113. }
  5114. default:
  5115. {
  5116. RaiseExecutionEngineException("CallInterpDelegate");
  5117. }
  5118. }
  5119. CALL_INTERP_RET((ip + 24), method, _argBasePtr, _ret);
  5120. continue;
  5121. }
  5122. else
  5123. {
  5124. Managed2NativeCallMethod _staticM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeStaticMethod];
  5125. Managed2NativeCallMethod _instanceM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeInstanceMethod];
  5126. InvokeSingleDelegate(__invokeParamCount, method, target, _staticM2NMethod, _instanceM2NMethod, _resolvedArgIdxs, localVarBase, tempRet);
  5127. }
  5128. }
  5129. else
  5130. {
  5131. Il2CppArray* dels = _del->delegates;
  5132. Managed2NativeCallMethod _staticM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeStaticMethod];
  5133. Managed2NativeCallMethod _instanceM2NMethod = (Managed2NativeCallMethod)imi->resolveDatas[__managed2NativeInstanceMethod];
  5134. for (il2cpp_array_size_t i = 0; i < dels->max_length; i++)
  5135. {
  5136. Il2CppMulticastDelegate* subDel = il2cpp_array_get(dels, Il2CppMulticastDelegate *, i);
  5137. IL2CPP_ASSERT(subDel);
  5138. IL2CPP_ASSERT(subDel->delegates == nullptr);
  5139. const MethodInfo* method = subDel->delegate.method;
  5140. Il2CppObject* target = subDel->delegate.target;
  5141. InvokeSingleDelegate(__invokeParamCount, method, target, _staticM2NMethod, _instanceM2NMethod, _resolvedArgIdxs, localVarBase, tempRet);
  5142. }
  5143. }
  5144. CopyLocationData2StackDataByType((StackObject*)_ret, tempRet, (LocationDataType)__retLocationType);
  5145. ip += 24;
  5146. continue;
  5147. }
  5148. case HiOpcodeEnum::CallDelegateBeginInvoke:
  5149. {
  5150. uint16_t __result = *(uint16_t*)(ip + 2);
  5151. uint32_t __methodInfo = *(uint32_t*)(ip + 4);
  5152. uint32_t __argIdxs = *(uint32_t*)(ip + 8);
  5153. (*(Il2CppObject**)(localVarBase + __result)) = InvokeDelegateBeginInvoke(((MethodInfo*)imi->resolveDatas[__methodInfo]), ((uint16_t*)&imi->resolveDatas[__argIdxs]), localVarBase);
  5154. ip += 16;
  5155. continue;
  5156. }
  5157. case HiOpcodeEnum::CallDelegateEndInvoke_void:
  5158. {
  5159. uint32_t __methodInfo = *(uint32_t*)(ip + 4);
  5160. uint16_t __asyncResult = *(uint16_t*)(ip + 2);
  5161. InvokeDelegateEndInvokeVoid(((MethodInfo*)imi->resolveDatas[__methodInfo]), (Il2CppAsyncResult*)(*(Il2CppObject**)(localVarBase + __asyncResult)));
  5162. ip += 8;
  5163. continue;
  5164. }
  5165. case HiOpcodeEnum::CallDelegateEndInvoke_ret:
  5166. {
  5167. uint32_t __methodInfo = *(uint32_t*)(ip + 8);
  5168. uint16_t __asyncResult = *(uint16_t*)(ip + 2);
  5169. uint16_t __ret = *(uint16_t*)(ip + 4);
  5170. InvokeDelegateEndInvokeRet(((MethodInfo*)imi->resolveDatas[__methodInfo]), (Il2CppAsyncResult*)(*(Il2CppObject**)(localVarBase + __asyncResult)), (void*)(localVarBase + __ret));
  5171. ip += 16;
  5172. continue;
  5173. }
  5174. case HiOpcodeEnum::NewDelegate:
  5175. {
  5176. uint16_t __dst = *(uint16_t*)(ip + 2);
  5177. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  5178. uint16_t __obj = *(uint16_t*)(ip + 4);
  5179. uint16_t __method = *(uint16_t*)(ip + 6);
  5180. Il2CppDelegate* del = (Il2CppDelegate*)il2cpp::vm::Object::New(__klass);
  5181. ConstructDelegate(del, (*(Il2CppObject**)(localVarBase + __obj)), (*(MethodInfo**)(localVarBase + __method)));
  5182. (*(Il2CppObject**)(localVarBase + __dst)) = (Il2CppObject*)del;
  5183. ip += 16;
  5184. continue;
  5185. }
  5186. case HiOpcodeEnum::CtorDelegate:
  5187. {
  5188. uint16_t __dst = *(uint16_t*)(ip + 2);
  5189. MethodInfo* __ctor = ((MethodInfo*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  5190. uint16_t __obj = *(uint16_t*)(ip + 4);
  5191. uint16_t __method = *(uint16_t*)(ip + 6);
  5192. Il2CppDelegate* _del = (Il2CppDelegate*)il2cpp::vm::Object::New(__ctor->klass);
  5193. ConstructorDelegate2(__ctor, _del, (*(Il2CppObject**)(localVarBase + __obj)), (*(MethodInfo**)(localVarBase + __method)));
  5194. (*(Il2CppObject**)(localVarBase + __dst)) = (Il2CppObject*)_del;
  5195. ip += 16;
  5196. continue;
  5197. }
  5198. case HiOpcodeEnum::CallCommonNativeInstance_v_0:
  5199. {
  5200. uint32_t __method = *(uint32_t*)(ip + 4);
  5201. uint16_t __self = *(uint16_t*)(ip + 2);
  5202. void* _self = (*(void**)(localVarBase + __self));
  5203. CHECK_NOT_NULL_THROW(_self);
  5204. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5205. typedef void(*_NativeMethod_)(void*, MethodInfo*);
  5206. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5207. ip += 8;
  5208. continue;
  5209. }
  5210. case HiOpcodeEnum::CallCommonNativeInstance_i1_0:
  5211. {
  5212. uint32_t __method = *(uint32_t*)(ip + 8);
  5213. uint16_t __self = *(uint16_t*)(ip + 2);
  5214. uint16_t __ret = *(uint16_t*)(ip + 4);
  5215. void* _self = (*(void**)(localVarBase + __self));
  5216. CHECK_NOT_NULL_THROW(_self);
  5217. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5218. typedef int8_t(*_NativeMethod_)(void*, MethodInfo*);
  5219. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5220. ip += 16;
  5221. continue;
  5222. }
  5223. case HiOpcodeEnum::CallCommonNativeInstance_u1_0:
  5224. {
  5225. uint32_t __method = *(uint32_t*)(ip + 8);
  5226. uint16_t __self = *(uint16_t*)(ip + 2);
  5227. uint16_t __ret = *(uint16_t*)(ip + 4);
  5228. void* _self = (*(void**)(localVarBase + __self));
  5229. CHECK_NOT_NULL_THROW(_self);
  5230. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5231. typedef uint8_t(*_NativeMethod_)(void*, MethodInfo*);
  5232. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5233. ip += 16;
  5234. continue;
  5235. }
  5236. case HiOpcodeEnum::CallCommonNativeInstance_i2_0:
  5237. {
  5238. uint32_t __method = *(uint32_t*)(ip + 8);
  5239. uint16_t __self = *(uint16_t*)(ip + 2);
  5240. uint16_t __ret = *(uint16_t*)(ip + 4);
  5241. void* _self = (*(void**)(localVarBase + __self));
  5242. CHECK_NOT_NULL_THROW(_self);
  5243. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5244. typedef int16_t(*_NativeMethod_)(void*, MethodInfo*);
  5245. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5246. ip += 16;
  5247. continue;
  5248. }
  5249. case HiOpcodeEnum::CallCommonNativeInstance_u2_0:
  5250. {
  5251. uint32_t __method = *(uint32_t*)(ip + 8);
  5252. uint16_t __self = *(uint16_t*)(ip + 2);
  5253. uint16_t __ret = *(uint16_t*)(ip + 4);
  5254. void* _self = (*(void**)(localVarBase + __self));
  5255. CHECK_NOT_NULL_THROW(_self);
  5256. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5257. typedef uint16_t(*_NativeMethod_)(void*, MethodInfo*);
  5258. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5259. ip += 16;
  5260. continue;
  5261. }
  5262. case HiOpcodeEnum::CallCommonNativeInstance_i4_0:
  5263. {
  5264. uint32_t __method = *(uint32_t*)(ip + 8);
  5265. uint16_t __self = *(uint16_t*)(ip + 2);
  5266. uint16_t __ret = *(uint16_t*)(ip + 4);
  5267. void* _self = (*(void**)(localVarBase + __self));
  5268. CHECK_NOT_NULL_THROW(_self);
  5269. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5270. typedef int32_t(*_NativeMethod_)(void*, MethodInfo*);
  5271. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5272. ip += 16;
  5273. continue;
  5274. }
  5275. case HiOpcodeEnum::CallCommonNativeInstance_i8_0:
  5276. {
  5277. uint32_t __method = *(uint32_t*)(ip + 8);
  5278. uint16_t __self = *(uint16_t*)(ip + 2);
  5279. uint16_t __ret = *(uint16_t*)(ip + 4);
  5280. void* _self = (*(void**)(localVarBase + __self));
  5281. CHECK_NOT_NULL_THROW(_self);
  5282. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5283. typedef int64_t(*_NativeMethod_)(void*, MethodInfo*);
  5284. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5285. ip += 16;
  5286. continue;
  5287. }
  5288. case HiOpcodeEnum::CallCommonNativeInstance_f4_0:
  5289. {
  5290. uint32_t __method = *(uint32_t*)(ip + 8);
  5291. uint16_t __self = *(uint16_t*)(ip + 2);
  5292. uint16_t __ret = *(uint16_t*)(ip + 4);
  5293. void* _self = (*(void**)(localVarBase + __self));
  5294. CHECK_NOT_NULL_THROW(_self);
  5295. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5296. typedef float(*_NativeMethod_)(void*, MethodInfo*);
  5297. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5298. ip += 16;
  5299. continue;
  5300. }
  5301. case HiOpcodeEnum::CallCommonNativeInstance_f8_0:
  5302. {
  5303. uint32_t __method = *(uint32_t*)(ip + 8);
  5304. uint16_t __self = *(uint16_t*)(ip + 2);
  5305. uint16_t __ret = *(uint16_t*)(ip + 4);
  5306. void* _self = (*(void**)(localVarBase + __self));
  5307. CHECK_NOT_NULL_THROW(_self);
  5308. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5309. typedef double(*_NativeMethod_)(void*, MethodInfo*);
  5310. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, _resolvedMethod);
  5311. ip += 16;
  5312. continue;
  5313. }
  5314. case HiOpcodeEnum::CallCommonNativeInstance_v_i4_1:
  5315. {
  5316. uint32_t __method = *(uint32_t*)(ip + 8);
  5317. uint16_t __self = *(uint16_t*)(ip + 2);
  5318. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5319. void* _self = (*(void**)(localVarBase + __self));
  5320. CHECK_NOT_NULL_THROW(_self);
  5321. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5322. typedef void(*_NativeMethod_)(void*, int32_t, MethodInfo*);
  5323. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  5324. ip += 16;
  5325. continue;
  5326. }
  5327. case HiOpcodeEnum::CallCommonNativeInstance_v_i4_2:
  5328. {
  5329. uint32_t __method = *(uint32_t*)(ip + 8);
  5330. uint16_t __self = *(uint16_t*)(ip + 2);
  5331. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5332. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5333. void* _self = (*(void**)(localVarBase + __self));
  5334. CHECK_NOT_NULL_THROW(_self);
  5335. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5336. typedef void(*_NativeMethod_)(void*, int32_t, int32_t, MethodInfo*);
  5337. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  5338. ip += 16;
  5339. continue;
  5340. }
  5341. case HiOpcodeEnum::CallCommonNativeInstance_v_i4_3:
  5342. {
  5343. uint32_t __method = *(uint32_t*)(ip + 12);
  5344. uint16_t __self = *(uint16_t*)(ip + 2);
  5345. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5346. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5347. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5348. void* _self = (*(void**)(localVarBase + __self));
  5349. CHECK_NOT_NULL_THROW(_self);
  5350. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5351. typedef void(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, MethodInfo*);
  5352. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  5353. ip += 16;
  5354. continue;
  5355. }
  5356. case HiOpcodeEnum::CallCommonNativeInstance_v_i4_4:
  5357. {
  5358. uint32_t __method = *(uint32_t*)(ip + 12);
  5359. uint16_t __self = *(uint16_t*)(ip + 2);
  5360. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5361. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5362. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5363. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5364. void* _self = (*(void**)(localVarBase + __self));
  5365. CHECK_NOT_NULL_THROW(_self);
  5366. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5367. typedef void(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  5368. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  5369. ip += 16;
  5370. continue;
  5371. }
  5372. case HiOpcodeEnum::CallCommonNativeInstance_v_i8_1:
  5373. {
  5374. uint32_t __method = *(uint32_t*)(ip + 8);
  5375. uint16_t __self = *(uint16_t*)(ip + 2);
  5376. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5377. void* _self = (*(void**)(localVarBase + __self));
  5378. CHECK_NOT_NULL_THROW(_self);
  5379. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5380. typedef void(*_NativeMethod_)(void*, int64_t, MethodInfo*);
  5381. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  5382. ip += 16;
  5383. continue;
  5384. }
  5385. case HiOpcodeEnum::CallCommonNativeInstance_v_i8_2:
  5386. {
  5387. uint32_t __method = *(uint32_t*)(ip + 8);
  5388. uint16_t __self = *(uint16_t*)(ip + 2);
  5389. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5390. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5391. void* _self = (*(void**)(localVarBase + __self));
  5392. CHECK_NOT_NULL_THROW(_self);
  5393. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5394. typedef void(*_NativeMethod_)(void*, int64_t, int64_t, MethodInfo*);
  5395. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  5396. ip += 16;
  5397. continue;
  5398. }
  5399. case HiOpcodeEnum::CallCommonNativeInstance_v_i8_3:
  5400. {
  5401. uint32_t __method = *(uint32_t*)(ip + 12);
  5402. uint16_t __self = *(uint16_t*)(ip + 2);
  5403. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5404. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5405. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5406. void* _self = (*(void**)(localVarBase + __self));
  5407. CHECK_NOT_NULL_THROW(_self);
  5408. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5409. typedef void(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, MethodInfo*);
  5410. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  5411. ip += 16;
  5412. continue;
  5413. }
  5414. case HiOpcodeEnum::CallCommonNativeInstance_v_i8_4:
  5415. {
  5416. uint32_t __method = *(uint32_t*)(ip + 12);
  5417. uint16_t __self = *(uint16_t*)(ip + 2);
  5418. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5419. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5420. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5421. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5422. void* _self = (*(void**)(localVarBase + __self));
  5423. CHECK_NOT_NULL_THROW(_self);
  5424. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5425. typedef void(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  5426. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  5427. ip += 16;
  5428. continue;
  5429. }
  5430. case HiOpcodeEnum::CallCommonNativeInstance_v_f4_1:
  5431. {
  5432. uint32_t __method = *(uint32_t*)(ip + 8);
  5433. uint16_t __self = *(uint16_t*)(ip + 2);
  5434. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5435. void* _self = (*(void**)(localVarBase + __self));
  5436. CHECK_NOT_NULL_THROW(_self);
  5437. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5438. typedef void(*_NativeMethod_)(void*, float, MethodInfo*);
  5439. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), _resolvedMethod);
  5440. ip += 16;
  5441. continue;
  5442. }
  5443. case HiOpcodeEnum::CallCommonNativeInstance_v_f4_2:
  5444. {
  5445. uint32_t __method = *(uint32_t*)(ip + 8);
  5446. uint16_t __self = *(uint16_t*)(ip + 2);
  5447. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5448. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5449. void* _self = (*(void**)(localVarBase + __self));
  5450. CHECK_NOT_NULL_THROW(_self);
  5451. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5452. typedef void(*_NativeMethod_)(void*, float, float, MethodInfo*);
  5453. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  5454. ip += 16;
  5455. continue;
  5456. }
  5457. case HiOpcodeEnum::CallCommonNativeInstance_v_f4_3:
  5458. {
  5459. uint32_t __method = *(uint32_t*)(ip + 12);
  5460. uint16_t __self = *(uint16_t*)(ip + 2);
  5461. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5462. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5463. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5464. void* _self = (*(void**)(localVarBase + __self));
  5465. CHECK_NOT_NULL_THROW(_self);
  5466. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5467. typedef void(*_NativeMethod_)(void*, float, float, float, MethodInfo*);
  5468. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  5469. ip += 16;
  5470. continue;
  5471. }
  5472. case HiOpcodeEnum::CallCommonNativeInstance_v_f4_4:
  5473. {
  5474. uint32_t __method = *(uint32_t*)(ip + 12);
  5475. uint16_t __self = *(uint16_t*)(ip + 2);
  5476. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5477. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5478. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5479. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5480. void* _self = (*(void**)(localVarBase + __self));
  5481. CHECK_NOT_NULL_THROW(_self);
  5482. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5483. typedef void(*_NativeMethod_)(void*, float, float, float, float, MethodInfo*);
  5484. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  5485. ip += 16;
  5486. continue;
  5487. }
  5488. case HiOpcodeEnum::CallCommonNativeInstance_v_f8_1:
  5489. {
  5490. uint32_t __method = *(uint32_t*)(ip + 8);
  5491. uint16_t __self = *(uint16_t*)(ip + 2);
  5492. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5493. void* _self = (*(void**)(localVarBase + __self));
  5494. CHECK_NOT_NULL_THROW(_self);
  5495. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5496. typedef void(*_NativeMethod_)(void*, double, MethodInfo*);
  5497. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), _resolvedMethod);
  5498. ip += 16;
  5499. continue;
  5500. }
  5501. case HiOpcodeEnum::CallCommonNativeInstance_v_f8_2:
  5502. {
  5503. uint32_t __method = *(uint32_t*)(ip + 8);
  5504. uint16_t __self = *(uint16_t*)(ip + 2);
  5505. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5506. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5507. void* _self = (*(void**)(localVarBase + __self));
  5508. CHECK_NOT_NULL_THROW(_self);
  5509. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5510. typedef void(*_NativeMethod_)(void*, double, double, MethodInfo*);
  5511. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  5512. ip += 16;
  5513. continue;
  5514. }
  5515. case HiOpcodeEnum::CallCommonNativeInstance_v_f8_3:
  5516. {
  5517. uint32_t __method = *(uint32_t*)(ip + 12);
  5518. uint16_t __self = *(uint16_t*)(ip + 2);
  5519. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5520. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5521. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5522. void* _self = (*(void**)(localVarBase + __self));
  5523. CHECK_NOT_NULL_THROW(_self);
  5524. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5525. typedef void(*_NativeMethod_)(void*, double, double, double, MethodInfo*);
  5526. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  5527. ip += 16;
  5528. continue;
  5529. }
  5530. case HiOpcodeEnum::CallCommonNativeInstance_v_f8_4:
  5531. {
  5532. uint32_t __method = *(uint32_t*)(ip + 12);
  5533. uint16_t __self = *(uint16_t*)(ip + 2);
  5534. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5535. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5536. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5537. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5538. void* _self = (*(void**)(localVarBase + __self));
  5539. CHECK_NOT_NULL_THROW(_self);
  5540. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5541. typedef void(*_NativeMethod_)(void*, double, double, double, double, MethodInfo*);
  5542. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  5543. ip += 16;
  5544. continue;
  5545. }
  5546. case HiOpcodeEnum::CallCommonNativeInstance_u1_i4_1:
  5547. {
  5548. uint32_t __method = *(uint32_t*)(ip + 8);
  5549. uint16_t __self = *(uint16_t*)(ip + 2);
  5550. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5551. uint16_t __ret = *(uint16_t*)(ip + 6);
  5552. void* _self = (*(void**)(localVarBase + __self));
  5553. CHECK_NOT_NULL_THROW(_self);
  5554. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5555. typedef uint8_t(*_NativeMethod_)(void*, int32_t, MethodInfo*);
  5556. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  5557. ip += 16;
  5558. continue;
  5559. }
  5560. case HiOpcodeEnum::CallCommonNativeInstance_u1_i4_2:
  5561. {
  5562. uint32_t __method = *(uint32_t*)(ip + 12);
  5563. uint16_t __self = *(uint16_t*)(ip + 2);
  5564. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5565. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5566. uint16_t __ret = *(uint16_t*)(ip + 8);
  5567. void* _self = (*(void**)(localVarBase + __self));
  5568. CHECK_NOT_NULL_THROW(_self);
  5569. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5570. typedef uint8_t(*_NativeMethod_)(void*, int32_t, int32_t, MethodInfo*);
  5571. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  5572. ip += 16;
  5573. continue;
  5574. }
  5575. case HiOpcodeEnum::CallCommonNativeInstance_u1_i4_3:
  5576. {
  5577. uint32_t __method = *(uint32_t*)(ip + 12);
  5578. uint16_t __self = *(uint16_t*)(ip + 2);
  5579. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5580. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5581. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5582. uint16_t __ret = *(uint16_t*)(ip + 10);
  5583. void* _self = (*(void**)(localVarBase + __self));
  5584. CHECK_NOT_NULL_THROW(_self);
  5585. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5586. typedef uint8_t(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, MethodInfo*);
  5587. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  5588. ip += 16;
  5589. continue;
  5590. }
  5591. case HiOpcodeEnum::CallCommonNativeInstance_u1_i4_4:
  5592. {
  5593. uint32_t __method = *(uint32_t*)(ip + 16);
  5594. uint16_t __self = *(uint16_t*)(ip + 2);
  5595. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5596. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5597. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5598. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5599. uint16_t __ret = *(uint16_t*)(ip + 12);
  5600. void* _self = (*(void**)(localVarBase + __self));
  5601. CHECK_NOT_NULL_THROW(_self);
  5602. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5603. typedef uint8_t(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  5604. *(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);
  5605. ip += 24;
  5606. continue;
  5607. }
  5608. case HiOpcodeEnum::CallCommonNativeInstance_u1_i8_1:
  5609. {
  5610. uint32_t __method = *(uint32_t*)(ip + 8);
  5611. uint16_t __self = *(uint16_t*)(ip + 2);
  5612. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5613. uint16_t __ret = *(uint16_t*)(ip + 6);
  5614. void* _self = (*(void**)(localVarBase + __self));
  5615. CHECK_NOT_NULL_THROW(_self);
  5616. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5617. typedef uint8_t(*_NativeMethod_)(void*, int64_t, MethodInfo*);
  5618. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  5619. ip += 16;
  5620. continue;
  5621. }
  5622. case HiOpcodeEnum::CallCommonNativeInstance_u1_i8_2:
  5623. {
  5624. uint32_t __method = *(uint32_t*)(ip + 12);
  5625. uint16_t __self = *(uint16_t*)(ip + 2);
  5626. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5627. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5628. uint16_t __ret = *(uint16_t*)(ip + 8);
  5629. void* _self = (*(void**)(localVarBase + __self));
  5630. CHECK_NOT_NULL_THROW(_self);
  5631. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5632. typedef uint8_t(*_NativeMethod_)(void*, int64_t, int64_t, MethodInfo*);
  5633. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  5634. ip += 16;
  5635. continue;
  5636. }
  5637. case HiOpcodeEnum::CallCommonNativeInstance_u1_i8_3:
  5638. {
  5639. uint32_t __method = *(uint32_t*)(ip + 12);
  5640. uint16_t __self = *(uint16_t*)(ip + 2);
  5641. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5642. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5643. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5644. uint16_t __ret = *(uint16_t*)(ip + 10);
  5645. void* _self = (*(void**)(localVarBase + __self));
  5646. CHECK_NOT_NULL_THROW(_self);
  5647. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5648. typedef uint8_t(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, MethodInfo*);
  5649. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  5650. ip += 16;
  5651. continue;
  5652. }
  5653. case HiOpcodeEnum::CallCommonNativeInstance_u1_i8_4:
  5654. {
  5655. uint32_t __method = *(uint32_t*)(ip + 16);
  5656. uint16_t __self = *(uint16_t*)(ip + 2);
  5657. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5658. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5659. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5660. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5661. uint16_t __ret = *(uint16_t*)(ip + 12);
  5662. void* _self = (*(void**)(localVarBase + __self));
  5663. CHECK_NOT_NULL_THROW(_self);
  5664. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5665. typedef uint8_t(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  5666. *(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);
  5667. ip += 24;
  5668. continue;
  5669. }
  5670. case HiOpcodeEnum::CallCommonNativeInstance_u1_f4_1:
  5671. {
  5672. uint32_t __method = *(uint32_t*)(ip + 8);
  5673. uint16_t __self = *(uint16_t*)(ip + 2);
  5674. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5675. uint16_t __ret = *(uint16_t*)(ip + 6);
  5676. void* _self = (*(void**)(localVarBase + __self));
  5677. CHECK_NOT_NULL_THROW(_self);
  5678. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5679. typedef uint8_t(*_NativeMethod_)(void*, float, MethodInfo*);
  5680. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), _resolvedMethod);
  5681. ip += 16;
  5682. continue;
  5683. }
  5684. case HiOpcodeEnum::CallCommonNativeInstance_u1_f4_2:
  5685. {
  5686. uint32_t __method = *(uint32_t*)(ip + 12);
  5687. uint16_t __self = *(uint16_t*)(ip + 2);
  5688. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5689. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5690. uint16_t __ret = *(uint16_t*)(ip + 8);
  5691. void* _self = (*(void**)(localVarBase + __self));
  5692. CHECK_NOT_NULL_THROW(_self);
  5693. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5694. typedef uint8_t(*_NativeMethod_)(void*, float, float, MethodInfo*);
  5695. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  5696. ip += 16;
  5697. continue;
  5698. }
  5699. case HiOpcodeEnum::CallCommonNativeInstance_u1_f4_3:
  5700. {
  5701. uint32_t __method = *(uint32_t*)(ip + 12);
  5702. uint16_t __self = *(uint16_t*)(ip + 2);
  5703. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5704. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5705. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5706. uint16_t __ret = *(uint16_t*)(ip + 10);
  5707. void* _self = (*(void**)(localVarBase + __self));
  5708. CHECK_NOT_NULL_THROW(_self);
  5709. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5710. typedef uint8_t(*_NativeMethod_)(void*, float, float, float, MethodInfo*);
  5711. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  5712. ip += 16;
  5713. continue;
  5714. }
  5715. case HiOpcodeEnum::CallCommonNativeInstance_u1_f4_4:
  5716. {
  5717. uint32_t __method = *(uint32_t*)(ip + 16);
  5718. uint16_t __self = *(uint16_t*)(ip + 2);
  5719. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5720. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5721. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5722. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5723. uint16_t __ret = *(uint16_t*)(ip + 12);
  5724. void* _self = (*(void**)(localVarBase + __self));
  5725. CHECK_NOT_NULL_THROW(_self);
  5726. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5727. typedef uint8_t(*_NativeMethod_)(void*, float, float, float, float, MethodInfo*);
  5728. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  5729. ip += 24;
  5730. continue;
  5731. }
  5732. case HiOpcodeEnum::CallCommonNativeInstance_u1_f8_1:
  5733. {
  5734. uint32_t __method = *(uint32_t*)(ip + 8);
  5735. uint16_t __self = *(uint16_t*)(ip + 2);
  5736. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5737. uint16_t __ret = *(uint16_t*)(ip + 6);
  5738. void* _self = (*(void**)(localVarBase + __self));
  5739. CHECK_NOT_NULL_THROW(_self);
  5740. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5741. typedef uint8_t(*_NativeMethod_)(void*, double, MethodInfo*);
  5742. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), _resolvedMethod);
  5743. ip += 16;
  5744. continue;
  5745. }
  5746. case HiOpcodeEnum::CallCommonNativeInstance_u1_f8_2:
  5747. {
  5748. uint32_t __method = *(uint32_t*)(ip + 12);
  5749. uint16_t __self = *(uint16_t*)(ip + 2);
  5750. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5751. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5752. uint16_t __ret = *(uint16_t*)(ip + 8);
  5753. void* _self = (*(void**)(localVarBase + __self));
  5754. CHECK_NOT_NULL_THROW(_self);
  5755. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5756. typedef uint8_t(*_NativeMethod_)(void*, double, double, MethodInfo*);
  5757. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  5758. ip += 16;
  5759. continue;
  5760. }
  5761. case HiOpcodeEnum::CallCommonNativeInstance_u1_f8_3:
  5762. {
  5763. uint32_t __method = *(uint32_t*)(ip + 12);
  5764. uint16_t __self = *(uint16_t*)(ip + 2);
  5765. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5766. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5767. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5768. uint16_t __ret = *(uint16_t*)(ip + 10);
  5769. void* _self = (*(void**)(localVarBase + __self));
  5770. CHECK_NOT_NULL_THROW(_self);
  5771. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5772. typedef uint8_t(*_NativeMethod_)(void*, double, double, double, MethodInfo*);
  5773. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  5774. ip += 16;
  5775. continue;
  5776. }
  5777. case HiOpcodeEnum::CallCommonNativeInstance_u1_f8_4:
  5778. {
  5779. uint32_t __method = *(uint32_t*)(ip + 16);
  5780. uint16_t __self = *(uint16_t*)(ip + 2);
  5781. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5782. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5783. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5784. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5785. uint16_t __ret = *(uint16_t*)(ip + 12);
  5786. void* _self = (*(void**)(localVarBase + __self));
  5787. CHECK_NOT_NULL_THROW(_self);
  5788. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5789. typedef uint8_t(*_NativeMethod_)(void*, double, double, double, double, MethodInfo*);
  5790. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  5791. ip += 24;
  5792. continue;
  5793. }
  5794. case HiOpcodeEnum::CallCommonNativeInstance_i4_i4_1:
  5795. {
  5796. uint32_t __method = *(uint32_t*)(ip + 8);
  5797. uint16_t __self = *(uint16_t*)(ip + 2);
  5798. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5799. uint16_t __ret = *(uint16_t*)(ip + 6);
  5800. void* _self = (*(void**)(localVarBase + __self));
  5801. CHECK_NOT_NULL_THROW(_self);
  5802. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5803. typedef int32_t(*_NativeMethod_)(void*, int32_t, MethodInfo*);
  5804. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  5805. ip += 16;
  5806. continue;
  5807. }
  5808. case HiOpcodeEnum::CallCommonNativeInstance_i4_i4_2:
  5809. {
  5810. uint32_t __method = *(uint32_t*)(ip + 12);
  5811. uint16_t __self = *(uint16_t*)(ip + 2);
  5812. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5813. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5814. uint16_t __ret = *(uint16_t*)(ip + 8);
  5815. void* _self = (*(void**)(localVarBase + __self));
  5816. CHECK_NOT_NULL_THROW(_self);
  5817. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5818. typedef int32_t(*_NativeMethod_)(void*, int32_t, int32_t, MethodInfo*);
  5819. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  5820. ip += 16;
  5821. continue;
  5822. }
  5823. case HiOpcodeEnum::CallCommonNativeInstance_i4_i4_3:
  5824. {
  5825. uint32_t __method = *(uint32_t*)(ip + 12);
  5826. uint16_t __self = *(uint16_t*)(ip + 2);
  5827. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5828. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5829. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5830. uint16_t __ret = *(uint16_t*)(ip + 10);
  5831. void* _self = (*(void**)(localVarBase + __self));
  5832. CHECK_NOT_NULL_THROW(_self);
  5833. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5834. typedef int32_t(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, MethodInfo*);
  5835. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  5836. ip += 16;
  5837. continue;
  5838. }
  5839. case HiOpcodeEnum::CallCommonNativeInstance_i4_i4_4:
  5840. {
  5841. uint32_t __method = *(uint32_t*)(ip + 16);
  5842. uint16_t __self = *(uint16_t*)(ip + 2);
  5843. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5844. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5845. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5846. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5847. uint16_t __ret = *(uint16_t*)(ip + 12);
  5848. void* _self = (*(void**)(localVarBase + __self));
  5849. CHECK_NOT_NULL_THROW(_self);
  5850. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5851. typedef int32_t(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  5852. *(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);
  5853. ip += 24;
  5854. continue;
  5855. }
  5856. case HiOpcodeEnum::CallCommonNativeInstance_i4_i8_1:
  5857. {
  5858. uint32_t __method = *(uint32_t*)(ip + 8);
  5859. uint16_t __self = *(uint16_t*)(ip + 2);
  5860. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5861. uint16_t __ret = *(uint16_t*)(ip + 6);
  5862. void* _self = (*(void**)(localVarBase + __self));
  5863. CHECK_NOT_NULL_THROW(_self);
  5864. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5865. typedef int32_t(*_NativeMethod_)(void*, int64_t, MethodInfo*);
  5866. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  5867. ip += 16;
  5868. continue;
  5869. }
  5870. case HiOpcodeEnum::CallCommonNativeInstance_i4_i8_2:
  5871. {
  5872. uint32_t __method = *(uint32_t*)(ip + 12);
  5873. uint16_t __self = *(uint16_t*)(ip + 2);
  5874. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5875. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5876. uint16_t __ret = *(uint16_t*)(ip + 8);
  5877. void* _self = (*(void**)(localVarBase + __self));
  5878. CHECK_NOT_NULL_THROW(_self);
  5879. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5880. typedef int32_t(*_NativeMethod_)(void*, int64_t, int64_t, MethodInfo*);
  5881. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  5882. ip += 16;
  5883. continue;
  5884. }
  5885. case HiOpcodeEnum::CallCommonNativeInstance_i4_i8_3:
  5886. {
  5887. uint32_t __method = *(uint32_t*)(ip + 12);
  5888. uint16_t __self = *(uint16_t*)(ip + 2);
  5889. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5890. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5891. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5892. uint16_t __ret = *(uint16_t*)(ip + 10);
  5893. void* _self = (*(void**)(localVarBase + __self));
  5894. CHECK_NOT_NULL_THROW(_self);
  5895. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5896. typedef int32_t(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, MethodInfo*);
  5897. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  5898. ip += 16;
  5899. continue;
  5900. }
  5901. case HiOpcodeEnum::CallCommonNativeInstance_i4_i8_4:
  5902. {
  5903. uint32_t __method = *(uint32_t*)(ip + 16);
  5904. uint16_t __self = *(uint16_t*)(ip + 2);
  5905. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5906. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5907. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5908. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5909. uint16_t __ret = *(uint16_t*)(ip + 12);
  5910. void* _self = (*(void**)(localVarBase + __self));
  5911. CHECK_NOT_NULL_THROW(_self);
  5912. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5913. typedef int32_t(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  5914. *(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);
  5915. ip += 24;
  5916. continue;
  5917. }
  5918. case HiOpcodeEnum::CallCommonNativeInstance_i4_f4_1:
  5919. {
  5920. uint32_t __method = *(uint32_t*)(ip + 8);
  5921. uint16_t __self = *(uint16_t*)(ip + 2);
  5922. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5923. uint16_t __ret = *(uint16_t*)(ip + 6);
  5924. void* _self = (*(void**)(localVarBase + __self));
  5925. CHECK_NOT_NULL_THROW(_self);
  5926. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5927. typedef int32_t(*_NativeMethod_)(void*, float, MethodInfo*);
  5928. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), _resolvedMethod);
  5929. ip += 16;
  5930. continue;
  5931. }
  5932. case HiOpcodeEnum::CallCommonNativeInstance_i4_f4_2:
  5933. {
  5934. uint32_t __method = *(uint32_t*)(ip + 12);
  5935. uint16_t __self = *(uint16_t*)(ip + 2);
  5936. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5937. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5938. uint16_t __ret = *(uint16_t*)(ip + 8);
  5939. void* _self = (*(void**)(localVarBase + __self));
  5940. CHECK_NOT_NULL_THROW(_self);
  5941. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5942. typedef int32_t(*_NativeMethod_)(void*, float, float, MethodInfo*);
  5943. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  5944. ip += 16;
  5945. continue;
  5946. }
  5947. case HiOpcodeEnum::CallCommonNativeInstance_i4_f4_3:
  5948. {
  5949. uint32_t __method = *(uint32_t*)(ip + 12);
  5950. uint16_t __self = *(uint16_t*)(ip + 2);
  5951. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5952. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5953. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5954. uint16_t __ret = *(uint16_t*)(ip + 10);
  5955. void* _self = (*(void**)(localVarBase + __self));
  5956. CHECK_NOT_NULL_THROW(_self);
  5957. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5958. typedef int32_t(*_NativeMethod_)(void*, float, float, float, MethodInfo*);
  5959. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  5960. ip += 16;
  5961. continue;
  5962. }
  5963. case HiOpcodeEnum::CallCommonNativeInstance_i4_f4_4:
  5964. {
  5965. uint32_t __method = *(uint32_t*)(ip + 16);
  5966. uint16_t __self = *(uint16_t*)(ip + 2);
  5967. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5968. uint16_t __param1 = *(uint16_t*)(ip + 6);
  5969. uint16_t __param2 = *(uint16_t*)(ip + 8);
  5970. uint16_t __param3 = *(uint16_t*)(ip + 10);
  5971. uint16_t __ret = *(uint16_t*)(ip + 12);
  5972. void* _self = (*(void**)(localVarBase + __self));
  5973. CHECK_NOT_NULL_THROW(_self);
  5974. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5975. typedef int32_t(*_NativeMethod_)(void*, float, float, float, float, MethodInfo*);
  5976. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  5977. ip += 24;
  5978. continue;
  5979. }
  5980. case HiOpcodeEnum::CallCommonNativeInstance_i4_f8_1:
  5981. {
  5982. uint32_t __method = *(uint32_t*)(ip + 8);
  5983. uint16_t __self = *(uint16_t*)(ip + 2);
  5984. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5985. uint16_t __ret = *(uint16_t*)(ip + 6);
  5986. void* _self = (*(void**)(localVarBase + __self));
  5987. CHECK_NOT_NULL_THROW(_self);
  5988. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  5989. typedef int32_t(*_NativeMethod_)(void*, double, MethodInfo*);
  5990. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), _resolvedMethod);
  5991. ip += 16;
  5992. continue;
  5993. }
  5994. case HiOpcodeEnum::CallCommonNativeInstance_i4_f8_2:
  5995. {
  5996. uint32_t __method = *(uint32_t*)(ip + 12);
  5997. uint16_t __self = *(uint16_t*)(ip + 2);
  5998. uint16_t __param0 = *(uint16_t*)(ip + 4);
  5999. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6000. uint16_t __ret = *(uint16_t*)(ip + 8);
  6001. void* _self = (*(void**)(localVarBase + __self));
  6002. CHECK_NOT_NULL_THROW(_self);
  6003. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6004. typedef int32_t(*_NativeMethod_)(void*, double, double, MethodInfo*);
  6005. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  6006. ip += 16;
  6007. continue;
  6008. }
  6009. case HiOpcodeEnum::CallCommonNativeInstance_i4_f8_3:
  6010. {
  6011. uint32_t __method = *(uint32_t*)(ip + 12);
  6012. uint16_t __self = *(uint16_t*)(ip + 2);
  6013. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6014. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6015. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6016. uint16_t __ret = *(uint16_t*)(ip + 10);
  6017. void* _self = (*(void**)(localVarBase + __self));
  6018. CHECK_NOT_NULL_THROW(_self);
  6019. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6020. typedef int32_t(*_NativeMethod_)(void*, double, double, double, MethodInfo*);
  6021. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  6022. ip += 16;
  6023. continue;
  6024. }
  6025. case HiOpcodeEnum::CallCommonNativeInstance_i4_f8_4:
  6026. {
  6027. uint32_t __method = *(uint32_t*)(ip + 16);
  6028. uint16_t __self = *(uint16_t*)(ip + 2);
  6029. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6030. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6031. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6032. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6033. uint16_t __ret = *(uint16_t*)(ip + 12);
  6034. void* _self = (*(void**)(localVarBase + __self));
  6035. CHECK_NOT_NULL_THROW(_self);
  6036. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6037. typedef int32_t(*_NativeMethod_)(void*, double, double, double, double, MethodInfo*);
  6038. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  6039. ip += 24;
  6040. continue;
  6041. }
  6042. case HiOpcodeEnum::CallCommonNativeInstance_i8_i4_1:
  6043. {
  6044. uint32_t __method = *(uint32_t*)(ip + 8);
  6045. uint16_t __self = *(uint16_t*)(ip + 2);
  6046. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6047. uint16_t __ret = *(uint16_t*)(ip + 6);
  6048. void* _self = (*(void**)(localVarBase + __self));
  6049. CHECK_NOT_NULL_THROW(_self);
  6050. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6051. typedef int64_t(*_NativeMethod_)(void*, int32_t, MethodInfo*);
  6052. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  6053. ip += 16;
  6054. continue;
  6055. }
  6056. case HiOpcodeEnum::CallCommonNativeInstance_i8_i4_2:
  6057. {
  6058. uint32_t __method = *(uint32_t*)(ip + 12);
  6059. uint16_t __self = *(uint16_t*)(ip + 2);
  6060. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6061. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6062. uint16_t __ret = *(uint16_t*)(ip + 8);
  6063. void* _self = (*(void**)(localVarBase + __self));
  6064. CHECK_NOT_NULL_THROW(_self);
  6065. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6066. typedef int64_t(*_NativeMethod_)(void*, int32_t, int32_t, MethodInfo*);
  6067. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  6068. ip += 16;
  6069. continue;
  6070. }
  6071. case HiOpcodeEnum::CallCommonNativeInstance_i8_i4_3:
  6072. {
  6073. uint32_t __method = *(uint32_t*)(ip + 12);
  6074. uint16_t __self = *(uint16_t*)(ip + 2);
  6075. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6076. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6077. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6078. uint16_t __ret = *(uint16_t*)(ip + 10);
  6079. void* _self = (*(void**)(localVarBase + __self));
  6080. CHECK_NOT_NULL_THROW(_self);
  6081. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6082. typedef int64_t(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, MethodInfo*);
  6083. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  6084. ip += 16;
  6085. continue;
  6086. }
  6087. case HiOpcodeEnum::CallCommonNativeInstance_i8_i4_4:
  6088. {
  6089. uint32_t __method = *(uint32_t*)(ip + 16);
  6090. uint16_t __self = *(uint16_t*)(ip + 2);
  6091. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6092. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6093. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6094. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6095. uint16_t __ret = *(uint16_t*)(ip + 12);
  6096. void* _self = (*(void**)(localVarBase + __self));
  6097. CHECK_NOT_NULL_THROW(_self);
  6098. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6099. typedef int64_t(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  6100. *(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);
  6101. ip += 24;
  6102. continue;
  6103. }
  6104. case HiOpcodeEnum::CallCommonNativeInstance_i8_i8_1:
  6105. {
  6106. uint32_t __method = *(uint32_t*)(ip + 8);
  6107. uint16_t __self = *(uint16_t*)(ip + 2);
  6108. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6109. uint16_t __ret = *(uint16_t*)(ip + 6);
  6110. void* _self = (*(void**)(localVarBase + __self));
  6111. CHECK_NOT_NULL_THROW(_self);
  6112. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6113. typedef int64_t(*_NativeMethod_)(void*, int64_t, MethodInfo*);
  6114. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  6115. ip += 16;
  6116. continue;
  6117. }
  6118. case HiOpcodeEnum::CallCommonNativeInstance_i8_i8_2:
  6119. {
  6120. uint32_t __method = *(uint32_t*)(ip + 12);
  6121. uint16_t __self = *(uint16_t*)(ip + 2);
  6122. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6123. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6124. uint16_t __ret = *(uint16_t*)(ip + 8);
  6125. void* _self = (*(void**)(localVarBase + __self));
  6126. CHECK_NOT_NULL_THROW(_self);
  6127. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6128. typedef int64_t(*_NativeMethod_)(void*, int64_t, int64_t, MethodInfo*);
  6129. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  6130. ip += 16;
  6131. continue;
  6132. }
  6133. case HiOpcodeEnum::CallCommonNativeInstance_i8_i8_3:
  6134. {
  6135. uint32_t __method = *(uint32_t*)(ip + 12);
  6136. uint16_t __self = *(uint16_t*)(ip + 2);
  6137. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6138. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6139. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6140. uint16_t __ret = *(uint16_t*)(ip + 10);
  6141. void* _self = (*(void**)(localVarBase + __self));
  6142. CHECK_NOT_NULL_THROW(_self);
  6143. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6144. typedef int64_t(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, MethodInfo*);
  6145. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  6146. ip += 16;
  6147. continue;
  6148. }
  6149. case HiOpcodeEnum::CallCommonNativeInstance_i8_i8_4:
  6150. {
  6151. uint32_t __method = *(uint32_t*)(ip + 16);
  6152. uint16_t __self = *(uint16_t*)(ip + 2);
  6153. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6154. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6155. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6156. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6157. uint16_t __ret = *(uint16_t*)(ip + 12);
  6158. void* _self = (*(void**)(localVarBase + __self));
  6159. CHECK_NOT_NULL_THROW(_self);
  6160. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6161. typedef int64_t(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  6162. *(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);
  6163. ip += 24;
  6164. continue;
  6165. }
  6166. case HiOpcodeEnum::CallCommonNativeInstance_i8_f4_1:
  6167. {
  6168. uint32_t __method = *(uint32_t*)(ip + 8);
  6169. uint16_t __self = *(uint16_t*)(ip + 2);
  6170. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6171. uint16_t __ret = *(uint16_t*)(ip + 6);
  6172. void* _self = (*(void**)(localVarBase + __self));
  6173. CHECK_NOT_NULL_THROW(_self);
  6174. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6175. typedef int64_t(*_NativeMethod_)(void*, float, MethodInfo*);
  6176. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), _resolvedMethod);
  6177. ip += 16;
  6178. continue;
  6179. }
  6180. case HiOpcodeEnum::CallCommonNativeInstance_i8_f4_2:
  6181. {
  6182. uint32_t __method = *(uint32_t*)(ip + 12);
  6183. uint16_t __self = *(uint16_t*)(ip + 2);
  6184. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6185. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6186. uint16_t __ret = *(uint16_t*)(ip + 8);
  6187. void* _self = (*(void**)(localVarBase + __self));
  6188. CHECK_NOT_NULL_THROW(_self);
  6189. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6190. typedef int64_t(*_NativeMethod_)(void*, float, float, MethodInfo*);
  6191. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  6192. ip += 16;
  6193. continue;
  6194. }
  6195. case HiOpcodeEnum::CallCommonNativeInstance_i8_f4_3:
  6196. {
  6197. uint32_t __method = *(uint32_t*)(ip + 12);
  6198. uint16_t __self = *(uint16_t*)(ip + 2);
  6199. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6200. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6201. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6202. uint16_t __ret = *(uint16_t*)(ip + 10);
  6203. void* _self = (*(void**)(localVarBase + __self));
  6204. CHECK_NOT_NULL_THROW(_self);
  6205. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6206. typedef int64_t(*_NativeMethod_)(void*, float, float, float, MethodInfo*);
  6207. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  6208. ip += 16;
  6209. continue;
  6210. }
  6211. case HiOpcodeEnum::CallCommonNativeInstance_i8_f4_4:
  6212. {
  6213. uint32_t __method = *(uint32_t*)(ip + 16);
  6214. uint16_t __self = *(uint16_t*)(ip + 2);
  6215. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6216. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6217. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6218. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6219. uint16_t __ret = *(uint16_t*)(ip + 12);
  6220. void* _self = (*(void**)(localVarBase + __self));
  6221. CHECK_NOT_NULL_THROW(_self);
  6222. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6223. typedef int64_t(*_NativeMethod_)(void*, float, float, float, float, MethodInfo*);
  6224. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  6225. ip += 24;
  6226. continue;
  6227. }
  6228. case HiOpcodeEnum::CallCommonNativeInstance_i8_f8_1:
  6229. {
  6230. uint32_t __method = *(uint32_t*)(ip + 8);
  6231. uint16_t __self = *(uint16_t*)(ip + 2);
  6232. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6233. uint16_t __ret = *(uint16_t*)(ip + 6);
  6234. void* _self = (*(void**)(localVarBase + __self));
  6235. CHECK_NOT_NULL_THROW(_self);
  6236. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6237. typedef int64_t(*_NativeMethod_)(void*, double, MethodInfo*);
  6238. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), _resolvedMethod);
  6239. ip += 16;
  6240. continue;
  6241. }
  6242. case HiOpcodeEnum::CallCommonNativeInstance_i8_f8_2:
  6243. {
  6244. uint32_t __method = *(uint32_t*)(ip + 12);
  6245. uint16_t __self = *(uint16_t*)(ip + 2);
  6246. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6247. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6248. uint16_t __ret = *(uint16_t*)(ip + 8);
  6249. void* _self = (*(void**)(localVarBase + __self));
  6250. CHECK_NOT_NULL_THROW(_self);
  6251. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6252. typedef int64_t(*_NativeMethod_)(void*, double, double, MethodInfo*);
  6253. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  6254. ip += 16;
  6255. continue;
  6256. }
  6257. case HiOpcodeEnum::CallCommonNativeInstance_i8_f8_3:
  6258. {
  6259. uint32_t __method = *(uint32_t*)(ip + 12);
  6260. uint16_t __self = *(uint16_t*)(ip + 2);
  6261. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6262. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6263. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6264. uint16_t __ret = *(uint16_t*)(ip + 10);
  6265. void* _self = (*(void**)(localVarBase + __self));
  6266. CHECK_NOT_NULL_THROW(_self);
  6267. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6268. typedef int64_t(*_NativeMethod_)(void*, double, double, double, MethodInfo*);
  6269. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  6270. ip += 16;
  6271. continue;
  6272. }
  6273. case HiOpcodeEnum::CallCommonNativeInstance_i8_f8_4:
  6274. {
  6275. uint32_t __method = *(uint32_t*)(ip + 16);
  6276. uint16_t __self = *(uint16_t*)(ip + 2);
  6277. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6278. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6279. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6280. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6281. uint16_t __ret = *(uint16_t*)(ip + 12);
  6282. void* _self = (*(void**)(localVarBase + __self));
  6283. CHECK_NOT_NULL_THROW(_self);
  6284. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6285. typedef int64_t(*_NativeMethod_)(void*, double, double, double, double, MethodInfo*);
  6286. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  6287. ip += 24;
  6288. continue;
  6289. }
  6290. case HiOpcodeEnum::CallCommonNativeInstance_f4_i4_1:
  6291. {
  6292. uint32_t __method = *(uint32_t*)(ip + 8);
  6293. uint16_t __self = *(uint16_t*)(ip + 2);
  6294. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6295. uint16_t __ret = *(uint16_t*)(ip + 6);
  6296. void* _self = (*(void**)(localVarBase + __self));
  6297. CHECK_NOT_NULL_THROW(_self);
  6298. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6299. typedef float(*_NativeMethod_)(void*, int32_t, MethodInfo*);
  6300. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  6301. ip += 16;
  6302. continue;
  6303. }
  6304. case HiOpcodeEnum::CallCommonNativeInstance_f4_i4_2:
  6305. {
  6306. uint32_t __method = *(uint32_t*)(ip + 12);
  6307. uint16_t __self = *(uint16_t*)(ip + 2);
  6308. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6309. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6310. uint16_t __ret = *(uint16_t*)(ip + 8);
  6311. void* _self = (*(void**)(localVarBase + __self));
  6312. CHECK_NOT_NULL_THROW(_self);
  6313. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6314. typedef float(*_NativeMethod_)(void*, int32_t, int32_t, MethodInfo*);
  6315. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  6316. ip += 16;
  6317. continue;
  6318. }
  6319. case HiOpcodeEnum::CallCommonNativeInstance_f4_i4_3:
  6320. {
  6321. uint32_t __method = *(uint32_t*)(ip + 12);
  6322. uint16_t __self = *(uint16_t*)(ip + 2);
  6323. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6324. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6325. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6326. uint16_t __ret = *(uint16_t*)(ip + 10);
  6327. void* _self = (*(void**)(localVarBase + __self));
  6328. CHECK_NOT_NULL_THROW(_self);
  6329. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6330. typedef float(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, MethodInfo*);
  6331. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  6332. ip += 16;
  6333. continue;
  6334. }
  6335. case HiOpcodeEnum::CallCommonNativeInstance_f4_i4_4:
  6336. {
  6337. uint32_t __method = *(uint32_t*)(ip + 16);
  6338. uint16_t __self = *(uint16_t*)(ip + 2);
  6339. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6340. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6341. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6342. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6343. uint16_t __ret = *(uint16_t*)(ip + 12);
  6344. void* _self = (*(void**)(localVarBase + __self));
  6345. CHECK_NOT_NULL_THROW(_self);
  6346. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6347. typedef float(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  6348. *(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);
  6349. ip += 24;
  6350. continue;
  6351. }
  6352. case HiOpcodeEnum::CallCommonNativeInstance_f4_i8_1:
  6353. {
  6354. uint32_t __method = *(uint32_t*)(ip + 8);
  6355. uint16_t __self = *(uint16_t*)(ip + 2);
  6356. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6357. uint16_t __ret = *(uint16_t*)(ip + 6);
  6358. void* _self = (*(void**)(localVarBase + __self));
  6359. CHECK_NOT_NULL_THROW(_self);
  6360. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6361. typedef float(*_NativeMethod_)(void*, int64_t, MethodInfo*);
  6362. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  6363. ip += 16;
  6364. continue;
  6365. }
  6366. case HiOpcodeEnum::CallCommonNativeInstance_f4_i8_2:
  6367. {
  6368. uint32_t __method = *(uint32_t*)(ip + 12);
  6369. uint16_t __self = *(uint16_t*)(ip + 2);
  6370. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6371. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6372. uint16_t __ret = *(uint16_t*)(ip + 8);
  6373. void* _self = (*(void**)(localVarBase + __self));
  6374. CHECK_NOT_NULL_THROW(_self);
  6375. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6376. typedef float(*_NativeMethod_)(void*, int64_t, int64_t, MethodInfo*);
  6377. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  6378. ip += 16;
  6379. continue;
  6380. }
  6381. case HiOpcodeEnum::CallCommonNativeInstance_f4_i8_3:
  6382. {
  6383. uint32_t __method = *(uint32_t*)(ip + 12);
  6384. uint16_t __self = *(uint16_t*)(ip + 2);
  6385. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6386. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6387. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6388. uint16_t __ret = *(uint16_t*)(ip + 10);
  6389. void* _self = (*(void**)(localVarBase + __self));
  6390. CHECK_NOT_NULL_THROW(_self);
  6391. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6392. typedef float(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, MethodInfo*);
  6393. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  6394. ip += 16;
  6395. continue;
  6396. }
  6397. case HiOpcodeEnum::CallCommonNativeInstance_f4_i8_4:
  6398. {
  6399. uint32_t __method = *(uint32_t*)(ip + 16);
  6400. uint16_t __self = *(uint16_t*)(ip + 2);
  6401. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6402. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6403. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6404. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6405. uint16_t __ret = *(uint16_t*)(ip + 12);
  6406. void* _self = (*(void**)(localVarBase + __self));
  6407. CHECK_NOT_NULL_THROW(_self);
  6408. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6409. typedef float(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  6410. *(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);
  6411. ip += 24;
  6412. continue;
  6413. }
  6414. case HiOpcodeEnum::CallCommonNativeInstance_f4_f4_1:
  6415. {
  6416. uint32_t __method = *(uint32_t*)(ip + 8);
  6417. uint16_t __self = *(uint16_t*)(ip + 2);
  6418. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6419. uint16_t __ret = *(uint16_t*)(ip + 6);
  6420. void* _self = (*(void**)(localVarBase + __self));
  6421. CHECK_NOT_NULL_THROW(_self);
  6422. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6423. typedef float(*_NativeMethod_)(void*, float, MethodInfo*);
  6424. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), _resolvedMethod);
  6425. ip += 16;
  6426. continue;
  6427. }
  6428. case HiOpcodeEnum::CallCommonNativeInstance_f4_f4_2:
  6429. {
  6430. uint32_t __method = *(uint32_t*)(ip + 12);
  6431. uint16_t __self = *(uint16_t*)(ip + 2);
  6432. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6433. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6434. uint16_t __ret = *(uint16_t*)(ip + 8);
  6435. void* _self = (*(void**)(localVarBase + __self));
  6436. CHECK_NOT_NULL_THROW(_self);
  6437. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6438. typedef float(*_NativeMethod_)(void*, float, float, MethodInfo*);
  6439. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  6440. ip += 16;
  6441. continue;
  6442. }
  6443. case HiOpcodeEnum::CallCommonNativeInstance_f4_f4_3:
  6444. {
  6445. uint32_t __method = *(uint32_t*)(ip + 12);
  6446. uint16_t __self = *(uint16_t*)(ip + 2);
  6447. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6448. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6449. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6450. uint16_t __ret = *(uint16_t*)(ip + 10);
  6451. void* _self = (*(void**)(localVarBase + __self));
  6452. CHECK_NOT_NULL_THROW(_self);
  6453. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6454. typedef float(*_NativeMethod_)(void*, float, float, float, MethodInfo*);
  6455. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  6456. ip += 16;
  6457. continue;
  6458. }
  6459. case HiOpcodeEnum::CallCommonNativeInstance_f4_f4_4:
  6460. {
  6461. uint32_t __method = *(uint32_t*)(ip + 16);
  6462. uint16_t __self = *(uint16_t*)(ip + 2);
  6463. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6464. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6465. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6466. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6467. uint16_t __ret = *(uint16_t*)(ip + 12);
  6468. void* _self = (*(void**)(localVarBase + __self));
  6469. CHECK_NOT_NULL_THROW(_self);
  6470. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6471. typedef float(*_NativeMethod_)(void*, float, float, float, float, MethodInfo*);
  6472. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  6473. ip += 24;
  6474. continue;
  6475. }
  6476. case HiOpcodeEnum::CallCommonNativeInstance_f4_f8_1:
  6477. {
  6478. uint32_t __method = *(uint32_t*)(ip + 8);
  6479. uint16_t __self = *(uint16_t*)(ip + 2);
  6480. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6481. uint16_t __ret = *(uint16_t*)(ip + 6);
  6482. void* _self = (*(void**)(localVarBase + __self));
  6483. CHECK_NOT_NULL_THROW(_self);
  6484. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6485. typedef float(*_NativeMethod_)(void*, double, MethodInfo*);
  6486. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), _resolvedMethod);
  6487. ip += 16;
  6488. continue;
  6489. }
  6490. case HiOpcodeEnum::CallCommonNativeInstance_f4_f8_2:
  6491. {
  6492. uint32_t __method = *(uint32_t*)(ip + 12);
  6493. uint16_t __self = *(uint16_t*)(ip + 2);
  6494. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6495. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6496. uint16_t __ret = *(uint16_t*)(ip + 8);
  6497. void* _self = (*(void**)(localVarBase + __self));
  6498. CHECK_NOT_NULL_THROW(_self);
  6499. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6500. typedef float(*_NativeMethod_)(void*, double, double, MethodInfo*);
  6501. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  6502. ip += 16;
  6503. continue;
  6504. }
  6505. case HiOpcodeEnum::CallCommonNativeInstance_f4_f8_3:
  6506. {
  6507. uint32_t __method = *(uint32_t*)(ip + 12);
  6508. uint16_t __self = *(uint16_t*)(ip + 2);
  6509. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6510. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6511. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6512. uint16_t __ret = *(uint16_t*)(ip + 10);
  6513. void* _self = (*(void**)(localVarBase + __self));
  6514. CHECK_NOT_NULL_THROW(_self);
  6515. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6516. typedef float(*_NativeMethod_)(void*, double, double, double, MethodInfo*);
  6517. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  6518. ip += 16;
  6519. continue;
  6520. }
  6521. case HiOpcodeEnum::CallCommonNativeInstance_f4_f8_4:
  6522. {
  6523. uint32_t __method = *(uint32_t*)(ip + 16);
  6524. uint16_t __self = *(uint16_t*)(ip + 2);
  6525. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6526. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6527. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6528. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6529. uint16_t __ret = *(uint16_t*)(ip + 12);
  6530. void* _self = (*(void**)(localVarBase + __self));
  6531. CHECK_NOT_NULL_THROW(_self);
  6532. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6533. typedef float(*_NativeMethod_)(void*, double, double, double, double, MethodInfo*);
  6534. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  6535. ip += 24;
  6536. continue;
  6537. }
  6538. case HiOpcodeEnum::CallCommonNativeInstance_f8_i4_1:
  6539. {
  6540. uint32_t __method = *(uint32_t*)(ip + 8);
  6541. uint16_t __self = *(uint16_t*)(ip + 2);
  6542. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6543. uint16_t __ret = *(uint16_t*)(ip + 6);
  6544. void* _self = (*(void**)(localVarBase + __self));
  6545. CHECK_NOT_NULL_THROW(_self);
  6546. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6547. typedef double(*_NativeMethod_)(void*, int32_t, MethodInfo*);
  6548. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  6549. ip += 16;
  6550. continue;
  6551. }
  6552. case HiOpcodeEnum::CallCommonNativeInstance_f8_i4_2:
  6553. {
  6554. uint32_t __method = *(uint32_t*)(ip + 12);
  6555. uint16_t __self = *(uint16_t*)(ip + 2);
  6556. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6557. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6558. uint16_t __ret = *(uint16_t*)(ip + 8);
  6559. void* _self = (*(void**)(localVarBase + __self));
  6560. CHECK_NOT_NULL_THROW(_self);
  6561. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6562. typedef double(*_NativeMethod_)(void*, int32_t, int32_t, MethodInfo*);
  6563. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  6564. ip += 16;
  6565. continue;
  6566. }
  6567. case HiOpcodeEnum::CallCommonNativeInstance_f8_i4_3:
  6568. {
  6569. uint32_t __method = *(uint32_t*)(ip + 12);
  6570. uint16_t __self = *(uint16_t*)(ip + 2);
  6571. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6572. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6573. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6574. uint16_t __ret = *(uint16_t*)(ip + 10);
  6575. void* _self = (*(void**)(localVarBase + __self));
  6576. CHECK_NOT_NULL_THROW(_self);
  6577. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6578. typedef double(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, MethodInfo*);
  6579. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  6580. ip += 16;
  6581. continue;
  6582. }
  6583. case HiOpcodeEnum::CallCommonNativeInstance_f8_i4_4:
  6584. {
  6585. uint32_t __method = *(uint32_t*)(ip + 16);
  6586. uint16_t __self = *(uint16_t*)(ip + 2);
  6587. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6588. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6589. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6590. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6591. uint16_t __ret = *(uint16_t*)(ip + 12);
  6592. void* _self = (*(void**)(localVarBase + __self));
  6593. CHECK_NOT_NULL_THROW(_self);
  6594. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6595. typedef double(*_NativeMethod_)(void*, int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  6596. *(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);
  6597. ip += 24;
  6598. continue;
  6599. }
  6600. case HiOpcodeEnum::CallCommonNativeInstance_f8_i8_1:
  6601. {
  6602. uint32_t __method = *(uint32_t*)(ip + 8);
  6603. uint16_t __self = *(uint16_t*)(ip + 2);
  6604. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6605. uint16_t __ret = *(uint16_t*)(ip + 6);
  6606. void* _self = (*(void**)(localVarBase + __self));
  6607. CHECK_NOT_NULL_THROW(_self);
  6608. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6609. typedef double(*_NativeMethod_)(void*, int64_t, MethodInfo*);
  6610. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  6611. ip += 16;
  6612. continue;
  6613. }
  6614. case HiOpcodeEnum::CallCommonNativeInstance_f8_i8_2:
  6615. {
  6616. uint32_t __method = *(uint32_t*)(ip + 12);
  6617. uint16_t __self = *(uint16_t*)(ip + 2);
  6618. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6619. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6620. uint16_t __ret = *(uint16_t*)(ip + 8);
  6621. void* _self = (*(void**)(localVarBase + __self));
  6622. CHECK_NOT_NULL_THROW(_self);
  6623. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6624. typedef double(*_NativeMethod_)(void*, int64_t, int64_t, MethodInfo*);
  6625. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  6626. ip += 16;
  6627. continue;
  6628. }
  6629. case HiOpcodeEnum::CallCommonNativeInstance_f8_i8_3:
  6630. {
  6631. uint32_t __method = *(uint32_t*)(ip + 12);
  6632. uint16_t __self = *(uint16_t*)(ip + 2);
  6633. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6634. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6635. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6636. uint16_t __ret = *(uint16_t*)(ip + 10);
  6637. void* _self = (*(void**)(localVarBase + __self));
  6638. CHECK_NOT_NULL_THROW(_self);
  6639. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6640. typedef double(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, MethodInfo*);
  6641. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  6642. ip += 16;
  6643. continue;
  6644. }
  6645. case HiOpcodeEnum::CallCommonNativeInstance_f8_i8_4:
  6646. {
  6647. uint32_t __method = *(uint32_t*)(ip + 16);
  6648. uint16_t __self = *(uint16_t*)(ip + 2);
  6649. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6650. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6651. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6652. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6653. uint16_t __ret = *(uint16_t*)(ip + 12);
  6654. void* _self = (*(void**)(localVarBase + __self));
  6655. CHECK_NOT_NULL_THROW(_self);
  6656. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6657. typedef double(*_NativeMethod_)(void*, int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  6658. *(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);
  6659. ip += 24;
  6660. continue;
  6661. }
  6662. case HiOpcodeEnum::CallCommonNativeInstance_f8_f4_1:
  6663. {
  6664. uint32_t __method = *(uint32_t*)(ip + 8);
  6665. uint16_t __self = *(uint16_t*)(ip + 2);
  6666. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6667. uint16_t __ret = *(uint16_t*)(ip + 6);
  6668. void* _self = (*(void**)(localVarBase + __self));
  6669. CHECK_NOT_NULL_THROW(_self);
  6670. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6671. typedef double(*_NativeMethod_)(void*, float, MethodInfo*);
  6672. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), _resolvedMethod);
  6673. ip += 16;
  6674. continue;
  6675. }
  6676. case HiOpcodeEnum::CallCommonNativeInstance_f8_f4_2:
  6677. {
  6678. uint32_t __method = *(uint32_t*)(ip + 12);
  6679. uint16_t __self = *(uint16_t*)(ip + 2);
  6680. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6681. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6682. uint16_t __ret = *(uint16_t*)(ip + 8);
  6683. void* _self = (*(void**)(localVarBase + __self));
  6684. CHECK_NOT_NULL_THROW(_self);
  6685. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6686. typedef double(*_NativeMethod_)(void*, float, float, MethodInfo*);
  6687. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  6688. ip += 16;
  6689. continue;
  6690. }
  6691. case HiOpcodeEnum::CallCommonNativeInstance_f8_f4_3:
  6692. {
  6693. uint32_t __method = *(uint32_t*)(ip + 12);
  6694. uint16_t __self = *(uint16_t*)(ip + 2);
  6695. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6696. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6697. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6698. uint16_t __ret = *(uint16_t*)(ip + 10);
  6699. void* _self = (*(void**)(localVarBase + __self));
  6700. CHECK_NOT_NULL_THROW(_self);
  6701. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6702. typedef double(*_NativeMethod_)(void*, float, float, float, MethodInfo*);
  6703. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  6704. ip += 16;
  6705. continue;
  6706. }
  6707. case HiOpcodeEnum::CallCommonNativeInstance_f8_f4_4:
  6708. {
  6709. uint32_t __method = *(uint32_t*)(ip + 16);
  6710. uint16_t __self = *(uint16_t*)(ip + 2);
  6711. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6712. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6713. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6714. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6715. uint16_t __ret = *(uint16_t*)(ip + 12);
  6716. void* _self = (*(void**)(localVarBase + __self));
  6717. CHECK_NOT_NULL_THROW(_self);
  6718. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6719. typedef double(*_NativeMethod_)(void*, float, float, float, float, MethodInfo*);
  6720. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  6721. ip += 24;
  6722. continue;
  6723. }
  6724. case HiOpcodeEnum::CallCommonNativeInstance_f8_f8_1:
  6725. {
  6726. uint32_t __method = *(uint32_t*)(ip + 8);
  6727. uint16_t __self = *(uint16_t*)(ip + 2);
  6728. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6729. uint16_t __ret = *(uint16_t*)(ip + 6);
  6730. void* _self = (*(void**)(localVarBase + __self));
  6731. CHECK_NOT_NULL_THROW(_self);
  6732. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6733. typedef double(*_NativeMethod_)(void*, double, MethodInfo*);
  6734. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), _resolvedMethod);
  6735. ip += 16;
  6736. continue;
  6737. }
  6738. case HiOpcodeEnum::CallCommonNativeInstance_f8_f8_2:
  6739. {
  6740. uint32_t __method = *(uint32_t*)(ip + 12);
  6741. uint16_t __self = *(uint16_t*)(ip + 2);
  6742. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6743. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6744. uint16_t __ret = *(uint16_t*)(ip + 8);
  6745. void* _self = (*(void**)(localVarBase + __self));
  6746. CHECK_NOT_NULL_THROW(_self);
  6747. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6748. typedef double(*_NativeMethod_)(void*, double, double, MethodInfo*);
  6749. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  6750. ip += 16;
  6751. continue;
  6752. }
  6753. case HiOpcodeEnum::CallCommonNativeInstance_f8_f8_3:
  6754. {
  6755. uint32_t __method = *(uint32_t*)(ip + 12);
  6756. uint16_t __self = *(uint16_t*)(ip + 2);
  6757. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6758. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6759. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6760. uint16_t __ret = *(uint16_t*)(ip + 10);
  6761. void* _self = (*(void**)(localVarBase + __self));
  6762. CHECK_NOT_NULL_THROW(_self);
  6763. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6764. typedef double(*_NativeMethod_)(void*, double, double, double, MethodInfo*);
  6765. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  6766. ip += 16;
  6767. continue;
  6768. }
  6769. case HiOpcodeEnum::CallCommonNativeInstance_f8_f8_4:
  6770. {
  6771. uint32_t __method = *(uint32_t*)(ip + 16);
  6772. uint16_t __self = *(uint16_t*)(ip + 2);
  6773. uint16_t __param0 = *(uint16_t*)(ip + 4);
  6774. uint16_t __param1 = *(uint16_t*)(ip + 6);
  6775. uint16_t __param2 = *(uint16_t*)(ip + 8);
  6776. uint16_t __param3 = *(uint16_t*)(ip + 10);
  6777. uint16_t __ret = *(uint16_t*)(ip + 12);
  6778. void* _self = (*(void**)(localVarBase + __self));
  6779. CHECK_NOT_NULL_THROW(_self);
  6780. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6781. typedef double(*_NativeMethod_)(void*, double, double, double, double, MethodInfo*);
  6782. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_self, (*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  6783. ip += 24;
  6784. continue;
  6785. }
  6786. case HiOpcodeEnum::CallCommonNativeStatic_v_0:
  6787. {
  6788. uint32_t __method = *(uint32_t*)(ip + 4);
  6789. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6790. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6791. typedef void(*_NativeMethod_)(MethodInfo*);
  6792. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6793. ip += 8;
  6794. continue;
  6795. }
  6796. case HiOpcodeEnum::CallCommonNativeStatic_i1_0:
  6797. {
  6798. uint32_t __method = *(uint32_t*)(ip + 4);
  6799. uint16_t __ret = *(uint16_t*)(ip + 2);
  6800. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6801. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6802. typedef int8_t(*_NativeMethod_)(MethodInfo*);
  6803. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6804. ip += 8;
  6805. continue;
  6806. }
  6807. case HiOpcodeEnum::CallCommonNativeStatic_u1_0:
  6808. {
  6809. uint32_t __method = *(uint32_t*)(ip + 4);
  6810. uint16_t __ret = *(uint16_t*)(ip + 2);
  6811. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6812. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6813. typedef uint8_t(*_NativeMethod_)(MethodInfo*);
  6814. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6815. ip += 8;
  6816. continue;
  6817. }
  6818. case HiOpcodeEnum::CallCommonNativeStatic_i2_0:
  6819. {
  6820. uint32_t __method = *(uint32_t*)(ip + 4);
  6821. uint16_t __ret = *(uint16_t*)(ip + 2);
  6822. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6823. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6824. typedef int16_t(*_NativeMethod_)(MethodInfo*);
  6825. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6826. ip += 8;
  6827. continue;
  6828. }
  6829. case HiOpcodeEnum::CallCommonNativeStatic_u2_0:
  6830. {
  6831. uint32_t __method = *(uint32_t*)(ip + 4);
  6832. uint16_t __ret = *(uint16_t*)(ip + 2);
  6833. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6834. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6835. typedef uint16_t(*_NativeMethod_)(MethodInfo*);
  6836. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6837. ip += 8;
  6838. continue;
  6839. }
  6840. case HiOpcodeEnum::CallCommonNativeStatic_i4_0:
  6841. {
  6842. uint32_t __method = *(uint32_t*)(ip + 4);
  6843. uint16_t __ret = *(uint16_t*)(ip + 2);
  6844. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6845. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6846. typedef int32_t(*_NativeMethod_)(MethodInfo*);
  6847. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6848. ip += 8;
  6849. continue;
  6850. }
  6851. case HiOpcodeEnum::CallCommonNativeStatic_i8_0:
  6852. {
  6853. uint32_t __method = *(uint32_t*)(ip + 4);
  6854. uint16_t __ret = *(uint16_t*)(ip + 2);
  6855. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6856. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6857. typedef int64_t(*_NativeMethod_)(MethodInfo*);
  6858. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6859. ip += 8;
  6860. continue;
  6861. }
  6862. case HiOpcodeEnum::CallCommonNativeStatic_f4_0:
  6863. {
  6864. uint32_t __method = *(uint32_t*)(ip + 4);
  6865. uint16_t __ret = *(uint16_t*)(ip + 2);
  6866. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6867. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6868. typedef float(*_NativeMethod_)(MethodInfo*);
  6869. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6870. ip += 8;
  6871. continue;
  6872. }
  6873. case HiOpcodeEnum::CallCommonNativeStatic_f8_0:
  6874. {
  6875. uint32_t __method = *(uint32_t*)(ip + 4);
  6876. uint16_t __ret = *(uint16_t*)(ip + 2);
  6877. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6878. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6879. typedef double(*_NativeMethod_)(MethodInfo*);
  6880. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)(_resolvedMethod);
  6881. ip += 8;
  6882. continue;
  6883. }
  6884. case HiOpcodeEnum::CallCommonNativeStatic_v_i4_1:
  6885. {
  6886. uint32_t __method = *(uint32_t*)(ip + 4);
  6887. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6888. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6889. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6890. typedef void(*_NativeMethod_)(int32_t, MethodInfo*);
  6891. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  6892. ip += 8;
  6893. continue;
  6894. }
  6895. case HiOpcodeEnum::CallCommonNativeStatic_v_i4_2:
  6896. {
  6897. uint32_t __method = *(uint32_t*)(ip + 8);
  6898. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6899. uint16_t __param1 = *(uint16_t*)(ip + 4);
  6900. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6901. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6902. typedef void(*_NativeMethod_)(int32_t, int32_t, MethodInfo*);
  6903. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  6904. ip += 16;
  6905. continue;
  6906. }
  6907. case HiOpcodeEnum::CallCommonNativeStatic_v_i4_3:
  6908. {
  6909. uint32_t __method = *(uint32_t*)(ip + 8);
  6910. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6911. uint16_t __param1 = *(uint16_t*)(ip + 4);
  6912. uint16_t __param2 = *(uint16_t*)(ip + 6);
  6913. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6914. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6915. typedef void(*_NativeMethod_)(int32_t, int32_t, int32_t, MethodInfo*);
  6916. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  6917. ip += 16;
  6918. continue;
  6919. }
  6920. case HiOpcodeEnum::CallCommonNativeStatic_v_i4_4:
  6921. {
  6922. uint32_t __method = *(uint32_t*)(ip + 12);
  6923. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6924. uint16_t __param1 = *(uint16_t*)(ip + 4);
  6925. uint16_t __param2 = *(uint16_t*)(ip + 6);
  6926. uint16_t __param3 = *(uint16_t*)(ip + 8);
  6927. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6928. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6929. typedef void(*_NativeMethod_)(int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  6930. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  6931. ip += 16;
  6932. continue;
  6933. }
  6934. case HiOpcodeEnum::CallCommonNativeStatic_v_i8_1:
  6935. {
  6936. uint32_t __method = *(uint32_t*)(ip + 4);
  6937. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6938. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6939. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6940. typedef void(*_NativeMethod_)(int64_t, MethodInfo*);
  6941. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  6942. ip += 8;
  6943. continue;
  6944. }
  6945. case HiOpcodeEnum::CallCommonNativeStatic_v_i8_2:
  6946. {
  6947. uint32_t __method = *(uint32_t*)(ip + 8);
  6948. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6949. uint16_t __param1 = *(uint16_t*)(ip + 4);
  6950. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6951. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6952. typedef void(*_NativeMethod_)(int64_t, int64_t, MethodInfo*);
  6953. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  6954. ip += 16;
  6955. continue;
  6956. }
  6957. case HiOpcodeEnum::CallCommonNativeStatic_v_i8_3:
  6958. {
  6959. uint32_t __method = *(uint32_t*)(ip + 8);
  6960. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6961. uint16_t __param1 = *(uint16_t*)(ip + 4);
  6962. uint16_t __param2 = *(uint16_t*)(ip + 6);
  6963. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6964. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6965. typedef void(*_NativeMethod_)(int64_t, int64_t, int64_t, MethodInfo*);
  6966. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  6967. ip += 16;
  6968. continue;
  6969. }
  6970. case HiOpcodeEnum::CallCommonNativeStatic_v_i8_4:
  6971. {
  6972. uint32_t __method = *(uint32_t*)(ip + 12);
  6973. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6974. uint16_t __param1 = *(uint16_t*)(ip + 4);
  6975. uint16_t __param2 = *(uint16_t*)(ip + 6);
  6976. uint16_t __param3 = *(uint16_t*)(ip + 8);
  6977. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6978. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6979. typedef void(*_NativeMethod_)(int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  6980. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  6981. ip += 16;
  6982. continue;
  6983. }
  6984. case HiOpcodeEnum::CallCommonNativeStatic_v_f4_1:
  6985. {
  6986. uint32_t __method = *(uint32_t*)(ip + 4);
  6987. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6988. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  6989. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  6990. typedef void(*_NativeMethod_)(float, MethodInfo*);
  6991. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), _resolvedMethod);
  6992. ip += 8;
  6993. continue;
  6994. }
  6995. case HiOpcodeEnum::CallCommonNativeStatic_v_f4_2:
  6996. {
  6997. uint32_t __method = *(uint32_t*)(ip + 8);
  6998. uint16_t __param0 = *(uint16_t*)(ip + 2);
  6999. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7000. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7001. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7002. typedef void(*_NativeMethod_)(float, float, MethodInfo*);
  7003. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  7004. ip += 16;
  7005. continue;
  7006. }
  7007. case HiOpcodeEnum::CallCommonNativeStatic_v_f4_3:
  7008. {
  7009. uint32_t __method = *(uint32_t*)(ip + 8);
  7010. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7011. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7012. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7013. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7014. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7015. typedef void(*_NativeMethod_)(float, float, float, MethodInfo*);
  7016. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  7017. ip += 16;
  7018. continue;
  7019. }
  7020. case HiOpcodeEnum::CallCommonNativeStatic_v_f4_4:
  7021. {
  7022. uint32_t __method = *(uint32_t*)(ip + 12);
  7023. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7024. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7025. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7026. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7027. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7028. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7029. typedef void(*_NativeMethod_)(float, float, float, float, MethodInfo*);
  7030. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  7031. ip += 16;
  7032. continue;
  7033. }
  7034. case HiOpcodeEnum::CallCommonNativeStatic_v_f8_1:
  7035. {
  7036. uint32_t __method = *(uint32_t*)(ip + 4);
  7037. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7038. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7039. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7040. typedef void(*_NativeMethod_)(double, MethodInfo*);
  7041. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), _resolvedMethod);
  7042. ip += 8;
  7043. continue;
  7044. }
  7045. case HiOpcodeEnum::CallCommonNativeStatic_v_f8_2:
  7046. {
  7047. uint32_t __method = *(uint32_t*)(ip + 8);
  7048. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7049. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7050. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7051. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7052. typedef void(*_NativeMethod_)(double, double, MethodInfo*);
  7053. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  7054. ip += 16;
  7055. continue;
  7056. }
  7057. case HiOpcodeEnum::CallCommonNativeStatic_v_f8_3:
  7058. {
  7059. uint32_t __method = *(uint32_t*)(ip + 8);
  7060. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7061. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7062. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7063. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7064. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7065. typedef void(*_NativeMethod_)(double, double, double, MethodInfo*);
  7066. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  7067. ip += 16;
  7068. continue;
  7069. }
  7070. case HiOpcodeEnum::CallCommonNativeStatic_v_f8_4:
  7071. {
  7072. uint32_t __method = *(uint32_t*)(ip + 12);
  7073. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7074. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7075. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7076. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7077. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7078. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7079. typedef void(*_NativeMethod_)(double, double, double, double, MethodInfo*);
  7080. ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  7081. ip += 16;
  7082. continue;
  7083. }
  7084. case HiOpcodeEnum::CallCommonNativeStatic_u1_i4_1:
  7085. {
  7086. uint32_t __method = *(uint32_t*)(ip + 8);
  7087. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7088. uint16_t __ret = *(uint16_t*)(ip + 4);
  7089. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7090. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7091. typedef uint8_t(*_NativeMethod_)(int32_t, MethodInfo*);
  7092. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  7093. ip += 16;
  7094. continue;
  7095. }
  7096. case HiOpcodeEnum::CallCommonNativeStatic_u1_i4_2:
  7097. {
  7098. uint32_t __method = *(uint32_t*)(ip + 8);
  7099. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7100. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7101. uint16_t __ret = *(uint16_t*)(ip + 6);
  7102. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7103. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7104. typedef uint8_t(*_NativeMethod_)(int32_t, int32_t, MethodInfo*);
  7105. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  7106. ip += 16;
  7107. continue;
  7108. }
  7109. case HiOpcodeEnum::CallCommonNativeStatic_u1_i4_3:
  7110. {
  7111. uint32_t __method = *(uint32_t*)(ip + 12);
  7112. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7113. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7114. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7115. uint16_t __ret = *(uint16_t*)(ip + 8);
  7116. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7117. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7118. typedef uint8_t(*_NativeMethod_)(int32_t, int32_t, int32_t, MethodInfo*);
  7119. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  7120. ip += 16;
  7121. continue;
  7122. }
  7123. case HiOpcodeEnum::CallCommonNativeStatic_u1_i4_4:
  7124. {
  7125. uint32_t __method = *(uint32_t*)(ip + 12);
  7126. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7127. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7128. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7129. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7130. uint16_t __ret = *(uint16_t*)(ip + 10);
  7131. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7132. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7133. typedef uint8_t(*_NativeMethod_)(int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  7134. *(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);
  7135. ip += 16;
  7136. continue;
  7137. }
  7138. case HiOpcodeEnum::CallCommonNativeStatic_u1_i8_1:
  7139. {
  7140. uint32_t __method = *(uint32_t*)(ip + 8);
  7141. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7142. uint16_t __ret = *(uint16_t*)(ip + 4);
  7143. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7144. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7145. typedef uint8_t(*_NativeMethod_)(int64_t, MethodInfo*);
  7146. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  7147. ip += 16;
  7148. continue;
  7149. }
  7150. case HiOpcodeEnum::CallCommonNativeStatic_u1_i8_2:
  7151. {
  7152. uint32_t __method = *(uint32_t*)(ip + 8);
  7153. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7154. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7155. uint16_t __ret = *(uint16_t*)(ip + 6);
  7156. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7157. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7158. typedef uint8_t(*_NativeMethod_)(int64_t, int64_t, MethodInfo*);
  7159. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  7160. ip += 16;
  7161. continue;
  7162. }
  7163. case HiOpcodeEnum::CallCommonNativeStatic_u1_i8_3:
  7164. {
  7165. uint32_t __method = *(uint32_t*)(ip + 12);
  7166. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7167. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7168. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7169. uint16_t __ret = *(uint16_t*)(ip + 8);
  7170. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7171. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7172. typedef uint8_t(*_NativeMethod_)(int64_t, int64_t, int64_t, MethodInfo*);
  7173. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  7174. ip += 16;
  7175. continue;
  7176. }
  7177. case HiOpcodeEnum::CallCommonNativeStatic_u1_i8_4:
  7178. {
  7179. uint32_t __method = *(uint32_t*)(ip + 12);
  7180. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7181. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7182. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7183. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7184. uint16_t __ret = *(uint16_t*)(ip + 10);
  7185. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7186. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7187. typedef uint8_t(*_NativeMethod_)(int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  7188. *(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);
  7189. ip += 16;
  7190. continue;
  7191. }
  7192. case HiOpcodeEnum::CallCommonNativeStatic_u1_f4_1:
  7193. {
  7194. uint32_t __method = *(uint32_t*)(ip + 8);
  7195. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7196. uint16_t __ret = *(uint16_t*)(ip + 4);
  7197. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7198. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7199. typedef uint8_t(*_NativeMethod_)(float, MethodInfo*);
  7200. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), _resolvedMethod);
  7201. ip += 16;
  7202. continue;
  7203. }
  7204. case HiOpcodeEnum::CallCommonNativeStatic_u1_f4_2:
  7205. {
  7206. uint32_t __method = *(uint32_t*)(ip + 8);
  7207. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7208. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7209. uint16_t __ret = *(uint16_t*)(ip + 6);
  7210. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7211. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7212. typedef uint8_t(*_NativeMethod_)(float, float, MethodInfo*);
  7213. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  7214. ip += 16;
  7215. continue;
  7216. }
  7217. case HiOpcodeEnum::CallCommonNativeStatic_u1_f4_3:
  7218. {
  7219. uint32_t __method = *(uint32_t*)(ip + 12);
  7220. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7221. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7222. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7223. uint16_t __ret = *(uint16_t*)(ip + 8);
  7224. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7225. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7226. typedef uint8_t(*_NativeMethod_)(float, float, float, MethodInfo*);
  7227. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  7228. ip += 16;
  7229. continue;
  7230. }
  7231. case HiOpcodeEnum::CallCommonNativeStatic_u1_f4_4:
  7232. {
  7233. uint32_t __method = *(uint32_t*)(ip + 12);
  7234. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7235. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7236. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7237. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7238. uint16_t __ret = *(uint16_t*)(ip + 10);
  7239. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7240. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7241. typedef uint8_t(*_NativeMethod_)(float, float, float, float, MethodInfo*);
  7242. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  7243. ip += 16;
  7244. continue;
  7245. }
  7246. case HiOpcodeEnum::CallCommonNativeStatic_u1_f8_1:
  7247. {
  7248. uint32_t __method = *(uint32_t*)(ip + 8);
  7249. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7250. uint16_t __ret = *(uint16_t*)(ip + 4);
  7251. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7252. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7253. typedef uint8_t(*_NativeMethod_)(double, MethodInfo*);
  7254. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), _resolvedMethod);
  7255. ip += 16;
  7256. continue;
  7257. }
  7258. case HiOpcodeEnum::CallCommonNativeStatic_u1_f8_2:
  7259. {
  7260. uint32_t __method = *(uint32_t*)(ip + 8);
  7261. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7262. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7263. uint16_t __ret = *(uint16_t*)(ip + 6);
  7264. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7265. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7266. typedef uint8_t(*_NativeMethod_)(double, double, MethodInfo*);
  7267. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  7268. ip += 16;
  7269. continue;
  7270. }
  7271. case HiOpcodeEnum::CallCommonNativeStatic_u1_f8_3:
  7272. {
  7273. uint32_t __method = *(uint32_t*)(ip + 12);
  7274. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7275. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7276. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7277. uint16_t __ret = *(uint16_t*)(ip + 8);
  7278. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7279. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7280. typedef uint8_t(*_NativeMethod_)(double, double, double, MethodInfo*);
  7281. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  7282. ip += 16;
  7283. continue;
  7284. }
  7285. case HiOpcodeEnum::CallCommonNativeStatic_u1_f8_4:
  7286. {
  7287. uint32_t __method = *(uint32_t*)(ip + 12);
  7288. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7289. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7290. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7291. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7292. uint16_t __ret = *(uint16_t*)(ip + 10);
  7293. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7294. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7295. typedef uint8_t(*_NativeMethod_)(double, double, double, double, MethodInfo*);
  7296. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  7297. ip += 16;
  7298. continue;
  7299. }
  7300. case HiOpcodeEnum::CallCommonNativeStatic_i4_i4_1:
  7301. {
  7302. uint32_t __method = *(uint32_t*)(ip + 8);
  7303. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7304. uint16_t __ret = *(uint16_t*)(ip + 4);
  7305. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7306. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7307. typedef int32_t(*_NativeMethod_)(int32_t, MethodInfo*);
  7308. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  7309. ip += 16;
  7310. continue;
  7311. }
  7312. case HiOpcodeEnum::CallCommonNativeStatic_i4_i4_2:
  7313. {
  7314. uint32_t __method = *(uint32_t*)(ip + 8);
  7315. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7316. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7317. uint16_t __ret = *(uint16_t*)(ip + 6);
  7318. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7319. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7320. typedef int32_t(*_NativeMethod_)(int32_t, int32_t, MethodInfo*);
  7321. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  7322. ip += 16;
  7323. continue;
  7324. }
  7325. case HiOpcodeEnum::CallCommonNativeStatic_i4_i4_3:
  7326. {
  7327. uint32_t __method = *(uint32_t*)(ip + 12);
  7328. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7329. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7330. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7331. uint16_t __ret = *(uint16_t*)(ip + 8);
  7332. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7333. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7334. typedef int32_t(*_NativeMethod_)(int32_t, int32_t, int32_t, MethodInfo*);
  7335. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  7336. ip += 16;
  7337. continue;
  7338. }
  7339. case HiOpcodeEnum::CallCommonNativeStatic_i4_i4_4:
  7340. {
  7341. uint32_t __method = *(uint32_t*)(ip + 12);
  7342. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7343. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7344. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7345. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7346. uint16_t __ret = *(uint16_t*)(ip + 10);
  7347. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7348. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7349. typedef int32_t(*_NativeMethod_)(int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  7350. *(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);
  7351. ip += 16;
  7352. continue;
  7353. }
  7354. case HiOpcodeEnum::CallCommonNativeStatic_i4_i8_1:
  7355. {
  7356. uint32_t __method = *(uint32_t*)(ip + 8);
  7357. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7358. uint16_t __ret = *(uint16_t*)(ip + 4);
  7359. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7360. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7361. typedef int32_t(*_NativeMethod_)(int64_t, MethodInfo*);
  7362. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  7363. ip += 16;
  7364. continue;
  7365. }
  7366. case HiOpcodeEnum::CallCommonNativeStatic_i4_i8_2:
  7367. {
  7368. uint32_t __method = *(uint32_t*)(ip + 8);
  7369. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7370. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7371. uint16_t __ret = *(uint16_t*)(ip + 6);
  7372. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7373. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7374. typedef int32_t(*_NativeMethod_)(int64_t, int64_t, MethodInfo*);
  7375. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  7376. ip += 16;
  7377. continue;
  7378. }
  7379. case HiOpcodeEnum::CallCommonNativeStatic_i4_i8_3:
  7380. {
  7381. uint32_t __method = *(uint32_t*)(ip + 12);
  7382. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7383. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7384. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7385. uint16_t __ret = *(uint16_t*)(ip + 8);
  7386. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7387. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7388. typedef int32_t(*_NativeMethod_)(int64_t, int64_t, int64_t, MethodInfo*);
  7389. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  7390. ip += 16;
  7391. continue;
  7392. }
  7393. case HiOpcodeEnum::CallCommonNativeStatic_i4_i8_4:
  7394. {
  7395. uint32_t __method = *(uint32_t*)(ip + 12);
  7396. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7397. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7398. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7399. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7400. uint16_t __ret = *(uint16_t*)(ip + 10);
  7401. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7402. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7403. typedef int32_t(*_NativeMethod_)(int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  7404. *(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);
  7405. ip += 16;
  7406. continue;
  7407. }
  7408. case HiOpcodeEnum::CallCommonNativeStatic_i4_f4_1:
  7409. {
  7410. uint32_t __method = *(uint32_t*)(ip + 8);
  7411. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7412. uint16_t __ret = *(uint16_t*)(ip + 4);
  7413. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7414. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7415. typedef int32_t(*_NativeMethod_)(float, MethodInfo*);
  7416. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), _resolvedMethod);
  7417. ip += 16;
  7418. continue;
  7419. }
  7420. case HiOpcodeEnum::CallCommonNativeStatic_i4_f4_2:
  7421. {
  7422. uint32_t __method = *(uint32_t*)(ip + 8);
  7423. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7424. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7425. uint16_t __ret = *(uint16_t*)(ip + 6);
  7426. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7427. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7428. typedef int32_t(*_NativeMethod_)(float, float, MethodInfo*);
  7429. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  7430. ip += 16;
  7431. continue;
  7432. }
  7433. case HiOpcodeEnum::CallCommonNativeStatic_i4_f4_3:
  7434. {
  7435. uint32_t __method = *(uint32_t*)(ip + 12);
  7436. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7437. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7438. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7439. uint16_t __ret = *(uint16_t*)(ip + 8);
  7440. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7441. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7442. typedef int32_t(*_NativeMethod_)(float, float, float, MethodInfo*);
  7443. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  7444. ip += 16;
  7445. continue;
  7446. }
  7447. case HiOpcodeEnum::CallCommonNativeStatic_i4_f4_4:
  7448. {
  7449. uint32_t __method = *(uint32_t*)(ip + 12);
  7450. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7451. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7452. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7453. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7454. uint16_t __ret = *(uint16_t*)(ip + 10);
  7455. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7456. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7457. typedef int32_t(*_NativeMethod_)(float, float, float, float, MethodInfo*);
  7458. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  7459. ip += 16;
  7460. continue;
  7461. }
  7462. case HiOpcodeEnum::CallCommonNativeStatic_i4_f8_1:
  7463. {
  7464. uint32_t __method = *(uint32_t*)(ip + 8);
  7465. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7466. uint16_t __ret = *(uint16_t*)(ip + 4);
  7467. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7468. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7469. typedef int32_t(*_NativeMethod_)(double, MethodInfo*);
  7470. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), _resolvedMethod);
  7471. ip += 16;
  7472. continue;
  7473. }
  7474. case HiOpcodeEnum::CallCommonNativeStatic_i4_f8_2:
  7475. {
  7476. uint32_t __method = *(uint32_t*)(ip + 8);
  7477. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7478. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7479. uint16_t __ret = *(uint16_t*)(ip + 6);
  7480. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7481. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7482. typedef int32_t(*_NativeMethod_)(double, double, MethodInfo*);
  7483. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  7484. ip += 16;
  7485. continue;
  7486. }
  7487. case HiOpcodeEnum::CallCommonNativeStatic_i4_f8_3:
  7488. {
  7489. uint32_t __method = *(uint32_t*)(ip + 12);
  7490. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7491. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7492. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7493. uint16_t __ret = *(uint16_t*)(ip + 8);
  7494. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7495. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7496. typedef int32_t(*_NativeMethod_)(double, double, double, MethodInfo*);
  7497. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  7498. ip += 16;
  7499. continue;
  7500. }
  7501. case HiOpcodeEnum::CallCommonNativeStatic_i4_f8_4:
  7502. {
  7503. uint32_t __method = *(uint32_t*)(ip + 12);
  7504. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7505. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7506. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7507. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7508. uint16_t __ret = *(uint16_t*)(ip + 10);
  7509. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7510. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7511. typedef int32_t(*_NativeMethod_)(double, double, double, double, MethodInfo*);
  7512. *(int32_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  7513. ip += 16;
  7514. continue;
  7515. }
  7516. case HiOpcodeEnum::CallCommonNativeStatic_i8_i4_1:
  7517. {
  7518. uint32_t __method = *(uint32_t*)(ip + 8);
  7519. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7520. uint16_t __ret = *(uint16_t*)(ip + 4);
  7521. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7522. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7523. typedef int64_t(*_NativeMethod_)(int32_t, MethodInfo*);
  7524. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  7525. ip += 16;
  7526. continue;
  7527. }
  7528. case HiOpcodeEnum::CallCommonNativeStatic_i8_i4_2:
  7529. {
  7530. uint32_t __method = *(uint32_t*)(ip + 8);
  7531. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7532. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7533. uint16_t __ret = *(uint16_t*)(ip + 6);
  7534. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7535. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7536. typedef int64_t(*_NativeMethod_)(int32_t, int32_t, MethodInfo*);
  7537. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  7538. ip += 16;
  7539. continue;
  7540. }
  7541. case HiOpcodeEnum::CallCommonNativeStatic_i8_i4_3:
  7542. {
  7543. uint32_t __method = *(uint32_t*)(ip + 12);
  7544. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7545. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7546. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7547. uint16_t __ret = *(uint16_t*)(ip + 8);
  7548. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7549. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7550. typedef int64_t(*_NativeMethod_)(int32_t, int32_t, int32_t, MethodInfo*);
  7551. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  7552. ip += 16;
  7553. continue;
  7554. }
  7555. case HiOpcodeEnum::CallCommonNativeStatic_i8_i4_4:
  7556. {
  7557. uint32_t __method = *(uint32_t*)(ip + 12);
  7558. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7559. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7560. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7561. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7562. uint16_t __ret = *(uint16_t*)(ip + 10);
  7563. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7564. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7565. typedef int64_t(*_NativeMethod_)(int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  7566. *(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);
  7567. ip += 16;
  7568. continue;
  7569. }
  7570. case HiOpcodeEnum::CallCommonNativeStatic_i8_i8_1:
  7571. {
  7572. uint32_t __method = *(uint32_t*)(ip + 8);
  7573. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7574. uint16_t __ret = *(uint16_t*)(ip + 4);
  7575. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7576. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7577. typedef int64_t(*_NativeMethod_)(int64_t, MethodInfo*);
  7578. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  7579. ip += 16;
  7580. continue;
  7581. }
  7582. case HiOpcodeEnum::CallCommonNativeStatic_i8_i8_2:
  7583. {
  7584. uint32_t __method = *(uint32_t*)(ip + 8);
  7585. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7586. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7587. uint16_t __ret = *(uint16_t*)(ip + 6);
  7588. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7589. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7590. typedef int64_t(*_NativeMethod_)(int64_t, int64_t, MethodInfo*);
  7591. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  7592. ip += 16;
  7593. continue;
  7594. }
  7595. case HiOpcodeEnum::CallCommonNativeStatic_i8_i8_3:
  7596. {
  7597. uint32_t __method = *(uint32_t*)(ip + 12);
  7598. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7599. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7600. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7601. uint16_t __ret = *(uint16_t*)(ip + 8);
  7602. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7603. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7604. typedef int64_t(*_NativeMethod_)(int64_t, int64_t, int64_t, MethodInfo*);
  7605. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  7606. ip += 16;
  7607. continue;
  7608. }
  7609. case HiOpcodeEnum::CallCommonNativeStatic_i8_i8_4:
  7610. {
  7611. uint32_t __method = *(uint32_t*)(ip + 12);
  7612. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7613. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7614. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7615. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7616. uint16_t __ret = *(uint16_t*)(ip + 10);
  7617. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7618. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7619. typedef int64_t(*_NativeMethod_)(int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  7620. *(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);
  7621. ip += 16;
  7622. continue;
  7623. }
  7624. case HiOpcodeEnum::CallCommonNativeStatic_i8_f4_1:
  7625. {
  7626. uint32_t __method = *(uint32_t*)(ip + 8);
  7627. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7628. uint16_t __ret = *(uint16_t*)(ip + 4);
  7629. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7630. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7631. typedef int64_t(*_NativeMethod_)(float, MethodInfo*);
  7632. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), _resolvedMethod);
  7633. ip += 16;
  7634. continue;
  7635. }
  7636. case HiOpcodeEnum::CallCommonNativeStatic_i8_f4_2:
  7637. {
  7638. uint32_t __method = *(uint32_t*)(ip + 8);
  7639. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7640. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7641. uint16_t __ret = *(uint16_t*)(ip + 6);
  7642. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7643. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7644. typedef int64_t(*_NativeMethod_)(float, float, MethodInfo*);
  7645. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  7646. ip += 16;
  7647. continue;
  7648. }
  7649. case HiOpcodeEnum::CallCommonNativeStatic_i8_f4_3:
  7650. {
  7651. uint32_t __method = *(uint32_t*)(ip + 12);
  7652. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7653. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7654. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7655. uint16_t __ret = *(uint16_t*)(ip + 8);
  7656. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7657. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7658. typedef int64_t(*_NativeMethod_)(float, float, float, MethodInfo*);
  7659. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  7660. ip += 16;
  7661. continue;
  7662. }
  7663. case HiOpcodeEnum::CallCommonNativeStatic_i8_f4_4:
  7664. {
  7665. uint32_t __method = *(uint32_t*)(ip + 12);
  7666. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7667. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7668. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7669. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7670. uint16_t __ret = *(uint16_t*)(ip + 10);
  7671. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7672. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7673. typedef int64_t(*_NativeMethod_)(float, float, float, float, MethodInfo*);
  7674. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  7675. ip += 16;
  7676. continue;
  7677. }
  7678. case HiOpcodeEnum::CallCommonNativeStatic_i8_f8_1:
  7679. {
  7680. uint32_t __method = *(uint32_t*)(ip + 8);
  7681. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7682. uint16_t __ret = *(uint16_t*)(ip + 4);
  7683. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7684. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7685. typedef int64_t(*_NativeMethod_)(double, MethodInfo*);
  7686. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), _resolvedMethod);
  7687. ip += 16;
  7688. continue;
  7689. }
  7690. case HiOpcodeEnum::CallCommonNativeStatic_i8_f8_2:
  7691. {
  7692. uint32_t __method = *(uint32_t*)(ip + 8);
  7693. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7694. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7695. uint16_t __ret = *(uint16_t*)(ip + 6);
  7696. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7697. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7698. typedef int64_t(*_NativeMethod_)(double, double, MethodInfo*);
  7699. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  7700. ip += 16;
  7701. continue;
  7702. }
  7703. case HiOpcodeEnum::CallCommonNativeStatic_i8_f8_3:
  7704. {
  7705. uint32_t __method = *(uint32_t*)(ip + 12);
  7706. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7707. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7708. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7709. uint16_t __ret = *(uint16_t*)(ip + 8);
  7710. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7711. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7712. typedef int64_t(*_NativeMethod_)(double, double, double, MethodInfo*);
  7713. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  7714. ip += 16;
  7715. continue;
  7716. }
  7717. case HiOpcodeEnum::CallCommonNativeStatic_i8_f8_4:
  7718. {
  7719. uint32_t __method = *(uint32_t*)(ip + 12);
  7720. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7721. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7722. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7723. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7724. uint16_t __ret = *(uint16_t*)(ip + 10);
  7725. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7726. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7727. typedef int64_t(*_NativeMethod_)(double, double, double, double, MethodInfo*);
  7728. *(int64_t*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  7729. ip += 16;
  7730. continue;
  7731. }
  7732. case HiOpcodeEnum::CallCommonNativeStatic_f4_i4_1:
  7733. {
  7734. uint32_t __method = *(uint32_t*)(ip + 8);
  7735. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7736. uint16_t __ret = *(uint16_t*)(ip + 4);
  7737. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7738. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7739. typedef float(*_NativeMethod_)(int32_t, MethodInfo*);
  7740. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  7741. ip += 16;
  7742. continue;
  7743. }
  7744. case HiOpcodeEnum::CallCommonNativeStatic_f4_i4_2:
  7745. {
  7746. uint32_t __method = *(uint32_t*)(ip + 8);
  7747. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7748. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7749. uint16_t __ret = *(uint16_t*)(ip + 6);
  7750. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7751. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7752. typedef float(*_NativeMethod_)(int32_t, int32_t, MethodInfo*);
  7753. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  7754. ip += 16;
  7755. continue;
  7756. }
  7757. case HiOpcodeEnum::CallCommonNativeStatic_f4_i4_3:
  7758. {
  7759. uint32_t __method = *(uint32_t*)(ip + 12);
  7760. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7761. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7762. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7763. uint16_t __ret = *(uint16_t*)(ip + 8);
  7764. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7765. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7766. typedef float(*_NativeMethod_)(int32_t, int32_t, int32_t, MethodInfo*);
  7767. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  7768. ip += 16;
  7769. continue;
  7770. }
  7771. case HiOpcodeEnum::CallCommonNativeStatic_f4_i4_4:
  7772. {
  7773. uint32_t __method = *(uint32_t*)(ip + 12);
  7774. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7775. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7776. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7777. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7778. uint16_t __ret = *(uint16_t*)(ip + 10);
  7779. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7780. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7781. typedef float(*_NativeMethod_)(int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  7782. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  7783. ip += 16;
  7784. continue;
  7785. }
  7786. case HiOpcodeEnum::CallCommonNativeStatic_f4_i8_1:
  7787. {
  7788. uint32_t __method = *(uint32_t*)(ip + 8);
  7789. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7790. uint16_t __ret = *(uint16_t*)(ip + 4);
  7791. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7792. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7793. typedef float(*_NativeMethod_)(int64_t, MethodInfo*);
  7794. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  7795. ip += 16;
  7796. continue;
  7797. }
  7798. case HiOpcodeEnum::CallCommonNativeStatic_f4_i8_2:
  7799. {
  7800. uint32_t __method = *(uint32_t*)(ip + 8);
  7801. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7802. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7803. uint16_t __ret = *(uint16_t*)(ip + 6);
  7804. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7805. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7806. typedef float(*_NativeMethod_)(int64_t, int64_t, MethodInfo*);
  7807. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  7808. ip += 16;
  7809. continue;
  7810. }
  7811. case HiOpcodeEnum::CallCommonNativeStatic_f4_i8_3:
  7812. {
  7813. uint32_t __method = *(uint32_t*)(ip + 12);
  7814. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7815. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7816. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7817. uint16_t __ret = *(uint16_t*)(ip + 8);
  7818. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7819. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7820. typedef float(*_NativeMethod_)(int64_t, int64_t, int64_t, MethodInfo*);
  7821. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  7822. ip += 16;
  7823. continue;
  7824. }
  7825. case HiOpcodeEnum::CallCommonNativeStatic_f4_i8_4:
  7826. {
  7827. uint32_t __method = *(uint32_t*)(ip + 12);
  7828. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7829. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7830. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7831. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7832. uint16_t __ret = *(uint16_t*)(ip + 10);
  7833. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7834. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7835. typedef float(*_NativeMethod_)(int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  7836. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  7837. ip += 16;
  7838. continue;
  7839. }
  7840. case HiOpcodeEnum::CallCommonNativeStatic_f4_f4_1:
  7841. {
  7842. uint32_t __method = *(uint32_t*)(ip + 8);
  7843. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7844. uint16_t __ret = *(uint16_t*)(ip + 4);
  7845. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7846. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7847. typedef float(*_NativeMethod_)(float, MethodInfo*);
  7848. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), _resolvedMethod);
  7849. ip += 16;
  7850. continue;
  7851. }
  7852. case HiOpcodeEnum::CallCommonNativeStatic_f4_f4_2:
  7853. {
  7854. uint32_t __method = *(uint32_t*)(ip + 8);
  7855. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7856. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7857. uint16_t __ret = *(uint16_t*)(ip + 6);
  7858. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7859. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7860. typedef float(*_NativeMethod_)(float, float, MethodInfo*);
  7861. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  7862. ip += 16;
  7863. continue;
  7864. }
  7865. case HiOpcodeEnum::CallCommonNativeStatic_f4_f4_3:
  7866. {
  7867. uint32_t __method = *(uint32_t*)(ip + 12);
  7868. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7869. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7870. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7871. uint16_t __ret = *(uint16_t*)(ip + 8);
  7872. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7873. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7874. typedef float(*_NativeMethod_)(float, float, float, MethodInfo*);
  7875. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  7876. ip += 16;
  7877. continue;
  7878. }
  7879. case HiOpcodeEnum::CallCommonNativeStatic_f4_f4_4:
  7880. {
  7881. uint32_t __method = *(uint32_t*)(ip + 12);
  7882. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7883. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7884. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7885. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7886. uint16_t __ret = *(uint16_t*)(ip + 10);
  7887. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7888. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7889. typedef float(*_NativeMethod_)(float, float, float, float, MethodInfo*);
  7890. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  7891. ip += 16;
  7892. continue;
  7893. }
  7894. case HiOpcodeEnum::CallCommonNativeStatic_f4_f8_1:
  7895. {
  7896. uint32_t __method = *(uint32_t*)(ip + 8);
  7897. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7898. uint16_t __ret = *(uint16_t*)(ip + 4);
  7899. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7900. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7901. typedef float(*_NativeMethod_)(double, MethodInfo*);
  7902. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), _resolvedMethod);
  7903. ip += 16;
  7904. continue;
  7905. }
  7906. case HiOpcodeEnum::CallCommonNativeStatic_f4_f8_2:
  7907. {
  7908. uint32_t __method = *(uint32_t*)(ip + 8);
  7909. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7910. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7911. uint16_t __ret = *(uint16_t*)(ip + 6);
  7912. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7913. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7914. typedef float(*_NativeMethod_)(double, double, MethodInfo*);
  7915. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  7916. ip += 16;
  7917. continue;
  7918. }
  7919. case HiOpcodeEnum::CallCommonNativeStatic_f4_f8_3:
  7920. {
  7921. uint32_t __method = *(uint32_t*)(ip + 12);
  7922. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7923. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7924. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7925. uint16_t __ret = *(uint16_t*)(ip + 8);
  7926. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7927. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7928. typedef float(*_NativeMethod_)(double, double, double, MethodInfo*);
  7929. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  7930. ip += 16;
  7931. continue;
  7932. }
  7933. case HiOpcodeEnum::CallCommonNativeStatic_f4_f8_4:
  7934. {
  7935. uint32_t __method = *(uint32_t*)(ip + 12);
  7936. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7937. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7938. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7939. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7940. uint16_t __ret = *(uint16_t*)(ip + 10);
  7941. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7942. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7943. typedef float(*_NativeMethod_)(double, double, double, double, MethodInfo*);
  7944. *(float*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  7945. ip += 16;
  7946. continue;
  7947. }
  7948. case HiOpcodeEnum::CallCommonNativeStatic_f8_i4_1:
  7949. {
  7950. uint32_t __method = *(uint32_t*)(ip + 8);
  7951. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7952. uint16_t __ret = *(uint16_t*)(ip + 4);
  7953. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7954. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7955. typedef double(*_NativeMethod_)(int32_t, MethodInfo*);
  7956. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), _resolvedMethod);
  7957. ip += 16;
  7958. continue;
  7959. }
  7960. case HiOpcodeEnum::CallCommonNativeStatic_f8_i4_2:
  7961. {
  7962. uint32_t __method = *(uint32_t*)(ip + 8);
  7963. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7964. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7965. uint16_t __ret = *(uint16_t*)(ip + 6);
  7966. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7967. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7968. typedef double(*_NativeMethod_)(int32_t, int32_t, MethodInfo*);
  7969. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), _resolvedMethod);
  7970. ip += 16;
  7971. continue;
  7972. }
  7973. case HiOpcodeEnum::CallCommonNativeStatic_f8_i4_3:
  7974. {
  7975. uint32_t __method = *(uint32_t*)(ip + 12);
  7976. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7977. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7978. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7979. uint16_t __ret = *(uint16_t*)(ip + 8);
  7980. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7981. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7982. typedef double(*_NativeMethod_)(int32_t, int32_t, int32_t, MethodInfo*);
  7983. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), _resolvedMethod);
  7984. ip += 16;
  7985. continue;
  7986. }
  7987. case HiOpcodeEnum::CallCommonNativeStatic_f8_i4_4:
  7988. {
  7989. uint32_t __method = *(uint32_t*)(ip + 12);
  7990. uint16_t __param0 = *(uint16_t*)(ip + 2);
  7991. uint16_t __param1 = *(uint16_t*)(ip + 4);
  7992. uint16_t __param2 = *(uint16_t*)(ip + 6);
  7993. uint16_t __param3 = *(uint16_t*)(ip + 8);
  7994. uint16_t __ret = *(uint16_t*)(ip + 10);
  7995. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  7996. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  7997. typedef double(*_NativeMethod_)(int32_t, int32_t, int32_t, int32_t, MethodInfo*);
  7998. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int32_t*)(localVarBase + __param0)), (*(int32_t*)(localVarBase + __param1)), (*(int32_t*)(localVarBase + __param2)), (*(int32_t*)(localVarBase + __param3)), _resolvedMethod);
  7999. ip += 16;
  8000. continue;
  8001. }
  8002. case HiOpcodeEnum::CallCommonNativeStatic_f8_i8_1:
  8003. {
  8004. uint32_t __method = *(uint32_t*)(ip + 8);
  8005. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8006. uint16_t __ret = *(uint16_t*)(ip + 4);
  8007. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8008. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8009. typedef double(*_NativeMethod_)(int64_t, MethodInfo*);
  8010. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), _resolvedMethod);
  8011. ip += 16;
  8012. continue;
  8013. }
  8014. case HiOpcodeEnum::CallCommonNativeStatic_f8_i8_2:
  8015. {
  8016. uint32_t __method = *(uint32_t*)(ip + 8);
  8017. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8018. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8019. uint16_t __ret = *(uint16_t*)(ip + 6);
  8020. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8021. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8022. typedef double(*_NativeMethod_)(int64_t, int64_t, MethodInfo*);
  8023. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), _resolvedMethod);
  8024. ip += 16;
  8025. continue;
  8026. }
  8027. case HiOpcodeEnum::CallCommonNativeStatic_f8_i8_3:
  8028. {
  8029. uint32_t __method = *(uint32_t*)(ip + 12);
  8030. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8031. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8032. uint16_t __param2 = *(uint16_t*)(ip + 6);
  8033. uint16_t __ret = *(uint16_t*)(ip + 8);
  8034. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8035. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8036. typedef double(*_NativeMethod_)(int64_t, int64_t, int64_t, MethodInfo*);
  8037. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), _resolvedMethod);
  8038. ip += 16;
  8039. continue;
  8040. }
  8041. case HiOpcodeEnum::CallCommonNativeStatic_f8_i8_4:
  8042. {
  8043. uint32_t __method = *(uint32_t*)(ip + 12);
  8044. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8045. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8046. uint16_t __param2 = *(uint16_t*)(ip + 6);
  8047. uint16_t __param3 = *(uint16_t*)(ip + 8);
  8048. uint16_t __ret = *(uint16_t*)(ip + 10);
  8049. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8050. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8051. typedef double(*_NativeMethod_)(int64_t, int64_t, int64_t, int64_t, MethodInfo*);
  8052. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(int64_t*)(localVarBase + __param0)), (*(int64_t*)(localVarBase + __param1)), (*(int64_t*)(localVarBase + __param2)), (*(int64_t*)(localVarBase + __param3)), _resolvedMethod);
  8053. ip += 16;
  8054. continue;
  8055. }
  8056. case HiOpcodeEnum::CallCommonNativeStatic_f8_f4_1:
  8057. {
  8058. uint32_t __method = *(uint32_t*)(ip + 8);
  8059. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8060. uint16_t __ret = *(uint16_t*)(ip + 4);
  8061. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8062. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8063. typedef double(*_NativeMethod_)(float, MethodInfo*);
  8064. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), _resolvedMethod);
  8065. ip += 16;
  8066. continue;
  8067. }
  8068. case HiOpcodeEnum::CallCommonNativeStatic_f8_f4_2:
  8069. {
  8070. uint32_t __method = *(uint32_t*)(ip + 8);
  8071. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8072. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8073. uint16_t __ret = *(uint16_t*)(ip + 6);
  8074. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8075. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8076. typedef double(*_NativeMethod_)(float, float, MethodInfo*);
  8077. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), _resolvedMethod);
  8078. ip += 16;
  8079. continue;
  8080. }
  8081. case HiOpcodeEnum::CallCommonNativeStatic_f8_f4_3:
  8082. {
  8083. uint32_t __method = *(uint32_t*)(ip + 12);
  8084. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8085. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8086. uint16_t __param2 = *(uint16_t*)(ip + 6);
  8087. uint16_t __ret = *(uint16_t*)(ip + 8);
  8088. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8089. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8090. typedef double(*_NativeMethod_)(float, float, float, MethodInfo*);
  8091. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), _resolvedMethod);
  8092. ip += 16;
  8093. continue;
  8094. }
  8095. case HiOpcodeEnum::CallCommonNativeStatic_f8_f4_4:
  8096. {
  8097. uint32_t __method = *(uint32_t*)(ip + 12);
  8098. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8099. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8100. uint16_t __param2 = *(uint16_t*)(ip + 6);
  8101. uint16_t __param3 = *(uint16_t*)(ip + 8);
  8102. uint16_t __ret = *(uint16_t*)(ip + 10);
  8103. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8104. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8105. typedef double(*_NativeMethod_)(float, float, float, float, MethodInfo*);
  8106. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(float*)(localVarBase + __param0)), (*(float*)(localVarBase + __param1)), (*(float*)(localVarBase + __param2)), (*(float*)(localVarBase + __param3)), _resolvedMethod);
  8107. ip += 16;
  8108. continue;
  8109. }
  8110. case HiOpcodeEnum::CallCommonNativeStatic_f8_f8_1:
  8111. {
  8112. uint32_t __method = *(uint32_t*)(ip + 8);
  8113. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8114. uint16_t __ret = *(uint16_t*)(ip + 4);
  8115. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8116. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8117. typedef double(*_NativeMethod_)(double, MethodInfo*);
  8118. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), _resolvedMethod);
  8119. ip += 16;
  8120. continue;
  8121. }
  8122. case HiOpcodeEnum::CallCommonNativeStatic_f8_f8_2:
  8123. {
  8124. uint32_t __method = *(uint32_t*)(ip + 8);
  8125. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8126. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8127. uint16_t __ret = *(uint16_t*)(ip + 6);
  8128. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8129. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8130. typedef double(*_NativeMethod_)(double, double, MethodInfo*);
  8131. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), _resolvedMethod);
  8132. ip += 16;
  8133. continue;
  8134. }
  8135. case HiOpcodeEnum::CallCommonNativeStatic_f8_f8_3:
  8136. {
  8137. uint32_t __method = *(uint32_t*)(ip + 12);
  8138. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8139. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8140. uint16_t __param2 = *(uint16_t*)(ip + 6);
  8141. uint16_t __ret = *(uint16_t*)(ip + 8);
  8142. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8143. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8144. typedef double(*_NativeMethod_)(double, double, double, MethodInfo*);
  8145. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), _resolvedMethod);
  8146. ip += 16;
  8147. continue;
  8148. }
  8149. case HiOpcodeEnum::CallCommonNativeStatic_f8_f8_4:
  8150. {
  8151. uint32_t __method = *(uint32_t*)(ip + 12);
  8152. uint16_t __param0 = *(uint16_t*)(ip + 2);
  8153. uint16_t __param1 = *(uint16_t*)(ip + 4);
  8154. uint16_t __param2 = *(uint16_t*)(ip + 6);
  8155. uint16_t __param3 = *(uint16_t*)(ip + 8);
  8156. uint16_t __ret = *(uint16_t*)(ip + 10);
  8157. MethodInfo* _resolvedMethod = ((MethodInfo*)imi->resolveDatas[__method]);
  8158. RuntimeInitClassCCtorWithoutInitClass(_resolvedMethod);
  8159. typedef double(*_NativeMethod_)(double, double, double, double, MethodInfo*);
  8160. *(double*)(void*)(localVarBase + __ret) = ((_NativeMethod_)_resolvedMethod->methodPointerCallByInterp)((*(double*)(localVarBase + __param0)), (*(double*)(localVarBase + __param1)), (*(double*)(localVarBase + __param2)), (*(double*)(localVarBase + __param3)), _resolvedMethod);
  8161. ip += 16;
  8162. continue;
  8163. }
  8164. //!!!}}FUNCTION
  8165. #pragma endregion
  8166. #pragma region OBJECT
  8167. //!!!{{OBJECT
  8168. case HiOpcodeEnum::BoxVarVar:
  8169. {
  8170. uint16_t __dst = *(uint16_t*)(ip + 2);
  8171. uint16_t __data = *(uint16_t*)(ip + 4);
  8172. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  8173. (*(Il2CppObject**)(localVarBase + __dst)) = il2cpp::vm::Object::Box(__klass, (void*)(localVarBase + __data));
  8174. ip += 16;
  8175. continue;
  8176. }
  8177. case HiOpcodeEnum::UnBoxVarVar:
  8178. {
  8179. uint16_t __addr = *(uint16_t*)(ip + 2);
  8180. uint16_t __obj = *(uint16_t*)(ip + 4);
  8181. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  8182. (*(void**)(localVarBase + __addr)) = HiUnbox((*(Il2CppObject**)(localVarBase + __obj)), __klass);
  8183. ip += 16;
  8184. continue;
  8185. }
  8186. case HiOpcodeEnum::UnBoxAnyVarVar:
  8187. {
  8188. uint16_t __dst = *(uint16_t*)(ip + 2);
  8189. uint16_t __obj = *(uint16_t*)(ip + 4);
  8190. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  8191. HiUnboxAny2StackObject((*(Il2CppObject**)(localVarBase + __obj)), __klass, (void*)(localVarBase + __dst));
  8192. ip += 16;
  8193. continue;
  8194. }
  8195. case HiOpcodeEnum::CastclassVar:
  8196. {
  8197. uint16_t __obj = *(uint16_t*)(ip + 2);
  8198. uint32_t __klass = *(uint32_t*)(ip + 4);
  8199. HiCastClass((*(Il2CppObject**)(localVarBase + __obj)), ((Il2CppClass*)imi->resolveDatas[__klass]));
  8200. ip += 8;
  8201. continue;
  8202. }
  8203. case HiOpcodeEnum::IsInstVar:
  8204. {
  8205. uint16_t __obj = *(uint16_t*)(ip + 2);
  8206. uint32_t __klass = *(uint32_t*)(ip + 4);
  8207. (*(Il2CppObject**)(localVarBase + __obj)) = il2cpp::vm::Object::IsInst((*(Il2CppObject**)(localVarBase + __obj)), ((Il2CppClass*)imi->resolveDatas[__klass]));
  8208. ip += 8;
  8209. continue;
  8210. }
  8211. case HiOpcodeEnum::LdtokenVar:
  8212. {
  8213. uint16_t __runtimeHandle = *(uint16_t*)(ip + 2);
  8214. void* __token = ((void*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  8215. (*(void**)(localVarBase + __runtimeHandle)) = __token;
  8216. ip += 8;
  8217. continue;
  8218. }
  8219. case HiOpcodeEnum::MakeRefVarVar:
  8220. {
  8221. uint16_t __dst = *(uint16_t*)(ip + 2);
  8222. uint16_t __data = *(uint16_t*)(ip + 4);
  8223. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  8224. (*(Il2CppTypedRef*)(localVarBase + __dst)) = MAKE_TYPEDREFERENCE(__klass, (*(void**)(localVarBase + __data)));
  8225. ip += 16;
  8226. continue;
  8227. }
  8228. case HiOpcodeEnum::RefAnyTypeVarVar:
  8229. {
  8230. uint16_t __dst = *(uint16_t*)(ip + 2);
  8231. uint16_t __typedRef = *(uint16_t*)(ip + 4);
  8232. (*(void**)(localVarBase + __dst)) = RefAnyType((*(Il2CppTypedRef*)(localVarBase + __typedRef)));
  8233. ip += 8;
  8234. continue;
  8235. }
  8236. case HiOpcodeEnum::RefAnyValueVarVar:
  8237. {
  8238. uint16_t __addr = *(uint16_t*)(ip + 2);
  8239. uint16_t __typedRef = *(uint16_t*)(ip + 4);
  8240. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  8241. (*(void**)(localVarBase + __addr)) = RefAnyValue((*(Il2CppTypedRef*)(localVarBase + __typedRef)), __klass);
  8242. ip += 16;
  8243. continue;
  8244. }
  8245. case HiOpcodeEnum::CpobjVarVar_ref:
  8246. {
  8247. uint16_t __dst = *(uint16_t*)(ip + 2);
  8248. uint16_t __src = *(uint16_t*)(ip + 4);
  8249. void** _dstAddr_ = (void**)((*(void**)(localVarBase + __dst)));
  8250. *_dstAddr_ = *(void**)(*(void**)(localVarBase + __src));
  8251. HYBRIDCLR_SET_WRITE_BARRIER(_dstAddr_);
  8252. ip += 8;
  8253. continue;
  8254. }
  8255. case HiOpcodeEnum::CpobjVarVar_1:
  8256. {
  8257. uint16_t __dst = *(uint16_t*)(ip + 2);
  8258. uint16_t __src = *(uint16_t*)(ip + 4);
  8259. Copy1((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8260. ip += 8;
  8261. continue;
  8262. }
  8263. case HiOpcodeEnum::CpobjVarVar_2:
  8264. {
  8265. uint16_t __dst = *(uint16_t*)(ip + 2);
  8266. uint16_t __src = *(uint16_t*)(ip + 4);
  8267. Copy2((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8268. ip += 8;
  8269. continue;
  8270. }
  8271. case HiOpcodeEnum::CpobjVarVar_4:
  8272. {
  8273. uint16_t __dst = *(uint16_t*)(ip + 2);
  8274. uint16_t __src = *(uint16_t*)(ip + 4);
  8275. Copy4((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8276. ip += 8;
  8277. continue;
  8278. }
  8279. case HiOpcodeEnum::CpobjVarVar_8:
  8280. {
  8281. uint16_t __dst = *(uint16_t*)(ip + 2);
  8282. uint16_t __src = *(uint16_t*)(ip + 4);
  8283. Copy8((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8284. ip += 8;
  8285. continue;
  8286. }
  8287. case HiOpcodeEnum::CpobjVarVar_12:
  8288. {
  8289. uint16_t __dst = *(uint16_t*)(ip + 2);
  8290. uint16_t __src = *(uint16_t*)(ip + 4);
  8291. Copy12((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8292. ip += 8;
  8293. continue;
  8294. }
  8295. case HiOpcodeEnum::CpobjVarVar_16:
  8296. {
  8297. uint16_t __dst = *(uint16_t*)(ip + 2);
  8298. uint16_t __src = *(uint16_t*)(ip + 4);
  8299. Copy16((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8300. ip += 8;
  8301. continue;
  8302. }
  8303. case HiOpcodeEnum::CpobjVarVar_20:
  8304. {
  8305. uint16_t __dst = *(uint16_t*)(ip + 2);
  8306. uint16_t __src = *(uint16_t*)(ip + 4);
  8307. Copy20((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8308. ip += 8;
  8309. continue;
  8310. }
  8311. case HiOpcodeEnum::CpobjVarVar_24:
  8312. {
  8313. uint16_t __dst = *(uint16_t*)(ip + 2);
  8314. uint16_t __src = *(uint16_t*)(ip + 4);
  8315. Copy24((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8316. ip += 8;
  8317. continue;
  8318. }
  8319. case HiOpcodeEnum::CpobjVarVar_28:
  8320. {
  8321. uint16_t __dst = *(uint16_t*)(ip + 2);
  8322. uint16_t __src = *(uint16_t*)(ip + 4);
  8323. Copy28((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8324. ip += 8;
  8325. continue;
  8326. }
  8327. case HiOpcodeEnum::CpobjVarVar_32:
  8328. {
  8329. uint16_t __dst = *(uint16_t*)(ip + 2);
  8330. uint16_t __src = *(uint16_t*)(ip + 4);
  8331. Copy32((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)));
  8332. ip += 8;
  8333. continue;
  8334. }
  8335. case HiOpcodeEnum::CpobjVarVar_n_2:
  8336. {
  8337. uint16_t __dst = *(uint16_t*)(ip + 2);
  8338. uint16_t __src = *(uint16_t*)(ip + 4);
  8339. uint16_t __size = *(uint16_t*)(ip + 6);
  8340. std::memmove((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)), __size);
  8341. ip += 8;
  8342. continue;
  8343. }
  8344. case HiOpcodeEnum::CpobjVarVar_n_4:
  8345. {
  8346. uint16_t __dst = *(uint16_t*)(ip + 2);
  8347. uint16_t __src = *(uint16_t*)(ip + 4);
  8348. uint32_t __size = *(uint32_t*)(ip + 8);
  8349. std::memmove((*(void**)(localVarBase + __dst)), (*(void**)(localVarBase + __src)), __size);
  8350. ip += 16;
  8351. continue;
  8352. }
  8353. case HiOpcodeEnum::CpobjVarVar_WriteBarrier_n_2:
  8354. {
  8355. uint16_t __dst = *(uint16_t*)(ip + 2);
  8356. uint16_t __src = *(uint16_t*)(ip + 4);
  8357. uint16_t __size = *(uint16_t*)(ip + 6);
  8358. void* _dstAddr_ = (void*)((*(void**)(localVarBase + __dst)));
  8359. std::memmove(_dstAddr_, (*(void**)(localVarBase + __src)), __size);
  8360. HYBRIDCLR_SET_WRITE_BARRIER((void**)_dstAddr_, __size);
  8361. ip += 8;
  8362. continue;
  8363. }
  8364. case HiOpcodeEnum::CpobjVarVar_WriteBarrier_n_4:
  8365. {
  8366. uint16_t __dst = *(uint16_t*)(ip + 2);
  8367. uint16_t __src = *(uint16_t*)(ip + 4);
  8368. uint32_t __size = *(uint32_t*)(ip + 8);
  8369. void* _dstAddr_ = (void*)((*(void**)(localVarBase + __dst)));
  8370. std::memmove(_dstAddr_, (*(void**)(localVarBase + __src)), __size);
  8371. HYBRIDCLR_SET_WRITE_BARRIER((void**)_dstAddr_, __size);
  8372. ip += 16;
  8373. continue;
  8374. }
  8375. case HiOpcodeEnum::LdobjVarVar_ref:
  8376. {
  8377. uint16_t __dst = *(uint16_t*)(ip + 2);
  8378. uint16_t __src = *(uint16_t*)(ip + 4);
  8379. *(void**)(void*)(localVarBase + __dst) = (*(void**)*(void**)(localVarBase + __src));
  8380. ip += 8;
  8381. continue;
  8382. }
  8383. case HiOpcodeEnum::LdobjVarVar_1:
  8384. {
  8385. uint16_t __dst = *(uint16_t*)(ip + 2);
  8386. uint16_t __src = *(uint16_t*)(ip + 4);
  8387. Copy1((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8388. ip += 8;
  8389. continue;
  8390. }
  8391. case HiOpcodeEnum::LdobjVarVar_2:
  8392. {
  8393. uint16_t __dst = *(uint16_t*)(ip + 2);
  8394. uint16_t __src = *(uint16_t*)(ip + 4);
  8395. Copy2((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8396. ip += 8;
  8397. continue;
  8398. }
  8399. case HiOpcodeEnum::LdobjVarVar_4:
  8400. {
  8401. uint16_t __dst = *(uint16_t*)(ip + 2);
  8402. uint16_t __src = *(uint16_t*)(ip + 4);
  8403. Copy4((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8404. ip += 8;
  8405. continue;
  8406. }
  8407. case HiOpcodeEnum::LdobjVarVar_8:
  8408. {
  8409. uint16_t __dst = *(uint16_t*)(ip + 2);
  8410. uint16_t __src = *(uint16_t*)(ip + 4);
  8411. Copy8((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8412. ip += 8;
  8413. continue;
  8414. }
  8415. case HiOpcodeEnum::LdobjVarVar_12:
  8416. {
  8417. uint16_t __dst = *(uint16_t*)(ip + 2);
  8418. uint16_t __src = *(uint16_t*)(ip + 4);
  8419. Copy12((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8420. ip += 8;
  8421. continue;
  8422. }
  8423. case HiOpcodeEnum::LdobjVarVar_16:
  8424. {
  8425. uint16_t __dst = *(uint16_t*)(ip + 2);
  8426. uint16_t __src = *(uint16_t*)(ip + 4);
  8427. Copy16((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8428. ip += 8;
  8429. continue;
  8430. }
  8431. case HiOpcodeEnum::LdobjVarVar_20:
  8432. {
  8433. uint16_t __dst = *(uint16_t*)(ip + 2);
  8434. uint16_t __src = *(uint16_t*)(ip + 4);
  8435. Copy20((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8436. ip += 8;
  8437. continue;
  8438. }
  8439. case HiOpcodeEnum::LdobjVarVar_24:
  8440. {
  8441. uint16_t __dst = *(uint16_t*)(ip + 2);
  8442. uint16_t __src = *(uint16_t*)(ip + 4);
  8443. Copy24((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8444. ip += 8;
  8445. continue;
  8446. }
  8447. case HiOpcodeEnum::LdobjVarVar_28:
  8448. {
  8449. uint16_t __dst = *(uint16_t*)(ip + 2);
  8450. uint16_t __src = *(uint16_t*)(ip + 4);
  8451. Copy28((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8452. ip += 8;
  8453. continue;
  8454. }
  8455. case HiOpcodeEnum::LdobjVarVar_32:
  8456. {
  8457. uint16_t __dst = *(uint16_t*)(ip + 2);
  8458. uint16_t __src = *(uint16_t*)(ip + 4);
  8459. Copy32((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)));
  8460. ip += 8;
  8461. continue;
  8462. }
  8463. case HiOpcodeEnum::LdobjVarVar_n_4:
  8464. {
  8465. uint16_t __dst = *(uint16_t*)(ip + 2);
  8466. uint16_t __src = *(uint16_t*)(ip + 4);
  8467. uint32_t __size = *(uint32_t*)(ip + 8);
  8468. std::memmove((void*)(localVarBase + __dst), (*(void**)(localVarBase + __src)), __size);
  8469. ip += 16;
  8470. continue;
  8471. }
  8472. case HiOpcodeEnum::StobjVarVar_ref:
  8473. {
  8474. uint16_t __dst = *(uint16_t*)(ip + 2);
  8475. uint16_t __src = *(uint16_t*)(ip + 4);
  8476. void** _dstAddr_ = (void**)((*(void**)(localVarBase + __dst)));
  8477. *_dstAddr_ = (*(Il2CppObject**)(localVarBase + __src));
  8478. HYBRIDCLR_SET_WRITE_BARRIER(_dstAddr_);
  8479. ip += 8;
  8480. continue;
  8481. }
  8482. case HiOpcodeEnum::StobjVarVar_1:
  8483. {
  8484. uint16_t __dst = *(uint16_t*)(ip + 2);
  8485. uint16_t __src = *(uint16_t*)(ip + 4);
  8486. Copy1((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8487. ip += 8;
  8488. continue;
  8489. }
  8490. case HiOpcodeEnum::StobjVarVar_2:
  8491. {
  8492. uint16_t __dst = *(uint16_t*)(ip + 2);
  8493. uint16_t __src = *(uint16_t*)(ip + 4);
  8494. Copy2((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8495. ip += 8;
  8496. continue;
  8497. }
  8498. case HiOpcodeEnum::StobjVarVar_4:
  8499. {
  8500. uint16_t __dst = *(uint16_t*)(ip + 2);
  8501. uint16_t __src = *(uint16_t*)(ip + 4);
  8502. Copy4((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8503. ip += 8;
  8504. continue;
  8505. }
  8506. case HiOpcodeEnum::StobjVarVar_8:
  8507. {
  8508. uint16_t __dst = *(uint16_t*)(ip + 2);
  8509. uint16_t __src = *(uint16_t*)(ip + 4);
  8510. Copy8((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8511. ip += 8;
  8512. continue;
  8513. }
  8514. case HiOpcodeEnum::StobjVarVar_12:
  8515. {
  8516. uint16_t __dst = *(uint16_t*)(ip + 2);
  8517. uint16_t __src = *(uint16_t*)(ip + 4);
  8518. Copy12((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8519. ip += 8;
  8520. continue;
  8521. }
  8522. case HiOpcodeEnum::StobjVarVar_16:
  8523. {
  8524. uint16_t __dst = *(uint16_t*)(ip + 2);
  8525. uint16_t __src = *(uint16_t*)(ip + 4);
  8526. Copy16((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8527. ip += 8;
  8528. continue;
  8529. }
  8530. case HiOpcodeEnum::StobjVarVar_20:
  8531. {
  8532. uint16_t __dst = *(uint16_t*)(ip + 2);
  8533. uint16_t __src = *(uint16_t*)(ip + 4);
  8534. Copy20((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8535. ip += 8;
  8536. continue;
  8537. }
  8538. case HiOpcodeEnum::StobjVarVar_24:
  8539. {
  8540. uint16_t __dst = *(uint16_t*)(ip + 2);
  8541. uint16_t __src = *(uint16_t*)(ip + 4);
  8542. Copy24((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8543. ip += 8;
  8544. continue;
  8545. }
  8546. case HiOpcodeEnum::StobjVarVar_28:
  8547. {
  8548. uint16_t __dst = *(uint16_t*)(ip + 2);
  8549. uint16_t __src = *(uint16_t*)(ip + 4);
  8550. Copy28((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8551. ip += 8;
  8552. continue;
  8553. }
  8554. case HiOpcodeEnum::StobjVarVar_32:
  8555. {
  8556. uint16_t __dst = *(uint16_t*)(ip + 2);
  8557. uint16_t __src = *(uint16_t*)(ip + 4);
  8558. Copy32((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src));
  8559. ip += 8;
  8560. continue;
  8561. }
  8562. case HiOpcodeEnum::StobjVarVar_n_4:
  8563. {
  8564. uint16_t __dst = *(uint16_t*)(ip + 2);
  8565. uint16_t __src = *(uint16_t*)(ip + 4);
  8566. uint32_t __size = *(uint32_t*)(ip + 8);
  8567. std::memmove((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __src), __size);
  8568. ip += 16;
  8569. continue;
  8570. }
  8571. case HiOpcodeEnum::StobjVarVar_WriteBarrier_n_4:
  8572. {
  8573. uint16_t __dst = *(uint16_t*)(ip + 2);
  8574. uint16_t __src = *(uint16_t*)(ip + 4);
  8575. uint32_t __size = *(uint32_t*)(ip + 8);
  8576. void* _dstAddr_ = (*(void**)(localVarBase + __dst));
  8577. std::memmove(_dstAddr_, (void*)(localVarBase + __src), __size);
  8578. HYBRIDCLR_SET_WRITE_BARRIER((void**)_dstAddr_, __size);
  8579. ip += 16;
  8580. continue;
  8581. }
  8582. case HiOpcodeEnum::InitobjVar_ref:
  8583. {
  8584. uint16_t __obj = *(uint16_t*)(ip + 2);
  8585. void* _objAddr_ = (*(void**)(localVarBase + __obj));
  8586. CHECK_NOT_NULL_THROW(_objAddr_);
  8587. *(void**)_objAddr_ = nullptr;
  8588. HYBRIDCLR_SET_WRITE_BARRIER((void**)_objAddr_);
  8589. ip += 8;
  8590. continue;
  8591. }
  8592. case HiOpcodeEnum::InitobjVar_1:
  8593. {
  8594. uint16_t __obj = *(uint16_t*)(ip + 2);
  8595. InitDefault1((*(void**)(localVarBase + __obj)));
  8596. ip += 8;
  8597. continue;
  8598. }
  8599. case HiOpcodeEnum::InitobjVar_2:
  8600. {
  8601. uint16_t __obj = *(uint16_t*)(ip + 2);
  8602. InitDefault2((*(void**)(localVarBase + __obj)));
  8603. ip += 8;
  8604. continue;
  8605. }
  8606. case HiOpcodeEnum::InitobjVar_4:
  8607. {
  8608. uint16_t __obj = *(uint16_t*)(ip + 2);
  8609. InitDefault4((*(void**)(localVarBase + __obj)));
  8610. ip += 8;
  8611. continue;
  8612. }
  8613. case HiOpcodeEnum::InitobjVar_8:
  8614. {
  8615. uint16_t __obj = *(uint16_t*)(ip + 2);
  8616. InitDefault8((*(void**)(localVarBase + __obj)));
  8617. ip += 8;
  8618. continue;
  8619. }
  8620. case HiOpcodeEnum::InitobjVar_12:
  8621. {
  8622. uint16_t __obj = *(uint16_t*)(ip + 2);
  8623. InitDefault12((*(void**)(localVarBase + __obj)));
  8624. ip += 8;
  8625. continue;
  8626. }
  8627. case HiOpcodeEnum::InitobjVar_16:
  8628. {
  8629. uint16_t __obj = *(uint16_t*)(ip + 2);
  8630. InitDefault16((*(void**)(localVarBase + __obj)));
  8631. ip += 8;
  8632. continue;
  8633. }
  8634. case HiOpcodeEnum::InitobjVar_20:
  8635. {
  8636. uint16_t __obj = *(uint16_t*)(ip + 2);
  8637. InitDefault20((*(void**)(localVarBase + __obj)));
  8638. ip += 8;
  8639. continue;
  8640. }
  8641. case HiOpcodeEnum::InitobjVar_24:
  8642. {
  8643. uint16_t __obj = *(uint16_t*)(ip + 2);
  8644. InitDefault24((*(void**)(localVarBase + __obj)));
  8645. ip += 8;
  8646. continue;
  8647. }
  8648. case HiOpcodeEnum::InitobjVar_28:
  8649. {
  8650. uint16_t __obj = *(uint16_t*)(ip + 2);
  8651. InitDefault28((*(void**)(localVarBase + __obj)));
  8652. ip += 8;
  8653. continue;
  8654. }
  8655. case HiOpcodeEnum::InitobjVar_32:
  8656. {
  8657. uint16_t __obj = *(uint16_t*)(ip + 2);
  8658. InitDefault32((*(void**)(localVarBase + __obj)));
  8659. ip += 8;
  8660. continue;
  8661. }
  8662. case HiOpcodeEnum::InitobjVar_n_2:
  8663. {
  8664. uint16_t __obj = *(uint16_t*)(ip + 2);
  8665. uint16_t __size = *(uint16_t*)(ip + 4);
  8666. InitDefaultN((*(void**)(localVarBase + __obj)), __size);
  8667. ip += 8;
  8668. continue;
  8669. }
  8670. case HiOpcodeEnum::InitobjVar_n_4:
  8671. {
  8672. uint16_t __obj = *(uint16_t*)(ip + 2);
  8673. uint32_t __size = *(uint32_t*)(ip + 4);
  8674. InitDefaultN((*(void**)(localVarBase + __obj)), __size);
  8675. ip += 8;
  8676. continue;
  8677. }
  8678. case HiOpcodeEnum::InitobjVar_WriteBarrier_n_2:
  8679. {
  8680. uint16_t __obj = *(uint16_t*)(ip + 2);
  8681. uint16_t __size = *(uint16_t*)(ip + 4);
  8682. void* _objAddr_ = (*(void**)(localVarBase + __obj));
  8683. InitDefaultN(_objAddr_, __size);
  8684. HYBRIDCLR_SET_WRITE_BARRIER((void**)_objAddr_, __size);
  8685. ip += 8;
  8686. continue;
  8687. }
  8688. case HiOpcodeEnum::InitobjVar_WriteBarrier_n_4:
  8689. {
  8690. uint16_t __obj = *(uint16_t*)(ip + 2);
  8691. uint32_t __size = *(uint32_t*)(ip + 4);
  8692. void* _objAddr_ = (*(void**)(localVarBase + __obj));
  8693. InitDefaultN(_objAddr_, __size);
  8694. HYBRIDCLR_SET_WRITE_BARRIER((void**)_objAddr_, __size);
  8695. ip += 8;
  8696. continue;
  8697. }
  8698. case HiOpcodeEnum::LdstrVar:
  8699. {
  8700. uint16_t __dst = *(uint16_t*)(ip + 2);
  8701. uint32_t __str = *(uint32_t*)(ip + 4);
  8702. (*(Il2CppString**)(localVarBase + __dst)) = ((Il2CppString*)imi->resolveDatas[__str]);
  8703. ip += 8;
  8704. continue;
  8705. }
  8706. case HiOpcodeEnum::LdfldVarVar_i1:
  8707. {
  8708. uint16_t __dst = *(uint16_t*)(ip + 2);
  8709. uint16_t __obj = *(uint16_t*)(ip + 4);
  8710. uint16_t __offset = *(uint16_t*)(ip + 6);
  8711. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8712. (*(int32_t*)(localVarBase + __dst)) = *(int8_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8713. ip += 8;
  8714. continue;
  8715. }
  8716. case HiOpcodeEnum::LdfldVarVar_u1:
  8717. {
  8718. uint16_t __dst = *(uint16_t*)(ip + 2);
  8719. uint16_t __obj = *(uint16_t*)(ip + 4);
  8720. uint16_t __offset = *(uint16_t*)(ip + 6);
  8721. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8722. (*(int32_t*)(localVarBase + __dst)) = *(uint8_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8723. ip += 8;
  8724. continue;
  8725. }
  8726. case HiOpcodeEnum::LdfldVarVar_i2:
  8727. {
  8728. uint16_t __dst = *(uint16_t*)(ip + 2);
  8729. uint16_t __obj = *(uint16_t*)(ip + 4);
  8730. uint16_t __offset = *(uint16_t*)(ip + 6);
  8731. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8732. (*(int32_t*)(localVarBase + __dst)) = *(int16_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8733. ip += 8;
  8734. continue;
  8735. }
  8736. case HiOpcodeEnum::LdfldVarVar_u2:
  8737. {
  8738. uint16_t __dst = *(uint16_t*)(ip + 2);
  8739. uint16_t __obj = *(uint16_t*)(ip + 4);
  8740. uint16_t __offset = *(uint16_t*)(ip + 6);
  8741. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8742. (*(int32_t*)(localVarBase + __dst)) = *(uint16_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8743. ip += 8;
  8744. continue;
  8745. }
  8746. case HiOpcodeEnum::LdfldVarVar_i4:
  8747. {
  8748. uint16_t __dst = *(uint16_t*)(ip + 2);
  8749. uint16_t __obj = *(uint16_t*)(ip + 4);
  8750. uint16_t __offset = *(uint16_t*)(ip + 6);
  8751. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8752. (*(int32_t*)(localVarBase + __dst)) = *(int32_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8753. ip += 8;
  8754. continue;
  8755. }
  8756. case HiOpcodeEnum::LdfldVarVar_u4:
  8757. {
  8758. uint16_t __dst = *(uint16_t*)(ip + 2);
  8759. uint16_t __obj = *(uint16_t*)(ip + 4);
  8760. uint16_t __offset = *(uint16_t*)(ip + 6);
  8761. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8762. (*(int32_t*)(localVarBase + __dst)) = *(uint32_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8763. ip += 8;
  8764. continue;
  8765. }
  8766. case HiOpcodeEnum::LdfldVarVar_i8:
  8767. {
  8768. uint16_t __dst = *(uint16_t*)(ip + 2);
  8769. uint16_t __obj = *(uint16_t*)(ip + 4);
  8770. uint16_t __offset = *(uint16_t*)(ip + 6);
  8771. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8772. (*(int64_t*)(localVarBase + __dst)) = *(int64_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8773. ip += 8;
  8774. continue;
  8775. }
  8776. case HiOpcodeEnum::LdfldVarVar_u8:
  8777. {
  8778. uint16_t __dst = *(uint16_t*)(ip + 2);
  8779. uint16_t __obj = *(uint16_t*)(ip + 4);
  8780. uint16_t __offset = *(uint16_t*)(ip + 6);
  8781. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8782. (*(int64_t*)(localVarBase + __dst)) = *(uint64_t*)((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8783. ip += 8;
  8784. continue;
  8785. }
  8786. case HiOpcodeEnum::LdfldVarVar_size_8:
  8787. {
  8788. uint16_t __dst = *(uint16_t*)(ip + 2);
  8789. uint16_t __obj = *(uint16_t*)(ip + 4);
  8790. uint16_t __offset = *(uint16_t*)(ip + 6);
  8791. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8792. Copy8((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8793. ip += 8;
  8794. continue;
  8795. }
  8796. case HiOpcodeEnum::LdfldVarVar_size_12:
  8797. {
  8798. uint16_t __dst = *(uint16_t*)(ip + 2);
  8799. uint16_t __obj = *(uint16_t*)(ip + 4);
  8800. uint16_t __offset = *(uint16_t*)(ip + 6);
  8801. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8802. Copy12((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8803. ip += 8;
  8804. continue;
  8805. }
  8806. case HiOpcodeEnum::LdfldVarVar_size_16:
  8807. {
  8808. uint16_t __dst = *(uint16_t*)(ip + 2);
  8809. uint16_t __obj = *(uint16_t*)(ip + 4);
  8810. uint16_t __offset = *(uint16_t*)(ip + 6);
  8811. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8812. Copy16((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8813. ip += 8;
  8814. continue;
  8815. }
  8816. case HiOpcodeEnum::LdfldVarVar_size_20:
  8817. {
  8818. uint16_t __dst = *(uint16_t*)(ip + 2);
  8819. uint16_t __obj = *(uint16_t*)(ip + 4);
  8820. uint16_t __offset = *(uint16_t*)(ip + 6);
  8821. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8822. Copy20((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8823. ip += 8;
  8824. continue;
  8825. }
  8826. case HiOpcodeEnum::LdfldVarVar_size_24:
  8827. {
  8828. uint16_t __dst = *(uint16_t*)(ip + 2);
  8829. uint16_t __obj = *(uint16_t*)(ip + 4);
  8830. uint16_t __offset = *(uint16_t*)(ip + 6);
  8831. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8832. Copy24((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8833. ip += 8;
  8834. continue;
  8835. }
  8836. case HiOpcodeEnum::LdfldVarVar_size_28:
  8837. {
  8838. uint16_t __dst = *(uint16_t*)(ip + 2);
  8839. uint16_t __obj = *(uint16_t*)(ip + 4);
  8840. uint16_t __offset = *(uint16_t*)(ip + 6);
  8841. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8842. Copy28((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8843. ip += 8;
  8844. continue;
  8845. }
  8846. case HiOpcodeEnum::LdfldVarVar_size_32:
  8847. {
  8848. uint16_t __dst = *(uint16_t*)(ip + 2);
  8849. uint16_t __obj = *(uint16_t*)(ip + 4);
  8850. uint16_t __offset = *(uint16_t*)(ip + 6);
  8851. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8852. Copy32((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset);
  8853. ip += 8;
  8854. continue;
  8855. }
  8856. case HiOpcodeEnum::LdfldVarVar_n_2:
  8857. {
  8858. uint16_t __dst = *(uint16_t*)(ip + 2);
  8859. uint16_t __obj = *(uint16_t*)(ip + 4);
  8860. uint16_t __offset = *(uint16_t*)(ip + 6);
  8861. uint16_t __size = *(uint16_t*)(ip + 8);
  8862. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8863. std::memmove((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, __size);
  8864. ip += 16;
  8865. continue;
  8866. }
  8867. case HiOpcodeEnum::LdfldVarVar_n_4:
  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. uint32_t __size = *(uint32_t*)(ip + 8);
  8873. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  8874. std::memmove((void*)(localVarBase + __dst), (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, __size);
  8875. ip += 16;
  8876. continue;
  8877. }
  8878. case HiOpcodeEnum::LdfldValueTypeVarVar_i1:
  8879. {
  8880. uint16_t __dst = *(uint16_t*)(ip + 2);
  8881. uint16_t __obj = *(uint16_t*)(ip + 4);
  8882. uint16_t __offset = *(uint16_t*)(ip + 6);
  8883. (*(int32_t*)(localVarBase + __dst)) = *(int8_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8884. ip += 8;
  8885. continue;
  8886. }
  8887. case HiOpcodeEnum::LdfldValueTypeVarVar_u1:
  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. (*(int32_t*)(localVarBase + __dst)) = *(uint8_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8893. ip += 8;
  8894. continue;
  8895. }
  8896. case HiOpcodeEnum::LdfldValueTypeVarVar_i2:
  8897. {
  8898. uint16_t __dst = *(uint16_t*)(ip + 2);
  8899. uint16_t __obj = *(uint16_t*)(ip + 4);
  8900. uint16_t __offset = *(uint16_t*)(ip + 6);
  8901. (*(int32_t*)(localVarBase + __dst)) = *(int16_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8902. ip += 8;
  8903. continue;
  8904. }
  8905. case HiOpcodeEnum::LdfldValueTypeVarVar_u2:
  8906. {
  8907. uint16_t __dst = *(uint16_t*)(ip + 2);
  8908. uint16_t __obj = *(uint16_t*)(ip + 4);
  8909. uint16_t __offset = *(uint16_t*)(ip + 6);
  8910. (*(int32_t*)(localVarBase + __dst)) = *(uint16_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8911. ip += 8;
  8912. continue;
  8913. }
  8914. case HiOpcodeEnum::LdfldValueTypeVarVar_i4:
  8915. {
  8916. uint16_t __dst = *(uint16_t*)(ip + 2);
  8917. uint16_t __obj = *(uint16_t*)(ip + 4);
  8918. uint16_t __offset = *(uint16_t*)(ip + 6);
  8919. (*(int32_t*)(localVarBase + __dst)) = *(int32_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8920. ip += 8;
  8921. continue;
  8922. }
  8923. case HiOpcodeEnum::LdfldValueTypeVarVar_u4:
  8924. {
  8925. uint16_t __dst = *(uint16_t*)(ip + 2);
  8926. uint16_t __obj = *(uint16_t*)(ip + 4);
  8927. uint16_t __offset = *(uint16_t*)(ip + 6);
  8928. (*(int32_t*)(localVarBase + __dst)) = *(uint32_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8929. ip += 8;
  8930. continue;
  8931. }
  8932. case HiOpcodeEnum::LdfldValueTypeVarVar_i8:
  8933. {
  8934. uint16_t __dst = *(uint16_t*)(ip + 2);
  8935. uint16_t __obj = *(uint16_t*)(ip + 4);
  8936. uint16_t __offset = *(uint16_t*)(ip + 6);
  8937. (*(int64_t*)(localVarBase + __dst)) = *(int64_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8938. ip += 8;
  8939. continue;
  8940. }
  8941. case HiOpcodeEnum::LdfldValueTypeVarVar_u8:
  8942. {
  8943. uint16_t __dst = *(uint16_t*)(ip + 2);
  8944. uint16_t __obj = *(uint16_t*)(ip + 4);
  8945. uint16_t __offset = *(uint16_t*)(ip + 6);
  8946. (*(int64_t*)(localVarBase + __dst)) = *(uint64_t*)((byte*)(void*)(localVarBase + __obj) + __offset);
  8947. ip += 8;
  8948. continue;
  8949. }
  8950. case HiOpcodeEnum::LdfldValueTypeVarVar_size_8:
  8951. {
  8952. uint16_t __dst = *(uint16_t*)(ip + 2);
  8953. uint16_t __obj = *(uint16_t*)(ip + 4);
  8954. uint16_t __offset = *(uint16_t*)(ip + 6);
  8955. Copy8((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset);
  8956. ip += 8;
  8957. continue;
  8958. }
  8959. case HiOpcodeEnum::LdfldValueTypeVarVar_size_12:
  8960. {
  8961. uint16_t __dst = *(uint16_t*)(ip + 2);
  8962. uint16_t __obj = *(uint16_t*)(ip + 4);
  8963. uint16_t __offset = *(uint16_t*)(ip + 6);
  8964. Copy12((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset);
  8965. ip += 8;
  8966. continue;
  8967. }
  8968. case HiOpcodeEnum::LdfldValueTypeVarVar_size_16:
  8969. {
  8970. uint16_t __dst = *(uint16_t*)(ip + 2);
  8971. uint16_t __obj = *(uint16_t*)(ip + 4);
  8972. uint16_t __offset = *(uint16_t*)(ip + 6);
  8973. Copy16((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset);
  8974. ip += 8;
  8975. continue;
  8976. }
  8977. case HiOpcodeEnum::LdfldValueTypeVarVar_size_20:
  8978. {
  8979. uint16_t __dst = *(uint16_t*)(ip + 2);
  8980. uint16_t __obj = *(uint16_t*)(ip + 4);
  8981. uint16_t __offset = *(uint16_t*)(ip + 6);
  8982. Copy20((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset);
  8983. ip += 8;
  8984. continue;
  8985. }
  8986. case HiOpcodeEnum::LdfldValueTypeVarVar_size_24:
  8987. {
  8988. uint16_t __dst = *(uint16_t*)(ip + 2);
  8989. uint16_t __obj = *(uint16_t*)(ip + 4);
  8990. uint16_t __offset = *(uint16_t*)(ip + 6);
  8991. Copy24((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset);
  8992. ip += 8;
  8993. continue;
  8994. }
  8995. case HiOpcodeEnum::LdfldValueTypeVarVar_size_28:
  8996. {
  8997. uint16_t __dst = *(uint16_t*)(ip + 2);
  8998. uint16_t __obj = *(uint16_t*)(ip + 4);
  8999. uint16_t __offset = *(uint16_t*)(ip + 6);
  9000. Copy28((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset);
  9001. ip += 8;
  9002. continue;
  9003. }
  9004. case HiOpcodeEnum::LdfldValueTypeVarVar_size_32:
  9005. {
  9006. uint16_t __dst = *(uint16_t*)(ip + 2);
  9007. uint16_t __obj = *(uint16_t*)(ip + 4);
  9008. uint16_t __offset = *(uint16_t*)(ip + 6);
  9009. Copy32((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset);
  9010. ip += 8;
  9011. continue;
  9012. }
  9013. case HiOpcodeEnum::LdfldValueTypeVarVar_n_2:
  9014. {
  9015. uint16_t __dst = *(uint16_t*)(ip + 2);
  9016. uint16_t __obj = *(uint16_t*)(ip + 4);
  9017. uint16_t __offset = *(uint16_t*)(ip + 6);
  9018. uint16_t __size = *(uint16_t*)(ip + 8);
  9019. std::memmove((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset, __size);
  9020. ip += 16;
  9021. continue;
  9022. }
  9023. case HiOpcodeEnum::LdfldValueTypeVarVar_n_4:
  9024. {
  9025. uint16_t __dst = *(uint16_t*)(ip + 2);
  9026. uint16_t __obj = *(uint16_t*)(ip + 4);
  9027. uint16_t __offset = *(uint16_t*)(ip + 6);
  9028. uint32_t __size = *(uint32_t*)(ip + 8);
  9029. std::memmove((void*)(localVarBase + __dst), (byte*)(void*)(localVarBase + __obj) + __offset, __size);
  9030. ip += 16;
  9031. continue;
  9032. }
  9033. case HiOpcodeEnum::LdfldaVarVar:
  9034. {
  9035. uint16_t __dst = *(uint16_t*)(ip + 2);
  9036. uint16_t __obj = *(uint16_t*)(ip + 4);
  9037. uint16_t __offset = *(uint16_t*)(ip + 6);
  9038. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9039. (*(void**)(localVarBase + __dst)) = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9040. ip += 8;
  9041. continue;
  9042. }
  9043. case HiOpcodeEnum::StfldVarVar_i1:
  9044. {
  9045. uint16_t __obj = *(uint16_t*)(ip + 2);
  9046. uint16_t __offset = *(uint16_t*)(ip + 4);
  9047. uint16_t __data = *(uint16_t*)(ip + 6);
  9048. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9049. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9050. *(int8_t*)(_fieldAddr_) = (*(int8_t*)(localVarBase + __data));
  9051. ip += 8;
  9052. continue;
  9053. }
  9054. case HiOpcodeEnum::StfldVarVar_u1:
  9055. {
  9056. uint16_t __obj = *(uint16_t*)(ip + 2);
  9057. uint16_t __offset = *(uint16_t*)(ip + 4);
  9058. uint16_t __data = *(uint16_t*)(ip + 6);
  9059. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9060. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9061. *(uint8_t*)(_fieldAddr_) = (*(uint8_t*)(localVarBase + __data));
  9062. ip += 8;
  9063. continue;
  9064. }
  9065. case HiOpcodeEnum::StfldVarVar_i2:
  9066. {
  9067. uint16_t __obj = *(uint16_t*)(ip + 2);
  9068. uint16_t __offset = *(uint16_t*)(ip + 4);
  9069. uint16_t __data = *(uint16_t*)(ip + 6);
  9070. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9071. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9072. *(int16_t*)(_fieldAddr_) = (*(int16_t*)(localVarBase + __data));
  9073. ip += 8;
  9074. continue;
  9075. }
  9076. case HiOpcodeEnum::StfldVarVar_u2:
  9077. {
  9078. uint16_t __obj = *(uint16_t*)(ip + 2);
  9079. uint16_t __offset = *(uint16_t*)(ip + 4);
  9080. uint16_t __data = *(uint16_t*)(ip + 6);
  9081. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9082. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9083. *(uint16_t*)(_fieldAddr_) = (*(uint16_t*)(localVarBase + __data));
  9084. ip += 8;
  9085. continue;
  9086. }
  9087. case HiOpcodeEnum::StfldVarVar_i4:
  9088. {
  9089. uint16_t __obj = *(uint16_t*)(ip + 2);
  9090. uint16_t __offset = *(uint16_t*)(ip + 4);
  9091. uint16_t __data = *(uint16_t*)(ip + 6);
  9092. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9093. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9094. *(int32_t*)(_fieldAddr_) = (*(int32_t*)(localVarBase + __data));
  9095. ip += 8;
  9096. continue;
  9097. }
  9098. case HiOpcodeEnum::StfldVarVar_u4:
  9099. {
  9100. uint16_t __obj = *(uint16_t*)(ip + 2);
  9101. uint16_t __offset = *(uint16_t*)(ip + 4);
  9102. uint16_t __data = *(uint16_t*)(ip + 6);
  9103. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9104. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9105. *(uint32_t*)(_fieldAddr_) = (*(uint32_t*)(localVarBase + __data));
  9106. ip += 8;
  9107. continue;
  9108. }
  9109. case HiOpcodeEnum::StfldVarVar_i8:
  9110. {
  9111. uint16_t __obj = *(uint16_t*)(ip + 2);
  9112. uint16_t __offset = *(uint16_t*)(ip + 4);
  9113. uint16_t __data = *(uint16_t*)(ip + 6);
  9114. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9115. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9116. *(int64_t*)(_fieldAddr_) = (*(int64_t*)(localVarBase + __data));
  9117. ip += 8;
  9118. continue;
  9119. }
  9120. case HiOpcodeEnum::StfldVarVar_u8:
  9121. {
  9122. uint16_t __obj = *(uint16_t*)(ip + 2);
  9123. uint16_t __offset = *(uint16_t*)(ip + 4);
  9124. uint16_t __data = *(uint16_t*)(ip + 6);
  9125. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9126. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9127. *(uint64_t*)(_fieldAddr_) = (*(uint64_t*)(localVarBase + __data));
  9128. ip += 8;
  9129. continue;
  9130. }
  9131. case HiOpcodeEnum::StfldVarVar_ref:
  9132. {
  9133. uint16_t __obj = *(uint16_t*)(ip + 2);
  9134. uint16_t __offset = *(uint16_t*)(ip + 4);
  9135. uint16_t __data = *(uint16_t*)(ip + 6);
  9136. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9137. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9138. *(Il2CppObject**)(_fieldAddr_) = (*(Il2CppObject**)(localVarBase + __data));HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_);
  9139. ip += 8;
  9140. continue;
  9141. }
  9142. case HiOpcodeEnum::StfldVarVar_size_8:
  9143. {
  9144. uint16_t __obj = *(uint16_t*)(ip + 2);
  9145. uint16_t __offset = *(uint16_t*)(ip + 4);
  9146. uint16_t __data = *(uint16_t*)(ip + 6);
  9147. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9148. Copy8((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data));
  9149. ip += 8;
  9150. continue;
  9151. }
  9152. case HiOpcodeEnum::StfldVarVar_size_12:
  9153. {
  9154. uint16_t __obj = *(uint16_t*)(ip + 2);
  9155. uint16_t __offset = *(uint16_t*)(ip + 4);
  9156. uint16_t __data = *(uint16_t*)(ip + 6);
  9157. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9158. Copy12((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data));
  9159. ip += 8;
  9160. continue;
  9161. }
  9162. case HiOpcodeEnum::StfldVarVar_size_16:
  9163. {
  9164. uint16_t __obj = *(uint16_t*)(ip + 2);
  9165. uint16_t __offset = *(uint16_t*)(ip + 4);
  9166. uint16_t __data = *(uint16_t*)(ip + 6);
  9167. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9168. Copy16((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data));
  9169. ip += 8;
  9170. continue;
  9171. }
  9172. case HiOpcodeEnum::StfldVarVar_size_20:
  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. Copy20((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data));
  9179. ip += 8;
  9180. continue;
  9181. }
  9182. case HiOpcodeEnum::StfldVarVar_size_24:
  9183. {
  9184. uint16_t __obj = *(uint16_t*)(ip + 2);
  9185. uint16_t __offset = *(uint16_t*)(ip + 4);
  9186. uint16_t __data = *(uint16_t*)(ip + 6);
  9187. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9188. Copy24((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data));
  9189. ip += 8;
  9190. continue;
  9191. }
  9192. case HiOpcodeEnum::StfldVarVar_size_28:
  9193. {
  9194. uint16_t __obj = *(uint16_t*)(ip + 2);
  9195. uint16_t __offset = *(uint16_t*)(ip + 4);
  9196. uint16_t __data = *(uint16_t*)(ip + 6);
  9197. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9198. Copy28((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data));
  9199. ip += 8;
  9200. continue;
  9201. }
  9202. case HiOpcodeEnum::StfldVarVar_size_32:
  9203. {
  9204. uint16_t __obj = *(uint16_t*)(ip + 2);
  9205. uint16_t __offset = *(uint16_t*)(ip + 4);
  9206. uint16_t __data = *(uint16_t*)(ip + 6);
  9207. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9208. Copy32((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data));
  9209. ip += 8;
  9210. continue;
  9211. }
  9212. case HiOpcodeEnum::StfldVarVar_n_2:
  9213. {
  9214. uint16_t __obj = *(uint16_t*)(ip + 2);
  9215. uint16_t __offset = *(uint16_t*)(ip + 4);
  9216. uint16_t __data = *(uint16_t*)(ip + 6);
  9217. uint16_t __size = *(uint16_t*)(ip + 8);
  9218. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9219. std::memmove((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data), __size);
  9220. ip += 16;
  9221. continue;
  9222. }
  9223. case HiOpcodeEnum::StfldVarVar_n_4:
  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. uint32_t __size = *(uint32_t*)(ip + 8);
  9229. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9230. std::memmove((uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset, (void*)(localVarBase + __data), __size);
  9231. ip += 16;
  9232. continue;
  9233. }
  9234. case HiOpcodeEnum::StfldVarVar_WriteBarrier_n_2:
  9235. {
  9236. uint16_t __obj = *(uint16_t*)(ip + 2);
  9237. uint16_t __offset = *(uint16_t*)(ip + 4);
  9238. uint16_t __data = *(uint16_t*)(ip + 6);
  9239. uint16_t __size = *(uint16_t*)(ip + 8);
  9240. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9241. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9242. std::memmove(_fieldAddr_, (void*)(localVarBase + __data), __size);
  9243. HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_, (size_t)__size);
  9244. ip += 16;
  9245. continue;
  9246. }
  9247. case HiOpcodeEnum::StfldVarVar_WriteBarrier_n_4:
  9248. {
  9249. uint16_t __obj = *(uint16_t*)(ip + 2);
  9250. uint16_t __offset = *(uint16_t*)(ip + 4);
  9251. uint16_t __data = *(uint16_t*)(ip + 6);
  9252. uint32_t __size = *(uint32_t*)(ip + 8);
  9253. CHECK_NOT_NULL_THROW((*(Il2CppObject**)(localVarBase + __obj)));
  9254. void* _fieldAddr_ = (uint8_t*)(*(Il2CppObject**)(localVarBase + __obj)) + __offset;
  9255. std::memmove(_fieldAddr_, (void*)(localVarBase + __data), __size);
  9256. HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_, (size_t)__size);
  9257. ip += 16;
  9258. continue;
  9259. }
  9260. case HiOpcodeEnum::LdsfldVarVar_i1:
  9261. {
  9262. uint16_t __dst = *(uint16_t*)(ip + 2);
  9263. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9264. uint16_t __offset = *(uint16_t*)(ip + 4);
  9265. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9266. (*(int32_t*)(localVarBase + __dst)) = *(int8_t*)(((byte*)__klass->static_fields) + __offset);
  9267. ip += 16;
  9268. continue;
  9269. }
  9270. case HiOpcodeEnum::LdsfldVarVar_u1:
  9271. {
  9272. uint16_t __dst = *(uint16_t*)(ip + 2);
  9273. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9274. uint16_t __offset = *(uint16_t*)(ip + 4);
  9275. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9276. (*(int32_t*)(localVarBase + __dst)) = *(uint8_t*)(((byte*)__klass->static_fields) + __offset);
  9277. ip += 16;
  9278. continue;
  9279. }
  9280. case HiOpcodeEnum::LdsfldVarVar_i2:
  9281. {
  9282. uint16_t __dst = *(uint16_t*)(ip + 2);
  9283. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9284. uint16_t __offset = *(uint16_t*)(ip + 4);
  9285. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9286. (*(int32_t*)(localVarBase + __dst)) = *(int16_t*)(((byte*)__klass->static_fields) + __offset);
  9287. ip += 16;
  9288. continue;
  9289. }
  9290. case HiOpcodeEnum::LdsfldVarVar_u2:
  9291. {
  9292. uint16_t __dst = *(uint16_t*)(ip + 2);
  9293. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9294. uint16_t __offset = *(uint16_t*)(ip + 4);
  9295. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9296. (*(int32_t*)(localVarBase + __dst)) = *(uint16_t*)(((byte*)__klass->static_fields) + __offset);
  9297. ip += 16;
  9298. continue;
  9299. }
  9300. case HiOpcodeEnum::LdsfldVarVar_i4:
  9301. {
  9302. uint16_t __dst = *(uint16_t*)(ip + 2);
  9303. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9304. uint16_t __offset = *(uint16_t*)(ip + 4);
  9305. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9306. (*(int32_t*)(localVarBase + __dst)) = *(int32_t*)(((byte*)__klass->static_fields) + __offset);
  9307. ip += 16;
  9308. continue;
  9309. }
  9310. case HiOpcodeEnum::LdsfldVarVar_u4:
  9311. {
  9312. uint16_t __dst = *(uint16_t*)(ip + 2);
  9313. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9314. uint16_t __offset = *(uint16_t*)(ip + 4);
  9315. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9316. (*(int32_t*)(localVarBase + __dst)) = *(uint32_t*)(((byte*)__klass->static_fields) + __offset);
  9317. ip += 16;
  9318. continue;
  9319. }
  9320. case HiOpcodeEnum::LdsfldVarVar_i8:
  9321. {
  9322. uint16_t __dst = *(uint16_t*)(ip + 2);
  9323. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9324. uint16_t __offset = *(uint16_t*)(ip + 4);
  9325. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9326. (*(int64_t*)(localVarBase + __dst)) = *(int64_t*)(((byte*)__klass->static_fields) + __offset);
  9327. ip += 16;
  9328. continue;
  9329. }
  9330. case HiOpcodeEnum::LdsfldVarVar_u8:
  9331. {
  9332. uint16_t __dst = *(uint16_t*)(ip + 2);
  9333. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9334. uint16_t __offset = *(uint16_t*)(ip + 4);
  9335. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9336. (*(int64_t*)(localVarBase + __dst)) = *(uint64_t*)(((byte*)__klass->static_fields) + __offset);
  9337. ip += 16;
  9338. continue;
  9339. }
  9340. case HiOpcodeEnum::LdsfldVarVar_size_8:
  9341. {
  9342. uint16_t __dst = *(uint16_t*)(ip + 2);
  9343. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9344. uint16_t __offset = *(uint16_t*)(ip + 4);
  9345. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9346. Copy8((void*)(localVarBase + __dst), ((byte*)__klass->static_fields) + __offset);
  9347. ip += 16;
  9348. continue;
  9349. }
  9350. case HiOpcodeEnum::LdsfldVarVar_size_12:
  9351. {
  9352. uint16_t __dst = *(uint16_t*)(ip + 2);
  9353. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9354. uint16_t __offset = *(uint16_t*)(ip + 4);
  9355. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9356. Copy12((void*)(localVarBase + __dst), ((byte*)__klass->static_fields) + __offset);
  9357. ip += 16;
  9358. continue;
  9359. }
  9360. case HiOpcodeEnum::LdsfldVarVar_size_16:
  9361. {
  9362. uint16_t __dst = *(uint16_t*)(ip + 2);
  9363. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9364. uint16_t __offset = *(uint16_t*)(ip + 4);
  9365. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9366. Copy16((void*)(localVarBase + __dst), ((byte*)__klass->static_fields) + __offset);
  9367. ip += 16;
  9368. continue;
  9369. }
  9370. case HiOpcodeEnum::LdsfldVarVar_size_20:
  9371. {
  9372. uint16_t __dst = *(uint16_t*)(ip + 2);
  9373. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9374. uint16_t __offset = *(uint16_t*)(ip + 4);
  9375. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9376. Copy20((void*)(localVarBase + __dst), ((byte*)__klass->static_fields) + __offset);
  9377. ip += 16;
  9378. continue;
  9379. }
  9380. case HiOpcodeEnum::LdsfldVarVar_size_24:
  9381. {
  9382. uint16_t __dst = *(uint16_t*)(ip + 2);
  9383. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9384. uint16_t __offset = *(uint16_t*)(ip + 4);
  9385. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9386. Copy24((void*)(localVarBase + __dst), ((byte*)__klass->static_fields) + __offset);
  9387. ip += 16;
  9388. continue;
  9389. }
  9390. case HiOpcodeEnum::LdsfldVarVar_size_28:
  9391. {
  9392. uint16_t __dst = *(uint16_t*)(ip + 2);
  9393. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9394. uint16_t __offset = *(uint16_t*)(ip + 4);
  9395. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9396. Copy28((void*)(localVarBase + __dst), ((byte*)__klass->static_fields) + __offset);
  9397. ip += 16;
  9398. continue;
  9399. }
  9400. case HiOpcodeEnum::LdsfldVarVar_size_32:
  9401. {
  9402. uint16_t __dst = *(uint16_t*)(ip + 2);
  9403. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9404. uint16_t __offset = *(uint16_t*)(ip + 4);
  9405. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9406. Copy32((void*)(localVarBase + __dst), ((byte*)__klass->static_fields) + __offset);
  9407. ip += 16;
  9408. continue;
  9409. }
  9410. case HiOpcodeEnum::LdsfldVarVar_n_2:
  9411. {
  9412. uint16_t __dst = *(uint16_t*)(ip + 2);
  9413. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9414. uint16_t __offset = *(uint16_t*)(ip + 4);
  9415. uint16_t __size = *(uint16_t*)(ip + 6);
  9416. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9417. std::memmove((void*)(localVarBase + __dst), (((byte*)__klass->static_fields) + __offset), __size);
  9418. ip += 16;
  9419. continue;
  9420. }
  9421. case HiOpcodeEnum::LdsfldVarVar_n_4:
  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. uint32_t __size = *(uint32_t*)(ip + 12);
  9427. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9428. std::memmove((void*)(localVarBase + __dst), (((byte*)__klass->static_fields) + __offset), __size);
  9429. ip += 16;
  9430. continue;
  9431. }
  9432. case HiOpcodeEnum::StsfldVarVar_i1:
  9433. {
  9434. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9435. uint16_t __offset = *(uint16_t*)(ip + 2);
  9436. uint16_t __data = *(uint16_t*)(ip + 4);
  9437. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9438. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9439. *(int8_t*)(_fieldAddr_) = (*(int8_t*)(localVarBase + __data));
  9440. ip += 16;
  9441. continue;
  9442. }
  9443. case HiOpcodeEnum::StsfldVarVar_u1:
  9444. {
  9445. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9446. uint16_t __offset = *(uint16_t*)(ip + 2);
  9447. uint16_t __data = *(uint16_t*)(ip + 4);
  9448. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9449. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9450. *(uint8_t*)(_fieldAddr_) = (*(uint8_t*)(localVarBase + __data));
  9451. ip += 16;
  9452. continue;
  9453. }
  9454. case HiOpcodeEnum::StsfldVarVar_i2:
  9455. {
  9456. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9457. uint16_t __offset = *(uint16_t*)(ip + 2);
  9458. uint16_t __data = *(uint16_t*)(ip + 4);
  9459. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9460. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9461. *(int16_t*)(_fieldAddr_) = (*(int16_t*)(localVarBase + __data));
  9462. ip += 16;
  9463. continue;
  9464. }
  9465. case HiOpcodeEnum::StsfldVarVar_u2:
  9466. {
  9467. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9468. uint16_t __offset = *(uint16_t*)(ip + 2);
  9469. uint16_t __data = *(uint16_t*)(ip + 4);
  9470. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9471. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9472. *(uint16_t*)(_fieldAddr_) = (*(uint16_t*)(localVarBase + __data));
  9473. ip += 16;
  9474. continue;
  9475. }
  9476. case HiOpcodeEnum::StsfldVarVar_i4:
  9477. {
  9478. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9479. uint16_t __offset = *(uint16_t*)(ip + 2);
  9480. uint16_t __data = *(uint16_t*)(ip + 4);
  9481. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9482. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9483. *(int32_t*)(_fieldAddr_) = (*(int32_t*)(localVarBase + __data));
  9484. ip += 16;
  9485. continue;
  9486. }
  9487. case HiOpcodeEnum::StsfldVarVar_u4:
  9488. {
  9489. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9490. uint16_t __offset = *(uint16_t*)(ip + 2);
  9491. uint16_t __data = *(uint16_t*)(ip + 4);
  9492. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9493. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9494. *(uint32_t*)(_fieldAddr_) = (*(uint32_t*)(localVarBase + __data));
  9495. ip += 16;
  9496. continue;
  9497. }
  9498. case HiOpcodeEnum::StsfldVarVar_i8:
  9499. {
  9500. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9501. uint16_t __offset = *(uint16_t*)(ip + 2);
  9502. uint16_t __data = *(uint16_t*)(ip + 4);
  9503. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9504. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9505. *(int64_t*)(_fieldAddr_) = (*(int64_t*)(localVarBase + __data));
  9506. ip += 16;
  9507. continue;
  9508. }
  9509. case HiOpcodeEnum::StsfldVarVar_u8:
  9510. {
  9511. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9512. uint16_t __offset = *(uint16_t*)(ip + 2);
  9513. uint16_t __data = *(uint16_t*)(ip + 4);
  9514. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9515. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9516. *(uint64_t*)(_fieldAddr_) = (*(uint64_t*)(localVarBase + __data));
  9517. ip += 16;
  9518. continue;
  9519. }
  9520. case HiOpcodeEnum::StsfldVarVar_ref:
  9521. {
  9522. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9523. uint16_t __offset = *(uint16_t*)(ip + 2);
  9524. uint16_t __data = *(uint16_t*)(ip + 4);
  9525. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9526. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9527. *(Il2CppObject**)(_fieldAddr_) = (*(Il2CppObject**)(localVarBase + __data));HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_);
  9528. ip += 16;
  9529. continue;
  9530. }
  9531. case HiOpcodeEnum::StsfldVarVar_size_8:
  9532. {
  9533. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9534. uint16_t __offset = *(uint16_t*)(ip + 2);
  9535. uint16_t __data = *(uint16_t*)(ip + 4);
  9536. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9537. Copy8(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data));
  9538. ip += 16;
  9539. continue;
  9540. }
  9541. case HiOpcodeEnum::StsfldVarVar_size_12:
  9542. {
  9543. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9544. uint16_t __offset = *(uint16_t*)(ip + 2);
  9545. uint16_t __data = *(uint16_t*)(ip + 4);
  9546. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9547. Copy12(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data));
  9548. ip += 16;
  9549. continue;
  9550. }
  9551. case HiOpcodeEnum::StsfldVarVar_size_16:
  9552. {
  9553. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9554. uint16_t __offset = *(uint16_t*)(ip + 2);
  9555. uint16_t __data = *(uint16_t*)(ip + 4);
  9556. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9557. Copy16(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data));
  9558. ip += 16;
  9559. continue;
  9560. }
  9561. case HiOpcodeEnum::StsfldVarVar_size_20:
  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. Copy20(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data));
  9568. ip += 16;
  9569. continue;
  9570. }
  9571. case HiOpcodeEnum::StsfldVarVar_size_24:
  9572. {
  9573. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9574. uint16_t __offset = *(uint16_t*)(ip + 2);
  9575. uint16_t __data = *(uint16_t*)(ip + 4);
  9576. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9577. Copy24(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data));
  9578. ip += 16;
  9579. continue;
  9580. }
  9581. case HiOpcodeEnum::StsfldVarVar_size_28:
  9582. {
  9583. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9584. uint16_t __offset = *(uint16_t*)(ip + 2);
  9585. uint16_t __data = *(uint16_t*)(ip + 4);
  9586. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9587. Copy28(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data));
  9588. ip += 16;
  9589. continue;
  9590. }
  9591. case HiOpcodeEnum::StsfldVarVar_size_32:
  9592. {
  9593. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9594. uint16_t __offset = *(uint16_t*)(ip + 2);
  9595. uint16_t __data = *(uint16_t*)(ip + 4);
  9596. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9597. Copy32(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data));
  9598. ip += 16;
  9599. continue;
  9600. }
  9601. case HiOpcodeEnum::StsfldVarVar_n_2:
  9602. {
  9603. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9604. uint16_t __offset = *(uint16_t*)(ip + 2);
  9605. uint16_t __data = *(uint16_t*)(ip + 4);
  9606. uint16_t __size = *(uint16_t*)(ip + 6);
  9607. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9608. std::memmove(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data), __size);
  9609. ip += 16;
  9610. continue;
  9611. }
  9612. case HiOpcodeEnum::StsfldVarVar_n_4:
  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. uint32_t __size = *(uint32_t*)(ip + 12);
  9618. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9619. std::memmove(((byte*)__klass->static_fields) + __offset, (void*)(localVarBase + __data), __size);
  9620. ip += 16;
  9621. continue;
  9622. }
  9623. case HiOpcodeEnum::StsfldVarVar_WriteBarrier_n_2:
  9624. {
  9625. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9626. uint16_t __offset = *(uint16_t*)(ip + 2);
  9627. uint16_t __data = *(uint16_t*)(ip + 4);
  9628. uint16_t __size = *(uint16_t*)(ip + 6);
  9629. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9630. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9631. std::memmove(_fieldAddr_, (void*)(localVarBase + __data), __size);
  9632. HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_, (size_t)__size);
  9633. ip += 16;
  9634. continue;
  9635. }
  9636. case HiOpcodeEnum::StsfldVarVar_WriteBarrier_n_4:
  9637. {
  9638. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9639. uint16_t __offset = *(uint16_t*)(ip + 2);
  9640. uint16_t __data = *(uint16_t*)(ip + 4);
  9641. uint32_t __size = *(uint32_t*)(ip + 12);
  9642. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9643. void* _fieldAddr_ = ((byte*)__klass->static_fields) + __offset;
  9644. std::memmove(_fieldAddr_, (void*)(localVarBase + __data), __size);
  9645. HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_, (size_t)__size);
  9646. ip += 16;
  9647. continue;
  9648. }
  9649. case HiOpcodeEnum::LdsfldaVarVar:
  9650. {
  9651. uint16_t __dst = *(uint16_t*)(ip + 2);
  9652. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9653. uint16_t __offset = *(uint16_t*)(ip + 4);
  9654. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9655. (*(void**)(localVarBase + __dst)) = ((byte*)__klass->static_fields) + __offset;
  9656. ip += 16;
  9657. continue;
  9658. }
  9659. case HiOpcodeEnum::LdsfldaFromFieldDataVarVar:
  9660. {
  9661. uint16_t __dst = *(uint16_t*)(ip + 2);
  9662. void* __src = ((void*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9663. (*(void**)(localVarBase + __dst)) = __src;
  9664. ip += 8;
  9665. continue;
  9666. }
  9667. case HiOpcodeEnum::LdthreadlocalaVarVar:
  9668. {
  9669. uint16_t __dst = *(uint16_t*)(ip + 2);
  9670. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9671. int32_t __offset = *(int32_t*)(ip + 8);
  9672. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9673. (*(void**)(localVarBase + __dst)) = (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset;
  9674. ip += 16;
  9675. continue;
  9676. }
  9677. case HiOpcodeEnum::LdthreadlocalVarVar_i1:
  9678. {
  9679. uint16_t __dst = *(uint16_t*)(ip + 2);
  9680. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9681. int32_t __offset = *(int32_t*)(ip + 8);
  9682. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9683. (*(int32_t*)(localVarBase + __dst)) = *(int8_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9684. ip += 16;
  9685. continue;
  9686. }
  9687. case HiOpcodeEnum::LdthreadlocalVarVar_u1:
  9688. {
  9689. uint16_t __dst = *(uint16_t*)(ip + 2);
  9690. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9691. int32_t __offset = *(int32_t*)(ip + 8);
  9692. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9693. (*(int32_t*)(localVarBase + __dst)) = *(uint8_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9694. ip += 16;
  9695. continue;
  9696. }
  9697. case HiOpcodeEnum::LdthreadlocalVarVar_i2:
  9698. {
  9699. uint16_t __dst = *(uint16_t*)(ip + 2);
  9700. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9701. int32_t __offset = *(int32_t*)(ip + 8);
  9702. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9703. (*(int32_t*)(localVarBase + __dst)) = *(int16_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9704. ip += 16;
  9705. continue;
  9706. }
  9707. case HiOpcodeEnum::LdthreadlocalVarVar_u2:
  9708. {
  9709. uint16_t __dst = *(uint16_t*)(ip + 2);
  9710. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9711. int32_t __offset = *(int32_t*)(ip + 8);
  9712. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9713. (*(int32_t*)(localVarBase + __dst)) = *(uint16_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9714. ip += 16;
  9715. continue;
  9716. }
  9717. case HiOpcodeEnum::LdthreadlocalVarVar_i4:
  9718. {
  9719. uint16_t __dst = *(uint16_t*)(ip + 2);
  9720. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9721. int32_t __offset = *(int32_t*)(ip + 8);
  9722. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9723. (*(int32_t*)(localVarBase + __dst)) = *(int32_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9724. ip += 16;
  9725. continue;
  9726. }
  9727. case HiOpcodeEnum::LdthreadlocalVarVar_u4:
  9728. {
  9729. uint16_t __dst = *(uint16_t*)(ip + 2);
  9730. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9731. int32_t __offset = *(int32_t*)(ip + 8);
  9732. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9733. (*(int32_t*)(localVarBase + __dst)) = *(uint32_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9734. ip += 16;
  9735. continue;
  9736. }
  9737. case HiOpcodeEnum::LdthreadlocalVarVar_i8:
  9738. {
  9739. uint16_t __dst = *(uint16_t*)(ip + 2);
  9740. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9741. int32_t __offset = *(int32_t*)(ip + 8);
  9742. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9743. (*(int64_t*)(localVarBase + __dst)) = *(int64_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9744. ip += 16;
  9745. continue;
  9746. }
  9747. case HiOpcodeEnum::LdthreadlocalVarVar_u8:
  9748. {
  9749. uint16_t __dst = *(uint16_t*)(ip + 2);
  9750. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9751. int32_t __offset = *(int32_t*)(ip + 8);
  9752. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9753. (*(int64_t*)(localVarBase + __dst)) = *(uint64_t*)((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9754. ip += 16;
  9755. continue;
  9756. }
  9757. case HiOpcodeEnum::LdthreadlocalVarVar_size_8:
  9758. {
  9759. uint16_t __dst = *(uint16_t*)(ip + 2);
  9760. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9761. int32_t __offset = *(int32_t*)(ip + 8);
  9762. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9763. Copy8((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9764. ip += 16;
  9765. continue;
  9766. }
  9767. case HiOpcodeEnum::LdthreadlocalVarVar_size_12:
  9768. {
  9769. uint16_t __dst = *(uint16_t*)(ip + 2);
  9770. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9771. int32_t __offset = *(int32_t*)(ip + 8);
  9772. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9773. Copy12((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9774. ip += 16;
  9775. continue;
  9776. }
  9777. case HiOpcodeEnum::LdthreadlocalVarVar_size_16:
  9778. {
  9779. uint16_t __dst = *(uint16_t*)(ip + 2);
  9780. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9781. int32_t __offset = *(int32_t*)(ip + 8);
  9782. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9783. Copy16((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9784. ip += 16;
  9785. continue;
  9786. }
  9787. case HiOpcodeEnum::LdthreadlocalVarVar_size_20:
  9788. {
  9789. uint16_t __dst = *(uint16_t*)(ip + 2);
  9790. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9791. int32_t __offset = *(int32_t*)(ip + 8);
  9792. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9793. Copy20((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9794. ip += 16;
  9795. continue;
  9796. }
  9797. case HiOpcodeEnum::LdthreadlocalVarVar_size_24:
  9798. {
  9799. uint16_t __dst = *(uint16_t*)(ip + 2);
  9800. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9801. int32_t __offset = *(int32_t*)(ip + 8);
  9802. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9803. Copy24((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9804. ip += 16;
  9805. continue;
  9806. }
  9807. case HiOpcodeEnum::LdthreadlocalVarVar_size_28:
  9808. {
  9809. uint16_t __dst = *(uint16_t*)(ip + 2);
  9810. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9811. int32_t __offset = *(int32_t*)(ip + 8);
  9812. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9813. Copy28((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9814. ip += 16;
  9815. continue;
  9816. }
  9817. case HiOpcodeEnum::LdthreadlocalVarVar_size_32:
  9818. {
  9819. uint16_t __dst = *(uint16_t*)(ip + 2);
  9820. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 4)]);
  9821. int32_t __offset = *(int32_t*)(ip + 8);
  9822. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9823. Copy32((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset);
  9824. ip += 16;
  9825. continue;
  9826. }
  9827. case HiOpcodeEnum::LdthreadlocalVarVar_n_2:
  9828. {
  9829. uint16_t __dst = *(uint16_t*)(ip + 2);
  9830. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9831. int32_t __offset = *(int32_t*)(ip + 12);
  9832. uint16_t __size = *(uint16_t*)(ip + 4);
  9833. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9834. std::memmove((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset, __size);
  9835. ip += 16;
  9836. continue;
  9837. }
  9838. case HiOpcodeEnum::LdthreadlocalVarVar_n_4:
  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. uint32_t __size = *(uint32_t*)(ip + 12);
  9844. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9845. std::memmove((void*)(localVarBase + __dst), (byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset, __size);
  9846. ip += 16;
  9847. continue;
  9848. }
  9849. case HiOpcodeEnum::StthreadlocalVarVar_i1:
  9850. {
  9851. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9852. uint16_t __offset = *(uint16_t*)(ip + 2);
  9853. uint16_t __data = *(uint16_t*)(ip + 4);
  9854. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9855. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9856. *(int8_t*)_fieldAddr_ = (*(int8_t*)(localVarBase + __data));
  9857. ip += 16;
  9858. continue;
  9859. }
  9860. case HiOpcodeEnum::StthreadlocalVarVar_u1:
  9861. {
  9862. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9863. uint16_t __offset = *(uint16_t*)(ip + 2);
  9864. uint16_t __data = *(uint16_t*)(ip + 4);
  9865. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9866. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9867. *(uint8_t*)_fieldAddr_ = (*(uint8_t*)(localVarBase + __data));
  9868. ip += 16;
  9869. continue;
  9870. }
  9871. case HiOpcodeEnum::StthreadlocalVarVar_i2:
  9872. {
  9873. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9874. uint16_t __offset = *(uint16_t*)(ip + 2);
  9875. uint16_t __data = *(uint16_t*)(ip + 4);
  9876. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9877. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9878. *(int16_t*)_fieldAddr_ = (*(int16_t*)(localVarBase + __data));
  9879. ip += 16;
  9880. continue;
  9881. }
  9882. case HiOpcodeEnum::StthreadlocalVarVar_u2:
  9883. {
  9884. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9885. uint16_t __offset = *(uint16_t*)(ip + 2);
  9886. uint16_t __data = *(uint16_t*)(ip + 4);
  9887. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9888. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9889. *(uint16_t*)_fieldAddr_ = (*(uint16_t*)(localVarBase + __data));
  9890. ip += 16;
  9891. continue;
  9892. }
  9893. case HiOpcodeEnum::StthreadlocalVarVar_i4:
  9894. {
  9895. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9896. uint16_t __offset = *(uint16_t*)(ip + 2);
  9897. uint16_t __data = *(uint16_t*)(ip + 4);
  9898. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9899. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9900. *(int32_t*)_fieldAddr_ = (*(int32_t*)(localVarBase + __data));
  9901. ip += 16;
  9902. continue;
  9903. }
  9904. case HiOpcodeEnum::StthreadlocalVarVar_u4:
  9905. {
  9906. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9907. uint16_t __offset = *(uint16_t*)(ip + 2);
  9908. uint16_t __data = *(uint16_t*)(ip + 4);
  9909. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9910. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9911. *(uint32_t*)_fieldAddr_ = (*(uint32_t*)(localVarBase + __data));
  9912. ip += 16;
  9913. continue;
  9914. }
  9915. case HiOpcodeEnum::StthreadlocalVarVar_i8:
  9916. {
  9917. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9918. uint16_t __offset = *(uint16_t*)(ip + 2);
  9919. uint16_t __data = *(uint16_t*)(ip + 4);
  9920. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9921. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9922. *(int64_t*)_fieldAddr_ = (*(int64_t*)(localVarBase + __data));
  9923. ip += 16;
  9924. continue;
  9925. }
  9926. case HiOpcodeEnum::StthreadlocalVarVar_u8:
  9927. {
  9928. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9929. uint16_t __offset = *(uint16_t*)(ip + 2);
  9930. uint16_t __data = *(uint16_t*)(ip + 4);
  9931. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9932. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9933. *(uint64_t*)_fieldAddr_ = (*(uint64_t*)(localVarBase + __data));
  9934. ip += 16;
  9935. continue;
  9936. }
  9937. case HiOpcodeEnum::StthreadlocalVarVar_ref:
  9938. {
  9939. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9940. uint16_t __offset = *(uint16_t*)(ip + 2);
  9941. uint16_t __data = *(uint16_t*)(ip + 4);
  9942. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9943. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  9944. *(Il2CppObject**)_fieldAddr_ = (*(Il2CppObject**)(localVarBase + __data));HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_);
  9945. ip += 16;
  9946. continue;
  9947. }
  9948. case HiOpcodeEnum::StthreadlocalVarVar_size_8:
  9949. {
  9950. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9951. uint16_t __offset = *(uint16_t*)(ip + 2);
  9952. uint16_t __data = *(uint16_t*)(ip + 4);
  9953. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9954. Copy8((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset)) + __offset, (void*)(localVarBase + __data));
  9955. ip += 16;
  9956. continue;
  9957. }
  9958. case HiOpcodeEnum::StthreadlocalVarVar_size_12:
  9959. {
  9960. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9961. uint16_t __offset = *(uint16_t*)(ip + 2);
  9962. uint16_t __data = *(uint16_t*)(ip + 4);
  9963. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9964. Copy12((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset)) + __offset, (void*)(localVarBase + __data));
  9965. ip += 16;
  9966. continue;
  9967. }
  9968. case HiOpcodeEnum::StthreadlocalVarVar_size_16:
  9969. {
  9970. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9971. uint16_t __offset = *(uint16_t*)(ip + 2);
  9972. uint16_t __data = *(uint16_t*)(ip + 4);
  9973. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9974. Copy16((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset)) + __offset, (void*)(localVarBase + __data));
  9975. ip += 16;
  9976. continue;
  9977. }
  9978. case HiOpcodeEnum::StthreadlocalVarVar_size_20:
  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. Copy20((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset)) + __offset, (void*)(localVarBase + __data));
  9985. ip += 16;
  9986. continue;
  9987. }
  9988. case HiOpcodeEnum::StthreadlocalVarVar_size_24:
  9989. {
  9990. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  9991. uint16_t __offset = *(uint16_t*)(ip + 2);
  9992. uint16_t __data = *(uint16_t*)(ip + 4);
  9993. RuntimeInitClassCCtorWithoutInitClass(__klass);
  9994. Copy24((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset)) + __offset, (void*)(localVarBase + __data));
  9995. ip += 16;
  9996. continue;
  9997. }
  9998. case HiOpcodeEnum::StthreadlocalVarVar_size_28:
  9999. {
  10000. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10001. uint16_t __offset = *(uint16_t*)(ip + 2);
  10002. uint16_t __data = *(uint16_t*)(ip + 4);
  10003. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10004. Copy28((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset)) + __offset, (void*)(localVarBase + __data));
  10005. ip += 16;
  10006. continue;
  10007. }
  10008. case HiOpcodeEnum::StthreadlocalVarVar_size_32:
  10009. {
  10010. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10011. uint16_t __offset = *(uint16_t*)(ip + 2);
  10012. uint16_t __data = *(uint16_t*)(ip + 4);
  10013. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10014. Copy32((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset)) + __offset, (void*)(localVarBase + __data));
  10015. ip += 16;
  10016. continue;
  10017. }
  10018. case HiOpcodeEnum::StthreadlocalVarVar_n_2:
  10019. {
  10020. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10021. uint16_t __offset = *(uint16_t*)(ip + 2);
  10022. uint16_t __data = *(uint16_t*)(ip + 4);
  10023. uint16_t __size = *(uint16_t*)(ip + 6);
  10024. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10025. std::memmove((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset, (void*)(localVarBase + __data), __size);
  10026. ip += 16;
  10027. continue;
  10028. }
  10029. case HiOpcodeEnum::StthreadlocalVarVar_n_4:
  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. uint32_t __size = *(uint32_t*)(ip + 12);
  10035. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10036. std::memmove((byte*)il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset) + __offset, (void*)(localVarBase + __data), __size);
  10037. ip += 16;
  10038. continue;
  10039. }
  10040. case HiOpcodeEnum::StthreadlocalVarVar_WriteBarrier_n_2:
  10041. {
  10042. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10043. uint16_t __offset = *(uint16_t*)(ip + 2);
  10044. uint16_t __data = *(uint16_t*)(ip + 4);
  10045. uint16_t __size = *(uint16_t*)(ip + 6);
  10046. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10047. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  10048. std::memmove(_fieldAddr_, (void*)(localVarBase + __data), __size);
  10049. HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_, (size_t)__size);
  10050. ip += 16;
  10051. continue;
  10052. }
  10053. case HiOpcodeEnum::StthreadlocalVarVar_WriteBarrier_n_4:
  10054. {
  10055. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10056. uint16_t __offset = *(uint16_t*)(ip + 2);
  10057. uint16_t __data = *(uint16_t*)(ip + 4);
  10058. uint32_t __size = *(uint32_t*)(ip + 12);
  10059. RuntimeInitClassCCtorWithoutInitClass(__klass);
  10060. void* _fieldAddr_ = ((byte*)(il2cpp::vm::Thread::GetThreadStaticData(__klass->thread_static_fields_offset))) + __offset;
  10061. std::memmove(_fieldAddr_, (void*)(localVarBase + __data), __size);
  10062. HYBRIDCLR_SET_WRITE_BARRIER((void**)_fieldAddr_, (size_t)__size);
  10063. ip += 16;
  10064. continue;
  10065. }
  10066. //!!!}}OBJECT
  10067. #pragma endregion
  10068. #pragma region ARRAY
  10069. //!!!{{ARRAY
  10070. case HiOpcodeEnum::NewArrVarVar:
  10071. {
  10072. uint16_t __arr = *(uint16_t*)(ip + 2);
  10073. uint16_t __size = *(uint16_t*)(ip + 4);
  10074. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10075. (*(Il2CppArray**)(localVarBase + __arr)) = il2cpp::vm::Array::NewSpecific(__klass, (*(int32_t*)(localVarBase + __size)));
  10076. ip += 16;
  10077. continue;
  10078. }
  10079. case HiOpcodeEnum::GetArrayLengthVarVar:
  10080. {
  10081. uint16_t __len = *(uint16_t*)(ip + 2);
  10082. uint16_t __arr = *(uint16_t*)(ip + 4);
  10083. CHECK_NOT_NULL_THROW((*(Il2CppArray**)(localVarBase + __arr)));
  10084. (*(int64_t*)(localVarBase + __len)) = (int64_t)il2cpp::vm::Array::GetLength((*(Il2CppArray**)(localVarBase + __arr)));
  10085. ip += 8;
  10086. continue;
  10087. }
  10088. case HiOpcodeEnum::GetArrayElementAddressAddrVarVar:
  10089. {
  10090. uint16_t __addr = *(uint16_t*)(ip + 2);
  10091. uint16_t __arr = *(uint16_t*)(ip + 4);
  10092. uint16_t __index = *(uint16_t*)(ip + 6);
  10093. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10094. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10095. (*(void**)(localVarBase + __addr)) = GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), il2cpp::vm::Array::GetElementSize(arr->klass));
  10096. ip += 8;
  10097. continue;
  10098. }
  10099. case HiOpcodeEnum::GetArrayElementAddressCheckAddrVarVar:
  10100. {
  10101. uint16_t __addr = *(uint16_t*)(ip + 2);
  10102. uint16_t __arr = *(uint16_t*)(ip + 4);
  10103. uint16_t __index = *(uint16_t*)(ip + 6);
  10104. Il2CppClass* __eleKlass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10105. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10106. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10107. CheckArrayElementTypeMatch(arr->klass, __eleKlass);
  10108. (*(void**)(localVarBase + __addr)) = GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), il2cpp::vm::Array::GetElementSize(arr->klass));
  10109. ip += 16;
  10110. continue;
  10111. }
  10112. case HiOpcodeEnum::GetArrayElementVarVar_i1:
  10113. {
  10114. uint16_t __dst = *(uint16_t*)(ip + 2);
  10115. uint16_t __arr = *(uint16_t*)(ip + 4);
  10116. uint16_t __index = *(uint16_t*)(ip + 6);
  10117. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10118. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10119. (*(int32_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, int8_t, (*(int32_t*)(localVarBase + __index)));
  10120. ip += 8;
  10121. continue;
  10122. }
  10123. case HiOpcodeEnum::GetArrayElementVarVar_u1:
  10124. {
  10125. uint16_t __dst = *(uint16_t*)(ip + 2);
  10126. uint16_t __arr = *(uint16_t*)(ip + 4);
  10127. uint16_t __index = *(uint16_t*)(ip + 6);
  10128. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10129. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10130. (*(int32_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, uint8_t, (*(int32_t*)(localVarBase + __index)));
  10131. ip += 8;
  10132. continue;
  10133. }
  10134. case HiOpcodeEnum::GetArrayElementVarVar_i2:
  10135. {
  10136. uint16_t __dst = *(uint16_t*)(ip + 2);
  10137. uint16_t __arr = *(uint16_t*)(ip + 4);
  10138. uint16_t __index = *(uint16_t*)(ip + 6);
  10139. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10140. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10141. (*(int32_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, int16_t, (*(int32_t*)(localVarBase + __index)));
  10142. ip += 8;
  10143. continue;
  10144. }
  10145. case HiOpcodeEnum::GetArrayElementVarVar_u2:
  10146. {
  10147. uint16_t __dst = *(uint16_t*)(ip + 2);
  10148. uint16_t __arr = *(uint16_t*)(ip + 4);
  10149. uint16_t __index = *(uint16_t*)(ip + 6);
  10150. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10151. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10152. (*(int32_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, uint16_t, (*(int32_t*)(localVarBase + __index)));
  10153. ip += 8;
  10154. continue;
  10155. }
  10156. case HiOpcodeEnum::GetArrayElementVarVar_i4:
  10157. {
  10158. uint16_t __dst = *(uint16_t*)(ip + 2);
  10159. uint16_t __arr = *(uint16_t*)(ip + 4);
  10160. uint16_t __index = *(uint16_t*)(ip + 6);
  10161. Il2CppArray* arr = (*(Il2CppArray**)(localVarBase + __arr));
  10162. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(arr, (*(int32_t*)(localVarBase + __index)));
  10163. (*(int32_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, int32_t, (*(int32_t*)(localVarBase + __index)));
  10164. ip += 8;
  10165. continue;
  10166. }
  10167. case HiOpcodeEnum::GetArrayElementVarVar_u4:
  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, uint32_t, (*(int32_t*)(localVarBase + __index)));
  10175. ip += 8;
  10176. continue;
  10177. }
  10178. case HiOpcodeEnum::GetArrayElementVarVar_i8:
  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. (*(int64_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, int64_t, (*(int32_t*)(localVarBase + __index)));
  10186. ip += 8;
  10187. continue;
  10188. }
  10189. case HiOpcodeEnum::GetArrayElementVarVar_u8:
  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. (*(int64_t*)(localVarBase + __dst)) = il2cpp_array_get(arr, uint64_t, (*(int32_t*)(localVarBase + __index)));
  10197. ip += 8;
  10198. continue;
  10199. }
  10200. case HiOpcodeEnum::GetArrayElementVarVar_size_1:
  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. Copy1((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 1));
  10208. ip += 8;
  10209. continue;
  10210. }
  10211. case HiOpcodeEnum::GetArrayElementVarVar_size_2:
  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. Copy2((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 2));
  10219. ip += 8;
  10220. continue;
  10221. }
  10222. case HiOpcodeEnum::GetArrayElementVarVar_size_4:
  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. Copy4((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 4));
  10230. ip += 8;
  10231. continue;
  10232. }
  10233. case HiOpcodeEnum::GetArrayElementVarVar_size_8:
  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. Copy8((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 8));
  10241. ip += 8;
  10242. continue;
  10243. }
  10244. case HiOpcodeEnum::GetArrayElementVarVar_size_12:
  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. Copy12((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 12));
  10252. ip += 8;
  10253. continue;
  10254. }
  10255. case HiOpcodeEnum::GetArrayElementVarVar_size_16:
  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. Copy16((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 16));
  10263. ip += 8;
  10264. continue;
  10265. }
  10266. case HiOpcodeEnum::GetArrayElementVarVar_size_20:
  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. Copy20((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 20));
  10274. ip += 8;
  10275. continue;
  10276. }
  10277. case HiOpcodeEnum::GetArrayElementVarVar_size_24:
  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. Copy24((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 24));
  10285. ip += 8;
  10286. continue;
  10287. }
  10288. case HiOpcodeEnum::GetArrayElementVarVar_size_28:
  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. Copy28((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 28));
  10296. ip += 8;
  10297. continue;
  10298. }
  10299. case HiOpcodeEnum::GetArrayElementVarVar_size_32:
  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. Copy32((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), 32));
  10307. ip += 8;
  10308. continue;
  10309. }
  10310. case HiOpcodeEnum::GetArrayElementVarVar_n:
  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. int32_t eleSize = il2cpp::vm::Array::GetElementSize(arr->klass);
  10318. std::memmove((void*)(localVarBase + __dst), GET_ARRAY_ELEMENT_ADDRESS(arr, (*(int32_t*)(localVarBase + __index)), eleSize), eleSize);
  10319. ip += 8;
  10320. continue;
  10321. }
  10322. case HiOpcodeEnum::SetArrayElementVarVar_i1:
  10323. {
  10324. uint16_t __arr = *(uint16_t*)(ip + 2);
  10325. uint16_t __index = *(uint16_t*)(ip + 4);
  10326. uint16_t __ele = *(uint16_t*)(ip + 6);
  10327. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10328. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10329. il2cpp_array_set((*(Il2CppArray**)(localVarBase + __arr)), int8_t, (*(int32_t*)(localVarBase + __index)), (*(int8_t*)(localVarBase + __ele)));
  10330. ip += 8;
  10331. continue;
  10332. }
  10333. case HiOpcodeEnum::SetArrayElementVarVar_u1:
  10334. {
  10335. uint16_t __arr = *(uint16_t*)(ip + 2);
  10336. uint16_t __index = *(uint16_t*)(ip + 4);
  10337. uint16_t __ele = *(uint16_t*)(ip + 6);
  10338. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10339. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10340. il2cpp_array_set((*(Il2CppArray**)(localVarBase + __arr)), uint8_t, (*(int32_t*)(localVarBase + __index)), (*(uint8_t*)(localVarBase + __ele)));
  10341. ip += 8;
  10342. continue;
  10343. }
  10344. case HiOpcodeEnum::SetArrayElementVarVar_i2:
  10345. {
  10346. uint16_t __arr = *(uint16_t*)(ip + 2);
  10347. uint16_t __index = *(uint16_t*)(ip + 4);
  10348. uint16_t __ele = *(uint16_t*)(ip + 6);
  10349. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10350. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10351. il2cpp_array_set((*(Il2CppArray**)(localVarBase + __arr)), int16_t, (*(int32_t*)(localVarBase + __index)), (*(int16_t*)(localVarBase + __ele)));
  10352. ip += 8;
  10353. continue;
  10354. }
  10355. case HiOpcodeEnum::SetArrayElementVarVar_u2:
  10356. {
  10357. uint16_t __arr = *(uint16_t*)(ip + 2);
  10358. uint16_t __index = *(uint16_t*)(ip + 4);
  10359. uint16_t __ele = *(uint16_t*)(ip + 6);
  10360. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10361. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10362. il2cpp_array_set((*(Il2CppArray**)(localVarBase + __arr)), uint16_t, (*(int32_t*)(localVarBase + __index)), (*(uint16_t*)(localVarBase + __ele)));
  10363. ip += 8;
  10364. continue;
  10365. }
  10366. case HiOpcodeEnum::SetArrayElementVarVar_i4:
  10367. {
  10368. uint16_t __arr = *(uint16_t*)(ip + 2);
  10369. uint16_t __index = *(uint16_t*)(ip + 4);
  10370. uint16_t __ele = *(uint16_t*)(ip + 6);
  10371. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10372. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10373. il2cpp_array_set((*(Il2CppArray**)(localVarBase + __arr)), int32_t, (*(int32_t*)(localVarBase + __index)), (*(int32_t*)(localVarBase + __ele)));
  10374. ip += 8;
  10375. continue;
  10376. }
  10377. case HiOpcodeEnum::SetArrayElementVarVar_u4:
  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)), uint32_t, (*(int32_t*)(localVarBase + __index)), (*(uint32_t*)(localVarBase + __ele)));
  10385. ip += 8;
  10386. continue;
  10387. }
  10388. case HiOpcodeEnum::SetArrayElementVarVar_i8:
  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)), int64_t, (*(int32_t*)(localVarBase + __index)), (*(int64_t*)(localVarBase + __ele)));
  10396. ip += 8;
  10397. continue;
  10398. }
  10399. case HiOpcodeEnum::SetArrayElementVarVar_u8:
  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)), uint64_t, (*(int32_t*)(localVarBase + __index)), (*(uint64_t*)(localVarBase + __ele)));
  10407. ip += 8;
  10408. continue;
  10409. }
  10410. case HiOpcodeEnum::SetArrayElementVarVar_ref:
  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. CheckArrayElementTypeCompatible((*(Il2CppArray**)(localVarBase + __arr)), (*(Il2CppObject**)(localVarBase + __ele)));
  10418. il2cpp_array_setref((*(Il2CppArray**)(localVarBase + __arr)), (*(int32_t*)(localVarBase + __index)), (*(Il2CppObject**)(localVarBase + __ele)));
  10419. ip += 8;
  10420. continue;
  10421. }
  10422. case HiOpcodeEnum::SetArrayElementVarVar_size_12:
  10423. {
  10424. uint16_t __arr = *(uint16_t*)(ip + 2);
  10425. uint16_t __index = *(uint16_t*)(ip + 4);
  10426. uint16_t __ele = *(uint16_t*)(ip + 6);
  10427. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10428. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10429. Copy12(GET_ARRAY_ELEMENT_ADDRESS(_arr, (*(int32_t*)(localVarBase + __index)), 12), (void*)(localVarBase + __ele));
  10430. ip += 8;
  10431. continue;
  10432. }
  10433. case HiOpcodeEnum::SetArrayElementVarVar_size_16:
  10434. {
  10435. uint16_t __arr = *(uint16_t*)(ip + 2);
  10436. uint16_t __index = *(uint16_t*)(ip + 4);
  10437. uint16_t __ele = *(uint16_t*)(ip + 6);
  10438. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10439. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10440. Copy16(GET_ARRAY_ELEMENT_ADDRESS(_arr, (*(int32_t*)(localVarBase + __index)), 16), (void*)(localVarBase + __ele));
  10441. ip += 8;
  10442. continue;
  10443. }
  10444. case HiOpcodeEnum::SetArrayElementVarVar_n:
  10445. {
  10446. uint16_t __arr = *(uint16_t*)(ip + 2);
  10447. uint16_t __index = *(uint16_t*)(ip + 4);
  10448. uint16_t __ele = *(uint16_t*)(ip + 6);
  10449. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10450. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10451. int32_t _eleSize = il2cpp::vm::Array::GetElementSize(_arr->klass);
  10452. SetArrayElementWithSize(_arr, _eleSize, (*(int32_t*)(localVarBase + __index)), (void*)(localVarBase + __ele));
  10453. ip += 8;
  10454. continue;
  10455. }
  10456. case HiOpcodeEnum::SetArrayElementVarVar_WriteBarrier_n:
  10457. {
  10458. uint16_t __arr = *(uint16_t*)(ip + 2);
  10459. uint16_t __index = *(uint16_t*)(ip + 4);
  10460. uint16_t __ele = *(uint16_t*)(ip + 6);
  10461. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10462. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, (*(int32_t*)(localVarBase + __index)));
  10463. int32_t _eleSize = il2cpp::vm::Array::GetElementSize(_arr->klass);
  10464. il2cpp_array_setrefwithsize(_arr, _eleSize, (*(int32_t*)(localVarBase + __index)), (void*)(localVarBase + __ele));
  10465. ip += 8;
  10466. continue;
  10467. }
  10468. case HiOpcodeEnum::NewMdArrVarVar_length:
  10469. {
  10470. uint16_t __arr = *(uint16_t*)(ip + 2);
  10471. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10472. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10473. (*(Il2CppArray**)(localVarBase + __arr)) = NewMdArray(__klass, (StackObject*)(void*)(localVarBase + __lengthIdxs), nullptr);
  10474. ip += 16;
  10475. continue;
  10476. }
  10477. case HiOpcodeEnum::NewMdArrVarVar_length_bound:
  10478. {
  10479. uint16_t __arr = *(uint16_t*)(ip + 2);
  10480. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10481. uint16_t __lowerBoundIdxs = *(uint16_t*)(ip + 6);
  10482. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10483. (*(Il2CppArray**)(localVarBase + __arr)) = NewMdArray(__klass, (StackObject*)(void*)(localVarBase + __lengthIdxs), (StackObject*)(void*)(localVarBase + __lowerBoundIdxs));
  10484. ip += 16;
  10485. continue;
  10486. }
  10487. case HiOpcodeEnum::GetMdArrElementVarVar_i1:
  10488. {
  10489. uint16_t __arr = *(uint16_t*)(ip + 2);
  10490. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10491. uint16_t __value = *(uint16_t*)(ip + 6);
  10492. GetMdArrayElementExpandToStack<int8_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10493. ip += 8;
  10494. continue;
  10495. }
  10496. case HiOpcodeEnum::GetMdArrElementVarVar_u1:
  10497. {
  10498. uint16_t __arr = *(uint16_t*)(ip + 2);
  10499. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10500. uint16_t __value = *(uint16_t*)(ip + 6);
  10501. GetMdArrayElementExpandToStack<uint8_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10502. ip += 8;
  10503. continue;
  10504. }
  10505. case HiOpcodeEnum::GetMdArrElementVarVar_i2:
  10506. {
  10507. uint16_t __arr = *(uint16_t*)(ip + 2);
  10508. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10509. uint16_t __value = *(uint16_t*)(ip + 6);
  10510. GetMdArrayElementExpandToStack<int16_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10511. ip += 8;
  10512. continue;
  10513. }
  10514. case HiOpcodeEnum::GetMdArrElementVarVar_u2:
  10515. {
  10516. uint16_t __arr = *(uint16_t*)(ip + 2);
  10517. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10518. uint16_t __value = *(uint16_t*)(ip + 6);
  10519. GetMdArrayElementExpandToStack<uint16_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10520. ip += 8;
  10521. continue;
  10522. }
  10523. case HiOpcodeEnum::GetMdArrElementVarVar_i4:
  10524. {
  10525. uint16_t __arr = *(uint16_t*)(ip + 2);
  10526. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10527. uint16_t __value = *(uint16_t*)(ip + 6);
  10528. GetMdArrayElementCopyToStack<int32_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10529. ip += 8;
  10530. continue;
  10531. }
  10532. case HiOpcodeEnum::GetMdArrElementVarVar_u4:
  10533. {
  10534. uint16_t __arr = *(uint16_t*)(ip + 2);
  10535. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10536. uint16_t __value = *(uint16_t*)(ip + 6);
  10537. GetMdArrayElementCopyToStack<uint32_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10538. ip += 8;
  10539. continue;
  10540. }
  10541. case HiOpcodeEnum::GetMdArrElementVarVar_i8:
  10542. {
  10543. uint16_t __arr = *(uint16_t*)(ip + 2);
  10544. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10545. uint16_t __value = *(uint16_t*)(ip + 6);
  10546. GetMdArrayElementCopyToStack<int64_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10547. ip += 8;
  10548. continue;
  10549. }
  10550. case HiOpcodeEnum::GetMdArrElementVarVar_u8:
  10551. {
  10552. uint16_t __arr = *(uint16_t*)(ip + 2);
  10553. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10554. uint16_t __value = *(uint16_t*)(ip + 6);
  10555. GetMdArrayElementCopyToStack<uint64_t>((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10556. ip += 8;
  10557. continue;
  10558. }
  10559. case HiOpcodeEnum::GetMdArrElementVarVar_n:
  10560. {
  10561. uint16_t __arr = *(uint16_t*)(ip + 2);
  10562. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10563. uint16_t __value = *(uint16_t*)(ip + 6);
  10564. GetMdArrayElementBySize((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __value));
  10565. ip += 8;
  10566. continue;
  10567. }
  10568. case HiOpcodeEnum::GetMdArrElementAddressVarVar:
  10569. {
  10570. uint16_t __addr = *(uint16_t*)(ip + 2);
  10571. uint16_t __arr = *(uint16_t*)(ip + 4);
  10572. uint16_t __lengthIdxs = *(uint16_t*)(ip + 6);
  10573. (*(void**)(localVarBase + __addr)) = GetMdArrayElementAddress((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10574. ip += 8;
  10575. continue;
  10576. }
  10577. case HiOpcodeEnum::SetMdArrElementVarVar_i1:
  10578. {
  10579. uint16_t __arr = *(uint16_t*)(ip + 2);
  10580. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10581. uint16_t __ele = *(uint16_t*)(ip + 6);
  10582. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10583. void* _addr = GetMdArrayElementAddress(_arr, (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10584. *(int8_t*)_addr = (*(int8_t*)(localVarBase + __ele));
  10585. ip += 8;
  10586. continue;
  10587. }
  10588. case HiOpcodeEnum::SetMdArrElementVarVar_u1:
  10589. {
  10590. uint16_t __arr = *(uint16_t*)(ip + 2);
  10591. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10592. uint16_t __ele = *(uint16_t*)(ip + 6);
  10593. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10594. void* _addr = GetMdArrayElementAddress(_arr, (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10595. *(uint8_t*)_addr = (*(uint8_t*)(localVarBase + __ele));
  10596. ip += 8;
  10597. continue;
  10598. }
  10599. case HiOpcodeEnum::SetMdArrElementVarVar_i2:
  10600. {
  10601. uint16_t __arr = *(uint16_t*)(ip + 2);
  10602. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10603. uint16_t __ele = *(uint16_t*)(ip + 6);
  10604. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10605. void* _addr = GetMdArrayElementAddress(_arr, (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10606. *(int16_t*)_addr = (*(int16_t*)(localVarBase + __ele));
  10607. ip += 8;
  10608. continue;
  10609. }
  10610. case HiOpcodeEnum::SetMdArrElementVarVar_u2:
  10611. {
  10612. uint16_t __arr = *(uint16_t*)(ip + 2);
  10613. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10614. uint16_t __ele = *(uint16_t*)(ip + 6);
  10615. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10616. void* _addr = GetMdArrayElementAddress(_arr, (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10617. *(uint16_t*)_addr = (*(uint16_t*)(localVarBase + __ele));
  10618. ip += 8;
  10619. continue;
  10620. }
  10621. case HiOpcodeEnum::SetMdArrElementVarVar_i4:
  10622. {
  10623. uint16_t __arr = *(uint16_t*)(ip + 2);
  10624. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10625. uint16_t __ele = *(uint16_t*)(ip + 6);
  10626. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10627. void* _addr = GetMdArrayElementAddress(_arr, (StackObject*)(void*)(localVarBase + __lengthIdxs));
  10628. *(int32_t*)_addr = (*(int32_t*)(localVarBase + __ele));
  10629. ip += 8;
  10630. continue;
  10631. }
  10632. case HiOpcodeEnum::SetMdArrElementVarVar_u4:
  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. *(uint32_t*)_addr = (*(uint32_t*)(localVarBase + __ele));
  10640. ip += 8;
  10641. continue;
  10642. }
  10643. case HiOpcodeEnum::SetMdArrElementVarVar_i8:
  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. *(int64_t*)_addr = (*(int64_t*)(localVarBase + __ele));
  10651. ip += 8;
  10652. continue;
  10653. }
  10654. case HiOpcodeEnum::SetMdArrElementVarVar_u8:
  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. *(uint64_t*)_addr = (*(uint64_t*)(localVarBase + __ele));
  10662. ip += 8;
  10663. continue;
  10664. }
  10665. case HiOpcodeEnum::SetMdArrElementVarVar_ref:
  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. CheckArrayElementTypeCompatible(_arr, (*(Il2CppObject**)(localVarBase + __ele)));
  10673. *(Il2CppObject**)_addr = (*(Il2CppObject**)(localVarBase + __ele));
  10674. ip += 8;
  10675. continue;
  10676. }
  10677. case HiOpcodeEnum::SetMdArrElementVarVar_n:
  10678. {
  10679. uint16_t __arr = *(uint16_t*)(ip + 2);
  10680. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10681. uint16_t __ele = *(uint16_t*)(ip + 6);
  10682. SetMdArrayElement((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __ele));
  10683. ip += 8;
  10684. continue;
  10685. }
  10686. case HiOpcodeEnum::SetMdArrElementVarVar_WriteBarrier_n:
  10687. {
  10688. uint16_t __arr = *(uint16_t*)(ip + 2);
  10689. uint16_t __lengthIdxs = *(uint16_t*)(ip + 4);
  10690. uint16_t __ele = *(uint16_t*)(ip + 6);
  10691. SetMdArrayElementWriteBarrier((*(Il2CppArray**)(localVarBase + __arr)), (StackObject*)(void*)(localVarBase + __lengthIdxs), (void*)(localVarBase + __ele));
  10692. ip += 8;
  10693. continue;
  10694. }
  10695. //!!!}}ARRAY
  10696. #pragma endregion
  10697. #pragma region EXCEPTION
  10698. //!!!{{EXCEPTION
  10699. case HiOpcodeEnum::ThrowEx:
  10700. {
  10701. uint16_t __exceptionObj = *(uint16_t*)(ip + 2);
  10702. uint16_t __firstHandlerIndex = *(uint16_t*)(ip + 4);
  10703. THROW_EX((Il2CppException*)(*(Il2CppObject**)(localVarBase + __exceptionObj)), __firstHandlerIndex);
  10704. continue;
  10705. }
  10706. case HiOpcodeEnum::RethrowEx:
  10707. {
  10708. RETHROW_EX();
  10709. continue;
  10710. }
  10711. case HiOpcodeEnum::LeaveEx:
  10712. {
  10713. int32_t __target = *(int32_t*)(ip + 4);
  10714. uint16_t __firstHandlerIndex = *(uint16_t*)(ip + 2);
  10715. LEAVE_EX(__target, __firstHandlerIndex);
  10716. continue;
  10717. }
  10718. case HiOpcodeEnum::LeaveEx_Directly:
  10719. {
  10720. int32_t __target = *(int32_t*)(ip + 4);
  10721. LEAVE_EX_DIRECTLY(__target);
  10722. continue;
  10723. }
  10724. case HiOpcodeEnum::EndFilterEx:
  10725. {
  10726. uint16_t __value = *(uint16_t*)(ip + 2);
  10727. ENDFILTER_EX((*(bool*)(localVarBase + __value)));
  10728. ip += 8;
  10729. continue;
  10730. }
  10731. case HiOpcodeEnum::EndFinallyEx:
  10732. {
  10733. ENDFINALLY_EX();
  10734. continue;
  10735. }
  10736. //!!!}}EXCEPTION
  10737. #pragma endregion
  10738. #pragma region instrinct
  10739. //!!!{{INSTRINCT
  10740. case HiOpcodeEnum::NullableNewVarVar:
  10741. {
  10742. uint16_t __dst = *(uint16_t*)(ip + 2);
  10743. uint16_t __data = *(uint16_t*)(ip + 4);
  10744. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10745. NewNullableValueType((void*)(localVarBase + __dst), (void*)(localVarBase + __data), __klass);
  10746. ip += 16;
  10747. continue;
  10748. }
  10749. case HiOpcodeEnum::NullableCtorVarVar:
  10750. {
  10751. uint16_t __dst = *(uint16_t*)(ip + 2);
  10752. uint16_t __data = *(uint16_t*)(ip + 4);
  10753. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10754. InitNullableValueType((*(void**)(localVarBase + __dst)), (void*)(localVarBase + __data), __klass);
  10755. ip += 16;
  10756. continue;
  10757. }
  10758. case HiOpcodeEnum::NullableHasValueVar:
  10759. {
  10760. uint16_t __result = *(uint16_t*)(ip + 2);
  10761. uint16_t __obj = *(uint16_t*)(ip + 4);
  10762. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10763. (*(uint32_t*)(localVarBase + __result)) = IsNullableHasValue((*(void**)(localVarBase + __obj)), __klass);
  10764. ip += 16;
  10765. continue;
  10766. }
  10767. case HiOpcodeEnum::NullableGetValueOrDefaultVarVar:
  10768. {
  10769. uint16_t __dst = *(uint16_t*)(ip + 2);
  10770. uint16_t __obj = *(uint16_t*)(ip + 4);
  10771. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10772. GetNullableValueOrDefault2StackDataByType((void*)(localVarBase + __dst), (*(void**)(localVarBase + __obj)), __klass);
  10773. ip += 16;
  10774. continue;
  10775. }
  10776. case HiOpcodeEnum::NullableGetValueOrDefaultVarVar_1:
  10777. {
  10778. uint16_t __dst = *(uint16_t*)(ip + 2);
  10779. uint16_t __obj = *(uint16_t*)(ip + 4);
  10780. uint16_t __defaultValue = *(uint16_t*)(ip + 6);
  10781. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10782. GetNullableValueOrDefault2StackDataByType((void*)(localVarBase + __dst), (*(void**)(localVarBase + __obj)), (void*)(localVarBase + __defaultValue), __klass);
  10783. ip += 16;
  10784. continue;
  10785. }
  10786. case HiOpcodeEnum::NullableGetValueVarVar:
  10787. {
  10788. uint16_t __dst = *(uint16_t*)(ip + 2);
  10789. uint16_t __obj = *(uint16_t*)(ip + 4);
  10790. Il2CppClass* __klass = ((Il2CppClass*)imi->resolveDatas[*(uint32_t*)(ip + 8)]);
  10791. GetNullableValueOrDefault2StackDataByType((void*)(localVarBase + __dst), (*(void**)(localVarBase + __obj)), nullptr, __klass);
  10792. ip += 16;
  10793. continue;
  10794. }
  10795. case HiOpcodeEnum::InterlockedCompareExchangeVarVarVarVar_i4:
  10796. {
  10797. uint16_t __ret = *(uint16_t*)(ip + 2);
  10798. uint16_t __location = *(uint16_t*)(ip + 4);
  10799. uint16_t __value = *(uint16_t*)(ip + 6);
  10800. uint16_t __comparand = *(uint16_t*)(ip + 8);
  10801. (*(int32_t*)(localVarBase + __ret)) = HiInterlockedCompareExchange((int32_t*)(*(void**)(localVarBase + __location)), (*(int32_t*)(localVarBase + __value)), (*(int32_t*)(localVarBase + __comparand)));
  10802. ip += 16;
  10803. continue;
  10804. }
  10805. case HiOpcodeEnum::InterlockedCompareExchangeVarVarVarVar_i8:
  10806. {
  10807. uint16_t __ret = *(uint16_t*)(ip + 2);
  10808. uint16_t __location = *(uint16_t*)(ip + 4);
  10809. uint16_t __value = *(uint16_t*)(ip + 6);
  10810. uint16_t __comparand = *(uint16_t*)(ip + 8);
  10811. (*(int64_t*)(localVarBase + __ret)) = HiInterlockedCompareExchange((int64_t*)(*(void**)(localVarBase + __location)), (*(int64_t*)(localVarBase + __value)), (*(int64_t*)(localVarBase + __comparand)));
  10812. ip += 16;
  10813. continue;
  10814. }
  10815. case HiOpcodeEnum::InterlockedCompareExchangeVarVarVarVar_pointer:
  10816. {
  10817. uint16_t __ret = *(uint16_t*)(ip + 2);
  10818. uint16_t __location = *(uint16_t*)(ip + 4);
  10819. uint16_t __value = *(uint16_t*)(ip + 6);
  10820. uint16_t __comparand = *(uint16_t*)(ip + 8);
  10821. (*(void**)(localVarBase + __ret)) = HiInterlockedCompareExchange((void**)(*(void**)(localVarBase + __location)), (*(void**)(localVarBase + __value)), (*(void**)(localVarBase + __comparand)));
  10822. ip += 16;
  10823. continue;
  10824. }
  10825. case HiOpcodeEnum::InterlockedExchangeVarVarVar_i4:
  10826. {
  10827. uint16_t __ret = *(uint16_t*)(ip + 2);
  10828. uint16_t __location = *(uint16_t*)(ip + 4);
  10829. uint16_t __value = *(uint16_t*)(ip + 6);
  10830. (*(int32_t*)(localVarBase + __ret)) = HiInterlockedExchange((int32_t*)(*(void**)(localVarBase + __location)), (*(int32_t*)(localVarBase + __value)));
  10831. ip += 8;
  10832. continue;
  10833. }
  10834. case HiOpcodeEnum::InterlockedExchangeVarVarVar_i8:
  10835. {
  10836. uint16_t __ret = *(uint16_t*)(ip + 2);
  10837. uint16_t __location = *(uint16_t*)(ip + 4);
  10838. uint16_t __value = *(uint16_t*)(ip + 6);
  10839. (*(int64_t*)(localVarBase + __ret)) = HiInterlockedExchange((int64_t*)(*(void**)(localVarBase + __location)), (*(int64_t*)(localVarBase + __value)));
  10840. ip += 8;
  10841. continue;
  10842. }
  10843. case HiOpcodeEnum::InterlockedExchangeVarVarVar_pointer:
  10844. {
  10845. uint16_t __ret = *(uint16_t*)(ip + 2);
  10846. uint16_t __location = *(uint16_t*)(ip + 4);
  10847. uint16_t __value = *(uint16_t*)(ip + 6);
  10848. (*(void**)(localVarBase + __ret)) = HiInterlockedExchange((void**)(*(void**)(localVarBase + __location)), (*(void**)(localVarBase + __value)));
  10849. ip += 8;
  10850. continue;
  10851. }
  10852. case HiOpcodeEnum::NewSystemObjectVar:
  10853. {
  10854. uint16_t __obj = *(uint16_t*)(ip + 2);
  10855. (*(Il2CppObject**)(localVarBase + __obj)) = il2cpp::vm::Object::New(il2cpp_defaults.object_class);
  10856. ip += 8;
  10857. continue;
  10858. }
  10859. case HiOpcodeEnum::NewVector2:
  10860. {
  10861. uint16_t __obj = *(uint16_t*)(ip + 2);
  10862. uint16_t __x = *(uint16_t*)(ip + 4);
  10863. uint16_t __y = *(uint16_t*)(ip + 6);
  10864. *(HtVector2f*)(void*)(localVarBase + __obj) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y))};
  10865. ip += 8;
  10866. continue;
  10867. }
  10868. case HiOpcodeEnum::NewVector3_2:
  10869. {
  10870. uint16_t __obj = *(uint16_t*)(ip + 2);
  10871. uint16_t __x = *(uint16_t*)(ip + 4);
  10872. uint16_t __y = *(uint16_t*)(ip + 6);
  10873. *(HtVector3f*)(void*)(localVarBase + __obj) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), 0};
  10874. ip += 8;
  10875. continue;
  10876. }
  10877. case HiOpcodeEnum::NewVector3_3:
  10878. {
  10879. uint16_t __obj = *(uint16_t*)(ip + 2);
  10880. uint16_t __x = *(uint16_t*)(ip + 4);
  10881. uint16_t __y = *(uint16_t*)(ip + 6);
  10882. uint16_t __z = *(uint16_t*)(ip + 8);
  10883. *(HtVector3f*)(void*)(localVarBase + __obj) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), (*(float*)(localVarBase + __z))};
  10884. ip += 16;
  10885. continue;
  10886. }
  10887. case HiOpcodeEnum::NewVector4_2:
  10888. {
  10889. uint16_t __obj = *(uint16_t*)(ip + 2);
  10890. uint16_t __x = *(uint16_t*)(ip + 4);
  10891. uint16_t __y = *(uint16_t*)(ip + 6);
  10892. *(HtVector4f*)(void*)(localVarBase + __obj) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), 0, 0};
  10893. ip += 8;
  10894. continue;
  10895. }
  10896. case HiOpcodeEnum::NewVector4_3:
  10897. {
  10898. uint16_t __obj = *(uint16_t*)(ip + 2);
  10899. uint16_t __x = *(uint16_t*)(ip + 4);
  10900. uint16_t __y = *(uint16_t*)(ip + 6);
  10901. uint16_t __z = *(uint16_t*)(ip + 8);
  10902. *(HtVector4f*)(void*)(localVarBase + __obj) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), (*(float*)(localVarBase + __z)), 0};
  10903. ip += 16;
  10904. continue;
  10905. }
  10906. case HiOpcodeEnum::NewVector4_4:
  10907. {
  10908. uint16_t __obj = *(uint16_t*)(ip + 2);
  10909. uint16_t __x = *(uint16_t*)(ip + 4);
  10910. uint16_t __y = *(uint16_t*)(ip + 6);
  10911. uint16_t __z = *(uint16_t*)(ip + 8);
  10912. uint16_t __w = *(uint16_t*)(ip + 10);
  10913. *(HtVector4f*)(void*)(localVarBase + __obj) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), (*(float*)(localVarBase + __z)), (*(float*)(localVarBase + __w))};
  10914. ip += 16;
  10915. continue;
  10916. }
  10917. case HiOpcodeEnum::CtorVector2:
  10918. {
  10919. uint16_t __obj = *(uint16_t*)(ip + 2);
  10920. uint16_t __x = *(uint16_t*)(ip + 4);
  10921. uint16_t __y = *(uint16_t*)(ip + 6);
  10922. *(HtVector2f*)(*(void**)(localVarBase + __obj)) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y))};
  10923. ip += 8;
  10924. continue;
  10925. }
  10926. case HiOpcodeEnum::CtorVector3_2:
  10927. {
  10928. uint16_t __obj = *(uint16_t*)(ip + 2);
  10929. uint16_t __x = *(uint16_t*)(ip + 4);
  10930. uint16_t __y = *(uint16_t*)(ip + 6);
  10931. *(HtVector3f*)(*(void**)(localVarBase + __obj)) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), 0};
  10932. ip += 8;
  10933. continue;
  10934. }
  10935. case HiOpcodeEnum::CtorVector3_3:
  10936. {
  10937. uint16_t __obj = *(uint16_t*)(ip + 2);
  10938. uint16_t __x = *(uint16_t*)(ip + 4);
  10939. uint16_t __y = *(uint16_t*)(ip + 6);
  10940. uint16_t __z = *(uint16_t*)(ip + 8);
  10941. *(HtVector3f*)(*(void**)(localVarBase + __obj)) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), (*(float*)(localVarBase + __z))};
  10942. ip += 16;
  10943. continue;
  10944. }
  10945. case HiOpcodeEnum::CtorVector4_2:
  10946. {
  10947. uint16_t __obj = *(uint16_t*)(ip + 2);
  10948. uint16_t __x = *(uint16_t*)(ip + 4);
  10949. uint16_t __y = *(uint16_t*)(ip + 6);
  10950. *(HtVector4f*)(*(void**)(localVarBase + __obj)) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), 0, 0};
  10951. ip += 8;
  10952. continue;
  10953. }
  10954. case HiOpcodeEnum::CtorVector4_3:
  10955. {
  10956. uint16_t __obj = *(uint16_t*)(ip + 2);
  10957. uint16_t __x = *(uint16_t*)(ip + 4);
  10958. uint16_t __y = *(uint16_t*)(ip + 6);
  10959. uint16_t __z = *(uint16_t*)(ip + 8);
  10960. *(HtVector4f*)(*(void**)(localVarBase + __obj)) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), (*(float*)(localVarBase + __z)), 0};
  10961. ip += 16;
  10962. continue;
  10963. }
  10964. case HiOpcodeEnum::CtorVector4_4:
  10965. {
  10966. uint16_t __obj = *(uint16_t*)(ip + 2);
  10967. uint16_t __x = *(uint16_t*)(ip + 4);
  10968. uint16_t __y = *(uint16_t*)(ip + 6);
  10969. uint16_t __z = *(uint16_t*)(ip + 8);
  10970. uint16_t __w = *(uint16_t*)(ip + 10);
  10971. *(HtVector4f*)(*(void**)(localVarBase + __obj)) = {(*(float*)(localVarBase + __x)), (*(float*)(localVarBase + __y)), (*(float*)(localVarBase + __z)), (*(float*)(localVarBase + __w))};
  10972. ip += 16;
  10973. continue;
  10974. }
  10975. case HiOpcodeEnum::ArrayGetGenericValueImpl:
  10976. {
  10977. uint16_t __arr = *(uint16_t*)(ip + 2);
  10978. uint16_t __index = *(uint16_t*)(ip + 4);
  10979. uint16_t __value = *(uint16_t*)(ip + 6);
  10980. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10981. int32_t _index = (*(int32_t*)(localVarBase + __index));
  10982. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, _index);
  10983. int32_t _eleSize = il2cpp::vm::Array::GetElementSize(_arr->klass);
  10984. std::memmove((*(void**)(localVarBase + __value)), GET_ARRAY_ELEMENT_ADDRESS(_arr, _index, _eleSize), _eleSize);
  10985. ip += 8;
  10986. continue;
  10987. }
  10988. case HiOpcodeEnum::ArraySetGenericValueImpl:
  10989. {
  10990. uint16_t __arr = *(uint16_t*)(ip + 2);
  10991. uint16_t __index = *(uint16_t*)(ip + 4);
  10992. uint16_t __value = *(uint16_t*)(ip + 6);
  10993. Il2CppArray* _arr = (*(Il2CppArray**)(localVarBase + __arr));
  10994. int32_t _index = (*(int32_t*)(localVarBase + __index));
  10995. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY(_arr, _index);
  10996. int32_t _eleSize = il2cpp::vm::Array::GetElementSize(_arr->klass);
  10997. il2cpp_array_setrefwithsize(_arr, _eleSize, _index, (*(void**)(localVarBase + __value)));
  10998. ip += 8;
  10999. continue;
  11000. }
  11001. case HiOpcodeEnum::NewString:
  11002. {
  11003. uint16_t __str = *(uint16_t*)(ip + 2);
  11004. uint16_t __chars = *(uint16_t*)(ip + 4);
  11005. Il2CppArray* _chars = (*(Il2CppArray**)(localVarBase + __chars));
  11006. CHECK_NOT_NULL_THROW(_chars);
  11007. (*(Il2CppString**)(localVarBase + __str)) = il2cpp::vm::String::NewUtf16((const Il2CppChar*)il2cpp::vm::Array::GetFirstElementAddress(_chars), il2cpp::vm::Array::GetLength(_chars));
  11008. ip += 8;
  11009. continue;
  11010. }
  11011. case HiOpcodeEnum::NewString_2:
  11012. {
  11013. uint16_t __str = *(uint16_t*)(ip + 2);
  11014. uint16_t __chars = *(uint16_t*)(ip + 4);
  11015. uint16_t __startIndex = *(uint16_t*)(ip + 6);
  11016. uint16_t __length = *(uint16_t*)(ip + 8);
  11017. Il2CppArray* _chars = (*(Il2CppArray**)(localVarBase + __chars));
  11018. int32_t _startIndex = (*(uint32_t*)(localVarBase + __startIndex));
  11019. int32_t _length = (*(uint32_t*)(localVarBase + __length));
  11020. CHECK_NOT_NULL_AND_ARRAY_BOUNDARY2(_chars, _startIndex, _length);
  11021. (*(Il2CppString**)(localVarBase + __str)) = il2cpp::vm::String::NewUtf16(((const Il2CppChar*)il2cpp::vm::Array::GetFirstElementAddress(_chars)) + _startIndex, _length);
  11022. ip += 16;
  11023. continue;
  11024. }
  11025. case HiOpcodeEnum::NewString_3:
  11026. {
  11027. uint16_t __str = *(uint16_t*)(ip + 2);
  11028. uint16_t __c = *(uint16_t*)(ip + 4);
  11029. uint16_t __count = *(uint16_t*)(ip + 6);
  11030. int32_t _count = (*(int32_t*)(localVarBase + __count));
  11031. if (_count < 0)
  11032. {
  11033. il2cpp::vm::Exception::RaiseArgumentOutOfRangeException("new string(char c, int count)");
  11034. }
  11035. Il2CppChar _c = (Il2CppChar)(*(uint16_t*)(localVarBase + __c));
  11036. Il2CppString* _str = (*(Il2CppString**)(localVarBase + __str)) = il2cpp::vm::String::NewSize(_count);
  11037. std::fill_n(_str->chars, _count, _c);
  11038. ip += 8;
  11039. continue;
  11040. }
  11041. case HiOpcodeEnum::UnsafeEnumCast:
  11042. {
  11043. uint16_t __dst = *(uint16_t*)(ip + 2);
  11044. uint16_t __src = *(uint16_t*)(ip + 4);
  11045. uint16_t __srcType = *(uint16_t*)(ip + 6);
  11046. (*(int32_t*)(localVarBase + __dst)) = UnsafeEnumCast((void*)(localVarBase + __src), __srcType);
  11047. ip += 8;
  11048. continue;
  11049. }
  11050. case HiOpcodeEnum::AssemblyGetExecutingAssembly:
  11051. {
  11052. uint16_t __ret = *(uint16_t*)(ip + 2);
  11053. (*(Il2CppObject**)(localVarBase + __ret)) = (Il2CppObject*)il2cpp::vm::Reflection::GetAssemblyObject(imi->method->klass->image->assembly);
  11054. ip += 8;
  11055. continue;
  11056. }
  11057. //!!!}}INSTRINCT
  11058. #pragma endregion
  11059. default:
  11060. RaiseExecutionEngineException("");
  11061. break;
  11062. }
  11063. }
  11064. ExitEvalLoop:;
  11065. }
  11066. catch (Il2CppExceptionWrapper ex)
  11067. {
  11068. PREPARE_EXCEPTION(ex.ex, 0);
  11069. FIND_NEXT_EX_HANDLER_OR_UNWIND();
  11070. }
  11071. return;
  11072. UnWindFail:
  11073. IL2CPP_ASSERT(lastUnwindException);
  11074. IL2CPP_ASSERT(interpFrameGroup.GetFrameCount() == 0);
  11075. il2cpp::vm::Exception::Raise(lastUnwindException);
  11076. }
  11077. }
  11078. }