// SPDX-License-Identifier: GPL-3.0 /* Copyright 2021 0KIMS association. This file is generated with [snarkJS](https://github.com/iden3/snarkjs). snarkJS is a free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. snarkJS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with snarkJS. If not, see . */ pragma solidity >=0.7.0 <0.9.0; contract Groth16Verifier_AnonEncNullifierNonRepudiationBatch { // Scalar field size uint256 constant r = 21888242871839275222246405745257275088548364400416034343698204186575808495617; // Base field size uint256 constant q = 21888242871839275222246405745257275088696311157297823662689037894645226208583; // Verification Key data uint256 constant alphax = 20491192805390485299153009773594534940189261866228447918068658471970481763042; uint256 constant alphay = 9383485363053290200918347156157836566562967994039712273449902621266178545958; uint256 constant betax1 = 4252822878758300859123897981450591353533073413197771768651442665752259397132; uint256 constant betax2 = 6375614351688725206403948262868962793625744043794305715222011528459656738731; uint256 constant betay1 = 21847035105528745403288232691147584728191162732299865338377159692350059136679; uint256 constant betay2 = 10505242626370262277552901082094356697409835680220590971873171140371331206856; uint256 constant gammax1 = 11559732032986387107991004021392285783925812861821192530917403151452391805634; uint256 constant gammax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781; uint256 constant gammay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531; uint256 constant gammay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930; uint256 constant deltax1 = 11559732032986387107991004021392285783925812861821192530917403151452391805634; uint256 constant deltax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781; uint256 constant deltay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531; uint256 constant deltay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930; uint256 constant IC0x = 18661541767316051609174264567468970161706692437114182144837966317529115789532; uint256 constant IC0y = 17027817624397861211906159381942351709315937334383652511078424689575984922256; uint256 constant IC1x = 8290530862351464363086184160752799156116351836894934808112164350901009497020; uint256 constant IC1y = 15319886729915817402050471997196227259682200322954908248090765059471382185503; uint256 constant IC2x = 3895265863140239486594319022420933422942926366021271122764983911786669061751; uint256 constant IC2y = 17327131053229940710633510393674716594640387470221166505664354632591126027060; uint256 constant IC3x = 1449505007295467084248032641804391601654994291207407663876088150642837785091; uint256 constant IC3y = 17187662067696344218494831422162203517840819920181510671766900512799614678605; uint256 constant IC4x = 10099011567697851541392630559580266733469712273366016034447917932461193487878; uint256 constant IC4y = 20813361752444827248104593831786670218519414398811879505285591420995782187189; uint256 constant IC5x = 18004425199377525371529555647874305215119082921748137559234210154747556945749; uint256 constant IC5y = 8824742347006013972503911806064482890769074621994728092024948712479345260984; uint256 constant IC6x = 1231559026886333019618949523785147300746132078944098899044081663750754003583; uint256 constant IC6y = 15500350979516205029529371737534331669803248984571185190497619100646001026991; uint256 constant IC7x = 12238173745854709800111972965560423796733003474905855165799601966452622162617; uint256 constant IC7y = 15607387945007972543659352255120789239421323971551977313883398771074916884351; uint256 constant IC8x = 5849783032212342441585915616376612607580431282248188800348204508635735116114; uint256 constant IC8y = 476548274828105873132483807759149012831981934977163602227068520254226664194; uint256 constant IC9x = 9411736581863360600195501109590467308242657590207494410928923388907257423195; uint256 constant IC9y = 12826790969850434087687987242298222760431439689027944791208946116077811771548; uint256 constant IC10x = 4030910874248134719724279512534908541018742485330949595794045081247968733403; uint256 constant IC10y = 3898186474677372216115712850262513281734019825008231550121929178919743992657; uint256 constant IC11x = 2485717264369732880098781373781399025480983377248142051009025546043109157128; uint256 constant IC11y = 20834406849226036020514633978321759495429948963111368416462587343808628572801; uint256 constant IC12x = 1242799285875911358688294329332384114191385369077998568251363037364617544351; uint256 constant IC12y = 3376081760322732119142108066815688816016519628567837563273613249356084171417; uint256 constant IC13x = 7204252439145723688924502464118009669591754835529746135034088644077897905551; uint256 constant IC13y = 8365282111835866924498470373240787835297630709319972194167627362950678500449; uint256 constant IC14x = 8979836886252258551326705741039164391200440592452577851389843897090786713146; uint256 constant IC14y = 7206277366770463323261557604330786290442748007399134061043368053845569588656; uint256 constant IC15x = 14665522835450156568758312477419083599423149140460666047191883830987651034228; uint256 constant IC15y = 18853389212854154339842598865229732616886438372023376577921867997286139347217; uint256 constant IC16x = 20064867886620096505164073983657438324788848100547125643411452062403703032548; uint256 constant IC16y = 21308879866084483596090496085008613048840309566317792908538588655730427649572; uint256 constant IC17x = 5692133256476129917816122722435141004427628811198766593805200341200939889600; uint256 constant IC17y = 2228421897819673848227891746754554247485634268175495903901928091821084006471; uint256 constant IC18x = 10878386928396372493660082468181714405128132539751954845186162888724789879862; uint256 constant IC18y = 11751297315356770164073475859142842045546680432360068446077370708632370337570; uint256 constant IC19x = 7878803049712230516002896310567649058877767305290284870242285034970201116817; uint256 constant IC19y = 13314629479608238209933726814482347289298884464342359647367708415935874418364; uint256 constant IC20x = 1195224455429648431963291870582196062923120397098370405056724197378324019422; uint256 constant IC20y = 7975206700792022613867883291086240529231152361757062680082625100551505888240; uint256 constant IC21x = 444765178051308857659823814925713982629778986079628850498671227417536814154; uint256 constant IC21y = 14277552638210035568437016107733939935858665282529728403462105815520159990434; uint256 constant IC22x = 12357591404805372411800727989102933533823714100783743695033351594114806450233; uint256 constant IC22y = 14388992151593914840590387433478950475343604700279104913967191543161804967834; uint256 constant IC23x = 4900402163762500889360514361152011922586605082345569977948363472817950660764; uint256 constant IC23y = 6429331276349713868990813736711227296990808268499622619610628135846460097754; uint256 constant IC24x = 11154726511982029141645315006924033758262760296660166081680315705025567290645; uint256 constant IC24y = 12770285530422661109936260285973218220644741626531995324675451808559081733575; uint256 constant IC25x = 19879263575959414331826258555076176656543000145733112025663448309264492658472; uint256 constant IC25y = 21541443130295020362222619180984657687896619294258462260951100925940786403113; uint256 constant IC26x = 17787518551766473778594642369705227423696242964540959613897554191269415622464; uint256 constant IC26y = 12156857218917811148992815604201651161080854530535588689566166293519599538546; uint256 constant IC27x = 5440827282964610135135047142455924639215304533269399159397221360244991102465; uint256 constant IC27y = 2617394538062844516495717636719464217438016030915865662682607810157428365528; uint256 constant IC28x = 9664552259251498518996360833493584744677794780700907420840873984801312675579; uint256 constant IC28y = 5901280610165391679957970148553735733501272805213912300338186623554102410722; uint256 constant IC29x = 10938993605597136384117662877572744577688062648827496000956300815584249820446; uint256 constant IC29y = 5244789693010409670567578918852392570628512842358679798750140752397197949786; uint256 constant IC30x = 21063171588876583036144337154903722726158485352441218100418049040644625951853; uint256 constant IC30y = 6137455975634462514233728830437970084776104358495548504902739966595105088060; uint256 constant IC31x = 4285453364254616050143720909650203229606601880807582160314126106842627787308; uint256 constant IC31y = 15134983436856213659499917391343544237208140799667398421058415399167650631064; uint256 constant IC32x = 18813748264526039931865361291873463440809627382704273654505753787409757183772; uint256 constant IC32y = 19283432077583827169463586783705859172919693178783513641664439121147734315924; uint256 constant IC33x = 5730840652648682976368351799112185356414756618795701057881438711508234537407; uint256 constant IC33y = 21770378519580684365049645389060428842136856801212203451989491268626539195644; uint256 constant IC34x = 21192703526448061453505020688096201733772674834786965503542865889692571117098; uint256 constant IC34y = 17904920392426946092839216956304265580142734167486168296609137207620441904906; uint256 constant IC35x = 10530748668942367576112655924143186112401460144542087868040130658706819931389; uint256 constant IC35y = 9440139834894339716077331046947621494338984756765011023212787915836028468902; uint256 constant IC36x = 6084044783537120148872300957258020219660731766446295703377014074578882336665; uint256 constant IC36y = 21567392058984849200189968433639072568029807708112007538841869868188578282879; uint256 constant IC37x = 14405662286404153023584090155453350311513411721189007121167398354907313900355; uint256 constant IC37y = 14790890767138431160978253615991770487197902157843528246503379902478314270349; uint256 constant IC38x = 11938481876387470124087593615968509210067951431803427314659516551098397053931; uint256 constant IC38y = 19347112465328291637986581591944982535300004317254694362960421355197724656245; uint256 constant IC39x = 1075463559544134625279607002485395601183611503949963087105677039498948248717; uint256 constant IC39y = 4142105785035347126180725749797176989767922193424152066799961615192068304984; uint256 constant IC40x = 1693295402625411914931052475425764915688700998224995096798561433706914704876; uint256 constant IC40y = 18717955454546563713384814107764143502434638172274849745708370875986600185599; uint256 constant IC41x = 8922612364071929507704452489624681249999652907719326689742117062171828793123; uint256 constant IC41y = 4855092092685682119218308613340268934094886876805204874931882681238076408275; uint256 constant IC42x = 5411403082845296716589054160110975182414555527533966717627019018728583277680; uint256 constant IC42y = 5654580150674182446974979733548675671299189711073467011435367646037262262067; uint256 constant IC43x = 20223726568004953115170428701772243422024277319355489039095000247419921818190; uint256 constant IC43y = 17393301240661145525114573592672198661519746932908778040755807541442745325010; uint256 constant IC44x = 21418366877845232999923590788274663390891009929525345580697301726741618242760; uint256 constant IC44y = 7259320239673760204603045374096441112438031907493183437941838108467610268995; uint256 constant IC45x = 2499800344704057769605341561282197921448539905608472116741371605823137078226; uint256 constant IC45y = 1829761701930088272022024336229999930163862509028298356800355807529899698822; uint256 constant IC46x = 17627540420814572210327263177013308974131079973326762092203694886755545779963; uint256 constant IC46y = 9725078955602846786266467152728676384174538561848271866608047165584565867315; uint256 constant IC47x = 3051018737292416739311929157133564012575859300469614483117733117240202186724; uint256 constant IC47y = 14168470224022205800500122102283090607918111099020213879413621019447853958482; uint256 constant IC48x = 19054427353388656591808893031730873474293337301315199690994751079717690031677; uint256 constant IC48y = 9662347661031655835453719196504859444616800481582278955367667203258520578308; uint256 constant IC49x = 16854732429937899147829293717912988825386084928935551183599465403046107874955; uint256 constant IC49y = 8548024066405243757853737878993122028984960944975486911133020489399069480802; uint256 constant IC50x = 2847044521256689534601247044437409625138059084218526002670818067271565365755; uint256 constant IC50y = 4326278511430235987737935932840835942332298888501572236894677527157923052380; uint256 constant IC51x = 9015446185384557285562998107247928170898367982310026835510136352364491945259; uint256 constant IC51y = 5255896410873764053401201830498770292646731025609056693183008255418244450285; uint256 constant IC52x = 4950103376930366314730429983358661352945513859143354243861328749032331458691; uint256 constant IC52y = 17416747929840777259377319178740179493934338441600715127231306249291806560891; uint256 constant IC53x = 13081050266706996053359757601036140273020997174257563376032724368661472665850; uint256 constant IC53y = 372887152247490211526848626935646291154336529920869077889318378962361920112; uint256 constant IC54x = 12429094425269181398633639505581359149719082500057914656650335660243471270674; uint256 constant IC54y = 20111268734414621426239549019444859455870747897237472432664765455809484207042; uint256 constant IC55x = 17198838342969691979797131840543950415931395481096816274517217440538456056682; uint256 constant IC55y = 19494354287961014260116083958000795960241014177072245313106005103088466598445; uint256 constant IC56x = 21832079327400083902152098762393081352903491328163852887064940857763596841453; uint256 constant IC56y = 6732737075767086157315264129728085531210069527299646319990562878113433676733; uint256 constant IC57x = 8900365497585850977601232421640686786459031413806364904415786280025984860449; uint256 constant IC57y = 10662771739912792565888366657136133399971990646871514672555272756211537563273; uint256 constant IC58x = 18464224454680615430675080145928097268581104620658243685754317396330660638868; uint256 constant IC58y = 2472001674480643113511972342454707735788777619454490705090296712279037741804; uint256 constant IC59x = 14859821171835094504829172401985414481528907040537745901756395383093345667417; uint256 constant IC59y = 18869834216287495376563325850957655139335708115583959439244491002121516523587; uint256 constant IC60x = 3046941047900164081321057301675318957704472711407257436629522128887351880960; uint256 constant IC60y = 1907267854362391848955157464815382825537910372695376808622154862258739350240; uint256 constant IC61x = 13494947937733797908758256330651992273293776454294282943288109392350144526768; uint256 constant IC61y = 19052993329977246557079453635349172401839766276542928512699463255626509690329; uint256 constant IC62x = 4776818335677398018464972510234543575208922620199842141498075905239781590615; uint256 constant IC62y = 4366976049582490160511746449678825906064258487058624930970381588651901769101; uint256 constant IC63x = 15771138750078864180894925618157182284945058455765793215029251683233094841821; uint256 constant IC63y = 10985279413987590693157536452405134612905339861193780535157538615671888977690; uint256 constant IC64x = 20572905388774684163930079237409588977220833645442654071317838448712165795310; uint256 constant IC64y = 16903825531453953399509160506896585992516050819869650431832409998065353914194; uint256 constant IC65x = 16564793720980064340325329377478679173982206308998957537443537050931908055865; uint256 constant IC65y = 8705970543387410098124627570877470071227610203110874911312854655964794097296; uint256 constant IC66x = 5272121417098614660475519610432691477226381620982090847505498486255158093666; uint256 constant IC66y = 14944469529178805605746669750753537613866815635013215869688353526019435635150; uint256 constant IC67x = 2465517809001382262961675129288014791030922623400271267126000847050848568270; uint256 constant IC67y = 2407342817629996425523491601408501847093792894098903929519151472202270711753; uint256 constant IC68x = 135616403413088980825757335695315728998428341432750229618766193657696023691; uint256 constant IC68y = 4852872251287625001707309288598475237032088906433141550905197071209753375401; uint256 constant IC69x = 18847810726107961677955441820675552242108741380857994112186261043387433580602; uint256 constant IC69y = 4727817968701380360303074114482241305342688945092636608075034425998111515333; uint256 constant IC70x = 11647168154675375375969660306071353878588601716209484097884932063094745013732; uint256 constant IC70y = 15204911198250064580988373088535558827261157431453326970556131594345132469906; uint256 constant IC71x = 18964289156676730415102685012481736402637180263062196836793875559124505749944; uint256 constant IC71y = 7381536515170724044454339699377821825904350903963573383615265003638603277741; uint256 constant IC72x = 18042335499048138689410755793827319388072868565106993425716046286627875205251; uint256 constant IC72y = 15891247248140703723895051525609989237582812200824079645866510533635857984741; uint256 constant IC73x = 1159486623064006693067951596323604993592829542758052587339054811496429762569; uint256 constant IC73y = 9546786506258753514595486502278731091679917184293435425677619292798554375137; uint256 constant IC74x = 17487262759523522289818146224159087189091564846330103660288857591582913625946; uint256 constant IC74y = 20221327525378622776607060237318445868782593024076036342172033358035678144175; uint256 constant IC75x = 14609680057861434190045318669467053401349965426626083168819493818144106553235; uint256 constant IC75y = 16502019672201373271942885049246645655639885184739375438821347436111995759785; uint256 constant IC76x = 6391507738993717621965956932278424933242868423385013740480990031737412227471; uint256 constant IC76y = 568402907950443456493050036226578902911484018968368279168622215548724685855; uint256 constant IC77x = 20943022084382132046175910990582149916492501026179582753629511105908454975439; uint256 constant IC77y = 4816473311686872756271209654094467494758420097327068950556634997356359807723; uint256 constant IC78x = 6946988740001009508149355972939855868485883758419715303270425179881978895093; uint256 constant IC78y = 17843140290940196241759859422462552201717859857280533133922678202805242366221; uint256 constant IC79x = 13492105886886276705432681920086878786729006584295332118422032546407372914130; uint256 constant IC79y = 6608918805134881986552650629293993158549830141069004899863810729146126262736; uint256 constant IC80x = 5164147440758692246579351640169841712431571007562520170603114187079672005697; uint256 constant IC80y = 15938644314887398033226147609293834494627813517637109800668356069657148782843; uint256 constant IC81x = 18168763744592149673824797160897842324690653219489944269079766908599462759958; uint256 constant IC81y = 21486624939690409064052442338314399998080937220263845437663393119906889818817; uint256 constant IC82x = 13125636961831578248000769058943432273936814142540619927929334205755160511102; uint256 constant IC82y = 4743025077654646418671592869443078863169252049573567357294567294100287446335; uint256 constant IC83x = 19137467410506969218793974657644565416246693234289250668021746477663753729830; uint256 constant IC83y = 11330568293402502526494407671052677752822871957474160746494377147236621415110; uint256 constant IC84x = 7812014271414356947418133088851333947862738989513783358985866880257954104936; uint256 constant IC84y = 7344391555329317602836876400481223521644563396291002175867293608953515135759; uint256 constant IC85x = 2505833952088428533065273449357958818248012931924167527089480179409533148665; uint256 constant IC85y = 216584842153102998394386138038331022820004378489561403536169979397685792016; uint256 constant IC86x = 4177701333026875117285121192104523363912331905743147453596106447458824934808; uint256 constant IC86y = 4718163794557104373228888426064680473587017940820613475684560578732698089652; uint256 constant IC87x = 6772700591886189227393721558819762843449076585387657355939587014845314634020; uint256 constant IC87y = 16139733661722304090182689345599044092552785698561210762817729102853011710215; uint256 constant IC88x = 5870453983196032707637131118036890401739868782326059275242866306823552244871; uint256 constant IC88y = 8932553547399455690178561037143849196484056798407338781245637942548231878392; uint256 constant IC89x = 592010354761867168309306218451998092163597473030477622853003123746521651085; uint256 constant IC89y = 16774535586837785088908866027752694064246248093940498881994929993119839490788; uint256 constant IC90x = 21036093175151368402032437427146732841518492702138761361562487105214365562936; uint256 constant IC90y = 9473952893497293592668316417218760211325873477800389494596940116333270257950; uint256 constant IC91x = 11910417168267165196166681651489397740738495431878894208887316096741483922299; uint256 constant IC91y = 11675910865460438395364617198484948759908103100872279839511216552033174727773; uint256 constant IC92x = 19752424308229585100076978526907742333983089067727449498295756167623086361487; uint256 constant IC92y = 4990245449506153087404016469209638705038579736418075571144063397891773186575; uint256 constant IC93x = 13195091987990165518158708565729317824979193814880020441249981877585976612151; uint256 constant IC93y = 7028253471244299500124016857410243619476977456399069992147457182506951023461; uint256 constant IC94x = 16054355012960747739512939854225639195460158858777087549521950281892165726291; uint256 constant IC94y = 21786927862960182409007865612175949742399509392956899474369467964496599144167; uint256 constant IC95x = 15850538787557761732433008924365328782617538546072231385830099279297832606923; uint256 constant IC95y = 15366369608274860188065197882438290540374088174467927583150666534465493801214; uint256 constant IC96x = 4300245880274050408303572259804740576579700465315016679772167012413722260060; uint256 constant IC96y = 11168535071890702208038176318385291274179003858260175657013229942964148992275; uint256 constant IC97x = 13636519539976731378435294734072471367642438716628600496375507983251648554538; uint256 constant IC97y = 7204525624678612782955151743223150687801204950498704135076407306210739670238; uint256 constant IC98x = 17991460694531456743164170316251470028989220444721668620853690302216768989783; uint256 constant IC98y = 15691078156034557980167065705535002816884065389588885034466254405238230228077; uint256 constant IC99x = 1070011449150845926480182574709066308750771831902108141629633808907164176057; uint256 constant IC99y = 13927174290784804930519348748870326322284493292949248096811434553497450396059; uint256 constant IC100x = 8338577724146839700941475178822890445374170196498217399498434071625919202422; uint256 constant IC100y = 2688989313896548898744301395790274562621167113633702207955842334376940254711; uint256 constant IC101x = 9437699271768812204644228843099583518043513113249726789653895387646747002024; uint256 constant IC101y = 11618437177218039022402738164051598179334836563956404442882200750690398399493; uint256 constant IC102x = 1578462578225669314462013356257096712213168979041299424708413401945313546551; uint256 constant IC102y = 7662689360716154920223433981140096778548695294186947422788729050649143399761; uint256 constant IC103x = 16632349528557961222954699765821427121373405318547654427023806751686620821802; uint256 constant IC103y = 19788864921591399658904035416649564158003782631038837252956658781921532876740; uint256 constant IC104x = 2128222222182231681294985795047114361088524924266638979016904427793859499009; uint256 constant IC104y = 4277686753151850461432277996986988236361314044952001045089080696267505660602; uint256 constant IC105x = 17974876206734405508378195193436266162436944484609660774541180888678807432661; uint256 constant IC105y = 16634598814940740854310691800912580614319313365243037093541800170862459230004; uint256 constant IC106x = 16232011361908395180117731401023228687384416416707856387243078379659682428005; uint256 constant IC106y = 7145958720937512629523974303440226912915909129115037111610414298361630562767; uint256 constant IC107x = 13760365117793325818833401137286190085192112246956902579325376135059002559868; uint256 constant IC107y = 15257964259747735593147038335203563744576715819871245594043780729633317148353; uint256 constant IC108x = 13118864062189249465555873002994238255601526825261607449928594519142068712427; uint256 constant IC108y = 16801874707522164453847486353006599208417362706561212219869999224390739183766; uint256 constant IC109x = 12953388045150449412424600509780118582310290208827538761630220836059136281281; uint256 constant IC109y = 17720559438076785150524497494734515215701577439362321347210540282529058433508; uint256 constant IC110x = 4966127559361948475617770613833731684135841462261921997602151083975129743116; uint256 constant IC110y = 8012766292601003262418068667878583758765369609693160542863832769539254636288; uint256 constant IC111x = 12692096397667445903693288153542731474948538324887280315333267807360833711361; uint256 constant IC111y = 8684340216217747644297378067680446004910387126110247728358273461605498132878; uint256 constant IC112x = 12877956090250882067894738227427381144263240018034897959697660480469444341115; uint256 constant IC112y = 6211381135153817287877555950024085077042852882501814448897921704987647196472; uint256 constant IC113x = 659770306870350570897892051163537904674951266570793463636499958918018428562; uint256 constant IC113y = 12453278873140895281212078890345999710807205115876819468700753575105573110893; uint256 constant IC114x = 7338083693437629218199944306550052108788450439176026309289578278480290795679; uint256 constant IC114y = 20935831499875222894045350883392610374538055122881352280747981270888103508808; uint256 constant IC115x = 4594859155428785277107262753966455397566045047703108351938986012975895574937; uint256 constant IC115y = 7697489625213282761045965412908181593405880587681996890854491044922798077564; uint256 constant IC116x = 7898493897712314099134560733110150037469241454953928748134187904324643791478; uint256 constant IC116y = 632122482381315233606083278123007374614220017554361380342687580459039996551; uint256 constant IC117x = 11547759338043179459584933658594503946808373542592988045763206018569484614450; uint256 constant IC117y = 12438507721294506429607783480899396172561798618616266439222769076768719587024; uint256 constant IC118x = 18641332412692704412439399709024973196790857102994183984502898107209827371772; uint256 constant IC118y = 14478357176691107522915384916947576861528919469957065035497833297994388611523; uint256 constant IC119x = 18019770930023736384162142407858527890936049288320955605364360097415528805966; uint256 constant IC119y = 11332165643505631671567050887712040658787257577707792852606751747062999361951; uint256 constant IC120x = 13719946942659072110467615635364787802367718571130218513536297068122348247640; uint256 constant IC120y = 18932787446749841193741287728390134070256641250370340025760086600151068120064; uint256 constant IC121x = 15054552175146781544292770176608519445873402384752274218690208337114979595792; uint256 constant IC121y = 6022330412585513398170693857506737440147583098989026207654328851259192034013; uint256 constant IC122x = 5978097498307073903973955050797360955952283619914587179274380809660135819196; uint256 constant IC122y = 433112069170868003651130734325133467301541869573957419515713159608622940175; uint256 constant IC123x = 20738358652444273895584321742089368899185457896411968268086023709945996987389; uint256 constant IC123y = 19018894786191096173754261799180572914227779342747188137364137390983551050932; uint256 constant IC124x = 10935515062910578438518132632416896975183122492204340883296470512180521521000; uint256 constant IC124y = 2019285704406665910827875212121017343442281043939055639568639179972745764273; uint256 constant IC125x = 8393385306710683132458618657121146267854718322752084316825636672458406916298; uint256 constant IC125y = 11894099051820843180180506672172607724756405102770646136898715531354756637921; uint256 constant IC126x = 8043043035974068680873763385362303941949849255204123818976526720765694463039; uint256 constant IC126y = 15245258043704328774075191981706781787687192133387841062832399535016760697358; uint256 constant IC127x = 6076241232232292768663888683478869833053095948739488447618270301952700702950; uint256 constant IC127y = 20878501097034512716289568689859640040336240225687713402024304244764716992167; uint256 constant IC128x = 17753973726008049585887147469506734982240386342125953472863039376697241730192; uint256 constant IC128y = 7051290430998908913627034130037114178953517532455790253696486802634255899985; uint256 constant IC129x = 1985587336066591256280794130084774320803065876976960084216916229724387476627; uint256 constant IC129y = 3889243609530146618257402435361575163870914976286241938292678621631567346143; uint256 constant IC130x = 6634970296573135512389765076017343752859024409649032683543637039375332808525; uint256 constant IC130y = 15966619933452949040918604939484182759800552381828662858775048526956114256705; uint256 constant IC131x = 19628815264424160203951841207921657472012227659307250633981411135161553546401; uint256 constant IC131y = 21868611625363254355250868481892296156831624889419415297811375266502055903460; uint256 constant IC132x = 11253237340453400273867381869670031578140381174765665226001979333343997691513; uint256 constant IC132y = 2529642089695403767325757418050210060529631676845425922036346228804421885545; uint256 constant IC133x = 9609229803153159713516361850603076519168741444703501375215322555296743170441; uint256 constant IC133y = 1287183483591085350540466651218974832971283390988562712006393750028914031262; uint256 constant IC134x = 21773169572290895568375997015909818670767363261950017434137922123240071259863; uint256 constant IC134y = 15201428083692637253382742313091169132558991387393234099584367999952597481169; uint256 constant IC135x = 10599675637490795971958716715569609592344155201544988423675938758371887819369; uint256 constant IC135y = 9272763735736652094491328337872020737586458825532222308338995688637811824064; uint256 constant IC136x = 1304884794851910823911000709881813913715414826609226108759814862983933566778; uint256 constant IC136y = 2866129546853880019936751822696697110679855277297822345169975382429960028; uint256 constant IC137x = 10725257147826442844445920934366669654630633210174286077723500267758227047730; uint256 constant IC137y = 19698820009728443665092786925134354076096325791325625734640902370926755579826; uint256 constant IC138x = 7329412528370528037468640299657826101833314734621528816592501093012325171483; uint256 constant IC138y = 21886218529031566339052638076578060810139862953487250754820625908936467198528; uint256 constant IC139x = 15325247450512183413091667626770034840206677417038972436709414199147527730669; uint256 constant IC139y = 2780639551532060247341383297429310301096660658271595280898955088925035369092; uint256 constant IC140x = 17634159762650310699815924219573656194017129978109901516921015680921559888822; uint256 constant IC140y = 1567055382280427138910619130587010817603590818715885828109271617021348733624; // Memory data uint16 constant pVk = 0; uint16 constant pPairing = 128; uint16 constant pLastMem = 896; function verifyProof(uint[2] calldata _pA, uint[2][2] calldata _pB, uint[2] calldata _pC, uint[140] calldata _pubSignals) public view returns (bool) { assembly { function checkField(v) { if iszero(lt(v, r)) { mstore(0, 0) return(0, 0x20) } } // G1 function to multiply a G1 value(x,y) to value in an address function g1_mulAccC(pR, x, y, s) { let success let mIn := mload(0x40) mstore(mIn, x) mstore(add(mIn, 32), y) mstore(add(mIn, 64), s) success := staticcall(sub(gas(), 2000), 7, mIn, 96, mIn, 64) if iszero(success) { mstore(0, 0) return(0, 0x20) } mstore(add(mIn, 64), mload(pR)) mstore(add(mIn, 96), mload(add(pR, 32))) success := staticcall(sub(gas(), 2000), 6, mIn, 128, pR, 64) if iszero(success) { mstore(0, 0) return(0, 0x20) } } function checkPairing(pA, pB, pC, pubSignals, pMem) -> isOk { let _pPairing := add(pMem, pPairing) let _pVk := add(pMem, pVk) mstore(_pVk, IC0x) mstore(add(_pVk, 32), IC0y) // Compute the linear combination vk_x g1_mulAccC(_pVk, IC1x, IC1y, calldataload(add(pubSignals, 0))) g1_mulAccC(_pVk, IC2x, IC2y, calldataload(add(pubSignals, 32))) g1_mulAccC(_pVk, IC3x, IC3y, calldataload(add(pubSignals, 64))) g1_mulAccC(_pVk, IC4x, IC4y, calldataload(add(pubSignals, 96))) g1_mulAccC(_pVk, IC5x, IC5y, calldataload(add(pubSignals, 128))) g1_mulAccC(_pVk, IC6x, IC6y, calldataload(add(pubSignals, 160))) g1_mulAccC(_pVk, IC7x, IC7y, calldataload(add(pubSignals, 192))) g1_mulAccC(_pVk, IC8x, IC8y, calldataload(add(pubSignals, 224))) g1_mulAccC(_pVk, IC9x, IC9y, calldataload(add(pubSignals, 256))) g1_mulAccC(_pVk, IC10x, IC10y, calldataload(add(pubSignals, 288))) g1_mulAccC(_pVk, IC11x, IC11y, calldataload(add(pubSignals, 320))) g1_mulAccC(_pVk, IC12x, IC12y, calldataload(add(pubSignals, 352))) g1_mulAccC(_pVk, IC13x, IC13y, calldataload(add(pubSignals, 384))) g1_mulAccC(_pVk, IC14x, IC14y, calldataload(add(pubSignals, 416))) g1_mulAccC(_pVk, IC15x, IC15y, calldataload(add(pubSignals, 448))) g1_mulAccC(_pVk, IC16x, IC16y, calldataload(add(pubSignals, 480))) g1_mulAccC(_pVk, IC17x, IC17y, calldataload(add(pubSignals, 512))) g1_mulAccC(_pVk, IC18x, IC18y, calldataload(add(pubSignals, 544))) g1_mulAccC(_pVk, IC19x, IC19y, calldataload(add(pubSignals, 576))) g1_mulAccC(_pVk, IC20x, IC20y, calldataload(add(pubSignals, 608))) g1_mulAccC(_pVk, IC21x, IC21y, calldataload(add(pubSignals, 640))) g1_mulAccC(_pVk, IC22x, IC22y, calldataload(add(pubSignals, 672))) g1_mulAccC(_pVk, IC23x, IC23y, calldataload(add(pubSignals, 704))) g1_mulAccC(_pVk, IC24x, IC24y, calldataload(add(pubSignals, 736))) g1_mulAccC(_pVk, IC25x, IC25y, calldataload(add(pubSignals, 768))) g1_mulAccC(_pVk, IC26x, IC26y, calldataload(add(pubSignals, 800))) g1_mulAccC(_pVk, IC27x, IC27y, calldataload(add(pubSignals, 832))) g1_mulAccC(_pVk, IC28x, IC28y, calldataload(add(pubSignals, 864))) g1_mulAccC(_pVk, IC29x, IC29y, calldataload(add(pubSignals, 896))) g1_mulAccC(_pVk, IC30x, IC30y, calldataload(add(pubSignals, 928))) g1_mulAccC(_pVk, IC31x, IC31y, calldataload(add(pubSignals, 960))) g1_mulAccC(_pVk, IC32x, IC32y, calldataload(add(pubSignals, 992))) g1_mulAccC(_pVk, IC33x, IC33y, calldataload(add(pubSignals, 1024))) g1_mulAccC(_pVk, IC34x, IC34y, calldataload(add(pubSignals, 1056))) g1_mulAccC(_pVk, IC35x, IC35y, calldataload(add(pubSignals, 1088))) g1_mulAccC(_pVk, IC36x, IC36y, calldataload(add(pubSignals, 1120))) g1_mulAccC(_pVk, IC37x, IC37y, calldataload(add(pubSignals, 1152))) g1_mulAccC(_pVk, IC38x, IC38y, calldataload(add(pubSignals, 1184))) g1_mulAccC(_pVk, IC39x, IC39y, calldataload(add(pubSignals, 1216))) g1_mulAccC(_pVk, IC40x, IC40y, calldataload(add(pubSignals, 1248))) g1_mulAccC(_pVk, IC41x, IC41y, calldataload(add(pubSignals, 1280))) g1_mulAccC(_pVk, IC42x, IC42y, calldataload(add(pubSignals, 1312))) g1_mulAccC(_pVk, IC43x, IC43y, calldataload(add(pubSignals, 1344))) g1_mulAccC(_pVk, IC44x, IC44y, calldataload(add(pubSignals, 1376))) g1_mulAccC(_pVk, IC45x, IC45y, calldataload(add(pubSignals, 1408))) g1_mulAccC(_pVk, IC46x, IC46y, calldataload(add(pubSignals, 1440))) g1_mulAccC(_pVk, IC47x, IC47y, calldataload(add(pubSignals, 1472))) g1_mulAccC(_pVk, IC48x, IC48y, calldataload(add(pubSignals, 1504))) g1_mulAccC(_pVk, IC49x, IC49y, calldataload(add(pubSignals, 1536))) g1_mulAccC(_pVk, IC50x, IC50y, calldataload(add(pubSignals, 1568))) g1_mulAccC(_pVk, IC51x, IC51y, calldataload(add(pubSignals, 1600))) g1_mulAccC(_pVk, IC52x, IC52y, calldataload(add(pubSignals, 1632))) g1_mulAccC(_pVk, IC53x, IC53y, calldataload(add(pubSignals, 1664))) g1_mulAccC(_pVk, IC54x, IC54y, calldataload(add(pubSignals, 1696))) g1_mulAccC(_pVk, IC55x, IC55y, calldataload(add(pubSignals, 1728))) g1_mulAccC(_pVk, IC56x, IC56y, calldataload(add(pubSignals, 1760))) g1_mulAccC(_pVk, IC57x, IC57y, calldataload(add(pubSignals, 1792))) g1_mulAccC(_pVk, IC58x, IC58y, calldataload(add(pubSignals, 1824))) g1_mulAccC(_pVk, IC59x, IC59y, calldataload(add(pubSignals, 1856))) g1_mulAccC(_pVk, IC60x, IC60y, calldataload(add(pubSignals, 1888))) g1_mulAccC(_pVk, IC61x, IC61y, calldataload(add(pubSignals, 1920))) g1_mulAccC(_pVk, IC62x, IC62y, calldataload(add(pubSignals, 1952))) g1_mulAccC(_pVk, IC63x, IC63y, calldataload(add(pubSignals, 1984))) g1_mulAccC(_pVk, IC64x, IC64y, calldataload(add(pubSignals, 2016))) g1_mulAccC(_pVk, IC65x, IC65y, calldataload(add(pubSignals, 2048))) g1_mulAccC(_pVk, IC66x, IC66y, calldataload(add(pubSignals, 2080))) g1_mulAccC(_pVk, IC67x, IC67y, calldataload(add(pubSignals, 2112))) g1_mulAccC(_pVk, IC68x, IC68y, calldataload(add(pubSignals, 2144))) g1_mulAccC(_pVk, IC69x, IC69y, calldataload(add(pubSignals, 2176))) g1_mulAccC(_pVk, IC70x, IC70y, calldataload(add(pubSignals, 2208))) g1_mulAccC(_pVk, IC71x, IC71y, calldataload(add(pubSignals, 2240))) g1_mulAccC(_pVk, IC72x, IC72y, calldataload(add(pubSignals, 2272))) g1_mulAccC(_pVk, IC73x, IC73y, calldataload(add(pubSignals, 2304))) g1_mulAccC(_pVk, IC74x, IC74y, calldataload(add(pubSignals, 2336))) g1_mulAccC(_pVk, IC75x, IC75y, calldataload(add(pubSignals, 2368))) g1_mulAccC(_pVk, IC76x, IC76y, calldataload(add(pubSignals, 2400))) g1_mulAccC(_pVk, IC77x, IC77y, calldataload(add(pubSignals, 2432))) g1_mulAccC(_pVk, IC78x, IC78y, calldataload(add(pubSignals, 2464))) g1_mulAccC(_pVk, IC79x, IC79y, calldataload(add(pubSignals, 2496))) g1_mulAccC(_pVk, IC80x, IC80y, calldataload(add(pubSignals, 2528))) g1_mulAccC(_pVk, IC81x, IC81y, calldataload(add(pubSignals, 2560))) g1_mulAccC(_pVk, IC82x, IC82y, calldataload(add(pubSignals, 2592))) g1_mulAccC(_pVk, IC83x, IC83y, calldataload(add(pubSignals, 2624))) g1_mulAccC(_pVk, IC84x, IC84y, calldataload(add(pubSignals, 2656))) g1_mulAccC(_pVk, IC85x, IC85y, calldataload(add(pubSignals, 2688))) g1_mulAccC(_pVk, IC86x, IC86y, calldataload(add(pubSignals, 2720))) g1_mulAccC(_pVk, IC87x, IC87y, calldataload(add(pubSignals, 2752))) g1_mulAccC(_pVk, IC88x, IC88y, calldataload(add(pubSignals, 2784))) g1_mulAccC(_pVk, IC89x, IC89y, calldataload(add(pubSignals, 2816))) g1_mulAccC(_pVk, IC90x, IC90y, calldataload(add(pubSignals, 2848))) g1_mulAccC(_pVk, IC91x, IC91y, calldataload(add(pubSignals, 2880))) g1_mulAccC(_pVk, IC92x, IC92y, calldataload(add(pubSignals, 2912))) g1_mulAccC(_pVk, IC93x, IC93y, calldataload(add(pubSignals, 2944))) g1_mulAccC(_pVk, IC94x, IC94y, calldataload(add(pubSignals, 2976))) g1_mulAccC(_pVk, IC95x, IC95y, calldataload(add(pubSignals, 3008))) g1_mulAccC(_pVk, IC96x, IC96y, calldataload(add(pubSignals, 3040))) g1_mulAccC(_pVk, IC97x, IC97y, calldataload(add(pubSignals, 3072))) g1_mulAccC(_pVk, IC98x, IC98y, calldataload(add(pubSignals, 3104))) g1_mulAccC(_pVk, IC99x, IC99y, calldataload(add(pubSignals, 3136))) g1_mulAccC(_pVk, IC100x, IC100y, calldataload(add(pubSignals, 3168))) g1_mulAccC(_pVk, IC101x, IC101y, calldataload(add(pubSignals, 3200))) g1_mulAccC(_pVk, IC102x, IC102y, calldataload(add(pubSignals, 3232))) g1_mulAccC(_pVk, IC103x, IC103y, calldataload(add(pubSignals, 3264))) g1_mulAccC(_pVk, IC104x, IC104y, calldataload(add(pubSignals, 3296))) g1_mulAccC(_pVk, IC105x, IC105y, calldataload(add(pubSignals, 3328))) g1_mulAccC(_pVk, IC106x, IC106y, calldataload(add(pubSignals, 3360))) g1_mulAccC(_pVk, IC107x, IC107y, calldataload(add(pubSignals, 3392))) g1_mulAccC(_pVk, IC108x, IC108y, calldataload(add(pubSignals, 3424))) g1_mulAccC(_pVk, IC109x, IC109y, calldataload(add(pubSignals, 3456))) g1_mulAccC(_pVk, IC110x, IC110y, calldataload(add(pubSignals, 3488))) g1_mulAccC(_pVk, IC111x, IC111y, calldataload(add(pubSignals, 3520))) g1_mulAccC(_pVk, IC112x, IC112y, calldataload(add(pubSignals, 3552))) g1_mulAccC(_pVk, IC113x, IC113y, calldataload(add(pubSignals, 3584))) g1_mulAccC(_pVk, IC114x, IC114y, calldataload(add(pubSignals, 3616))) g1_mulAccC(_pVk, IC115x, IC115y, calldataload(add(pubSignals, 3648))) g1_mulAccC(_pVk, IC116x, IC116y, calldataload(add(pubSignals, 3680))) g1_mulAccC(_pVk, IC117x, IC117y, calldataload(add(pubSignals, 3712))) g1_mulAccC(_pVk, IC118x, IC118y, calldataload(add(pubSignals, 3744))) g1_mulAccC(_pVk, IC119x, IC119y, calldataload(add(pubSignals, 3776))) g1_mulAccC(_pVk, IC120x, IC120y, calldataload(add(pubSignals, 3808))) g1_mulAccC(_pVk, IC121x, IC121y, calldataload(add(pubSignals, 3840))) g1_mulAccC(_pVk, IC122x, IC122y, calldataload(add(pubSignals, 3872))) g1_mulAccC(_pVk, IC123x, IC123y, calldataload(add(pubSignals, 3904))) g1_mulAccC(_pVk, IC124x, IC124y, calldataload(add(pubSignals, 3936))) g1_mulAccC(_pVk, IC125x, IC125y, calldataload(add(pubSignals, 3968))) g1_mulAccC(_pVk, IC126x, IC126y, calldataload(add(pubSignals, 4000))) g1_mulAccC(_pVk, IC127x, IC127y, calldataload(add(pubSignals, 4032))) g1_mulAccC(_pVk, IC128x, IC128y, calldataload(add(pubSignals, 4064))) g1_mulAccC(_pVk, IC129x, IC129y, calldataload(add(pubSignals, 4096))) g1_mulAccC(_pVk, IC130x, IC130y, calldataload(add(pubSignals, 4128))) g1_mulAccC(_pVk, IC131x, IC131y, calldataload(add(pubSignals, 4160))) g1_mulAccC(_pVk, IC132x, IC132y, calldataload(add(pubSignals, 4192))) g1_mulAccC(_pVk, IC133x, IC133y, calldataload(add(pubSignals, 4224))) g1_mulAccC(_pVk, IC134x, IC134y, calldataload(add(pubSignals, 4256))) g1_mulAccC(_pVk, IC135x, IC135y, calldataload(add(pubSignals, 4288))) g1_mulAccC(_pVk, IC136x, IC136y, calldataload(add(pubSignals, 4320))) g1_mulAccC(_pVk, IC137x, IC137y, calldataload(add(pubSignals, 4352))) g1_mulAccC(_pVk, IC138x, IC138y, calldataload(add(pubSignals, 4384))) g1_mulAccC(_pVk, IC139x, IC139y, calldataload(add(pubSignals, 4416))) g1_mulAccC(_pVk, IC140x, IC140y, calldataload(add(pubSignals, 4448))) // -A mstore(_pPairing, calldataload(pA)) mstore(add(_pPairing, 32), mod(sub(q, calldataload(add(pA, 32))), q)) // B mstore(add(_pPairing, 64), calldataload(pB)) mstore(add(_pPairing, 96), calldataload(add(pB, 32))) mstore(add(_pPairing, 128), calldataload(add(pB, 64))) mstore(add(_pPairing, 160), calldataload(add(pB, 96))) // alpha1 mstore(add(_pPairing, 192), alphax) mstore(add(_pPairing, 224), alphay) // beta2 mstore(add(_pPairing, 256), betax1) mstore(add(_pPairing, 288), betax2) mstore(add(_pPairing, 320), betay1) mstore(add(_pPairing, 352), betay2) // vk_x mstore(add(_pPairing, 384), mload(add(pMem, pVk))) mstore(add(_pPairing, 416), mload(add(pMem, add(pVk, 32)))) // gamma2 mstore(add(_pPairing, 448), gammax1) mstore(add(_pPairing, 480), gammax2) mstore(add(_pPairing, 512), gammay1) mstore(add(_pPairing, 544), gammay2) // C mstore(add(_pPairing, 576), calldataload(pC)) mstore(add(_pPairing, 608), calldataload(add(pC, 32))) // delta2 mstore(add(_pPairing, 640), deltax1) mstore(add(_pPairing, 672), deltax2) mstore(add(_pPairing, 704), deltay1) mstore(add(_pPairing, 736), deltay2) let success := staticcall(sub(gas(), 2000), 8, _pPairing, 768, _pPairing, 0x20) isOk := and(success, mload(_pPairing)) } let pMem := mload(0x40) mstore(0x40, add(pMem, pLastMem)) // Validate that all evaluations ∈ F checkField(calldataload(add(_pubSignals, 0))) checkField(calldataload(add(_pubSignals, 32))) checkField(calldataload(add(_pubSignals, 64))) checkField(calldataload(add(_pubSignals, 96))) checkField(calldataload(add(_pubSignals, 128))) checkField(calldataload(add(_pubSignals, 160))) checkField(calldataload(add(_pubSignals, 192))) checkField(calldataload(add(_pubSignals, 224))) checkField(calldataload(add(_pubSignals, 256))) checkField(calldataload(add(_pubSignals, 288))) checkField(calldataload(add(_pubSignals, 320))) checkField(calldataload(add(_pubSignals, 352))) checkField(calldataload(add(_pubSignals, 384))) checkField(calldataload(add(_pubSignals, 416))) checkField(calldataload(add(_pubSignals, 448))) checkField(calldataload(add(_pubSignals, 480))) checkField(calldataload(add(_pubSignals, 512))) checkField(calldataload(add(_pubSignals, 544))) checkField(calldataload(add(_pubSignals, 576))) checkField(calldataload(add(_pubSignals, 608))) checkField(calldataload(add(_pubSignals, 640))) checkField(calldataload(add(_pubSignals, 672))) checkField(calldataload(add(_pubSignals, 704))) checkField(calldataload(add(_pubSignals, 736))) checkField(calldataload(add(_pubSignals, 768))) checkField(calldataload(add(_pubSignals, 800))) checkField(calldataload(add(_pubSignals, 832))) checkField(calldataload(add(_pubSignals, 864))) checkField(calldataload(add(_pubSignals, 896))) checkField(calldataload(add(_pubSignals, 928))) checkField(calldataload(add(_pubSignals, 960))) checkField(calldataload(add(_pubSignals, 992))) checkField(calldataload(add(_pubSignals, 1024))) checkField(calldataload(add(_pubSignals, 1056))) checkField(calldataload(add(_pubSignals, 1088))) checkField(calldataload(add(_pubSignals, 1120))) checkField(calldataload(add(_pubSignals, 1152))) checkField(calldataload(add(_pubSignals, 1184))) checkField(calldataload(add(_pubSignals, 1216))) checkField(calldataload(add(_pubSignals, 1248))) checkField(calldataload(add(_pubSignals, 1280))) checkField(calldataload(add(_pubSignals, 1312))) checkField(calldataload(add(_pubSignals, 1344))) checkField(calldataload(add(_pubSignals, 1376))) checkField(calldataload(add(_pubSignals, 1408))) checkField(calldataload(add(_pubSignals, 1440))) checkField(calldataload(add(_pubSignals, 1472))) checkField(calldataload(add(_pubSignals, 1504))) checkField(calldataload(add(_pubSignals, 1536))) checkField(calldataload(add(_pubSignals, 1568))) checkField(calldataload(add(_pubSignals, 1600))) checkField(calldataload(add(_pubSignals, 1632))) checkField(calldataload(add(_pubSignals, 1664))) checkField(calldataload(add(_pubSignals, 1696))) checkField(calldataload(add(_pubSignals, 1728))) checkField(calldataload(add(_pubSignals, 1760))) checkField(calldataload(add(_pubSignals, 1792))) checkField(calldataload(add(_pubSignals, 1824))) checkField(calldataload(add(_pubSignals, 1856))) checkField(calldataload(add(_pubSignals, 1888))) checkField(calldataload(add(_pubSignals, 1920))) checkField(calldataload(add(_pubSignals, 1952))) checkField(calldataload(add(_pubSignals, 1984))) checkField(calldataload(add(_pubSignals, 2016))) checkField(calldataload(add(_pubSignals, 2048))) checkField(calldataload(add(_pubSignals, 2080))) checkField(calldataload(add(_pubSignals, 2112))) checkField(calldataload(add(_pubSignals, 2144))) checkField(calldataload(add(_pubSignals, 2176))) checkField(calldataload(add(_pubSignals, 2208))) checkField(calldataload(add(_pubSignals, 2240))) checkField(calldataload(add(_pubSignals, 2272))) checkField(calldataload(add(_pubSignals, 2304))) checkField(calldataload(add(_pubSignals, 2336))) checkField(calldataload(add(_pubSignals, 2368))) checkField(calldataload(add(_pubSignals, 2400))) checkField(calldataload(add(_pubSignals, 2432))) checkField(calldataload(add(_pubSignals, 2464))) checkField(calldataload(add(_pubSignals, 2496))) checkField(calldataload(add(_pubSignals, 2528))) checkField(calldataload(add(_pubSignals, 2560))) checkField(calldataload(add(_pubSignals, 2592))) checkField(calldataload(add(_pubSignals, 2624))) checkField(calldataload(add(_pubSignals, 2656))) checkField(calldataload(add(_pubSignals, 2688))) checkField(calldataload(add(_pubSignals, 2720))) checkField(calldataload(add(_pubSignals, 2752))) checkField(calldataload(add(_pubSignals, 2784))) checkField(calldataload(add(_pubSignals, 2816))) checkField(calldataload(add(_pubSignals, 2848))) checkField(calldataload(add(_pubSignals, 2880))) checkField(calldataload(add(_pubSignals, 2912))) checkField(calldataload(add(_pubSignals, 2944))) checkField(calldataload(add(_pubSignals, 2976))) checkField(calldataload(add(_pubSignals, 3008))) checkField(calldataload(add(_pubSignals, 3040))) checkField(calldataload(add(_pubSignals, 3072))) checkField(calldataload(add(_pubSignals, 3104))) checkField(calldataload(add(_pubSignals, 3136))) checkField(calldataload(add(_pubSignals, 3168))) checkField(calldataload(add(_pubSignals, 3200))) checkField(calldataload(add(_pubSignals, 3232))) checkField(calldataload(add(_pubSignals, 3264))) checkField(calldataload(add(_pubSignals, 3296))) checkField(calldataload(add(_pubSignals, 3328))) checkField(calldataload(add(_pubSignals, 3360))) checkField(calldataload(add(_pubSignals, 3392))) checkField(calldataload(add(_pubSignals, 3424))) checkField(calldataload(add(_pubSignals, 3456))) checkField(calldataload(add(_pubSignals, 3488))) checkField(calldataload(add(_pubSignals, 3520))) checkField(calldataload(add(_pubSignals, 3552))) checkField(calldataload(add(_pubSignals, 3584))) checkField(calldataload(add(_pubSignals, 3616))) checkField(calldataload(add(_pubSignals, 3648))) checkField(calldataload(add(_pubSignals, 3680))) checkField(calldataload(add(_pubSignals, 3712))) checkField(calldataload(add(_pubSignals, 3744))) checkField(calldataload(add(_pubSignals, 3776))) checkField(calldataload(add(_pubSignals, 3808))) checkField(calldataload(add(_pubSignals, 3840))) checkField(calldataload(add(_pubSignals, 3872))) checkField(calldataload(add(_pubSignals, 3904))) checkField(calldataload(add(_pubSignals, 3936))) checkField(calldataload(add(_pubSignals, 3968))) checkField(calldataload(add(_pubSignals, 4000))) checkField(calldataload(add(_pubSignals, 4032))) checkField(calldataload(add(_pubSignals, 4064))) checkField(calldataload(add(_pubSignals, 4096))) checkField(calldataload(add(_pubSignals, 4128))) checkField(calldataload(add(_pubSignals, 4160))) checkField(calldataload(add(_pubSignals, 4192))) checkField(calldataload(add(_pubSignals, 4224))) checkField(calldataload(add(_pubSignals, 4256))) checkField(calldataload(add(_pubSignals, 4288))) checkField(calldataload(add(_pubSignals, 4320))) checkField(calldataload(add(_pubSignals, 4352))) checkField(calldataload(add(_pubSignals, 4384))) checkField(calldataload(add(_pubSignals, 4416))) checkField(calldataload(add(_pubSignals, 4448))) // Validate all evaluations let isValid := checkPairing(_pA, _pB, _pC, _pubSignals, pMem) mstore(0, isValid) return(0, 0x20) } } }